# Instalación de Core Lightning (anteriormente C-Lightning) en Linux
###### tags: `bitcoin` `cli` `nodo` `node` `macos` `Linux` `Lightning`
Core Lightning (anteriormente C-lightning) es una implementación liviana, altamente personalizable y compatible con los estándares del protocolo de la red Lightning.
- Aquí tienes una guía paso a paso para instalar un nodo Lightning (usando Core Lightning como ejemplo) en Linux.
**Tabla de contenido**
[TOC]
## Autores
Jonny_Ji.
Twitter para correcciones, comentarios o sugerencias: [@JonnyJi50127056](https://x.com/JonnyJi50127056)
El presente tutorial fue elaborado para el curso [Nodes from zero to hero](https://libreriadesatoshi.com/courses/nodes-from-zero-to-hero) a través de [@libreriadesatoshi](https://twitter.com/libdesatoshi).
En el siguiente enlace puedes encontrar la documentación de referencia:
[Core Lightning Documentation](https://docs.corelightning.org/docs/installation)
## Core Lightning
Core Lightning (CLN), anteriormente conocido como c-lightning, es una implementación ligera, modular y altamente personalizable del protocolo Lightning Network diseñada y mantenida por Blockstream.
Está escrita principalmente en C y utiliza un sistema de plugins que permite a desarrolladores y operadores adaptar y ampliar su funcionalidad según sus necesidades, destacándose por su cumplimiento estricto de los estándares BOLT para la interoperabilidad en la red.
**Características principales de Core Lightning**
- Ligereza y eficiencia: Uso mínimo de recursos, lo que permite operar múltiples instancias en hardware de bajo consumo como Raspberry Pi.
- Arquitectura modular: El uso de subdaemons y plugins facilita la personalización de funciones, integrando fácilmente nuevas capacidades o automatizando operaciones complejas.
- Privacidad: Soporta Multi-Part Payments por defecto, rutas aleatorias, y diversidad de canales, junto con soporte completo para Tor.
- Gestión avanzada de liquidez: Incluye herramientas para anuncios de liquidez P2P (Liquidity Ads) y soporte para aperturas colaborativas de canales dual-funding.
- Orientación al desarrollador: Mediante plugins en cualquier lenguaje y una API JSON-RPC muy potente, favorece integraciones avanzadas y experimentación.
**Enfoque de uso**
CLN es ideal para usuarios avanzados, desarrolladores y operadores que requieren un control granular sobre su nodo Lightning, personalización profunda, máxima eficiencia y reducida dependencia de soluciones monolíticas. Su enfoque abierto y flexible contribuye a la descentralización y evolución de Lightning Network, siendo compatible con otras implementaciones líderes como LND y Eclair.
## Instalar Programas y Dependencias
Instalar librerías necesarias para compilar:
```shell
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 jq
pip3 install --upgrade pip
```
Para usar el plugin `cln-grpc` o constuir plugins con `Rust` debe instalar Rust con esta linea:
```shell
sudo apt-get install -y cargo rustfmt
```
Para desarrollar, debes instalar estas dependencias adicionales:
```shell
sudo apt-get install -y valgrind libpq-dev shellcheck cppcheck libsecp256k1-dev jq
sudo apt-get install protobuf-compiler
```
- Si se muestra una advertencia de que un directorio no está nombrado en el PATH de Ubuntu, agregar la ruta del directorio al PATH, ejemplo:
```shell
export PATH=$PATH:/home/<tu_usuario>/.local/bin
```
## Instalar Core Lightning
Clonamos el repositorio donde está el código fuente de c-lightning y vamos a esa carpeta:
```shell
git clone https://github.com/ElementsProject/lightning.git
cd lightning
```
Buscamos la última versión estable del programa:
```shell
git tag
```
En el momento de actualizar este tutorial es la v23.05 de modo que vamos a ese release o al último lanzamiento que queramos instalar:
```shell
git checkout v23.08
```
Ahora si compilamos y ejecutamos lightning:
```shell
pip3 install --upgrade --no-warn-script-location pip # esta línea se agrega el no-warn para no ver advertencia
pip3 install mako
./configure
make -j$(nproc)
sudo make install
```
Empieza la compilación y después de un tiempo ya está instalado Core Lightning.
- Si falla la compilación, intenta nuevamente, pero agrega esta función en el comando `./configure` agregando esta orden:
```shell
./configure --disable-rust
make -j$(nproc)
sudo make install
```
- Empieza nuevamente la compilación y después de un tiempo ya está instalado Core Lightning.
Antes de ejecutar `lightningd` debemos crear el directorio `.lightning` y dentro de ese directorio vamos a crear el archivo `config`.
```shell
sudo nano ~./lightning/config
```
Y agregamos las siguientes líneas:
```shell
network=bitcoin # Select the network parameters: bitcoin, testnet, testnet4, signet, or regtest
log-level=debug
log-file=lightningd.log
addr=0.0.0.0:9735
# database-upgrade=true # está línea sólo en la versión 23.08, que necesita está orden
```
## Iniciar Lightningd
- Antes de lanzar `lightningd` ya debe estar corriendo y sincronizado `bitcoind`.
Lanzamos `lightningd` como demonio:
```shell
lightningd --daemon
```
Y obtenemos datos del nodo:
```shell
lightning-cli getinfo
```
Felicitaciones ahora tienes corriendo un nodo `core lightning`.
## Configurar lightningd para que use Tor
Para que nuestro nodo se conecte a través de Tor, solo debemos seguir estos pasos para agregar una dirección `.onion` a `lightningd`.
Abrimos el archivo de configuración de Tor:
```shell
sudo nano /etc/tor/torrc
```
y añadimos las siguientes líneas:
```shell
HiddenServiceDir /var/lib/tor/lightningd-service_v3/
HiddenServiceVersion 3
HiddenServicePort 9735 127.0.0.1:9735
```
presionamos `Ctrl+x` , luego presiona `‘s’` y enter para guardar los cambios.
Detenemos Tor:
```shell
sudo systemctl stop tor
```
Volvemos a lanzar Tor:
```shell
sudo systemctl start tor
```
Ahora ejecutamos el siguiente comando para obtener la dirección onion que nos asignó Tor.
```shell
sudo cat /var/lib/tor/lightningd-service_v3/hostname
```
>Responderá con una dirección onion para nuestro nodo LN, ejemplo:
bv4******************fxi7fs--*-*-*d.onion
- Esta dirección que nos acaba de arrojar es una dirección .onion fija para nuestro nodo lightning.
Añade esta dirección en el archivo de configuración de lightningd:
```shell
sudo nano ~./lightning/config
```
Copia las siguientes líneas en ese archivo reemplazando la que dice `announce-addr` por la que hayas obtenido:
```shell
announce-addr=hbv4******************fxi7fs--*-*-*d.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:
```shell
lightning-cli stop
```
Ahora regarcamos `Tor`:
```shell
sudo systemctl restart tor
```
Y podemos iniciar de nuevo `lightningd`:
```shell
lightningd --daemon # es doble “-” antes de daemon
```
Para observar que esté funcionando `lightningd`, ejecutamos:
```shell
lightning-cli getinfo
```
Listo, tenemos un nodo Bitcoin y Core Lightning funcionando con Tor...
- Si en la actualización de los nodos, no borras las carpetas `.bitcoin` y `.lightning`, los datos de los nodos permanecen intactos, incluidos la cadena de bloques y los datos de los canales lightning.
- Ahora solo te queda abrir canales de pago contra otros nodos y empezar a transferir valor.
---
Si has llegado hasta aquí, felicitaciones, ahora tienes un nodo Bitcoin y Lightning listos para usar. Este es el primer pilar para comenzar a construir tu soberanía monetaria.
# Team "Librería de Satoshi"