Cómo instalar un nodo Core Lightning desde cero con Linux Debian/Ubuntu y que use Tor

Para poder ejecutar un nodo Core Lightning , debes tener instalado y corriendo Bitcoin Core. En caso de que no lo tengas instalado te recomiendo que vayas primero al siguiente tutorial Como instalar un nodo de Bitcoin Core

Instalar dependencias para poder compilar lightningd

$sudo apt-get update
$sudo apt-get install -y \
autoconf automake build-essential git libtool libgmp-dev libsqlite3-dev \
python3 python3-mako python3-pip net-tools zlib1g-dev libsodium-dev gettext
$pip3 install --upgrade pip

Si se quiere usar el plugin cln-grpc o constuir plugins con Rust debes instalar Rust con esta linea:

$sudo apt-get install -y cargo rustfmt

En caso de que estés interesado en desarrollar, debes instalar estas dependencias adicionales:

$sudo apt-get install -y valgrind libpq-dev shellcheck cppcheck \
libsecp256k1-dev jq

Compilar e instalar lightningd

Clonamos el repositorio donde está el código fuente de c-lightning:

$git clone https://github.com/ElementsProject/lightning.git
$cd lightning

Buscamos la última versión estable:

$git tag

En el momento de actualizar este tutorial es la v23.05 de modo que vamos a ese release:

$git checkout v23.05

Ahora si compilamos y ejecutamos lightning:

$pip3 install --upgrade pip
$pip3 install mako 
$./configure
$make -j$(nproc)
$sudo make install

Antes de ejecutar lightningd debemos crear el directorio .lightning y dentro de ese directorio vamos a crear el archivo config

$sudo nano ~./lightning/config

Y agregamos las siguientes líneas:

network=bitcoin
log-level=debug
log-file=lightningd.log
addr=0.0.0.0:9735

Antes de lanzar lightningd ya debe estar corriendo bitcoind.

Ahora si lanzamos lightningd como demonio:

$lightningd --daemon

Y obtenemos datos del nodo:

$lightning-cli getinfo

Felicitaciones ahora tienes corriendo un nodo core lightning.

Con este comando puedes detener lightningd

$lightning-cli stop

Configurar lightningd para que use Tor y cargue al iniciar el sistema.

Abrimos el archivo de configuración de Tor:

$sudo nano /etc/tor/torrc

y añadimos las siguientes líneas:

HiddenServiceDir /var/lib/tor/lightningd-service_v3/
HiddenServiceVersion 3
HiddenServicePort 9735 127.0.0.1:9735

presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Detenemos Tor:

$sudo systemctl stop tor

Volvemos a lanzar Tor:

$sudo systemctl start tor

Ahora ejecutamos el siguiente comando para obtener la dirección onion que nos asignó Tor.

$sudo cat /var/lib/tor/lightningd-service_v3/hostname

Esta dirección que nos acaba de arrojar es una dirección tor fija para nuestro nodo lightning

Añade esta dirección en el archivo de configuración de lightningd

$sudo nano ~./lightning/config

Copia las siguientes líneas en ese archivo reemplazando la que dice announce-addr por la que hayas obtenido.

announce-addr=huzhaegx5xoeqebmrjeiti6hu7qpg4pavr5lq4vaf52h4bq5rgx4oaid.onion
:9735
proxy=127.0.0.1:9050
always-use-proxy=true

presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Ahora detenemos lightningd con el siguiente comando:

$lightning-cli stop

Ahora regarcamos Tor:

$sudo systemctl restart tor

E iniciamos de nuevo lightningd:

$lightningd –daemon

Para observar que esté funcionando, ejecutamos:

$lightning-cli getinfo

Si no hacemos nada más, cada vez que se reinicie el PC hay que ejecutar este comando para que bitcoind se ejecute. Por eso lo que debemos hacer es crear un servicio para que se ejecute automáticamente al iniciar el pc.

Antes de crear el servicio detengamos de nuevo lightningd para lanzarlo luego como servicio:

$lightning-cli stop

Ahora para crear el servicio vamos a la siguiente ruta:

$cd /etc/systemd/system

Y ejecutamos este comando para obtener el archivo de configuración directamente desde el repositorio de bitcoin

$sudo wget https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/init/lightningd.service

Ahora tenemos que modificar las rutas donde esta el parámetro ExecStart

$sudo nano lightningd.service

ExecStart=/usr/local/bin/lightningd --daemon   /home/admon/.lightning/config --pid-file=/run/lightningd/lightningd.pid

presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Ejecutamos este comando para que inicie el servicio cuando se reinicie el equipo:

$sudo systemctl enable lightningd.service

Y con este comando lo ejecutamos:

$sudo systemctl start lightningd.service

Para mirar el estado del servicio ejecutamos:

$sudo systemctl status lightningd.service

Si deseamos detenerlo usamos:

$sudo systemctl stop lightningd.service

Si has llegado hasta aquí muchas felicitaciones, tienes corriendo un nodo con Bitcoin Core y Core Lightning, ahora tienes tu propio banco y por primer vez en la historia podrás tener soberanía monetaria 🙂