Docker

An all-in-one image — the core and twenty-one modules — deployed together with its database. This is the shortest route: one command, and nothing to prepare on the host machine.

Requirements #

  • An x86-64 Linux server — the published image does not exist for ARM.
  • Docker: the script installs it itself if it is missing.
  • Port 8080 free, or another one with --port.
Note

PostgreSQL is not inside the Kubuno image: the deployment starts two containers, one for Kubuno and one for PostgreSQL 16. You still have nothing to install or configure.

Installation #

curl -fsSL https://raw.githubusercontent.com/kubuno/docker/main/install.sh | sudo bash

Your instance then answers at http://<server-ip>:8080.

The first administrator's password #

There is no default password. Two cases:

  • you pass --admin-password: the password is yours;
  • you pass none: the server draws one at random, drops it in a file only it can read, and requires it to be changed at first sign-in.
sudo /opt/kubuno/compose.sh exec kubuno cat /var/lib/kubuno/initial-admin-password

With a domain name and HTTPS #

The certificate is obtained and renewed on its own. Open ports 80 and 443, and point DNS at the server before running the command.

curl -fsSL https://raw.githubusercontent.com/kubuno/docker/main/install.sh \
  | sudo bash -s -- --domain cloud.exemple.com --email vous@exemple.com

The script's options #

OptionEffect
--domainServes the instance on this domain, over HTTPS.
--emailContact address for the certificate.
--portListening port on the host, instead of 8080.
--dirInstallation and data directory.
--tagImage version to deploy, instead of the most recent one.
--admin-user, --admin-password, --admin-emailCreates the administrator account without going through the wizard.
--no-auto-updateDoes not install the daily automatic update.
--uninstallRemoves the installation.

Updating #

By default the script installs a daily automatic update (a cron job, at 4.30 am). To update straight away, run exactly the same command again: the image is downloaded afresh and the container restarted. Your data, your secrets and your configuration are preserved.

curl -fsSL https://raw.githubusercontent.com/kubuno/docker/main/install.sh | sudo bash

Docker Compose #

If you would rather drive things yourself, the same image can be deployed with Compose — including on macOS and Windows through Docker Desktop.

git clone https://github.com/kubuno/docker && cd docker
cp .env.docker.example .env   # fill in the secrets
docker compose -f docker-compose.yml -f docker-compose.prod.yml pull
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

Backing up #

Two things to take with you: the database and the data volume (users' files, module data, themes).

sudo /opt/kubuno/compose.sh exec db pg_dump -U kubuno kubuno > kubuno.sql
# then a copy of the kubuno-data Docker volume

Uninstalling #

curl -fsSL https://raw.githubusercontent.com/kubuno/docker/main/install.sh | sudo bash -s -- --uninstall
Warning

This command erases your data as well: containers, images, volumes — so the database and the files — and the installation directory along with its secrets. It asks for no confirmation. Back up first.

Modules

The twenty-one modules are already in the image: there is nothing more to install, and the administration console is not used to add any here. A different selection is decided when the image is built — see the repository kubuno/docker.