Skip to content

Self-hosting Toppo ​

Toppo ships as one Docker image (ghcr.io/kevinbrt/toppo, amd64 and arm64) that needs PostgreSQL 16 or newer. The provided compose file runs both: on a server with Docker, Toppo is up in a few minutes.

sh
mkdir -m 700 toppo && cd toppo
curl -fsSLO https://raw.githubusercontent.com/KevinBrt/toppo/main/docker/docker-compose.yml
echo "POSTGRES_PASSWORD=$(openssl rand -hex 32)" > .env && chmod 600 .env
docker compose up -d
docker compose logs toppo | grep "setup code"

Open http://localhost:3000, enter the setup code from the logs and create the administrator account. The pages below take it from there, in the order you will need them.

PageWhat it covers
InstallWhat the server needs, the install, the version to run, what the container allows
First runThe setup code, the first administrator, inviting the team, adjusting roles
ConfigurationEvery TOPPO_* variable, secrets in files, attachments, an existing PostgreSQL
EmailInvitations, password resets and notifications through your mail server
HTTPS behind a reverse proxyCaddy, nginx, the client's address, health checks
Backups and upgradesBacking up, restoring, upgrading, knowing a new version is out
TroubleshootingWhat to do when something does not work