[GH-ISSUE #2330] High Availability solution with Nginx Proxy Manager #1652

Open
opened 2026-02-26 07:31:55 +03:00 by kerem · 7 comments
Owner

Originally created by @kamilkobak on GitHub (Oct 18, 2022).
Original GitHub issue: https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2330

I tried to do a High Availability solution with Nginx Proxy Manager + Keepalived + inotify-tools but there is a problem with auto-reading configuration on the second NPM. NPM configuration is synchronized between hosts using inotify but to read it you need to restart NPM on the other host. Has anyone done HA for NPM? Maybe the solution would be to keep the configuration in the database.

Originally created by @kamilkobak on GitHub (Oct 18, 2022). Original GitHub issue: https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2330 I tried to do a High Availability solution with Nginx Proxy Manager + Keepalived + inotify-tools but there is a problem with auto-reading configuration on the second NPM. NPM configuration is synchronized between hosts using inotify but to read it you need to restart NPM on the other host. Has anyone done HA for NPM? Maybe the solution would be to keep the configuration in the database.
Author
Owner

@the1ts commented on GitHub (Oct 19, 2022):

@kamilkobak do you want 2 NPM or one NPM and a second failover nginx, if so I guess that would be easier. Only requiring inotify to check on changes to parts of the data docker volume. Either way the second nginx will have to be reloaded and sometimes restarted depending on what was changed.

<!-- gh-comment-id:1283587573 --> @the1ts commented on GitHub (Oct 19, 2022): @kamilkobak do you want 2 NPM or one NPM and a second failover nginx, if so I guess that would be easier. Only requiring inotify to check on changes to parts of the data docker volume. Either way the second nginx will have to be reloaded and sometimes restarted depending on what was changed.
Author
Owner

@kamilkobak commented on GitHub (Oct 20, 2022):

HA is 2 NPM running at the same time and connections from outside are routed by 1 or 2 NPM depending on where the external IP will be assigned using Keepalived

<!-- gh-comment-id:1285453457 --> @kamilkobak commented on GitHub (Oct 20, 2022): HA is 2 NPM running at the same time and connections from outside are routed by 1 or 2 NPM depending on where the external IP will be assigned using Keepalived
Author
Owner

@the1ts commented on GitHub (Oct 20, 2022):

I don't think that can be done with simply sharing the data and database, how will each NPM know if the other has already done a piece of work? unless NPM is built to have this understanding from day one. Given its mission statement of being to "provide users with a easy way to accomplish reverse proxying hosts with SSL termination and it had to be so easy that a monkey could do it" I would think that NPM was not built with HA in mind.
Also given how often letsencrypt has to be run, once successfully in a month period (NPM tries a renew from month 2 of the 3 month cert), my first point stands isn't nginx without NPM able to be HA in a much easier fashion now.

<!-- gh-comment-id:1285500360 --> @the1ts commented on GitHub (Oct 20, 2022): I don't think that can be done with simply sharing the data and database, how will each NPM know if the other has already done a piece of work? unless NPM is built to have this understanding from day one. Given its mission statement of being to "provide users with a easy way to accomplish reverse proxying hosts with SSL termination and it had to be so easy that a monkey could do it" I would think that NPM was not built with HA in mind. Also given how often letsencrypt has to be run, once successfully in a month period (NPM tries a renew from month 2 of the 3 month cert), my first point stands isn't nginx without NPM able to be HA in a much easier fashion now.
Author
Owner

@BlindBadgerStudios commented on GitHub (Sep 13, 2023):

I think just basic failover as an option would be great...inotify and keepalived. Alternatively, having this available as a non-docker install and letting people install inotify/keepalived themselves if they want to go that route would be a good option. It's reasonably well documented elsewhere and can keep the core of this project focussed on the NPM UI and experience while allowing people to simply mirror the configs.

<!-- gh-comment-id:1717781943 --> @BlindBadgerStudios commented on GitHub (Sep 13, 2023): I think just basic failover as an option would be great...inotify and keepalived. Alternatively, having this available as a non-docker install and letting people install inotify/keepalived themselves if they want to go that route would be a good option. It's reasonably well documented elsewhere and can keep the core of this project focussed on the NPM UI and experience while allowing people to simply mirror the configs.
Author
Owner

@github-actions[bot] commented on GitHub (Apr 24, 2024):

Issue is now considered stale. If you want to keep it open, please comment 👍

<!-- gh-comment-id:2073841889 --> @github-actions[bot] commented on GitHub (Apr 24, 2024): Issue is now considered stale. If you want to keep it open, please comment :+1:
Author
Owner

@BigFlubba commented on GitHub (May 19, 2025):

I would 100% be in need of this. So far, NPM is running on my main Docker instance. I try to keep reboots and downtime to a minimum, but because it is also a testing environment for new containers, issues do happen, HA NPM would help a lot as I am transitioning everything from IP addresses to HTTPS URLs.

<!-- gh-comment-id:2889385239 --> @BigFlubba commented on GitHub (May 19, 2025): I would 100% be in need of this. So far, NPM is running on my main Docker instance. I try to keep reboots and downtime to a minimum, but because it is also a testing environment for new containers, issues do happen, HA NPM would help a lot as I am transitioning everything from IP addresses to HTTPS URLs.
Author
Owner

@github-actions[bot] commented on GitHub (Dec 29, 2025):

Issue is now considered stale. If you want to keep it open, please comment 👍

<!-- gh-comment-id:3695274328 --> @github-actions[bot] commented on GitHub (Dec 29, 2025): Issue is now considered stale. If you want to keep it open, please comment :+1:
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/nginx-proxy-manager-NginxProxyManager#1652
No description provided.