Forgejo SSH hinter UniFi Gateway Ultra & Double-NAT einrichten
Wer Forgejo (oder Gitea) intern betreibt, steht oft vor der Wahl: Bequemes SSH oder universelles HTTPS? Während HTTPS über den Nginx Proxy Manager (NPM) leicht zu handhaben ist, bietet SSH via Public-Keys mehr Komfort für Entwickler.
In einem Double-NAT-Setup (Router -> UniFi Gateway Ultra -> Forgejo) müssen die Ports jedoch präzise kaskadiert werden.
Das Setup
Der Datenfluss folgt dieser Kette, um den internen Forgejo-SSH-Dienst sicher nach außen zu führen:
- Externer Router: Leitet Port
33022(Public) an die WAN-IP des UniFi Gateways weiter. - UniFi Gateway Ultra: Nimmt die Anfrage auf Port
33022entgegen und leitet sie an die interne Server-IP von Forgejo (z.B.192.168.1.201) weiter. - Forgejo Instanz: Nutzt den internen SSH-Server, konfiguriert auf Port
33022.
Die Lösung für Verbindungsprobleme
Oft scheitert die Verbindung am Standard-Port 22. Die Lösung: Den internen Forgejo-SSH-Dienst explizit auf den Zielport umstellen (z.B. 2222), damit die Port-Weiterleitung der Firewall direkt auf den lauschenden Dienst trifft.
Wichtige Konfiguration (app.ini)
Damit die Links in der Weboberfläche stimmen, muss die Forgejo-Konfiguration angepasst werden:
SSH_LISTEN_PORT = 33022(Worauf der Dienst lauscht)SSH_PORT = 33022(Was der User von außen eingeben muss)SSH_DOMAIN = deine.domain.de
Client-Tipp: SSH Config
Um nicht jedes Mal den Port angeben zu müssen, hilft ein Eintrag in der lokalen ~/.ssh/config:
Host mein-git
HostName deine.domain.de
Port 33022
User git
Ein einfaches git clone ssh://git@deine.domain.de:33022/user/repo.git genügt ab jetzt.
Fazit: Durch die Trennung von Web-Traffic (via NPM auf 443) und SSH-Traffic (via Port-Forwarding auf 33022) erhält man ein performantes und sauberes Self-Hosting-Setup.