Add Nebula Sync to PD Pi-hole stack

This commit is contained in:
Fizzlepoof
2026-05-15 15:11:50 +00:00
parent c7baa0054f
commit 66dda26f98
3 changed files with 26 additions and 2 deletions

View File

@@ -16,3 +16,10 @@ KEEPALIVED_STATE=MASTER
KEEPALIVED_PRIORITY=100 KEEPALIVED_PRIORITY=100
KEEPALIVED_PASSWORD=CHANGE01 KEEPALIVED_PASSWORD=CHANGE01
KEEPALIVED_NOPREEMPT=true KEEPALIVED_NOPREEMPT=true
# Nebula Sync (PD primary -> replicas)
NEBULA_SYNC_PRIMARY=http://127.0.0.1:8953|CHANGE_ME
NEBULA_SYNC_REPLICAS=http://10.5.1.5:8954|CHANGE_ME
NEBULA_SYNC_FULL_SYNC=false
NEBULA_SYNC_RUN_GRAVITY=true
NEBULA_SYNC_CRON=0 3 * * *

View File

@@ -7,10 +7,11 @@ Primary-node stack for the Pi-hole HA plan.
- **Node role:** PD primary / MASTER - **Node role:** PD primary / MASTER
- **VIP target:** `10.5.1.53/24` - **VIP target:** `10.5.1.53/24`
This stack intentionally covers the **PD primary** only: This stack intentionally covers the **PD primary** plus PD-hosted sync:
- Pi-hole - Pi-hole
- Unbound - Unbound
- Keepalived - Keepalived
- Nebula Sync
Serenity and RPi4 replicas still need their own deployment steps. Serenity and RPi4 replicas still need their own deployment steps.
@@ -43,5 +44,6 @@ If that validates cleanly, bring it up:
- `KEEPALIVED_PASSWORD` must be **8 chars or fewer** because VRRP PASS auth is annoying and old. - `KEEPALIVED_PASSWORD` must be **8 chars or fewer** because VRRP PASS auth is annoying and old.
- Verify `LAN_INTERFACE` on PD before deployment (`ip link show`). - Verify `LAN_INTERFACE` on PD before deployment (`ip link show`).
- `FTLCONF_dns_listeningMode=LOCAL` is set because TrueNAS binds loopback on port 53. - `FTLCONF_dns_listeningMode=LOCAL` is set because TrueNAS binds loopback on port 53.
- This stack does **not** include Nebula Sync yet. Add that after Serenity/RPi replicas are live. - Pi-hole NTP is explicitly disabled here because PD host `chronyd` already owns UDP 123.
- Nebula Sync runs on PD and uses `NEBULA_SYNC_PRIMARY` / `NEBULA_SYNC_REPLICAS` from `.env`.
- `keepalived.conf` is generated and should stay local/untracked. - `keepalived.conf` is generated and should stay local/untracked.

View File

@@ -60,3 +60,18 @@ services:
- NET_RAW - NET_RAW
volumes: volumes:
- ./keepalived.conf:/usr/local/etc/keepalived/keepalived.conf:ro - ./keepalived.conf:/usr/local/etc/keepalived/keepalived.conf:ro
nebula-sync:
image: lovelaze/nebula-sync:latest
container_name: nebula-sync
network_mode: host
restart: unless-stopped
depends_on:
pihole:
condition: service_healthy
environment:
PRIMARY: ${NEBULA_SYNC_PRIMARY}
REPLICAS: ${NEBULA_SYNC_REPLICAS}
FULL_SYNC: ${NEBULA_SYNC_FULL_SYNC}
RUN_GRAVITY: ${NEBULA_SYNC_RUN_GRAVITY}
CRON: ${NEBULA_SYNC_CRON}