This guide uses Docker Compose to run OpenProject in containers. OpenProject is a project management software for Agile, Scrum, and Kanban teams. The all-in-one Docker image includes PostgreSQL database.
For Docker installation, see Docker.
Create a docker-compose.yml file with the following content:
version: '3.8'
services:
openproject:
image: openproject/openproject:17
container_name: openproject
restart: unless-stopped
ports:
- "8080:80"
environment:
- SECRET_KEY_BASE=your-random-32-character-secret-key
- OPENPROJECT_HOST__NAME=openproject.example.com
- OPENPROJECT_HTTPS=false
- OPENPROJECT_EMAIL_SEND_ADDRESS=smtp.example.com
- OPENPROJECT_EMAIL_SEND_USERNAME=smtp-user
- OPENPROJECT_EMAIL_SEND_PASSWORD=smtp-password
volumes:
- ./pgdata:/var/openproject/pgdata
- ./assets:/var/openproject/assets
- ./logs:/var/openproject/log
Security Note: Replace the following before deployment:
your-random-32-character-secret-key - Generate with: openssl rand -hex 32openproject.example.com - Your OpenProject server domaindocker compose up -d
Wait for the container to start (approximately 2-3 minutes for first run).
Open http://YOUR-SERVER:8080 to access OpenProject.
On first access, you’ll be prompted to create an admin account.
For production deployments:
/var/openproject/pgdata and /var/openproject/assetsFor production, use HTTPS with a reverse proxy. Set these environment variables:
environment:
- OPENPROJECT_HTTPS=true
- OPENPROJECT_HOST__NAME=openproject.example.com
For large deployments, use an external PostgreSQL database:
services:
openproject:
image: openproject/openproject:17
environment:
- DATABASE_URL=postgresql://openproject:password@db-host:5432/openproject
- SECRET_KEY_BASE=your-secret-key
Add these environment variables for email:
environment:
- OPENPROJECT_EMAIL_SEND_ADDRESS=smtp.example.com
- OPENPROJECT_EMAIL_SEND_PORT=587
- OPENPROJECT_EMAIL_SEND_USERNAME=smtp-user
- OPENPROJECT_EMAIL_SEND_PASSWORD=smtp-password
- OPENPROJECT_EMAIL_SEND_DELIVERY_METHOD=smtp
See Configuration and Security for production hardening.
Any questions?
Feel free to contact us. Find all contact information on our contact page.