Zum Inhalt

Telegram-Verknüpfung einrichten

Diese Seite brauchst du nur, wenn der "Verbinden"-Button unter Mein Konto → "Verknüpfte Konten" → Telegram bei dir nicht funktioniert (siehe Verknüpfte Konten). Grund ist fast immer derselbe: Telegrams Login-Widget verlangt zwingend eine echte Domain (keine IP-Adresse) und HTTPS — beides ist bei einer frischen Installation noch nicht eingerichtet.

Von außerhalb deines eigenen Netzwerks muss dabei niemand auf die WebUI zugreifen können — die komplette Einrichtung hier bleibt innerhalb deines LAN, keine Portfreigabe am Router nötig.

1. Domain besorgen und intern auflösen lassen

Falls du noch keine eigene Domain hast, reicht auch ein kostenloser DynDNS-Dienst — davon gibt es viele (z. B. DuckDNS, No-IP, oder was dein Router schon eingebaut mitbringt). Wichtig ist nur, dass die Domain innerhalb deines Netzwerks auf die lokale IP-Adresse deines Hannah-Servers zeigt (nicht auf eine öffentliche IP):

Trag dort einen eigenen A-Record für deine Domain ein, der auf die lokale IP deines Servers zeigt (z. B. 192.168.1.50). Das ist der sauberste Weg, wirkt aber nur, wenn dein Router/DNS-Server das unterstützt.

Trag die Zuordnung stattdessen auf jedem Gerät ein, von dem aus du die WebUI im Browser aufrufst — in der Hosts-Datei dieses Geräts:

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • Linux/macOS: /etc/hosts

Eine Zeile anhängen (Adminrechte nötig):

192.168.1.50   deine-domain.tld

Das muss auf jedem Gerät einzeln gemacht werden, mit dem du die WebUI besuchst.

2. TLS in der WebUI aktivieren

In config.yaml (siehe Konfiguration):

tls:
  enabled: true

Docker-Nutzer setzen stattdessen die Umgebungsvariable HANNAH_WEBUI_TLS_ENABLED=true.

Dienst neu starten. Beim allerersten Start danach erzeugt die WebUI automatisch ein selbstsigniertes Zertifikat mit sehr langer Laufzeit und speichert es dauerhaft (systemd: /var/lib/hannah-webui/tls/, Docker: /data/tls/). Weitere Neustarts oder Updates erzeugen es nicht erneut — einmal akzeptiert, bleibt es akzeptiert.

Du kannst stattdessen auch ein eigenes Zertifikat hinterlegen (tls.cert_file / tls.key_file), musst dich dann aber selbst um dessen Gültigkeit kümmern.

Alternative: eigener Reverse-Proxy

Wer bereits einen Reverse-Proxy (z. B. nginx, Caddy, Traefik) betreibt, kann die TLS-Terminierung auch dort erledigen, statt tls.enabled in der WebUI zu setzen. Diese Seite geht darauf nicht weiter ein — die Einrichtung eines Reverse-Proxys hängt zu stark vom jeweiligen Setup ab, um sie hier allgemeingültig zu beschreiben.

3. Zertifikat im Browser akzeptieren

Rufst du die WebUI jetzt über https://deine-domain.tld:5000 auf, zeigt der Browser eine Warnung — das Zertifikat ist selbstsigniert, also niemandem "offiziell" bekannt. Das ist hier unproblematisch: Telegram prüft beim Login-Widget nur, ob die Verbindung überhaupt verschlüsselt ist, nicht, ob das Zertifikat einer vertrauten Stelle gehört. Einmal die Ausnahme im Browser bestätigen ("Trotzdem fortfahren" o. ä.), danach ist Ruhe.

4. Domain beim Bot hinterlegen

Im Chat mit @BotFather:

  1. /setdomain senden
  2. deinen Bot auswählen
  3. die Domain ohne https:// eintragen, also nur deine-domain.tld

5. Verknüpfen

Zurück in der WebUI unter Mein Konto → "Verknüpfte Konten" → "Verbinden" — der Telegram-Login-Flow sollte jetzt durchlaufen.