Aprende a instalar un BTCPay Server usando Docker

Ahora que conocemos las dos herramientas que usaremos, empezaremos a explicar el proceso de instalación de este sistema. 

Requisitos del Sistema

Lo primero que debemos tener en cuenta son los requisitos del sistema. En primer lugar, debes contar (al menos) con lo siguiente:

  • CPU de al menos 4 núcleos
  • Mínimo de 4 GB de memoria RAM (u 8 GB, que es mucho mejor)
  • Al menos 500 GB de disco duro (si planeas soportar Bitcoin con su nodo completo Lightning Network). 
  • Una conexión de banda ancha (al menos de 10 MB simétricos)

Unas notas antes de continuar:

  1. El tamaño del disco duro puede ser menor, pero para ello deberás activar las opciones para usar un nodo podado dentro de BTC Pay Server. Esto no resta seguridad al sistema, y te permite una mayor flexibilidad en cuanto al almacenamiento. 
  2. Si planeas usar esto a modo personal la conexión de tu hogar puede servir, si planeas usarlo para una web o tienda en línea, o también para prestar servicios a terceros, es recomendable alquilar servidores y crear una infraestructura segura para este tipo de servicios. 
  3. El proceso de instalación en este artículo está simplificado, la idea es brindar una herramienta de conocimiento básico que puede ayudarte a instalar este tipo de herramientas en tu tienda física u online sin mayores complicaciones. 

Instalando Docker

Lo primero que debemos hacer es la instalación de Docker. Para ello, si estamos en Windows, debemos ir a la web oficial del proyecto. Una vez allí, debemos ir a la sección “Products” y elegir “Docker Desktop” y descargar la versión de Docker Desktop. En el caso de que uses Linux, deberás usar el administrador de paquetes de tu distribución y descargar con él, la versión de Docker disponible para tu sistema. El objetivo en ambos casos es tener instalado este software para facilitar el trabajo de instalación de BTC Pay Server.

 

IMPORTANTE

En Windows, Docker recomienda que instales WSL, una característica de Windows que te permite crear un ambiente integrado de GNU/Linux con Windows. El proceso de instalación de WSL puedes encontrarlo en este enlace. 

 

Una vez que termines con la instalación comenzaremos con la configuración inicial de Docker. 

En primer lugar, al ejecutar el programa aparecerá la siguiente pantalla, solo debes hacer clic en el botón “Start”. 

https://lh3.googleusercontent.com/eEcDtSF2JKSHaQ6ymRLPpyfLL6U_cpUi84h7RkZ3wItAf11by6HwzyiEVgT7ju39uZUGecDo_g8z5phMcPJMbWARmb-fdg3RAD5cvRocKRJae__QDEKBDO3J13jV_GF0Ju1rkN6n

Luego podrás iniciar con el proceso de instalación y prueba de Docker. En este punto, el programa comenzará con la ejecución de una serie de comandos que te instalaran una demo de lo que Docker es capaz de hacer. 

https://lh4.googleusercontent.com/5v5_7HMm_OTd59kBHcNWfux2tcZE-quHgENlSf-eJektirfUm1NWsIR9TjRJxsTHOa3uHal5kPobVUEG-Sl6Hg51rA_ENPDJfs4QQqKxkHHkpWg8A0Nx1PX2VnNobUTheTbnBjGu

Al finalizar el proceso podrás ver la siguiente pantalla:

https://lh3.googleusercontent.com/E4Hkwxk4RhMiuMpRQlbvmd-MhJisVyyYjv01ZXj9tCd6ML6A-UEG6DkSdd1aPX8uuBR51yKU-noRlhS_Zes81kSu6Rj0UQFzvOB_A4PjRfN9_OK0nB7xhSfwu21UlgtH2asp_x6n

Si das clic en dicho botón “View in Browser” podrás ver los resultados de esta primera ejecución de Docker:

https://lh5.googleusercontent.com/gnSDNT74DYJ0NpRRZI1zzAHIhOLyzbiBulWiDOjXaNplDDIwwsUYUNWDmxnpt132BqE_tHR2cRLL-VZZJE4Yn712WbY9yAfNZ5PyuuRFkPftzXkcnAx1D2FUYctcCiIprjeXa_pG

Una web con información introductoria sobre Docker y todo lo que puede hacer. Sin embargo, esta no es una web cualquiera, dicha web es servida desde el contenedor Docker que has creado en tu computador, y no necesitas de Internet para navegar por ella. 

