docker.recipes

OpenProject Management

intermediate

Enterprise project management with Gantt charts, boards, and time tracking.

Overview

OpenProject is an open-source, web-based project management software that has been in active development since 2011 as a fork of ChiliProject/Redmine. It combines traditional project management methodologies with agile practices, offering comprehensive features including Gantt charts, Kanban boards, time tracking, wikis, forums, and budget management. OpenProject serves as a complete alternative to proprietary solutions like Microsoft Project or Jira, with strong emphasis on data privacy and self-hosting capabilities. This deployment configuration creates a three-tier architecture with OpenProject version 14 as the main application server, PostgreSQL 15 as the relational database backend, and Memcached for high-performance caching. The setup uses Alpine Linux variants where possible for reduced container size and improved security. The OpenProject container connects to the PostgreSQL database for persistent data storage while leveraging Memcached to accelerate page loads and reduce database queries for frequently accessed content. This stack is ideal for organizations seeking enterprise-grade project management capabilities with full data control and customization options. The combination provides excellent performance for teams ranging from 10 to 1000+ users, with PostgreSQL handling complex project hierarchies and relationships while Memcached ensures responsive user interfaces even under heavy load. The configuration supports LDAP integration, custom workflows, and extensive plugin ecosystem that makes it suitable for both technical and non-technical project management scenarios.

Key Features

  • Interactive Gantt charts with dependency management and critical path analysis
  • Agile boards with customizable workflows, swimlanes, and backlog management
  • Time tracking with detailed reporting, budgets, and cost analysis per project
  • Multi-project hierarchies with cross-project dependencies and portfolio views
  • Built-in wiki system with version control and document management capabilities
  • Advanced permission system with role-based access control and project-level security
  • PostgreSQL-backed full-text search across projects, work packages, and documents
  • Memcached acceleration for dashboard widgets, project listings, and user sessions

Common Use Cases

  • 1Software development teams managing sprints, releases, and bug tracking workflows
  • 2Construction and engineering projects requiring detailed Gantt scheduling with resource allocation
  • 3Consulting firms tracking billable hours across multiple client projects simultaneously
  • 4Non-profit organizations coordinating grant-funded projects with budget oversight
  • 5Educational institutions managing research projects and academic collaboration
  • 6Marketing agencies planning campaigns with creative workflows and client approval processes
  • 7IT departments handling internal projects, change requests, and infrastructure deployments

Prerequisites

  • Minimum 2GB RAM recommended for PostgreSQL and OpenProject containers under normal load
  • Docker host with at least 4GB available disk space for application data and database storage
  • Port 8080 available on the host system for web interface access
  • Basic understanding of project management concepts like work packages, phases, and Gantt charts
  • Environment variables configured for OPENPROJECT_HOST, SECRET_KEY, and DB_PASSWORD
  • Email server configuration knowledge if planning to enable notification features

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 openproject:
3 image: openproject/openproject:14
4 container_name: openproject
5 environment:
6 - OPENPROJECT_HOST__NAME=${OPENPROJECT_HOST}
7 - OPENPROJECT_SECRET_KEY_BASE=${SECRET_KEY}
8 - OPENPROJECT_HTTPS=false
9 - DATABASE_URL=postgres://openproject:${DB_PASSWORD}@db/openproject
10 - RAILS_CACHE_STORE=memcache
11 - OPENPROJECT_CACHE__MEMCACHE__SERVER=memcached:11211
12 - OPENPROJECT_RAILS__RELATIVE__URL__ROOT=
13 volumes:
14 - openproject-data:/var/openproject/assets
15 ports:
16 - "8080:80"
17 depends_on:
18 - db
19 - memcached
20 networks:
21 - openproject-network
22 restart: unless-stopped
23
24 db:
25 image: postgres:15-alpine
26 container_name: openproject-db
27 environment:
28 - POSTGRES_USER=openproject
29 - POSTGRES_PASSWORD=${DB_PASSWORD}
30 - POSTGRES_DB=openproject
31 volumes:
32 - postgres-data:/var/lib/postgresql/data
33 networks:
34 - openproject-network
35 restart: unless-stopped
36
37 memcached:
38 image: memcached:alpine
39 container_name: openproject-memcached
40 networks:
41 - openproject-network
42 restart: unless-stopped
43
44volumes:
45 openproject-data:
46 postgres-data:
47
48networks:
49 openproject-network:
50 driver: bridge

.env Template

.env
1# OpenProject
2OPENPROJECT_HOST=localhost:8080
3
4# Generate with: openssl rand -hex 32
5SECRET_KEY=your_secret_key_here
6DB_PASSWORD=secure_openproject_password

