<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Selfhosting auf cbrueggenolte.de</title>
    <link>https://cbrueggenolte.de/tags/selfhosting/</link>
    <description>Neueste Beiträge in Selfhosting auf cbrueggenolte.de</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-DE</language>
    <managingEditor>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</managingEditor>
    <webMaster>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</webMaster>
    <copyright>2018-2026 cbrueggenolte</copyright>
    <lastBuildDate>Tue, 05 May 2026 11:28:38 +0200</lastBuildDate>
    <atom:link href="https://cbrueggenolte.de/tags/selfhosting/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Forgejo SSH hinter UniFi Gateway Ultra &amp; Double-NAT einrichten</title>
      <link>https://cbrueggenolte.de/forgejo-ssh-hinter-unifi-gateway-ultra-double-nat-einrichten/</link>
      <pubDate>Tue, 05 May 2026 11:28:38 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/forgejo-ssh-hinter-unifi-gateway-ultra-double-nat-einrichten/</guid>
      <description>&lt;p&gt;Wer Forgejo (oder Gitea) intern betreibt, steht oft vor der Wahl: Bequemes &lt;strong&gt;SSH&lt;/strong&gt; oder universelles &lt;strong&gt;HTTPS&lt;/strong&gt;? Während HTTPS über den Nginx Proxy Manager (NPM) leicht zu handhaben ist, bietet SSH via Public-Keys mehr Komfort für Entwickler.&lt;/p&gt;&#xA;&lt;p&gt;In einem &lt;strong&gt;Double-NAT-Setup&lt;/strong&gt; (Router -&amp;gt; UniFi Gateway Ultra -&amp;gt; Forgejo) müssen die Ports jedoch präzise kaskadiert werden.&lt;/p&gt;&#xA;&lt;h3 id=&#34;das-setup&#34;&gt;Das Setup&lt;/h3&gt;&#xA;&lt;p&gt;Der Datenfluss folgt dieser Kette, um den internen Forgejo-SSH-Dienst sicher nach außen zu führen:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Externer Router:&lt;/strong&gt; Leitet Port &lt;code&gt;33022&lt;/code&gt; (Public) an die WAN-IP des UniFi Gateways weiter.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;UniFi Gateway Ultra:&lt;/strong&gt; Nimmt die Anfrage auf Port &lt;code&gt;33022 &lt;/code&gt; entgegen und leitet sie an die interne Server-IP von Forgejo (z.B. &lt;code&gt;192.168.1.201&lt;/code&gt;) weiter.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Forgejo Instanz:&lt;/strong&gt; Nutzt den internen SSH-Server, konfiguriert auf Port &lt;code&gt;33022&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;die-lösung-für-verbindungsprobleme&#34;&gt;Die Lösung für Verbindungsprobleme&lt;/h3&gt;&#xA;&lt;p&gt;Oft scheitert die Verbindung am Standard-Port 22. Die Lösung: Den internen Forgejo-SSH-Dienst explizit auf den Zielport umstellen (z.B. &lt;code&gt;2222&lt;/code&gt;), damit die Port-Weiterleitung der Firewall direkt auf den lauschenden Dienst trifft.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Wer Forgejo (oder Gitea) intern betreibt, steht oft vor der Wahl: Bequemes <strong>SSH</strong> oder universelles <strong>HTTPS</strong>? Während HTTPS über den Nginx Proxy Manager (NPM) leicht zu handhaben ist, bietet SSH via Public-Keys mehr Komfort für Entwickler.</p>
<p>In einem <strong>Double-NAT-Setup</strong> (Router -&gt; UniFi Gateway Ultra -&gt; Forgejo) müssen die Ports jedoch präzise kaskadiert werden.</p>
<h3 id="das-setup">Das Setup</h3>
<p>Der Datenfluss folgt dieser Kette, um den internen Forgejo-SSH-Dienst sicher nach außen zu führen:</p>
<ol>
<li><strong>Externer Router:</strong> Leitet Port <code>33022</code> (Public) an die WAN-IP des UniFi Gateways weiter.</li>
<li><strong>UniFi Gateway Ultra:</strong> Nimmt die Anfrage auf Port <code>33022 </code> entgegen und leitet sie an die interne Server-IP von Forgejo (z.B. <code>192.168.1.201</code>) weiter.</li>
<li><strong>Forgejo Instanz:</strong> Nutzt den internen SSH-Server, konfiguriert auf Port <code>33022</code>.</li>
</ol>
<h3 id="die-lösung-für-verbindungsprobleme">Die Lösung für Verbindungsprobleme</h3>
<p>Oft scheitert die Verbindung am Standard-Port 22. Die Lösung: Den internen Forgejo-SSH-Dienst explizit auf den Zielport umstellen (z.B. <code>2222</code>), damit die Port-Weiterleitung der Firewall direkt auf den lauschenden Dienst trifft.</p>
<h3 id="wichtige-konfiguration-appini">Wichtige Konfiguration (<code>app.ini</code>)</h3>
<p>Damit die Links in der Weboberfläche stimmen, muss die Forgejo-Konfiguration angepasst werden:</p>
<ul>
<li><code>SSH_LISTEN_PORT = 33022</code> (Worauf der Dienst lauscht)</li>
<li><code>SSH_PORT = 33022</code> (Was der User von außen eingeben muss)</li>
<li><code>SSH_DOMAIN = deine.domain.de</code></li>
</ul>
<h3 id="client-tipp-ssh-config">Client-Tipp: SSH Config</h3>
<p>Um nicht jedes Mal den Port angeben zu müssen, hilft ein Eintrag in der lokalen <code>~/.ssh/config</code>:</p>





<pre tabindex="0"><code class="language-ssh" data-lang="ssh">Host mein-git
    HostName deine.domain.de
    Port 33022
    User git</code></pre><p>Ein einfaches <code>git clone ssh://git@deine.domain.de:33022/user/repo.git</code> genügt ab jetzt.</p>
<p><strong>Fazit:</strong> 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.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
