Skip to main content

Restoring Nginx Proxy Manager from Backup

Restoring Nginx Proxy Manager from Backup (OpenMediaVault/Docker)

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 down if needed before restoring

  • Check database.sqlite timestamp 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.