Release / verify (push) Canceled after 0s
CI / checks (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / backend (push) Canceled after 0s
Release / test (push) Canceled after 0s
Release / publish (backend) (push) Canceled after 0s
Release / publish (frontend) (push) Canceled after 0s
Release / publish (proxy) (push) Canceled after 0s
Release / publish (updater) (push) Canceled after 0s
Vorgesehen als MINOR-Release **1.27.0** „Firewall-Oberfläche über OPNexus“. - **Firewall-Oberfläche über OPNexus:** Auf der Host-Seite öffnet **Oberfläche öffnen** die Weboberfläche der Firewall in einem neuen Tab, auch bei Firewalls hinter NAT im Management-Tunnel. Nur für Admins; jede Firewall läuft in einer eigenen Browser-Origin (Platz = Port), Cookies bleiben auf dem Server, das Ticket gilt einmalig 30 Sekunden, Inaktivitäts- und Gesamtlimit sind einstellbar, Ticket, Start und Ende stehen im Audit (Art „GUI-Zugriff“). Standardmäßig **aus**: braucht das Compose-Profil `gui`, `OPNEXUS_GUI_SITES`, `GUI_PORTS`, `GUI_GATEWAY_TOKEN`, `COOKIE_SECURE=true` und den Schalter unter Einstellungen (Handbuch, „Firewall-Oberfläche über OPNexus“). Live getestet auf OPNsense 26.7. - **Einschränkungen:** kein WebSocket, keine automatische Anmeldung, höchstens 4 Plätze gleichzeitig. OPNexus-Adresse vorher in die Whitelist des Anmeldeschutzes (sshguard) der Firewall eintragen, sonst können Fehlanmeldungen die API-Zugriffe von OPNexus aussperren. Nach einem Neustart des wg-hub braucht der Tunnel 2 bis 4 Minuten. - **Hinweis für Betreiber mit eigenen Skripten:** Bei HTTPS heißt das Sitzungs-Cookie jetzt `__Host-opnexus-session` (bestehende Sitzungen werden ohne Abmelden übernommen), und Cookie-Anfragen an `/api` mit `Sec-Fetch-Site: same-site/cross-site` werden abgelehnt. Zugriffe mit API-Token sind nicht betroffen.
126 lines
6.9 KiB
Bash
126 lines
6.9 KiB
Bash
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
|
||
# <repo>/opnexus-backend, <repo>/opnexus-frontend, <repo>/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/<Version>". 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
|