Установка и настройка системы управления проектами Taiga

Организовать - это значит сначала оценить возможность, а уже потом ставить задачу...

— Неизвестный автор

Искусство организовать работу и следить за ее исполнением в современном обществе является неотъемлемой частью успешного бизнеса. Всё начинается с малого. Сначала Вы один работаете над каким-нибудь проектом - всё легко, есть одна задача и вы её реализуете. Достаточно держать эту задачу в своей памяти. Но с каждым днем появляются подзадачи, добавляются заметки и приходит осознание того, что всё уже не получается запоминать. Тут можно обойтись ежедневником. Количество задач растёт и Вы понимаете, что тянуть проект в одного становится невозможно. У Вас появляются подчиненные, Вы перекладываете часть задач на своих подчиненных, но как следить за выполнением поставленных задач? Как переназначать задачи? Тут явно уже будет не хватать ежедневника.

За всю историю человечества были реализованы множества проектов от самых простых до невероятно сложных. Для достижения поставленных целей и организации управления были разработаны различные системы управления проектами, каждая имеет свои преимущества и недостатки, но, к сожалению, разбирать мы их не будем, поскольку разговор про них является очень большой отдельной темой.

В современном мире в качестве помощи и удобства менеджменту для управления проектами были разработаны различные ПО (программное обеспечение). Их довольно много, но сегодня мы рассмотрим достойное ПО системы управления проектами Taiga использующий Scrum и Kanban семейства методологий Agile. В основном это ПО используется разработчиками и дизайнерами. К сожалению, даже при бесплатности проекта в русском сегменте Интернета довольно мало информации об этом ПО. Поэтому мы - команда Syncweb, надеемся, что благодаря нашим стараниям, упростим порог входа для начала использования данного проекта.

Проверяем требования

Для начала проверим необходимые минимальные требования к Taiga.io:

  • должен быть root доступ;
  • Python >= 3.4;
  • СУБД PostgreSQL >= 9.4;
  • RabbitMQ;
  • не менее 0,75 ГБ оперативной памяти (требуется для установки lxml), на всякий случай возьмем 1ГБ.
  • Во время установки потребуется: Ruby >= 2.1 и NodeJS >= 7.0

Для более подробной информации можно обратиться к официальному сайту.

Вообще установить можно несколькими способами, но мы не ищем легких путей и воспользуемся ручным. В качестве операционной системы (ОС) будем использовать Ubuntu 18.04.

В ходе установки нужно будет изменять или создавать достаточно много файлов, и для каждой установки должны быть указаны свои параметры. Такие параметры мы будем заключать в скобки и названием на английском с пояснениями, как пример - .

Так же мы используем зачастую консольный текстовый редактор vi, Вы можете использовать любой другой. Для входа в режим вставки текста нажмите i и начинайте ввод. А для сохранения изменений и закрытия файла сначала нажмите Esc, затем :wq.

Установка необходимых пакетов

Для начала установим несколько удобных пакетов:

# apt update
# apt install -y mc net-tools

Cоздадим пользователя supp:

# adduser supp

И разрешим доступ через sudo:

# adduser supp
Adding user `supp' to group `sudo' ...
Adding user supp to group sudo
Done.

Затем отредактируем файл /etc/ssh/sshd_config

Раскоментируем строчку

PermitRootLogin no

И добавим

AllowUsers supp

Теперь перезапустим демона SSH:

# systemctl restart sshd

Перезайдем под пользователем supp. Предварительно установим необходимые пакеты:

$ sudo apt install -y build-essential binutils-doc autoconf flex bison libjpeg-dev
$ sudo apt install -y libfreetype6-dev zlib1g-dev libzmq3-dev libgdbm-dev libncurses5-dev
$ sudo apt install -y automake libtool curl git tmux gettext

Установка Nginx

Далее необходимо установить Nginx, в официальном репозитории имеется версия 1.14, поэтому воспользуемся инструкцией с официального сайта.

Теперь установим Nginx. Для начала установим необходимые пакеты для подключения репозитория:

$ sudo apt install -y curl gnupg2 ca-certificates lsb-release

Теперь подключим репозиторий стабильной версии:

$ echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

Импортируем ключ для проверки подлинности пакетов:

$ curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
OK

А теперь установим:

$ sudo apt update
$ sudo apt install nginx

