How to install Wiki.js on Ubuntu 22.04

This guide is a fully detailed guide to install everything necessary to run Wiki.js on a brand new Ubuntu 18.04 / 20.04 / 22.04 LTS machine.

What's Included

At the end of the guide, you'll have a fully working Wiki.js instance with the following components:

  • Docker
  • PostgreSQL 11 (dockerized)
  • Wiki.js 2.x (dockerized, accessible via port 80)
  • Wiki.js Update Companion (dockerized)
  • OpenSSH with UFW Firewall preconfigured for SSH, HTTP and HTTPS

Update Ubuntu

sudo apt -qqy update

sudo DEBIAN_FRONTEND=noninteractive apt-get -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade

Install Docker

sudo apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings

curl -fsSL | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt -qqy update sudo apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install docker-ce docker-ce-cli docker-compose-plugin

Setup Containers

sudo mkdir -p /etc/wiki

sudo openssl rand -base64 32 > /etc/wiki/.db-secret

Note if you get a permissions error on the above break it into two commands copy the output from the first and paste it into the file like:

sudo openssl rand -base64 32

sudo vi /etc/wiki/.db-secret

sudo docker network create wikinet
sudo docker volume create pgdata

Create the Containers

sudo docker create --name=db -e POSTGRES_DB=wiki -e POSTGRES_USER=wiki -e POSTGRES_PASSWORD_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -v pgdata:/var/lib/postgresql/data --restart=unless-stopped -h db --network=wikinet postgres:11

sudo docker create --name=wiki -e DB_TYPE=postgres -e DB_HOST=db -e DB_PORT=5432 -e DB_PASS_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -e DB_USER=wiki -e DB_NAME=wiki -e UPGRADE_COMPANION=1 --restart=unless-stopped -h wiki --network=wikinet -p 80:3000 -p 443:3443

sudo docker create --name=wiki-update-companion -v /var/run/docker.sock:/var/run/docker.sock:ro --restart=unless-stopped -h wiki-update-companion --network=wikinet

Setup Firewall

sudo ufw allow ssh

sudo ufw allow http

sudo ufw allow https

sudo ufw --force enable

Start the containers

sudo docker start db

sudo docker start wiki

sudo docker start wiki-update-companion

To see the containers filesystem

ls /proc/xxx/root 

where xxxx is the process id for docker