How to Install Planka with Docker on Rocky Linux 10
Planka is a modern, self-hosted project management tool similar to Trello. This guide will help you deploy Planka using Docker and Docker Compose on Rocky Linux 10.
Update the System
Update your system packages to the latest available versions to ensure compatibility and security.
dnf update -y
Install Docker
Add Docker’s official repository
This adds Docker’s package source, required to install the latest Docker version.
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Install Docker engine and components
Installs Docker along with essential CLI tools and plugins.
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Enable and start the Docker service
This ensures Docker starts now and automatically on boot.
systemctl enable --now docker
Install Docker Compose
Get the latest version tag from GitHub
Retrieves the latest release version of Docker Compose.
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)
Downloads the Docker Compose binary matching your OS and architecture.
curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Grants execute permission to the downloaded binary.
chmod +x /usr/local/bin/docker-compose
Checks that Docker Compose is installed correctly and shows the version.
docker-compose --version
Output:
[root@vps ~]# docker-compose --version
Docker Compose version v2.37.1
[root@vps ~]#
Generate a Secure Secret Key
Required to generate cryptographically secure random strings.
dnf install -y openssl
Generate a 64-character hex key
You will use this key as Planka’s SECRET_KEY
to secure session data.
openssl rand -hex 64
It'll print the key note that.
Set Up Project Directory
Create and enter the Planka directory
This is where all Planka configuration and data will reside.
mkdir -p /opt/planka && cd /opt/planka
This file defines Planka’s services including the web app and database.
curl -L https://raw.githubusercontent.com/plankanban/planka/master/docker-compose.yml -o docker-compose.yml
Open the file in a text editor
Modify configuration values as needed.
nano docker-compose.yml
Update the following fields:
-
BASE_URL=http://your-server-ip:3000 → Replace with your actual domain or IP.
- SECRET_KEY= → Paste your generated secure key here.
The default volumes ensure data persists (avatars, backgrounds, attachments, database).
Create an Admin User
Run the admin user creation script This allows you to define the initial admin credentials to log into Planka.
docker compose run --rm planka npm run db:create-admin-user
You’ll be prompted to enter:
-
Email
-
Password
-
Name
- (Optional) Username
Output:
[root@vps planka]# docker compose run --rm planka npm run db:create-admin-user
[+] Creating 1/1
✔ Container planka-postgres-1 Running 0.0s
> db:create-admin-user
> node db/create-admin-user.js
Email: admin@admin.com
Password: ********
Name: admin
Username (optional): admin
[root@vps planka]#
Launch the containers in detached mode
Starts Planka and PostgreSQL in the background.
docker compose up -d
Output:
[root@vps planka]# docker-compose up -d
[+] Running 24/24
✔ planka Pulled 25.1s
✔ f18232174bc9 Pull complete 0.9s
✔ dd71dde834b5 Pull complete 6.4s
✔ 1e5a4c89cee5 Pull complete 6.5s
✔ 25ff2da83641 Pull complete 6.6s
✔ 24412be3766c Pull complete 10.8s
✔ ef0605bb0394 Pull complete 10.8s
✔ d47529112c02 Pull complete 11.1s
✔ fbd1cf496e9a Pull complete 12.8s
✔ 95d2bcc9d6a6 Pull complete 23.3s
✔ 39e5da25609a Pull complete 23.7s
✔ eaf17b55e058 Pull complete 23.7s
✔ postgres Pulled 15.3s
✔ fe07684b16b8 Pull complete 2.7s
✔ dc0894634161 Pull complete 2.8s
✔ b2c2e77c01f8 Pull complete 2.9s
✔ 566700a5ef5b Pull complete 2.9s
✔ 6a8b2516865a Pull complete 3.0s
✔ 9808eed8d51a Pull complete 13.8s
✔ c6f99ba99948 Pull complete 13.8s
✔ 0e3293a8957f Pull complete 13.9s
✔ d259b0545f3a Pull complete 13.9s
✔ bef088cae706 Pull complete 13.9s
✔ 4dff379ecd5a Pull complete 14.0s
[+] Running 8/8
✔ Network planka_default Created 0.2s
✔ Volume "planka_user-avatars" Created 0.0s
✔ Volume "planka_background-images" Created 0.0s
✔ Volume "planka_attachments" Created 0.0s
✔ Volume "planka_db-data" Created 0.0s
✔ Volume "planka_favicons" Created 0.0s
✔ Container planka-postgres-1 Healthy 11.7s
✔ Container planka-planka-1 Started
Verify Planka and PostgreSQL are running
Lists all active containers so you can confirm both services are up.
docker ps
Output:
[root@vps ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d66d7ec93444 ghcr.io/plankanban/planka:2.0.0-rc.3 "docker-entrypoint.s…" 25 minutes ago Up 25 minutes (healthy) 0.0.0.0:3000->1337/tcp, [::]:3000->1337/tcp planka-planka-1
424726ead1f6 postgres:16-alpine "docker-entrypoint.s…" 25 minutes ago Up 25 minutes (healthy) 5432/tcp planka-postgres-1
[root@vps ~]#
Access the Web Interface
Open Planka in your browser
Navigate to the login page using your server's IP or domain:
http://your-server-ip:3000
Note: Replace
your-server-ip
with actual IP Address
Login using the admin credentials you created earlier.
✅ Done!
You now have Planka running securely on Rocky Linux 10 with persistent volumes and a custom admin account.
CrownCloud - Get a SSD powered KVM VPS at $4.5/month!
Use the code WELCOME
for 10% off!
1 GB RAM / 25 GB SSD / 1 CPU Core / 1 TB Bandwidth per month
Available Locations: LAX | MIA | ATL | FRA | AMS