Migrate / Restore LND from mounted hard drive v4

Previous device running LND went kaput. I have my LND data backed up on an external hard drive. Moving to StartOS v4.

After installing LND, it wants me to initialize by choosing to start fresh, restore from umbrel, or restore from start9. But how do I restore using the data on my drive mounted to my StartOs device?

Would I need to start fresh, then after doing so delete the wallet.db file and add the wallet.db and channels.db file from my drive? Anything else to do?

Thanks :person_bowing:

There’s no Action coded into the LND package that would go into an external drive and extract and copy the necessary files and build LND from those.

You could replicate this manually if you copy the sequence from the code for the other actions you mention.

I’m aware there is no out of the box solution for migration from an external drive. I’m asking how to do it manually.

So far I’ve tried the ‘Start fresh’ initialization, then overwriting the wallet.db and channel.db files with the same files from my umbrel in the appropriate places in the /media/startos/data/package-data/volumes/lnd/data/main/data/ directory. I also added my umbrel lnd wallet password to the store.json file, and recreated macaroons. Need to know what else to do to get lnd working.

Here’s my logs when I try to start lnd after the changes I’ve made.



2026-06-20T17:03:04+00:00  Starting LND!
2026-06-20T17:03:04+00:00  daemon unlock-wallet waiting on lnd
2026-06-20T17:03:04+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:03:04+00:00  daemon reachability waiting on lnd
2026-06-20T17:03:04+00:00  Launching lnd...
2026-06-20T17:03:04+00:00  daemon unlock-wallet waiting on lnd
2026-06-20T17:03:04+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:03:04+00:00  daemon synced-true waiting on sync-progress
2026-06-20T17:03:04+00:00  daemon reachability waiting on lnd
2026-06-20T17:03:04+00:00  {
2026-06-20T17:03:04+00:00   location: 'response',
2026-06-20T17:03:04+00:00   stringified: '{"jsonrpc":"2.0","id":43,"result":null}',
2026-06-20T17:03:04+00:00   type: 'object',
2026-06-20T17:03:04+00:00   id: 43
2026-06-20T17:03:04+00:00  }
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.547 [INF] LTND: Version Info rev=848b72 version=0.20.1-beta commit=v0.20.1-beta debuglevel=production logging=info
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.547 [INF] LTND: Network Info rev=848b72 active_chain=Bitcoin network=mainnet
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.549 [INF] RPCS: RPC server listening on 0.0.0.0:10009
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.566 [INF] RPCS: gRPC proxy started at 0.0.0.0:8080
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.567 [INF] LTND: Opening the main database, this might take a few minutes...
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.567 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.725 [INF] LTND: Creating local graph and channel state DB instances
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.744 [INF] CHDB: Checking for schema update: latest_version=33, db_version=33
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.745 [INF] CHDB: Applying 2 optional migrations
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.745 [INF] CHDB: Checking for optional update: name=prune_revocation_log
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.745 [INF] CHDB: Checking for optional update: name=gc_decayed_log
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.758 [INF] LTND: Database(s) now open (time_to_open=191.182076ms)!
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.758 [INF] LTND: We're not running within systemd or the service type is not 'notify'
2026-06-20T17:03:04+00:00  2026-06-20 17:03:04.758 [INF] LTND: Waiting for wallet encryption password. Use `lncli create` to create a wallet, `lncli unlock` to unlock an existing wallet, or `lncli changepassword` to change the password of an existing wallet and unlock it.
2026-06-20T17:03:05+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-20T17:03:05+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-20T17:03:05+00:00  Launching unlock-wallet...
2026-06-20T17:03:05+00:00  Launching reachability...
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.650 [INF] BTWL: Opened wallet
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.715 [ERR] LTND: unable to unlock macaroons: invalid password
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.715 [ERR] LTND: Shutting down due to error in main method rev=848b72 err="unable to unlock macaroons: invalid password"
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.720 [INF] LTND: Shutdown complete
2026-06-20T17:03:06+00:00  error creating wallet config: unable to unlock macaroons: invalid password
2026-06-20T17:03:06+00:00  Error: lnd exited with code 1
2026-06-20T17:03:06+00:00   at ChildProcess.<anonymous> (/usr/lib/startos/package/index.js:18419:43)
2026-06-20T17:03:06+00:00   at ChildProcess.emit (node:events:524:28)
2026-06-20T17:03:06+00:00   at ChildProcess._handle.onexit (node:internal/child_process:293:12)
2026-06-20T17:03:06+00:00  daemon unlock-wallet waiting on lnd
2026-06-20T17:03:06+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:03:06+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:03:06+00:00  daemon reachability waiting on lnd
2026-06-20T17:03:06+00:00  Stopping unlock-wallet...
2026-06-20T17:03:06+00:00  wallet-unlock response {
2026-06-20T17:03:06+00:00   throw: [Function: throw],
2026-06-20T17:03:06+00:00   exitCode: 56,
2026-06-20T17:03:06+00:00   exitSignal: null,
2026-06-20T17:03:06+00:00   stdout: '',
2026-06-20T17:03:06+00:00   stderr: 'curl: (56) OpenSSL SSL_read: OpenSSL/3.5.5: error:0A000126:SSL routines::unexpected eof while reading, errno 0\n'
2026-06-20T17:03:06+00:00  }
2026-06-20T17:03:06+00:00  Stopping reachability...
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.855 [INF] LTND: Version Info rev=848b72 version=0.20.1-beta commit=v0.20.1-beta debuglevel=production logging=info
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.855 [INF] LTND: Network Info rev=848b72 active_chain=Bitcoin network=mainnet
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.856 [INF] RPCS: RPC server listening on 0.0.0.0:10009
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.877 [INF] RPCS: gRPC proxy started at 0.0.0.0:8080
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.887 [INF] LTND: Opening the main database, this might take a few minutes...
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.887 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.985 [INF] LTND: Creating local graph and channel state DB instances
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.997 [INF] CHDB: Checking for schema update: latest_version=33, db_version=33
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.998 [INF] CHDB: Applying 2 optional migrations
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.998 [INF] CHDB: Checking for optional update: name=prune_revocation_log
2026-06-20T17:03:06+00:00  2026-06-20 17:03:06.998 [INF] CHDB: Checking for optional update: name=gc_decayed_log
2026-06-20T17:03:07+00:00  2026-06-20 17:03:07.041 [INF] LTND: Database(s) now open (time_to_open=154.400791ms)!
2026-06-20T17:03:07+00:00  2026-06-20 17:03:07.042 [INF] LTND: We're not running within systemd or the service type is not 'notify'
2026-06-20T17:03:07+00:00  2026-06-20 17:03:07.042 [INF] LTND: Waiting for wallet encryption password. Use `lncli create` to create a wallet, `lncli unlock` to unlock an existing wallet, or `lncli changepassword` to change the password of an existing wallet and unlock it.
2026-06-20T17:03:16+00:00  wallet-unlock aborted
2026-06-20T17:03:35+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-20T17:03:35+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-20T17:03:35+00:00  Launching unlock-wallet...
2026-06-20T17:03:35+00:00  Launching reachability...
2026-06-20T17:03:36+00:00  2026-06-20 17:03:36.723 [INF] BTWL: Opened wallet
2026-06-20T17:03:36+00:00  2026-06-20 17:03:36.806 [ERR] LTND: unable to unlock macaroons: invalid password
2026-06-20T17:03:36+00:00  2026-06-20 17:03:36.806 [ERR] LTND: Shutting down due to error in main method rev=848b72 err="unable to unlock macaroons: invalid password"
2026-06-20T17:03:36+00:00  2026-06-20 17:03:36.812 [ERR] RPCS: [/lnrpc.WalletUnlocker/UnlockWallet]: got no unlock message before timeout
2026-06-20T17:03:36+00:00  2026-06-20 17:03:36.812 [INF] LTND: Shutdown complete
2026-06-20T17:03:36+00:00  error creating wallet config: unable to unlock macaroons: invalid password
2026-06-20T17:03:36+00:00  wallet-unlock response {
2026-06-20T17:03:36+00:00   throw: [Function: throw],
2026-06-20T17:03:36+00:00   exitCode: 0,
2026-06-20T17:03:36+00:00   exitSignal: null,
2026-06-20T17:03:36+00:00   stdout: '{"code":1, "message":"grpc: the client connection is closing", "details":[]}',
2026-06-20T17:03:36+00:00   stderr: ''
2026-06-20T17:03:36+00:00  }
2026-06-20T17:03:36+00:00  Error: lnd exited with code 1
2026-06-20T17:03:36+00:00   at ChildProcess.<anonymous> (/usr/lib/startos/package/index.js:18419:43)
2026-06-20T17:03:36+00:00   at ChildProcess.emit (node:events:524:28)
2026-06-20T17:03:36+00:00   at ChildProcess._handle.onexit (node:internal/child_process:293:12)
2026-06-20T17:03:36+00:00  daemon unlock-wallet waiting on lnd
2026-06-20T17:03:36+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:03:36+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:03:36+00:00  daemon reachability waiting on lnd
2026-06-20T17:03:36+00:00  Health Check lnd failed: lnd daemon crashed
2026-06-20T17:03:36+00:00  Stopping unlock-wallet...
2026-06-20T17:03:36+00:00  Stopping reachability...
2026-06-20T17:03:37+00:00  2026-06-20 17:03:37.924 [INF] LTND: Version Info rev=848b72 version=0.20.1-beta commit=v0.20.1-beta debuglevel=production logging=info
2026-06-20T17:03:37+00:00  2026-06-20 17:03:37.924 [INF] LTND: Network Info rev=848b72 active_chain=Bitcoin network=mainnet
2026-06-20T17:03:37+00:00  2026-06-20 17:03:37.925 [INF] RPCS: RPC server listening on 0.0.0.0:10009
2026-06-20T17:03:37+00:00  2026-06-20 17:03:37.955 [INF] RPCS: gRPC proxy started at 0.0.0.0:8080
2026-06-20T17:03:37+00:00  2026-06-20 17:03:37.955 [INF] LTND: Opening the main database, this might take a few minutes...
2026-06-20T17:03:37+00:00  2026-06-20 17:03:37.955 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
2026-06-20T17:03:38+00:00  2026-06-20 17:03:38.058 [INF] LTND: Creating local graph and channel state DB instances
2026-06-20T17:03:38+00:00  2026-06-20 17:03:38.067 [INF] CHDB: Checking for schema update: latest_version=33, db_version=33
2026-06-20T17:03:38+00:00  2026-06-20 17:03:38.068 [INF] CHDB: Applying 2 optional migrations
2026-06-20T17:03:38+00:00  2026-06-20 17:03:38.068 [INF] CHDB: Checking for optional update: name=prune_revocation_log
2026-06-20T17:03:38+00:00  2026-06-20 17:03:38.068 [INF] CHDB: Checking for optional update: name=gc_decayed_log
2026-06-20T17:03:38+00:00  2026-06-20 17:03:38.081 [INF] LTND: Database(s) now open (time_to_open=126.43488ms)!
2026-06-20T17:03:38+00:00  2026-06-20 17:03:38.081 [INF] LTND: We're not running within systemd or the service type is not 'notify'
2026-06-20T17:03:38+00:00  2026-06-20 17:03:38.081 [INF] LTND: Waiting for wallet encryption password. Use `lncli create` to create a wallet, `lncli unlock` to unlock an existing wallet, or `lncli changepassword` to change the password of an existing wallet and unlock it.
2026-06-20T17:03:46+00:00  wallet-unlock aborted
2026-06-20T17:04:05+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-20T17:04:05+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-20T17:04:05+00:00  Launching unlock-wallet...
2026-06-20T17:04:05+00:00  Launching reachability...
2026-06-20T17:04:07+00:00  2026-06-20 17:04:06.954 [INF] BTWL: Opened wallet
2026-06-20T17:04:07+00:00  2026-06-20 17:04:07.030 [ERR] LTND: unable to unlock macaroons: invalid password
2026-06-20T17:04:07+00:00  2026-06-20 17:04:07.030 [ERR] LTND: Shutting down due to error in main method rev=848b72 err="unable to unlock macaroons: invalid password"
2026-06-20T17:04:07+00:00  error creating wallet config: unable to unlock macaroons: invalid password
2026-06-20T17:04:07+00:00  2026-06-20 17:04:07.039 [ERR] RPCS: [/lnrpc.WalletUnlocker/UnlockWallet]: got no unlock message before timeout
2026-06-20T17:04:07+00:00  2026-06-20 17:04:07.039 [INF] LTND: Shutdown complete
2026-06-20T17:04:07+00:00  wallet-unlock response {
2026-06-20T17:04:07+00:00   throw: [Function: throw],
2026-06-20T17:04:07+00:00   exitCode: 0,
2026-06-20T17:04:07+00:00   exitSignal: null,
2026-06-20T17:04:07+00:00   stdout: '{"code":1, "message":"grpc: the client connection is closing", "details":[]}',
2026-06-20T17:04:07+00:00   stderr: ''
2026-06-20T17:04:07+00:00  }
2026-06-20T17:04:07+00:00  Error: lnd exited with code 1
2026-06-20T17:04:07+00:00   at ChildProcess.<anonymous> (/usr/lib/startos/package/index.js:18419:43)
2026-06-20T17:04:07+00:00   at ChildProcess.emit (node:events:524:28)
2026-06-20T17:04:07+00:00   at ChildProcess._handle.onexit (node:internal/child_process:293:12)
2026-06-20T17:04:07+00:00  daemon unlock-wallet waiting on lnd
2026-06-20T17:04:07+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:04:07+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:04:07+00:00  daemon reachability waiting on lnd
2026-06-20T17:04:07+00:00  Health Check lnd failed: lnd daemon crashed
2026-06-20T17:04:07+00:00  Stopping unlock-wallet...
2026-06-20T17:04:07+00:00  Stopping reachability...
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.149 [INF] LTND: Version Info rev=848b72 version=0.20.1-beta commit=v0.20.1-beta debuglevel=production logging=info
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.150 [INF] LTND: Network Info rev=848b72 active_chain=Bitcoin network=mainnet
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.151 [INF] RPCS: RPC server listening on 0.0.0.0:10009
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.159 [INF] RPCS: gRPC proxy started at 0.0.0.0:8080
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.159 [INF] LTND: Opening the main database, this might take a few minutes...
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.159 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.304 [INF] LTND: Creating local graph and channel state DB instances
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.313 [INF] CHDB: Checking for schema update: latest_version=33, db_version=33
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.313 [INF] CHDB: Applying 2 optional migrations
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.314 [INF] CHDB: Checking for optional update: name=prune_revocation_log
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.314 [INF] CHDB: Checking for optional update: name=gc_decayed_log
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.330 [INF] LTND: Database(s) now open (time_to_open=170.545839ms)!
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.330 [INF] LTND: We're not running within systemd or the service type is not 'notify'
2026-06-20T17:04:09+00:00  2026-06-20 17:04:09.330 [INF] LTND: Waiting for wallet encryption password. Use `lncli create` to create a wallet, `lncli unlock` to unlock an existing wallet, or `lncli changepassword` to change the password of an existing wallet and unlock it.
2026-06-20T17:04:17+00:00  wallet-unlock aborted
2026-06-20T17:04:35+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-20T17:04:35+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-20T17:04:35+00:00  Launching unlock-wallet...
2026-06-20T17:04:35+00:00  Launching reachability...
2026-06-20T17:04:36+00:00  2026-06-20 17:04:36.675 [INF] BTWL: Opened wallet
2026-06-20T17:04:36+00:00  2026-06-20 17:04:36.766 [ERR] LTND: unable to unlock macaroons: invalid password
2026-06-20T17:04:36+00:00  2026-06-20 17:04:36.766 [ERR] LTND: Shutting down due to error in main method rev=848b72 err="unable to unlock macaroons: invalid password"
2026-06-20T17:04:36+00:00  2026-06-20 17:04:36.771 [INF] LTND: Shutdown complete
2026-06-20T17:04:36+00:00  error creating wallet config: unable to unlock macaroons: invalid password
2026-06-20T17:04:36+00:00  2026-06-20 17:04:36.773 [ERR] RPCS: [/lnrpc.WalletUnlocker/UnlockWallet]: got no unlock message before timeout
2026-06-20T17:04:36+00:00  Error: lnd exited with code 1
2026-06-20T17:04:36+00:00   at ChildProcess.<anonymous> (/usr/lib/startos/package/index.js:18419:43)
2026-06-20T17:04:36+00:00   at ChildProcess.emit (node:events:524:28)
2026-06-20T17:04:36+00:00   at ChildProcess._handle.onexit (node:internal/child_process:293:12)
2026-06-20T17:04:36+00:00  daemon unlock-wallet waiting on lnd
2026-06-20T17:04:36+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:04:36+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-20T17:04:36+00:00  daemon reachability waiting on lnd
2026-06-20T17:04:36+00:00  Health Check lnd failed: lnd daemon crashed
2026-06-20T17:04:36+00:00  Stopping unlock-wallet...
2026-06-20T17:04:36+00:00  wallet-unlock response {
2026-06-20T17:04:36+00:00   throw: [Function: throw],
2026-06-20T17:04:36+00:00   exitCode: 0,
2026-06-20T17:04:36+00:00   exitSignal: null,
2026-06-20T17:04:36+00:00   stdout: '{"code":1, "message":"grpc: the client connection is closing", "details":[]}',
2026-06-20T17:04:36+00:00   stderr: ''
2026-06-20T17:04:36+00:00  }
2026-06-20T17:04:36+00:00  Stopping reachability...
2026-06-20T17:04:39+00:00  2026-06-20 17:04:39.899 [INF] LTND: Version Info rev=848b72 version=0.20.1-beta commit=v0.20.1-beta debuglevel=production logging=info
2026-06-20T17:04:39+00:00  2026-06-20 17:04:39.900 [INF] LTND: Network Info rev=848b72 active_chain=Bitcoin network=mainnet
2026-06-20T17:04:39+00:00  2026-06-20 17:04:39.900 [INF] RPCS: RPC server listening on 0.0.0.0:10009
2026-06-20T17:04:39+00:00  2026-06-20 17:04:39.913 [INF] RPCS: gRPC proxy started at 0.0.0.0:8080
2026-06-20T17:04:39+00:00  2026-06-20 17:04:39.914 [INF] LTND: Opening the main database, this might take a few minutes...
2026-06-20T17:04:39+00:00  2026-06-20 17:04:39.914 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
2026-06-20T17:04:40+00:00  2026-06-20 17:04:40.007 [INF] LTND: Creating local graph and channel state DB instances
2026-06-20T17:04:40+00:00  2026-06-20 17:04:40.026 [INF] CHDB: Checking for schema update: latest_version=33, db_version=33
2026-06-20T17:04:40+00:00  2026-06-20 17:04:40.027 [INF] CHDB: Applying 2 optional migrations
2026-06-20T17:04:40+00:00  2026-06-20 17:04:40.027 [INF] CHDB: Checking for optional update: name=prune_revocation_log
2026-06-20T17:04:40+00:00  2026-06-20 17:04:40.027 [INF] CHDB: Checking for optional update: name=gc_decayed_log
2026-06-20T17:04:40+00:00  2026-06-20 17:04:40.038 [INF] LTND: Database(s) now open (time_to_open=124.097638ms)!
2026-06-20T17:04:40+00:00  2026-06-20 17:04:40.038 [INF] LTND: We're not running within systemd or the service type is not 'notify'
2026-06-20T17:04:40+00:00  2026-06-20 17:04:40.038 [INF] LTND: Waiting for wallet encryption password. Use `lncli create` to create a wallet, `lncli unlock` to unlock an existing wallet, or `lncli changepassword` to change the password of an existing wallet and unlock it.
2026-06-20T17:04:46+00:00  wallet-unlock aborted
2026-06-20T17:04:47+00:00  {
2026-06-20T17:04:47+00:00   location: 'dataIn',
2026-06-20T17:04:47+00:00   stringified: '"{\\"id\\":44,\\"method\\":\\"stop\\",\\"params\\":{}}"',
2026-06-20T17:04:47+00:00   type: 'string',
2026-06-20T17:04:47+00:00   id: 43
2026-06-20T17:04:47+00:00  }
2026-06-20T17:04:47+00:00  Terminating daemon synced-true
2026-06-20T17:04:47+00:00  Terminating daemon reachability
2026-06-20T17:04:47+00:00  Terminating daemon sync-progress
2026-06-20T17:04:47+00:00  Terminating daemon unlock-wallet
2026-06-20T17:04:47+00:00  Terminating daemon lnd
2026-06-20T17:04:47+00:00  2026-06-20 17:04:47.654 [INF] LTND: Received terminated
2026-06-20T17:04:47+00:00  2026-06-20 17:04:47.654 [INF] LTND: Shutting down...
2026-06-20T17:04:47+00:00  2026-06-20 17:04:47.654 [INF] LTND: Gracefully shutting down.
2026-06-20T17:04:47+00:00  2026-06-20 17:04:47.654 [ERR] LTND: unable to set up wallet password listeners: shutting down
2026-06-20T17:04:47+00:00  2026-06-20 17:04:47.654 [ERR] LTND: Shutting down due to error in main method rev=848b72 err="unable to set up wallet password listeners: shutting down"
2026-06-20T17:04:47+00:00  error creating wallet config: unable to set up wallet password listeners: shutting down
2026-06-20T17:04:47+00:00  2026-06-20 17:04:47.663 [INF] LTND: Shutdown complete
2026-06-20T17:04:47+00:00  Error: lnd exited with code 1
2026-06-20T17:04:47+00:00   at ChildProcess.<anonymous> (/usr/lib/startos/package/index.js:18419:43)
2026-06-20T17:04:47+00:00   at ChildProcess.emit (node:events:524:28)
2026-06-20T17:04:47+00:00   at ChildProcess._handle.onexit (node:internal/child_process:293:12)
2026-06-20T17:04:47+00:00  {
2026-06-20T17:04:47+00:00   location: 'response',
2026-06-20T17:04:47+00:00   stringified: '{"jsonrpc":"2.0","id":44,"result":null}',
2026-06-20T17:04:47+00:00   type: 'object',
2026-06-20T17:04:47+00:00   id: 44
2026-06-20T17:04:47+00:00  }


