Swarm DuckDNS

Ä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)

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:

https://hub.docker.com/r/linuxserver/duckdns

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten