Deployment resminya bukan sebuah docker-compose.yml yang Anda edit sendiri. Ini adalah sebuah generator: Anda mendeskripsikan deployment yang Anda inginkan lewat environment variable, dan sebuah script merakit file compose dari sebuah pustaka fragmen — satu untuk Bitcoin Core, satu untuk indexer, satu untuk PostgreSQL, satu untuk aplikasi BTCPay, satu untuk setiap implementasi Lightning, satu untuk reverse proxy, dan deretan panjang ekstra opsional lainnya. Ini adalah desain yang lebih baik daripada kelihatannya di awal, karena upgrade akan meregenerasi file itu, bukan meminta Anda menggabungkan perubahan milik orang lain ke dalam milik Anda sendiri. Ini juga berarti blok environment di bawah adalah konfigurasi sungguhan dari deployment Anda, dan pantas disimpan di tempat yang sama dengan catatan infrastruktur Anda yang lain.
Clone repositorinya dan ekspor environment-nya. Setiap baris di bawah ini berhubungan langsung dengan sebuah keputusan dari langkah 01: host name-nya adalah domain yang Anda arahkan di langkah 02, fragmen storage-nya adalah jendela prune yang Anda pilih, dan variabel Lightning-nya adalah salah satu implementasi, atau dihilangkan sama sekali untuk peluncuran on-chain-only.
mkdir BTCPayServer && cd BTCPayServer
git clone https://github.com/btcpayserver/btcpayserver-docker
cd btcpayserver-docker
export BTCPAY_HOST="pay.example.com" # exactly the name you pointed in step 02
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_REVERSEPROXY="nginx"
export BTCPAYGEN_LIGHTNING="clightning" # or "lnd", or omit for on-chain only
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage-s" # ~50 GB pruned window
export BTCPAY_ENABLE_SSH=true
export LETSENCRYPT_EMAIL="you@example.com"
. ./btcpay-setup.sh -i
Dua detail dalam blok itu masing-masing layak mendapat satu kalimat. Titik di depan pada . ./btcpay-setup.sh -i bukan salah ketik — script itu di-source, bukan dieksekusi, jadi environment yang diaturnya tetap berada di shell Anda dan perintah-perintah bantuan tetap berfungsi setelahnya. Dan nama fragmen storage-nya sensitif terhadap versi: generatornya sudah merilis varian yang memangkas hingga sekitar 100, 50, 25, dan 5 GB, dengan nama yang sudah disesuaikan antar rilis. Baca daftar fragmen di repository yang baru saja Anda clone, alih-alih memercayai nilai yang disalin dari sebuah tulisan blog, termasuk tulisan ini.
Installer akan berjalan beberapa menit, menarik banyak image, memperoleh sertifikat, dan menjalankan semuanya. Lalu penantian pun dimulai: node-nya harus mengunduh dan memvalidasi chain sebelum toko bisa mengonfirmasi sebuah pembayaran, dan itu memakan waktu berjam-jam, bukan menit, bahkan dalam mode pruned, karena pruning membuang block setelah memvalidasinya, bukan melewatkan pekerjaannya. Antarmuka web-nya langsung tersedia dan akan menampilkan banner sinkronisasi. Jangan terbitkan tagihan sungguhan sampai banner itu hilang.
./bitcoin-cli.sh getblockchaininfo | grep -E 'blocks|headers|verificationprogress|pruned'
docker ps --format '{{.Names}}\t{{.Status}}'
Klaim akun administrator dalam lima menit ke depan
Instance yang baru tidak memiliki user sama sekali, dan akun pertama yang mendaftar otomatis menjadi administrator. Sampai Anda mengklaimnya, siapa pun yang sampai ke URL-nya bisa melakukan hal yang sama — dan URL itu tidak rahasia: begitu sertifikatnya diterbitkan, hostname-nya langsung tercatat di log certificate-transparency publik, yang diindeks dan terus-menerus dipindai oleh orang-orang yang memang mencari hal seperti ini. Buka situsnya dan daftar sebelum apa pun yang lain, lalu periksa Server Settings dan pastikan pendaftaran tidak terbuka untuk orang asing. Ini adalah jendela lima menit yang sering dibiarkan terbuka selama berhari-hari karena tokonya dianggap "belum live".
Ada dua fragmen opsional yang layak diketahui selagi Anda masih berada dalam konfigurasi. Satu menambahkan Tor hidden service, sehingga checkout bisa dijangkau lewat alamat onion v3 selain alamat clearnet-nya — berguna untuk pelanggan yang lebih suka tidak me-resolve domain Anda, dan ide yang sama seperti pada panduan onion service. Yang satu lagi menambahkan cryptocurrency kedua. Keduanya diatur dengan cara yang sama, dengan menambahkannya ke variabel additional-fragments dan menjalankan ulang script setup; generatornya akan membangun ulang file compose dan me-restart hanya bagian yang berubah.