feat(server/ddns): implement DDNS support using inadyn

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-07-10 16:45:45 +02:00
parent 90bac3a306
commit 4d84398657
Signed by: mfocko
SSH key fingerprint: SHA256:5YXD7WbPuK60gxnG6DjAwJiS9+swoWj33/HFu8g8JVo
4 changed files with 66 additions and 0 deletions

View file

@ -0,0 +1,7 @@
[Unit]
Description=Run inadyn in a container to update DNS
After=network.target
[Service]
Type=oneshot
ExecStart=podman run --rm -v "/etc/inadyn.conf:/etc/inadyn.conf" -v "/var/cache/inadyn:/var/cache/inadyn" docker.io/troglobit/inadyn:latest -1 --cache-dir=/var/cache/inadyn

View file

@ -0,0 +1,10 @@
[Unit]
Description=Run inadyn every 15 minutes
[Timer]
OnCalendar=*:00,15,30,45:00
RandomizedDelaySec=1h
Persistent=true
[Install]
WantedBy=timers.target

View file

@ -0,0 +1,34 @@
---
- name: Install the config file
ansible.builtin.template:
src: templates/inadyn.conf
dest: /etc/inadyn.conf
mode: 0600
owner: root
group: root
- name: Create the cache directory
ansible.builtin.file:
path: /var/cache/inadyn
state: directory
mode: 0700
owner: root
group: root
- name: Install the unit files
ansible.builtin.copy:
src: files/{{ item }}
dest: /etc/systemd/system/{{ item }}
mode: 0644
owner: root
group: root
loop:
- ddns.service
- ddns.timer
- name: Enable the timer
ansible.builtin.systemd_service:
daemon_reload: true
enabled: true
name: ddns.timer
state: "started"

View file

@ -0,0 +1,15 @@
period = 300
allow-ipv6 = true
provider cloudflare.com:1 {
username = mfocko.xyz
password = {{ cloudflare_token }}
hostname = mountainside.mfocko.xyz
}
provider cloudflare.com:2 {
username = mfocko.xyz
password = {{ cloudflare_token }}
hostname = mountainside.mfocko.xyz
wildcard = true
}