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.
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.
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.
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.
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.