Как установить и настроить Taiga на VPS
Если Jira душит лимитами и ценой за пользователя, а Trello-подобные доски не тянут полноценный скрам с бэклогом и спринтами, вопрос закономерный: можно ли получить нормальный Agile-инструмент без ежемесячной подписки за каждого участника команды. Taiga — open-source платформа для управления проектами, которая умеет и скрам, и канбан, и бэклог с эпиками, и её вполне реально поднять на своём VPS за час. Ниже — рабочий путь: от подготовки сервера до бэкапов и первых пользователей.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Taiga и когда она оправдана
Taiga — открытая платформа проектного менеджмента, изначально сделанная под нужды Agile-команд: скрам-доски с спринтами и story points, канбан с настраиваемыми колонками, бэклог с эпиками и user stories, встроенный трекер багов (issues), вики для документации по проекту и базовая аналитика (burndown-чарты, отчёты по спринтам). По функциональности это ближе к урезанной Jira, чем к простой канбан-доске вроде Trello или Wekan — если вашей команде хватает списков карточек, Taiga будет избыточной, но если нужен полноценный скрам-процесс с ролями, story points и статусами задач — это её родная территория.
Архитектурно Taiga — это несколько сервисов: бэкенд на Django (taiga-back), фронтенд на Angular (taiga-front), очередь событий на RabbitMQ для realtime-обновлений (taiga-events), и опционально сервис экспорта/импорта проектов (taiga-async). Хранилище — PostgreSQL. Официально проект поддерживает разворачивание через Docker Compose — это и есть самый предсказуемый путь для собственного сервера, дальше в статье используется именно он.
Честно про минусы: сообщество вокруг self-hosted версии не такое большое, как вокруг Jira или GitLab, обновления иногда требуют внимательного чтения changelog (миграции базы между мажорными версиями бывают некрасивыми), а мобильного приложения у Taiga нет — только адаптивный веб-интерфейс. Для команды до 30-40 человек, которая хочет процесс уровня скрама без счёта за лицензии, это рабочий компромисс.
Требования к серверу
Taiga — это несколько контейнеров одновременно (backend, frontend, events, RabbitMQ, PostgreSQL, при желании ещё Redis для кэша), поэтому минимальный VPS для неё заметно тяжелее, чем для одиночного канбана.
| Параметр | Минимум | Рекомендуется для команды 15-30 человек |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 2 GB | 4 GB |
| Диск | 20 GB SSD | 40+ GB SSD (с запасом под вложения и бэкапы БД) |
| ОС | Ubuntu 24.04 / Debian 12 | Ubuntu 24.04 LTS |
На 2 GB RAM Taiga запускается и работает, но с небольшим запасом на пики — PostgreSQL, Django-бэкенд, Angular-статика через Nginx и RabbitMQ вместе легко съедают 1.2-1.5 GB в простое. Если на том же сервере планируете держать что-то ещё (CI-раннер, второй сервис), закладывайте память отдельно.
Перед установкой сервер должен быть готов: обновлена система, настроен SSH по ключу, привязан домен. Если делаете с нуля — пригодятся настройка домена и DNS и установка Docker на Ubuntu 24.04. Проверяем, что Docker на месте:
docker --version
docker compose version
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверПодготовка окружения и клонирование конфигурации
Официальный способ развернуть Taiga через Docker — репозиторий taiga-docker, в котором лежит готовый docker-compose.yml и файл переменных окружения. Клонируем его в рабочую директорию:
sudo mkdir -p /opt/taiga
cd /opt/taiga
sudo git clone https://github.com/kaleidos-ventures/taiga-docker.git .
Основной файл настроек — .env. Открываем его и правим ключевые параметры:
sudo nano .env
Минимальный набор того, что нужно поменять под себя:
TAIGA_SCHEME=https
TAIGA_DOMAIN=taiga.example.com
SUBPATH=
POSTGRES_USER=taiga
POSTGRES_PASSWORD=сгенерируйте_свой_пароль
POSTGRES_DB=taiga
SECRET_KEY=сгенерируйте_случайную_строку
RABBITMQ_USER=taiga
RABBITMQ_PASS=сгенерируйте_свой_пароль
ENABLE_TELEMETRY=False
Секрет и пароли генерируем командой, а не придумываем вручную:
openssl rand -hex 32
TAIGA_DOMAIN должен совпадать с доменом, на который позже настроите HTTPS. Если планируете отправку email-уведомлений (приглашения участников, оповещения о задачах), в том же .env есть блок EMAIL_* — заполняете SMTP-данные своего почтового сервиса. Без этого блока Taiga работает, но письма-приглашения новым участникам не уйдут — придётся передавать ссылку регистрации вручную.
Запуск контейнеров
Перед первым запуском убедитесь, что в docker-compose.yml порт, на который Taiga будет отвечать локально, не конфликтует с другими сервисами на сервере (по умолчанию Nginx-контейнер Taiga слушает 80). Если на сервере уже стоит системный Nginx или Caddy для других сайтов, порт нужно перенести на localhost и отдельный номер — иначе будет конфликт биндинга.
Открываем docker-compose.yml и в секции taiga-gateway меняем проброс портов на локальный:
taiga-gateway:
image: nginx:1.19-alpine
ports:
- "127.0.0.1:9000:80"
Дальше поднимаем стек:
cd /opt/taiga
sudo docker compose up -d
Первый запуск занимает несколько минут — бэкенд накатывает миграции базы данных, фронтенд собирает статику. Следим за логами:
sudo docker compose logs -f taiga-back
Дождитесь строки о готовности приложения (обычно упоминание запущенного Gunicorn/Django) без повторяющихся traceback. Если контейнер taiga-back уходит в перезапуск по кругу — почти всегда причина в недоступности PostgreSQL на момент старта или в неверных данных подключения в .env. Проверить состояние базы:
sudo docker compose logs taiga-db
sudo docker compose exec taiga-db pg_isready -U taiga
HTTPS через обратный прокси
Открывать Taiga напрямую по HTTP нельзя — через форму логина идут пароли, через API — токены сессий. Проще всего поставить перед внутренним taiga-gateway внешний Caddy, который сам получит и продлит сертификат Let's Encrypt. Если обратного прокси ещё нет, пошаговая установка есть в статье Caddy с авто-SSL на Ubuntu 24.04.
Конфиг для Taiga в Caddyfile:
taiga.example.com {
reverse_proxy 127.0.0.1:9000
encode gzip
}
Перезапускаем:
sudo systemctl reload caddy
Если используете Nginx с Certbot, важный момент — Taiga использует WebSocket для realtime-событий (taiga-events через RabbitMQ), поэтому нужны заголовки апгрейда соединения:
server {
listen 443 ssl;
server_name taiga.example.com;
ssl_certificate /etc/letsencrypt/live/taiga.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/taiga.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Без этих заголовков интерфейс будет открываться и работать, но обновления в реальном времени (когда коллега двигает карточку по спринту, а у вас доска сама переезжает) откажут — придётся руками обновлять страницу.
Первый администратор и настройка проекта
По умолчанию taiga-docker создаёт тестового администратора с логином admin и паролем 123123 — это годится только для проверки, что всё поднялось. Первым делом после логина через https://taiga.example.com меняем пароль администратора в настройках профиля.
Дальше стоит пройтись по базовым шагам:
- Отключить открытую регистрацию (если Taiga только для вашей команды): в
.envпараметрPUBLIC_REGISTER_ENABLED=False, после изменения —docker compose up -dдля применения. - Создать первый проект — из шаблона Scrum (спринты, story points, бэклог) или Kanban (просто колонки без итераций), в зависимости от процесса команды.
- Пригласить участников — через
Настройки проекта → Участники → Пригласить. Если SMTP настроен, письма уйдут автоматически, если нет — Taiga выдаст ссылку-приглашение для ручной отправки. - Настроить роли — по умолчанию есть Product Owner, Scrum Master/Chief Product Owner, разработчики, тестировщики; роли и права можно править под структуру своей команды.
Для команд, переезжающих с Jira или Trello, у Taiga есть встроенный импортёр — Настройки проекта → Импорт, поддерживает данные из Trello и GitHub Issues напрямую, для Jira потребуется предварительная конвертация экспорта в поддерживаемый формат через сторонние скрипты сообщества (готового официального импортёра из Jira нет).
Бэкапы базы данных и файлов
Taiga хранит всю рабочую информацию — проекты, задачи, комментарии, историю — в PostgreSQL, а прикреплённые файлы (вложения к задачам, аватары) на диске в volume taiga-media. Бэкапить нужно оба.
Дамп базы:
sudo mkdir -p /opt/taiga/backups
sudo docker compose exec -T taiga-db pg_dump -U taiga taiga | gzip > /opt/taiga/backups/taiga-db-$(date +%Y%m%d).sql.gz
Архив media-файлов:
sudo docker run --rm -v taiga_taiga-media-data:/data -v /opt/taiga/backups:/backup \
alpine tar czf /backup/taiga-media-$(date +%Y%m%d).tar.gz -C /data .
Название volume может отличаться в зависимости от имени проекта Docker Compose — проверить точное имя можно командой docker volume ls | grep taiga.
Автоматизация через cron, скрипт /opt/taiga/backup.sh:
#!/bin/bash
DATE=$(date +%Y%m%d-%H%M)
cd /opt/taiga
docker compose exec -T taiga-db pg_dump -U taiga taiga | gzip > backups/taiga-db-$DATE.sql.gz
docker run --rm -v taiga_taiga-media-data:/data -v /opt/taiga/backups:/backup \
alpine tar czf /backup/taiga-media-$DATE.tar.gz -C /data .
find backups/ -mtime +14 -delete
sudo chmod +x /opt/taiga/backup.sh
sudo crontab -e
# добавить строку:
0 3 * * * /opt/taiga/backup.sh
Дампы стоит копировать за пределы сервера — на объектное хранилище или другую машину, чтобы бэкап на том же диске не пропал вместе с сервером при аппаратном отказе. Восстановление базы из архива:
gunzip -c /opt/taiga/backups/taiga-db-20260815.sql.gz | sudo docker compose exec -T taiga-db psql -U taiga taiga
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли перенести проекты из Jira?
Прямого официального импортёра из Jira нет — придётся экспортировать данные из Jira и приводить их к формату, который понимает импортёр Taiga (Trello/GitHub JSON), либо переносить проекты вручную для небольшого числа задач. Из Trello и GitHub Issues импорт встроенный и работает без танцев с бубном.
Хватит ли 2 GB RAM для рабочей команды?
Для команды до 10-15 человек с обычным темпом — да, но с минимальным запасом. При активной работе нескольких проектов параллельно и вложениях в задачах лучше сразу закладывать 4 GB, иначе PostgreSQL и Django будут упираться в память под нагрузкой.
Нужен ли RabbitMQ обязательно?
Да, taiga-events использует RabbitMQ для доставки realtime-обновлений между открытыми вкладками пользователей. Без него Taiga функционально работает, но обновления на досках не приходят мгновенно — нужно обновлять страницу вручную.
Как обновить Taiga без потери данных?
Перед обновлением обязательно сделайте свежий дамп базы (см. раздел про бэкапы), затем git pull в директории taiga-docker, docker compose pull и docker compose up -d. Мажорные версии иногда требуют ручных шагов миграции — их всегда описывают в CHANGELOG репозитория, стоит прочитать перед обновлением, а не после.
Что делать, если доски не обновляются в реальном времени, а всё остальное работает?
Обычно дело в обратном прокси — проверьте, что заголовки Upgrade и Connection: upgrade действительно проходят до taiga-events, и что контейнер RabbitMQ в docker compose ps в состоянии healthy, а не просто running.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →