Escolha a menor superfície de checkout que caiba no que você já tem. Uma solicitação de pagamento é um link que você envia para alguém — sem necessidade de site, e a forma mais rápida de faturar um cliente. Um aplicativo de ponto de venda transforma a mesma instância em um caixa com lista de produtos, o que funciona a partir de um celular em uma banca de mercado. Um botão de pagamento é um trecho de HTML para um site estático. Um plugin de loja adiciona o Bitcoin como método de pagamento a uma loja de verdade e atualiza o status do pedido de volta automaticamente. E a API REST emite faturas, informa o estado delas e chama um webhook quando uma é paga, o que é a integração que envelhece melhor porque não depende de nada além de HTTP e um segredo compartilhado.
Qualquer uma que você escolher, configure o webhook e depois teste se ele dispara. Uma fatura que é paga e nunca notifica a sua aplicação é o modo de falha que ninguém pega, porque tudo parece correto dos dois lados isoladamente: o dinheiro chegou, o cliente viu uma página de confirmação, e o pedido fica sem ser cumprido. Envie a si mesmo um webhook de fatura-paga de propósito, confirme que o seu endpoint o recebeu, e verifique a assinatura em vez de confiar no payload — esse endpoint é público, e qualquer um pode postar nele.
Um backup noturno não é um caminho de restauração para o Lightning
Este é o único aviso nesta página que pode custar dinheiro, não tempo, e a própria documentação do projeto o afirma nas mesmas palavras: estado antigo de canal do Lightning é tóxico. Restaurar a cópia da noite passada de um banco de dados de canais e deixar o nó rodar significa transmitir um estado que a sua contraparte já substituiu — o que o protocolo trata como uma tentativa de trapaça, e pune concedendo a ela o saldo inteiro do canal. Então o arquivo é certo para o banco de dados da loja, a configuração e o histórico de faturas, e não é um plano de recuperação para canais. Copie o backup estático de canal para fora da máquina continuamente, mantenha o mais recente, e, se algum dia você restaurar um servidor inteiro a partir de um arquivo, faça isso sabendo que o lado do Lightning precisa do procedimento de recuperação documentado, não de uma restauração direta.
Com isso entendido, a rotina é curta. A implantação já vem com um script de backup que arquiva os volumes e despeja o banco de dados, pulando os dados da blockchain, e ele aceita uma senha para que o arquivo seja criptografado antes de sair da máquina. Rode-o em um timer, e depois envie o resultado para uma máquina em outra jurisdição, do jeito que o guia de backups descreve — um repositório somente-anexação vale os dez minutos extras aqui, porque um servidor de pagamento comprometido não deveria conseguir apagar o registro do que processou.
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
As atualizações vêm a seguir, e uma máquina de pagamento é a única em que "atualizar depois, de propósito" é a política correta. A implantação tem o próprio script de atualização, que regenera o arquivo de compose e baixa as novas imagens; rode-o quando você tiver lido as notas de lançamento, não quando um cron job achar que é hora. Faça o arquivo primeiro. Suba uma versão de cada vez. E mantenha a versão anterior anotada, porque um rollback que você consegue fazer em um minuto é o que torna tudo isso de baixo risco.
./btcpay-update.sh # deliberate, after reading the release notes
df -h / # the check that should be an alert, not a habit
Por fim, configure um alerta e um lembrete. O alerta é sobre uso de disco — um nó de blockchain é o único processo na máquina que cresce por conta própria, e um volume cheio derruba o checkout de um jeito lento de diagnosticar, porque mais nada mudou. Dispare-o em oitenta por cento, não em noventa e cinco. O lembrete é mensal, e serve para abrir a loja e olhar duas coisas: se as faturas ainda estão sendo pagas, e se os canais Lightning que você abriu ainda estão vivos. Um processador de pagamento falha silenciosamente, e a forma como você descobre é um cliente te contando que não conseguiu pagar.