Elke betaalverwerker in het midden komt met eigen voorwaarden, een eigen KYC en een eigen knop die je saldo bevriest. BTCPay Server haalt het midden weg. Facturen ontstaan op je server, de klant betaalt naar een adres dat uit je wallet is afgeleid, en je eigen Bitcoin-node bevestigt de betaling. Niemand behalve jij kan het uitzetten.
Het is voor winkels, freelancers en diensten die al bitcoin aannemen — of dat willen — en dat werk liever niet aan een bedrijf overlaten.
Welk plan
BTCPay draait als ongeveer zeven containers: de BTCPay-app, NBXplorer (die de chain volgt), Bitcoin Core, Postgres en een nginx ervoor met automatische Let's Encrypt. Op onze testserver gebruikten ze bij de start ongeveer 0,7 GB RAM, en Bitcoin Core neemt meer tijdens het synchroniseren; 4 GB is ruim voldoende. De echte beperking is schijfruimte, niet geheugen.
| Opzet | Plan |
|---|---|
| On-chain BTC, geprunede node met ~5 GB aan blokken | Small-IP: 4 vCPU, 4 GB, 35 GB ($16/mnd) |
| Hetzelfde, met meer ruimte voor logs en updates | Medium-IP: 6 vCPU, 6 GB, 45 GB ($20/mnd) |
| Lightning, een groter blokvenster of een tweede munt | Pro-32: 8 vCPU, 32 GB, 400 GB ($40/mnd), op aanvraag |
Je hebt een plan met een eigen IPv4 nodig: klanten bereiken BTCPay via HTTPS en Let's Encrypt moet poort 80 kunnen bereiken. Kies Duitsland of Finland, wat er bij het bestellen beschikbaar is; voor een betaalpagina doet latency er nauwelijks toe. En omdat het hele punt is dat je crypto aanneemt, past het dat de server zelf ook in crypto wordt betaald, zonder KYC.
Installatie
Laat pay.example.com naar de server wijzen en dan, als root op een verse Ubuntu 24.04 of 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 is wat het laat passen: Bitcoin Core prunet tot 5 GB aan blokken. Het script haalt de images op, maakt een systemd-service btcpayserver aan en start alles. Onderweg herstart het ook de Docker-daemon — nog een reden om BTCPay een eigen server te geven in plaats van het naast andere containers te proppen.
Controleer de node:
bitcoin-cli.sh getblockchaininfo
Vergelijk blocks met headers en kijk naar "pruned": true. Na twintig minuten test zaten we op ongeveer 218.000 van de circa 972.000 blokken — de vroege blokken zijn piepklein, dus extrapoleer niet. Het echte werk komt later.
Eerste login: doe het nu
Open https://pay.example.com zodra het antwoordt. BTCPay stuurt je naar een registratiepagina, en het eerste account wordt serverbeheerder. Vindt iemand anders de pagina eerder dan jij, dan is jouw betaalserver van die persoon. Registreer je, kijk dan onder Server Settings → Policies en stel nieuwe aanmeldingen in zoals jij ze wilt.
Maak daarna een winkel aan en koppel je wallet via de extended public key (xpub) — uit een hardwarewallet of de export van je desktopwallet. BTCPay leidt voor elke factuur een nieuw adres af en ziet nooit een privésleutel. Gebruik hiervoor een nieuwe wallet of een nieuw account in plaats van een wallet met jaren geschiedenis: een geprunede node volgt het liefst wat er vanaf nu gebeurt.
Tot de node bij is, laat BTCPay zien dat het nog synchroniseert en volgt het geen betalingen. Plan de lancering voor na de synchronisatie, niet voor de avond waarop je installeert.
Wat je moet weten voordat je live gaat
- De eerste synchronisatie duurt lang. Een geprunede node downloadt en controleert toch de hele chain — meer dan 700 GB — voordat hij oude blokken kan weggooien. Verkeer is op onze plannen onbeperkt op 1 Gbit/s, dus het kost niets extra, maar op een server met 4 vCPU reken je in dagen. In de repository staat een fast-sync-script; dat slaat dit werk over door te vertrouwen op andermans kopie van de UTXO-set, wat een deel van de reden om een eigen node te draaien onderuithaalt.
- Updates.
btcpay-update.shhaalt de nieuwste BTCPay en afhankelijkheden op. Draai het op een rustig uur, niet midden in een uitverkoop. - Wat je back-upt. Met een wallet die alleen via xpub gekoppeld is, staan je munten niet op de server. Wat je kwijt zou raken is de winkelinrichting en de factuurgeschiedenis in Postgres — back-up dat volume en bewaar de seed van je wallet op een plek die niets met deze server te maken heeft.
- Lightning later. Begin on-chain. Lightning betekent een groter blokvenster, kanaalbeheer en inkomende liquiditeit — een project op zich en een Pro-plan, dat we op aanvraag inrichten.
Mijn oordeel: voor een kleine winkel die één keer per dag bitcoin ontvangt, is BTCPay op Small-IP de schoonste opzet die er is. Heb je kaartbetalingen of uitbetalingen in fiat nodig, dan is dit niet het juiste gereedschap.
Gerelateerd
- Je eigen Bitcoin-node op een VPS: de node op zichzelf, als je alleen je wallet wilt verifiëren
- Je eigen Monero-node op een VPS
- Crypto VPS: servers betalen met crypto
- VPS voor een website op een eigen IP: de winkel die klanten naar BTCPay stuurt
- Een ufw-firewall configureren
Reacties
Nog geen reacties. Wees de eerste.