Skip to main content

Debian & Ubuntu

danger

This version is not production ready and may result in data loss

Use at your own risk

No Backup – No Mercy!

System requirements

  • Debian 11 or Ubuntu 22.04
  • PostgreSQL
  • Nodejs

PostgreSQL

Installing PostgreSQL

To install PostgreSQL, first refresh your server’s local package index:

sudo apt update

Then, install the Postgres package along with a -contrib package that adds some additional utilities and functionality:

sudo apt install postgresql postgresql-contrib -y

If you are prompted to restart any services, press ENTER to accept the defaults and continue.

Creating User and Database

You need to create a User and a Database for Planka

Create the user

sudo -u postgres createuser --interactive

The script will prompt you with some choices and, based on your responses, execute the correct Postgres commands to create a user to your specifications.

Output
Enter name of role to add: planka
Shall the new role be a superuser? (y/n) y

Create the Database

Change directory to prevent a sudo permission error

cd /tmp

Now create the database, you are not getting any response from this command.

sudo -u postgres createdb planka
Create a Unix User and test Database acceess and change the password

We need this user later to run planka as non-root user too

sudo adduser planka

Login to the Database as user Planka

sudo -u planka psql

Change the database password

ALTER USER planka PASSWORD 'YOUR_DATABASE_PASSWORD';

Cloese the database with

\q

Nodejs

Installing Node.js with Apt Using a NodeSource PPA

# Download and import the Nodesource GPG key
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
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

# Create deb repository
NODE_MAJOR=18
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

Then run update and install

sudo apt-get update
sudo apt-get install nodejs -y

Verify that you’ve installed the new version by running node with the -v version flag:

node -v
Output
v18.X.X

Install Planka

First we have to prepare some stuff our installation directory is /vaw/www/planka

sudo mkdir -p /var/www/planka
sudo chown -R planka:planka /var/www/planka

Now we can work as user Planka

sudo -i -u planka

Clone the repository into the directory.

git clone https://github.com/plankanban/planka.git /var/www/planka

Install dependencies for client and build it.

cd /var/www/planka
npm install

cd client
npm run build

Symlink Fun Normaly we have to copy everything from client/build to server/public and client/build/index.html to server/views/index.ejs, we don't want to go this way. instead we are using symlinks, this makes updating way easier and faster.

ln -s /var/www/planka/client/build/asset-manifest.json /var/www/planka/server/public/asset-manifest.json
ln -s /var/www/planka/client/build/favicon.ico /var/www/planka/server/public/favicon.ico
ln -s /var/www/planka/client/build/logo192.png /var/www/planka/server/public/logo192.png
ln -s /var/www/planka/client/build/logo512.png /var/www/planka/server/public/logo512.png
ln -s /var/www/planka/client/build/manifest.json /var/www/planka/server/public/manifest.json
ln -s /var/www/planka/client/build/robots.txt /var/www/planka/server/public/robots.txt
ln -s /var/www/planka/client/build/static /var/www/planka/server/public/static
ln -s /var/www/planka/client/build/index.html /var/www/planka/server/views/index.ejs

Configure environment variables.

Go into the server directory and edit the .env file

First we have to copy the .env.sample file

cd /var/www/planka/server
cp .env.sample .env

Before we open the .env file, we need a screct_key you can generate one using the openssl command

openssl rand -hex 64

Note the output down

Edit .env file

nano .env

Your .env file should look like this

## Required
BASE_URL=http://YOUR_DOMAIN_NAME:YOUR_PORT
DATABASE_URL=postgresql://planka:YOUR_DATABASE_PASSWORD@localhost/planka
SECRET_KEY=YOUR_GENERATED_KEY

## Optional

# TRUST_PROXY=0
# TOKEN_EXPIRES_IN=365 # In days

# related: https://github.com/knex/knex/issues/2354
# As knex does not pass query parameters from the connection string we
# have to use environment variables in order to pass the desired values, e.g.
# PGSSLMODE=<value>

# Configure knex to accept SSL certificates
# KNEX_REJECT_UNAUTHORIZED_SSL_CERTIFICATE=false

DEFAULT_ADMIN_EMAIL=YOUR_ADMIN_EMAIL # Do not remove if you want to prevent this user from being edited/deleted
DEFAULT_ADMIN_PASSWORD=YOUR_ADMIN_PASSWORD
DEFAULT_ADMIN_NAME=YOUR_ADMIN_NAME
DEFAULT_ADMIN_USERNAME=YOUR_ADMIN_USERNAME

# OIDC_ISSUER=
# OIDC_CLIENT_ID=
# OIDC_CLIENT_SECRET=
# OIDC_SCOPES=openid email profile
# OIDC_ADMIN_ROLES=admin
# OIDC_ROLES_ATTRIBUTE=groups
# OIDC_IGNORE_ROLES=true

## Do not edit this

TZ=UTC

Start Planka the first Time

in the /var/www/planka/server directory just type

npm run db:init && npm start --prod

Now you can browse to http://YOUR_DOMAIN_NAME:YOUR_PORT and login as YOUR_ADMIN_EMAIL with password YOUR_ADMIN_PASSWORD