Primeros Pasos
1. Primeros pasos
1.1 Requerimientos
- Servidor VPS con sistema operativo Debian/Ubuntu preferiblemente.
- Docker 26.0+.
- Docker Compose 2.0+.
- Dominio DNS válido para publicar los servicios en Internet.
1.2 Esquema de la infraestructura
Imagen 1: Arquitectura de la infraestructura Docker.
Descripción: El esquema muestra los contenedores de Docker (Tor, Lightning Network Daemon, Lightning Terminal, LNbits, Postgres, Cashu, Orchard y Nginx Proxy Manager). Las flechas indican la comunicación entre servicios.
1.3 Instalando los requisitos
1.3.1 Instalando Docker y Docker Compose
La mayoría de los VPS proveen acceso directo como usuario root por defecto. Si este es su caso, omita el uso de sudo en todos los comandos. Para confirmar su usuario actual, ejecute:
whoami
Si la salida del comando es root no se requiere sudo delante de los siguientes comandos:
sudo apt update && sudo apt upgrade
# Debian 12+
sudo apt install docker.io docker-compose
# Ubuntu 24.04+
sudo apt install docker.io docker-compose-v2
1.3.2 Agregando nuestro usuario al grupo Docker
Si la salida del comando whoami que ejecutamos anteriormente fue root obviamos este paso, en caso contrario ejecutamos el siguiente comando:
sudo usermod -aG docker $(whoami)
Esto nos permitirá ejecutar el comando docker sin privilegios.
1.3.3 Clonando el repositorio del Proyecto
git clone https://github.com/cashu4community/cashu4cs-deploy.git
cd cashu4cs-deploy
cashu4cs-deploy.
1.4 Configuración inicial
Para poder iniciar la infraestructura se necesita configurar varios parámetros. Se recomienda guardarlos en un documento ya que serán necesarios en las siguientes secciones del tutorial.
1.4.1 Configurando parámetros de Lightning Network Daemon
Cambiando la IP Pública del nodo Lightning
Para obtener la ip pública usaremos el script get_public_ip.sh ubicado en la raíz del directorio cashu4cs-deploy.
./get_public_ip.sh
Esto devuelve una salida como la siguiente:
72.61.27.142
Conociendo esta IP vamos a editar el archivo lnd.conf.
nano app-data/lnd/lnd.conf
Buscamos la línea externalip= y adicionamos la IP obtenida 72.61.27.142.
Imagen 2: Archivo lnd.conf parámetro externalip=.
Salvamos y salimos del archivo ctrl+s y ctrl+x
Cambiando el alias del nodo LND
El alias es útil para poder encontrar el nodo en exploradores de la red lightning cómo mempool.space o amber.space. Para cambiarlo editamos nuevamente el archivo lnd.conf y buscamos la línea alias=, para este tutorial usaremos Cashu4CS como alias del nodo LND.
Imagen 3: Archivo lnd.conf parámetro alias=.
Creando la contraseña para la billetera del nodo LND
El proceso de creación de la billetera del nodo LND que veremos mas adelante nos pide una contraseña usada para cifrar la billetera y desbloquearla cada vez que se reinicia el servicio, esta debe ser de al menos 12 carácteres y debe tener combinación de mayúsculas y minúsculas, números y caracteres especiales cómo: Ej *-+. Una vez creada la contraseña la introducimos en el archivo walletunlock ubicado en app-data/lnd/.
Para este tutorial usaremos +6Mn31qVwLC- como contraseña de la billetera.
nano app-data/lnd/walletunlock
Imagen 4: Archivo walletunlock con la contraseña creada anteriormente.
Salvamos y salimos del archivo ctrl+s y ctrl+x
walletunlock nos permitirá desbloquear automáticamente la billetera del nodo tras un reinicio del contenedor Docker. Esta es la razón por la que contiene la contraseña.
1.4.2 Creando la contraseña para el acceso a Lightning Terminal
Para acceder al servicio Lightning Terminal (de ahora en lo adelante LIT) se necesita una contraseña, esta debe tener los mismos requisitos de complejidad que la usada en la billetera LND. Una vez generada la guardamos en el archivo lit.conf ubicado en app-data/lit/.
Creada la contraseña editamos el archivo lit.conf.
nano app-data/lit/lit.conf
Buscamos la línea uipassword= e introducimos la contraseña, usaremos +dFskhU8d35* como ejemplo para el tutorial quedando así:
Imagen 5: Archivo lit.conf con la contraseña creada para acceder a la web de LIT.
Salvamos y salimos del archivo ctrl+s y ctrl+x
1.4.3 Estableciendo los parámetros de configuración de LNbits
El servicio LNbits necesita la clave AUTH_SECRET_KEY definida en el archivo .env y la contraseña de la base de datos PostgreSQL para funcionar.
Generando la clave AUTH_SECRET_KEY
openssl rand -hex 32
Esto nos devuelve algo como esto:
f92a03c2e12362f092b6589bde08b0433cd08f4ffe9ef894fe8e01660d18054f
Copiamos la clave y editamos el archivo .env ubicado en app-data/lnbits/.
nano app-data/lnbits/.env
Buscamos la linea AUTH_SECRET_KEY y pegamos la clave generada en el paso anterior.
Imagen 6: Archivo .env con la clave AUTH_SECRET_KEY creada anteriormente.
Salvamos y salimos del archivo ctrl+s y ctrl+x
Creando la contraseña de la base de datos PostgreSQL
Ahora necesitamos crear la contraseña que usará LNbits para crear la base de datos PostgreSQL, la introduciremos en el archivo .env que editamos anteriormente y en el archivo docker-compose.yml ubicado en la raíz del directorio cashu4cs-deploy.
Editamos el archivo .env.
nano app-data/lnbits/.env
Buscamos la linea LNBITS_DATABASE_URL="postgres://lnbits_user:dbpassword_@db:5432/lnbits_db" y sustituimos dbpassword_ por nuestra contraseña. Usaremos 3Edf56gh.*FU como ejemplo.
Imagen 7: Variable LNBITS_DATABASE_URL de conexión a la base de datos usando la contraseña generada anteriormente
Salvamos y salimos del archivo ctrl+s y ctrl+x
Ahora editamos el archivo docker-compose.yml.
nano docker-compose.yml
Buscamos el servicio docker db: y editamos en la sección enviroment: la variable POSTGRES_PASSWORD, quedando así:
Imagen 8: Variable POSTGRES_PASSWORD actualizada con la contraseña generada.
Salvamos y salimos del archivo ctrl+s y ctrl+x
1.4.4 Estableciendo los parámetros de configuración del Mint de Cashu
Para el buen funcionamiento del Mint de Cashu debemos generar la variable MINT_PRIVATE_KEY= y los certificados ssl usados para cifrar la conexión RPC desde el servicio Orchard hacia el Mint.
Creando la variable MINT_PRIVATE_KEY
openssl rand -hex 32
Esto nos devuelve algo como esto:
cf33ffb9af447b1210e052548f911ba62639a6a653f7066809bacecb7436ea4b
Igual que hicimos con AUTH_SECRET_KEY de LNbits copiamos la clave anterior y editamos el archivo .env ubicado en app-data/cashu/.
nano app-data/cashu/.env
Buscamos la línea MINT_PRIVATE_KEY= y pegamos la clave generada en el paso anterior:
Imagen 9: Variable MINT_PRIVATE_KEY actualizada en el archivo .env.
Salvamos y salimos del archivo ctrl+s y ctrl+x
Generando los certificados ssl para la conexión RPC
Vamos al directorio certs ubicado en app-data/cashu/
cd app-data/cashu/certs
Ejecutamos el script generate_certificates.sh
./generate_certificates.sh
Este script genera todos los certificados necesarios para la conexión RPC, si no ocurrió algún error los certificados se encuentran en este directorio.
ls .
ca_cert.pem ca_private.pem client_cert.pem client_private.pem generate_certificates.sh server_cert.pem server_private.pem
1.4.5 Estableciendo los parámetros de configuración de Orchard
Necesitamos generar la clave SETUP_KEY usada en la inicialización de Orchard.
openssl rand -hex 16
El resultado sería
d5c454540c045373b5bac4a58b0b52e8
Copiamos la clave anterior y editamos el archivo .env ubicado en app-data/orchard/.
nano app-data/orchard/.env
Buscamos la línea SETUP_KEY= y pegamos
Imagen 10: Variable SETUP_KEY actualizada en el archivo .env.
Salvamos y salimos del archivo ctrl+s y ctrl+x
1.5 Gestión de los Servicios
| Comando | Acción |
|---|---|
docker-compose up -d |
Inicia la infraestructura completa; descarga las imágenes en la primera ejecución. |
docker-compose down |
Detiene todos los servicios de forma controlada y elimina los contenedores |
docker-compose up --force-recreate [servicio] -d |
Reconstruye un contenedor específico tras realizar cambios en su configuración. |
docker-compose start [servicio] |
Inicia el contenedor |
docker-compose stop [servicio] |
Detiene un contenedor |
1.5.1 Nombre de los servicios
A continuación se listan los nombres de los servicios de la infraestructura, útil si se quieren ejecutar los comandos de iniciar, parar o reconstruir de la tabla anterior.
- Financieros:
lnd,cashu(Mint),lnbits. - Gestión y Red:
lit(Lightning Terminal),npm(Proxy Manager),tor,orchard. - Persistencia:
db(PostgreSQL),redis.
1.6 Iniciando la Infraestructura
Para iniciar la infraestructura ejecutamos:
docker-compose up -d
La primera vez que se ejecuta este comando se descargan las imágenes de docker de los servicios.
Imagen 11: Descarga de las imágenes en el proceso de inicio
Si el paso anterior ocurrió sin contratiempos ejecutando:
docker ps
Nos muestra los contenedores iniciados
Imagen 12: Listado de contenedores en ejecución