Desplegament

Components

  • svitrio-api — l'API principal en Go (:8080): /admin/*, /auth/*, contingut públic, sitemap, /healthz. Un binari estàtic distroless (SQLite pur en Go).

  • svitrio-portal-api — una API aïllada de portal de client (:8081, /portal/*). Un procés separat a propòsit: les rutes d'operador mai es munten, així que un principal de client no hi pot arribar. Comparteix la mateixa BD.

  • SPA d'administració — la consola d'operador en SvelteKit, compilada estàtica i servida per nginx, apuntada a l'API mitjançant VITE_SVITRIO_API en temps de compilació.

  • base de dades — SQLite per defecte (un fitxer en un volum); Turso integrat; Postgres/Neon mitjançant una compilació amb plugin.

Nota de compilació: l'API depèn d'un repo germà gate-go/, així que el context de compilació de Docker és el directori pare que conté tant svitrio/ com gate-go/.

cd /path/to/repos    # holds svitrio/ and gate-go/
docker build -f svitrio/deploy/Dockerfile.api -t <registry>/svitrio-api .

Bare-metal

cd api && go build -o bin/svitrio-api ./cmd/svitrio-api
cd ../admin && pnpm install && pnpm build   # pnpm, not npm

export SVITRIO_JWT_SECRET=$(openssl rand -hex 32)
export SVITRIO_SECRETS_KEY=$(openssl rand -base64 32)
export SVITRIO_DB=/var/lib/svitrio/svitrio.db
./bin/svitrio-api                 # migrations run automatically on boot

Serveix la SPA d'administració i l'API darrere d'un proxy invers en hosts separats (admin. i api.).

Kubernetes

Aplica deploy/k8s/* en ordre: namespace → secret (creat imperativament, mai a partir de placeholders) → config/PVC/deployments/ingress. TLS mitjançant cert-manager (un ClusterIssuer letsencrypt; DNS-01 per a un comodí). L'API es manté en 1 rèplica amb una estratègia Recreate mentre fa servir SQLite (un volum RWO no pot ser retingut per dos pods).

Svitrio també inclou un model SaaS per inquilí (deploy/tenant/provision.sh) que genera una instància dedicada amb namespace per client dimensionada segons el pla — reutilitza el patró, canvia les imatges/hosts/registre pels teus.

Primer operador

No hi ha script de llavor: desplega, obre l'administració, sol·licita un enllaç màgic per al teu email i segueix-lo — el primer usuari registrat es promociona automàticament a llavor + operador. Després registra una passkey. Les actualitzacions són recompilar i reiniciar; les migracions són només cap endavant i idempotents, però fes primer una còpia de seguretat de la base de dades.