Cómo instalar el Sistema de Gestión de Proyectos Taiga en Ubuntu 20.04

Taiga es una herramienta de gestión de proyectos gratuita, de código abierto, sencilla pero potente, para startups, desarrolladores ágiles y diseñadores. Da soporte a equipos que trabajan de forma ágil en los marcos Scrum y Kanban. El frontend está escrito en JavaScript, mientras que el backend está escrito en Python y Django. Es una aplicación muy potente y totalmente personalizable, y puede gestionar tanto proyectos sencillos como complejos para desarrolladores y equipos. Se puede integrar fácilmente con muchos servicios, como Kanban, Scrum, Talky.io y Appear.in.

En este tutorial, te mostraremos cómo instalar la Herramienta de Gestión de Proyectos Taiga en un servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root está configurado el servidor.

Cómo empezar

En primer lugar, actualiza los paquetes de tu sistema a la última versión con el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, instala otras dependencias necesarias para Taiga ejecutando el siguiente comando:

apt-get install git gnupg2 pwgen automake wget curl gettext python3 virtualenvwrapper python3-dev python3-pip python3-dev libssl-dev tmux build-essential libgdbm-dev binutils-doc autoconf flex gunicorn bison libjpeg-dev libzmq3-dev libfreetype6-dev zlib1g-dev libncurses5-dev libtool libxslt-dev libxml2-dev libffi-dev

A continuación, tendrás que configurar un nombre de host completamente cualificado para tu sistema. Puedes configurarlo con el siguiente comando:

hostnamectl set-hostname taiga.example.com

A continuación, tendrás que enlazar tu nombre de host con tu dirección IP. Puedes hacerlo editando el archivo /etc/hosts:

nano /etc/hosts

Añade las siguientes líneas:

your-server-ip taiga.example.com

Guarda y cierra el archivo cuando hayas terminado.

Instalar Node.js

A continuación, tendrás que instalar Node.js en tu sistema. Por defecto, la última versión de Node.js no está disponible en el repositorio por defecto de Ubuntu 20.04. Así que tendrás que añadir el repositorio de Node.js a tu sistema. Puedes añadirlo con el siguiente comando:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Una vez añadido el repositorio, instala la última versión de Node.js con el siguiente comando:

apt-get install nodejs -y

Después de instalar Node.js, verifica la versión instalada de Node.js con el siguiente comando:

node -v

Deberías obtener la siguiente salida:

v12.19.0

Instalar y configurar PostgreSQL

Taiga utiliza el servidor PostgreSQL como base de datos. Así que tendrás que instalarlo en tu sistema. Primero, añade la clave GPG de PostgreSQL con el siguiente comando:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

A continuación, añade el repositorio PostgreSQL con el siguiente comando:

echo "deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list

A continuación, actualiza el repositorio e instala la última versión de PostgreSQL con el siguiente comando:

apt-get update -y
apt-get install postgresql -y

A continuación, cambia la contraseña de PostgreSQL con el siguiente comando:

passwd postgres

Deberías obtener la siguiente salida:

New password: 
Retype new password: 
passwd: password updated successfully

A continuación, cambia el usuario a postgres y crea un usuario para Taiga:

su - postgres
postgres@taiga:~$ createuser taiga

A continuación, accede al shell de PostgreSQL con el siguiente comando:

postgres@taiga:~$ psql

Salida:

psql (13.0 (Ubuntu 13.0-1.pgdg20.04+1))
Type "help" for help.

Una vez iniciada la sesión, crea un usuario y una base de datos con el siguiente comando:

postgres=# ALTER USER taiga WITH ENCRYPTED password 'yourpassword';
postgres=# CREATE DATABASE taiga OWNER taiga;

A continuación, sal del shell PostgreSQL y del usuario con el siguiente comando:

postgres=# \q
postgres@taiga:~$ exit

Instala RabbitMQ y Redis

Taiga utiliza RabbitMQ como intermediario de mensajes y Redis para el almacenamiento en caché. Así que necesitarás instalar ambos paquetes en tu sistema. Puedes instalar ambos paquetes con el siguiente comando:

apt-get install rabbitmq-server redis-server -y

A continuación, crea un nuevo usuario y host virtual para RabbitMQ con el siguiente comando:

rabbitmqctl add_user taiga yourpassword
rabbitmqctl add_vhost taiga
rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar y configurar Taiga Backend

En primer lugar, crea un usuario independiente para Taiga con el siguiente comando:

adduser taiga

A continuación, añade el usuario Taiga al grupo sudo con el siguiente comando:

adduser taiga sudo

A continuación, cambia el usuario a taiga y crea un directorio para almacenar los registros de taiga:

su - taiga
mkdir -p ~/logs

A continuación, descarga el backend de Taiga del repositorio Git con el siguiente comando:

git clone https://github.com/taigaio/taiga-back.git

A continuación, cambia el directorio al directorio descargado y comprueba la última rama:

cd taiga-back
git checkout stable

A continuación, activa el comando mkvirtualenv con el siguiente comando:

nano ~/.bashrc

Añade la siguiente línea:

source '/usr/share/virtualenvwrapper/virtualenvwrapper.sh'

Activa el nuevo perfil con el siguiente comando:

source ~/.bashrc

A continuación, crea un entorno virtual Python para Taiga:

mkvirtualenv -p /usr/bin/python3 taiga_venv

A continuación, instala todas las dependencias necesarias con el siguiente comando:

pip3 install -r requirements.txt

A continuación, migra y carga los datos con el siguiente comando:

python3 manage.py migrate --noinput
python3 manage.py loaddata initial_user
python3 manage.py loaddata initial_project_templates
python3 manage.py compilemessages
python3 manage.py collectstatic --noinput

A continuación, tendrás que editar el archivo local.py y definir la configuración de la aplicación y de la base de datos:

nano ~/taiga-back/settings/local.py

Añade las siguientes líneas:

from .common import *

MEDIA_URL = "http://taiga.example.com/media/"
STATIC_URL = "http://taiga.example.com/static/"
SITES["front"]["scheme"] = "http"
SITES["front"]["domain"] = "taiga.example.com"

SECRET_KEY = "OQOEJNSJIQHDBQNSUQEJSNNANsqQPAASQLSMSOQND"

DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL

#CELERY_ENABLED = True

EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:yourpassword@localhost:5672/taiga"}

Guarda y cierra el archivo y, a continuación, inicia el servidor backend de Taiga con el siguiente comando:

workon taiga_venv
python manage.py runserver

Una vez que el servidor se haya iniciado correctamente, deberías obtener la siguiente salida:

System check identified no issues (0 silenced).
November 02, 2020 - 09:24:41
Django version 2.2.16, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Pulsa CTRL + C para detener el servidor.

A continuación, desactiva el entorno virtual con el siguiente comando:

deactivate

Instalar y configurar Taiga Forntend

Primero, cambia el usuario a Taiga y descarga la última versión de Taiga frontend del repositorio Git:

su - taiga
git clone https://github.com/taigaio/taiga-front-dist.git

Cambia el directorio al directorio descargado y comprueba la última rama estable con el siguiente comando:

cd taiga-front-dist
git checkout stable

A continuación, copia el archivo de configuración de ejemplo con el siguiente comando:

cp ~/taiga-front-dist/dist/conf.example.json ~/taiga-front-dist/dist/conf.json

A continuación, edita el archivo de configuración con el siguiente comando:

nano ~/taiga-front-dist/dist/conf.json

Cambia las siguientes líneas:

{
    "api": "http://taiga.example.com/api/v1/",
    "eventsUrl": "ws://taiga.example.com/events",
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "eventsReconnectTryInterval": 10000,
    "debug": true,
    "debugInfo": false,
    "defaultLanguage": "en",
    "themes": ["taiga"],
    "defaultTheme": "taiga",
    "publicRegisterEnabled": true,
    "feedbackEnabled": true,
    "supportUrl": "https://tree.taiga.io/support",
    "privacyPolicyUrl": null,
    "termsOfServiceUrl": null,
    "GDPRUrl": null,
    "maxUploadFileSize": null,
    "contribPlugins": [],
    "tribeHost": null,
    "importers": [],
    "gravatar": true,
    "rtlLanguages": ["fa"]
}

Guarda y cierra el archivo cuando hayas terminado.

Instalar y configurar Taiga Event

A continuación, ve a tu directorio de inicio y descarga la última versión de Taiga event con el siguiente comando:

cd ~
git clone https://github.com/taigaio/taiga-events.git taiga-events

A continuación, cambia el directorio al directorio descargado e instala todos los módulos NPM con el siguiente comando:

cd taiga-events
npm install

A continuación, copia el archivo de configuración de ejemplo con el siguiente comando:

cp config.example.json config.json

A continuación, edita el archivo config.json y establece la URL de rabbitmq y la clave secreta::

nano config.json

Añade / modifica las siguientes líneas:

{
    "url": "amqp://taiga:yourpassword@localhost:5672/taiga",
    "secret": "OQOEJNSJIQHDBQNSUQEJSNNANsqQPAASQLSMSOQND",
    "webSocketServer": {
        "port": 8888
    }
}

Guarda y cierra el archivo y, a continuación, cierra la sesión del usuario Taiga con el siguiente comando:

exit

Crear un archivo de servicio Systemd

A continuación, tendrás que crear un archivo de servicio systemd para Taiga y Taiga event. En primer lugar, crea un archivo de servicio systemd para Taiga event con el siguiente comando:

