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
8080free, or another one with--port.
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 bashYour 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-passwordWith 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.comThe script's options #
| Option | Effect |
|---|---|
--domain | Serves the instance on this domain, over HTTPS. |
--email | Contact address for the certificate. |
--port | Listening port on the host, instead of 8080. |
--dir | Installation and data directory. |
--tag | Image version to deploy, instead of the most recent one. |
--admin-user, --admin-password, --admin-email | Creates the administrator account without going through the wizard. |
--no-auto-update | Does not install the daily automatic update. |
--uninstall | Removes 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 bashDocker 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 -dBacking 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 volumeUninstalling #
curl -fsSL https://raw.githubusercontent.com/kubuno/docker/main/install.sh | sudo bash -s -- --uninstallThis 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.
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.