ionos-ddns/README.md
2026-01-29 20:50:26 +00:00

93 lines
2.3 KiB
Markdown

# IONOS DDNS Auto-Updater & Creator
A Python-based system service that automatically updates DNS records on IONOS. Unlike standard DDNS scripts, this solution uses the **IONOS REST API**, allowing it to:
1. **Update** existing DNS records.
2. **Create** new DNS records automatically if they don't exist.
3. Check the current DNS value before updating to avoid API rate limits.
## Features
- **Smart Check:** Compares public IP with current DNS resolution before sending API requests.
- **Auto-Discovery:** Automatically detects which DNS Zone a subdomain belongs to.
- **System Service:** Runs as a background `systemd` service with crash protection.
- **Logging:** Detailed logs in `/var/log/ionos-ddns.log`.
## Prerequisites
- Python 3
- An IONOS account with access to the "Developer API".
- An API Key (Prefix + Secret) generated at [developer.hosting.ionos.com](https://developer.hosting.ionos.com/).
## Installation
### 1. Clone the repository to `/opt`
It is recommended to install this in a system directory.
```bash
sudo mkdir -p /opt/ionos-ddns
sudo git clone [https://github.com/TWOJA_NAZWA/ionos-ddns.git](https://github.com/TWOJA_NAZWA/ionos-ddns.git) /opt/ionos-ddns
cd /opt/ionos-ddns
```
### 2. Install dependencies
```
sudo apt update
sudo apt install python3-pip
sudo pip3 install -r requirements.txt
```
### 3. Configuration
```
sudo nano config.json
```
Fill in your api_prefix and api_secret.
Domains List: Edit domains.txt and add domains one per line:
```
sudo nano domains.txt
```
Example:
```
mydomain.com
vpn.mydomain.com
server.other-domain.net
```
### 4. Install System Service
Copy the service file to systemd directory:
```
sudo cp ionos-ddns.service /etc/systemd/system/
```
Reload daemon, enable and start the service:
```
sudo systemctl daemon-reload
sudo systemctl enable ionos-ddns.service
sudo systemctl start ionos-ddns.service
```
### Monitoring
Check the service status:
```
sudo systemctl status ionos-ddns.service
```
View logs:
```
tail -f /var/log/ionos-ddns.log
```
### How it works
The script runs in an infinite loop (every 10 minutes).
Fetches your current Public IP.
Reads domains.txt.
For each domain:
Finds the correct Zone ID via API.
Checks if an A-Record exists.
If exists: Checks if IP matches. If not, performs PUT (Update).
If missing: Performs POST (Create).