Elija la superficie de checkout más pequeña que encaje con lo que ya tiene. Una solicitud de pago es un enlace que le envía a alguien — sin necesidad de sitio web, y la forma más rápida de facturar a un cliente. Una aplicación de punto de venta convierte la misma instancia en una caja con lista de productos, que funciona desde un teléfono en un puesto de mercado. Un botón de pago es un fragmento de HTML para un sitio estático. Un plugin de tienda añade Bitcoin como método de pago a una tienda real y escribe el estado del pedido de vuelta automáticamente. Y la API REST emite facturas, informa de su estado y llama a un webhook cuando una se liquida, que es la integración que mejor envejece porque no depende de nada más que HTTP y un secreto compartido.
Elija lo que elija, conecte el webhook y luego compruebe que se dispara. Una factura que se liquida y nunca notifica a su aplicación es el modo de fallo que nadie detecta, porque todo parece correcto a ambos lados por separado: el dinero llegó, el cliente vio una página de confirmación, y el pedido se queda sin completar. Envíese a propósito un webhook de factura liquidada, confirme que su endpoint lo recibió, y verifique la firma en lugar de confiar en el contenido — ese endpoint es público y cualquiera puede enviarle datos.
Una copia de seguridad nocturna no es una vía de recuperación para Lightning
Esta es la única advertencia de esta página que puede costarle dinero en lugar de tiempo, y la propia documentación del proyecto lo dice con las mismas palabras: un estado de canal Lightning antiguo es tóxico. Restaurar la copia de anoche de una base de datos de canales y dejar que el nodo se ejecute significa difundir un estado que su contraparte ya ha superado — algo que el protocolo trata como un intento de fraude y castiga otorgándole todo el saldo del canal. Así que el archivo es adecuado para la base de datos de la tienda, la configuración y el historial de facturas, y no es un plan de recuperación para los canales. Copie la copia de seguridad estática de canal fuera de la máquina de forma continua, conserve la más reciente, y si alguna vez restaura un servidor entero desde un archivo, hágalo sabiendo que el lado de Lightning necesita el procedimiento de recuperación documentado y no una restauración directa.
Entendido esto, la rutina es corta. El despliegue incluye un script de copia de seguridad que archiva los volúmenes y vuelca la base de datos sin incluir los datos de la cadena de bloques, y acepta una frase de contraseña para que el archivo quede cifrado antes de salir de la máquina. Ejecútelo con un temporizador, y luego empuje el resultado a una máquina en una jurisdicción distinta tal como describe la guía de copias de seguridad — un repositorio de solo anexado merece aquí los diez minutos extra, porque un servidor de pagos comprometido no debería poder borrar el registro de lo que procesó.
cd ~/BTCPayServer/btcpayserver-docker
export BTCPAY_BACKUP_PASSPHRASE="a long passphrase you keep elsewhere"
./btcpay-backup.sh # archives volumes + database, skips the chain
# then ship the archive offsite, and keep the channel backup separately
Las actualizaciones vienen después, y una máquina de pagos es la única en la que "actualizarla más tarde, a propósito" es la política correcta. El despliegue tiene su propio script de actualización que regenera el archivo de Compose y descarga las imágenes nuevas; ejecútelo cuando haya leído las notas de la versión, no cuando le apetezca a un cron job. Haga primero el archivo. Suba una versión cada vez. Y mantenga anotada la versión anterior, porque poder revertir en un minuto es lo que hace que todo esto tenga poco riesgo.
./btcpay-update.sh # deliberate, after reading the release notes
df -h / # the check that should be an alert, not a habit
Por último, configure una alerta y un recordatorio. La alerta es sobre el uso de disco — un nodo de blockchain es el único proceso de la máquina que crece por sí solo, y un volumen lleno tumba el checkout de una forma lenta de diagnosticar porque nada más ha cambiado. Actívela al ochenta por ciento, no al noventa y cinco. El recordatorio es mensual, y consiste en abrir la tienda y mirar dos cosas: que las facturas se siguen liquidando, y que los canales Lightning que abrió siguen vivos. Un procesador de pagos falla en silencio, y la forma en que se entera es porque un cliente le dice que no pudo pagar.