Electrs server not synchronizing when Bitcoin blocks stored externally on SSD drive

Hello, I am trying to get a mempool server running using Umbrel, however, I am facing a problem in trying to get the Electrs server synchronizing to the Bitcoin full node.

Here is the information on the server hardware.

NucBox7 with 512GB storage.
Intel Pentium N6005
16GB RAM
External SSD 1TB
Operating system Ubuntu 22.04.1 LTS

Upon realizing that the 512 GB storage was not enough to store the full Bitcoin node, I have connected the server to the 1TB external SSD drive. These are the additional configurations I did to make the Bitcoin full-node connect to external storage.

sudo mkdir /mnt/usb
sudo mount /dev/sdb1 /mnt/usb

in the Bitcoin “~/umbrel/app-data/bitcoin/docker-compose.yml” file, I have modified the file by adding the lines below.

<previous>
bitcoind:
    volumes:
      - ${PWD}/data/bitcoin:/data/.bitcoin

<current>
bitcoind: 
    volumes:
      - "/mnt/usb/bitcoin:/data/.bitcoin"
    devices:
       - "/dev/sdb1:/dev/sdb1"
    privileged: true

After the Bitcoin full node was completely synchronized, I checked the Electrs and found out it was still synchronizing. So I have checked using the docker log command “~/umbrel/scripts/app compose electrs logs”, and I have noticed the most significant problem in the log below.

electrs_1    | Starting electrs 0.9.10 on x86_64 linux with Config { network: Bitcoin, db_path: "/data/db/bitcoin", daemon_dir: "/data/.bitcoin", daemon_auth: CookieFile("/data/.bitcoin/.cookie"), daemon_rpc_addr: 10.21.21.8:8332, daemon_p2p_addr: 10.21.21.8:8333, electrum_rpc_addr: 0.0.0.0:50001, monitoring_addr: 127.0.0.1:4224, wait_duration: 10s, jsonrpc_timeout: 15s, index_batch_size: 10, index_lookup_limit: None, reindex_last_blocks: 0, auto_reindex: true, ignore_mempool: false, sync_once: false, disable_electrum_rpc: false, server_banner: "Umbrel Electrs (0.9.10)", signet_magic: 3652501241, args: [] }
electrs_1    | [2023-01-26T15:29:24.978Z INFO  electrs::metrics::metrics_impl] serving Prometheus metrics on 127.0.0.1:4224
electrs_1    | [2023-01-26T15:29:24.978Z INFO  electrs::server] serving Electrum RPC on 0.0.0.0:50001
electrs_1    | [2023-01-26T15:29:25.073Z INFO  electrs::db] "/data/db/bitcoin": 4351 SST files, 0.003502555 GB, 0.000000021 Grows
electrs_1    | [2023-01-26T15:29:25.078Z INFO  electrs::db] closing DB at /data/db/bitcoin
electrs_1    | Error: electrs failed
electrs_1    |
electrs_1    | Caused by:
electrs_1    |     0: failed to open bitcoind cookie file: /data/.bitcoin/.cookie
electrs_1    |     1: No such file or directory (os error 2)

I was a bit confused by this log output, so I changed the Electrs “~/umbrel/app-data/electrs/docker-compose.yml” file and changed the following

<previous>
electrs:
    volumes:
      - "${APP_BITCOIN_DATA_DIR}:/data/.bitcoin:ro"
      - "${APP_DATA_DIR}/data/electrs:/data"

<current>
electrs:
    volumes:
      - "/mnt/usb/bitcoin:/data/.bitcoin:ro"
      - "${APP_DATA_DIR}/data/electrs:/data"

Looking at the folder stored in the external drive, the file is located here /mnt/usb/bitcoin/.cookie

I am not sure what went wrong, I hope the above detail helps.

Hi @ambukyat. Did you ever get your Electrs issue revolved?

Several users including myself have run into Electrs sync issues over the past weeks/months, I believe the issue started after an Electrs upgrade. Electrs shows sync stuck at 97-99%, or “waiting for Bitcoin Node to finish syncing”.

I revolved my Electrs sync issue after several attempts to re-index etc by simply first deleting Electrs (via Umbrel Manage apps), allowing Bitcoin core to fully resync, then re-installing Electrs and finally Mempool. It took about 24hrs for Electrs to full re-indiex and re-sync. I monitored the linux log files by the command
sudo ~/umbrel/scripts/app compose electrs logs --tail=600

My configuration is similar to yours, on a Debian x86 machine. After several attempts to run the Umbrel software locally and store the app data on an external disk, I opted for the slower but more reliable method of running everything on the external disk, including Debian. The Umbrel script framework seems to like this better than separate locations for software and data. Others may have a different opinion.

It works relatively well running everything external. However I do plan to port my node off of Umbrel, and just use the native software on linux under Proxmox. I will change from Electrs to Fulcrum for better performance. Umbrel’s structure with scripts is not reliable enough IMO.