How To

Install Taiga on RHEL 10 / Rocky Linux 10 with Docker

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.

Original content from computingforgeeks.com - post 72115

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.

Related Articles

AlmaLinux Enable EPEL Repository on Rocky Linux 8 | AlmaLinux 8 Git Install Apache Subversion (SVN) Server on Rocky Linux 10 / Ubuntu 24.04 AlmaLinux Install Jenkins on Rocky Linux 10 / AlmaLinux 10 AlmaLinux Configure Chrony NTP Server on Rocky Linux 9 / AlmaLinux 9

Leave a Comment

Press ESC to close