Problemstellung
Das Netzwerk soll von außen erreichbar sein, aber aus Gründen, nicht nur über eine Subdomain. Das könnte zB. dann der Fall sein, wenn man privat einige Seiten hosten möchte. Oder wenn nach einer Umstellung nicht gleich alle alten Installationen abgehangen werden dürfen.
Das eigentliche Problem ist dabei meist die beschränkte Einstellmöglichkeit des Routers. Zwar ließe sich theoretisch auch bei der Fritzbox mit einer Manipulation des Configfiles noch etwas mehr raus holen, doch ist das auch Updatesicher? Nicht nur das es ein Update überlebt, sondern sich dann auch noch editieren lässt… Zu viel Unsicherheit für einen Service, der ggf. dann ausfällt, wenn man ihn gerade dringend braucht, oder am wenigstens dran kommt ums zu fixen (meist eher zum Urlaubsbeginn als wenn man eh gerade dran arbeitet).
Problemlösung
Das ganze habe ich bei mir über ein Docker mit dem Image qmcgaw/ddns-updater gelöst:
- Image auf die SD-Karte (Raspberry Pi Imager, etwas ohne Desktop)
- Raspberry Pi damit hochfahren (reicht schon ab 2B)
- Folgendes Script ablegen und ausführen:
!/bin/bash
# Updaten etc.
sudo apt update && sudo apt upgrade -y && sudo autoremove -y
# Docker installieren
sudo apt install docker-compose -y
wfolder="/opt/portainer"
# Install Portainer
# Ordner erstellen
sudo mkdir $wfolder
# Compose-Datei anlegen und füllen
cd $wfolder
sudo sh -c "echo 'version: \"3\"
services:
portainer:
image: portainer/portainer-ce:latest
ports:
- \"9009:9009\"
environment:
TZ: \"Europe/Berlin\"
volumes:
- \"$wfolder/data:/data\"
- \"/var/run/docker.sock:/var/run/docker.sock\"
restart: unless-stopped
volumes:
data:' >> ./docker-compose.yml"
# Docker Container Starten
sudo docker-compose up -d
wfolder="/opt/ddns-updater"
# Install DDNS-updater
# Ordner erstellen
sudo mkdir $wfolder
# Compose-Datei anlegen und füllen
cd $wfolder
sudo sh -c "echo 'version: \"3\"
services:
ddns-update:
container_name: ddns-updater
image: qmcgaw/ddns-updater:latest
ports:
- \"8000:8000/tcp\"
environment:
TZ: \"Europe/Berlin\"
volumes:
- \"$wfolder/data:/updater/data\"
restart: unless-stopped' >> ./docker-compose.yml"
# Docker Container Starten
sudo docker-compose up -d
Die Konfiguration ist einfach beschrieben und muss nur noch in den passenden Ordner gelegt werden. Spätestens nach dem Neustart des Dockers läuft die Aktualisierung und ist über <IP des Servers>:8000 einzusehen:
Domain | Host | Provider | IP version | Update status | Set IP | Previous IPs (reverse chronological order) |
Domainname | Freier Name | Anbieter | IPv4/v6 | Aktuell oder Fehler | Deine externe IP | Historie oder Fehlermeldungen |
Probleme mit internen DNS-Servern
Wird intern ein DNS-Server verwendet, könnte es sein, dass dieser stört. Das lässt sich einfach umgehen, in dem die Variable RESOLVER_ADDRESS auf einen externen DNS-Server gesetzt wird, beispielsweise 208.67.222.222:53.