cbrueggenolte

Ein persönlicher Raum für Technik, Gedanken und meine Heimat im Internet. Bleibe in der Nähe und erkunde eine Weile, wenn du möchtest.


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:

  1. Externer Router: Leitet Port 33022 (Public) an die WAN-IP des UniFi Gateways weiter.
  2. UniFi Gateway Ultra: Nimmt die Anfrage auf Port 33022 entgegen und leitet sie an die interne Server-IP von Forgejo (z.B. 192.168.1.201) weiter.
  3. 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.

Per E-Mail antworten