Всем привет!!!
В этом материале я расскажу как установить Taiga в контейнер Docker на Synology.
Оглавление
Я только покажу как установить Taiga в контейнер Docker на Synology, а настройка и конфигурация в данную статью не входят.
Введение
Taiga.io — это платформа для управления проектами, ориентированная на гибкие методологии разработки, такие как Agile и Scrum. Она предоставляет инструменты для планирования, отслеживания задач и управления проектами, что позволяет командам эффективно организовывать свою работу.
Основные функции Taiga включают:
1. Управление задачами: Создание и отслеживание задач, установка приоритетов и сроков выполнения.
2. Доски Kanban: Визуальное представление статуса задач, что помогает командам видеть прогресс работы.
3. Спринты: Поддержка спринтов для Agile-команд, что позволяет планировать и выполнять работу в рамках определённых временных интервалов.
4. Отчёты и аналитика: Инструменты для анализа производительности команды и мониторинга прогресса проекта.
5. Интеграции: Возможность интеграции с другими инструментами, такими как GitHub, GitLab и другими.
6. Русская локализация
Taiga.io подходит для команд любого размера и может использоваться как для разработки программного обеспечения, так и для управления другими типами проектов.
Системные требования
Для установки Taiga на Synology нужно учитывать следующее
- DSM 7.2 с Container Manager
- Минимум 1 ГБ RAM (рекомендуется больше для работы с несколькими контейнерами).
Мне не удалось настроить уведомление по почте. В интернете и на форумах проекта много тем и статей, но как понял я разработчики до конца не понимают как работает почта в docker и после каждого обновления данный функционал в Taiga перестает работать.
Обратный прокси
Можно сделать доступ к Taiga по доменному имени через обратный прокси в Synology. Откройте панель управления в DSM, портал для входа, дополнительно и обратный прокси. Создайте новое правило. Придумайте название правила. В источнике укажите https, имя домена, например taiga.XXX.synology.me и 443 порт. В месте назначения укажите http, localhost и порт 9000.
Не забудьте привязать нужный SSL сертификат в Панель управления – Безопасность – Сертификаты
Подготовка места
Откройте Synology DSM и File Station. В каталоге docker или там где вам больше нравиться создайте папку taiga, а в ней еще каталоги:
- static
- media
- db
- async-rabbitmq
- events-rabbitmq
- taiga-gateway
Затем в папку taiga-gateway нужно положить файл taiga.conf следующего содержания:
А есть сайты, которые за этот файл просят денег. Взял я этот файл с githab проекта. Если у вас есть возможности и желание, то в статье можно найти ссылку на донат. Спасибо!!!
server {
listen 80 default_server;
client_max_body_size 100M;
charset utf-8;
# Frontend
location / {
proxy_pass http://taiga-front/;
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
}
# API
location /api/ {
proxy_pass http://taiga-back:8000/api/;
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
}
# Admin
location /admin/ {
proxy_pass http://taiga-back:8000/admin/;
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
}
# Static
location /static/ {
alias /taiga/static/;
}
# Media
location /_protected/ {
internal;
alias /taiga/media/;
add_header Content-disposition "attachment";
}
# Unprotected section
location /media/exports/ {
alias /taiga/media/exports/;
add_header Content-disposition "attachment";
}
location /media/ {
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://taiga-protected:8003/;
proxy_redirect off;
}
# Events
location /events {
proxy_pass http://taiga-events: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;
}
}
Установка Taiga в Docker
Откройте Container Manager в DSM и перейдите на вкладку проекты. Создайте новый проект, придумайте ему имя, укажите путь до папки taiga и либо вставьте файл docker-compose либо его текст
Этот конфиг docker-compose для запуска taiga в контейнере docker на Synology. Предварительно замените в двух местах https://taiga.XXX.synology.me на ваше значение.
version: "3.5"
services:
taiga-db:
image: postgres:12.3
hostname: taiga-db
security_opt:
- no-new-privileges:true
environment:
POSTGRES_DB: taiga
POSTGRES_USER: taigauser
POSTGRES_PASSWORD: taigapass
TZ: Asia/Omsk
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "taiga", "-U", "taigauser"]
interval: 10s
timeout: 5s
retries: 5
start_period: 3s
volumes:
- ./db:/var/lib/postgresql/data
taiga-back:
image: taigaio/taiga-back:latest
hostname: taiga-back
environment:
PUBLIC_REGISTER_ENABLED: true
SESSION_COOKIE_SECURE: true
CSRF_COOKIE_SECURE: true
TAIGA_SECRET_KEY: "roiZcfvJkvZduSYzrzc0FtM2yfHEeyBq9TAW5pK5O9DqAWhY18XupmtlZk0ULRmj"
RABBITMQ_USER: "taigauser"
RABBITMQ_PASS: "taigapass"
POSTGRES_USER: "taigauser"
POSTGRES_PASSWORD: "taigapass"
POSTGRES_HOST: "taiga-db"
volumes:
- ./static:/taiga-back/static
- ./media:/taiga-back/media
depends_on:
taiga-db:
condition: service_healthy
taiga-events-rabbitmq:
condition: service_started
taiga-async-rabbitmq:
condition: service_started
taiga-async:
image: taigaio/taiga-back:latest
hostname: taiga-async
entrypoint: ["/taiga-back/docker/async_entrypoint.sh"]
environment:
PUBLIC_REGISTER_ENABLED: true
SESSION_COOKIE_SECURE: true
CSRF_COOKIE_SECURE: true
SECRET_KEY: "roiZcfvJkvZduSYzrzc0FtM2yfHEeyBq9TAW5pK5O9DqAWhY18XupmtlZk0ULRmj"
TAIGA_SECRET_KEY: "roiZcfvJkvZduSYzrzc0FtM2yfHEeyBq9TAW5pK5O9DqAWhY18XupmtlZk0ULRmj"
RABBITMQ_USER: "taigauser"
RABBITMQ_PASS: "taigapass"
RABBITMQ_ERLANG_COOKIE: "secret-erlang-cookie"
volumes:
- ./static:/taiga-back/static
- ./media:/taiga-back/media
depends_on:
taiga-db:
condition: service_healthy
taiga-events-rabbitmq:
condition: service_started
taiga-async-rabbitmq:
condition: service_started
taiga-async-rabbitmq:
image: rabbitmq:3.8-management-alpine
hostname: taiga-async-rabbitmq
environment:
RABBITMQ_ERLANG_COOKIE: "secret-erlang-cookie"
RABBITMQ_DEFAULT_USER: "taigauser"
RABBITMQ_DEFAULT_PASS: "taigapass"
RABBITMQ_DEFAULT_VHOST: "taiga"
user: 1026:100
volumes:
- ./async-rabbitmq:/var/lib/rabbitmq
taiga-front:
image: taigaio/taiga-front:latest
hostname: taiga-front
security_opt:
- no-new-privileges:true
environment:
TAIGA_URL: "https://taiga.XXX.synology.me"
TAIGA_WEBSOCKETS_URL: "wss://taiga.XXX.synology.me"
TAIGA_SUBPATH: ""
#PUBLIC_REGISTER_ENABLED: true # не работает https://docs.taiga.io/setup-faqs.html
SESSION_COOKIE_SECURE: true
CSRF_COOKIE_SECURE: true
# ...your customizations go here
# volumes:
# - ./conf.json:/usr/share/nginx/html/conf.json
taiga-events:
image: taigaio/taiga-events:latest
hostname: taiga-event
environment:
RABBITMQ_USER: "taigauser"
RABBITMQ_PASS: "taigapass"
TAIGA_SECRET_KEY: "roiZcfvJkvZduSYzrzc0FtM2yfHEeyBq9TAW5pK5O9DqAWhY18XupmtlZk0ULRmj"
depends_on:
taiga-events-rabbitmq:
condition: service_started
taiga-events-rabbitmq:
image: rabbitmq:3.8-management-alpine
hostname: taiga-events-rabbitmq
environment:
RABBITMQ_ERLANG_COOKIE: "secret-erlang-cookie"
RABBITMQ_DEFAULT_USER: "taigauser"
RABBITMQ_DEFAULT_PASS: "taigapass"
RABBITMQ_DEFAULT_VHOST: "taiga"
user: 1026:100
volumes:
- ./events-rabbitmq:/var/lib/rabbitmq
taiga-protected:
image: taigaio/taiga-protected:latest
hostname: taiga-protected
security_opt:
- no-new-privileges:true
environment:
MAX_AGE: "360"
SECRET_KEY: "roiZcfvJkvZduSYzrzc0FtM2yfHEeyBq9TAW5pK5O9DqAWhY18XupmtlZk0ULRmj"
taiga-gateway:
image: nginx:1.19-alpine
hostname: taiga-gateway
ports:
- "9000:80"
volumes:
- ./taiga-gateway/taiga.conf:/etc/nginx/conf.d/default.conf
- ./static:/taiga/static
- ./media:/taiga/media
depends_on:
- taiga-front
- taiga-back
- taiga-events
volumes:
static:
media:
db:
async-rabbitmq:
events-rabbitmq:
taiga-gateway:
В теории, если вставить переменные ниже в taiga-back то должны заработать уведомления почты, но как я и говорил, это не сработало у меня
# Email settings.
EMAIL_BACKEND: "smtp"
DEFAULT_FROM_EMAIL: "changeme@example.com"
EMAIL_USE_TLS: "True"
EMAIL_USE_SSL: "False"
EMAIL_HOST: "smtp.host.example.com"
EMAIL_PORT: "587"
EMAIL_HOST_USER: "user"
EMAIL_HOST_PASSWORD: "password"
После создания проекта, если все сделали правильно, выйдет код 0, который означает что проект успешно создан.
Внутри проекта будет много контейнеров. Первые минуты они будут погружаться, а потом успокоятся.
Если у вас включен фаервол на Synology, то нужно дополнительно разрешить сеть проекта, что бы все работало корректно. Напомню, что 16 маска это 255.255.0.0
Создание пользователя
Первого и всех последующих пользователей нужно создавать через терминал контейнера. Для этого откройте контейнер taiga-back, затем действия и открыть терминал
В открывшемся окне создайте новый терминал bash и перейдите на него. В терминале введите команду
python manage.py createsuperuser
Придумайте имя пользователя, почту и пароль
Теперь пользователь создан и можно использовать его в проектах taiga. Если нужны еще пользователи, то создайте их по аналогии.
Вход в веб интерфейс
Для подключения к веб интерфейсу введите в браузере https://taiga.XXX.synology.me, который вы настраивали ранее
Теперь вы знаете как установить Taiga в Docker на Synology