indi-allsky mit echtem SSL Zertifikat von Letsencrypt absichern

Letsencrypt LogoWer eine indi-allsky-Installation auf einem Raspberry Pi betreibt und diese über eine eigene Domain öffentlich erreichbar machen möchte, stößt schnell auf zwei typische Herausforderungen:

  • Der Raspberry steckt hinter einer Fritz!Box mit dynamischer IP.
  • indi-allsky bringt einen eigenen, selbstsignierten Webserver mit, der standardmäßig kein gültiges TLS-Zertifikat ausliefert.

In diesem Beitrag zeige ich die vollständige, funktionierende Lösung: Ein Let’s-Encrypt-Zertifikat für eine Subdomain wie access.allsky-rodgau.de, ausgeliefert über Apache als Reverse Proxy, inklusive funktionierender Auto-Renewal-Routine per HTTP-01-Challenge.

***Diese Anleitung wurde im Dezember 2025 aktualisiert und funktioniert bei mir einwandfrei***

1. Ausgangssituation

Das Setup besteht aus:

  • Raspberry Pi mit indi-allsky
  • öffentlicher Subdomain (z. B. access.allsky-rodgau.de)
  • DNS bei all-inkl.com
  • Fritz!Box mit DynDNS
  • Apache als Reverse Proxy

Das Ziel: HTTPS-Zugriff ohne Zertifikatsfehler und automatische Verlängerung des Zertifikats.

2. Fritz!Box für den Zertifikatsabruf vorbereiten

Damit Let’s Encrypt die Domain validieren kann, muss Port 80 von extern erreichbar sein. Hierzu richten wir eine Portfreigabe bei der Fritz!Box unter Internet → Freigaben → Portfreigaben ein:

  • Port 80 → Raspberry Pi
  • Port 443 → Raspberry Pi

Externer Test

Mit dem Smartphone (WLAN aus) einfach:

http://access.allsky-rodgau.de

Erscheint eine Apache-Seite oder die indi-allsky-Oberfläche, ist Port 80 offen. Mittlerweile leitet die Seite von http:// automatisch auf https:// weiter – wie das geht, siehe weiter unten!

Alternativ kann man das Ganze auch unter https://www.yougetsignal.com/tools/open-ports/ testen – in meinem Fall: https://access.allsky-rodgau.de und Port 80.

3. indi-allsky kein eigenes SSL sprechen lassen

Bei Installationen über Docker besitzt indi-allsky kein eigenes HTTPS-Modul. Der interne Webserver liefert ausschließlich HTTP aus – SSL kommt immer über Apache. Bei Non-Docker-Installationen sollte SSL in indi-allsky deaktiviert sein.
Prüfen, ob indi-allsky SSL spricht: 

sudo lsof -i :443

Wenn hier nur apache2 auftaucht, ist alles korrekt.

lsof muss man ggf. installieren:

sudo apt update
sudo apt install lsof

4. Apache als Reverse Proxy konfigurieren

Apache liefert das Let’s-Encrypt-Zertifikat aus und leitet Anfragen intern an indi-allsky weiter.

Beispiel für /etc/apache2/sites-available/indi-allsky.conf:

<VirtualHost *:80>
    ServerName access.allsky-rodgau.de
    DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:443>
    ServerName access.allsky-rodgau.de

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/access.allsky-rodgau.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/access.allsky-rodgau.de/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

Danach aktivieren:

sudo a2enmod ssl proxy proxy_http rewrite
sudo a2ensite indi-allsky.conf
sudo systemctl reload apache2

5. Certbot installieren

sudo apt update
sudo apt install certbot python3-certbot-apache

6. Das Let’s-Encrypt-Zertifikat korrekt erzeugen

Für automatische Verlängerung ist wichtig, das Zertifikat mit dem Apache-Plugin anzulegen, nicht per „manual“-Challenge.

sudo certbot --apache -d access.allsky-rodgau.de

Certbot:

  • legt Dateien unter /etc/letsencrypt/live an
  • konfiguriert Apache automatisch
  • stellt auto-renewal, d.h. das automatische Aktualisieren des SSL-Zertifikats korrekt ein

7. Ausgeliefertes Zertifikat prüfen

openssl s_client -connect access.allsky-rodgau.de:443 -servername access.allsky-rodgau.de | grep "CN="

Zeigt dann…

CN = access.allsky-rodgau.de

8. Automatische Verlängerung testen

Certbot installiert automatisch einen systemd-Timer für die Erneuerung.

systemctl status certbot.timer

Trockenlauf:

sudo certbot renew --dry-run

Wenn er das hier anzeigt, hat alles geklappt:

Congratulations, all simulated renewals succeeded.

9. HTTP auf HTTPS weiterleiten

Jetzt wollen wir noch alle Anfragen, die per HTTP eingehen auf HTTPS weiterleiten. Hierfür müssen wir die Konfiguration bearbeiten:

sudo nano /etc/apache2/sites-available/indi-allsky.conf

Anschließend im Bereich die folgende Zeile ergänzen:

Redirect permanent / https://access.allsky-rodgau.de/

Damit werden alle Anfragen auf access.allsky-rodgau.de auf https weitergeleitet. Die „Challenge“ bei der automatischen SSL-Zertifikatserneuerung bleibt davon unberührt.

Funktioniert! Einfach https://access.allsky-rodgau.de aufrufen!