Comenzado la instalación de BTCPay Server

Ahora bien, para instalar BTCPay Server usando Docker, lo primero que haremos es descargar todo lo necesario para su configuración. Esto podemos hacerlo al ir al GitHub del proyecto BTCPay Server. Una vez allí elegiremos la opción “Code” y le daremos a la opción “Download ZIP”. Con esto descargamos todo lo que necesitamos para configurar BTCPay Server.

Lo siguiente será descomprimir el ZIP y dirigirnos con una terminal de Windows, hacia el directorio donde están todos los archivos en nuestro caso:

D:\DOCKER\BTCPAYSERVER-DOCKER

En esta imagen podemos ver el direccionamiento:

En este punto, podemos iniciar la instalación de BTCPay Server con un solo comando, pero antes, haremos algunas modificaciones para adaptar el servidor a nuestras necesidades.

 

https://lh3.googleusercontent.com/n_3MAyVnWUJhblzhZ0Hbs5QVIkWShxwkYlqK4N57_vWEMftaVpOjPUtXf1h7r9f49DteEZb1QN7X8cff1QHnTazQPzompY1sLHwSX0ah0NB9nA6OA8OpDv3eNAQxaT-nT2_J9Cb-

Configurando BTCPay Server antes de la instalación

En primer lugar, BTCPay Server tiene una gran variedad de opciones de configuración que podemos ver acá. Estas nos permiten adaptar el servicio a nuestras necesidades. Entre las más llamativas podemos mencionar:

  1. La capacidad de instalar nodos podados para nuestro BTCPay Server, con lo que necesitamos menos espacio de almacenamiento para nuestro nodo local. Estas opciones están bajo el nombre de “opt-save-storage” y hay diversos niveles de ajustes, uno de los cuales no es compatible con la activación de Lightning Network.
  2. La capacidad de activar Autopilot y Keysend para nuestro servicio de Lightning Network.
  3. Integración con WooCommerce, lo que nos viene perfecto para tiendas en línea que usen este sistema.
  4. Opción para activar Tor y ejecutar nuestro servicio sobre esta red.

En este caso, activaremos la opción de ejecutar nodos podados para BTCPay Server, y para hacerlo debemos ir nuestra carpeta y hacer la siguiente modificación al archivo “build.ps1″

# This script will run docker-compose-generator in a container to generate the yml files

 

If (-not ($BTCPAYGEN_DOCKER_IMAGE)) { $BTCPAYGEN_DOCKER_IMAGE = “btcpayserver/docker-compose-generator” }

 

If ($BTCPAYGEN_DOCKER_IMAGE -eq “btcpayserver/docker-compose-generator:local”){

      docker build docker-compose-generator -f docker-compose-generator/linuxamd64.Dockerfile –tag $BTCPAYGEN_DOCKER_IMAGE

} Else {

      docker pull $BTCPAYGEN_DOCKER_IMAGE

}

 

docker run -v “$(Get-Location)\Generated:/app/Generated” `

           -v “$(Get-Location)\docker-compose-generator\docker-fragments:/app/docker-fragments” `

           -v “$(Get-Location)\docker-compose-generator\crypto-definitions.json:/app/crypto-definitions.json” `

           -e “BTCPAY_HOST=btcpay.local” `

           -e “NBITCOIN_NETWORK=mainnet” `

           -e “BTCPAYGEN_CRYPTO1=btc” `

           -e “BTCPAYGEN_CRYPTO2=$BTCPAYGEN_CRYPTO2” `

           -e “BTCPAYGEN_CRYPTO3=$BTCPAYGEN_CRYPTO3” `

           -e “BTCPAYGEN_CRYPTO4=$BTCPAYGEN_CRYPTO4” `

           -e “BTCPAYGEN_CRYPTO5=$BTCPAYGEN_CRYPTO5” `

           -e “BTCPAYGEN_CRYPTO6=$BTCPAYGEN_CRYPTO6” `

           -e “BTCPAYGEN_CRYPTO7=$BTCPAYGEN_CRYPTO7” `

           -e “BTCPAYGEN_CRYPTO8=$BTCPAYGEN_CRYPTO8” `

           -e “BTCPAYGEN_CRYPTO9=$BTCPAYGEN_CRYPTO9” `

           -e “BTCPAYGEN_REVERSEPROXY=none” `

           -e “BTCPAYGEN_ADDITIONAL_FRAGMENTS=opt-save-storage-xs” `

           -e “BTCPAYGEN_EXCLUDE_FRAGMENTS=$BTCPAYGEN_EXCLUDE_FRAGMENTS” `

           -e “BTCPAYGEN_LIGHTNING=$BTCPAYGEN_LIGHTNING” `

           -e “BTCPAYGEN_SUBNAME=$BTCPAYGEN_SUBNAME” `

           -e “BTCPAY_HOST_SSHAUTHORIZEDKEYS=$BTCPAY_HOST_SSHAUTHORIZEDKEYS” `

           –rm $BTCPAYGEN_DOCKER_IMAGE

 

If ($BTCPAYGEN_REVERSEPROXY -eq “nginx”) {

    Copy-Item “.\Production\nginx.tmpl” -Destination “.\Generated”

}

 

If ($BTCPAYGEN_REVERSEPROXY -eq “traefik”) {

    Copy-Item “.\Traefik\traefik.toml” -Destination “.\Generated”

    

    New-Item  “.\Generated\acme.json” -type file

}

 

En este caso hemos realizado cinco modificaciones. La primera hemos agregado la opción “BTCPAY_HOST=btcpay.local”, con la cual asignamos ese nombre a nuestro servicio de forma interna. La segunda modificación es la opción  “NBITCOIN_NETWORK=mainnet”, la cual nos permite decir que BTCPay funcionará con la red Mainnet. Nuestra tercera modificación es “BTCPAYGEN_CRYPTO1=btc”, con la cual definimos a Bitcoin como nuestra principal criptomoneda.

Siguiendo, nuestra cuarta modificación es “BTCPAYGEN_REVERSEPROXY=none” la cual para nuestras pruebas no es importante (pero si lo es si deseas usar este servicio en producción). Y finalmente nuestra última modificación es la opción “”BTCPAYGEN_ADDITIONAL_FRAGMENTS=opt-save-storage-xs” para un nodo podado a 25 GB (compatible con Lightning Network).

Terminados los cambios, guardamos y ejecutamos en terminal el archivo “build.ps1”, lo que empezará generar nuestro archivo docker-compose. 

https://lh6.googleusercontent.com/2bcssPhLdYgpna65eCRko02joup6QOQYoR2f9bZkGdgio6PxUV0wvRN2zWXcfZiGzR3pb8v4YXyhGOA3JzYbrmyVwH91kz4Se6I9whgcv2n4HAbIvcOsvRR9xn_PHuvOSkp-NJtr

Lo siguiente que haremos es navegar hasta la carpeta “Generated” y cambiar el nombre del archivo “docker-compose.generated.yml” a “docker-compose.yml”, una vez realizado este cambio desde la terminal (y estando en el mismo directorio donde esta este archivo) ejecutaremos el comando 

docker-compose up

Y con ello comenzará la instalación automatizada de BTCPay Server, solo debemos esperar a que termine todo el proceso. 

https://lh3.googleusercontent.com/-A-qNEIM19_wBmed2gN5tjZEA0SqVbor9M_S3iaKztgX8H0RWj3QtlJIwC098SG3ve50ykmdcQy-34IjXyMTsPHPhg2Z7lRSqT16gsIaw9dpVD9LksR78VRJRg2pZB_mZ7hwy9LB

Al final, en nuestro Docker podemos ver la instalación de BTCPay Server, la cual podemos iniciar desde el mismo.

https://lh3.googleusercontent.com/lSs6tIs_7kheHVfR9oqwg26yNJWamy_KZBF_4hixm2vsTUotilhVLMbLzMl2MBofW2gB-sqN9Mq7BirXaesEGUKGThXkRman5w8nvm2ieHcQ3lv754SxOC-ncbpmeChCGRjCVZTu

Para ello solo debemos seleccionar “Generated” (que es el nombre automatico creado, puedes poner el que desees) y hacer clic en “Run”, con lo que al finalizar si vas a un navegador y pones la dirección “127.0.0.1”, podrás entrar finalmente a tu servidor BTCPay Server completamente funcional.

 

https://lh6.googleusercontent.com/eR1_72sYwa_VBpT4zajL03hbmzvZS7JOsLmyRcgIlWPFWcqmYGZiIHiiAVJ3sKDq4JeYuF79RLFUct7HfwgQcSO89n-ZZ-1W_QC--j3Oj-OfyOwzQaQh55zlCrmpE-nLnwnqrXJK