Skip to content

Deploying a Taiga App

Introduction

Taiga is an open-source agile project management platform with a Django backend and Angular frontend. Deploying Taiga with Dockerfiles on Klutch.sh provides reproducible builds, managed secrets, and persistent storage—all configured from klutch.sh/app. Because Klutch.sh routes one port per app, this guide uses two apps: one for the backend API and another for the frontend UI.


Prerequisites

  • Klutch.sh account (sign up)
  • GitHub repositories (or branches) for Taiga backend and frontend Dockerfiles (GitHub is the only supported git source)
  • External PostgreSQL and Redis
  • Domain and TLS for the frontend/UI

Architecture and ports

  • Backend API: HTTP on internal port 8000; choose HTTP traffic and set internal port to 8000.
  • Frontend (taiga-front): HTTP on internal port 80 (Nginx); choose HTTP traffic and set internal port to 80.
  • External Postgres/Redis are required; media uploads should persist across deployments.

Repository layouts

Backend:

taiga-back/
├── Dockerfile
└── README.md

Frontend:

taiga-front/
├── Dockerfile
└── README.md

Keep secrets out of Git; store them in Klutch.sh environment variables.


Dockerfile for Taiga backend (production-ready)

Place in taiga-back/Dockerfile:

FROM taigaio/taiga-back:latest
ENV LISTEN_PORT=8000
EXPOSE 8000
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "taiga.wsgi"]

Pin to a specific tag (e.g., taigaio/taiga-back:6.7.0) for stability.


Dockerfile for Taiga frontend (production-ready)

Place in taiga-front/Dockerfile:

FROM taigaio/taiga-front:latest
ENV NGINX_LISTEN=80
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Pin to a specific tag (e.g., taigaio/taiga-front:6.7.0) for stability.


Environment variables (Klutch.sh)

Backend app:

  • PORT=8000
  • TAIGA_SECRET_KEY=<secure-random-hex>
  • DATABASE_URL=postgres://<user>:<password>@<host>:5432/<db>
  • TAIGA_REDIS_URL=redis://<host>:6379/0
  • MEDIA_URL=https://example-front.klutch.sh/media
  • STATIC_URL=https://example-front.klutch.sh/static
  • Optional: email SMTP settings (EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_USE_TLS)

Frontend app:

  • PORT=80
  • API_URL=https://example-back.klutch.sh/api/v1
  • FRONT_DOMAIN=https://example-front.klutch.sh
  • MEDIA_URL=https://example-front.klutch.sh/media
  • STATIC_URL=https://example-front.klutch.sh/static
  • WEBSOCKET_URL=wss://example-back.klutch.sh

If deploying without Dockerfiles and relying on Nixpacks:

  • Backend: NIXPACKS_PYTHON_VERSION=3.10, NIXPACKS_START_CMD=gunicorn -w 4 -b 0.0.0.0:8000 taiga.wsgi
  • Frontend: NIXPACKS_START_CMD=nginx -g 'daemon off;'

Attach persistent volumes

Backend:

  • /taiga/media — uploaded files.
  • /taiga/static — static assets if collected locally.

Frontend:

  • Typically stateless; no volume required unless customizing assets at runtime.

Ensure paths are writable inside the container.


Deploy Taiga on Klutch.sh (Dockerfile workflow)

  1. Push the backend repo (Dockerfile at root) to GitHub. Create a Klutch.sh app, select HTTP, set internal port 8000, add backend env vars, and attach volumes for media/static.
  2. Deploy the backend and note its URL (e.g., https://example-back.klutch.sh).
  3. Push the frontend repo (Dockerfile at root) to GitHub. Create a Klutch.sh app, select HTTP, set internal port 80, and add frontend env vars pointing to the backend URLs.
  4. Deploy the frontend. Access Taiga at https://example-front.klutch.sh and finish any setup.

Sample checks

Backend health:

Terminal window
curl -I https://example-back.klutch.sh/api/v1/health

Frontend reachability:

Terminal window
curl -I https://example-front.klutch.sh

Health checks and production tips

  • Add HTTP readiness probes to /api/v1/health (backend) and / (frontend).
  • Keep DB/Redis credentials and TAIGA_SECRET_KEY in Klutch.sh secrets; rotate regularly.
  • Prefer external object storage for media at scale; if using local storage, monitor /taiga/media and resize volumes proactively.
  • Pin image versions and test upgrades in staging before production rollout.

Taiga on Klutch.sh runs as two apps to align with single-port routing: backend on 8000 and frontend on 80. Configure ports, env vars, and storage, then ship your agile project management platform.