start docs

This commit is contained in:
2025-12-26 16:05:00 +01:00
parent b492eaab91
commit 7f35bba144
18 changed files with 21121 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
#heading[Deployment stappen]
Serengo ondersteunt meerdere deployment-scenario's, waaronder Vercel en een self-hosted Docker-omgeving [@docker-docs]. In dit hoofdstuk worden de belangrijkste concepten, vereiste configuratie en een concreet stappenplan beschreven.
== Vereiste environment-variabelen
Voor een werkende productieomgeving zijn minimaal de volgende variabelen nodig (zie ook `logs/logboek.md`):
```bash
DATABASE_URL= # PostgreSQL-verbinding
GOOGLE_CLIENT_ID= # Google OAuth client ID
GOOGLE_CLIENT_SECRET= # Google OAuth secret
R2_ACCOUNT_ID= # Cloudflare R2 account ID
R2_ACCESS_KEY_ID= # Cloudflare R2 access key
R2_SECRET_ACCESS_KEY= # Cloudflare R2 secret key
R2_BUCKET_NAME= # Cloudflare R2 bucket-naam
VAPID_PUBLIC_KEY= # Web Push public key
VAPID_PRIVATE_KEY= # Web Push private key
GOOGLE_MAPS_API_KEY= # Google Places API key
```
Deze worden tijdens build en runtime ingelezen door de SvelteKit-app en de server-side services (`auth`, `r2`, `push`, `places`).
== Vercel-deployment (cloud)
In een Vercel-scenario wordt de app gedeployed met behulp van `@sveltejs/adapter-vercel` (aanwezig als dependency). Belangrijke aandachtspunten:
- De SvelteKit-app wordt als serverless of edge-functies uitgerold, afhankelijk van de Vercel-configuratie.
- `DATABASE_URL` moet verwijzen naar een publiek bereikbare PostgreSQL-instantie (bijv. een managed database).
- Cloudflare R2 en Web Push blijven extern; de nodige secrets worden als Vercel environment-variabelen ingesteld.
== Self-hosted Docker-deployment
Voor een zelfgehoste omgeving is een uitgebreide Docker-setup voorzien (Phase 7 in het logboek):
- Multi-stage Docker build om een compacte productie-image te maken.
- Health checks om de beschikbaarheid van de container te monitoren.
- Een entrypoint-script dat bij het starten van de container automatisch Drizzle-migraties uitvoert.
- Drizzle als production dependency, zodat migraties ook in de container kunnen draaien.
Typische stappen voor een self-hosted deployment zijn:
1. Zorg voor een draaiende PostgreSQL-instantie (lokaal, via `docker-compose` of extern) en vul de `DATABASE_URL` correct in.
2. Stel alle vereiste environment-variabelen in voor de app (zie boven).
3. Bouw de Docker-image, bijvoorbeeld met:
```bash
docker build -t serengo:latest .
```
4. Start de container met de juiste environment-variabelen en netwerkconfiguratie, bijvoorbeeld via
`docker-compose`:
```bash
docker-compose up -d
```
5. Het entrypoint-script in `docker-entrypoint.sh` zorgt ervoor dat `pnpm run db:migrate` (of een equivalent via `drizzle-kit`) uitgevoerd wordt bij het opstarten, zodat de database-schema's up-to-date zijn.
6. Controleer de logs en health checks om na te gaan of de app correct draait.
== Van ontwikkeling naar productie
Samengevat ziet de route van lokale ontwikkeling naar productie er als volgt uit:
1. Lokaal ontwikkelen met `pnpm run dev`, frequent linten en typen checken (`pnpm run lint`, `pnpm run check`).
2. Database- en schemawijzigingen doorvoeren met Drizzle (`db:generate`, `db:migrate`, `db:generate-erd`).
3. De productiebuild genereren met `pnpm run build` en lokaal testen via `pnpm run preview`.
4. Deployen naar Vercel of bouwen en uitrollen van de Docker-image in een self-hosted omgeving.
Door de geautomatiseerde migraties en consistente configuratie is het deploymentproces herhaalbaar en betrouwbaar.
== Aanvullende documentatie en hosting
Naast deze paper is er een aparte API-referentie beschikbaar, opgebouwd met Mintlify en gehost op mijn eigen domein:
- *API-documentatie*: `https://docs.zias.be` Mintlify-documentatie [@mintlify-docs] voor de Serengo-API.
De volledige broncode van Serengo wordt self-hosted op mijn eigen Git-server:
- *Broncode-repository*: `https://git.zias.be/zias/serengo` privé Git-instantie met de volledige Serengo broncode.
De productieversie van de Serengo-applicatie draait op mijn eigen Hetzner VPS [@hetzner-cloud], uitgerold met Docker [@docker-docs]:
- *Live-applicatie*: `https://serengo.zias.be` SvelteKit-app in Docker-container op een Hetzner VPS.
Deze deployment zorgt ervoor dat zowel de code als de infrastructuur volledig in eigen beheer zijn, zonder afhankelijkheid van publieke Git-hosting of PaaS-platformen.