Konfiguration
Die Instanz wird über Umgebungsvariablen konfiguriert. Ein Teil der Einstellungen lässt sich zusätzlich im Admin-Panel pflegen — dort gilt: eine gesetzte Umgebungsvariable gewinnt immer und die Oberfläche zeigt den Wert schreibgeschützt an (gedacht für Cluster-Deployments, wo die Konfiguration von außen kommt).
Grundeinstellungen
Abschnitt betitelt „Grundeinstellungen“| Variable | Vorgabe | Bedeutung |
|---|---|---|
DNSE_LISTEN | 127.0.0.1:8422 | Adresse und Port |
DNSE_ENCRYPTION_KEY | — | Pflicht. 32 Byte als Hex oder Base64 |
DNSE_ADMIN_USER | admin | Benutzername des Bootstrap-Kontos |
DNSE_ADMIN_PASSWORD | — | Passwort beim allerersten Start (danach wirkungslos) |
DNSE_SERVE_UI | on | off liefert nur die API aus |
DNSE_SECURE_COOKIES | off | Session-Cookies als Secure markieren (hinter TLS) |
DNSE_TRUSTED_PROXIES | — | Proxy-IPs/CIDRs, deren X-Forwarded-For gilt |
DNSE_DEMO | off | on registriert den Demo-Provider und legt Beispieldaten an |
Datenbank
Abschnitt betitelt „Datenbank“| Variable | Vorgabe | Bedeutung |
|---|---|---|
DNSE_DB | ./dnseditor.db | Pfad der SQLite-Datei |
DNSE_DB_DSN | — | PostgreSQL-DSN; ersetzt DNSE_DB |
DNSE_DB_YB | off | on = DNSE_DB_DSN zeigt auf einen YugabyteDB-Cluster (YSQL) |
Details in Datenbank und Schlüssel.
Sessions im Cluster
Abschnitt betitelt „Sessions im Cluster“| Variable | Vorgabe | Bedeutung |
|---|---|---|
DNSE_VALKEY_ADDR | — | host:port eines gemeinsamen Valkey |
DNSE_VALKEY_PASSWORD | — | AUTH-Passwort, falls gesetzt |
Ohne DNSE_VALKEY_ADDR liegen Sessions im Arbeitsspeicher des Prozesses — für
eine einzelne Instanz genau richtig. Sobald mehrere Knoten hinter einem
Loadbalancer laufen, gehört ein gemeinsamer Valkey dazu: Eine Anmeldung auf
Knoten 1 gilt dann auf allen Knoten, und ein Logout wirkt überall.
Zertifikate (ACME)
Abschnitt betitelt „Zertifikate (ACME)“| Variable | Vorgabe | Bedeutung |
|---|---|---|
DNSE_ACME_EMAIL | — | Konto-E-Mail; erst damit ist die Ausstellung aktiv |
DNSE_ACME_DIRECTORY | Let’s Encrypt (Produktion) | Abweichendes ACME-Verzeichnis |
DNSE_ACME_PROPAGATION | — | Feste Wartezeit statt Prüfung der autoritativen NS, z. B. 90s |
DNSE_ACME_PROPAGATION braucht man in Split-DNS-Umgebungen, in denen die
Vorabprüfung von lego am internen Resolver scheitert.
Kern-Einstellungen (Admin-Panel oder Environment)
Abschnitt betitelt „Kern-Einstellungen (Admin-Panel oder Environment)“Diese Werte stehen unter Administration → Kern-Einstellungen und lassen sich alternativ per Umgebungsvariable vorgeben:
| Einstellung | Variable | Wofür |
|---|---|---|
| Öffentliche Adresse | DNSE_INSTANCE_URL | Basis für Links in ausgehenden Mails |
| DynDNS-Hostname | DNSE_DYNDNS_HOSTNAME | Update-Adresse für Router |
| DynDNS-Hostname (nur IPv4) | DNSE_DYNDNS_HOSTNAME4 | erzwingt A-Auflösung |
| DynDNS-Hostname (nur IPv6) | DNSE_DYNDNS_HOSTNAME6 | erzwingt AAAA-Auflösung |
| SMTP-Server | DNSE_SMTP_HOST | Postausgang |
| SMTP-Port | DNSE_SMTP_PORT | Postausgang |
| Absender | DNSE_SMTP_FROM | Absenderadresse |
| SMTP-Benutzer | DNSE_SMTP_USERNAME | Authentifizierung |
| SMTP-Passwort | DNSE_SMTP_PASSWORD | verschlüsselt gespeichert, wird nie zurückgegeben |
Ohne konfigurierten Postausgang funktionieren Einladungen, Passwort-Resets und Ablauf-Erinnerungen nicht — die Oberfläche zeigt in dem Fall generierte Passwörter direkt an, damit man sie manuell übergeben kann.
Beispiel: systemd-Unit
Abschnitt betitelt „Beispiel: systemd-Unit“[Unit]Description=DNS-EditorAfter=network-online.target
[Service]User=dnseditorEnvironment=DNSE_LISTEN=127.0.0.1:8422Environment=DNSE_DB_DSN=postgres://dnseditor:…@localhost:5432/dnseditorEnvironment=DNSE_SECURE_COOKIES=onEnvironment=DNSE_INSTANCE_URL=https://dns.example.comEnvironmentFile=/etc/dnseditor/secrets.envExecStart=/usr/local/bin/dnseditorRestart=on-failure
[Install]WantedBy=multi-user.targetDer Verschlüsselungsschlüssel und das SMTP-Passwort gehören in die
EnvironmentFile mit restriktiven Rechten, nicht in die Unit selbst.
Beispiel: nginx als Reverse Proxy
Abschnitt betitelt „Beispiel: nginx als Reverse Proxy“server { listen 443 ssl; server_name dns.example.com;
ssl_certificate /etc/ssl/dns.example.com.pem; ssl_certificate_key /etc/ssl/dns.example.com.key;
location / { proxy_pass http://127.0.0.1:8422; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; }}Dazu passend auf der Instanz:
DNSE_SECURE_COOKIES=onDNSE_TRUSTED_PROXIES=127.0.0.1DNSE_INSTANCE_URL=https://dns.example.comDNSE_TRUSTED_PROXIES nennt die Adresse, von der aus der Proxy die
Anfragen weiterreicht — nur deren X-Forwarded-For wird geglaubt. Ohne diese
Angabe würde DynDNS die Proxy-Adresse statt der Router-IP eintragen.