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.

images

images

✅ 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