Close 0.3.17 operational follow-ups

This commit is contained in:
Jens
2026-08-12 15:12:51 +02:00
parent 4822ee6880
commit 7b6f6d43fc
9 changed files with 108 additions and 97 deletions
+31 -32
View File
@@ -1,40 +1,39 @@
# Gitea push-to-deploy (self-hosted, geen handmatige variabelenvulling)
# Gitea immutable releasepad
Push naar `main` of `master` triggert automatisch:
Een push naar `main` publiceert geen productiecode. Alleen een expliciete semantische
tag `v*.*.*` start `.gitea/workflows/release.yml`. De runner:
- checkout op de server runner
- `bash scripts/deploy_docker.sh`
- deploy met `docker compose up -d --build`
1. verifieert de volledige repository;
2. bouwt de Unraid-image met commit- en versielabels;
3. publiceert die image naar de private Gitea-containerregistry;
4. genereert een SPDX-SBOM, digestbestand, checksums en release notes.
Deze workflow gebruikt defaults en hoeft niet te wachten op repo-secrets voor host/ssh/credentials.
Productie wordt daarna expliciet op de volledige `versie@sha256:digest` gepind.
Hierdoor kan een gewone documentatie- of codepush nooit ongemerkt productie
overschrijven en bestaat geen parallel mutable push-to-deploypad meer.
## Vereiste eenmalige setup op de server
## Vereiste runnerconfiguratie
1. Start en registreer een self-hosted Gitea-runner voor deze repo.
2. Zorg dat die runner Docker/Compose kan draaien in de projectmap waar de runner draait.
3. Laat éénmaal dit script draaien op de server:
- De Gitea-runner accepteert label `ubuntu-latest` en kan jobcontainers starten.
- `REGISTRY_USER` en `REGISTRY_TOKEN` zijn repositorysecrets met uitsluitend de
noodzakelijke package-schrijfrechten.
- Unraid gebruikt een afzonderlijk `read:package`-token om gepubliceerde images te
pullen; dat token staat alleen in de root-Dockerconfig op de server.
- De runnerhost heeft voldoende vrije Docker-address-pools voor tijdelijke
jobnetwerken; volg daarvoor de netwerksectie in
[Unraid-deployment](UNRAID_DEPLOYMENT.md#docker-netwerkcapaciteit).
```bash
bash scripts/deploy_docker.sh
```
## Publiceren en uitrollen
Daarna is het gedrag volledig push-only:
1. Maak en verifieer een database- en configuratieback-up.
2. Push de geverifieerde releasecommit naar `main`.
3. Maak en push de semantische tag.
4. Wacht tot de Gitea-releasejob groen is en verifieer de artifactchecksums.
5. Pull op Unraid de gepubliceerde volledige digest.
6. Zet `VACATURERADAR_IMAGE` op `versie@sha256:digest` en herstart Compose met
`--no-build --force-recreate`.
7. Controleer intern en publiek `/health/live/` en `/health/ready/`, runtimeversie,
containerhealth en restartteller.
- `git push` naar `main` of `master` → automatische deploy
## Defaults
- `APP_HOST`: hostname van de server (fallback: `hostname`)
- `APP_SCHEME`: `http`
- `DJANGO_DEBUG`: afgeleid uit `APP_SCHEME`
- `0` als `APP_SCHEME=https`
- `1` als `APP_SCHEME=http`
- `DEPLOY_COMPOSE_FILE`: `docker-compose.yml`
- `APP_ORIGINS`, `APP_HOSTS`, `APP_PORT`: optioneel en veilig overnemen als op runner gezet
## Endpoint na deploy
- `http://<runner-host>:1226/health/ready/`
- `http://<runner-host>:1226/health/live/`
Voor productie: zet later op de runner de gewenste runtime-omgeving (bijv. reverse proxy + TLS) en herstart push.
PostgreSQL, Redis en Ollama blijven niet publiek bereikbaar. Bewaar de vorige
digest totdat minstens één volledige schedulercyclus groen is.
+17
View File
@@ -168,6 +168,23 @@ Herstart web, worker en scheduler. Open daarna **Bronnen → Platformmailboxen**
Voor een immutable registryrelease zet je `VACATURERADAR_IMAGE=gitea.itworx.tech/jens/vacatureradar:<versie>@sha256:<digest>` en start je met `docker compose -f docker-compose.unraid.yml up -d --no-build`.
## Docker-netwerkcapaciteit
Deze Unraid-host draait veel geïsoleerde Compose-netwerken. De ingebouwde
Dockerpools delen grote `/16`- en `/20`-netwerken uit en kunnen daardoor opraken
terwijl er nog ruim voldoende private adresruimte bestaat. De live host gebruikt
daarom persistent in `/boot/config/docker.cfg`:
```text
DOCKER_OPTS="--default-address-pool base=10.200.0.0/16,size=24"
```
Dat levert 256 nieuwe `/24`-netwerken en overlapt niet met LAN `192.168.10.0/24`,
WireGuard `10.253.0.0/16` of bestaande Docker-netwerken. De instelling geldt
alleen voor nieuw aangemaakte netwerken; bestaande subnets veranderen niet.
Maak vóór wijziging een kopie van `docker.cfg`, herstart Docker éénmaal en bewijs
de pool met een tijdelijk netwerk dat na inspectie meteen wordt verwijderd.
Voor sleutelrotatie zet je `nieuwe-sleutel,oude-sleutel` in `MAILBOX_CREDENTIAL_KEYS`, herstart je de processen en draai je:
```bash