Bitcoin, Electrs, Lightning "not running" after update to UmbrelOS 2.0

I’m running Umbrel on Raspi 4. I accepted the update to Umbrel 2.0, and after restarted, my UI is showing Bitcoin, Electrs, Lightning with “Not running” status.

Right-clicking on the app icon and selecting Restart fails with this error pop-up in the desktop: “Failed to restart app. Command failed with exit code 1: /opt/umbreld/source/modules/apps/legacy-compat/app-script stop bitcoin”.

I rebooted my Umbrel and waited for an hour, but these apps still show “Not running” in the UI.

Hey, that error says Umbrel failed at the “stop Bitcoin” part of the restart, but doesn’t show why. I’d start there, since Electrs and Lightning both depend on Bitcoin.

Could you go to Settings → Troubleshoot → umbrelOS, download the logs and share them here? Ideally right after another failed restart attempt so the error is near the end. Have a quick look for anything private before posting.

Also, which umbrelOS version were you on before updating, and are any of your other apps still running? That should help narrow down whether this is Bitcoin-specific or a wider issue after the update.

I don’t recall the previous version I was at but I accept updates regularly, so likely the last version.

Here are the logs after restart.

Bitcoin App log

Command failed with exit code 1: /opt/umbreld/source/modules/apps/legacy-compat/app-script logs bitcoin
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_P2P_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_P2P_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_RPC_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_RPC_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_I2P_DAEMON_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_NODE_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_RPC_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_ZMQ_HASHBLOCK_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_P2P_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_P2P_WHITEBIND_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_ZMQ_SEQUENCE_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_RPC_USER” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_TOR_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_RPC_PASS” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_P2P_HIDDEN_SERVICE” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_RPC_HIDDEN_SERVICE” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_ZMQ_RAWBLOCK_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_ZMQ_RAWTX_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_ZMQ_HASHTX_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_TOR_PROXY_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_NODE_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_TOR_PROXY_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_I2P_DAEMON_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“The “APP_BITCOIN_NODE_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:33:14Z” level=warning msg=“/home/umbrel/umbrel/app-data/bitcoin/docker-compose.yml: the attribute version is obsolete, it will be ignored, please remove it to avoid potential confusion”
no port specified: :

Lightning App Log:

Command failed with exit code 1: /opt/umbreld/source/modules/apps/legacy-compat/app-script logs lightning
/home/umbrel/umbrel/app-data/lightning/exports.sh.tmp.3v64Uh: line 18: APP_BITCOIN_NETWORK: unbound variable

Electrs App Log:

Command failed with exit code 1: /opt/umbreld/source/modules/apps/legacy-compat/app-script logs electrs
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_RPC_PASS” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_RPC_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_NODE_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_RPC_USER” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_NETWORK_ELECTRS” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_NODE_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_RPC_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_NODE_IP” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_P2P_PORT” variable is not set. Defaulting to a blank string.”
time=“2026-10-06T00:34:54Z” level=warning msg=“The “APP_BITCOIN_DATA_DIR” variable is not set. Defaulting to a blank string.”
invalid spec: :/data/.bitcoin:ro: empty section between colons

Ok, those logs help. Bitcoin’s connection settings aren’t being loaded, and that’s also tripping up Lightning and Electrs. Even the log viewer needs those settings, which is why it’s showing errors instead of the actual app logs. The warning about “version” being obsolete isn’t the problem.

I suspect Bitcoin’s exports.sh file is missing or empty. Could you open Settings → Advanced settings → Terminal → umbrelOS and paste these two commands, then share the output?

sudo stat -c '%n: %F, %s bytes' /home/umbrel/umbrel/app-data/bitcoin/exports.sh
sudo yq eval '.version' /home/umbrel/umbrel/app-data/bitcoin/umbrel-app.yml

These only check the file and your installed Bitcoin app version; they don’t change anything or show your RPC password. If that confirms it, the next step would be to restore the matching configuration file, not reinstall the apps or resync the blockchain.

sudo stat -c ‘%n: %F, %s bytes’ /home/umbrel/umbrel/app-data/bitcoin/exports.sh
→ /home/umbrel/umbrel/app-data/bitcoin/exports.sh: regular empty file, 0 bytes
sudo yq eval ‘.version’ /home/umbrel/umbrel/app-data/bitcoin/umbrel-app.yml
→ 1.4.0-patch.1

Yep, that confirms it: exports.sh is empty. You can restore it from the App Store copy already on your Umbrel, without downloading anything.

Paste this whole block into the same umbrelOS terminal. It checks that the replacement matches the official file for your installed version, backs up the empty file, and replaces only exports.sh. Make sure no app updates, moves or uninstalls are running while you do this.

sudo bash <<'EOF'
set -eu
cd /home/umbrel/umbrel
src=app-stores/getumbrel-umbrel-apps-github-53f74447/bitcoin/exports.sh
dst=app-data/bitcoin/exports.sh

[ "$(yq eval '.version' app-data/bitcoin/umbrel-app.yml)" = '1.4.0-patch.1' ] || { printf 'STOP: installed version changed.\n'; exit 1; }
[ -f "$src" ] && [ ! -L "$src" ] && [ -f "$dst" ] && [ ! -L "$dst" ] && [ ! -s "$dst" ] || { printf 'STOP: unexpected file state.\n'; exit 1; }

printf '%s  %s\n' '9e4736629dd7c4dc513850f7de33a315203d1788968f03431c4f2079becd5db0' "$src" | sha256sum -c -

backup=$(mktemp -d app-data/bitcoin/exports-backup.XXXXXXXX)
cp -p "$dst" "$backup/exports.sh"
install -o 1000 -g 1000 -m 0644 "$src" "$dst"
cmp "$src" "$dst"
printf 'Restored exports.sh. Original saved in %s\n' "$backup"
EOF

If it says “Restored exports.sh”, restart Bitcoin Node from the dashboard. Once Bitcoin is running and caught up, restart Lightning and Electrs. If you get “STOP”, a checksum failure or any other error, paste the output here rather than continuing.

All apps are happy now. Many thanks!