ionos-ddns/README.md
2026-01-29 20:48:58 +00:00

91 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).