Taiga is a free, open-source project management platform built for agile teams. It supports Scrum and Kanban workflows out of the box, with features like user stories, sprints, epics, issue tracking, and a wiki – all through a clean web interface. Taiga is developed by Kaleidos INC under the Mozilla Public License 2.0.
This guide walks through installing Taiga 6.9 on Ubuntu 24.04 using Docker Compose – the officially recommended deployment method. We cover the full stack: PostgreSQL database, RabbitMQ message broker, Nginx reverse proxy with SSL, and firewall configuration.
Prerequisites
Before starting, make sure you have the following ready:
- A server running Ubuntu 24.04 LTS with at least 2GB RAM and 2 CPU cores
- Root or sudo access to the server
- A registered domain name pointed to your server IP (for SSL setup)
- Docker and Docker Compose installed on the server
- Ports 80, 443 open on your firewall
Step 1: Install Required Dependencies
Start by updating the package index and installing the packages needed for the rest of this setup.
sudo apt update
sudo apt install -y git curl wget apt-transport-https ca-certificates gnupg lsb-release
Step 2: Install Docker and Docker Compose
Taiga’s official deployment uses Docker Compose to orchestrate all its services. If you already have Docker installed, skip to Step 3. Otherwise, add Docker’s official repository and install the engine.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Add your user to the docker group so you can run Docker commands without sudo:
sudo usermod -aG docker $USER
newgrp docker
Verify Docker is running correctly:
docker --version
You should see the installed Docker version confirmed:
Docker version 27.x.x, build xxxxxxx
For a more detailed walkthrough, see our guide on installing Docker Compose on Ubuntu and Debian.
Step 3: Clone the Taiga Docker Repository
Taiga provides an official Docker repository with all the configuration files needed to deploy the full stack. Clone it and switch to the stable branch.
cd /opt
sudo git clone https://github.com/taigaio/taiga-docker.git taiga
cd /opt/taiga
sudo git checkout stable
Step 4: Configure the Environment File
The .env file controls all Taiga settings – database credentials, domain name, email, and security keys. Copy the default file and edit it with your values.
sudo cp .env .env.backup
sudo vi /opt/taiga/.env
Update these settings with your actual values. Replace taiga.example.com with your real domain:
# Taiga URL settings
TAIGA_SCHEME=https
TAIGA_DOMAIN=taiga.example.com
SUBPATH=""
WEBSOCKETS_SCHEME=wss
# Secret key - generate a random string
SECRET_KEY="change-this-to-a-long-random-string"
# Database credentials
POSTGRES_USER=taiga
POSTGRES_PASSWORD=your-strong-db-password-here
# Email settings (SMTP)
EMAIL_BACKEND=smtp
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
[email protected]
EMAIL_HOST_PASSWORD=your-email-password
[email protected]
EMAIL_USE_TLS=True
EMAIL_USE_SSL=False
# RabbitMQ credentials
RABBITMQ_USER=taiga
RABBITMQ_PASS=your-rabbitmq-password-here
RABBITMQ_VHOST=taiga
RABBITMQ_ERLANG_COOKIE=your-random-erlang-cookie
# Telemetry (set to False to disable)
ENABLE_TELEMETRY=False
Generate a strong secret key with this command:
openssl rand -hex 32
Use the output as your SECRET_KEY value. Do the same for the database password and RabbitMQ password.
Step 5: Start Taiga Services with Docker Compose
With the environment configured, launch all Taiga services. The Docker Compose file defines several containers – PostgreSQL, backend API, frontend, async workers, RabbitMQ, events handler, and an Nginx gateway.
cd /opt/taiga
sudo docker compose up -d
The first run pulls all container images, so it takes a few minutes depending on your internet speed. Check that all containers are running:
sudo docker compose ps
All services should show a status of “Up” or “running”:
NAME STATUS
taiga-async-1 Up
taiga-async-rabbitmq-1 Up
taiga-back-1 Up
taiga-db-1 Up (healthy)
taiga-events-1 Up
taiga-events-rabbitmq-1 Up
taiga-front-1 Up
taiga-gateway-1 Up
taiga-protected-1 Up
If any service failed to start, check its logs:
sudo docker compose logs taiga-back
Step 6: Access the Taiga Web Interface
By default, the Taiga gateway container listens on port 9000. Open your browser and navigate to your server’s IP or domain on that port:
http://your-server-ip:9000
Log in with the default administrator credentials:
- Username: admin
- Password: 123123
Change the admin password immediately after your first login. Go to your user settings and set a strong password.
Step 7: Configure Nginx as a Reverse Proxy
Running Taiga behind Nginx gives you proper domain-based access, SSL termination, and better performance. Install Nginx on the host system (outside Docker).
sudo apt install -y nginx
Create a new Nginx server block for Taiga:
sudo vi /etc/nginx/sites-available/taiga.conf
Add the following reverse proxy configuration. Replace taiga.example.com with your actual domain:
server {
listen 80;
server_name taiga.example.com;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:9000;
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;
}
# WebSocket support for real-time events
location /events {
proxy_pass http://127.0.0.1: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;
}
}
Enable the site and test the Nginx configuration:
sudo ln -s /etc/nginx/sites-available/taiga.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
The configuration test should return “syntax is ok” and “test is successful”. Your Taiga instance is now accessible at http://taiga.example.com.
Step 8: Secure Taiga with Let’s Encrypt SSL
Production deployments must run over HTTPS. Certbot automates Let’s Encrypt certificate issuance and Nginx configuration.
sudo apt install -y certbot python3-certbot-nginx
Request a certificate for your Taiga domain:
sudo certbot --nginx -d taiga.example.com
Follow the prompts to enter your email and agree to the terms. Certbot modifies your Nginx config to serve traffic over HTTPS and sets up automatic certificate renewal.
Verify the renewal timer is active:
sudo systemctl status certbot.timer
The timer should show as “active (waiting)”, confirming automatic renewal is scheduled.
After SSL is enabled, update the .env file to reflect HTTPS:
sudo vi /opt/taiga/.env
Set these two values:
TAIGA_SCHEME=https
WEBSOCKETS_SCHEME=wss
Then restart Taiga to pick up the changes:
cd /opt/taiga
sudo docker compose down
sudo docker compose up -d
Step 9: Configure UFW Firewall
Ubuntu 24.04 uses UFW as its default firewall frontend. Open the ports needed for web traffic and SSH access.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Confirm the rules are in place:
sudo ufw status
The output should list all three rules as ALLOW from Anywhere:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Do not open port 9000 externally – all traffic goes through the Nginx reverse proxy on ports 80 and 443.
Step 10: Taiga Post-Installation Tasks
With Taiga running and secured, handle these essential post-installation tasks.
Create Your First Project
Log into Taiga at https://taiga.example.com and click “New Project”. Choose between Scrum (sprint-based) or Kanban (continuous flow) depending on your team’s workflow. Taiga also supports a hybrid approach combining both.
Backup the Database
Set up regular backups of the PostgreSQL database running inside Docker:
sudo mkdir -p /opt/taiga/backups
sudo docker compose -f /opt/taiga/docker-compose.yml exec taiga-db pg_dump -U taiga taiga > /opt/taiga/backups/taiga-backup-$(date +%Y%m%d).sql
Add a cron job to automate daily backups. This keeps your project data safe in case of container failures or upgrades.
Update Taiga
To update Taiga to a newer version, pull the latest images and recreate the containers:
cd /opt/taiga
sudo docker compose down
sudo docker compose pull
sudo docker compose up -d
Always back up your database before upgrading.
Conclusion
Taiga is now running on Ubuntu 24.04 behind Nginx with SSL encryption. Your team can start managing projects using Scrum boards, Kanban boards, epics, and issue tracking right away. If you are evaluating alternatives, check out Plane as another open-source Jira alternative.
For production use, set up automated database backups, configure email notifications so team members receive updates, and monitor container health with Docker’s built-in healthchecks or an external monitoring tool.