@@ -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.*
|
.env.*
|
||||||
!.env.example
|
!.env.example
|
||||||
|
!.env.unraid.example
|
||||||
secrets/
|
secrets/
|
||||||
|
|
||||||
# IDE / OS
|
# IDE / OS
|
||||||
|
|||||||
Binary file not shown.
@@ -1,5 +1,12 @@
|
|||||||
# Unraid-installatiebestanden
|
# 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.
|
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.
|
# 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
|
name: vacatureradar
|
||||||
|
|
||||||
services:
|
services:
|
||||||
@@ -9,22 +15,25 @@ services:
|
|||||||
image: vacatureradar:unraid
|
image: vacatureradar:unraid
|
||||||
container_name: VacatureRadar
|
container_name: VacatureRadar
|
||||||
env_file:
|
env_file:
|
||||||
- ${VACATURERADAR_ENV_FILE:-/mnt/user/appdata/vacatureradar/source/.env}
|
- ${VACATURERADAR_ENV_FILE:-.env}
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_HOST: 127.0.0.1
|
POSTGRES_HOST: 127.0.0.1
|
||||||
|
POSTGRES_PORT: "5432"
|
||||||
REDIS_URL: redis://127.0.0.1:6379/0
|
REDIS_URL: redis://127.0.0.1:6379/0
|
||||||
CACHE_URL: redis://127.0.0.1:6379/1
|
CACHE_URL: redis://127.0.0.1:6379/1
|
||||||
HEALTHCHECK_REQUIRE_CACHE: "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
|
restart: unless-stopped
|
||||||
security_opt:
|
security_opt:
|
||||||
- no-new-privileges:true
|
- no-new-privileges:true
|
||||||
|
stop_grace_period: 30s
|
||||||
ports:
|
ports:
|
||||||
- "1226:8080"
|
- "${VACATURERADAR_HOST_PORT:-1226}:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/user/appdata/vacatureradar/source/local/media:/app/media
|
- ./local/media:/app/media
|
||||||
- /mnt/user/appdata/vacatureradar/source/local/logs:/app/logs
|
- ./local/logs:/app/logs
|
||||||
- /mnt/user/appdata/vacatureradar/source/local:/app/local
|
- ./local:/app/local
|
||||||
labels:
|
labels:
|
||||||
net.unraid.docker.managed: dockerman
|
net.unraid.docker.managed: dockerman
|
||||||
net.unraid.docker.webui: http://[IP]:[PORT:8080]/
|
net.unraid.docker.webui: http://[IP]:[PORT:8080]/
|
||||||
@@ -37,4 +46,4 @@ services:
|
|||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
start_period: 60s
|
start_period: 90s
|
||||||
|
|||||||
@@ -4,21 +4,32 @@ Deze handleiding gebruikt `docker-compose.unraid.yml` als declaratieve bron van
|
|||||||
|
|
||||||
## Vooraf
|
## 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
|
```text
|
||||||
/mnt/user/appdata/vacatureradar/source
|
/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.
|
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
|
## Dockerman
|
||||||
|
|
||||||
De container verschijnt als **VacatureRadar** en bevat metadata voor:
|
De container verschijnt als **VacatureRadar** en bevat metadata voor:
|
||||||
@@ -47,13 +58,13 @@ Gebruik in productie geen zwevende `latest` zonder gecontroleerd rollbackpad.
|
|||||||
|
|
||||||
## Configuratiebestand
|
## Configuratiebestand
|
||||||
|
|
||||||
De standaardlocatie die `docker-compose.unraid.yml` leest is:
|
`docker-compose.unraid.yml` leest `.env` naast het composebestand zelf:
|
||||||
|
|
||||||
```text
|
```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:
|
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
|
cd /mnt/user/appdata/vacatureradar/source
|
||||||
python scripts/configure_public_url.py \
|
python scripts/configure_public_url.py \
|
||||||
https://vacatureradar.example.be \
|
https://vacatureradar.example.be \
|
||||||
--env-file /mnt/user/appdata/vacatureradar/source/.env \
|
--env-file .env \
|
||||||
--cache-url redis://127.0.0.1:6379/1
|
--cache-url redis://127.0.0.1:6379/1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,11 @@ redis_data=/app/local/redis-aio
|
|||||||
pg_bin="$(pg_config --bindir)"
|
pg_bin="$(pg_config --bindir)"
|
||||||
fresh_database=0
|
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 postgres:postgres "$pg_data"
|
||||||
chown -R redis:redis "$redis_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
|
if [[ ! -s "$pg_data/PG_VERSION" ]]; then
|
||||||
runuser -u postgres -- "$pg_bin/initdb" -D "$pg_data" --auth-local=trust --auth-host=scram-sha-256
|
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