Running a Monero node in Synology Container Manager (DSM 7)

Prerequisites

You will need the Container Manager app from Synology’s Package Center before we begin. This app replaced the Docker app from Synology DSM 6, and has extra functionality this guide will use that doesn’t exist in the old Docker app, so be sure your NAS is up to date!

If it doesn’t show up when you search for it, your NAS may not support running containers. The Container Manager app is limited to Synology models which support the btrfs filesystem. Nearly all of them since 2016 should, but check the specs of your device just to be safe. If you can’t create containers on your device you won’t be able run a Monero node on your NAS.

You will also need ample free space on your NAS. A Monero node can take around 150 GB or more of disk space to run a full node. If storage space is limited, we’ll also cover how to run a “pruned” node with less space below, but that will still require 50 GB – 100 GB or so.

Creating Folders

Somewhere on your NAS — wherever you want the blockchain files to be stored — you need to create a folder named monerod. You can do this in the File Station app by clicking a shared folder in the left sidebar, then right clicking inside that folder and selecting Create folder:

Personally, I have a shared folder named docker which I keep all my container files in, so I selected that folder and created my folder named monerod inside that.

Once you’ve created the folder named monerod, double click it, and we’re going to create one more folder inside the monerod folder named bitmonero.

Basically you should have a folder named monerod with a folder inside that named bitmonero somewhere on your NAS, then we’ll move on.

Installing the Monerod Container

Open the Container Manager app and select Project in the left sidebar. Then, click the Create button.

In the Create Project window, enter the following information:

  • Project Name: monerod
  • Source: Select Create docker-compose.yml
  • Path: Click Set Path, then find the monerod folder we created in the previous step. Click that folder to highlight it, then click the blue Select button.

Once you’ve done all of this and changed the source to create a new docker-compose.yml file, you should see a text box appear in this window.

In this text box, paste the following:

version: '3'

services:
  monerod:
    image: sethsimmons/simple-monerod:latest
    user: ${FIXUID:-1026}:${FIXGID:-100}
    restart: unless-stopped
    hostname: monerod
    volumes:
      - ./bitmonero:/home/monero/.bitmonero
    ports:
      - 18080:18080
      - 18089:18089
    command:
      - "--rpc-restricted-bind-ip=0.0.0.0"
      - "--rpc-restricted-bind-port=18089"
      #- "--public-node"
      - "--no-igd"
      - "--enable-dns-blocklist"
      #- "--prune-blockchain"

  #tor:
  #  image: goldy/tor-hidden-service:latest
  #  restart: unless-stopped
  #  links:
  #      - monerod
  #  environment:
  #      MONEROD_TOR_SERVICE_HOSTS: 18089:monerod:18089
  #      MONEROD_TOR_SERVICE_VERSION: '3'
  #  volumes:
  #      - ./tor-keys:/var/lib/tor/hidden_service/

Find your UID/GID

Next, you will need to know the UID and GID numbers of the account on your Synology NAS you want to run this container as (probably your own). If you’re the only user on your NAS and you’re using the account that was created for you when you set it up, your UID is probably 1026 and your GID is probably 100, which are the values filled in above.

However, we can double-check these values easily by connecting to your NAS via SSH and running a simple command. First, make sure Enable SSH service is checked on the Terminal & SNMP tab in the Control Panel app.

Then, connect to your NAS via SSH, enter id, and hit enter again to run the id command:

You should see an output in your terminal which looks like this:

uid=1026(jonah) gid=100(users) groups=100(users),101(administrators)

Note the 1026 UID and 100 GID here. If your values are anything other than this, you’ll have to change the user line in the compose configuration we just pasted.

For example, if your UID is 1050 and your GID is 101, change the line to:

    user: ${FIXUID:-1050}:${FIXGID:-101}

If you enabled the SSH service in the Control Panel to run this step, remember to turn it back off after doing this, to prevent unnecessary services running on your NAS.

What this config actually does

What this configuration file does (line by line) is create a new container service on your NAS named monerod (Line 4) using the simple-monerod container image created by Seth for Privacy.

All that container image does is run monerod, the official Monero Node software built from the source code published by Monero. If you want to inspect the source code of the Dockerfile which creates this image to be extra sure nothing nasty is happening, it’s available on Seth’s GitHub account.

The user line (Line 5) makes sure all the files are created with the correct permissions on your system.

The restart line (Line 6) will make it so if the Monero node crashes or otherwise turns off for whatever reason, it will automatically restart.

The hostname line sets the name your container will be visible as to other containers. It’s mainly necessary if you opt to enable access to your Monero node over the Tor network, which we’ll cover in a later section.

The volumes lines (Lines 9-10) configure the container so that the blockchain (which is stored in /home/monero/.bitmonero inside the container) is stored inside the bitmonero folder we created earlier.

The ports configuration (Lines 11-13) open two network ports on your Synology NAS, 18080 and 18089:

  • Port 18080 is used by other Monero nodes to connect to your Monero node.
  • Port 18089 is used by your wallet to connect to your Monero node.

Opening these ports here does not also port forward them in your router. We’ll cover port forwarding in a later step.

The command lines (Lines 14-20) configure the monerod software, the ones we have here essentially tell it to run according to the network configuration defined above, nothing special. Something to note is that we’ve marked port 18089 as a restricted RPC port here. This means that it is safe if other people access your node via this port, because they will not be able to change your node’s configuration remotely via this restricted access.

If you want to know more command flags that can be used with monerod, here’s a list of them you may wish to reference.

Lastly, note that some lines which begin with a # are grayed out. Those lines are commented out and will have no effect on your system, but some optional sections later in this guide will have you uncomment them, and we’ll cover what they do in those sections.

