Die meisten selbstgehosteten Apps lauschen auf einem lokalen Port wie 127.0.0.1:3000 und sprechen einfaches HTTP. Ein Reverse-Proxy steht davor auf den Ports 80/443, terminiert HTTPS mit einem echten Zertifikat und leitet den Verkehr an diesen lokalen Port weiter — er gibt Ihnen ein sauberes https://app.yourdomain.com und erlaubt, mehrere Apps hinter einer IP zu betreiben. Hier sind die beiden gängigen Wege.
Voraussetzungen
- Eine Domain mit einem A-Eintrag, der auf die IP Ihres Servers zeigt (warten Sie die DNS-Verbreitung ab).
- Die Ports 80 und 443 offen — siehe wie man eine UFW-Firewall einrichtet.
- Ihre App läuft lokal, z. B. auf
127.0.0.1:3000.
Variante A — Caddy (automatisches HTTPS, eine Zeile)
sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy
Das war's — Caddy holt ein Let's-Encrypt-Zertifikat für die Domain und erneuert es automatisch.
Variante B — nginx + Certbot
sudo apt install -y nginx certbot python3-certbot-nginx
Erstellen Sie /etc/nginx/sites-available/app:
server {
listen 80;
server_name app.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Aktivieren Sie sie und fügen Sie HTTPS hinzu:
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com
Certbot passt die Konfiguration an, um HTTPS auszuliefern, und richtet die automatische Erneuerung ein.
Ehrliche Warnungen
- DNS und Ports sind die üblichen Fehlerquellen. Der A-Eintrag muss hierher zeigen und verbreitet sein, und 80/443 müssen erreichbar sein, sonst schlägt die Zertifikatsausstellung fehl. Beide Werkzeuge versuchen es erneut, sobald das behoben ist.
- Legen Sie nur offen, was Sie beabsichtigen. Binden Sie die App an
127.0.0.1, damit sie nur über den Proxy erreichbar ist, nicht direkt. - HTTPS braucht eine Domain, keine nackte IP — Let's Encrypt stellt für Namen aus.
Nächste Schritte
Der Reverse-Proxy ist genau das, was einen einzelnen Server viele Dinge ausliefern lässt — siehe mehrere Dienste hinter einer IP selbst hosten. Betreiben Sie die App in einem Container? Beginnen Sie mit wie man Docker installiert. Damit die App selbst Neustarts und Abstürze übersteht, siehe wie man einen systemd-Dienst erstellt.
Kommentare
Noch keine Kommentare. Sei der Erste.