Taiga Project Management
Agile project management platform for startups and teams.
Overview
Taiga is an open-source agile project management platform built specifically for multidisciplinary teams who want powerful project tracking without enterprise complexity. Born from the need for a modern alternative to heavyweight tools like Jira, Taiga combines intuitive design with robust functionality, supporting both Scrum and Kanban methodologies while maintaining the flexibility that startups and growing teams require. This comprehensive stack orchestrates seven specialized components: taiga-gateway handles HTTP routing and static file delivery, taiga-front provides the responsive Vue.js interface, while taiga-back serves the Django REST API that powers all project data operations. The architecture leverages PostgreSQL for reliable project data storage, RabbitMQ for asynchronous task processing, and taiga-events for real-time WebSocket communication that keeps team members instantly synchronized. The taiga-async worker processes background tasks like email notifications and file processing, while Redis could be added for session caching and performance optimization. This stack delivers enterprise-grade project management capabilities with the simplicity that agile teams demand, offering features like customizable workflows, time tracking, and comprehensive reporting without the overhead of traditional project management suites.
Key Features
- Dual methodology support with native Scrum sprint planning and Kanban board visualization
- Real-time collaboration through WebSocket-powered live updates via taiga-events and RabbitMQ messaging
- Comprehensive issue tracking with user stories, tasks, bugs, and custom issue types with full lifecycle management
- Advanced project analytics including burndown charts, velocity tracking, and team performance metrics
- Flexible user role management with granular permissions for project owners, developers, and stakeholders
- Rich media support with file attachments, image previews, and document management through persistent volume storage
- RESTful API architecture enabling custom integrations and third-party tool connections
- Asynchronous task processing for email notifications, bulk operations, and background data processing
Common Use Cases
- 1Software development teams transitioning from Jira who need agile project management without licensing costs
- 2Startup engineering teams requiring integrated sprint planning, backlog management, and team velocity tracking
- 3Remote development teams needing real-time collaboration with live issue updates and team communication
- 4Consulting firms managing multiple client projects with separate workspaces and customized workflows
- 5Open source projects requiring public issue tracking with contributor management and community engagement features
- 6Educational institutions teaching agile methodologies with hands-on project management experience
- 7Small to medium agencies coordinating design and development workflows with client visibility and reporting
Prerequisites
- Docker host with minimum 4GB RAM (PostgreSQL requires 1GB, RabbitMQ needs 1GB, remaining services need 2GB combined)
- Available ports 9000 for web interface and 5672/15672 for RabbitMQ management if external access needed
- Understanding of agile methodologies (Scrum/Kanban) and project management workflows for effective configuration
- Basic knowledge of environment variable configuration for database passwords and domain settings
- SSL certificate and reverse proxy setup if deploying for production use with HTTPS requirements
- SMTP server configuration details for email notifications and user invitation functionality
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 taiga-gateway: 3 image: nginx:alpine4 container_name: taiga-gateway5 ports: 6 - "9000:80"7 volumes: 8 - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro9 - taiga-static:/taiga/static:ro10 - taiga-media:/taiga/media:ro11 depends_on: 12 - taiga-front13 - taiga-back14 - taiga-events15 networks: 16 - taiga-network17 restart: unless-stopped1819 taiga-front: 20 image: taigaio/taiga-front:latest21 container_name: taiga-front22 environment: 23 - TAIGA_URL=${TAIGA_URL}24 - TAIGA_WEBSOCKETS_URL=${TAIGA_WS_URL}25 networks: 26 - taiga-network27 restart: unless-stopped2829 taiga-back: 30 image: taigaio/taiga-back:latest31 container_name: taiga-back32 environment: 33 - POSTGRES_DB=taiga34 - POSTGRES_USER=taiga35 - POSTGRES_PASSWORD=${DB_PASSWORD}36 - POSTGRES_HOST=db37 - TAIGA_SECRET_KEY=${SECRET_KEY}38 - TAIGA_SITES_DOMAIN=${TAIGA_DOMAIN}39 - TAIGA_SITES_SCHEME=http40 - EVENTS_PUSH_BACKEND_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga41 - CELERY_BROKER_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga42 - ENABLE_TELEMETRY=False43 volumes: 44 - taiga-static:/taiga-back/static45 - taiga-media:/taiga-back/media46 depends_on: 47 - db48 - rabbitmq49 - taiga-async50 - taiga-events51 networks: 52 - taiga-network53 restart: unless-stopped5455 taiga-async: 56 image: taigaio/taiga-back:latest57 container_name: taiga-async58 entrypoint: ["/taiga-back/docker/async_entrypoint.sh"]59 environment: 60 - POSTGRES_DB=taiga61 - POSTGRES_USER=taiga62 - POSTGRES_PASSWORD=${DB_PASSWORD}63 - POSTGRES_HOST=db64 - TAIGA_SECRET_KEY=${SECRET_KEY}65 - CELERY_BROKER_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga66 volumes: 67 - taiga-static:/taiga-back/static68 - taiga-media:/taiga-back/media69 depends_on: 70 - db71 - rabbitmq72 networks: 73 - taiga-network74 restart: unless-stopped7576 taiga-events: 77 image: taigaio/taiga-events:latest78 container_name: taiga-events79 environment: 80 - RABBITMQ_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga81 - TAIGA_SECRET_KEY=${SECRET_KEY}82 depends_on: 83 - rabbitmq84 networks: 85 - taiga-network86 restart: unless-stopped8788 db: 89 image: postgres:15-alpine90 container_name: taiga-db91 environment: 92 - POSTGRES_USER=taiga93 - POSTGRES_PASSWORD=${DB_PASSWORD}94 - POSTGRES_DB=taiga95 volumes: 96 - postgres-data:/var/lib/postgresql/data97 networks: 98 - taiga-network99 restart: unless-stopped100101 rabbitmq: 102 image: rabbitmq:3-management-alpine103 container_name: taiga-rabbitmq104 environment: 105 - RABBITMQ_DEFAULT_USER=taiga106 - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD}107 - RABBITMQ_DEFAULT_VHOST=taiga108 volumes: 109 - rabbitmq-data:/var/lib/rabbitmq110 networks: 111 - taiga-network112 restart: unless-stopped113114volumes: 115 taiga-static: 116 taiga-media: 117 postgres-data: 118 rabbitmq-data: 119120networks: 121 taiga-network: 122 driver: bridge.env Template
.env
1# Taiga Project Management2TAIGA_URL=http://localhost:90003TAIGA_WS_URL=ws://localhost:90004TAIGA_DOMAIN=localhost:900056# Secrets7SECRET_KEY=your_secret_key_here8DB_PASSWORD=secure_taiga_password9RABBITMQ_PASSWORD=secure_rabbitmq_passwordUsage Notes
- 1Web UI at http://localhost:9000
- 2Default admin: admin / 123123
- 3Supports Scrum and Kanban
- 4Real-time updates via websockets
- 5Import from Jira, Trello, Asana
Individual Services(7 services)
Copy individual services to mix and match with your existing compose files.
taiga-gateway
taiga-gateway:
image: nginx:alpine
container_name: taiga-gateway
ports:
- "9000:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- taiga-static:/taiga/static:ro
- taiga-media:/taiga/media:ro
depends_on:
- taiga-front
- taiga-back
- taiga-events
networks:
- taiga-network
restart: unless-stopped
taiga-front
taiga-front:
image: taigaio/taiga-front:latest
container_name: taiga-front
environment:
- TAIGA_URL=${TAIGA_URL}
- TAIGA_WEBSOCKETS_URL=${TAIGA_WS_URL}
networks:
- taiga-network
restart: unless-stopped
taiga-back
taiga-back:
image: taigaio/taiga-back:latest
container_name: taiga-back
environment:
- POSTGRES_DB=taiga
- POSTGRES_USER=taiga
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_HOST=db
- TAIGA_SECRET_KEY=${SECRET_KEY}
- TAIGA_SITES_DOMAIN=${TAIGA_DOMAIN}
- TAIGA_SITES_SCHEME=http
- EVENTS_PUSH_BACKEND_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga
- CELERY_BROKER_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga
- ENABLE_TELEMETRY=False
volumes:
- taiga-static:/taiga-back/static
- taiga-media:/taiga-back/media
depends_on:
- db
- rabbitmq
- taiga-async
- taiga-events
networks:
- taiga-network
restart: unless-stopped
taiga-async
taiga-async:
image: taigaio/taiga-back:latest
container_name: taiga-async
entrypoint:
- /taiga-back/docker/async_entrypoint.sh
environment:
- POSTGRES_DB=taiga
- POSTGRES_USER=taiga
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_HOST=db
- TAIGA_SECRET_KEY=${SECRET_KEY}
- CELERY_BROKER_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga
volumes:
- taiga-static:/taiga-back/static
- taiga-media:/taiga-back/media
depends_on:
- db
- rabbitmq
networks:
- taiga-network
restart: unless-stopped
taiga-events
taiga-events:
image: taigaio/taiga-events:latest
container_name: taiga-events
environment:
- RABBITMQ_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga
- TAIGA_SECRET_KEY=${SECRET_KEY}
depends_on:
- rabbitmq
networks:
- taiga-network
restart: unless-stopped
db
db:
image: postgres:15-alpine
container_name: taiga-db
environment:
- POSTGRES_USER=taiga
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=taiga
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- taiga-network
restart: unless-stopped
rabbitmq
rabbitmq:
image: rabbitmq:3-management-alpine
container_name: taiga-rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=taiga
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD}
- RABBITMQ_DEFAULT_VHOST=taiga
volumes:
- rabbitmq-data:/var/lib/rabbitmq
networks:
- taiga-network
restart: unless-stopped
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 taiga-gateway:5 image: nginx:alpine6 container_name: taiga-gateway7 ports:8 - "9000:80"9 volumes:10 - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro11 - taiga-static:/taiga/static:ro12 - taiga-media:/taiga/media:ro13 depends_on:14 - taiga-front15 - taiga-back16 - taiga-events17 networks:18 - taiga-network19 restart: unless-stopped2021 taiga-front:22 image: taigaio/taiga-front:latest23 container_name: taiga-front24 environment:25 - TAIGA_URL=${TAIGA_URL}26 - TAIGA_WEBSOCKETS_URL=${TAIGA_WS_URL}27 networks:28 - taiga-network29 restart: unless-stopped3031 taiga-back:32 image: taigaio/taiga-back:latest33 container_name: taiga-back34 environment:35 - POSTGRES_DB=taiga36 - POSTGRES_USER=taiga37 - POSTGRES_PASSWORD=${DB_PASSWORD}38 - POSTGRES_HOST=db39 - TAIGA_SECRET_KEY=${SECRET_KEY}40 - TAIGA_SITES_DOMAIN=${TAIGA_DOMAIN}41 - TAIGA_SITES_SCHEME=http42 - EVENTS_PUSH_BACKEND_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga43 - CELERY_BROKER_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga44 - ENABLE_TELEMETRY=False45 volumes:46 - taiga-static:/taiga-back/static47 - taiga-media:/taiga-back/media48 depends_on:49 - db50 - rabbitmq51 - taiga-async52 - taiga-events53 networks:54 - taiga-network55 restart: unless-stopped5657 taiga-async:58 image: taigaio/taiga-back:latest59 container_name: taiga-async60 entrypoint: ["/taiga-back/docker/async_entrypoint.sh"]61 environment:62 - POSTGRES_DB=taiga63 - POSTGRES_USER=taiga64 - POSTGRES_PASSWORD=${DB_PASSWORD}65 - POSTGRES_HOST=db66 - TAIGA_SECRET_KEY=${SECRET_KEY}67 - CELERY_BROKER_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga68 volumes:69 - taiga-static:/taiga-back/static70 - taiga-media:/taiga-back/media71 depends_on:72 - db73 - rabbitmq74 networks:75 - taiga-network76 restart: unless-stopped7778 taiga-events:79 image: taigaio/taiga-events:latest80 container_name: taiga-events81 environment:82 - RABBITMQ_URL=amqp://taiga:${RABBITMQ_PASSWORD}@rabbitmq:5672/taiga83 - TAIGA_SECRET_KEY=${SECRET_KEY}84 depends_on:85 - rabbitmq86 networks:87 - taiga-network88 restart: unless-stopped8990 db:91 image: postgres:15-alpine92 container_name: taiga-db93 environment:94 - POSTGRES_USER=taiga95 - POSTGRES_PASSWORD=${DB_PASSWORD}96 - POSTGRES_DB=taiga97 volumes:98 - postgres-data:/var/lib/postgresql/data99 networks:100 - taiga-network101 restart: unless-stopped102103 rabbitmq:104 image: rabbitmq:3-management-alpine105 container_name: taiga-rabbitmq106 environment:107 - RABBITMQ_DEFAULT_USER=taiga108 - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD}109 - RABBITMQ_DEFAULT_VHOST=taiga110 volumes:111 - rabbitmq-data:/var/lib/rabbitmq112 networks:113 - taiga-network114 restart: unless-stopped115116volumes:117 taiga-static:118 taiga-media:119 postgres-data:120 rabbitmq-data:121122networks:123 taiga-network:124 driver: bridge125EOF126127# 2. Create the .env file128cat > .env << 'EOF'129# Taiga Project Management130TAIGA_URL=http://localhost:9000131TAIGA_WS_URL=ws://localhost:9000132TAIGA_DOMAIN=localhost:9000133134# Secrets135SECRET_KEY=your_secret_key_here136DB_PASSWORD=secure_taiga_password137RABBITMQ_PASSWORD=secure_rabbitmq_password138EOF139140# 3. Start the services141docker compose up -d142143# 4. View logs144docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/taiga-pm/run | bashTroubleshooting
- taiga-back failing with database connection errors: Verify DB_PASSWORD environment variable matches across taiga-back, taiga-async, and db services
- Real-time updates not working in web interface: Check that TAIGA_WEBSOCKETS_URL points to correct taiga-events service and RabbitMQ credentials match
- Static files (CSS/JS) not loading properly: Ensure taiga-static volume is properly mounted and nginx.conf routing is configured for /static/ paths
- Email notifications not sending from Taiga: Configure SMTP settings in taiga-back environment and verify taiga-async worker is processing mail queue
- RabbitMQ connection failures across services: Confirm RABBITMQ_PASSWORD is consistent and rabbitmq service is healthy before dependent services start
- High memory usage from PostgreSQL: Tune PostgreSQL configuration for your dataset size or increase container memory limits above 1GB minimum
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
taiga-gatewaytaiga-fronttaiga-backtaiga-asynctaiga-eventspostgresqlrabbitmqredis
Tags
#agile#scrum#kanban#project-management#taiga
Category
Productivity & CollaborationAd Space
Shortcuts: C CopyF FavoriteD Download