Jeder Zahlungsdienstleister in der Mitte bringt seine eigenen Bedingungen mit, sein eigenes KYC und seinen eigenen Knopf, der Ihr Guthaben einfriert. BTCPay Server entfernt die Mitte. Rechnungen entstehen auf Ihrem Server, der Kunde zahlt an eine Adresse, die aus Ihrer Wallet abgeleitet ist, und Ihre eigene Bitcoin-Node bestätigt die Zahlung. Abschalten kann das niemand außer Ihnen.
Es ist für Shops, Freelancer und Dienste, die schon Bitcoin annehmen — oder es wollen — und diese Aufgabe lieber keiner Firma überlassen.
Welcher Tarif
BTCPay läuft als etwa sieben Container: die BTCPay-App, NBXplorer (der die Chain beobachtet), Bitcoin Core, Postgres und ein nginx davor mit automatischem Let's Encrypt. Auf unserem Testserver brauchten sie am Anfang rund 0,7 GB RAM, und Bitcoin Core nimmt sich während der Synchronisierung mehr; 4 GB sind reichlich. Die eigentliche Grenze ist der Speicherplatz, nicht der Arbeitsspeicher.
| Konfiguration | Tarif |
|---|---|
| On-Chain-BTC, geprunte Node mit ~5 GB Blöcken | Small-IP – 4 vCPU, 4 GB, 35 GB ($16/Monat) |
| Dasselbe mit mehr Luft für Logs und Updates | Medium-IP – 6 vCPU, 6 GB, 45 GB ($20/Monat) |
| Lightning, ein größeres Blockfenster oder eine zweite Coin | Pro-32 – 8 vCPU, 32 GB, 400 GB ($40/Monat), auf Anfrage |
Sie brauchen einen Tarif mit eigener IPv4: Kunden erreichen BTCPay über HTTPS, und Let's Encrypt muss Port 80 erreichen. Wählen Sie Deutschland oder Finnland, je nachdem, was bei der Bestellung verfügbar ist – für eine Zahlungsseite spielt die Latenz kaum eine Rolle. Und weil es ja gerade ums Annehmen von Krypto geht, passt es, dass auch der Server selbst in Krypto und ohne KYC bezahlt wird.
Installation
Richten Sie pay.example.com auf den Server, dann als root auf einem frischen Ubuntu 24.04 oder Debian 12:
mkdir BTCPayServer && cd BTCPayServer
git clone https://github.com/btcpayserver/btcpayserver-docker
cd btcpayserver-docker
export BTCPAY_HOST="pay.example.com"
export LETSENCRYPT_EMAIL="you@yourdomain.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage-xxs"
export BTCPAYGEN_REVERSEPROXY="nginx"
export BTCPAYGEN_LIGHTNING="none"
. ./btcpay-setup.sh -i
opt-save-storage-xxs ist das, was es passend macht: Bitcoin Core prunt auf 5 GB Blöcke herunter. Das Skript zieht die Images, legt einen systemd-Dienst btcpayserver an und startet alles. Unterwegs startet es außerdem den Docker-Daemon neu – ein Grund mehr, BTCPay einen eigenen Server zu geben, statt es neben andere Container zu quetschen.
Prüfen Sie die Node:
bitcoin-cli.sh getblockchaininfo
Vergleichen Sie blocks mit headers und achten Sie auf "pruned": true. Nach zwanzig Minuten hatte unser Test etwa 218.000 von rund 972.000 Blöcken – die frühen sind winzig, rechnen Sie also nicht hoch. Die eigentliche Arbeit kommt später.
Erste Anmeldung: sofort erledigen
Öffnen Sie https://pay.example.com, sobald es antwortet. BTCPay schickt Sie auf eine Registrierungsseite, und das erste Konto wird Server-Admin. Findet jemand anderes die Seite vor Ihnen, gehört dieser Person Ihr Zahlungsserver. Registrieren Sie sich, schauen Sie dann unter Server Settings → Policies nach und stellen Sie Neuanmeldungen so ein, wie Sie es wollen.
Legen Sie danach einen Store an und verbinden Sie Ihre Wallet über ihren Extended Public Key (xpub) – aus einer Hardware-Wallet oder dem Export Ihrer Desktop-Wallet. BTCPay leitet für jede Rechnung eine neue Adresse ab und sieht nie einen privaten Schlüssel. Nehmen Sie dafür eine neue Wallet oder ein neues Konto statt einer Wallet mit Jahren an Historie: Eine geprunte Node verfolgt am liebsten, was ab jetzt passiert.
Bis die Node aufgeholt hat, zeigt BTCPay an, dass es noch synchronisiert, und beobachtet keine Zahlungen. Planen Sie den Start für nach der Synchronisierung, nicht für den Abend der Installation.
Was Sie vor dem Livegang wissen sollten
- Die erste Synchronisierung dauert. Auch eine geprunte Node lädt und prüft die ganze Chain – mehr als 700 GB –, bevor sie alte Blöcke wegwerfen kann. Der Traffic ist bei unseren Tarifen mit 1 Gbit/s unbegrenzt, kostet also nichts extra, aber auf einem Server mit 4 vCPU rechnen Sie in Tagen. Im Repository gibt es ein Fast-Sync-Skript; es überspringt diese Arbeit, indem es der Kopie des UTXO-Sets eines anderen vertraut – und untergräbt damit einen Teil des Grundes, warum Sie eine eigene Node betreiben.
- Updates.
btcpay-update.shholt das neueste BTCPay samt Abhängigkeiten. Führen Sie es in einer ruhigen Stunde aus, nicht mitten in einem Sale. - Was gesichert werden muss. Mit einer reinen xpub-Wallet liegen Ihre Coins nicht auf dem Server. Verlieren würden Sie die Store-Einrichtung und den Rechnungsverlauf in Postgres – sichern Sie dieses Volume und bewahren Sie den Seed Ihrer Wallet an einem Ort auf, der mit diesem Server nichts zu tun hat.
- Lightning später. Starten Sie On-Chain. Lightning bedeutet ein größeres Blockfenster, Kanalverwaltung und eingehende Liquidität – ein eigenes Projekt und ein Pro-Tarif, den wir auf Anfrage einrichten.
Meine Einschätzung: Für einen kleinen Shop, der einmal am Tag Bitcoin annimmt, ist BTCPay auf Small-IP die sauberste Lösung, die es gibt. Wenn Sie Kartenzahlungen oder Fiat-Auszahlungen brauchen, ist das nicht das richtige Werkzeug.
Verwandte Themen
- Eigene Bitcoin-Node auf einem VPS – die Node für sich, wenn Sie nur Ihre Wallet verifizieren wollen
- Eigene Monero-Node auf einem VPS
- Crypto VPS – Server mit Krypto bezahlen
- VPS für eine Website mit eigener IP – der Shop, der Kunden zu BTCPay schickt
- Eine ufw-Firewall konfigurieren
Kommentare
Noch keine Kommentare. Sei der Erste.