@@ -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
|
||||
@@ -17,6 +17,7 @@ local/
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
!.env.unraid.example
|
||||
secrets/
|
||||
|
||||
# IDE / OS
|
||||
|
||||
Binary file not shown.
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
|
||||
@@ -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.
Reference in New Issue
Block a user