В этой статье я покажу как установить сервер для управления проектами «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.