Debian & Ubuntu
We strongly recommend using the Docker-based installation for PLANKA.
The manual installation requires additional security configurations and a deep understanding of your environment. For example, to prevent SSRF and accidental access to internal services, you would need to properly configure an outgoing HTTP proxy.
The Docker version comes with a pre-installed outgoing proxy, which can be easily configured using Docker-only environment variables (OUTGOING_BLOCKED_IPS, OUTGOING_BLOCKED_HOSTS, OUTGOING_ALLOWED_IPS, OUTGOING_ALLOWED_HOSTS) to safely restrict outbound traffic.
System Requirements
- Debian 11 or Ubuntu 22.04
- PostgreSQL
- Node.js
- Python
PostgreSQL
Installing PostgreSQL
Refresh your local package index:
sudo apt update
Install PostgreSQL and additional utilities:
sudo apt install postgresql postgresql-contrib -y
If prompted to restart any services, press ENTER to accept the defaults.
Create a PostgreSQL User and Database for PLANKA
Create a PostgreSQL user:
sudo -u postgres createuser --interactive
Sample output:
Enter name of role to add: planka
Shall the new role be a superuser? (y/n) y
Create the database:
To avoid sudo permission issues:
cd /tmp
Then run:
sudo -u postgres createdb planka
Create a Unix User and Set the Database Password
Create a Unix user named planka:
sudo adduser planka
Login to PostgreSQL as the planka user:
sudo -u planka psql
Change the password:
ALTER USER planka PASSWORD 'YOUR_DATABASE_PASSWORD';
Exit the PostgreSQL prompt:
\q
Node.js
Install Node.js using the NodeSource PPA:
# Update packages and install dependencies
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
# Add NodeSource GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
# Add the Node.js repository
NODE_MAJOR=22
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
# Install Node.js
sudo apt-get update
sudo apt-get install nodejs -y
Verify installation:
node -v
# Output: v22.x.x
Install PLANKA
Install required packages:
sudo apt install unzip build-essential python3-venv -y
Create the installation directory and set ownership:
sudo mkdir -p /var/www/planka/
sudo chown -R planka:planka /var/www/planka/
cd /var/www/planka
Switch to the planka user:
sudo -i -u planka
Download and extract the prebuilt version of PLANKA:
curl -fsSL -O https://github.com/plankanban/planka/releases/latest/download/planka-prebuild.zip
unzip planka-prebuild.zip -d /var/www/
rm planka-prebuild.zip
Install dependencies:
cd /var/www/planka
npm install
Configure Environment Variables
Copy the sample .env file:
cp .env.sample .env
Generate a secret key:
openssl rand -hex 64
Note the output - you'll need it for the
.envfile.
Edit the .env file:
nano .env
Example .env configuration:
## Required
BASE_URL=http://YOUR_DOMAIN_NAME:YOUR_PORT
DATABASE_URL=postgresql://planka:YOUR_DATABASE_PASSWORD@localhost/planka
SECRET_KEY=YOUR_GENERATED_KEY
## Optional
...
Security note: For manual installations, you need to configure your own
OUTGOING_PROXYor implement firewall rules to restrict outbound traffic and prevent access to internal services.
Initialize the Database and Create an Admin User
Initialize the database:
npm run db:init
Create an admin user:
npm run db:create-admin-user
Sample output:
Email: YOUR_ADMIN_EMAIL
Password: YOUR_ADMIN_PASSWORD
Name: ...
Username (optional): ...
Start PLANKA
From the /var/www/planka/ directory, start PLANKA:
npm start --prod
Access PLANKA
Once the services are running, browse to http://YOUR_DOMAIN_NAME:YOUR_PORT and log in as YOUR_ADMIN_EMAIL with the password YOUR_ADMIN_PASSWORD.