Berikut tutorial ringkas install Plane dan OpenProject di Docker VM on-premise. Rekomendasi minimal VM: 4 CPU, 8 GB RAM, 80–100 GB disk untuk production kecil. Plane butuh minimal 2 CPU dan 4 GB RAM, 8 GB direkomendasikan. OpenProject merekomendasikan instalasi Docker Compose untuk setup Docker yang rapi.





1. Install Docker di VM Ubuntu

sudo apt update
sudo apt install -y ca-certificates curl gnupg git nginx certbot python3-certbot-nginx

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

docker --version
docker compose version

A. Install OpenProject Docker Compose

1. Buat folder

sudo mkdir -p /opt/openproject
sudo chown -R $USER:$USER /opt/openproject
cd /opt/openproject

2. Buat docker-compose.yml

services:
openproject:
image: openproject/openproject:16
container_name: openproject
restart: unless-stopped
ports:
- "8080:80"
environment:
OPENPROJECT_HOST__NAME: project.domainkamu.com
OPENPROJECT_HTTPS: "true"
OPENPROJECT_SECRET_KEY_BASE: "ganti_dengan_secret_panjang"
OPENPROJECT_ATTACHMENTS__STORAGE__PATH: /var/openproject/assets/files
volumes:
- openproject_pgdata:/var/openproject/pgdata
- openproject_assets:/var/openproject/assets

volumes:
openproject_pgdata:
openproject_assets:

Generate secret:

openssl rand -hex 64

Masukkan hasilnya ke OPENPROJECT_SECRET_KEY_BASE.

3. Jalankan

docker compose up -d
docker logs -f openproject

Akses lokal:

http://IP_VM:8080

Default login biasanya:

user: admin
password: admin

Setelah login, langsung ganti password.


B. Install Plane Docker

1. Buat folder

sudo mkdir -p /opt/plane
sudo chown -R $USER:$USER /opt/plane
cd /opt/plane

2. Clone Plane

git clone --depth 1 https://github.com/makeplane/plane.git .

3. Jalankan setup

./setup.sh

Biasanya nanti Plane akan membuat file environment dan compose. Isi domain misalnya:

plane.domainkamu.com

Lalu jalankan:

docker compose up -d

Cek container:

docker ps

Cek log:

docker compose logs -f

Plane self-hosted memang disediakan untuk deployment Docker/self-hosting oleh dokumentasi resminya.


C. Reverse Proxy Nginx

OpenProject

sudo nano /etc/nginx/sites-available/openproject

Isi:

server {
server_name project.domainkamu.com;

client_max_body_size 100M;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;

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 https;
}
}

Aktifkan:

sudo ln -s /etc/nginx/sites-available/openproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

SSL:

sudo certbot --nginx -d project.domainkamu.com

Plane

Misal Plane jalan di port 3000, buat config:

sudo nano /etc/nginx/sites-available/plane
server {
server_name plane.domainkamu.com;

client_max_body_size 100M;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

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 https;
}
}

Aktifkan:

sudo ln -s /etc/nginx/sites-available/plane /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d plane.domainkamu.com

D. Perintah penting maintenance

docker ps
docker compose logs -f
docker compose down
docker compose up -d
docker system df

Backup volume OpenProject:

docker run --rm \
-v openproject_pgdata:/pgdata \
-v openproject_assets:/assets \
-v $(pwd):/backup \
alpine tar czf /backup/openproject-backup.tar.gz /pgdata /assets

Kesimpulan:
OpenProject lebih matang untuk project management enterprise/on-premise.
Plane lebih modern, ringan, mirip Linear/Jira modern, cocok untuk dev team.