Development
Run Quasar locally, test it, and publish releases.
On this page
Requirements: Go and Docker.
git clone https://github.com/AymericChaverot/quasar.git
cd quasar
cp .env.example .env
docker network create traefik-net
go run ./cmd/serverThe dashboard runs on http://localhost:8080. Sign in with ADMIN_USER and ADMIN_PASSWORD from .env.
.envis loaded from the current folder. Real environment variables take precedence, andENV_FILEpoints to another file.- The database, applications and backups go to
.dev/, which is ignored by Git. COOKIE_SECURE=falseallows signing in over plain HTTP. Never use it in production.- The admin account is only created when the database has no user.
go build ./...
go test ./...# Every catalogue image still exists in its registry (network only)
CATALOG_IMAGES=1 go test ./internal/catalog/ -run TestEveryImageStillExists
# Every entry is actually deployed and probed (needs Docker, takes a while)
CATALOG_DEPLOY=1 go test ./internal/catalog/ -run TestDeploy -parallel 4 -timeout 3h
# Only some entries
CATALOG_DEPLOY=1 CATALOG_ONLY=immich,outline go test ./internal/catalog/ -run TestDeploy -v
# The example catalogues in catalogs/ are valid
go test ./internal/catalog/ -run TestExampleCatalogs# The example stations in stations/ are valid
go test ./internal/station/ -run TestShippedStations
# Their scripts load in the runtime
go test ./internal/station/runtime/ -run TestEveryShippedStation| Workflow | Runs on | Does |
|---|---|---|
ci.yml |
Every push and pull request | Build, vet, tests and Docker build. |
release.yml |
A vX.Y.Z tag |
Publishes the image to GHCR (vX.Y.Z and latest) and creates the GitHub release. |
To publish a release:
git tag v0.5.0 && git push --tagsInstalled servers see the release within 30 minutes. See updating.
To install from a fork instead of the main repository:
-
Push the fork to GitHub and publish a first release (
git tag v0.1.0 && git push --tags). -
Make the GHCR package public (package page → Package settings → Change visibility). Otherwise servers can’t pull the image, and the installer builds it locally instead, which is slower.
-
Run the installer with
QUASAR_REPOpointing at the fork:curl -sSL https://raw.githubusercontent.com/<owner>/quasar/main/setup.sh \ | sudo QUASAR_REPO=https://github.com/<owner>/quasar.git bash -
Add these lines to
/opt/quasar/.env, so the image and updates come from the fork, then rundocker compose up -din/opt/quasar:GITHUB_REPO=<owner>/quasar QUASAR_IMAGE=ghcr.io/<owner>/quasar:latest