69 lines
3.2 KiB
Markdown
69 lines
3.2 KiB
Markdown
# Verificatierapport — VacatureRadar 0.3.12
|
|
|
|
- Datum: 27 juli 2026
|
|
- Onderwerp: productiehardening, Nginx Proxy Manager, gastmodus en overdrachts-ZIP
|
|
- Branch: `fix/public-production-hardening`
|
|
|
|
## Gecontroleerd
|
|
|
|
### Applicatie en regressies
|
|
|
|
```text
|
|
296 tests geslaagd
|
|
2 optionele Playwrighttests overgeslagen omdat de browserbinary niet lokaal aanwezig was
|
|
83,43% branch-aware codedekking; vereiste drempel 70%
|
|
```
|
|
|
|
De afzonderlijke HTML- en accessibilityprobe bleef actief. De Playwrightfallback is hersteld zodat een geïnstalleerde Pythonmodule zonder browserbinary geen synchrone databasecall meer binnen de Playwright-eventloop uitvoert.
|
|
|
|
### Django en data
|
|
|
|
- `python manage.py check`: 0 issues;
|
|
- `python manage.py makemigrations --check --dry-run`: geen wijzigingen;
|
|
- productie-settings met `PUBLIC_BASE_URL=https://vacatureradar.itworx.tech`: laden correct;
|
|
- `manage.py check --deploy`: geen errors; HSTS-preload blijft bewust uit en geeft daarom alleen de verwachte Django-waarschuwing;
|
|
- publieke host en HTTPS-origin worden aantoonbaar aan `ALLOWED_HOSTS` en `CSRF_TRUSTED_ORIGINS` toegevoegd.
|
|
|
|
### Repository en deployment
|
|
|
|
- repositoryvalidator: geslaagd;
|
|
- taakledger: geldig, 64 taken, 0 uitvoerbare ready-taken;
|
|
- Docker Compose, Unraid Compose en backlog-YAML: parseerbaar;
|
|
- shellsyntax van deploy- en entrypoints: geldig;
|
|
- Pythoncompilecheck: geslaagd;
|
|
- `git diff --check`: geslaagd;
|
|
- packagevalidatie en manifestcontrole: geslaagd na definitieve packaging.
|
|
|
|
## Belangrijkste herstelde productieproblemen
|
|
|
|
- `DisallowedHost` voor de publieke Nginx-host;
|
|
- publieke Django-debugmodus;
|
|
- verkeerde externe CSRF-origin met interne poort `1226`;
|
|
- healthchecks die door HTTPS-redirect konden falen;
|
|
- proceslokale rate limiting bij meerdere Gunicornworkers;
|
|
- onvoorwaardelijk vertrouwen in `X-Forwarded-For`;
|
|
- schrijfbare gedeelde demo;
|
|
- afwijkende Unraid `.env`-paden;
|
|
- database-URL-interpolatie buiten het Unraid-`env_file`;
|
|
- URL-import die zonder staticfilesmanifest kon falen tijdens deployment checks;
|
|
- stale project-/assetversie en verouderd verificatierapport.
|
|
|
|
## Omgevingsbeperking
|
|
|
|
De normale `uv sync --frozen` kon in deze uitvoeringsomgeving geen packages downloaden door DNS-uitval. Voor de regressies zijn de pure Python-packages uit de door de gebruiker aangeleverde gelockte Windows-omgeving gecombineerd met reeds aanwezige Linux-wheels. Daardoor konden Django, pytest en de volledige offline suite betrouwbaar draaien.
|
|
|
|
De Ruff-Linuxbinary en Playwright-browser konden zonder netwerk niet worden geïnstalleerd. Pythoncompile, alle tests, Djangochecks, lijnlengtecontrole op gewijzigde Pythonbestanden en `git diff --check` zijn wel uitgevoerd. Een Dockerdaemon en de live Unraid/Nginx-omgeving waren niet beschikbaar.
|
|
|
|
## Nog op de doelserver uitvoeren
|
|
|
|
1. bestaande `.env` back-uppen;
|
|
2. `scripts/configure_public_url.py` uitvoeren;
|
|
3. container met `--force-recreate` herbouwen;
|
|
4. interne liveness/readiness controleren;
|
|
5. publieke TLS-, login-, logout- en CSRF-smoke uitvoeren;
|
|
6. demo-read-only controleren;
|
|
7. exacte Nginx Proxy Manager-CIDR instellen wanneer individuele client-IP-rate-limiting gewenst is;
|
|
8. databaseback-up en herstel-smoke uitvoeren.
|
|
|
|
Zie `docs/operations/NGINX_PROXY_MANAGER.md` en `docs/quality/PRODUCTION_AUDIT_2026-07-27.md`.
|