Skip to content

Instantly share code, notes, and snippets.

@openoms
Last active April 4, 2022 20:47
Show Gist options
  • Save openoms/ef2d71f98d0f6ee6441e91f840b89e4c to your computer and use it in GitHub Desktop.
Save openoms/ef2d71f98d0f6ee6441e91f840b89e4c to your computer and use it in GitHub Desktop.
Install Core Ligthning on a RaspiBolt - cleaned and modified from the RaspiBlitz cl.install.sh
#!/bin/bash
# https://lightning.readthedocs.io/
# https://github.com/ElementsProject/lightning/releases
# CLVERSION=v0.10.2
# install the latest master by using the last commit id
# https://github.com/ElementsProject/lightning/commit/master
# CLVERSION="063366ed7e3b7cc12a8d1681acc2b639cf07fa23"
# https://github.com/ElementsProject/lightning/tree/master/contrib/keys
# PGPsigner="rustyrussel"
# PGPpubkeyLink="https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/keys/rustyrussell.txt"
# PGPpubkeyFingerprint="D9200E6CD1ADB8F1"
# PGPsigner="cdecker"
# PGPpubkeyLink="https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/keys/${PGPsigner}.txt"
# PGPpubkeyFingerprint="A26D6D9FE088ED58"
# refer also to https://github.com/real-doman/RaspiBolt/blob/c-lightning/c-lightning.md
# Login as "admin" user, create the "cl" service user and add it to the groups "bitcoin" and "debian-tor"
sudo adduser --disabled-password --gecos "" cl
sudo usermod -a -G bitcoin,debian-tor cl
# download and verify the source from github
cd /home/cl
# - Cloning https://github.com/ElementsProject/lightning.git
sudo -u cl git clone https://github.com/ElementsProject/lightning.git
cd lightning
# - Reset to version v0.10.2
sudo -u cl git reset --hard v0.10.2
## git verification
## see raspiblitz
# /home.admin/config.scripts/blitz.git-verify.sh
# sudo -u bitcoin /home/admin/config.scripts/blitz.git-verify.sh \
# "${PGPsigner}" "${PGPpubkeyLink}" "${PGPpubkeyFingerprint}" "${CLVERSION}" || exit 1
# from https://lightning.readthedocs.io/INSTALL.html#to-build-on-ubuntu
sudo apt-get install -y \
autoconf automake build-essential git libtool libgmp-dev \
libsqlite3-dev python3 python3-mako net-tools zlib1g-dev libsodium-dev \
gettext
# additional requirements
sudo apt-get install -y postgresql libpq-dev
# installing mrkd and mistune for root is likely redundant so just install for the cl user
#sudo pip3 install mrkd==0.2.0
#sudo pip3 install mistune==0.8.4
# for pylightning
# - Install from the requirements.txt
sudo -u cl pip3 install --user mrkd==0.2.0
sudo -u cl pip3 install --user mistune==0.8.4
sudo -u cl pip3 install --user -r requirements.txt
#- Configuring EXPERIMENTAL_FEATURES enabled"
sudo -u cl ./configure --enable-experimental-features
#"- Building C-lightning from source"
sudo -u cl make
# - Install to /usr/local/bin/
sudo make install
##########
# Config #
##########
# check version
sudo -u cl lightning-cli --version
# Add plugin-dir: /home/cl/cl-plugins-enabled"
# Add plugin-dir: /home/cl/cl-plugins-available"
# note that the disk is mounted with noexec
sudo -u cl mkdir /home/cl/cl-plugins-enabled
sudo -u cl mkdir /home/cl/cl-plugins-available
# Store the lightning data in /data
# Symlink to /home/cl/
sudo rm -rf /home/cl/.lightning # not a symlink, delete
sudo mkdir -p /data/.lightning
sudo ln -s /data/.lightning /home/cl/
# Create a symbolic link, which points from your admin home directory into the lightning directory
sudo ln -s /data/.lightning /home/admin/
sudo -u cl mkdir /home/cl/.lightning/bitcoin
# Create /home/cl/.lightning/config"
# paste this as a block
echo "# lightningd configuration for bitcoin mainnet
network=bitcoin
log-file=cl.log
log-level=info
plugin-dir=/home/cl/cl-plugins-enabled
# Tor settings
proxy=127.0.0.1:9050
bind-addr=127.0.0.1:9736
addr=statictor:127.0.0.1:9051/torport=9736
always-use-proxy=true
" | sudo tee /home/cl/.lightning/config
sudo chown -R cl:cl /data/.lightning
sudo chown -R cl:cl /home/cl/
## Create a wallet from seedwords for mainnet
## see raspiblitz /home.admin/config.scripts/cl.hsmtool.sh new-force mainnet
#################
# Backup plugin #
#################
# see raspiblitz
# /home.admin/config.scripts/cl-plugin.backup.sh on mainnet
###################
# Systemd service #
###################
## see Raspiblitz
# /home.admin/config.scripts/cl.install-service.sh mainnet
#############
# logrotate #
#############
# Set logrotate for lightningd"
sudo -u cl mkdir /home/cl/.lightning/bitcoin/cl.log_old
# paste this as a block
echo "\
/home/cl/.lightning/bitcoin/cl.log
{
rotate 5
daily
copytruncate
missingok
olddir /home/cl/.lightning/bitcoin/cl.log_old
notifempty
nocompress
sharedscripts
# We don't need to kill as we use copytruncate
#postrotate
# kill -HUP \`cat /run/lightningd/lightningd.pid\'
#endscript
su cl cl
}" | sudo tee /etc/logrotate.d/lightningd
# debug logrotate:
# sudo logrotate --debug /etc/logrotate.d/lightningd
# Monitor the lightningd with:"
# sudo journalctl -fu lightningd"
# sudo systemctl status lightningd"
# logs:"
# sudo tail -f /home/cl/.lightning/bitcoin/cl.log"
# for the command line options use"
# lightning-cli help"

Some features implemented on the RaspiBlitz which can be tackled one-by-one after the initial install is functional:

  • git verification
  • creating an hsm_secret from seed
  • systemd service
  • setting up the backup plugin
  • hsm_secret encryption
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment