Using Podman Quadlets for Dynamic DNS with desec.io.
Table of Contents
Dynamic DNS (DDNS) automatically updates DNS records when your IP address changes. This guide shows how to set up DDNS using ddns-updater, desec.io, and Podman Quadlets.
Setup
1. Create Kubernetes YAML
Create /opt/container/ddns-updater/kube.yaml
(rootfull) or ~/container/ddns-updater/kube.yaml
(rootless):
---
apiVersion: v1
kind: Pod
metadata:
labels:
app: ddns-updater
io.containers.autoupdate: registry
name: ddns-updater
spec:
containers:
- image: docker.io/qmcgaw/ddns-updater:latest
name: v4
env:
- name: LOG_LEVEL
value: INFO
- name: SERVER_ENABLED
value: "false"
- name: PERIOD
value: 5m
- name: CONFIG
value: >
{
"settings": [
{
"provider": "desec",
"domain": "ddns.example.com",
"token": "your_desec_token_here",
"ip_version": "ipv4"
}
]
}
- image: docker.io/qmcgaw/ddns-updater:latest
name: v6
env:
- name: LOG_LEVEL
value: INFO
- name: SERVER_ENABLED
value: "false"
- name: HEALTH_SERVER_ADDRESS
value: "127.0.0.1:9998"
- name: PERIOD
value: 5m
- name: CONFIG
value: >
{
"settings": [
{
"provider": "desec",
"domain": "ddns.example.com",
"ipv6_suffix": ""
"token": "your_desec_token_here",
"ip_version": "ipv6"
}
]
}
2. Create Podman Quadlet
Create /etc/containers/systemd/ddns-updater.kube
(rootfull) or ~/.config/containers/systemd/ddns-updater.kube
(rootless):
[Install]
WantedBy=default.target
[Unit]
Description=Dynamic DNS Updater for desec.io
After=network-online.target
Wants=network-online.target
[Kube]
Yaml=/opt/container/ddns-updater/kube.yaml
Network=host
[Service]
Restart=always
RestartSec=10
TimeoutStartSec=900
3. Enable and Start
For rootfull:
sudo systemctl daemon-reload
sudo systemctl enable --now ddns-updater
For rootless:
systemctl --user daemon-reload
systemctl --user enable --now ddns-updater
Monitoring
Check status:
# rootfull
systemctl status ddns-updater
# rootless
systemctl --user status ddns-updater
View logs:
podman logs ddns-updater-v4
podman logs ddns-updater-v6
Test DNS resolution:
dig +short A ddns.example.com
dig +short AAAA ddns.example.com