Store Bitcoin node on SSD (Synology NAS)

Thought I’d share this guide for anybody running Umbrel OS on a Synology NAS and wanting to store the data component of their Bitcoin node on an SSD.

So basically, the Bitcoin node program runs off your main spinning hard drive volume, but then the components that need rapid and constant access, along with the chain data, are stored on an SSD volume.

My installation:

Guide:

  1. Install Bitcoin node via Umbrel OS
  2. Allow Bitcoin node to create folders and come online (maybe wait about 5 minutes)
  3. Bring Bitcoin node offline (stop service via Umbrel OS)
  4. Create a new Shared Folder (using Control Panel on DSM) on your SSD volume
  5. Create the SSD’s targets and permissions (I created a Shared Folder called SSD and then manually created the folder docker and umbrel-bitcoin-data - replace these with your folder names if required).
sudo mkdir -p /volume2/SSD/docker/umbrel-bitcoin-data
sudo chown -R 1000:1000 /volume2/SSD/docker/umbrel-bitcoin-data
sudo chmod -R 775 /volume2/SSD/docker/umbrel-bitcoin-data
  1. Edit the Bitcoin app compose file (docker-compose.yml in your /app-data/bitcoin folder) and add the new volume location - again change this if you’re not using the same structure as I am.
services:
  app:
    # … existing keys (image, user, ports, env, etc.) …
    volumes:
      - ${APP_DATA_DIR}/data:/data
      - /volume2/SSD/docker/umbrel-bitcoin-data:/data/bitcoin   # <-- add this SSD line
  1. Restart Bitcoin using Umbrel OS (just right click on the app in the GUI and hit start)
  2. You can now either check the folders on your SSD to see that they are populating and increasing in size, or you can do the following:
sudo docker inspect bitcoin_app_1 --format '{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}' | grep /data/bitcoin
# expect: /volume2/SSD/docker/umbrel-bitcoin-data -> /data/bitcoin

ls -lah /volume2/SSD/docker/umbrel-bitcoin-data
# while syncing, you should see blocks/, chainstate/, indexes/ appear here
  1. If Bitcoin node doesn’t start or you see any errors, it’s usually a permissions thing and you can follow this sequence after stopping Bitcoin node once more via Umbrel GUI.
# HDD path (Umbrel-managed app data)
sudo chown -R 1000:1000 /volume1/docker/umbrel/app-data/bitcoin
sudo chmod -R 775        /volume1/docker/umbrel/app-data/bitcoin

# SSD path (blockchain payload)
sudo chown -R 1000:1000 /volume2/SSD/docker/umbrel-bitcoin-data
sudo chmod -R 775       /volume2/SSD/docker/umbrel-bitcoin-data

sudo synoacltool -del /volume1/docker/umbrel/app-data/bitcoin        2>/dev/null || true
sudo synoacltool -del /volume1/docker/umbrel/app-data/bitcoin/data   2>/dev/null || true
sudo synoacltool -del /volume2/SSD/docker/umbrel-bitcoin-data        2>/dev/null || true

sudo mkdir -p /volume1/docker/umbrel/app-data/bitcoin/data/app
sudo chown -R 1000:1000 /volume1/docker/umbrel/app-data/bitcoin/data/app
sudo chmod -R 775        /volume1/docker/umbrel/app-data/bitcoin/data/app

I did a lot of backwards and forwards with this and the method above was the most consistent way I managed to get this to work. Best of luck!

I’m having trouble installing the Bitcoin node via Umbrel OS. Are there any additional steps/settings to make? When I first press install, it usually stucks at 99%, after restart it appears to be running, but when opening Bitcoin it fails with error message: can’t connect to bitcoin core. There is no log/error message. Bitcoin (core) daemon is also not running. In Portainer I see only containers: bitcoin_app_1, bitcoin_app_proxy_1, bitcoin_i2pd_daemon_1, bitcoin_tor_1. Thanks

1 Like

There shouldn’t be any other steps. Mine was at 99% for quite some time but it got there in the end. It could be worth starting from scratch and letting it sit at that 99% state until it’s complete.

If you go to Portainer and open those containers, they all have their own logs as well. Are there any error messages within those containers?

This is how my containers look in Portainer, am I missing something?

If you go into Bitcoin_app_1 and then click on logs, you should see a stream of logs from the container.

If there’s an error that’s where it’ll be. Your best bet is to have that open while the installation is running so you can see what it’s complaining about.

I only see this in the logs:


2026/03/06 11:10AM 30 pid=1 hostname=ccc8b49adbfe msg=Server listening at http ://127.0.0.1:3000

2026/03/06 11:10AM 30 pid=1 hostname=ccc8b49adbfe msg=Server listening at http ://10.21.21.8:3000

2026/03/06 11:10AM 30 pid=1 hostname=ccc8b49adbfe msg=₿itcoin Node backend is running at http://127.0.0.1:3000

[bitcoind-manager] spawned PID 23

[tx-subscriber] Bitcoind started, starting transaction subscriber

[bitcoind] exited (code=null, sig=SIGABRT)

Can you produce the logs in the debug?

Open File Station.

  1. Navigate to umbrel/app-data/bitcoin/data/bitcoin/debug.log.
  2. Scroll to the very bottom and see what the last 10 lines say right before the crash.

There is no debug.log file

Hmm - I’m not sure what’s going on with your installation. Did you try installing it from scratch and letting the install get through to 100%?