Configurar un servidor BTCPay en Ubuntu 22.04/20.04 usando Docker
09:43, 21.12.2023
Si va a utilizar su servidor para vender servicios a personas de un modo u otro, probablemente necesitará disponer de la posibilidad de realizar el pago con un procesador de pagos especial. Si le interesan especialmente los pagos con Bitcoin (y altcoin), necesitará un procesador de pagos con criptomonedas, y BTCpay puede ser la solución que está buscando. Si esta solución en particular le ha llamado la atención, podrá instalarla siguiendo la guía que sigue.
Introducción al servidor BTCPay
Lo bueno de BTCpay es que su uso no le obligará a utilizar un procesador de pagos de terceros. Su naturaleza peer-to-peer le proporciona una mayor flexibilidad e independencia y también excluye la posibilidad de censura. Además, la solución ofrece una serie de ventajas adicionales:
- Descentralización y auto-soberanía: Dado que BTCpay es un sistema autoalojado, usted y sólo usted es el único responsable de sus procedimientos de pago. Esta autonomía conlleva una serie de valiosas ventajas. Por ejemplo, no hay censura y su cuenta no puede ser suspendida.
- Sin gastos adicionales: Puesto que usted se encarga del funcionamiento de este procesador de pagos que aloja por su cuenta, no hay nadie que le exija el pago de tasas.
- Privacidad: BTCPay no requiere información personal identificable de los usuarios.
- Seguridad: Debido a la naturaleza de código abierto de la solución. es en primer lugar impulsado por la comunidad y recibe auditorías de seguridad regulares. Por esta razón, tiene una resistencia bastante alta a los ataques. Además, usted es el único responsable de sus claves privadas, lo que contribuye también al nivel general de seguridad.
- Personalización: BTCPay es altamente personalizable, puede sentirse libre de ajustarlo según su visión de su negocio, proporcionando a sus clientes una experiencia de pago única.
- Comunidad y ecosistema: BTCPay cuenta con una amplia comunidad de usuarios, que le proporciona acceso a un soporte fiable, una rica documentación y plugins para cualquier caso de uso, lo que de nuevo le da libertad de acción para ajustar el procesamiento de pagos según su visión personal.
- Cumplimiento normativo reducido: Dado que no hay instituciones centralizadas que participen de alguna manera en BTCPay, definitivamente tendrá muchas menos dificultades en términos de cumplimiento normativo. Este es especialmente el caso si su país impone estrictas regulaciones financieras.
- Fácil integración: La plataforma es fácil de integrar con una gama de plataformas de comercio electrónico comunes: WooCommerce, Shopify, Magento y algunas otras.
- Soporte de monedero multifirma: BTCPay es compatible con la billetera multifirma, que proporciona una mayor seguridad de las tenencias de criptodivisas.
- Integración con Lightning Network: BTCPay entre otras cosas proporciona soporte Lightning Network. Lightning Network es una solución de escalado de segunda capa para Bitcoin que hará que sus transacciones sean más rápidas y, al mismo tiempo, más rentables.
Requisitos del servidor
BTCPay requiere que su servidor proporcione las siguientes capacidades:
- Núcleos de CPU: 2.
- RAM: 4 GB.
- Memoria: 600 GB.
Paso 1: Instalación de Docker en el servidor Ubuntu 22.04
El uso de BTCPay Docker simplificará en gran medida la instalación de BTCPay, por lo tanto estamos eligiendo este enfoque.
Ubuntu ya debería tener Docker instalado en su repositorio de software. No obstante, para asegurarte de que la versión que tienes es la última, puedes instalarla desde el repositorio APT de Docker.
- SSH su servidor
- Ejecute el comando para añadir el repositorio Docker a su servidor:
echo "deb [signed-by=/etc/apt/keyrings/docker.gpg.key arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
- Importe la clave GPG de Docker al sistema Ubuntu. De esta forma APT podrá verificar la integridad del paquete:
wget --quiet -O - https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.gpg.key
- Instale el paquete apt-transport-https y ca-certificates:
sudo apt install apt-transport-https ca-certificates
- Actualice el índice de paquetes e instale Docker Community Edition
sudo apt update
sudo apt install docker-ce
Esto debería completar la instalación de Docker. Puede verificarlo comprobando el estado:
systemctl status docker
Si Docker no se ha iniciado, puede iniciarlo de esta manera:
sudo systemctl restart docker.socket
sudo systemctl restart docker.service
Para que se inicie automáticamente cada vez que arranque el sistema:
sudo systemctl enable docker
Para comprobar la versión:
docker -v
Paso 2: Configuración del contenedor Docker de BTCPay
- Cambie a root:
sudo su –
- Copie el repositorio del Servidor BTCPay de GitHub:
sudo apt install git
cd ~
git clone https://github.com/btcpayserver/btcpayserver-docker.git
Podrá encontrarlo en ~/btcpayserver-docker. Vaya allí:
cd ~/btcpayserver-docker/
- Ejecuta cada uno de estos comandos por separado. De esta forma establecerá algunas variables de entorno necesarias
export BTCPAY_HOST="btcpay.example.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_REVERSEPROXY="empty"
export BTCPAYGEN_EXCLUDE_FRAGMENTS="$BTCPAYGEN_EXCLUDE_FRAGMENTS;nginx-https"
export BTCPAYGEN_LIGHTNING="lnd"
export BTCPAY_ENABLE_SSH=true
Notas:
BTCPAY_HOST: btcpay.example.com debe sustituirse por su nombre de host.
NBTICOIN_NETWORK: se puede elegir entre mainnet, testnet o regnet.
BTCPAYGEN_CRYPTO01se encarga de elegir la moneda admitida. Aquí añadimos bitcoin, eventualmente puede añadir más monedas.
BTCPAYGEN_REVERSEPROXY: Seleccionando nginx, traefix o emtpy.
BTCPAYGEN_EXECLUDE_FRAGMENTS: Desactiva la generación de certificados TLS. Eventualmente se puede instalar un Let's Encrypt TLS gratuito.
BTCPAYGEN_LIGHTING: Elija lnd o clightning para activar la compatibilidad con redes de lightning.
BTCPAY_ENABLE_SSH: Habilitar la gestión de claves autorizadas SSH para BTCPAY.
Las variables de entorno se pueden comprobar con:
echo $BTCPAY_HOST
Instalación del contenedor Docker BTCPay:
. ./btcpay-setup.sh -i
Comprobación del estado del servicio systemd:
sudo systemctl status btcpayserver.service
Comprobación de los contenedores de Docker:
sudo docker ps
Por defecto, el contenedor Docker btcpayserver/btcpayserver no expone el puerto al sistema operativo anfitrión. Para solucionarlo, abra el archivo docker-compose en el editor preferido (aquí nano):
nano ~/btcpayserver-docker/Generated/docker-compose.generated.yml
En la sección btcpayserver, añade en "ports:":
- "49392:49392"
Guarde y salga. Reinicie btcpayserver.service:
sudo systemctl restart btcpayserver
Ahora, puede comprobar el estado del contenedor Docker una vez más:
sudo docker ps
Ahora el puerto del SO anfitrión (49392) debe ser mapeado al puerto 49392 de Docker.
Paso 3: Configuración del proxy inverso Nginx
- Instale el servidor web Nginx desde el repositorio de software por defecto de Ubuntu:
sudo apt install nginx
- Crea un archivo de host virtual para el servidor BTCPay.
sudo nano /etc/nginx/conf.d/btcpay-server.conf
- Configure Nginx como proxy inverso. Dentro del archivo de configuración de btcpay, agregue la siguiente configuración. Sustituya btcpay.ejemplo.com por el nombre de su dominio o la IP de su servidor:
server {
listen 80;
server_name btcpay.example.com;
location / {
proxy_pass http://127.0.0.1:23000; # The default BTCPay port is 23000
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Si su BTCPay se ejecuta en un servidor diferente y utiliza un puerto diferente, debe ajustar proxy_pass en consecuencia.
- Cree un enlace simbólico a su archivo de configuración Nginx en el directorio /etc/nginx/sites-enabled/ para habilitar el sitio:
sudo ln -s /etc/nginx/sites-available/btcpay /etc/nginx/sites-enabled/
- Compruebe si hay errores de sintaxis en la configuración de Nginx antes de aplicar los cambios:
sudo nginx -t
- Si no aparecen errores durante el texto, vuelva a cargar Nginx para aplicar los cambios:
sudo systemctl reload nginx
- Cortafuegos: Asegúrese de que el cortafuegos del servidor permite el tráfico entrante en el puerto 80. Para permitir el tráfico HTTP, puede que necesite configurar los ajustes de su cortafuegos, como UFW y otros.
- Acceda a BTCPay: Asegúrese de que BTCPay es ahora accesible con su nombre de dominio o IP del servidor, que funciona correctamente y sin errores.
Paso 4: Habilitar HTTPS para el servidor de BTCPay
Activar HTTPS (SSL/TLS) le permitirá beneficiarse de una mayor privacidad y seguridad en la transferencia de datos, tanto para usted como para sus clientes. El primer paso es obtener un certificado SSL, que puede conseguir en Let's Encrypt, una autoridad de confianza que proporciona certificados de seguridad gratuitos. Después, tendrá que seguir las siguientes directrices para activar HTTPS.
- Instale Certbot: Certbot es una práctica herramienta que puede utilizarse para obtener o renovar automáticamente un certificado SSL de Let's Encrypt. Para instalarlo, inserte:
sudo apt update
sudo apt install certbot python3-certbot-nginx
- Ejecute Certbot para realizar la instalación del certificado SSL:
sudo certbot --nginx -d yourdomain.com
- Configure el servidor BTCPay para el SSL recién obtenido. Para ello, acceda a la interfaz web de su servidor BTCPay a través de HTTPS. Inicie sesión en su cuenta BTCPay y vaya a la configuración de la cuenta. Actualice la "URL del servidor" y configure su dominio con el prefijo "https://". Guarde los cambios y reinicie los servicios BTCPay.
- Dado que los certificados Let's Encrypt sólo son válidos durante 90 días, es una práctica útil para configurar un autorenewal para ellos en el Certbot. Certbot lo hace a través de una tarea cron. Para comprobarlo:
sudo crontab -l
Encuentra el trabajo de renovación de Certbot. Es que no lo agregue por su cuenta:
sudo certbot renew --quiet
- Pruebe su configuración HTTPS. Para ello, acceda a su servidor a través de la URL segura. La conexión debe ser segura y la certificación SSL válida.
Paso 5: Acceso a la interfaz web del servidor BTCPay
Vaya a https://btcpay.example.com. Aquí puede registrar su cuenta de administrador si aún no lo ha hecho. Después, el registro de nuevos usuarios estará desactivado a menos que quieras activarlo de nuevo. Espere hasta que los nodos estén sincronizados (puede verlo en la esquina inferior derecha). Entonces, siéntase libre de explorar la interfaz y las características de BTCPay.
Paso 6: Gestión de su servidor BTCPay
Lo primero que necesita es crear una tienda. Haga clic en el botón correspondiente de la interfaz. Una tienda se encarga de recibir los pagos.
Después, tendrá que configurar un monedero. Añade uno que ya exista o crea uno en BTCPay.
Puede elegir entre un monedero hot wallet en el que las claves privadas se almacenan en el servidor, lo cual es cómodo pero más vulnerable a los piratas informáticos, o un monedero watch-only que proporciona un mayor nivel de seguridad, ya que las claves privadas se eliminan del servidor y se almacenan externamente.
A continuación, puede elegir entre 4 tipos de direcciones.
Lo último que tienes que hacer es configurar un nodo relámpago. Aquí puede utilizar el nodo relámpago interno de BTCPay o utilizar un modo relámpago personalizado.
Conclusión
BTCPay es una gran solución en caso de que desee añadir pagos en criptomoneda a su tienda de comercio electrónico. Esperamos que esta guía haya sido lo suficientemente completa y que ahora tengas una cuenta de BTCPay configurada. Gracias por su atención, permanezca atento.