Reverse Proxy für Gitea konfigurieren

Ein Reverse Proxy liefert eine Ressource, welche er von einem oder mehreren Servern holt, an einen Client aus. Bei Gitea kann es durchaus sinnvoll sein, dieses hinter einem Reverse Proxy zu betreiben. Standardmäßig läuft der Dienst auf dem Port 3000. Möchte der Nutzer ihn über die normalen Ports für HTTP (80) bzw. HTTPS (443) erreichbar machen, könnte das Ganze durchaus über die Konfiguration von Gitea in Verbindung mit der systemd-Unit geschehen.

Allerdings ist ein weiterer Vorteil bei einem Reverse Proxy, das die angefragte Infrastruktur aus der Sicht der Clients versteckt wird. Mittels Nginx kann es solcher Reverse Proxy realisiert werden. Dazu muss die Nginx-Konfiguration für die Domain angepasst werden:

nano /etc/nginx/sites-available/example

In diesem Fall befasst sich die Konfiguration mit der verschlüsselten Kommunikation per HTTPS und der Weiterleitung von unverschlüsselten Verbindung in Richtung der verschlüsselten Verbindung.

server {
  listen 80;
  listen [::]:80;

  server_name example.org;

  return 301 https://$host$request_uri$is_args$args;
}

server {
  listen 443;
  listen [::]:443 default_server;

  ssl on;
  ssl_certificate        /etc/letsencrypt/live/example.org/fullchain.pem;
  ssl_certificate_key    /etc/letsencrypt/live/example.org/privkey.pem;

    server_name org;

    location / {
        proxy_pass http://localhost:3000;
    }
}

Anhand der Konfiguration wird ersichtlich das Gitea auf dem Server unverschlüsselt betrieben werden kann, da die eigentliche Verschlüsselung über HTTPS vom Reverse Proxy, in diesem Fall Nginx, übernommen wird. Nachdem die Konfiguration gespeichert wurde, muss Nginx neugestartet werden:

service nginx restart

Anschließend muss die Gitea-Konfiguration nochmals angepasst werden:

nano /home/git/gitea/custom/conf/app.ini

Dort muss die ROOT_URL nun so definiert werden, wie der Client sie nun sieht. Die ROOT_URL kann von:

ROOT_URL         = https://example.org:3000/

zu:

ROOT_URL         = http://example.org/

geändert werden. Die Werte PROTOCOL, CERT_FILE und KEY_FILE können entfernt werden, da die Verschlüsslung nun von Nginx übernommen wird. Nach der Änderung der Konfiguration muss Gitea ebenfalls neugestartet werden:

service gitea restart

Nachdem die Konfiguration durch geführt wurde, ist Gitea unter zwei URLs erreichbar:

http://example.org:3000/
https://example.org/

Intern läuft Gitea auf dem Port 3000. Damit dieser nicht von außen erreichbar ist, sollte eine entsprechende Firewall-Regel konfiguriert werden.

Port unter CentOS freigeben

Wenn unter CentOS der Dienst FirewallD aktiviert ist und man eine wie auch immer geartete Serverapplikation auf dem Server betreiben möchte, wird man feststellen das der Dienst von außen nicht zu erreichen ist. Die einfache wenn auch nicht zielführende Möglichkeit wäre es natürlich die Firewall komplett zu deaktivieren. Sinnvoller ist es hingegen den entsprechenden Port welcher benötigt wird freizuschalten. Dies geschieht dabei mit dem Kommando:

firewall-cmd --zone=public --add-port=1234/tcp --permanent

Damit wird der Port 1234, wenn er über TCP angesprochen wird, in der Zone Public freigeschaltet. Die aktiven Zonen auf dem System können dabei mittels:

firewall-cmd --get-active-zones

angezeigt werden. Die Änderung der Regel wird dabei nicht sofort übernommen. Stattdessen müssen die Einstellungen neu geladen werden:

firewall-cmd --reload

Ungenutze Ports unter MacPorts entfernen

Wenn man Ports unter MacPorts entfernt kann es passieren das Bibliotheken, welche von dem Port genutzt werden, im System verbleiben. Mit dem Umstieg von MacPorts auf eine SQL-Datenbank zur Haltung der Paketinformationen ist es möglich geworden diese ungenutzten Bibliotheken zu entfernen. Dazu muss im Terminal:

sudo port uninstall leaves

eingegeben werden. Anschließend werden die ungenutzten Bibliotheken entfernt und damit Plattenplatz freigegeben. Die Funktionalität der installierten Ports wird dadurch nicht beeinträchtigt.

Postfix auf anderen Port mappen

Standardmäßig hört der Mail Transfer Agent Postfix auf dem Port 25. Möchte man nun das Postfix auch auf einem zusätzlichen Port hört, so muss man die “/etc/postfix/master.cf”-Datei bearbeiten. Dort sucht man die Zeile:

smtp      inet  n       -       -       -       -       smtpd

Unter der Zeile fügt man die Zeile:

587      inet  n       -       -       -       -       smtpd

hinzu. Anschließend muss der Dienst noch neugestartet werden:

service postfix restart

Damit hört Postfix neben Port 25 nun auch auf Port 587, dem bevorzugten Port für die Maileinlieferung von Clients.