POSTGRES_PASSWORD=change-me # Datenbank- und Benutzername (Standard: opnexus). Gelten nur beim ersten Start # eines leeren Volumes. Eine bestehende Installation trägt hier ihre bisherigen # Namen ein, sonst findet das Backend die Datenbank nicht (Handbuch, "Datenbank-Namen"). # POSTGRES_DB=opnexus # POSTGRES_USER=opnexus # Optional — if left unset, a random admin password is generated on first # startup and printed once to `docker compose logs backend`. ADMIN_USERNAME=admin ADMIN_PASSWORD= # Required for any deployment reachable under a hostname other than # localhost/127.0.0.1 — the exact origin (scheme://host[:port], no # trailing slash) the frontend is actually served from, e.g. # "https://opnexus.example.com" or "http://192.168.1.50:3100" (include # the port unless a reverse proxy fronts this on the default 80/443). # Without this, the backend only accepts credentialed requests from # localhost on the default frontend port. # Several origins (IP and name) may be listed comma-separated: # FRONTEND_ORIGIN=https://10.0.0.5,https://opnexus.lan # Behind the bundled TLS proxy requests are same-origin, so this only matters # for cross-origin API clients. FRONTEND_ORIGIN= # Addresses OPNexus is reached by through the TLS proxy (Caddy), comma- # separated: the server's IP and/or names. No DNS needed - the proxy issues # certificates from its own CA (import /opnexus-ca.crt once in your browser). # OPNEXUS_SITES=10.0.0.5, opnexus.lan OPNEXUS_SITES=localhost # The primary address from the list above (normally the IP): used when a # client connects by bare IP and sends no server name. OPNEXUS_DEFAULT_SNI=localhost # Interface the proxy listens on (0.0.0.0 = whole network). PROXY_BIND_ADDRESS=0.0.0.0 # Host interface the backend/frontend ports are published on. Defaults # to 127.0.0.1 (this host only) if unset. Set to 0.0.0.0 for access from # other machines without a reverse proxy (see the handbook, "Zugriff aus dem Netz und TLS" # for the safer TLS-proxy alternative), or to one specific interface IP. BIND_ADDRESS= # Host-Ports von Backend und Frontend (nur nötig, wenn 8100/3100 schon belegt # sind, z. B. bei einer zweiten Instanz auf demselben Rechner; Standard 8100/3100). # BACKEND_PORT=8100 # FRONTEND_PORT=3100 # Set to true once this is running behind TLS (see the handbook, # "Zugriff aus dem Netz und TLS") — otherwise the session cookie is sent # unencrypted and browsers won't even attach a Secure cookie without # HTTPS in the first place. COOKIE_SECURE=false # Set to true ONLY when running behind a reverse proxy you trust to # always set/overwrite X-Forwarded-For itself (every example in the handbook's # "Zugriff aus dem Netz und TLS" does). Used to attribute failed logins to the real # client IP for the login lockout instead of the proxy's own IP. Leave # false (default) if the app is reachable directly with no proxy in # front — otherwise any client could spoof this header to dodge the # per-IP lockout entirely. TRUST_PROXY_HEADERS=false # ── Release-Images (statt lokalem Build) ────────────────────────────── # Registry + Namespace, unter dem die OPNexus-Images liegen; daraus werden # /opnexus-backend, /opnexus-frontend, /opnexus-proxy. Leer lassen = lokal bauen # mit `docker compose up -d --build`. # OPNEXUS_IMAGE_REPO=git.opnexus.dev/opnexus # Version fest pinnen (z. B. 1.9.0), statt automatisch "latest" zu folgen. # OPNEXUS_VERSION=1.9.0 # ── Hinweis auf neue Versionen (optional) ───────────────────────────── # Release-Feed (GitHub/Forgejo "releases/latest"). Leer = aus: dann macht # OPNexus keine ausgehende Anfrage. Gesendet wird nur ein GET mit # User-Agent "OPNexus/". Admins sehen bei einer neueren Version einen # Hinweis; aktualisiert wird nie automatisch, sondern mit `opnexus update` oder # (optional, siehe unten) per Klick im Webinterface. # Einfacher: im Webinterface unter Einstellungen › OPNexus aktualisieren einschalten. # Ein Wert hier hat Vorrang und sperrt den Schalter dort. # UPDATE_CHECK_URL=https://updates.opnexus.dev/latest.json # UPDATE_CHECK_INTERVAL_HOURS=12 # ── Updates aus dem Webinterface (optional, braucht Release-Images) ─── # Startet den Updater-Container, mit dem Admins unter Einstellungen › „OPNexus # aktualisieren“ ein Update auslösen können. Er ist der einzige Container mit # Docker-Socket-Zugriff (= root-gleiche Rechte auf diesem Host) und standardmäßig # AUS. Braucht außerdem die Versionsprüfung (Webinterface oder UPDATE_CHECK_URL, oben). Siehe Handbuch, "Updates per Klick". # COMPOSE_PROFILES=updater # ── Transportsicherheit (nur ändern, wenn nötig) ────────────────────── # Firewall-API-Zugangsdaten gehen per HTTP-Basic-Auth raus, deshalb sind # http://-Adressen für Firewalls abgelehnt (beim Anlegen UND bei jeder # Anfrage). Nur für isolierte Labor-Setups auf "true" setzen. # ALLOW_INSECURE_FIREWALL_URLS=false # SMTP über SSL/STARTTLS prüft Zertifikat UND Hostname. Mailserver mit # privater CA: CA-PEM in den Backend-Container einbinden und hier angeben. # SMTP_CA_FILE=/data/smtp-ca.pem # SMTP-Anmeldung ohne Verschlüsselung (Sicherheit "none") bleibt gesperrt. # ALLOW_INSECURE_SMTP_AUTH=false # Management-Tunnel (WireGuard-Hub für Firewalls hinter NAT), optional. # Zum Aktivieren (Handbuch „Firewalls hinter NAT“): COMPOSE_PROFILES=overlay # und den UDP-Port aus dem Internet erreichbar machen. #OVERLAY_PORT=51820 # ── GUI-Fernzugriff auf verwaltete Firewalls (optional, Standard AUS) ── # Öffnet die Weboberfläche einer Firewall über OPNexus, auch hinter NAT # (Management-Tunnel), jeweils in einem eigenen Browser-Ursprung (Slot-Port). # Dreifach aus, bis alles hier gesetzt ist UND ein Admin den Schalter unter # Einstellungen einschaltet. Voraussetzungen: HTTPS über den Proxy und # COOKIE_SECURE=true. Siehe Handbuch, „Firewall-Oberfläche über OPNexus“. # 1. Profil aktivieren (mit anderen Profilen kommagetrennt, z. B. overlay,gui): # COMPOSE_PROFILES=gui # 2. Slot-Ursprünge: dieselbe Adresse wie in OPNEXUS_SITES, je Slot ein Port # aus GUI_PORTS. Darf NICHT in FRONTEND_ORIGIN stehen (Start wird sonst verweigert). # OPNEXUS_GUI_SITES=https://10.0.0.5:9441, https://10.0.0.5:9442, https://10.0.0.5:9443, https://10.0.0.5:9444 # 3. Gemeinsames Geheimnis Backend <-> Gateway, mind. 32 Zeichen, z. B. # `openssl rand -hex 32`: # GUI_GATEWAY_TOKEN= # 4. Wo die Slot-Ports lauschen. Standard nur lokal (127.0.0.1); für den # Zugriff aus dem Netz die Adresse dieses Hosts eintragen (wie bei # PROXY_BIND_ADDRESS). GUI_PORTS ist ein Bereich, Host- und Container-Port # sind gleich. GUI_PORTS zum Einschalten SETZEN: ohne den Eintrag nimmt # Docker zufällige freie Ports (damit ein Update nie an belegten Ports wie # 9443 scheitert), und die Slot-Adressen oben wären nicht erreichbar. # GUI_BIND_ADDRESS=127.0.0.1 # GUI_PORTS=9441-9444