# Cómo Instalar un nodo Core Lightning en red testnet con Linux Ubuntu y que use Tor
###### tags: `talleres_mln`
Este es un tutorial para instalar la implementación de Blockstream de la lightning network llamada inicialmente c-lightning y renombrada actualmente a Core Lightning (CLN)
**Tabla de contenido**
[TOC]
## Autor
Twitter para correcciones, comentarios o sugerencias: [@bitao36](https://twitter.com/bitao36)
El presente tutorial fue elaborado para el [Seminario socrático de Mastering Lightning](https://libreriadesatoshi.com/) a través de [@libreriadesatoshi](https://twitter.com/libdesatoshi).
## Requerimentos :information_source:
:::info
* Tener instalada una distribución de Linux basada en Debian, preferiblemente Ubuntu.
* Tener instalado un nodo de Bitcoin Core
* Tener instalado Tor
:::
Para poder ejecutar un nodo core lightning en testnet, debes tener instalado y corriendo Bitcoin Core.
## Instalar dependencias para poder compilar lightningd
```gherkin=
$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:
```gherkin=
$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:
```gherkin=
$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 v24.05 de modo que vamos a ese release:
`$git checkout v24.05`
Ahora si compilamos y ejecutamos lightning:
```gherkin=
$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:
```gherkin=
network=testnet
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:
```gherkin=
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.
```gherkin=
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 :-)