Install Nginx Proxy Manager on Synology NAS

Learn how to install Nginx Proxy Manager on your Synology NAS and assign it a dedicated IP address to avoid port conflicts.

Install Nginx Proxy Manager on Synology NAS hero image

If you own a Synology NAS and want to manage your web services using domains and SSL certificates, Nginx Proxy Manager (NPM) is a great tool for the job. But what if the standard web ports 80 and 443 on your NAS are already occupied, for example, by the DSM interface or Web Station? No problem!

In this guide, I will show you how to install Nginx Proxy Manager using Docker and assign it its own dedicated IP address on your network. Just follow the steps, and soon your NPM will be running cleanly without port conflicts.

What You Need (Prerequisites)

  • A Synology NAS with DSM (DiskStation Manager).
  • The Container Manager (formerly Docker package) must be installed from the Package Center.
  • Basic understanding of your home network.
  • SSH access to your NAS.
  • A free IP address on your network that you can use for NPM.

Step 1: Gather Network Info & Prepare SSH

We need some information from your NAS.

  1. Connect to your Synology NAS via the web interface (DSM).
  2. Open the Control Panel.
  3. Go to Network > Network Interface.
  4. Find your active network connection (often “LAN 1” or “LAN 2”). Note down the IP address of your NAS (e.g., 192.168.178.6) and the Subnet mask (often 255.255.255.0). This subnet mask corresponds to the CIDR notation /24. Remember both well!
  5. In the Control Panel, switch to Terminal & SNMP.
  6. Check the box for Enable SSH service. The default port 22 is usually fine.
  7. Click Apply.

Now your NAS is ready for SSH access.

Step 2: Connect via SSH & Get Root Access

Open a terminal application on your computer (Terminal on macOS/Linux, PowerShell or PuTTY on Windows).

  1. Enter the following command, replacing YOUR_USERNAME with your Synology username and YOUR_NAS_IP with the IP address of your NAS:
    ssh YOUR_USERNAME@YOUR_NAS_IP
  2. If connecting for the first time, you’ll be asked if you trust the host’s fingerprint. Type yes and press Enter.
  3. Enter your Synology password (you won’t see characters while typing) and press Enter.
  4. You should now be logged into your NAS terminal. To execute commands with full privileges, become the root user:
    sudo -i
  5. Enter your password again and press Enter. Your prompt should change (often ending with #), indicating you are root. Caution: As root, you have full control – be careful!

Step 3: Find the Correct Network Interface

Docker Macvlan needs to know which physical network interface on your NAS it should communicate through.

  1. In the SSH terminal, enter the following command:
    ip addr
  2. You will see a list of network interfaces. Look for the one that has your NAS’s IP address (the one you noted in Step 1). The interface name is at the beginning of the line (e.g., eth0, eth1, ovs_eth0). In my case, it was eth1. Note down this name!

Step 4: Choose a Free IP Address for NPM

NPM needs its own IP. Choose an address that:

  • Is in the same subnet as your NAS (i.e., the first three blocks of numbers are the same, e.g., 192.168.178.XXX).
  • Is not already used by another device.
  • Is ideally outside your router’s DHCP range. If your router assigns IPs from .50 to .150, choose an IP like .180 or .210. Check your router’s settings if unsure!

For this tutorial, I will choose the IP 192.168.178.180.

Step 5: Docker Check & Network Cleanup (Optional)

Let’s ensure Docker (Container Manager) is running.

  1. Enter docker -v. If a version is displayed (e.g., Docker version 24.0.2), everything is fine. If not, install the “Container Manager” from the Synology Package Center.
  2. (Optional) To remove old, unused Docker networks, you can enter:
    docker network prune
    Confirm with y. This helps keep things tidy.

Step 6: Create the Macvlan Network

We create the special Docker network. Enter the following command and adjust the values to match your network:

docker network create \
  --driver macvlan \
  --subnet=192.168.178.0/24 \
  --gateway=192.168.178.1 \
  --ip-range=192.168.178.180/32 \
  -o parent=eth1 \
  proxy_macvlan

Important Explanations & Adjustments:

  • --driver macvlan: Tells Docker which network type we want.
  • --subnet=192.168.178.0/24: Adjust this to your subnet! If your IPs are 192.168.1.X, it would be 192.168.1.0/24. The /24 corresponds to the subnet mask 255.255.255.0.
  • --gateway=192.168.178.1: Adjust this to your router’s IP (gateway)! It’s often .1, but not always.
  • --ip-range=192.168.178.180/32: Enter the free IP you chose in Step 4 here! The /32 means only this specific IP is in this range.
  • -o parent=eth1: Enter the name of your network interface from Step 3 here! (e.g., eth0).
  • proxy_macvlan: This is the name we give our new network.

Press Enter. If no error message appears, the network was created. You can verify it with:

docker network inspect proxy_macvlan

Step 7: Start Nginx Proxy Manager in Container Manager

Now we leave SSH and go back to the Synology web interface.

  1. Open the Container Manager.
  2. Go to the Project menu.
  3. Click Create.
  4. Project name: Enter npm.
  5. Path: Select a folder on your NAS where NPM’s configuration data will be stored. Click “Create Folder”, navigate to the docker share (or wherever you store your Docker data), and create a new subfolder named npm. Select this folder.
  6. Source: Select “Create Docker Compose”.
  7. A text editor will appear. Paste the following YAML code into it:
services:
    app:
        image: jc21/nginx-proxy-manager:latest # using a specific tag is recommended for stability
        container_name: nginx-proxy-manager
        restart: unless-stopped
        networks:
            proxy_macvlan_net: # Internal name for the service block
                ipv4_address: 192.168.178.180 # <-- ENTER YOUR CHOSEN IP HERE!
        volumes:
            - ./data:/data
            - ./letsencrypt:/etc/letsencrypt
        ports:
            - "81:81" # Maps host port 81 to container port 81 for the admin UI

networks:
    proxy_macvlan_net: # Internal name (must match the service above)
        external: true
        name: proxy_macvlan # <-- Name of the Docker network created in Step 6

IMPORTANT:

  • Replace 192.168.178.180 under ipv4_address with the IP you chose for NPM!
  • The image name is jc21/nginx-proxy-manager. Using :latest always gets the newest version (but can sometimes cause issues; a specific tag like :2.10.4 is more stable).
  • The name: under networks: at the end must be exactly proxy_macvlan (or whatever you named your network in Step 6).
  1. Click Next.
  2. Click Next again (we don’t need Web Portal settings here).
  3. Check “Start project once it is created” and click Done.

The project will now be created, and the container will attempt to start.

Step 8: Access Nginx Proxy Manager (Almost Done!)

If the container in Container Manager is now green and shows “Running”, you’re almost there! Nginx Proxy Manager has its own web interface for administration.

  1. Open your web browser and enter the IP address of your NPM container followed by :81: http://192.168.178.180:81 (Replace the IP with yours!)

  2. You should see the Nginx Proxy Manager login page.

Step 9: First Login

The default login credentials for the first login are:

  • Email: admin@example.com
  • Password: changeme

Change your user details and password after the first login.

You have successfully installed Nginx Proxy Manager on your Synology NAS and given it its own IP address thanks to Macvlan. Nothing stands in the way of easily managing your web services with SSL!

Share this post:

This website uses cookies. These are necessary for the functionality of the website. You can find more information in the privacy policy