Installation¶
Targetlog is a single Go binary with the web app embedded, shipped as a container image. PostgreSQL is the only dependency.
Requirements¶
- PostgreSQL 18 (any 15+ should work), one database per installation.
- The container image
registry.berg-systems.ch/targetlog/server(distroless, runs as a non-root user, read-only root filesystem works). - A reverse proxy or ingress for HTTPS that passes WebSocket upgrades (Traefik does by default).
Running the container¶
docker run -d --name targetlog -p 8080:8080 \
-e DATABASE_URL='postgres://targetlog:secret@db:5432/targetlog?sslmode=require' \
-e TARGETLOG_ADMIN_TOKEN="$(openssl rand -base64 32)" \
-e TARGETLOG_TRUST_PROXY=true \
registry.berg-systems.ch/targetlog/server:latest
- Port 8080 serves the app, the API and the admin panel; port 9090 serves Prometheus metrics (see Operations).
- The database schema is migrated at startup. Several replicas may start at the same time; an advisory lock makes them wait for each other.
- All configuration comes from environment variables, see Configuration.
Image tags: the short commit SHA of every build, bleeding_edge for the latest master build and latest for the latest release. Pin a release tag in production.
Health checks¶
| Path | Meaning |
|---|---|
/healthz |
the process is up (liveness) |
/readyz |
the database answers within two seconds (readiness) |
First steps¶
- Open
/adminand log in withTARGETLOG_ADMIN_TOKEN. - Create a club and a user, and make the user admin of the club (see Admin panel).
- The user logs in to the app and continues with Your first event.
For Kubernetes, use the Helm chart, see Kubernetes.