Установка Taiga в Docker

В этой статье я покажу как установить сервер для управления проектами «Taiga.io» в Docker. Особенности установки: я буду производить установку на Debian 13, для обратного проксирования на хост установлю nginx. Затем переведу работу сервера на https используя самоподписанный сертификат.

Что такое Taiga

Taiga — это бесплатный open-source инструмент для управления проектами, разработанный специально для agile-команд. Он сочетает мощный функционал (бэклог, спринты, канбан-доски, трекер задач, wiki, отчёты) с интуитивно понятным интерфейсом.

У Taiga есть облачная платная версия, но самохостинг — полностью бесплатный. При самостоятельном развёртывании вы получаете:

  • Полный контроль над данными и инфраструктурой.
  • Все функции без ограничений платных тарифов.
  • Возможность кастомизации под процессы вашей команды.

Сайты:

После настройки сервера вы сможете:

  • Создавать проекты с выбором методологии: Scrum или Kanban.
  • Настраивать рабочие процессы, типы задач и права доступа.
  • Приглашать участников и организовывать совместную работу.
  • Вести документацию прямо в проекте.
  • И импортировать данные из Jira, Trello или GitHub.

Из технических нюансов: архитектура Taiga довольно сложная для локального деплоя — множество контейнеров требуют внимания. Кроме того, разработка ведётся очень медленно, новые функции не появляются, лишь иногда закрывают найденные уязвимости. Именно поэтому в следующей статье я расскажу про альтернативное решение, которое лишено этих недостатков и, на мой взгляд, лучше подходит для задач, где важна простота поддержки.

Установка taiga

Клонируем taiga.io из официального GitHub, а затем сменим ветку на stable.

$ git clone https://github.com/taigaio/taiga-docker
$ cd taiga-docker/
$ git checkout stable

Для настройки используем файл .env. Для первоначальной настройки нам достаточно поменять следующие опции:

$ nano .env
TAIGA_DOMAIN=taiga.test.com:9000
SECRET_KEY="секретный_ключ" #  можно сгенерировать: python3 -c "import secrets; print(secrets.token_urlsafe(50))"
POSTGRES_PASSWORD=пароль_postgres
RABBITMQ_ERLANG_COOKIE=секретный_ключ # можно сгенерировать: python3 -c "import secrets; print(secrets.token_urlsafe(32))"
ENABLE_TELEMETRY=False
  • TAIGA_DOMAIN=taiga.test.com:9000 — измените имя на ваш домен.
  • SECRET_KEY="секретный_ключ" — можно сгенерировать: python3 -c "import secrets; print(secrets.token_urlsafe(50))".
  • POSTGRES_PASSWORD=пароль_postgres — придумайте или сгенерируйте пароль для пользователя taiga в postgres.
  • RABBITMQ_ERLANG_COOKIE=секретный_ключ — хватит 32 символов: python3 -c "import secrets; print(secrets.token_urlsafe(32))".
  • ENABLE_TELEMETRY=False — отключите телеметрию.

Запуск и создание первого пользователя:

$ sudo docker compose up -d --build
$ sudo docker compose -f docker-compose.yml -f docker-compose-inits.yml run --rm taiga-manage createsuperuser

После проделанного вы уже должны суметь подключиться по http и порту 9000, например: http://taiga.test.com:9000.

Установка nginx в качестве обратного прокси

Устанавливаем:

$ sudo apt install nginx

Настраиваем:

$ sudo nano /etc/nginx/sites-available/taiga

server {
  server_name taiga.test.com;

  location / {
    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_redirect off;
    proxy_pass http://localhost:9000/;
  }

  # Events
  location /events {
      proxy_pass http://localhost:9000/events;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      proxy_connect_timeout 7d;
      proxy_send_timeout 7d;
      proxy_read_timeout 7d;
  }
}
  • Не забудьте изменить имя вашего домена.

Применяем конфиг, удаляем конфиг «по-умолчанию», и запускаем nginx:

$ sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo nginx -t
$ sudo systemctl restart nginx

Немного перенастроим опции в файле .env:

$ nano .env

TAIGA_DOMAIN=taiga.test.com # убираем порт

После перенастройки пере-соберём контейнеры:

$ sudo docker compose up -d --build
$ sudo docker compose restart taiga-gateway
  • После пере-сборки нужно перезапускать taiga-gateway.

После проделанного вы сможете получить доступ уже без указания порта, например: http://taiga.test.com/.

Настройка https

Сгенерируем самоподписанный сертификат:

$ mkdir tls/
$ openssl genrsa -out tls/key.pem 2048
$ openssl req -new -x509 -sha256 \
  -key tls/key.pem \
  -out tls/cert.pem \
  -days 3650 \
  -subj "/CN=ваш_домен" -addext "subjectAltName = DNS:ваш_домен"
  • Не забудьте указать ваш домен.

Перенастроим nginx для работы по https:

$ sudo nano /etc/nginx/sites-enabled/taiga

server {
    listen 80;
    listen [::]:80;
    server_name taiga.test.com;

    # Перенаправляем весь трафик на HTTPS
    return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name taiga.test.com;

  ssl_certificate     /home/alex/taiga-docker/tls/cert.pem;
  ssl_certificate_key /home/alex/taiga-docker/tls/key.pem;

  ssl_protocols       TLSv1.2 TLSv1.3;
  ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  ssl_prefer_server_ciphers off;
  ssl_session_cache   shared:SSL:10m;
  ssl_session_timeout 10m;

  location / {
    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_redirect off;
    proxy_pass http://localhost:9000/;
  }

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

Перезапустим nginx:

$ sudo nginx -t
$ sudo systemctl restart nginx

Немного поправим файл .env:

$ nano .env

TAIGA_SCHEME=https
WEBSOCKETS_SCHEME=wss

Пересоберём контейнеры и перезагрузим taiga-gateway:

$ sudo docker compose up -d --build
$ sudo docker compose restart taiga-gateway

Теперь вы сможете подключиться по https без указания порта, например: https://taiga.test.com/.

Если понравилась статья, подпишись на мой канал в VK или Telegram.

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Отказаться
Политика конфиденциальности