Taiga is a free, open-source project management platform built for agile teams. It supports Scrum, Kanban, and mixed workflows out of the box – with features like user stories, tasks, sprints, issues, epics, and a wiki. Taiga is backed by Taiga.io and has an active community of contributors.
This guide walks through installing Taiga 6.9 on RHEL 10 or Rocky Linux 10 using the official Docker setup. The Docker deployment bundles all Taiga components – backend, frontend, events, PostgreSQL, RabbitMQ, and an Nginx gateway – into a single docker-compose.yml that gets you running in minutes.
Prerequisites
Before starting, make sure you have the following in place:
- A server running RHEL 10 or Rocky Linux 10 with at least 4 GB RAM and 2 CPU cores
- Root or sudo access to the server
- A domain name pointed to your server’s IP address (for example,
taiga.example.com) - Ports 80 and 443 open for HTTP/HTTPS traffic
- Git installed on the server
Step 1: Install Docker and Docker Compose on RHEL 10 / Rocky Linux 10
Taiga’s Docker deployment requires Docker Engine and the Docker Compose plugin. Add the official Docker repository and install both packages. If you already have Docker and Compose installed on Rocky Linux, skip ahead to Step 2.
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Start Docker and enable it to launch on boot:
sudo systemctl enable --now docker
Confirm Docker is running with the version check:
docker --version
You should see Docker’s version string confirming the installation:
Docker version 28.1.1, build 4eba377
Verify Docker Compose is available as a plugin:
docker compose version
The output confirms Compose is ready:
Docker Compose version v2.35.1
Add your user to the docker group so you can run Docker commands without sudo:
sudo usermod -aG docker $USER
newgrp docker
Step 2: Clone the Taiga Docker Repository
The Taiga team maintains an official taiga-docker repository on GitHub with the full Docker Compose stack. Clone it and check out the latest stable release:
cd /opt
sudo git clone https://github.com/taigaio/taiga-docker.git
cd taiga-docker
sudo git checkout 6.9.0
This checks out the 6.9.0 tag, which is the latest stable Taiga release as of this writing. List the key files in the directory:
ls -la
You should see the docker-compose.yml, .env, and the taiga-gateway directory among other files.
Step 3: Configure the Taiga Environment File
All Taiga configuration lives in a single .env file at the root of the cloned repository. Open it for editing:
sudo vi /opt/taiga-docker/.env
Update the following values. Replace taiga.example.com with your actual domain and set strong passwords for the database, RabbitMQ, and the secret key:
# Taiga URL settings
TAIGA_SCHEME=https
TAIGA_DOMAIN=taiga.example.com
SUBPATH=""
WEBSOCKETS_SCHEME=wss
# Secret key - generate with: openssl rand -hex 32
SECRET_KEY="your-random-secret-key-here"
# Database credentials
POSTGRES_USER=taiga
POSTGRES_PASSWORD=StrongDBPassword123
# Email settings (SMTP example)
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=StrongRabbitPassword123
RABBITMQ_VHOST=taiga
RABBITMQ_ERLANG_COOKIE=your-random-erlang-cookie
# Attachments
ATTACHMENTS_MAX_AGE=360
# Telemetry
ENABLE_TELEMETRY=True
Generate a secure secret key with this command:
openssl rand -hex 32
Copy the output and paste it as the SECRET_KEY value. Do the same for the RABBITMQ_ERLANG_COOKIE. Save and close the file when done.
Step 4: Start Taiga Services with Docker Compose
Launch the full Taiga stack in detached mode from the /opt/taiga-docker directory:
cd /opt/taiga-docker
sudo docker compose up -d
Docker pulls the required images for all services – PostgreSQL, the Taiga backend, frontend, async workers, RabbitMQ, events handler, and the Nginx gateway. This takes a few minutes on the first run depending on your internet speed.
After the pull completes, verify all containers are running:
sudo docker compose ps
All services should show a status of “Up” or “running”:
NAME STATUS
taiga-docker-taiga-async-1 Up
taiga-docker-taiga-async-rabbitmq-1 Up
taiga-docker-taiga-back-1 Up
taiga-docker-taiga-db-1 Up (healthy)
taiga-docker-taiga-events-1 Up
taiga-docker-taiga-events-rabbitmq-1 Up
taiga-docker-taiga-front-1 Up
taiga-docker-taiga-gateway-1 Up
taiga-docker-taiga-protected-1 Up
If any container is not running, check its logs:
sudo docker compose logs taiga-back
Step 5: Access the Taiga Web Interface
The Taiga gateway container listens on port 9000 by default. You can test the installation by accessing it directly before configuring the reverse proxy:
curl -sI http://localhost:9000
A successful response shows HTTP 200:
HTTP/1.1 200 OK
Server: nginx/1.19.10
The default admin credentials are:
- Username: admin
- Password: 123123
Change this password immediately after your first login. Navigate to your user settings in the web interface to update it.
Step 6: Configure Nginx Reverse Proxy for Taiga
To serve Taiga on your domain with HTTPS, set up Nginx as a reverse proxy in front of the Docker gateway. Install Nginx first:
sudo dnf install -y nginx
sudo systemctl enable --now nginx
Create a new Nginx server block for your Taiga domain:
sudo vi /etc/nginx/conf.d/taiga.conf
Add the following configuration. Replace taiga.example.com with your actual domain name:
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;
}
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;
}
}
Test the Nginx configuration for syntax errors:
sudo nginx -t
A valid configuration returns:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reload Nginx to apply the new server block:
sudo systemctl reload nginx
Step 7: Configure Firewall Rules for Taiga
RHEL 10 and Rocky Linux 10 use firewalld as the default firewall manager. Open ports 80 (HTTP) and 443 (HTTPS) to allow web traffic to reach Nginx:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Verify the rules are active:
sudo firewall-cmd --list-services
The output should include both http and https in the list of allowed services:
cockpit dhcpv6-client http https ssh
Do not expose port 9000 to the public – the Nginx reverse proxy handles all external traffic and forwards it to the Docker gateway internally.
Step 8: Enable HTTPS with Let’s Encrypt SSL
Secure your Taiga installation with a free SSL certificate from Let’s Encrypt using Certbot. Install Certbot and the Nginx plugin:
sudo dnf install -y certbot python3-certbot-nginx
Run Certbot to obtain and install the certificate automatically. Replace the domain and email with your own:
sudo certbot --nginx -d taiga.example.com --non-interactive --agree-tos -m [email protected]
Certbot modifies your Nginx configuration to listen on port 443 with SSL and adds a redirect from HTTP to HTTPS. Verify the certificate is installed:
sudo certbot certificates
You should see your domain listed with the certificate path and expiry date. Certbot automatically sets up a systemd timer for certificate renewal. Confirm the timer is active:
sudo systemctl list-timers | grep certbot
After SSL is configured, make sure the .env file in /opt/taiga-docker has TAIGA_SCHEME=https and WEBSOCKETS_SCHEME=wss. If you changed these values, restart the Taiga stack:
cd /opt/taiga-docker
sudo docker compose down
sudo docker compose up -d
Step 9: Backup and Restore Taiga Data
Taiga stores its data in Docker volumes – the PostgreSQL database, uploaded media files, and static assets. Back these up regularly to avoid data loss.
Back Up the Database
Dump the PostgreSQL database from the running container:
sudo docker compose exec taiga-db pg_dumpall -U taiga > /opt/taiga-backups/taiga-db-$(date +%F).sql
Create the backup directory first if it does not exist:
sudo mkdir -p /opt/taiga-backups
Back Up Media Files
Copy the media volume contents to your backup location:
sudo docker cp $(sudo docker compose ps -q taiga-back):/taiga-back/media /opt/taiga-backups/media-$(date +%F)
Restore from Backup
To restore the database from a backup file, copy the dump into the database container and run it:
sudo docker cp /opt/taiga-backups/taiga-db-2026-03-22.sql $(sudo docker compose ps -q taiga-db):/tmp/restore.sql
sudo docker compose exec taiga-db psql -U taiga -f /tmp/restore.sql
To restore media files, copy them back into the backend container:
sudo docker cp /opt/taiga-backups/media-2026-03-22/. $(sudo docker compose ps -q taiga-back):/taiga-back/media/
Set up a cron job to automate daily backups. Open the root crontab:
sudo crontab -e
Add this line to run the database backup every day at 2 AM and keep the last 30 days:
0 2 * * * cd /opt/taiga-docker && docker compose exec -T taiga-db pg_dumpall -U taiga > /opt/taiga-backups/taiga-db-$(date +\%F).sql && find /opt/taiga-backups -name "taiga-db-*.sql" -mtime +30 -delete
Conclusion
Taiga is now running on your RHEL 10 or Rocky Linux 10 server behind Nginx with HTTPS enabled. The Docker Compose deployment keeps all components isolated and easy to manage – upgrades are a matter of pulling new images and restarting the stack.
For production use, make sure you configure email delivery for notifications, set up automated backups as shown in Step 9, and monitor container health with docker compose ps periodically. Review the official Taiga documentation for advanced configuration options like LDAP authentication and custom branding.