Restoring Nginx Proxy Manager from Backup
This guide walks you through restoring your Nginx Proxy Manager (NPM) Docker container from a backup on an OpenMediaVault system.
๐ง Prerequisites
-
OpenMediaVault system with Docker and Docker Compose installed
-
Backups of the following folders:
-
nginx-proxy-manager-data -
nginx-proxy-manager-letsencrypt
-
-
Directory location to restore into (e.g.,
/srv/dev-disk-by-uuid-xxx/HELCONFIG/nginx/)
๐ Folder Structure
Ensure the target directory structure looks like this:
HELCONFIG/
โโโ nginx/
โโโ nginx-proxy-manager-data/
โโโ nginx-proxy-manager-letsencrypt/
๐ฆ Working Docker Compose File
Place the following docker-compose.yml in the nginx folder:
version: '3'
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./nginx-proxy-manager-data:/data
- ./nginx-proxy-manager-letsencrypt:/etc/letsencrypt
๐ Restore Backups
Use the following commands to copy your backup data into the live configuration folder:
# letsencrypt
sudo cp -a /path/to/backup/nginx-proxy-manager-letsencrypt/. /srv/dev-disk-by-uuid-xxx/HELCONFIG/nginx/nginx-proxy-manager-letsencrypt/
# data
sudo cp -a /path/to/backup/nginx-proxy-manager-data/. /srv/dev-disk-by-uuid-xxx/HELCONFIG/nginx/nginx-proxy-manager-data/
Ensure trailing /. is used to copy contents only.
๐ Start Container
Once restored:
cd /srv/dev-disk-by-uuid-xxx/HELCONFIG/nginx/
sudo docker compose up -d
๐งช Troubleshooting
โ Can't create network
Error: could not find an available, non-overlapping IPv4 address pool
Fix:
sudo docker network prune
โ Container fails with alias error
Error: network-scoped alias is supported only for user-defined networks
Fix: Define and use a custom bridge network:
sudo docker network create nginx_network
Then add to docker-compose.yml:
networks:
default:
external:
name: nginx_network
โ Can't access web interface
-
Check container logs:
sudo docker logs nginx-proxy-manager
-
Ensure ports are published correctly (
80,81,443) -
Check firewall / router rules
โ SSL Renewal Errors
expected .../cert.pem to be a symlink
These indicate broken or partial LetsEncrypt data. Copy the backup of the letsencrypt folder and ensure correct permissions.
โ Login Defaults
Once online, access via:
http://[host-IP]:81
Default credentials:
Email: admin@example.com
Password: changeme
๐ Notes
-
Always stop the container before copying data
-
Use
docker compose downif needed before restoring -
Check
database.sqlitetimestamp to confirm restoration
๐ Optional: Full Refresh
If issues persist, delete the container and volumes, then redeploy and restore the backups fresh:
sudo docker compose down
sudo rm -rf nginx-proxy-manager-data nginx-proxy-manager-letsencrypt
# Then restore backups and re-up
For any further help, ensure Docker is up-to-date and Portainer (if used) is refreshed to reflect changes.