# Setting Up Redundant Nginx Proxy Manager on Two DietPi Nodes—Best Practices for Syncing Configs & Load-Balancing?

**URL:** https://dietpi.com/forum/t/setting-up-redundant-nginx-proxy-manager-on-two-dietpi-nodes-best-practices-for-syncing-configs-load-balancing/23538
**Category:** General Discussion
**Created:** [30 May 2025 21:20 UTC](https://dietpi.com/forum/t/setting-up-redundant-nginx-proxy-manager-on-two-dietpi-nodes-best-practices-for-syncing-configs-load-balancing/23538 "2025-05-30T21:20:55Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![SudoMason](https://dietpi.com/forum/user_avatar/dietpi.com/sudomason/32/7728_2.png) [@SudoMason](https://dietpi.com/forum/u/SudoMason)
#### Post date: [30 May 2025 21:20 UTC](https://dietpi.com/forum/t/setting-up-redundant-nginx-proxy-manager-on-two-dietpi-nodes-best-practices-for-syncing-configs-load-balancing/23538/1 "2025-05-30T21:20:55Z")

</div>

Hey everyone 👋,

I’m running two DietPi boards devoted to network duties (Pi-hole, Unbound, Tailscale). My **primary** node currently handles all reverse-proxy traffic via **Nginx Proxy Manager (NPM)** in Docker/Portainer and works great, but every reboot means downtime. I’d like to introduce **redundancy** by spinning up NPM on the **secondary** node and putting a load-balancer in front.

### What I’ve done so far

1. **Installed Docker, Compose & Portainer** on the secondary Pi.

2. Tried deploying NPM there, but Portainer threw:

3. Discovered that **HAProxy** , which I had just installed from `dietpi-software`, was already listening on :80.

4. Removed HAProxy → redeployed NPM → stack came up fine.

### The plan

- **Sync configs/certs** from primary → secondary (thinking cron + rsync).
- Re-install **HAProxy** (or another LB) to provide a single virtual IP in Pi-hole’s local DNS, then split traffic to whichever NPM is alive.

### What I’m unsure about

1. **Config Sync:** Is a simple `rsync` cron job the safest way to keep `/docker/nginx-proxy-manager` (or wherever you store your configs + LetsEncrypt certs) identical between boxes? Any gotchas with live cert renewals?
2. **Load-balancer Choice:** Is HAProxy (from DietPi’s repo) the right tool here, or would you recommend something else like Keepalived, Traefik, or even Nginx itself in active-passive?
3. **Port Conflicts:** After HAProxy is back, how do you cleanly avoid the :80/:443 bind clash while still off-loading TLS to NPM?

Would love to hear how others solved this or any best-practice pointers before I break production again. Thanks!

---

<div class="post-metadata">

### Author: ![Joulinar](https://dietpi.com/forum/user_avatar/dietpi.com/joulinar/32/57_2.png) [@Joulinar](https://dietpi.com/forum/u/Joulinar)
#### Post date: [31 May 2025 06:55 UTC](https://dietpi.com/forum/t/setting-up-redundant-nginx-proxy-manager-on-two-dietpi-nodes-best-practices-for-syncing-configs-load-balancing/23538/2 "2025-05-31T06:55:38Z")

</div>

Personally, I don’t think this setup makes much sense, as you are placing an additional reverse proxy in front of an existing reverse proxy. In addition, HAProxy only has 1 instance. What happens if HAProxy is no longer running?

A better alternative might be `keepalived` + virtual IP. This gives you a virtual IP address that can switch from one SBC to the other depending on availability.

```auto
Client
  |
  | --> 192.168.1.100 (Floating IP)
            |
     +-------------+
     | |
 +-------+ +-------+
 | Pi #1 | | Pi #2 |
 | Nginx | | Nginx |
 +-------+ +-------+
     | |
     +------v-------+
            |
    +--------------------+
    | Webserver Backend |
    | (z.B. Pi #3, #4...)|
    +--------------------+

```

Another option would be Docker Swarm, since you are already using Docker anyway.

---

<div class="post-metadata">

### Author: ![SudoMason](https://dietpi.com/forum/user_avatar/dietpi.com/sudomason/32/7728_2.png) [@SudoMason](https://dietpi.com/forum/u/SudoMason)
#### Post date: [31 May 2025 19:55 UTC](https://dietpi.com/forum/t/setting-up-redundant-nginx-proxy-manager-on-two-dietpi-nodes-best-practices-for-syncing-configs-load-balancing/23538/3 "2025-05-31T19:55:52Z")

</div>

I will give this a try and report back. Thanks

---

<div class="post-metadata">

### Author: ![SudoMason](https://dietpi.com/forum/user_avatar/dietpi.com/sudomason/32/7728_2.png) [@SudoMason](https://dietpi.com/forum/u/SudoMason)
#### Post date: [1 June 2025 03:08 UTC](https://dietpi.com/forum/t/setting-up-redundant-nginx-proxy-manager-on-two-dietpi-nodes-best-practices-for-syncing-configs-load-balancing/23538/4 "2025-06-01T03:08:28Z")

</div>

Your suggestion worked well, but I skipped two-way syncing the nginx docker folders. Syncthing’s permission issues kept recurring, so I’m manually syncing for now until I find a better solution. Any ideas for reliable two-way sync that also restarts the nginx container on changes to reflect updates in the web interface?

Thanks again

---

<div class="post-metadata">

### Author: ![Joulinar](https://dietpi.com/forum/user_avatar/dietpi.com/joulinar/32/57_2.png) [@Joulinar](https://dietpi.com/forum/u/Joulinar)
#### Post date: [1 June 2025 04:21 UTC](https://dietpi.com/forum/t/setting-up-redundant-nginx-proxy-manager-on-two-dietpi-nodes-best-practices-for-syncing-configs-load-balancing/23538/5 "2025-06-01T04:21:58Z")

</div>

> [@SudoMason](#):
>
> Any ideas for reliable two-way sync that also restarts the nginx container on changes to reflect updates in the web interface?

I don’t think such a solution exists and you would need to create own scripts for this. Maybe Docker Swarm can handle this? But I’m not sure.

---

<div class="post-metadata">

### Author: ![system](https://dietpi.com/forum/uploads/default/original/1X/7e1021de2213860bce185915ce2c1786e56490ec.png) [@system](https://dietpi.com/forum/u/system)
#### Post date: [30 August 2025 04:22 UTC](https://dietpi.com/forum/t/setting-up-redundant-nginx-proxy-manager-on-two-dietpi-nodes-best-practices-for-syncing-configs-load-balancing/23538/6 "2025-08-30T04:22:03Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
