ionos-ddns/README.pl.md
2026-01-30 10:50:20 +00:00

3.7 KiB
Raw Permalink Blame History

🇬🇧 English version

IONOS DDNS Auto-Updater & Creator

Usługa systemowa w Pythonie, która automatycznie aktualizuje rekordy DNS w IONOS.
W przeciwieństwie do standardowych skryptów DDNS, to rozwiązanie używa IONOS REST API, dzięki czemu potrafi:

  1. Aktualizować istniejące rekordy DNS.
  2. Tworzyć nowe rekordy DNS automatycznie, jeśli nie istnieją.
  3. Sprawdzać aktualną wartość DNS przed aktualizacją, aby unikać limitów API.

Funkcje

  • Inteligentne sprawdzanie: porównuje publiczne IP z aktualnym rekordem DNS przed wysłaniem zapytania do API.
  • Auto-wykrywanie strefy: automatycznie ustala, do której strefy DNS należy dana domena/subdomena.
  • Usługa systemowa: działa jako usługa systemd z automatycznym restartem po błędzie.
  • Logowanie: szczegółowe logi w /var/log/ionos-ddns.log.

Wymagania


Instalacja

1. Sklonuj repozytorium do /opt

Zalecana lokalizacja systemowa:

sudo mkdir -p /opt/ionos-ddns
cd /opt
sudo git clone https://git.invelio.co.uk/rafal/ionos-ddns.git
cd /opt/ionos-ddns

2. Zainstaluj zależności

sudo apt update sudo apt install python3-pip sudo pip3 install -r requirements.txt

3. Konfiguracja

Edytuj plik konfiguracyjny:

sudo nano config.json

Uzupełnij: api_prefix api_secret

Lista domen edytuj plik domains.txt (jedna domena na linię):

sudo nano domains.txt

Przykład:

mydomain.com
vpn.mydomain.com
server.other-domain.net

Zabezpieczenie klucza API

Ponieważ config.json zawiera wrażliwe dane, ustaw prawa tylko dla roota:

sudo chown root:root /opt/ionos-ddns/config.json
sudo chmod 600 /opt/ionos-ddns/config.json

Nadaj prawa do uruchomienia skryptu:

sudo chmod +x /opt/ionos-ddns/update_ddns.py

4. Instalacja usługi systemowej

Skopiuj plik usługi:

sudo cp ionos-ddns.service /etc/systemd/system/

Przeładuj demona, włącz i uruchom usługę:

sudo systemctl daemon-reload
sudo systemctl enable ionos-ddns.service
sudo systemctl start ionos-ddns.service

Monitorowanie

Status usługi:

sudo systemctl status ionos-ddns.service

Podgląd logów:

tail -f /var/log/ionos-ddns.log

Jak to działa

Skrypt działa w pętli (co 10 minut):

Pobiera Twoje publiczne IP.

Wczytuje domains.txt.

Dla każdej domeny:

znajduje odpowiednie Zone ID przez API,

sprawdza czy istnieje rekord A,

jeśli istnieje → porównuje IP i wykonuje PUT (update),

jeśli nie istnieje → wykonuje POST (create).

BŁĄD: 400 Invalid API key format

Ten błąd oznacza, że serwer IONOS odrzucił klucz, ponieważ jego budowa jest nieprawidłowa.

Najczęstsze przyczyny:

Spacje (skopiowane przypadkiem przy wklejaniu).

Ręczne dodanie kropki w pliku config (skrypt sam dodaje kropkę!).

Zły typ klucza (klucz Cloud API zamiast Hosting/DNS API).

KROK 1: Sprawdź spacje w config.json

sudo nano /opt/ionos-ddns/config.json

Upewnij się, że cudzysłowy przylegają idealnie do znaków.

ŹLE (zwróć uwagę na spacje):

"api_prefix": " 23498723498 ",
"api_secret": " a1b2c3d4 "

DOBRZE:

"api_prefix": "23498723498",
"api_secret": "a1b2c3d4"

KROK 2: Nie dodawaj kropki w config.json

Skrypt w Pythonie zawiera linię:

"X-API-Key": f"{prefix}.{secret}"

On sam łączy te dwie wartości kropką.

Jeśli w config.json wpiszesz:

"api_prefix": "myPrefix."

skrypt wyśle:

myPrefix..secret

(co zawiera dwie kropki) i spowoduje błąd.

api_prefix → tylko pierwsza część klucza

api_secret → tylko druga, długa część klucza