Optional: Running a “pruned” node (to save storage)

One thing you can do to save storage space is run a pruned node. Moneropedia describes this process like so:

‘Pruning’ allows node operators to save 2/3 of storage space while keeping the full transaction history. Pruning works by removing 7/8 of unnecessary ring signature data. The 1/8 remaining data will be available to the other nodes and will be used to sync with the network. Other pruned nodes will have a random 1/8 of the data, which they will also make available to the network. There are no privacy or security downsides when using a pruned node.

Using a pruned node is much better than using a remote node you don’t own, but it is more useful for the health and decentralization of the Monero network as a whole to run non-pruned/full nodes whenever possible, so consider opting to run a pruned node only if it’s necessary in your case.

If you want to run a pruned node, just delete the # in front of - "--prune-blockchain" in the configuration file above.

Optional: Running a public node

Enabling the public node option will advertise your node as a remote node on Monero’s P2P network. This means that your public IP address will be broadcast, and any other Monero user will be able to use your node in their wallets.

You likely should not do this, unless you know what you are doing. If you run a public node, you will need to forward ports 18080 and 18089 in your router to your Synology NAS.

If you want to run a public node, just delete the # in front of - "--public-node" in the configuration file above.

Optional: Enabling Tor connectivity

If you want to access your Monero node outside your network, but you don’t want to or can’t port forward port 18089 to your NAS, you can run a Tor hidden service which will allow you to connect to your node remotely via the Tor network, no port forwarding required.

To do so, you first need to open File Station and open the monerod folder we created earlier again. Inside the monerod folder, create a new folder named tor-keys:

Second, back in the Create Project window in Container Manager, uncomment every Tor line (Lines 22-31) by deleting the # sign in front of them:

What this will do is create a second container that runs a Tor hidden service, which connects to port 18089 on the monerod container and stores its keys in the tor-keys folder we just created.

We’ll go over connecting to your node via Tor later on.

Creating the container

Once you have everything configured to your liking, click Next:

If you get a Web portal settings page, make sure it is unchecked and click Next again:

Finally, check the Start the project once it is created box and click Done.

That’s basically it! Your node should now be diligently downloading the Monero blockchain in the background.

Port Forwarding

It’s not strictly necessary to port forward anything to your Synology NAS, so if you don’t want to or can’t for any reason, don’t worry. However, it works a bit like how torrenting works, where if you can port forward you will be able to make many more connections and serve the network better. If you want to contribute to the decentralization and health of the network as a whole, some port forwarding is a must.

Thus, what you should do is port forward port 18080 in your router to your Synology NAS. This is the port which other Monero nodes will use to connect to yours and build the network.

You can also forward port 18089 to your NAS. What this will do is let you connect to your node from your wallet outside your local network, via your public IP address, a dynamic DNS hostname, etc.

In theory this is safe to do, because we are running the restricted RPC port on port 18089 as indicated above in our configuration file. This means that even though your RPC port will be exposed to the public internet, that access can’t be used to modify your node or do anything else harmful. However, it does mean that anyone who finds your IP could use your node in their wallet.

If you chose to run a public node above, you must forward both of these ports.

If you only want to use your node in your wallet on your local network, there’s no need to port forward port 18089, only 18080. If you want to use your node in your wallet while outside your local network, but you don’t want to port forward, you can also connect to your node via Tor (more on this below).

Connecting to your node

Once you’re up and running, grab the wallet software of your choice and open it up. Inside your wallet, configure your node connection settings as follows:

  • Daemon address: Your Synology NAS IP Address
  • Daemon port: 18089

How to do this exactly depends on your wallet. I walked through setting it up in the official GUI client at 16:46 in my video.

You can often find a guide by searching the internet for the name of your wallet + “remote node connection”, for example, here’s the guide on how to use a remote node in the GUI wallet:

And here’s a guide on using a custom node in Cake Wallet:

https://guides.cakewallet.com/docs/advanced-features/custom-node/

Optional: Connecting via Tor

If you chose to create a Tor hidden service when configuring your node, here’s how you connect.

Open File Station on your NAS and navigate to the tor-keys folder from earlier. Open the monerod folder inside that, and you should see the keys for your Tor service as well as some other files.

The file we are concerned with is named hostname. Right click that file and download it to your computer:

Open that file with any text editor to find your .onion address.

You can now use this onion address in place of your Synology’s IP address when configuring your Monero wallet to access your node from anywhere in the world, if your Monero wallet is configured to access the Tor network. You can also confirm this connection works using Tor Browser.

Open Tor Browser and navigate to:

http://replace-with-your-onion-hostname.onion:18089/get_info

…you should see a block of text information indicating your node is running and reachable over Tor.

That’s it!

I hope this helped. You should now be able to transact on the Monero network very privately, and you’re contributing to the health of the network overall.

Remember your node only hosts the blockchain and the code which interacts with other nodes on the network. In other words, you’re only hosting public information on your NAS, not your wallet or anything else potentially sensitive. If your NAS stops working or something else happens, no valuable data will be lost, you can just run through this guide again to create a new node at any time.

That also means this is not a backup of your wallet in any way. Your wallet is stored on the computer you’re running the wallet software on, typically, not on your Monero node. Protect your wallet on your computer with a strong password, and be sure to back up your wallet files separately so you don’t lose your coins.

Leave a comment if you have any additional questions, or if you just want to let me know this worked for you! :grinning_face_with_smiling_eyes:

Last edited by @jonah 2025-06-11T00:21:48Z

1 Like

does monero allows pruning? how much time it took to sync the chain?