Инструкции для самостоятельной установки можно посмотреть на официальной странице Nginx.

Затем устанавливаем RabbitMQ и Redis:

$ sudo apt install -y rabbitmq-server redis-server

Установка PostgreSQL

Теперь установим СУБД PostgreSQL, но текущая версия в репозитории 10, а официальная последняя версия 11.3. Если посмотреть тестирования производительности различных версий PostgreSQL, например, на сайте Habr, то можно увидеть увеличение производительности более новых версий по сравнению с предыдущими. Поэтому поставим с официального сайта, воспользовавшись инструкцией.

Для начала добавим репозиторий:

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

Импортируем ключ проверки подлинности пакетов:

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

Продолжаем установку:

$ sudo apt install -y postgresql-11 postgresql-contrib-11
$ sudo apt install -y postgresql-doc-11 postgresql-server-dev-11
$ sudo apt install -y python3 python3-pip python3-dev virtualenvwrapper
$ sudo apt install -y libxml2-dev libxslt-dev
$ sudo apt install -y libssl-dev libffi-dev

Теперь перед дальнейшими действиями перезагрузим сервер:

$ sudo shutdown -r now 

После перезагрузки сервера авторизуемся под нашим пользователем supp и создадим пользователя taiga:

$ sudo adduser taiga
$ sudo adduser taiga sudo
$ sudo su taiga
$ cd ~

ВНИМАНИЕ! Дальнейшие действия необходимо производить из под пользователя Taiga

Инициализируем настройку СУБД PostgreSQL:

$ sudo -u postgres createuser taiga
$ sudo -u postgres createdb taiga -O taiga --encoding='utf-8' --locale=en_US.utf8 --template=template0

Теперь произведем настройки для RabbitMQ, где {YOUR_PASSWORD_EVENTS} - пароль RabbitMQ, который будет использоваться в конфигурационных файлах ниже

$ sudo rabbitmqctl add_user taiga {YOUR_PASSWORD_EVENTS}
Creating user "taiga"
$ sudo rabbitmqctl add_vhost taiga
Creating vhost "taiga"
$ sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"
Setting permissions for user "taiga" in vhost "taiga"

Установка BACKEND

Теперь произведем настройки для RabbitMQ, где {YOUR_PASSWORD_EVENTS} - пароль RabbitMQ, который будет использоваться в конфигурационных файлах ниже

$ cd ~
$ git clone https://github.com/taigaio/taiga-back.git taiga-back
$ cd taiga-back
$ git checkout stable
Branch 'stable' set up to track remote branch 'stable' from 'origin'.
Switched to a new branch 'stable'

Создаем virtualenv taiga:

$ mkvirtualenv -p /usr/bin/python3 taiga
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/taiga/.virtualenvs/taiga/bin/python3
Also creating executable in /home/taiga/.virtualenvs/taiga/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

И устанавливаем необходимые пакеты:

$ pip install -r requirements.txt

Теперь инициализируем базу данных:

$ python manage.py migrate --noinput
$ python manage.py loaddata initial_user
$ python manage.py loaddata initial_project_templates
$ python manage.py compilemessages
$ python manage.py collectstatic --noinput

После этих действий создается пользователь admin с паролем 123123. Запомним, поскольку будем вводить эти данные при первичной авторизации в web-интерфейсе.

Для создания не пустой базы, например, чтобы посмотреть как создавать и работать с taiga.io или для демонстрации работы необходимо также ввести команду:

$ python manage.py sample_data

Для завершения настроек backend’а необходимо создать файл настроек ~/taiga-back/settings/local.py со следующим содержимым, где:

  • {YOUR_DOMAIN} - Ваш домен, например, example.ru;
  • {YOUR_SECRET_KEY} - секретный ключ, чем сложнее и длиннее - тем лучше, его же будем использовать при конфигурации файла для событий (EVENTS) чуть ниже;
  • {YOUR_PASSWORD_EVENTS} - пароль для пушей для событий (Events), который прописывали при настройке RabbitMQ;
  • {YOUR_GOOGLE_EMAIL} - Ваш Email Google, поскольку в данном примере мы используем настройки от почтовика Google;
  • {YOUR_PASSWORD_EMAIL} - пароль от Email.

Так же просим обратить внимание на протокол HTTPS

$ vi ~/taiga-back/settings/local.py
from .common import *
 
