I got inspired from trying to participate in
NotATether's Lightning challenge, and decided to undertake on a big project. I am aware that there are various guides online, documentation and everything but as my experience trying to set up lightning shows, they have issues. Sometimes information is lacking, sometimes they have errors or outdated instructions, and other times they come with different assumptions of user knowledge which are implicit and not warranted or helpful.
My focus will be on desktop wallets, as mobile wallets usually do not require guides or require minimum setup. If you have issues with a mobile application, contact the developers of it. It is likely related to your specific device and OS version configuration. This is an experimental break-down of every wallet that I have attempted to install. The guide will also focus on providing information for a Linux Ubuntu using up to date information. If someone else wants to repeat this process for your own OS, you are very welcome to contribute with that information. If you have suggestions or feedback, feel free to post them here or DM me directly.
Important Reminders- Some attempts might not work out, as was the case with my first try using Eclair. But that doesn’t make the guide less valuable, failure is an integral part of this journey. As we figure things out, I’ll update the guide accordingly. There will also be a FAQ section which is very much needed. My personal experience is that sometimes looking up information regarding errors results with no useful information.
- At times basic Linux knowledge is required and expected. If you're new to Linux, make sure you're comfortable with tasks like navigating directories, using the terminal, and more. If you're not sure, check out a guide such as this one: https://www.geeksforgeeks.org/30-days-of-linux/. For those that have a GUI, you will have an easier time just using it for basic operations instead of the commands but you are welcome to try and learn.
Part 1: Prerequisites and Installation
The list of LN wallets that are part of this guide:
Operating System: Ubuntu 24.04 LTS, desktop or server.
Probably any Ubuntu/Debian derivative will work, but I can't guarantee it. You are free to try. To limit duplication of information, a short-guide for Bitcoin Core will be provided in this section.
1. User Account Setup:
For security reasons, you should not run anything as root. It is recommended to create a new user account. I highly recommend that you read more about this here:
https://dev.to/despider/why-not-to-use-root-user-317a.
For this guide, we will create a user called
lightning and work under it. Open a terminal and run the commands at each step in the order that they are provided. Commands are always shown in code blocks.
1. Create the user called lightning. You will be asked to set a password. For the remaining information that you are asked to input, you don't have to enter anything.
sudo adduser lightning
sudo usermod -aG sudo lightning
2. To work using this user account you must use this command.
2. Bitcoin Core Setup:
1. Download the latest release from here:
https://bitcoincore.org/en/download/. At the time of writing this was v29.0. In most situations where Ubuntu is usually used, you will require the file that is linked as
Linux (tgz). Note: If you want to do additional verification on the download, the instructions for several operating systems are found on the same link. I will not reproduce them here. I will work in the /home/ folder but you can work in any location of your preference. In this step, the commands will navigate to the user's home folder, download Bitcoin Core and extract it.
cd /home/lightning/
wget https://bitcoincore.org/bin/bitcoin-core-29.0/bitcoin-29.0-x86_64-linux-gnu.tar.gz
tar -xvf bitcoin-29.0-x86_64-linux-gnu.tar.gz
2. To be able to start bitcoind and bitcoin-cli from anywhere, it has to be moved to a new location. We do this under
/home/lightning/.bin and load the configuration from .profile using the
source command to make it work. You will need to use the
source command to load the configuration for each new terminal you open (if they are non login terminals like you would have when using Ubuntu Desktop).
mkdir /home/lightning/bin
mv /home/lightning/bitcoin-29.0/bin/bitcoin-cli /home/lightning/bin
mv /home/lightning/bitcoin-29.0/bin/bitcoind /home/lightning/bin
source /home/lightning/.profile
3. The default data directory is ~/.bitcoin which in our case is /home/lightning/.bitcoin. To keep things simpler we will also use this location. You can change this by specifying
--datadir if you want. In this step, we create the directory, the bitcoin.conf files and specify the needed configurations. I will use nano as the text editor as it is more user friendly.
mkdir /home/lightning/.bitcoin
nano /home/lightning/.bitcoin/bitcoin.conf
Use the following configuration options and make sure to specify your own RPC username and password.
daemon=1
server=1
txindex=1
wallet=firstwallet
rpcuser=yourusername
rpcpassword=yourpassword
zmqpubrawblock=tcp://127.0.0.1:29000
zmqpubhashblock=tcp://127.0.0.1:29000
zmqpubrawtx=tcp://127.0.0.1:29001
Information about each option used here is provided in the FAQ. Please read the 3rd post of this thread.
Note: You will need 750 GB or more disk space to run a full node.
4. If you have done everything correctly the following things will be done: First start bitcoind, and give it a few seconds of time to run properly. Then use bitcoin-cli to create a new wallet called firstwallet.
bitcoind
bitcoin-cli createwallet firstwallet
To confirm you have done this successfully, you will receive a response like this:
{
"name": "firstwallet"
}
Next, a shutdown of the software is done using the -cli and it is started again using the bitcoind.
Note: as some system configurations can be slow, always give bitcoind a few seconds of time before running the next command in any code block.
If you run commands too fast after startup you will receive a error.
While this step was not entirely necessary as Bitcoin Core will automatically load the created wallet in the current instance, it is provided so that the configuration file can be tested. You want to make sure that your wallet will load when you restart the software as well. To check the currently loaded wallets after doing a restart, use the following command:
Again, if you get this response that means you have completed the steps correctly.
{
"name": "firstwallet"
}
5. The final step is to fully synchronize the blockchain. You can check the status of your node with the following command:
bitcoin-cli getblockchaininfo
You will receive a response like this:
{
"chain": "main",
"blocks": 219242,
"headers": 895831,
"bestblockhash": "0000000000000012767dba93bdb63e4a3e0df576e3a2e8439a78c813feb3d792",
"bits": "1a05a6b1",
"target": "00000000000005a6b10000000000000000000000000000000000000000000000",
"difficulty": 2968775.332075074,
"time": 1359805720,
"mediantime": 1359804704,
"verificationprogress": 0.01017237324622422,
"initialblockdownload": true,
"chainwork": "000000000000000000000000000000000000000000000028fe60976baa91803d",
"size_on_disk": 6124750373,
"pruned": false,
"warnings": [
]
}
If you see something like this, that means you have successfully completed all steps so far. Congratulations!

The
blocks line tells you how many blocks you have synchronized, and the
headers tells you the current block number of the Bitcoin blockchain. Alternatively, you can also follow the progress with
verificationprogress which needs to reach 0.99 or wait until
initialblockdownload is set to false. It is important to remember that synchronization time is not linear, so if it took you 4 hours to reach 25% of the blocks that does not mean that it will take you just 12 more hours to reach full synchronization.
At this point,
I strongly suggest that you take a break and let it synchronize. You have deserved it.
EclairPrerequisites: Bitcoin Core and Adoptium OpenJDK.
Adoptium OpenJDK Setup:
1. In the first step, download the Adoptium JDK from Github:
https://github.com/adoptium/temurin21-binaries/releases. Then extract it and move it to /home/lightning/bin. The version at the time of writing this guide is 21.0.7+6, so you may need to adjust the wget command if there is a newer version of it is explicitly required by Eclair. This information was sourced from
this guide, which I followed to successfully install Adoptium on my own systems. You can consult it if more steps are needed by your configuration.
cd /home/lightning/
wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-jdk_x64_linux_hotspot_21.0.7_6.tar.gz
tar -xvf OpenJDK21U-jdk_x64_linux_hotspot_21.*.tar.gz
mv jdk-21.0.7+6 /home/lightning/bin/
2. Export the environment variables by adding them to .bashrc. Using sed, we can append these two lines to the file. Next, force an update on .bashrc with the source command
sed -i '$a export JAVA_HOME=/home/lightning/bin/jdk-21.0.7+6' /home/lightning/.bashrc
sed -i '$a export PATH=$PATH:$JAVA_HOME/bin' /home/lightning/
source /home/lightning/.bashrc
3. Verify that the JAVA variables are set properly:
You should get a response like this:
/home/lightning/bin/jdk-21.0.7+6
4. To set the default JAVA version for the system.
sudo update-alternatives --install /usr/bin/java java /home/lightning/bin/jdk-21.0.7+6/bin/java 1
sudo update-alternatives --config java
You will get a response similar to this depending on your system:
There is 1 choice for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /home/lightning/jdk-21.0.7+6/bin/java 1 auto mode
1 /home/lightning/jdk-21.0.7+6/bin/java 1 manual mode
Press <enter> to keep the current choice
- , or type selection number:
If you have multiple versions of java, select this one as the default by entering the right number. In this case select 0. With this, the prerequisites are complete and you can start the Eclair installation process.
Eclair Setup:
1. Download the
latest version of eclair-node and extract the files to a separate folder. At the time of writing this is Eclair v0.12.0 and we will use a folder located in /home/lightning/. Only the eclair-cli will be moved to another location so that we can access it from anywhere.
cd /home/lightning/
wget https://github.com/ACINQ/eclair/releases/download/v0.12.0/eclair-node-0.12.0-4df8cd0-bin.zip
unzip eclair-node-0.12.0-4df8cd0-bin.zip
mv eclair-node-0.12.0-4df8cd0/bin/eclair-cli /home/lightning/bin
2. Next, create .eclair in the home directory similar to what was required for Bitcoin Core and create a configuration file named
eclair.conf. The options in bold are those which you need to edit. Make sure that your API password is strong, and that the RPC configuration data matches that which you have set up in bitcoin.conf.
mkdir /home/lightning/.eclair/
nano /home/lightning/.eclair/eclair.conf
eclair.node-alias=alias
eclair.server.port=9735
eclair.api.enabled=true
eclair.api.port=8080
eclair.api.password=Password
eclair.bitcoind.rpcuser=YourUsernameFromBitcoin.Conf
eclair.bitcoind.rpcpassword=YourPasswordFromBitcoin.Conf
eclair.bitcoind.zmqblock="tcp://127.0.0.1:29000"
eclair.bitcoind.zmqtx="tcp://127.0.0.1:29001"
eclair.bitcoind.wallet=firstwallet
This is a minimum working configuration. Many more configurations and examples can be found here:
https://github.com/ACINQ/eclair/blob/master/docs/Configure.md.
3. Next, test that the node can be started. You will see no output, which is good. The test is to just make sure if no errors are thrown. You can exit by pressing CTRL + C.
/home/lightning/eclair-node-0.12.0-4df8cd0/bin/eclair-node.sh
4. To enable the node to run in the background, a system service needs to be created. To do this, a systemd file must be created.
sudo nano /lib/systemd/system/eclair.service
Copy the following block inside eclair.service:
[Unit]
Description=Eclair Shell Script
[Service]
ExecStart=/home/lightning/eclair-node-0.12.0-4df8cd0/bin/eclair-node.sh
[Install]
WantedBy=multi-user.target
Afterwards, run the following commands to reload the daemon, enable the service and start it.
sudo systemctl daemon-reload
sudo systemctl enable eclair.service
sudo systemctl start eclair.service
5. If you've done everything correctly so far, the eclair node should be runnign by now. To confirm this, run the following command:
You will need to enter your Eclair API password, the one you set up in the file
eclair.conf. You will get an output similar to this one, which confirms that your node is successfully running.
{
"version": "0.12.0-4df8cd0",
"nodeId": "hidden",
"alias": "helloLightning",
"color": "#49daaa",
"features": {
"activated": {
"option_simple_close": "optional",
"option_route_blinding": "optional",
"option_dual_fund": "optional",
"gossip_queries_ex": "optional",
"option_data_loss_protect": "mandatory",
"var_onion_optin": "mandatory",
"option_static_remotekey": "mandatory",
"option_scid_alias": "optional",
"option_onion_messages": "optional",
"option_support_large_channel": "optional",
"option_anchors_zero_fee_htlc_tx": "optional",
"payment_secret": "mandatory",
"option_shutdown_anysegwit": "optional",
"option_channel_type": "optional",
"basic_mpp": "optional",
"gossip_queries": "optional",
"option_quiesce": "optional",
"option_payment_metadata": "optional"
},
"unknown": []
},
"chainHash": "6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000",
"network": "mainnet",
"blockHeight": 895432,
"publicAddresses": [],
"instanceId": "hidden"
}
Congratulations! You are now ready to use Eclair. For more information, visit the official Eclair documentation:
https://github.com/ACINQ/eclair/tree/master/docs,
https://github.com/ACINQ/eclair/blob/master/docs/Guides.md,
https://github.com/ACINQ/eclair/blob/master/docs/FAQ.md.
LNDPrerequisites: Bitcoin Core.
1. Download the
latest version of LND and extract the files to a separate folder. At the time of writing this is lnd v0.18.5-beta and we will again use a folder located in /home. If you want to do additional verification on binaries, information is provided directly in the
release. As you have already learned how to extract files in previous parts of this guide, multiple operations will be done in this step. Following the information from the
documentation, we will move the binaries to a location where the system can find it.
cd /home/lightning/
wget https://github.com/lightningnetwork/lnd/releases/download/v0.18.5-beta/lnd-linux-amd64-v0.18.5-beta.tar.gz
tar -xvf lnd-linux-amd64-v0.18.5-beta.tar.gz
mv lnd-linux-amd64-v0.18.5-beta/lnd /home/lightning/bin
mv lnd-linux-amd64-v0.18.5-beta/lncli /home/lightning/bin
2. Before starting LND, a configuration file must be provided. To do this, the .lnd folder must be created in /home/lightning/ and a basic configuration must be set in the file lnd.conf. Make sure that your RPC username and password match the ones that you have set up for Bitcoin Core. The configuration only includes the basic necessary configurations and a few recommended lines from the
documentation. Please read up on them if you are interested in what they do.
mkdir /home/lightning/.lnd
nano /home/lightning/.lnd/lnd.conf
bitcoin.node=bitcoind
bitcoind.rpcuser=YourUsernameFromBitcoin.Conf
bitcoind.rpcpass=YourPasswordFromBitcoin.Conf
bitcoind.zmqpubrawblock=tcp://127.0.0.1:29000
bitcoind.zmqpubrawtx=tcp://127.0.0.1:29001
bitcoin.mainnet=true
rpcmiddleware.enable=true
db.bolt.auto-compact=true
alias=ChooseNodeName
3. If you have done everything correctly, LND can be started simply by writing
lnd in the console. However, first we will create a systemctl service using the provided sample file.
sudo nano /lib/systemd/system/lnd.service
Copy the following block inside lnd.service:
[Unit]
Description=Lightning Network Daemon
[Service]
ExecStart=/home/lightning/bin/lnd
ExecStop=/home/lightning/bin/lncli stop
[Install]
WantedBy=multi-user.target
Afterwards, run the following commands to reload the daemon, enable the service and start it.
sudo systemctl daemon-reload
sudo systemctl enable lnd.service
sudo systemctl start lnd.service
4. The final step involves creating a wallet, after which you will be able to use lncli. Set a strong password of your choosing, a passphrase is optional, and make sure to back up the 24 words.
5. Verify that LND is running correctly using the getinfo command. Keep in mind that you may need to unlock your wallet first with
lncli unlock.
You will get a response like this, I have removed some lines from it to keep it shorter:
{
"version": "0.18.5-beta commit=v0.18.5-beta",
"commit_hash": "4ccf4fc24c750d098cf24566ef4bbc0311c7d476",
"identity_pubkey": "03da538f07b1bafd88dbee79349ea567f391fc22c4aa65aa6772c880f7d94b2a4e",
"alias": "helloLightning",
"color": "#3399ff",
"num_pending_channels": 0,
"num_active_channels": 0,
"num_inactive_channels": 0,
"num_peers": 0,
"block_height": 895990,
"block_hash": "0000000000000000000099c27e6d08fa06abad3b04ceabdc34806511d17987e0",
"best_header_timestamp": "1746812177",
"synced_to_chain": false,
"synced_to_graph": false,
"testnet": false,
"chains": [
{
"chain": "bitcoin",
"network": "mainnet"
}
],
Congratulations! You are now ready to use LND. Please refer to this guide for more information:
https://docs.lightning.engineering/lightning-network-tools/lnd/first-steps-with-lnd.
Core LightningPrerequisites: Bitcoin Core.
1. Download the
latest version of lightning and extract the files to a separate folder. At the time of writing this is v25.02.2 and we will use a folder located in /home. As you have already learned how to extract files in previous parts of this guide, multiple operations will be done in this step. Additionally, libpq-dev must be installed to be able to run this implementation.
cd /home/lightning/
wget https://github.com/ElementsProject/lightning/releases/download/v25.02.2/clightning-v25.02.2-Ubuntu-24.04-amd64.tar.xz
tar -xvf clightning-v25.02.2-Ubuntu-24.04-amd64.tar.xz
sudo apt-get install libpq-dev libsodium-dev
2. To be able to call the lightningd and lightning-cli from anywhere, for this implementation we will create a symlink as it requires many libraries that come extracted with it.
ln -s /home/lightning/usr/bin/lightningd /home/lightning/bin
ln -s /home/lightning/usr/bin/lightning-cli /home/lightning/bin
3. You can now conduct a test-run by invoking the command that follows. Freely exit with CTRL + C when you are ready.
cd /home/lightning/
lightningd --network=bitcoin --log-level=debug
4. Now add a configuration file so that lightningd can run in the background.
touch /home/lightning/.lightning/debug.log
nano /home/lightning/.lightning/config
daemon
log-file=/home/lightning/.lightning/debug.log
alias=HelloCoreLightning
5. Invoke lightningd to start your node.
6. Run a test to make sure it is working.
You should get a response like this:
{
"id": "yourID",
"alias": "HelloCoreLightning",
"color": "039622",
"num_peers": 0,
"num_pending_channels": 0,
"num_active_channels": 0,
"num_inactive_channels": 0,
"address": [
{
"type": "ipv4",
"address": "yourIP",
"port": 9735
},
{
"type": "ipv6",
"address": "yourIP",
"port": 9735
}
],
"binding": [
{
"type": "ipv6",
"address": "::",
"port": 9735
},
{
"type": "ipv4",
"address": "0.0.0.0",
"port": 9735
}
],
"version": "v25.02.1",
"blockheight": 896289,
"network": "bitcoin",
"fees_collected_msat": 0,
"lightning-dir": "/home/lightning/.lightning/bitcoin",
"warning_lightningd_sync": "Still loading latest blocks from bitcoind.",
"our_features": {
"init": "08a0880a8a59a1",
"node": "88a0880a8a59a1",
"channel": "",
"invoice": "02000002024100"
}
}
I have used again a minimal working configuration, many more options are available here:
https://docs.corelightning.org/docs/configuration.
Bonus: ThunderHubThunderHub is a lightning node manager that lets you manage your LND node through your browser, it is not a lightning wallet. You can only use it
if you have installed LND. This is not mandatory, and it is also quite difficult.
Prerequisites: LND, NPM, NodeJS (Version 18 or higher), Git.
1. Check if your system has NPM and Node installed.
If any of these or both of these return command not found, in that case you need to install what is missing.
2. Install NPM and NodeJS and Git.
sudo apt install npm nodejs git
3. Verify your versions of NPM and Nod by using the commands from step 1.
4. Download ThunderHub, install it, do a test run.
git clone https://github.com/apotdevin/thunderhub.git /home/lightning/thunderhub/
cd /home/lightning/thunderhub
npm install
npm run build
5. Create a symbolic link from inside thunderhub to your .lnd folder and verify that it is there.
ln -s /home/lightning/.lnd /home/thunderhub/.lnd
ls -la
Within the output of the second command you should see a line like this:
.lnd -> /home/lightning/.lnd
6. Prepare the environment variables. First we copy the file and then edit it using nano.
cp /home/lightning/thunderhub/.env /home/lightning/thunderhub/.env.local
nano .env.local
You can write the following lines at the beginning of the file. Keep in mind that lines starting with # are commented out on purpose, ignore them.
LOG_LEVEL='debug'
NODE_ENV=production
PORT=3010
ACCOUNT_CONFIG_PATH = '/home/lightning/thunderhub/thubConfig.yaml'
7. Create the YAML account where you will define the account information. The bolded field, password, is one you must set. The underlined fields, serverUrl, macaroonPath, certificatePath, do not need to be changed if you have followed my guide. If you have installed LND somewhere else, just locate the correct paths and adjust this part of the configuration.
nano /home/lightning/thunderhub/thubConfig.yaml
masterPassword: 'PASSWORD' # Default password unless defined in account
accounts:
- name: 'MyThunderHub'
serverUrl: '127.0.0.1:10009'
macaroonPath: '/home/lightning/thunderhub/.lnd/data/chain/bitcoin/mainnet/admin.macaroon'
certificatePath: '/home/lightning/thunderhub/.lnd/tls.cert'
password: 'passwordHere'
8. Start ThunderHub to check if it is working properly.
cd /home/lightning/thunderhub
npm run start:prod
If it is working, you should see output that has stuff like this:
{
message: 'Connected to helloLightning(ID)BTC',
level: 'info',
timestamp: 'date-time-here'
}
That is it. If it is working, you can open a browser and navigate to 127.0.0.1:3010 to check it out. You can exit by pressing CTRL + C.
9. In the last step, create a systemctl service so that ThunderHub starts automatically and in the background.
sudo nano /etc/systemd/system/thunderhub.service
Paste all of the following:
[Unit]
Description=Thunderhub
Wants=lnd.service
After=network.target lnd.service
[Service]
WorkingDirectory=/home/lightning/hunderhub/thunderhub
ExecStart=/usr/bin/npm run start:prod
[Install]
WantedBy=multi-user.target
Reload systemctl, enable and start the service.
sudo systemctl daemon-reload
sudo systemctl enable thunderhub.service
sudo systemctl start thunderhub.service
Disclaimer: This guide is meant to provide help in the users that decide to install Lightning. I am not responsible for any issues that may lead to you losing any amount of Bitcoin because of this. You are your own bank, and as such you are solely responsible for any losses that occur.