Remote lotus-wallet management
This is a step-by-step guide on how to set up the lotus-wallet for remote wallet management. This tutorial is for experienced Lotus users.
This tutorial is based on a setup with two different servers, one to run the lotus daemon
while the other runs the lotus-wallet
application.
Prerequisites
- lotus-wallet installed on a separate server.
- Backup of your addresses private keys.
Initial setup
On the server that is going to run the lotus-wallet
binary. Run lotus-wallet get-api-key
to initialize the ~/.lotuswallet
repo and generate the API key for it. If you want to create the .lotuswallet repo in a custom location, you can specify the repo with the --wallet-repo
option, or by exporting a WALLET_PATH=/path/to/lotuswallet
environment variable.
2022-08-12T12:56:53.817Z INFO repo repo/fsrepo.go:267 Initializing repo at '/home/server/.lotuswallet'
2022-08-12T12:56:53.817Z WARN modules modules/core.go:148 Generating new API secret
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBbGxvdyI6WyJhZG1pbiJdLCJDcmVhdGVkIjoiMjAyMi0wOC0xMlQxMjo1Njo1My44MTc0MTUzMzlaIiwiUnVsZXMiOm51bGx9.bS-6hLG1csJu8Pa8c8AQ_5IUX98iAfyxlMRiO61X1_g
After that you can run the lotus-wallet with lotus-wallet run
. Depending on your network setup and where you are planning to run the lotus-wallet
you might want to specify the host address and port the wallet api will listen on with the --listen
option.
./lotus-wallet run --listen 123.123.12.123:1777
2022-08-12T13:26:46.976Z INFO main lotus-wallet/main.go:286 Starting lotus wallet
2022-08-12T13:26:46.977Z INFO main lotus-wallet/main.go:331 Setting up API endpoint at 123.123.12.123:1777
2022-08-12T13:26:46.978Z INFO main lotus-wallet/main.go:378 API auth enabled, use 'lotus-wallet get-api-key' to get API key
Now we need to configure our lotus daemon node. Edit your lotus config (~/.lotus/config.toml), and locate the [Wallet] section. Set the the RemoteBackend
to [api key]:http://[wallet ip]:[wallet port]
(the default port is 1777).
So in our example that would be:
[Wallet]
# type: string
# env var: LOTUS_WALLET_REMOTEBACKEND
RemoteBackend = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBbGxvdyI6WyJhZG1pbiJdLCJDcmVhdGVkIjoiMjAyMi0wOC0xMlQxMjo1Njo1My44MTc0MTUzMzlaIiwiUnVsZXMiOm51bGx9.bS-6hLG1csJu8Pa8c8AQ_5IUX98iAfyxlMRiO61X1_g:http://123.123.12.123:1777"
Then restart (or run) your lotus daemon node. You can confirm that your lotus-wallet
remote backend is properly set up by running the lotus wallet list
command on the lotus daemon. On the server that is running lotus wallet
you should be able to see that action being logged:
2022-08-12T13:44:10.181Z INFO main lotus-wallet/logged.go:35 WalletList
Importing addresses
For now stop the lotus-wallet
and restart it in the interactive
mode while we import the addresses.
lotus-wallet run --interactive=true --listen 123.123.12.123:1777
On your lotus daemon node start importing the backup keys for the addresses you want to have on the lotus-wallet
.
lotus wallet import /path/to/backup/lotus-wallet.key
On your lotus-wallet
node you should now see a prompt, asking you if you want to import the private key. Authorize the import to finalize the address import on the lotus-wallet
.
-----
ACTION: WalletImport - Import private key
TYPE: bls
Accept the above? (Authorize/No): Authorize
approved
Repeat the process for all the addresses you want to be managed by the lotus-wallet
. After importing all the keys stop the lotus-wallet
process and restart the lotus daemon with the RemoteBackend config turned off:
[Wallet]
# type: string
# env var: LOTUS_WALLET_REMOTEBACKEND
#RemoteBackend = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBbGxvdyI6WyJhZG1pbiJdLCJDcmVhdGVkIjoiMjAyMi0wOC0xMlQxMjo1Njo1My44MTc0MTUzMzlaIiwiUnVsZXMiOm51bGx9.bS-6hLG1csJu8Pa8c8AQ_5IUX98iAfyxlMRiO61X1_g:http://123.123.12.123:1777"
Now you can start removing the addresses on the lotus daemon node with lotus wallet delete
.
lotus wallet delete
cmd is just a soft-deletion of your addresses' private keys in the Lotus database. A hard deletion of the private keys in the ~/.lotus/keystore
folder is needed to make them non-retrievable. NB! Make sure that you have a backup of your addresses' private keys in a safe and secure place before you hard-delete them.After all that is done, you can now restart the lotus-wallet
without the --interactive
mode. When you run the lotus wallet list
on the lotus daemon node you should be able to see all your keys. You have now successfully set up the lotus-wallet
binary to handle your keys and addresses.
Extra steps
If you want to create any new wallets that you do not want to be on the remote lotus-wallet
service (such as PoSt-control addresses for example) will require you to turn of the RemoteBackend config, restart the daemon and create them such that they land on the server running lotus-daemon
and not the lotus-wallet
.