Docker
docker compose up -d # build the image and start: http://localhost:3000, data in the tsmc-data volumeOr without compose:
docker build -t tsmc .docker run -d -p 3000:3000 -v tsmc-data:/data --name tsmc tsmcThe image (~265 MB) runs as an unprivileged user, keeps the database in /data/tsmc.db, listens on
0.0.0.0:3000 and has a HEALTHCHECK on /api/health. The CLI is in the image too, which is handy in CI:
docker run --rm -e TSMC_URL -e TSMC_TOKEN -v "$PWD:/work" -w /work tsmc \ tsmc junit upload build/test-results/*.xml -p SHOP -r "Nightly $BUILD"A live backup is docker exec tsmc tsmc-server backup (into /data/backups): the database, attachments and
the tracker token key, as a consistent snapshot without stopping the server; tsmc-server check verifies the
data, tsmc-server restore brings a copy back. HTTPS goes through a reverse proxy (ready examples for Caddy
and nginx). All of this, plus upgrades, shutdown and Prometheus metrics, is in
Operations. Render: render.yaml and Running on Render.
A team stand that rebuilds main by itself on an always-on Windows computer, open through Tailscale Funnel:
A team stand on your own computer.
Server settings are environment variables: Environment variables.