Bei GNU/Linux.ch gibt es die Möglichkeit, Artikelvorschläge einzureichen. Jetzt habe ich mir mal einen Fremdenpost ausgesucht:
Und werde meine Erfahrungen mit einem Homeserver teilen.
Bitte ordentlich durchlesen, und nur wenn alles verstanden wurde, sollte man noch einmal überlegen, ob man das auch so möchte, wie ich es mir gedacht habe. Also, nur aktivieren, wenn es gebraucht wird – ansonsten ausschalten. Sicherheit geht vor. Erwähnt sei noch eins: Niemals einfach blind irgendwelche Tutorials nachmachen, immer erst genau verstehen, was jeder einzelne Schritt macht und bewirken soll. Dann viel Spaß beim Lesen.
Inhaltsverzeichnis
1. DynDNS
2. Fritzbox (7490) – Wireguard-Einrichtung
2.1. Smartphone – Wireguard verbinden
2.2. Computer – Wireguard verbinden
3. Dienst NextCloud per Docker (Einfacher)
1. DynDNS
Man sollte sich bei einem Dienst eine DynDNS-Adresse bereitstellen lassen. Jeder kann sich frei entscheiden, ob er dafür Entgelt (selfhost.de als Beispiel – ich bekomme keine Provision –, nutze ich seit Jahren) ausgeben möchte oder for free. Die erhaltenen Zugangsdaten in der Fritzbox hinterlegen.
2. Fritzbox (7490) – Wireguard-Einrichtung
Die Einrichtung ist von AVM sehr einfach gehalten und die Hinweise sind auch ziemlich gut beschrieben, aber Bilder sagen meist mehr, als Worte es jemals wiedergeben können:
Nachdem man im Side-Bar-Panel auf Internet → Freigaben geht, bekommt man folgende Übersicht geboten. Jetzt noch einen Klick auf dem Tab VPN (WireGuard). Jeder sollte sich den Text in Ruhe durchlesen, und wenn man ihn verstanden hat, dann kann man mit einem Klick auf den Button Verbindung hinzufügen fortfahren.
Jetzt bekommt man eine Abfrage, ob man einen Client zur FritzBox oder eine FritzBox zur FritzBox verbinden möchte. Man wähle hier jetzt die erste Option Smartphone, Tablet oder Computer und drücke den Button Weiter.
Welcher Name soll vergeben werden für diese Verbindung mit WireGuard? Dieser Name steht dann später in der Übersicht, die wir als Erstes gesehen haben. Sofern ein geeigneter Name vergeben wurde, drücke man auf den Button Fertigstellen. Jetzt kommt eine Aufforderung mit einem Telefon, welches mit der FritzBox verbunden ist, einen vordefinierten PIN einzugeben, um die Einstellung zu erlauben. Sollte man kein Telefon zur Hand haben, genügt es, eine Hardware-Taste auf der FritzBox zu drücken (es sollten sämtliche LEDs grün leuchten). Nachdem ein Hardware Button gedrückt wurde, sollten wieder nur die LEDs leuchten, die wirklich aktiviert waren. In meinem Fall waren es die LEDs für Internet und Telefon.
Man kann jetzt mit dem Punkt 3. Smartphone – WireGuard verbinden anfangen und dann hierher zurückkehren, wenn es erfolgreich eingebunden wurde. Bitte den Hinweis lesen, der ist wichtig und besagt, dass nur ein Gerät mit dieser Konfigurationsdatei verbunden werden darf. Button Schließen drücken, um die Einrichtung abzuschließen.
Man kann auch auf den Button Einstellungen herunterladen drücken, um eine wg_config.conf zu erhalten, die man in seine Anwendung hinterlegt. Folgt man nun 4. Computer – WireGuard verbinden und kommt zu diesem FritzBox Einrichtungsbildschirm zurück. Bitte den Hinweis lesen, der ist wichtig und besagt, dass nur ein Gerät mit dieser Konfigurationsdatei verbunden werden darf. Button Schließen drücken, um die Einrichtung abzuschließen.
Wenn man per Smartphone, Tablet oder Computer die Einrichtung vorgenommen hat, dann kann man dieses Fenster mit dem Button Weiter zur Übersicht drücken und schließt dieses Fenster und kommt zur Übersicht zurück. Jetzt sollte man folgenden Eintrag vorfinden, den man selbst gewählt hatte.
Man kann jetzt beliebig viele weiter hinzufügen, dazu einfach die Schritte wiederholen. Sollte man eine Verbindung deaktivieren wollen, dann einfach bei Aktiv den Haken entfernen. Falls die Verbindung gar nicht mehr gebraucht wird, dann einfach das Icon Trash/Mülleimer drücken, dann wird die Verbindung aus der FritzBox geworfen und dann muss diese auch beim Smartphone, Tablet oder Computer entfernt werden, da diese nun ungültig geworden ist.
Somit ist jetzt die FritzBox mit einer WireGuard-Komponente ausgestattet und kann von überall genutzt werden.
Hinweis: Bei VPN‑Verbindungen sollte man darauf achten, dass die aktuelle lokale IP‑Adresse nicht dieselbe ist wie die zu Hause in der FritzBox hinterlegte, da ansonsten ein Konflikt entsteht. Das hatte ich mit der normalen VPN‑Verbindung mal gehabt; ich erwähne es, um das Troubleshooting einfach zu halten. Dass diese kleinen Fehler nicht wiederholt werden müssen.
2.1. Smartphone – Wireguard verbinden
Im App-Store seines Herstellers (Android Play-Store/Apple) geschaut und nach folgender App gesucht und installiert. Ich hoffe, dass ich hier die richtige App ausgesucht habe (bitte selbst nochmal kontrollieren – keine dubiosen Apps herunterladen). Wenn das geklärt ist, folgt nun die Einrichtung.
Jetzt einfach im unteren rechten Teil des Bildschirms auf den Button + drücken, um eine neue Verbindung einzurichten.
Man hat jetzt drei Sachen zur Auswahl, aber man nehme den Eintrag mit QR-Code viel einfacher. Dann einfach den QR-Code am Bildschirm einfangen, also drüberhalten, bis die App es registriert, dann folgt folgender Bildschirm.
Jetzt wieder einen schönen Namen vergeben. Ich habe einfach denselben vergeben, wie ich ihn in der FritzBox genannt habe, und dann auf den Button Tunnel erstellen gedrückt.
Wenn der Import/Importieren erfolgreich war, dann sollte jetzt in der Übersicht ein neuer Eintrag erscheinen. Diesen kann man nun aktivieren und deaktivieren.
Wenn dieser aktiviert ist, sieht es so aus und in der Statusleiste sollte ein Schlüssel zu sehen sein. Der Schlüssel gibt an, dass das VPN nun aktiv ist.
Damit ist die Einrichtung am Smartphone abgeschlossen und man kann die Einrichtung im Browser beenden.
2.2. Computer – Wireguard verbinden
Einfach dazu die WireGuard-Anwendung herunterladen oder eine alternative Software, die WireGuard Konfigurationsdateien unterstützt. Dann folge man den Einrichtungshinweisen von der Software und gebe dann die Konfigurationsdatei an (Import/Importieren). Damit ist die Einrichtung am Smartphone abgeschlossen und man kann die Einrichtung im Browser beenden.
3. Dienst NextCloud per Docker (Einfacher)
Man muss erst einmal die Docker-Anwendung installieren docker.io und docker-compose jeder sollte dazu seine eigene Paketverwaltung des Vertrauens nutzen. (apt, apt-get, pacman, dnf, usw.)
Folgende Ordnerstruktur sollte man sich anlegen:
/ nextcloudimage
├ docker-compose.yml
├ cleanup.sh
├ / letsencrypt
│ └ ...
├ / letsencrypt_config
│ └ ...
├ letsencrypt.log
├ / letsencrypt_config
├ Caddyfile
├ / caddy_data
│ └ ...
├ / caddy_config
│ └ ...
└ .venv
└ ... python spezifische Sachen
# Ordnerstruktur erstellen
mkdir -p ~/nextcloudimage/{letsencrypt,letsencrypt_config,caddy_data,caddy_config}
touch ~/nextcloudimage/{docker-compose.yml,cleanup.sh,letsencrypt.log,Caddyfile}
cd ~/nextcloudimage/
Zertifikat holen von DuckDNS ganz einfach per Python: (1x mal DUCKDNS-TOKEN-ID, 1x mal DUCKDNS-DOMAIN-NAME und DEINE-EMAIL-ADDRESSE-HERE vorhanden)
# Ins Verzeichniswechseln falls nicht schon geschehen
cd ~/nextcloudimage/
# Debian / Ubuntu (Install Beispiel)
apt-get install python3-pip
# Virtual Environment erstellen
python3 -m venv .venv
# Betreten des Virtual Environment
source .venv/bin/activate
# Pip aktuallisieren (for good mesure)
pip install --upgrade pip
# certbot für DuckDNS spezifisch
pip install certbot-dns-duckdns
# Das Zertifikat von Let'sEncrypted ausstellen lassen über DuckDNS
export DUCKDNS_EMAIL=DEINE-EMAIL-ADDRESSE-HERE
export DUCKDNS_TOKEN=DUCKDNS-TOKEN-ID
export DUCKDNS_DOMAIN=DUCKDNS-DOMAIN-NAME.duckdns.org
# Alle 90 Tage muss man folgenden Befehl ausführen:
certbot certonly --config-dir letsencrypt_config/ --work-dir letsencrypt --logs-dir letsencrypt.log/ --authenticator dns-duckdns --dns-duckdns-token ${DUCKDNS_TOKEN} --dns-duckdns-propagation-seconds 240 --email ${DUCKDNS_EMAIL} --agree-tos -d ${DUCKDNS_DOMAIN}
# Virtual Environment verlassen
deactivate
Die docker-compose.yml Datei sieht wie folgt aus. Aber folgende Sachen müssen unbedingt ersetzt werden: (1x mal ROOTPASSWORT, 2x mal USERNAME und 2x mal USERPASSWORT vorhanden)
# docker-compose.yml
services:
dbnextcloud:
image: mariadb:latest
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ROOTPASSWORT
MYSQL_DATABASE: nextcloud
MYSQL_USER: USERNAME
MYSQL_PASSWORD: USERPASSWORT
volumes:
- db_data:/var/lib/mysql
networks:
- nextcloud_net
appnextcloud:
image: nextcloud:latest
depends_on:
- dbnextcloud
ports:
- 8080:80
links:
- dbnextcloud
volumes:
- nextcloud_data:/var/www/html
- /var/run/docker.sock:/var/run/docker.sock #
Quellen:
[1] Mein Köpfchen und sämtliche Bilder sind selbst erstellt oder Screenshots






Ich habe einen recht ähnlichen setup, mit der nextcloud nur via wireguard erreichbar, jedoch mit etwas mehr bastelarbeit (pivpn). Was mich interessieren würde, kann man ein lets-encrypt zertifikat auch bekommen ohne, dass die Seite jemals online erreichbar ist? Ich lasse die Verbindung nur über Wireguard zu und habe hier ein self signed zertifikat genutzt, das war aber eine sehr frickelige lösung.