Wählen Sie die kleinste Checkout-Oberfläche, die zu dem passt, was Sie bereits haben. Eine Zahlungsanforderung ist ein Link, den Sie jemandem schicken — keine Website nötig, und der schnellste Weg, einen Kunden zu fakturieren. Eine Kassen-App verwandelt dieselbe Instanz in eine Kasse mit Produktliste, was vom Telefon aus an einem Marktstand funktioniert. Ein Bezahl-Button ist ein Schnipsel HTML für eine statische Website. Ein Shop-Plugin fügt einem echten Ladengeschäft Bitcoin als Zahlungsmethode hinzu und schreibt den Bestellstatus automatisch zurück. Und die REST-API stellt Rechnungen aus, meldet deren Zustand und ruft bei Begleichung einen Webhook auf, was die Integration ist, die am besten altert, weil sie von nichts als HTTP und einem gemeinsamen Geheimnis abhängt.
Für welche Sie sich auch entscheiden, richten Sie den Webhook ein und testen Sie dann, dass er auslöst. Eine Rechnung, die beglichen wird und Ihre Anwendung nie benachrichtigt, ist der Fehlerfall, den niemand bemerkt, weil isoliert betrachtet auf beiden Seiten alles korrekt aussieht: Das Geld kam an, der Kunde sah eine Bestätigungsseite, und die Bestellung bleibt unerfüllt liegen. Schicken Sie sich absichtlich einen Webhook für eine beglichene Rechnung, bestätigen Sie, dass Ihr Endpunkt ihn empfangen hat, und verifizieren Sie die Signatur, statt der Payload zu vertrauen — dieser Endpunkt ist öffentlich, und jeder kann dorthin posten.
Ein nächtliches Backup ist kein Lightning-Wiederherstellungsweg
Das ist die eine Warnung auf dieser Seite, die Sie Geld statt Zeit kosten kann, und die Dokumentation des Projekts selbst sagt es mit denselben Worten: Alter Lightning-Kanalzustand ist toxisch. Die Kopie einer Kanaldatenbank von letzter Nacht wiederherzustellen und den Node laufen zu lassen bedeutet, einen Zustand zu veröffentlichen, den Ihr Gegenpart bereits überholt hat — was das Protokoll als versuchten Betrug behandelt und bestraft, indem es ihm das gesamte Kanalguthaben zuspricht. Das Archiv ist also richtig für die Shop-Datenbank, die Konfiguration und die Rechnungshistorie, aber es ist kein Wiederherstellungsplan für Kanäle. Kopieren Sie das statische Kanal-Backup fortlaufend von der Maschine, behalten Sie das neueste, und falls Sie jemals einen ganzen Server aus einem Archiv wiederherstellen, tun Sie es in dem Wissen, dass die Lightning-Seite die dokumentierte Wiederherstellungsprozedur braucht statt einer einfachen Rücksicherung.
Mit diesem Verständnis ist die Routine kurz. Das Deployment liefert ein Backup-Skript, das die Volumes archiviert und die Datenbank dumpt, während es die Blockchain-Daten auslässt, und es akzeptiert eine Passphrase, sodass das Archiv verschlüsselt wird, bevor es die Box verlässt. Lassen Sie es nach Zeitplan laufen und schicken Sie das Ergebnis dann auf eine Maschine in einem anderen Rechtsraum, so wie es der Backup-Leitfaden beschreibt — ein Append-only-Repository ist die zusätzlichen zehn Minuten hier wert, weil ein kompromittierter Zahlungsserver nicht in der Lage sein sollte, die Aufzeichnung dessen zu löschen, was er verarbeitet hat.
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
Als Nächstes kommen Upgrades, und eine Zahlungsbox ist die eine Maschine, bei der „später aktualisieren, mit Absicht" die richtige Politik ist. Das Deployment hat sein eigenes Update-Skript, das die Compose-Datei neu erzeugt und die neuen Images zieht; führen Sie es aus, wenn Sie die Release Notes gelesen haben, nicht wenn ein Cronjob gerade Lust hat. Sichern Sie zuerst das Archiv. Erhöhen Sie jeweils ein Release nach dem anderen. Und halten Sie die vorherige Version schriftlich fest, denn ein Rollback, den Sie in einer Minute erledigen können, ist es, was das Ganze risikoarm macht.
./btcpay-update.sh # deliberate, after reading the release notes
df -h / # the check that should be an alert, not a habit
Richten Sie zum Schluss einen Alarm und eine Erinnerung ein. Der Alarm gilt der Festplattenauslastung — ein Blockchain-Node ist der einzige Prozess auf der Maschine, der von selbst wächst, und ein voller Datenträger legt den Checkout auf eine Weise lahm, die sich nur langsam diagnostizieren lässt, weil sich sonst nichts geändert hat. Lösen Sie ihn bei achtzig Prozent aus, nicht bei fünfundneunzig. Die Erinnerung ist monatlich und dient dazu, den Shop zu öffnen und zwei Dinge zu prüfen: dass Rechnungen noch immer beglichen werden, und dass die Lightning-Kanäle, die Sie geöffnet haben, noch am Leben sind. Ein Zahlungsabwickler versagt lautlos, und Sie erfahren es dadurch, dass ein Kunde Ihnen sagt, er konnte nicht bezahlen.