Ship the product pass on the v0.1.3 schema with additive migrations, a replica migration lock, and bot accounts kept out of people lists.
Pargar deploy
Full deployment guide and production checklist: docs/deployment.md
Security & secrets: docs/security.md · Ops / backup: docs/operations.md
Edge: Traefik v3.7 (Compose needs Traefik ≥3.6.1 on Docker Engine 29+).
Layout
deploy/
compose/
compose.yaml # shared app + data + Traefik labels
compose.dev.yaml # laptop TLS default, DB ports on 127.0.0.1
compose.prod.yaml # Let's Encrypt, no host DB ports
traefik/dynamic/ # middlewares
helm/pargar/ # chart + values-k3s / values-prod
scripts/
compose-dev.sh compose-prod.sh k3s-load-images.sh helm-k3s.sh backup.sh
Compose — development
cp .env.example .env
./scripts/compose-dev.sh up -d --build
- App: https://localhost
- Traefik dashboard: http://127.0.0.1:8088
Compose — production
cp .env.prod.example .env.prod
./scripts/compose-prod.sh up -d --build
k3s + Helm
./scripts/k3s-load-images.sh
./scripts/helm-k3s.sh
curl -k https://pargar.local/api/health
kubectl -n pargar get secret pargar-app -o jsonpath='{.data.admin-password}' | base64 -d; echo
Values: values.yaml · values-k3s.yaml · values-prod.yaml
Lint: helm lint ./deploy/helm/pargar -f ./deploy/helm/pargar/values-k3s.yaml
Routing
| Path | Service |
|---|---|
/api/*, /media/* |
backend |
/api/certificates/*, /c/* |
backend + noindex |
| else | frontend |
WS: /api/ws via Traefik.