Tagaris on Proxmox

Proxmox runs virtual machines and containers, not Docker images directly, so Tagaris goes in a guest that runs Docker. From there it is the standard install.

The shape of it

Create a Debian or Ubuntu VM or LXC on the Proxmox host, install Docker and the Docker Compose plugin inside it, and then follow the standard install: the app container plus a PostgreSQL 16 container, brought up together with Docker Compose, with three named volumes for the database, photos and uploads. There are no Proxmox-specific steps in Tagaris and nothing to configure on the host itself.

Size the guest with about 1 GB of memory for Tagaris and a little disk. More assets, photos and attachments mainly cost disk, so the memory footprint stays put as the register grows. If you would rather keep the database on a PostgreSQL server you already run elsewhere, the dedicated-database guide runs the app container alone.

Install

Inside the guest, once Docker is running.

1

Fetch the files

Save the example compose file and environment file from the public deploy repository into a directory of their own. Compose derives the volume names from the directory name, so pick one and stay with it.

2

Edit .env

Set a database password in letters and digits only, generate the auth secret with openssl rand -base64 32, and set the public URL to the address people will reach the guest on, not localhost.

3

Start it

docker compose up -d. The app waits for the database, applies migrations and listens on port 3000. The first visit in a browser opens the setup wizard, which creates your organisation and the owner account.

mkdir tagaris && cd tagaris
curl -o docker-compose.yml https://raw.githubusercontent.com/goodhall-solutions-ltd/tagaris/main/example-docker-compose.yml
curl -o .env https://raw.githubusercontent.com/goodhall-solutions-ltd/tagaris/main/example.env
# edit .env: database password, auth secret, public URL
docker compose up -d

The full walkthrough, the environment reference and troubleshooting are in the standard install guide.

Reverse proxy and HTTPS

The container serves plain HTTP on port 3000. That is fine for a first look on a private network. For anything beyond that, put Tagaris behind a reverse proxy that terminates TLS (Caddy, nginx or Cloudflare), whether that proxy lives in the same guest, another guest, or elsewhere on the network, and set BETTER_AUTH_URL to the https:// address. Session cookies and sign-in depend on it, and it is also the base for printed QR labels and invite links.

Environment variables are read when the container starts, so after changing .env run docker compose up -d again. If you also want to reach the instance by its IP address on the LAN, add that origin to BETTER_AUTH_TRUSTED_ORIGINS rather than changing the main URL.

Backups

The built-in backups

Tagaris backs itself up from Application settings: a database dump plus, optionally, the photos and attachments, in one archive, daily or weekly, with retention and optional passphrase encryption. Restore is built in behind a typed confirmation, and a backup uploaded to a fresh install restores there too, which is how you move to a new guest.

Whole-guest backups

Backing up the VM or container as a whole from the host is a good second line, but keep the Tagaris backups as well. They are the copy the restore screen accepts, and an offsite copy to S3-compatible storage survives the host. Both are covered in Backups and restore.

Upgrading

Pin a major version tag such as goodhallsolutions/tagaris:2 rather than tracking latest. To upgrade, take a backup, then docker compose pull and docker compose up -d. Migrations apply at start and the volumes carry straight across. The upgrading guide covers rollback and PostgreSQL major upgrades. The self-hosting page has the wider picture, including what the free tier includes.

Try it before you build the guest

The live demo runs the current release in your browser. When you are ready, the install inside the guest is three commands.