nano /etc/systemd/system/taiga_events.service

Añade las siguientes líneas:

[Unit]
Description=taiga_events
After=network.target

[Service]
User=taiga
WorkingDirectory=/home/taiga/taiga-events
ExecStart=/bin/bash -c "node_modules/coffeescript/bin/coffee index.coffee"
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

Guarda y cierra el archivo y, a continuación, vuelve a cargar el servicio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio Taiga event y habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start taiga_events
systemctl enable taiga_events

A continuación, crea un archivo de servicio systemd para Taiga con el siguiente comando:

nano /etc/systemd/system/taiga.service

Añade las siguientes líneas:

[Unit]
Description=taiga_back
After=network.target

[Service]
User=taiga
Environment=PYTHONUNBUFFERED=true
WorkingDirectory=/home/taiga/taiga-back
ExecStart=/home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 taiga.wsgi
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

Guarda y cierra el archivo y, a continuación, vuelve a cargar el servicio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio Taiga y habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start taiga
systemctl enable taiga

A continuación, verifica el estado del evento Taiga y del servicio Taiga con el siguiente comando:

systemctl status taiga_events taiga

Deberías ver la siguiente salida:

? taiga_events.service - taiga_events
     Loaded: loaded (/etc/systemd/system/taiga_events.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-11-02 09:30:21 UTC; 46s ago
   Main PID: 26383 (node)
      Tasks: 7 (limit: 2353)
     Memory: 15.2M
     CGroup: /system.slice/taiga_events.service
             ??26383 node node_modules/coffeescript/bin/coffee index.coffee

Nov 02 09:30:21 taiga.example.com systemd[1]: Started taiga_events.

? taiga.service - taiga_back
     Loaded: loaded (/etc/systemd/system/taiga.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-11-02 09:30:55 UTC; 13s ago
   Main PID: 26478 (gunicorn)
      Tasks: 5 (limit: 2353)
     Memory: 266.4M
     CGroup: /system.slice/taiga.service
             ??26478 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26494 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26495 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26496 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26497 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >

Nov 02 09:30:55 taiga.example.com gunicorn[26495]: [2020-11-02 09:30:55 +0000] [26495] [INFO] Booting worker with pid: 26495
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: [2020-11-02 09:30:55 +0000] [26496] [INFO] Booting worker with pid: 26496
Nov 02 09:30:55 taiga.example.com gunicorn[26494]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26495]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: 2020-11-02 09:30:55 +0000] [26497] [INF
Nov 02 09:30:55 taiga.example.com gunicorn[26495]: 2
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: 2
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: rying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: rying import local.py settings...

Configurar Nginx como proxy inverso

Es una buena idea configurar el Nginx como proxy inverso para Taiga. Primero, instala el Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado, crea un archivo de configuración del host virtual Nginx con el siguiente comando:

nano /etc/nginx/conf.d/taiga.conf

Añade las siguientes líneas:

server {
    listen 80;
    server_name taiga.example.com;

    large_client_header_buffers 4 32k;
    client_max_body_size 50M;
    charset utf-8;

    access_log /home/taiga/logs/nginx.access.log;
    error_log /home/taiga/logs/nginx.error.log;

    # Frontend
    location / {
        root /home/taiga/taiga-front-dist/dist/;
        try_files $uri $uri/ /index.html;
    }

    # Backend
    location /api {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001/api;
        proxy_redirect off;
    }

    # Admin access (/admin/)
    location /admin {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001$request_uri;
        proxy_redirect off;
    }

    # Static files
    location /static {
        alias /home/taiga/taiga-back/static;
    }

    # Media files
    location /media {
        alias /home/taiga/taiga-back/media;
    }

    # Events
    location /events {
        proxy_pass http://127.0.0.1:8888/events;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }
}

Guarda y cierra el archivo y reinicia el Nginx para aplicar los cambios:

systemctl restart nginx

Accede a la interfaz web de Tails

Ahora, abre tu navegador web y accede a la interfaz web de Taiga utilizando la URL http://taiga.example.com. Serás redirigido a la siguiente página:

Taiga GUI

Haz clic en el botón Iniciar sesión. Se te redirigirá a la siguiente página:

Inicio de sesión en Taiga

Introduce el nombre de usuario por defecto admin y la contraseña 123123 y pulsa el botón INICIAR SESIÓN. Deberías ver el panel de control de Taiga en la siguiente página:

Panel de control de Taiga

Conclusión

Enhorabuena! has instalado y configurado correctamente la herramienta de gestión de proyectos Taiga con Nginx en Ubuntu 20.04. Ahora puedes desplegar Taiga en tu entorno de desarrollo y empezar a trabajar en él.

También te podría gustar...