Ein paar irrelevante Tutorials

Pangolin

Pangolin ist eine OpenSource-Alternative zu Cloudflared, die man selbst hosten kann. Voraussetzung ist ein (virtueller) Server und eine frei erreichbare Domain. Für den Server reicht eine minimale Ausstattung von 1 CPU, 1 GB RAM und 8 GB Massenspeicher. Die kleinsten VPS der gängigsten Hoster sind also völlig ausreichend. Man benötigt aber eine echte Domain und keine Subdomain oder DYNDNS-Adresse.

Installation

Voraussetzung ist ein Linux-Server, der ordnungsgemäß installiert und aktualisiert wurde. Hierauf kann man nun das Installer-Script herunterladen und ausführbar machen:

wget -O installer "https://github.com/fosrl/pangolin/releases/download/1.0.0-beta.8/installer_linux_amd64" && chmod +x ./installer

Hier wird die Version 1.0.0 Beta 8 für AMD-Umgebungen geladen. Das ist zum Zeitpunkt der Installation und der Erstellung dieses Beitrages die aktuelle Version. Der Installer wird mit

sudo ./installer

ausgeführt. Der Installer fragt dann ein paar Daten ab.

Base Domain Name: Domain-Name des Servers

Dashboard Domain Name: Name, unter dem der Dienst installiert werden soll; das kann auch die vorgenannte Root-Domain sein.

Let's Encrypt Email: Email-Adresse für die Zertifikatsverwaltung

Dann muss man ein Admin-Email-Postfach angeben. Damit loggt man sich später auch ein. Für das Admin-Passwort gelten folgende Vorgaben:

  • mindestens 8 Zeichen
  • mindestens ein Großbuchstabe
  • Mindestens ein Kleinbuchstabe
  • Mindestens eine Ziffer
  • und mindestens ein Sonderzeichen (mit dem Dollarzeichen hatte ich hier Probleme, also weglassen)

Dann folgen noch zwei Parameter mit Sicherheitsrelevanz: Sollen sich neue User ohne Einladung anmelden können? Neien! Sollen User eigene Organisationen einrichten können? Nope!

Im Anschluss daran kann man, wenn man will, Email-Credentials eingeben, damit der Server Emails versenden kann. Muss man aber nicht.

Wenn alles stimmt, dann installiert der Installer Docker auf dem Server (falls noch nicht vorhanden) und startet die benötigten Container. Danach kann man sich unter https://pangolin.[domain] einloggen, falls man keinen anderen Dashboard Name vorgegeben hat. 

Setup

Organisation erstellen

Eine Organisation ist quasi ein Pool von Sites. Die erste Organisation muss bei erster Konfiguration erstellt werden. Weitere können später eingerichtet werden. Organisationen haben Sites.

Sites erstellen

Sites werden benötigt, um eine Verbindung mit einer Ressource herzustellen. Ein System in dem Netzwerk, in dem man Dienste über Pangolin veröffentlichen möchte, muss quasi als Einfallstor dienen. Zwischen dem Sitesystem und dem Pangolin-Server wird dann ein Tunnel aufgebaut.

Wenn man den Button "+ Add Site" anklickt, dann erscheint ein Dialog, bei dem zunächst die Methode "newt" vorausgewählt ist. In diesem Dialog werden die Codes für die Einrichtung des Newt-Dienstes auf dem Zielsystem einmalig eingeblendet. Später kommt man da nicht mehr dran! Diese Codezeile muss man sich also gut sichern. Darauf wird man mit hinreichender Deutlichkeit hingewiesen. Man kann den Dialog nur bestätigen, wenn man das Häkchen gesetzt hat, mit dem man Stein und Bein schwört, dass man den Code kopiert hat.

Tunnel verbinden

Newt

Wenn man den Tunnel mit Newt erstellen möchte, dann lädt man zunächst Newt auf das Einfallstor

wget -O newt "https://github.com/fosrl/newt/releases/download/1.0.0-beta.3/newt_linux_amd64" && chmod +x ./newt

und führt Newt dann mit dem Code, den man sich vorher beim Erstellen der Site (hoffentlich) kopiert hat, aus z.B.:

newt --id 4sb04v8jl5j41tu --secret 0zt0zwc5j752f8m5615i7ddmv5raur3i8qlgpxcwgbuixe02 --endpoint https://pangolin.meinedomain.de

Wenn dabei kein Fehler auftritt, dann ist danach die Site online (ggf. muss die Seite im Browser aktualisiert werden).

Wireguard

Wenn man statt Newt Wireguard verwenden möchte, dann erhält man bei Einrichtung der Site den Inhalt einer Config-Datei für Wireguard angezeigt. Man installiert also zunächst Wireguard auf dem System, erstellt eine Config-Datei mit z.B. dem Namen "wg0.conf" in /etc/wireguard/ und startet den Tunnel mit

sudo wg-quick up wg0

Wenn dabei kein Fehler passiert, dann wird ein VPN-Tunnel zwischen dem lokalen System und dem Pangolin-Server aufgebaut.

Ressourcen einrichten

Jetzt endlich kann man die lokalen Systeme per Pangolin der bösen, kalten Welt aussetzen. Man klickt unter dem Reiter Ressources auf den Button "+Add Resource". Der nachfolgende Dialog ist eigentlich selbsterklärend. Man denkt sich einen Namen für die Ressource aus, eine Subdomain, unter der sie erreichbar sein soll (z.B. jellyfin.meinedomain.de) und wählt aus, welcher Site diese Ressource angehören soll. Dann wird man auf die Seite "Ressources/Connectivity" gelenkt, wo man eingeben kann, ob die Seite per https erreichbar sein soll (ja bitte). Unter Target Configuration kann man nun die Parameter angeben, unter denen die Ressource intern erreichbar ist. Hier kann man ruhig eine Ressource freigeben, die nicht verschlüsselt ist. Die Verschlüsselung übernimmt der Reverse-Proxy Traefik freundlicherweise für uns.

Wenn ich also z.B. als Resource "nextcloud.meinedomain.de" eingegeben habe und bei Target Configuration eingebe:

  • enable SSH
  • Method: http
  • IP/Hostname: lokale IP-Adresse meines Nextcloudservers
  • Port 80

Dann ist später die Nextcloud unter "https://nextloud.meinedomain.de" erreichbar

Update

Das Erstinstallationsscript erstellt eine Datei "docker-compose.yml" in der die Version von Pangolin hart vorgegeben ist. Diese Datei bearbeitet man (mit Rootrechten) und ändert die Versionsnummer, also z.B.

pangolin:1.0.0.-beta.7

in latest also

pangolin:latest

ab. Wenn man den Container nun stoppt, aktualisiert und neustartet, dann hat man die aktuelle Version. Dazu setzt man in dem Verzeichnis, in dem sich die Datei docker-compose.yml befindet folgende Kommandos ab:

sudo docker-compose down 

sudo docker-compose pull

sudo docker-compose up -d