{% extends "base.html" %} {% from "macros.html" import field, select, check, csrf_field %} {% block title %}Einstellungen{% endblock %} {% block content %}

Einstellungen

{{ csrf_field(csrf) }}
Protokoll
{{ field('retention_days', 'Aufbewahrung (Tage)', cfg.retention_days, type='number', errors=errors, attrs='min="1" max="3650"') }}
Benachrichtigungen ?
{{ select('notify_mode', 'Benachrichtigen', [('off', 'nie'), ('every', 'bei jedem fehlgeschlagenen Lauf'), ('after_n', 'nach N Fehlschlägen in Folge')], cfg.notify_mode.value, errors=errors, hint='Gilt für Webhook und E-Mail. Ausfälle von Anbindungen werden immer sofort gemeldet (außer bei „nie“).') }}
{{ field('notify_after', 'N', cfg.notify_after, type='number', errors=errors, attrs='min="1"') }}
{{ check('notify_recovery', 'Entwarnung senden, wenn es wieder läuft', cfg.notify_recovery, wide=true) }}
Webhook
{{ field('webhook_url', 'Webhook-URL', mask_url(cfg.webhook_url), errors=errors, wide=true, placeholder='https://ntfy.sh/mein-topic', hint='Leer = kein Webhook. Wird nur gekürzt angezeigt; unverändert lassen = behalten.') }} {{ field('webhook_content_type', 'Content-Type', cfg.webhook_content_type, errors=errors) }}
Platzhalter: $event $title $message $rule $time $host – bei JSON automatisch maskiert.
E-Mail
{{ check('email_enabled', 'E-Mail-Benachrichtigung einschalten', cfg.email_enabled, wide=true) }} {{ field('smtp_host', 'SMTP-Server', cfg.smtp_host, errors=errors, placeholder='smtp.example.org') }} {{ field('smtp_port', 'Port', cfg.smtp_port, type='number', errors=errors, attrs='min="1" max="65535"', hint='587 (STARTTLS) oder 465 (SSL)') }} {{ select('smtp_security', 'Verschlüsselung', [('starttls', 'STARTTLS'), ('ssl', 'SSL/TLS'), ('none', 'keine (nur interne Relays)')], cfg.smtp_security, errors=errors) }} {{ field('smtp_user', 'Benutzer', cfg.smtp_user, errors=errors, attrs='autocomplete="off"', hint='leer = ohne Anmeldung') }}
{{ 'Leer lassen = unverändert.' if cfg.smtp_password_enc else '' }} Wird verschlüsselt gespeichert.
{{ field('smtp_from', 'Absender', cfg.smtp_from, errors=errors, placeholder='netmover@example.org') }} {{ field('smtp_to', 'Empfänger', cfg.smtp_to, errors=errors, wide=true, placeholder='ich@example.org, admin@example.org', hint='mehrere mit Komma getrennt') }}
Überwachung (Uptime Kuma) ?
{{ field('kuma_push_url', 'Push-URL (Kuma-Monitor vom Typ „Push“)', mask_url(cfg.kuma_push_url), errors=errors, wide=true, placeholder='https://kuma.lan/api/push/AbCdEf?status=up&msg=OK&ping=', hint='NetMover meldet jede Minute den Zustand. Leer = aus. Wird nur gekürzt angezeigt.') }}
Adressen für HTTP-Monitore (Kuma fragt NetMover ab) {% for label, url in monitor_urls %}{% endfor %}
{{ label }}{{ url }}

200 = in Ordnung, 503 = Problem. Ohne Anmeldung erreichbar.

Passwort ändern

{{ csrf_field(csrf) }}

Anmeldung ?

{{ csrf_field(csrf) }}

Deine Adresse gerade: {{ client_ip }}

Mit Komma getrennt; einzelne Adressen gehen auch. Leer = niemand ohne Passwort. 0.0.0.0/0, ::/0 = Anmeldung ganz aus.
Leer = von überall sonst mit Passwort. Ausgefüllt = alle anderen Netze werden abgewiesen (auch die Anmeldeseite). /healthz bleibt für die Überwachung erreichbar.

NetMover läuft als root und kennt die Zugangsdaten deiner Freigaben. Wer die Oberfläche ohne Passwort erreicht, kann alles ändern – Netze „ohne Passwort“ daher so eng wie möglich wählen. Hinter einem Reverse Proxy NETMOVER_FORWARDED_ALLOW_IPS setzen, sonst sieht jede Anfrage aus, als käme sie vom Proxy. Eine Einstellung, mit der du dich selbst aussperren würdest, wird nicht gespeichert.

{% if loopback_trusted %}

„Ohne Passwort“ enthält 127.0.0.1/::1. Läuft ein Reverse Proxy auf diesem Server, gilt dann jede Anfrage über den Proxy als vertrauenswürdig.

{% endif %}

Export / Import

Export enthält Anbindungen, Regeln und Einstellungen – ohne Zugangsdaten und Webhook-URL. Beim Import werden vorhandene Namen übersprungen; importierte Regeln sind zunächst deaktiviert.

Konfiguration exportieren
{{ csrf_field(csrf) }}
{% endblock %}