Bugfixing
deploy / deploy (push) Canceled after 0s

This commit is contained in:
Jens
2026-07-28 04:43:20 +02:00
parent 7caea3a1ee
commit 61349e9b75
8 changed files with 160 additions and 22 deletions
+109
View File
@@ -0,0 +1,109 @@
# VacatureRadar — all-in-one container (docker-compose.unraid.yml)
#
# Gebruik:
# cp .env.unraid.example .env
# # vervang ALLE CHANGE_ME-waarden
# docker compose -f docker-compose.unraid.yml up -d --build --force-recreate
#
# Dit profiel draait rechtstreeks op http://<server-ip>:1226 zonder TLS.
# Zet pas een reverse proxy ervoor via deployment/production.env.example
# (SECURE_SSL_REDIRECT, cookie-secure en HSTS staan hier bewust uit).
#
# PostgreSQL en Redis draaien IN de container op 127.0.0.1; laat die waarden staan.
# Genereer met: python -c "import secrets; print(secrets.token_urlsafe(64))"
DJANGO_SECRET_KEY=CHANGE_ME_generate_at_least_50_random_characters
DJANGO_DEBUG=0
# Leeg laten tot er een publieke HTTPS-URL is.
PUBLIC_BASE_URL=
DJANGO_ALLOWED_HOSTS=192.168.10.150,127.0.0.1,localhost
DJANGO_CSRF_TRUSTED_ORIGINS=http://192.168.10.150:1226,http://127.0.0.1:1226
DJANGO_TIME_ZONE=Europe/Brussels
VACATURERADAR_OWNER_NAME=Jens
VACATURERADAR_VERSION=0.3.12
# Interne database en cache. Niet wijzigen voor de AIO-container.
POSTGRES_DB=vacatureradar
POSTGRES_USER=vacatureradar
POSTGRES_PASSWORD=CHANGE_ME_unique_database_password
POSTGRES_HOST=127.0.0.1
POSTGRES_PORT=5432
DATABASE_URL=
REDIS_URL=redis://127.0.0.1:6379/0
CACHE_URL=redis://127.0.0.1:6379/1
HEALTHCHECK_REQUIRE_CACHE=1
CELERY_TASK_ALWAYS_EAGER=0
# Maakt bij een lege database eenmalig het beheerdersaccount aan.
# Inloggen kan met de gebruikersnaam of het e-mailadres.
VACATURERADAR_ADMIN_USERNAME=jens@itworx.tech
VACATURERADAR_ADMIN_EMAIL=jens@itworx.tech
VACATURERADAR_ADMIN_PASSWORD=CHANGE_ME_unique_admin_password
VACATURERADAR_AUTO_BOOTSTRAP=1
DEMO_MODE_ENABLED=0
DEMO_READ_ONLY=1
DEMO_SESSION_SECONDS=3600
DEMO_USERNAME=demo
DEMO_EMAIL=demo@vacatureradar.local
# Geen proxy voor de container: laat deze op 0 tot NPM/Traefik ervoor staat.
TRUST_PROXY_HEADERS=0
USE_X_FORWARDED_HOST=0
TRUSTED_PROXY_CIDRS=
SESSION_COOKIE_SECURE=0
CSRF_COOKIE_SECURE=0
SECURE_SSL_REDIRECT=0
SECURE_HSTS_SECONDS=0
SECURE_HSTS_INCLUDE_SUBDOMAINS=0
SECURE_HSTS_PRELOAD=0
SEARCH_ENGINE_INDEXING_ENABLED=0
AUTH_LOGIN_RATE_LIMIT_MAX_ATTEMPTS=8
AUTH_LOGIN_RATE_LIMIT_WINDOW_SECONDS=300
AUTH_LOGIN_RATE_LIMIT_BLOCK_SECONDS=300
MANUAL_IMPORT_RATE_LIMIT_MAX_ATTEMPTS=12
MANUAL_IMPORT_RATE_LIMIT_WINDOW_SECONDS=120
MANUAL_IMPORT_RATE_LIMIT_BLOCK_SECONDS=300
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
DEFAULT_FROM_EMAIL=VacatureRadar <vacatureradar@localhost>
DIGEST_RECIPIENT=
SMTP_HOST=
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
SMTP_USE_TLS=1
# Genereer met: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
MAILBOX_CREDENTIAL_KEYS=
IMAP_CONNECT_TIMEOUT_SECONDS=15
IMAP_MAX_MESSAGES_PER_POLL=200
IMAP_MAX_MESSAGE_BYTES=1000000
FETCHER_USER_AGENT=VacatureRadar/0.1 (+personal-use; contact=local-admin)
FETCHER_TIMEOUT_SECONDS=20
FETCHER_MAX_BYTES=3000000
FETCHER_MAX_REDIRECTS=5
FETCHER_ALLOW_NONSTANDARD_PORTS=0
SOURCE_POLICY_MODE=strict
OLLAMA_ENABLED=0
OLLAMA_BASE_URL=http://127.0.0.1:11434
OLLAMA_MODEL=
OLLAMA_TIMEOUT_SECONDS=60
ENTRA_ID_ENABLED=0
ENTRA_CLIENT_ID=
ENTRA_CLIENT_SECRET=
ENTRA_TENANT_ID=
ENTRA_REDIRECT_URI=
ENTRA_ALLOWED_DOMAINS=
ENTRA_SCOPES=User.Read
# Optioneel: pad in de container naar een pg_dump-bestand dat bij een lege
# database eenmalig wordt teruggezet, bv. /app/local/backups/aio-migration.dump
VACATURERADAR_RESTORE_DUMP=
# Optioneel: andere hostpoort dan 1226 publiceren.
VACATURERADAR_HOST_PORT=1226
+1
View File
@@ -17,6 +17,7 @@ local/
.env
.env.*
!.env.example
!.env.unraid.example
secrets/
# IDE / OS
BIN
View File
Binary file not shown.
+8 -1
View File
@@ -1,5 +1,12 @@
# Unraid-installatiebestanden
De composebron staat in de repositoryroot als `docker-compose.unraid.yml`. Deze bouwt één Dockerman-container via `Dockerfile.unraid`; interne processen worden door Supervisor bewaakt. Volg eerst [`docs/operations/UNRAID_DEPLOYMENT.md`](../../docs/operations/UNRAID_DEPLOYMENT.md).
De composebron staat in de repositoryroot als `docker-compose.unraid.yml`. Deze bouwt één Dockerman-container via `Dockerfile.unraid`; interne processen worden door Supervisor bewaakt. Alle paden zijn relatief aan de map met het composebestand, dus je kopieert de projectmap naar de server en start daar:
```bash
cp .env.unraid.example .env # eenmalig, daarna alle CHANGE_ME-waarden invullen
docker compose -f docker-compose.unraid.yml up -d --build --force-recreate
```
Volg voor de volledige procedure [`docs/operations/UNRAID_DEPLOYMENT.md`](../../docs/operations/UNRAID_DEPLOYMENT.md).
Deze directory is gereserveerd voor toekomstige Unraid-template-XML en release-specifieke voorbeelden. Commit hier geen ingevulde `.env`, app-password, registrypulltoken of databaseback-up.
+16 -7
View File
@@ -1,4 +1,10 @@
# Eén Dockerman-container met intern bewaakte PostgreSQL-, Redis-, web- en Celery-processen.
#
# Kopieer de projectmap naar de server en start vanuit die map:
# cp .env.unraid.example .env # eenmalig, daarna alle CHANGE_ME-waarden invullen
# docker compose -f docker-compose.unraid.yml up -d --build --force-recreate
#
# Alle paden zijn relatief aan deze map, zodat de map overal kan staan.
name: vacatureradar
services:
@@ -9,22 +15,25 @@ services:
image: vacatureradar:unraid
container_name: VacatureRadar
env_file:
- ${VACATURERADAR_ENV_FILE:-/mnt/user/appdata/vacatureradar/source/.env}
- ${VACATURERADAR_ENV_FILE:-.env}
environment:
POSTGRES_HOST: 127.0.0.1
POSTGRES_PORT: "5432"
REDIS_URL: redis://127.0.0.1:6379/0
CACHE_URL: redis://127.0.0.1:6379/1
HEALTHCHECK_REQUIRE_CACHE: "1"
VACATURERADAR_RESTORE_DUMP: /app/local/backups/aio-migration.dump
# Alleen gebruikt bij een lege datadir; laat leeg wanneer je niet migreert.
VACATURERADAR_RESTORE_DUMP: ${VACATURERADAR_RESTORE_DUMP:-}
restart: unless-stopped
security_opt:
- no-new-privileges:true
stop_grace_period: 30s
ports:
- "1226:8080"
- "${VACATURERADAR_HOST_PORT:-1226}:8080"
volumes:
- /mnt/user/appdata/vacatureradar/source/local/media:/app/media
- /mnt/user/appdata/vacatureradar/source/local/logs:/app/logs
- /mnt/user/appdata/vacatureradar/source/local:/app/local
- ./local/media:/app/media
- ./local/logs:/app/logs
- ./local:/app/local
labels:
net.unraid.docker.managed: dockerman
net.unraid.docker.webui: http://[IP]:[PORT:8080]/
@@ -37,4 +46,4 @@ services:
interval: 30s
timeout: 5s
retries: 5
start_period: 60s
start_period: 90s
+23 -12
View File
@@ -4,21 +4,32 @@ Deze handleiding gebruikt `docker-compose.unraid.yml` als declaratieve bron van
## Vooraf
Maak deze directories:
Alle paden in `docker-compose.unraid.yml` zijn relatief aan de map waarin dat bestand staat. Je kopieert de projectmap dus naar een plek naar keuze; de aanbevolen locatie blijft:
```text
/mnt/user/appdata/vacatureradar/source
/mnt/user/appdata/vacatureradar/source/local
/mnt/user/appdata/vacatureradar/source/local/media
/mnt/user/appdata/vacatureradar/source/local/logs
/mnt/user/appdata/vacatureradar/source/local/postgres-aio17
/mnt/user/appdata/vacatureradar/source/local/redis-aio
/mnt/user/appdata/vacatureradar/ollama # alleen bij lokale AI
/mnt/user/backups/vacatureradar
```
De container maakt `local/`, `local/media`, `local/logs`, `local/postgres-aio17`, `local/redis-aio` en `local/backups` bij de eerste start zelf aan en zet de juiste eigenaar. Voor back-ups blijft `/mnt/user/backups/vacatureradar` de aanbevolen doelmap.
Gebruik bij voorkeur een cache-backed `appdata`-share en neem die afzonderlijk in je back-upregime op. De PostgreSQL-datadir mag niet gelijktijdig door file-syncsoftware worden gemuteerd.
## Manueel kopiëren en uitrollen
Wanneer je niet via `scripts/deploy_unraid.sh` werkt maar de map met de hand kopieert (rsync, SMB-share, ZIP):
```bash
cd /mnt/user/appdata/vacatureradar/source
cp .env.unraid.example .env # alleen de eerste keer
nano .env # alle CHANGE_ME-waarden vervangen
docker compose -f docker-compose.unraid.yml up -d --build --force-recreate
docker compose -f docker-compose.unraid.yml logs -f
```
Kopieer `local/` niet mee vanaf je werkstation: die map bevat de databasedirectory van de server. Kopieer `.env` evenmin over een bestaand serverbestand heen.
Een afwijkende hostpoort zet je in `.env` via `VACATURERADAR_HOST_PORT`; standaard is dat `1226`.
## Dockerman
De container verschijnt als **VacatureRadar** en bevat metadata voor:
@@ -47,13 +58,13 @@ Gebruik in productie geen zwevende `latest` zonder gecontroleerd rollbackpad.
## Configuratiebestand
De standaardlocatie die `docker-compose.unraid.yml` leest is:
`docker-compose.unraid.yml` leest `.env` naast het composebestand zelf:
```text
/mnt/user/appdata/vacatureradar/source/.env
<projectmap>/.env
```
Een afwijkende locatie kan vóór Compose via `VACATURERADAR_ENV_FILE` worden ingesteld. Gebruik [`deployment/production.env.example`](../../deployment/production.env.example) alleen als checklist en kopieer nooit ongewijzigde `CHANGE_ME`-waarden.
Een afwijkende locatie kan vóór Compose via `VACATURERADAR_ENV_FILE` worden ingesteld. Start van [`.env.unraid.example`](../../.env.unraid.example) voor een all-in-one container die rechtstreeks op poort 1226 draait, of van [`deployment/production.env.example`](../../deployment/production.env.example) zodra er een reverse proxy met TLS voor staat. Kopieer nooit ongewijzigde `CHANGE_ME`-waarden.
Configureer een bestaand bestand voor de publieke URL zonder secrets te overschrijven:
@@ -61,7 +72,7 @@ Configureer een bestaand bestand voor de publieke URL zonder secrets te overschr
cd /mnt/user/appdata/vacatureradar/source
python scripts/configure_public_url.py \
https://vacatureradar.example.be \
--env-file /mnt/user/appdata/vacatureradar/source/.env \
--env-file .env \
--cache-url redis://127.0.0.1:6379/1
```
+3 -2
View File
@@ -6,10 +6,11 @@ redis_data=/app/local/redis-aio
pg_bin="$(pg_config --bindir)"
fresh_database=0
mkdir -p "$pg_data" "$redis_data" /app/media /app/logs /tmp/celery
mkdir -p "$pg_data" "$redis_data" /app/media /app/logs /app/local/backups /tmp/celery
chown -R postgres:postgres "$pg_data"
chown -R redis:redis "$redis_data"
chown -R app:app /app/media /app/logs /tmp/celery
chown -R app:app /app/media /app/logs /app/local/backups /tmp/celery
chmod 0700 "$pg_data"
if [[ ! -s "$pg_data/PG_VERSION" ]]; then
runuser -u postgres -- "$pg_bin/initdb" -D "$pg_data" --auth-local=trust --auth-host=scram-sha-256
Binary file not shown.