MEDIA_URL = "https://{YOUR_DOMAIN}/media/"
STATIC_URL = "https://{YOUR_DOMAIN}/static/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "{YOUR_DOMAIN}"
 
SECRET_KEY = "{YOUR_SECRET_KEY}"
 
DEBUG = False
PUBLIC_REGISTER_ENABLED = True
 
DEFAULT_FROM_EMAIL = "no-reply@{YOUR_DOMAIN}"
SERVER_EMAIL = DEFAULT_FROM_EMAIL
 
#CELERY_ENABLED = True
 
EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:{YOUR_PASSWORD_EVENTS}@localhost:5672/taiga"}
 
# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_USE_TLS = True
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = "{YOUR_GOOGLE_EMAIL}"
EMAIL_HOST_PASSWORD = "{YOUR_PASSWORD_EMAIL}"
EMAIL_PORT = 587
 
# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"

Теперь осталось запустить backend и проверить:

$ workon taiga
$ python manage.py runserver
Trying import local.py settings...
Trying import local.py settings...
Performing system checks...
 
System check identified no issues (0 silenced).
May 14, 2019 - 23:16:15
Django version 1.11.20, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Установка FRONTEND

Теперь приступим к установке frontend’а.

$ cd ~
$ git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
$ cd taiga-front-dist
$ git checkout stable

Затем копируем пример конфигурационного файла:

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

И изменим содержимое файла по примеру ниже, где:

  • {YOUR_DOMAIN} - Ваш домен, например, example.ru;
  • параметр defaultLanguage: ru - говорит о языке по умолчанию;
  • параметр publicRegisterEnabled: true отвечает за возможность свободной регистрации на главной странице, если Вам не нужно, чтобы любой мог зарегистрироваться - поставьте значение false:
$ sudo vi ~/taiga-front-dist/dist/conf.json
{
    "api": "https://{YOUR_DOMAIN}/api/v1/",
    "eventsUrl": "wss://{YOUR_DOMAIN}/events",
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "eventsReconnectTryInterval": 10000,
    "debug": false,
    "debugInfo": false,
    "defaultLanguage": "ru",
    "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"]
}

Установка EVENTS

Немного сложновата установка, но мы же сами выбрали такой путь! Теперь займемся установкой событий (Events):

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

Теперь установим nodejs:

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install -y nodejs

Установим также зависимости javascript:

$ npm install

Теперь настроим конфигурационный файл событий предварительно скопировав его:

$ cp config.example.json config.json

Примерное содержимое файла будет следующим, где:

  • {YOUR_PASSWORD_EVENTS} - пароль, который создавали при настройке RabbitMQ;
  • {YOUR_SECRET_KEY} - ключ, который использовали в файле конфигурации при настройке backend’а local.py:
$ sudo vi ./config.json
{
    "url": "amqp://taiga:{YOUR_PASSWORD_EVENTS}@localhost:5672/taiga",
    "secret": "{YOUR_SECRET_KEY}",
    "webSocketServer": {
        "port": 8888
    }
}

Теперь необходимо добавить события как службу. Для этого создаем файл и приводим к виду ниже:

