Docker Images
Every push to main, and every version tag (vX.Y.Z), builds and publishes a Docker image to both Docker Hub and GitHub Container Registry (GHCR) — you're never locked into pulling from one specific registry.
Pull it
# Docker Hub
docker pull websvcin/loginlink:latest
# GHCR
docker pull ghcr.io/websvcin/loginlink:latest
Available tags on both registries:
| Tag | What it points to |
|---|---|
latest | The most recent build on main |
1.0 (current minor series) | The most recent build in that minor series |
v1.0.57 (exact version) | An exact, immutable build — see the Changelog or the GitHub Releases page for what's in each one |
Pin to an exact vX.Y.Z tag for anything you'd call production; latest moves under you on every push to main.
Run it
docker run -d \
-p 5000:5000 -p 5443:5443 \
-v $(pwd)/App_Data:/app/App_Data \
--name loginlink \
websvcin/loginlink:latest
- Port
5000is HTTP,5443is HTTPS. /app/App_Datais wherebootstrap.dband every SQLite database live (the control plane'splatform.dband each organization'stenant_<id>.db) — mount it to a persistent volume or your data resets on every container recreation. See Where Your Data Lives if you'll use MySQL/PostgreSQL for any part of it.- The image exposes
/healthzfor liveness checks (already wired into the container's ownHEALTHCHECK).
Then open http://localhost:5000 — a fresh install redirects to a short setup wizard where you choose your database and create your own administrator. See First-Run Setup.
For a multi-service setup (or if you'd rather declare this once instead of a long docker run), see the docker-compose Quickstart.
Other ways to get it
- docker-compose Quickstart — a single
docker-compose.ymlfor local evaluation or small-scale hosting. - Run from a GitHub Release — download the published build directly and run it with the .NET runtime, no Docker required.