1. Stop LND. From the StartOS UI, stop the service so it isn’t crash-looping and racing your edits. Confirm it’s fully stopped (no more restart cycles in the log). Then go into the container:

start-cli package attach lnd

Then, inside that shell:

2. Back up:

cd /media/startos/volumes/maincp store.json store.json.bak

3. Delete the stale macaroons (safe — LND regenerates them from the wallet password on unlock):

rm -f data/chain/bitcoin/mainnet/macaroons.db data/chain/bitcoin/mainnet/*.macaroon

4. The store.json edit Look inside:

cat store.json
which jq python3 sed vi nano

Maybe show me this with, or paste it into an LLM for help. You’ll need to do something like:

jq '.walletPassword = "PASTE_SOURCE_PASSWORD_HERE"' store.json.bak > store.json

with that.

5. Then exit, start LND, and watch the log for BTWL: Opened wallet with no macaroon error following.

1 Like

start-cli package attach lnd

when I run this it just stalls. on pressing enter, cursor moves to next line and then just blinks. nothing seems to happen and I cant type and can’t interupt with crtl+c. lnd is stopped. ever seen this before?

When you’re in the shell, you move to the next step.

It doesn’t work. I type and no characters appear. Just a cursor blinking. Ctrl+c doesn’t even interrupt the command.

Many of the start-cli commands have similar results and don’t seem to work. Seems like only the help commands work. For other start-cli commands that hang, ctrl+c does work to at least exit to resume the ssh session.

Bug? Or why aren’t start-cli commands working for me? On latest start-os release.

This places you inside the container…. you see a blank line and a blinking cursor indicating you’re suppose to start following the steps I laid out. Immediately after typing the above, start-cli isn’t even involved.

Inside the container you should be able to start typing the next command. I don’t know how or why you wouldn’t be able to. There’s no bug when typing inside LXC containers that I know of. If I can do it to give your the instructions above, so should you be able to. Perhaps an issue with your OS or terminal? Maybe you should show us what’s on your screen.

start9@lean-anaconda:~$ start-cli package attach lnd
/ # echo hello!
hello!
/ # 

Pardon, I was aware the attach command launched a shell, it’s just that it wasn’t actually launching into the shell, it was just stalling with a blinking cursor. I got it working now. (I restarted my server a couple times, and also made sure I only have one ssh session - not sure which cured it, but I’m able to get the shell).

However, from you instructions, fyi I can’t attach without stopping lnd

$ sudo start-cli package attach lnd
Not Found: package.attach: no matching subcontainers are running for lnd; some possible choices are:
start9@steel-disk:~$ start-cli package list
[
  {
    "status": "installed",
    "id": "bitcoind",
    "version": "31.0:14"
  },
  {
    "status": "installed",
    "id": "tor",
    "version": "0.4.9.9:1"
  },
  {
    "status": "installed",
    "id": "nextcloud",
    "version": "32.0.11:0"
  },
  {
    "status": "installed",
    "id": "fulcrum",
    "version": "2.1.1:5"
  },
  {
    "status": "installed",
    "id": "lnd",
    "version": "0.20.1-beta:13"
  }
]

After starting lnd, then I can attach, but the filesystem is different than you laid out above.

 start-cli package attach lnd
/ # cd /media/startos/volumes/main
/bin/sh: cd: can't cd to /media/startos/volumes/main: No such file or directory
/ # ls /media/
cdrom   floppy  usb
/media #  cd ..
/ # pwd
/
/ # ls
bin                home               media              proc               sbin               sys                var
dev                keys               mnt                root               shasums.txt        tmp                verify-install.sh
etc                lib                opt                run                srv                usr

In any event, I was able to run all the commands you suggested via ssh/terminal - not attached to the lnd container. Also, a lot of the paths for the files you mentioned are different, but I was able to find all of them and do the intended operation. For anyone who happens upon this thread…

root@steel-disk:~# cd /media/startos/data/package-data/volumes/lnd/data/main/
root@steel-disk:/media/startos/data/package-data/volumes/lnd/data/main# cp store.json store.json.backup
root@steel-disk:/media/startos/data/package-data/volumes/lnd/data/main# rm -f data/chain/bitcoin/mainnet/macaroons.db data/chain/bitcoin/mainnet/*.macaroon
root@steel-disk:/media/startos/data/package-data/volumes/lnd/data/main# nano store.json <HERE I OVERWROTE THE PW CREATED BY STARTOS LND 'FRESH START' TO MY UMBREL WALLET TO RESTORE>
root@steel-disk:/media/startos/data/package-data/volumes/lnd/data/main# cat store.json
{
  "walletPassword": "<MY UMBREL WALLET TO RESTORE PASSWORD",
  "aezeedCipherSeed": [
   " <MY SEED PHRASE>"
  ],
  "watchtowerClients": [],
  "customExternalHosts": []

And VOILA! We have started lnd successfully, and appear to be syncing the lnd graph!!


2026-06-26T15:02:07+00:00  Starting LND!
2026-06-26T15:02:08+00:00  daemon unlock-wallet waiting on lnd
2026-06-26T15:02:08+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-26T15:02:08+00:00  daemon reachability waiting on lnd
2026-06-26T15:02:08+00:00  Launching lnd...
2026-06-26T15:02:08+00:00  daemon unlock-wallet waiting on lnd
2026-06-26T15:02:08+00:00  daemon sync-progress waiting on lnd,unlock-wallet
2026-06-26T15:02:08+00:00  daemon synced-true waiting on sync-progress
2026-06-26T15:02:08+00:00  daemon reachability waiting on lnd
2026-06-26T15:02:08+00:00  {
2026-06-26T15:02:08+00:00   location: 'response',
2026-06-26T15:02:08+00:00   stringified: '{"jsonrpc":"2.0","id":7,"result":null}',
2026-06-26T15:02:08+00:00   type: 'object',
2026-06-26T15:02:08+00:00   id: 7
2026-06-26T15:02:08+00:00  }
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.231 [INF] LTND: Version Info rev=848b72 version=0.20.1-beta commit=v0.20.1-beta debuglevel=production logging=info
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.231 [INF] LTND: Network Info rev=848b72 active_chain=Bitcoin network=mainnet
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.232 [INF] RPCS: RPC server listening on 0.0.0.0:10009
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.236 [INF] RPCS: gRPC proxy started at 0.0.0.0:8080
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.236 [INF] LTND: Opening the main database, this might take a few minutes...
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.236 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.432 [INF] LTND: Creating local graph and channel state DB instances
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.439 [INF] CHDB: Checking for schema update: latest_version=33, db_version=33
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.440 [INF] CHDB: Applying 2 optional migrations
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.440 [INF] CHDB: Checking for optional update: name=prune_revocation_log
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.440 [INF] CHDB: Checking for optional update: name=gc_decayed_log
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.453 [INF] LTND: Database(s) now open (time_to_open=216.674737ms)!
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.453 [INF] LTND: We're not running within systemd or the service type is not 'notify'
2026-06-26T15:02:08+00:00  2026-06-26 15:02:08.453 [INF] LTND: Waiting for wallet encryption password. Use `lncli create` to create a wallet, `lncli unlock` to unlock an existing wallet, or `lncli changepassword` to change the password of an existing wallet and unlock it.
2026-06-26T15:02:09+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-26T15:02:09+00:00  daemon sync-progress waiting on unlock-wallet
2026-06-26T15:02:09+00:00  Launching unlock-wallet...
2026-06-26T15:02:09+00:00  Launching reachability...

2026-06-26T15:02:10+00:00  2026-06-26 15:02:10.307 [INF] BTWL: Opened wallet
2026-06-26T15:02:10+00:00  wallet-unlock response {
2026-06-26T15:02:10+00:00   throw: [Function: throw],
2026-06-26T15:02:10+00:00   exitCode: 0,
2026-06-26T15:02:10+00:00   exitSignal: null,
2026-06-26T15:02:10+00:00   stdout: '{}',
2026-06-26T15:02:10+00:00   stderr: ''
2026-06-26T15:02:10+00:00  }
2026-06-26T15:02:10+00:00  daemon synced-true waiting on sync-progress
2026-06-26T15:02:10+00:00  Launching sync-progress...
2026-06-26T15:02:10+00:00  2026-06-26 15:02:10.575 [INF] RPCC: Established connection to RPC server bitcoind.startos:8332
2026-06-26T15:02:10+00:00  2026-06-26 15:02:10.583 [INF] RPCC: Established connection to RPC server bitcoind.startos:8332

2026-06-26T15:02:11+00:00  2026-06-26 15:02:11.069 [INF] CHRE: Initializing bitcoind backed fee estimator in CONSERVATIVE mode
2026-06-26T15:02:11+00:00  2026-06-26 15:02:11.070 [INF] BTWL: Started listening for bitcoind block notifications via ZMQ on 10.0.3.146:28332
2026-06-26T15:02:11+00:00  2026-06-26 15:02:11.070 [INF] BTWL: Started listening for bitcoind transaction notifications via ZMQ on 10.0.3.146:28333
2026-06-26T15:02:11+00:00  2026-06-26 15:02:11.072 [INF] RPCC: Established connection to RPC server bitcoind.startos:8332
2026-06-26T15:02:11+00:00  2026-06-26 15:02:11.072 [INF] RPCC: Established connection to RPC server bitcoind.startos:8332

2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.109 [INF] BTWL: The wallet has been unlocked without a time limit
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.173 [INF] CHRE: LightningWallet opened
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.181 [INF] SRVR: Onion services are accessible via Tor! NOTE: Traffic to clearnet services is not routed via Tor. rev=848b72
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.229 [INF] HSWC: Cleaning circuits from disk for closed channels
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.285 [INF] HSWC: Finished cleaning: num_closed_channel=1, num_circuits=0, num_keystone=0
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.285 [INF] HSWC: Restoring in-memory circuit state from disk
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.288 [INF] HSWC: Payment circuits loaded: num_pending=0, num_open=0
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.322 [INF] CRTR: Loaded 35 mission control entries
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.411 [INF] ACSM: Access Manager initialized
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.424 [INF] LTND: Channel backup proxy channel notifier starting
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.435 [ERR] RPCS: [/lnrpc.Lightning/GetInfo]: the RPC server is in the process of starting up, but not yet ready to accept calls
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.441 [INF] CHIO: Registered queue=1 with 3 blockbeat consumers
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.453 [INF] ATPL: Instantiating autopilot with active=false, max_channels=5, allocation=0.600000, min_chan_size=20000, max_chan_size=16777215, private=false, min_confs=1, conf_target=3
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.460 [INF] RRPC: Making macaroons for Router RPC Server at: /root/.lnd/data/chain/bitcoin/mainnet/router.macaroon
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.465 [INF] SGNR: Making macaroons for Signer RPC Server at: /root/.lnd/data/chain/bitcoin/mainnet/signer.macaroon
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.469 [INF] WLKT: Baking macaroons for WalletKit RPC Server at: /root/.lnd/data/chain/bitcoin/mainnet/walletkit.macaroon
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.474 [INF] IRPC: Baking macaroons for invoices RPC Server at: /root/.lnd/data/chain/bitcoin/mainnet/invoices.macaroon
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.478 [INF] NTFR: Baking macaroons for ChainNotifier RPC Server at: /root/.lnd/data/chain/bitcoin/mainnet/chainnotifier.macaroon
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.482 [INF] LTND: We're not running within systemd or the service type is not 'notify'
2026-06-26T15:02:14+00:00  2026-06-26 15:02:14.484 [INF] LTND: Waiting for chain backend to finish sync rev=848b72 start_height=955504

2026-06-26T15:02:15+00:00  2026-06-26 15:02:15.268 [INF] BTWL: Started rescan from block 0000000000000000000003ff07895abda04e1a1594d02ee7233d886e86ff5bcd (height 912223) for 9 addrs, 3 outpoints
2026-06-26T15:02:15+00:00  2026-06-26 15:02:15.490 [WRN] BTWL: Received non-standard input sig=0360eb0d1b4d696e656420627920416e74506f6f6c3936312e004e00d1ad6821fabe6d6d6b34b64214ad3add63337f725a4b0fefe52c2ab738a8a056a1a569395ac840b710000000000000000000f7f28757000000000000, witness=[0000000000000000000000000000000000000000000000000000000000000000]
2026-06-26T15:02:15+00:00  daemon synced-true waiting on sync-progress

2026-06-26T15:02:15+00:00  2026-06-26 15:02:15.823 [WRN] BTWL: Received non-standard input sig=0361eb0d11627463636f6d3839302e007c00d3e2a0dbfabe6d6d9e4f5568f0b51513cb49f114412a9b677a380289eddfcb465d330a611ab4d99610000000000000000000d03cc703000000000000, witness=[0000000000000000000000000000000000000000000000000000000000000000]

Thanks so much for your help @StuPleb ! I worked with an LLM on this for hours and it couldn’t resolve the issue, but you did. I think the missing piece was that you recommended to remove the macaroon.db file in addition to the .macaroon files, which the LLM neglected.

I will follow up after the lnd sync to report on channel and wallet state to make sure I have access to all funds.

I’m really glad to hear this. :tada:

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.