{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import field, checkbox, alert, pill %} {% block page_title %}Webserver und TLS{% endblock %} {% block page_sub %} {{ config.domain or 'ohne Domain' }} · {% if config.https_enabled %}HTTPS aktiv{% else %}nur HTTP{% endif %} {% endblock %} {% block content %} {% if license_hint %}{{ alert(license_hint, 'warning') }}{% endif %} {% if not sysops_available %} {{ alert('Systemhelfer nicht verfügbar -- die Konfiguration kann hier erzeugt und angesehen, aber nicht angewandt werden.', 'info') }} {% endif %} {{ alert('Die Site-Datei wird bei jeder Übernahme vollständig neu geschrieben. Alles, was ein Administrator sonst per Hand hineinschreiben würde, ist hier Einstellung. Der Vorgänger schrieb die Datei nur, wenn sie noch nicht existierte -- ein einmal falscher Pfad blieb dadurch über Jahre bestehen und lieferte alle statischen Dateien als 404.', 'info', 'Warum die Datei immer neu geschrieben wird') }}
{{ icon('server', size=17) }} Einstellungen
{{ field('web_domain', 'Domain', value=config.domain, placeholder='tesm.firma.de', disabled=bool(license_hint), hint_text='Leer = Zugriff über IP-Adresse.') }} {{ field('web_acme_email', 'E-Mail für Let\'s Encrypt', value=acme_email, type='email', disabled=bool(license_hint)) }} {{ field('web_cert_path', 'Zertifikat (Pfad)', value=config.cert_path, disabled=bool(license_hint), extra_class='field--full') }} {{ field('web_key_path', 'Privater Schlüssel (Pfad)', value=config.key_path, disabled=bool(license_hint), extra_class='field--full') }} {{ field('web_acme_webroot', 'ACME-Webroot', value=config.acme_webroot, disabled=bool(license_hint), extra_class='field--full') }}
{{ checkbox('web_https_enabled', 'HTTPS auf Port 443 anbieten', checked=config.https_enabled, disabled=bool(license_hint)) }} {{ checkbox('web_redirect_http', 'HTTP (Port 80) auf HTTPS umleiten', checked=config.redirect_http, disabled=bool(license_hint), hint_text='Der ACME-Pfad bleibt dabei erreichbar -- sonst könnte Let\'s Encrypt nie erneuern.') }} {{ checkbox('web_hsts_enabled', 'HSTS-Header senden', checked=config.hsts_enabled, disabled=bool(license_hint), hint_text='Nur mit funktionierendem HTTPS aktivieren: Browser merken sich die Vorgabe und verweigern danach jeden HTTP-Zugriff.') }}
{{ icon('file-text', size=17) }} Erzeugte nginx-Konfiguration
Vorschau der Datei, die geschrieben würde
{{ icon('chevron-down', size=16) }}
{{ preview }}
{{ icon('shield', size=17) }} Zertifikat
{% if certificate.present %}vorhanden{% else %}nicht vorhanden{% endif %}
{% if certificate.present and not certificate.get('error') %}
Inhaber
{{ certificate.subject }}
Aussteller
{{ certificate.issür }}
Gültig bis
{{ certificate.not_valid_after | dt }}
Seriennummer
{{ certificate.serial }}
{% elif certificate.get('error') %} {{ alert('Zertifikat nicht lesbar: ' ~ certificate.error, 'danger') }} {% else %}

Fordern Sie ein Zertifikat per Let's Encrypt an oder hinterlegen Sie eigene Pfade.

{% endif %} {% if current_user.has('settings_web.execute') %}
{% if not certbot_available %}

certbot ist auf diesem Host nicht installiert.

{% elif not config.domain %}

Für Let's Encrypt wird oben eine Domain gebraucht, die öffentlich auf diesen Host zeigt.

{% endif %}

Kein öffentlicher Name? Dann ein eigenes Zertifikat erzeugen. Browser zeigen dafür eine Warnung, die Verbindung ist aber verschlüsselt -- und das Sitzungscookie darf endlich Secure tragen.

{% if local_names %}

Wird ausgestellt auf: {{ (config.domain or local_names[0]) }} {% if local_names|length > 1 %} (zusätzlich {{ local_names[1:] | join(', ') }}) {% endif %}

{% endif %}
{% endif %}
{% if current_user.has('settings_web.execute') %}
{{ icon('upload', size=17) }} Übernehmen
Schreiben, nginx -t, dann neu laden
{% endif %}
{% endblock %}