Usage Notes

  1. 1Web UI at http://localhost:8080
  2. 2Default admin: admin / admin
  3. 3Change password on first login
  4. 4Gantt charts, boards, wiki, time tracking
  5. 5LDAP and SSO support

Individual Services(3 services)

Copy individual services to mix and match with your existing compose files.

openproject
openproject:
  image: openproject/openproject:14
  container_name: openproject
  environment:
    - OPENPROJECT_HOST__NAME=${OPENPROJECT_HOST}
    - OPENPROJECT_SECRET_KEY_BASE=${SECRET_KEY}
    - OPENPROJECT_HTTPS=false
    - DATABASE_URL=postgres://openproject:${DB_PASSWORD}@db/openproject
    - RAILS_CACHE_STORE=memcache
    - OPENPROJECT_CACHE__MEMCACHE__SERVER=memcached:11211
    - OPENPROJECT_RAILS__RELATIVE__URL__ROOT=
  volumes:
    - openproject-data:/var/openproject/assets
  ports:
    - "8080:80"
  depends_on:
    - db
    - memcached
  networks:
    - openproject-network
  restart: unless-stopped
db
db:
  image: postgres:15-alpine
  container_name: openproject-db
  environment:
    - POSTGRES_USER=openproject
    - POSTGRES_PASSWORD=${DB_PASSWORD}
    - POSTGRES_DB=openproject
  volumes:
    - postgres-data:/var/lib/postgresql/data
  networks:
    - openproject-network
  restart: unless-stopped
memcached
memcached:
  image: memcached:alpine
  container_name: openproject-memcached
  networks:
    - openproject-network
  restart: unless-stopped

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 openproject:
5 image: openproject/openproject:14
6 container_name: openproject
7 environment:
8 - OPENPROJECT_HOST__NAME=${OPENPROJECT_HOST}
9 - OPENPROJECT_SECRET_KEY_BASE=${SECRET_KEY}
10 - OPENPROJECT_HTTPS=false
11 - DATABASE_URL=postgres://openproject:${DB_PASSWORD}@db/openproject
12 - RAILS_CACHE_STORE=memcache
13 - OPENPROJECT_CACHE__MEMCACHE__SERVER=memcached:11211
14 - OPENPROJECT_RAILS__RELATIVE__URL__ROOT=
15 volumes:
16 - openproject-data:/var/openproject/assets
17 ports:
18 - "8080:80"
19 depends_on:
20 - db
21 - memcached
22 networks:
23 - openproject-network
24 restart: unless-stopped
25
26 db:
27 image: postgres:15-alpine
28 container_name: openproject-db
29 environment:
30 - POSTGRES_USER=openproject
31 - POSTGRES_PASSWORD=${DB_PASSWORD}
32 - POSTGRES_DB=openproject
33 volumes:
34 - postgres-data:/var/lib/postgresql/data
35 networks:
36 - openproject-network
37 restart: unless-stopped
38
39 memcached:
40 image: memcached:alpine
41 container_name: openproject-memcached
42 networks:
43 - openproject-network
44 restart: unless-stopped
45
46volumes:
47 openproject-data:
48 postgres-data:
49
50networks:
51 openproject-network:
52 driver: bridge
53EOF
54
55# 2. Create the .env file
56cat > .env << 'EOF'
57# OpenProject
58OPENPROJECT_HOST=localhost:8080
59
60# Generate with: openssl rand -hex 32
61SECRET_KEY=your_secret_key_here
62DB_PASSWORD=secure_openproject_password
63EOF
64
65# 3. Start the services
66docker compose up -d
67
68# 4. View logs
69docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/openproject-pm/run | bash

Troubleshooting

  • Database connection errors on startup: Ensure PostgreSQL container is fully initialized before OpenProject starts, check DB_PASSWORD environment variable matches between services
  • Slow page loading despite Memcached: Verify memcached container is running and OpenProject can connect to port 11211, check OPENPROJECT_CACHE__MEMCACHE__SERVER configuration
  • OpenProject container fails with asset compilation errors: Clear openproject-data volume and restart container to trigger fresh asset compilation
  • Cannot access web interface: Confirm port 8080 mapping is correct and OPENPROJECT_HOST__NAME matches your access URL
  • PostgreSQL data corruption after unexpected shutdown: Stop all containers, backup postgres-data volume, restart db container and check logs for automatic recovery
  • Memory issues with large projects: Increase PostgreSQL shared_buffers and OpenProject worker processes via additional environment variables

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

Ad Space