Änderungsstand: 2021-08-30
Hier wird ein DynDNS-Dienst eingerichtet. Ich verwende hierfür DuckDNS. Wer keinerlei Ambitionen hat, seine Dienste von Außen zugänglich zu machen, kann diesen und den folgenden Guide (Nginx Proxy Manger) ignorieren.
Der Dienst DuckDns sorgt dafür, dass der Server aus dem Internet immer mit dem Domainnamen erreichbar ist. Auch nach einer Trennung des Internets und einer Neuvergabe der Internet-IP-Adresse durch den Router. Aller 5 Minuten wird die IP-Adresse durch DuckDNS-Docker abgecheckt. Es kann also passieren, dass im schlimmsten Fall Euer Server nach einem IP-Reset, 5 Minuten von Außen nicht erreichbar ist. Damit kann man leben.
Zuerst wird ein DuckDNS Account benötigt, den man hier registrieren kann. Nach der Registrierung hat man die Möglichkeit, bis zu 5 Domains anzulegen. Die angelegte(n) Domain(s) und das Token werden später im Docker benötigt. Theoretisch benötigt man nur eine einzige angelegte Domain, da ich für die Verwaltung Nginx Proxy Manager verwende und dieser mit Subdomains umgehen kann. Ich registrierte für meine Beispiele in dieser Guidreihe die Domain „clusterfarm.duckdns.org“.
Jetzt füge ich DuckDNS meinem Swarm hinzu. In diesem Beispiel verwende ich dafür Portainer. Zuerst lege ich mir das Konfigurationsverzeichnis auf meiner externen Platte an. Im Gegensatz zur normalen Docker-Compose kann Portainer bzw. der zu erstellende Service keine Verzeichnisse selbst anlegen. Auch hier wieder 2 Möglichkeiten. Einmal als Stack und einmal als Service. Ich bevorzuge mittlerweile Stacks.
Login am ersten Manager:
sudo mkdir -p /mnt/data/duckdns
Als Stack:
- Portainer öffnen
- Stacks
- + Add stack
- Name: dyndns
- Web editor: Folgenden Code eingeben:
version: "3.2"
services:
duckdns:
image: ghcr.io/linuxserver/duckdns
volumes:
- /mnt/data/duckdns:/config
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
- SUBDOMAINS=clusterfarm
- TOKEN=DASDUCKDNSTOKEN
- LOG_FILE=true
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == worker]
restart_policy:
condition: any
networks:
- dns_network
networks:
dns_network:
driver: overlay
attachable: true
Actions: Deploy the stack
Der Stack wird gestartet und und der Service arbeitet selbstständig. Hier ist kein Eingriff notwendig. Es wird nun aller 5 Minuten die IP-Adresse abgeglichen. Hat man das erledigt, könnte man nun einen Reverse-Proxy seiner Wahl erstellen. Ich verwende Nginx Proxy Manager, der im nächsten Guide vorgestellt wird.
Als Service:
Wer die Installation als Stack erledigt hat, benötigt das nicht mehr.
- Portainer öffnen
- „Services“ wählen
- +Add service
- Name: DynDNS
- Image: ghcr.io/linuxserver/duckdns
- Scheduling mode: Replicated
- Replicas: 1
- „Volumes“ (steht etwas weiter unten)
- +map additional volumes
- container: /config
- dahinter anschließend „Bind“ anklicken
- host: /mnt/data/duckdns
- „Update config & Restart“
- Restart condition: Any
- „Env“
- +Add an environment variable (6x klicken)
- name: PUID | value: 1000
- name: PGID | value: 1000
- name: TZ | value: Europe/Berlin
- name: SUBDOMAINS | value: clusterfarm
- name: TOKEN | value: DASDUCKDNSTOKEN
- name: LOG_FILE | true
- „Ressources & Placement“
- +placement constraint
- name: node.role | value: worker
- Actions: „Create the service“ anklicken (steht leicht oberhalb)
- +Add service
Der Service wird gestartet und arbeitet selbstständig. Hier ist kein Eingriff notwendig. Es wird nun aller 5 Minuten die IP-Adresse abgeglichen. Hat man das erledigt, könnte man nun einen Reverse-Proxy seiner Wahl erstellen. Ich verwende Nginx Proxy Manager, der im nächsten Guide vorgestellt wird.
Quelle: