Installation
STJÓRNA runs as two services — a PocketBase backend and a SolidJS frontend — in front of either Docker Compose or Kubernetes.
Docker Compose
Section titled “Docker Compose”The repository ships a docker-compose.yml that builds and runs both services locally:
cp .env.example .env# set PB_SECRET (32 ASCII chars) and PB_SUPERUSER_EMAIL / PB_SUPERUSER_PASSWORDdocker compose up -d- The frontend listens on http://localhost:3000.
- PocketBase is bound to
127.0.0.1:8090(its admin UI is at http://127.0.0.1:8090/_/). - Data lives in the named volume
pb_dataand survivesdocker compose down(docker compose down -vdeletes it).
Helm (Kubernetes)
Section titled “Helm (Kubernetes)”The chart provisions the PocketBase backend, the SolidJS frontend, an optional self-hosted S3 (Garage) dependency, and a TLS-terminating ingress.
Prerequisites
Section titled “Prerequisites”- Kubernetes >= 1.20
- Helm 3 (tested with Helm 4; works with 3.x)
- An ingress controller (tested with Traefik)
- cert-manager (tested with a
letsencryptClusterIssuer) - A storage class for the PocketBase PVC (default:
longhorn)
Add the repository
Section titled “Add the repository”helm repo add stjorna https://secanis.github.io/stjornahelm repo updateInstall
Section titled “Install”helm install stjorna stjorna/stjorna \ --set ingress.hosts[0].host=stjorna.yourdomain.comUse a values file for production:
ingress: hosts: - host: stjorna.yourdomain.com paths: - path: / pathType: Prefix tls: - hosts: - stjorna.yourdomain.com secretName: stjorna-tls
pocketbase: persistence: size: 20Gihelm install stjorna stjorna/stjorna -f my-prod-values.yaml -n stjornaThe helm install output prints the kubectl get secret commands to read the generated superuser
credentials.
First run
Section titled “First run”The chart creates the first superuser headlessly on the first pod start (a Secret is mounted as
PB_SUPERUSER_EMAIL / PB_SUPERUSER_PASSWORD). Open https://<your-host>/setup and sign in with
those credentials to walk through storage, tenant and admin-link steps.
Upgrade
Section titled “Upgrade”helm upgrade stjorna stjorna/stjorna -f my-prod-values.yaml -n stjornaUpgrades are data-safe: the Namespace, the PocketBase PVC and the PB_SECRET Secret carry
helm.sh/resource-policy: keep, so helm upgrade and helm uninstall leave them in place.
Uninstall
Section titled “Uninstall”helm uninstall stjorna -n stjornahelm uninstall does not delete the Namespace, the PVC or the PB_SECRET Secret. Reclaim
storage manually with kubectl delete namespace / kubectl delete pvc when you are sure.
