Tagaris with Portainer

Portainer deploys a compose file as a stack. Paste the documented file, supply the variables it reads, and the first visit opens the setup wizard.

The compose file as a stack

Tagaris is the standard two-container stack: the app and a PostgreSQL 16 container, with three volumes for the database, photos and uploads. The compose file in the standard install guide (also in the public deploy files repository) is complete. Paste it into a new stack as it is.

On a normal Docker host the file reads its settings from a .env file alongside it. In a stack there is no such file, so supply the same values as the stack's environment variables. Everything else in the file has a working default.

  • POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB: the database credentials. Letters and digits only in the password
  • DATABASE_URL: the connection string, with the same password spliced in, pointing at the postgres service
  • BETTER_AUTH_SECRET: a strong random value, generated with openssl rand -base64 32
  • BETTER_AUTH_URL: the public address people reach the app on, not localhost

The password rule matters: it is spliced into DATABASE_URL, and characters such as :, @ or / break the URL. The symptom is a database connection error at start.

First run

1

Deploy the stack

Portainer pulls the two images and starts the containers. The app waits for the database healthcheck, applies any pending migrations, then listens on port 3000. Allow a minute or two the first time.

2

Open the setup wizard

Visit http://your-host:3000. The first visit creates your organisation and the first administrator account. That account owns the install and is the break-glass login, so give it a strong password and store it safely.

3

Put it behind HTTPS

For anything beyond a first look on a private network, serve Tagaris through a reverse proxy that terminates TLS and set BETTER_AUTH_URL to the https:// address. Session cookies and sign-in depend on it.

Upgrading

An upgrade is a newer image and the same volumes and variables: pull the image and redeploy the stack, and the app applies migrations itself on start. Back up first from Application settings; a backup makes a rollback trivial. Pin a major version tag such as goodhallsolutions/tagaris:2 in the stack rather than tracking latest, which will cross a major version on its own. Tags, rollback and PostgreSQL major upgrades are in the upgrading guide.

One container instead

If you would rather run a single container, the self-contained image goodhallsolutions/tagaris-bundled has PostgreSQL built in and needs only the auth secret, the public URL and two volumes. The self-contained guide covers it, and the self-hosting page compares the three ways to run Tagaris.

Try it before you deploy it

The live demo runs the current release in your browser. When you are ready, the stack is one file and four variables.