$ sudo vi ./config.json
[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

Осталось добавить службу в автозапуск и запустить её:

$ sudo systemctl daemon-reload
$ sudo systemctl start taiga_events
$ sudo systemctl enable taiga_events

Со службой событий мы справились, но теперь необходимо сделать тоже самое и для backend’а. поэтому снова создаем файл со следующим содержимым:

$ sudo vi /etc/systemd/system/taiga.service
[Unit]
Description=taiga_back
After=network.target
 
[Service]
User=taiga
Environment=PYTHONUNBUFFERED=true
WorkingDirectory=/home/taiga/taiga-back
ExecStart=/home/taiga/.virtualenvs/taiga/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 taiga.wsgi
Restart=always
RestartSec=3
 
[Install]
WantedBy=default.target

Теперь запускаем новую службу taiga и добавляем в автозапуск:

$ sudo systemctl daemon-reload
$ sudo systemctl start taiga
$ sudo systemctl enable taiga

Теперь проверим службу, что она успешно запустилась:

$ sudo systemctl status taiga
* taiga.service - taiga_back
 Loaded: loaded (/etc/systemd/system/taiga.service; enabled; vendor preset: en
 Active: active (running) since Fri 2019-05-17 04:09:22 +05; 3min 8s ago
Main PID: 15247 (gunicorn)
  Tasks: 5 (limit: 1131)
 CGroup: /system.slice/taiga.service
     |-15247 /home/taiga/.virtualenvs/taiga/bin/python3 /home/taiga/.virtu
     |-15251 /home/taiga/.virtualenvs/taiga/bin/python3 /home/taiga/.virtu
     |-15252 /home/taiga/.virtualenvs/taiga/bin/python3 /home/taiga/.virtu
     |-15253 /home/taiga/.virtualenvs/taiga/bin/python3 /home/taiga/.virtu
     `-15254 /home/taiga/.virtualenvs/taiga/bin/python3 /home/taiga/.virtu

Соберемся, остались последние штрихи. Донастроем Nginx. Для начала удалим конфигурацию по умолчанию:

$ sudo rm /etc/nginx/conf.d/default.conf

или для некоторых случаев файл конфигурации по умолчанию может находиться в другом месте:

$ sudo rm /etc/nginx/sites-enabled/default

Создадим папку для логов:

$ mkdir -p ~/logs

Установка сертификатов Let’s Encrypt

Поскольку мы будем использовать HTTPS для повышения безопасности нашего сайта. Подробнее о SSL сертификатах, вы можете узнать из нашей статьи. Итак, воспользуемся бесплатными сертификатами Let's Encrypt и клиентом Certbot.

$ sudo apt update
$ sudo apt install -y software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update
$ sudo apt install -y certbot python-certbot-nginx

Теперь можно будет выпустить сертификат, где: {YOUR_DOMAIN} - Ваш домен, например, example.ru:

$ sudo certbot --nginx certonly -d {YOUR_DOMAIN}

Теперь создадим DH (Diffie Hellman) ключ:

$ cd /etc/ssl
$ sudo openssl dhparam -out dhparam.pem 4096

Для самостоятельной установки можно воспользоваться инструкцией с официального сайта Certbot.

$ sudo vi /etc/nginx/conf.d/taiga.conf
server {
    listen 80 default_server;
    server_name _;
    return 301 https://$server_name$request_uri;
}
 
server {
    listen 443 ssl default_server;
    server_name {YOUR_DOMAIN};
 
    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;
 
    index index.html;
 
    # 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;
        }
 
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
 
    ssl_certificate /etc/letsencrypt/live/{YOUR_DOMAIN}/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/{YOUR_DOMAIN}/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-
    AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-
    DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-
    SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-
    ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-
    SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-
    AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/dhparam.pem;
    ssl_stapling on;
    ssl_stapling_verify on;
}

Теперь проверяем конфигурацию:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Как видим - ошибок нет, а значит перезапускаем Nginx:

$ sudo systemctl restart nginx

На этом этапе уже можно пользоваться системой управления проектами Taiga (Тайга), но можно доустановить асинхронный режим. Дело в том, что по умолчанию Taiga выполняет все задачи в синхронном режиме, но некоторые задачи могут выполняться в асинхронном режиме, например, webhook или импорт/экспорт.

Установка режима Асинхронные задачи

Для начала проверим, что RabbitMQ сервер и Redis сервер установлены:

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

Затем нам надо изменить строчку в файле ~/taiga-back/settings/local.py:

CELERY_ENABLED = True

Теперь создаем файл /etc/systemd/system/taiga_celery.service для создания службы (демона):

$ sudo vi /etc/systemd/system/taiga_celery.service
[Unit]
Description=taiga_celery
After=network.target
 
[Service]
User=taiga
Environment=PYTHONUNBUFFERED=true
WorkingDirectory=/home/taiga/taiga-back
ExecStart=/home/taiga/.virtualenvs/taiga/bin/celery -A taiga worker --concurrency 4 -l INFO
Restart=always
RestartSec=3
ExecStop=/bin/kill -s TERM $MAINPID
 
[Install]
WantedBy=default.target

Теперь перезагружаем systemd, добавляем новую службу в автозапуск и стартуем:

$ sudo systemctl daemon-reload
$ sudo systemctl start taiga_celery
$ sudo systemctl enable taiga_celery
$ sudo systemctl restart taiga

На этом установка системы управления проектами Taiga закончена. На самом деле - нет. Мы не настроили firewall!

Настройка firewall

В ubuntu 18 используется ufw, для начала проверим его статус:

$ sudo ufw status
Status: inactive

Как видим - firewall не активен. Теперь посмотрим список заранее созданных шаблонов (в логике ufw это app от application - приложение):

$ sudo ufw app list
Available applications:
 OpenSSH

Как видно, по умолчанию присутствует только настройки для ssh. Теперь шаблоны для 80 и 443 портов:

$ sudo vi /etc/ufw/applications.d/www
>[WWW]
title=WWW
description=World Wide Web.
ports=80/tcp
$ sudo vi /etc/ufw/applications.d/www-ssl
[WWWSSL]
title=WWW ssl
description=World Wide Web ssl.
ports=443/tcp

Проверим:

$ sudo ufw app list
Available applications:
 OpenSSH
 WWW
 WWWSSL

Теперь активируем

$ sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)
$ sudo ufw allow WWW
Rules updated
Rules updated (v6)
$ sudo ufw allow WWWSSL
Rules updated
Rules updated (v6)
$ sudo ufw enable

Проверяем:

$ sudo ufw status
Status: active
To              Action     From
--              ------     ----
OpenSSH         ALLOW     Anywhere
WWW             ALLOW     Anywhere
WWWSSL          ALLOW     Anywhere
OpenSSH (v6)    ALLOW     Anywhere (v6)
WWW (v6)        ALLOW     Anywhere (v6)
WWWSSL (v6)     ALLOW     Anywhere (v6)

На этом теперь точно установка закончена.

Обзор Taiga.io

Теперь пришло время посмотреть на результаты своего труда. Заходим по нашему адресу https://{YOUR_DOMAIN}:

Не пугайтесь о наличии на изображении уже существующих данных. Если вспомним - в инструкции мы указали о возможности заполнить базу для демонстрации возможностей. Справа вверху авторизуемся нажав кнопку “Login”:

Помним пользователя admin и пароль 123123? Вводим и не забываем сменить его в настройках пользователя. Там же можно выбрать язык интерфейса пользователя. После входа мы оказываемся на рабочем столе (Dashboard):

В верхней части выбираем проект (в данном примере выбран проект “Project example 0”), после чего мы оказываемся в управлении проектом. Посмотрим как выглядит Kanban в реализации Taiga.io:

Теперь посмотрим как будет выглядеть Scrum:

В каждом проекте можно добавлять или удалять пользователей, распределять роли:

Конечно же есть и различные настройки самого проекта:

Если Вы знакомы с методологией Agile, то слышали об Epics. Следующее изображение показывает как выглядит это в Taiga.io:

На этом удобства использования системы управления проектами Taiga не заканчивается. Здесь присутствует ПО для мобильных платформ, в частности в кратце рассмотрим приложения для устройств на базе ОС Android:

Данное приложение имеет платные функции, но для большинства хватит и бесплатных возможностей. Для подключения к своему серверу выбираем use custom server и вводим наши данные:

После входа мы также видим рабочий стол (dasboard):

По функциональности данное приложение практически не уступает своей web-версии:

С мобильных устройств можно заходить через web-интерфейс в Taiga, но, к сожалению, не все браузеры всегда адекватно обрабатывают некоторые возможности. Например, в Kanban перенос задач не всегда работает во многих браузерах. В конце концов - Taiga имеет собственное API, позволяющее использовать весь функционал.

Заключение

Мы с Вами рассмотрели ПО системы управления проектами Taiga работающая с Kanban и Scrum семейства Agile методологии. Конечно, полноценно научиться работать с данной системой - дело не минутное, да и в этой статье мы не затрагивали эту тему, но если представить открывающиеся возможности после изучения и внедрения данного ПО- то это несомненно принесёт пользу Вашему бизнесу и будущим проектам. Главным примером являемся мы сами. Наша компания Syncweb активно и успешно использует её в своих внутренних проектах.

К тому же при использовании на своих серверах Taiga бесплатна. Наличие различных возможностей интеграции, API, активная разработка(проект не брошен, регулярно выходят обновления), активное сообщество только даёт плюсы в сторону использования Taiga. К главным минусам мы бы отнесли сложность в установке и обновлении и малом количестве русскоязычных ресурсов по данному ПО, что несколько повышает порог знаний системных администраторов для установки и внедрения в организацию, но мы надеемся, что наша инструкция поможет снизить данное требование. С нами было ведь не сложно, правда?

Надежные VDS сервера для установки Taiga