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

170 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[🇬🇧 English version](README.md)
# 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
- Python 3
- Konto IONOS z dostępem do **Developer API**
- Klucz API (Prefix + Secret) wygenerowany na:
https://developer.hosting.ionos.com/
---
## Instalacja
### 1. Sklonuj repozytorium do `/opt`
Zalecana lokalizacja systemowa:
```bash
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