Files
AfiS-Aktensystem/.env.example
T
Harlekin dc34774223
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Host-Port ueber die .env statt in der compose.yaml
Wer die Anwendung auf einem anderen Port erreichen will, musste bisher die
compose.yaml aendern - eine verfolgte Datei. Jeder `git pull` lief danach in
"local changes would be overwritten", und die Aenderung ging beim Verwerfen
verloren.

Jetzt steht der Host-Port als WEB_PORT in der .env, die ohnehin nicht verfolgt
wird. Ohne Angabe bleibt es bei 3000.
2026-09-04 09:46:25 +02:00

64 lines
3.0 KiB
Bash

# AfiS-Aktensystem - Vorlage für den .env-Reiter in Dockge.
# Diese Datei enthält nur Platzhalter. Die echten Werte gehören nach
# /opt/stacks/afis/.env und niemals ins Repository. Siehe docs/11-betrieb.md.
# --- Zeitzone -----------------------------------------------------------------
TZ=Europe/Berlin
# --- Datenbank ----------------------------------------------------------------
# Wird von db, pgbouncer, web, worker und den Backups gelesen.
POSTGRES_PASSWORD=hier-ein-langes-zufaelliges-passwort
# Die Anwendung spricht über pgbouncer im Transaktionsmodus, deshalb pgbouncer=true.
DATABASE_URL=postgresql://afis:hier-ein-langes-zufaelliges-passwort@pgbouncer:6432/afis?pgbouncer=true&connection_limit=1
# Migrationen und LISTEN/NOTIFY brauchen eine Verbindung an pgbouncer vorbei.
DIRECT_DATABASE_URL=postgresql://afis:hier-ein-langes-zufaelliges-passwort@db:5432/afis
# --- Anwendung ----------------------------------------------------------------
# Auf welchem Port die Anwendung auf dem Host erreichbar ist. Im Container
# hoert sie immer auf 3000; hier steht nur, worauf das abgebildet wird. Ein
# Reverse Proxy davor leitet auf genau diesen Port.
WEB_PORT=3000
# Die öffentliche Adresse der Anwendung. Auth.js baut daraus die redirect_uri
# für Discord; sie muss zeichengenau im Developer Portal hinterlegt sein als
# <APP_URL>/api/auth/callback/discord
APP_URL=https://afis.example.de
# 32+ Zeichen. Erzeugen mit: openssl rand -base64 48
AUTH_SECRET=hier-ein-langes-zufaelliges-geheimnis-mit-mindestens-32-zeichen
# --- Discord ------------------------------------------------------------------
# Aus dem Developer Portal. Das Server Members Intent muss aktiviert sein,
# sonst liefert der Bot keine Rollen. Siehe docs/03-auth-und-rechte.md.
# Als Redirect-URI in der Application eintragen:
# <APP_URL>/api/auth/callback/discord
# Der Bot muss ausserdem auf den Server eingeladen sein, sonst liefert die
# API "Unknown Guild":
# https://discord.com/oauth2/authorize?client_id=<DISCORD_CLIENT_ID>&scope=bot&permissions=3072
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
DISCORD_BOT_TOKEN=
DISCORD_GUILD_ID=
# Kanal, in den der Worker Start, Verbindungsabbruch und fehlgeschlagenen
# Voll-Abgleich meldet. Das ist die eigentliche Alarmierung.
DISCORD_ADMIN_CHANNEL_ID=
# Takt des Postausgangs als Sicherheitsnetz; angestossen wird er ueber LISTEN.
WORKER_OUTBOX_MS=30000
# --- Notfallzugang ------------------------------------------------------------
# Eine oder zwei Discord-IDs, kommagetrennt. Diese Nutzer haben immer Stufe 5
# und alle Rechte, unabhängig vom Rollen-Mapping. Ohne das sperrt man sich beim
# ersten Fehler in der Rollenverwaltung selbst aus.
BOOTSTRAP_ADMIN_IDS=
# --- Dateien und Prüfkette ----------------------------------------------------
FILES_DIR=/data/files
CLAMAV_SOCKET=/var/run/clamav/clamd.sock
PDF_SERVICE_URL=http://pdf:3000
# --- Cloudflare Tunnel --------------------------------------------------------
CLOUDFLARE_TUNNEL_TOKEN=
# --- Auslagerungs-Backup ------------------------------------------------------
RESTIC_REPOSITORY=
RESTIC_PASSWORD=