Любой платёжный процессор посередине приносит с собой свои условия, свой KYC и свою кнопку заморозки баланса. BTCPay Server убирает середину. Счёт создаётся на вашем сервере, покупатель платит на адрес, выведенный из вашего кошелька, а подтверждает платёж ваш собственный узел Bitcoin. Выключить это может только один человек — вы.
Это для магазинов, фрилансеров и сервисов, которые уже принимают bitcoin — или хотят — и не хотят отдавать эту работу компании.
Какой тариф
BTCPay — это около семи контейнеров: само приложение, NBXplorer (он следит за блокчейном), Bitcoin Core, Postgres и nginx на входе с автоматическим Let's Encrypt. На нашем тестовом сервере на старте они заняли около 0,7 ГБ RAM, а во время синхронизации Bitcoin Core берёт больше; 4 ГБ хватает с запасом. Узкое место тут диск, а не память.
| Схема | Тариф |
|---|---|
| Bitcoin в основной сети, прореженный узел на ~5 ГБ блоков | Small-IP — 4 vCPU, 4 ГБ, 35 ГБ ($16/мес) |
| То же, но с запасом под логи и обновления | Medium-IP — 6 vCPU, 6 ГБ, 45 ГБ ($20/мес) |
| Lightning, больше блоков в запасе или вторая монета | Pro-32 — 8 vCPU, 32 ГБ, 400 ГБ ($40/мес), по заявке |
Нужен тариф со своим IPv4: покупатели заходят в BTCPay по HTTPS, а Let's Encrypt должен достучаться до порта 80. Германия или Финляндия — что доступно при заказе: для платёжной страницы задержка почти не важна. И раз весь смысл в приёме крипты, логично, что и сам сервер оплачивается криптой, без KYC.
Установка
Направьте pay.example.com на сервер, затем от root на свежем Ubuntu 24.04 или 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: Bitcoin Core прореживает блоки до 5 ГБ. Скрипт скачивает образы, создаёт systemd-сервис btcpayserver и всё запускает. По дороге он ещё и перезапускает демон Docker — лишний довод отдать BTCPay отдельный сервер, а не втискивать его к другим контейнерам.
Проверьте узел:
bitcoin-cli.sh getblockchaininfo
Сравните blocks с headers и найдите "pruned": true. Через двадцать минут нашего теста было около 218 000 блоков из примерно 972 000 — первые блоки крошечные, так что по этой цифре не прикидывайте. Настоящая работа начнётся позже.
Первый вход — прямо сейчас
Откройте https://pay.example.com, как только он ответит. BTCPay отправит вас на страницу регистрации, и первый аккаунт становится администратором сервера. Если кто-то найдёт страницу раньше вас — ваш платёжный сервер достанется ему. Зарегистрируйтесь, затем загляните в Server Settings → Policies и проверьте, что регистрация новых пользователей настроена так, как вам нужно.
Потом создайте магазин и подключите кошелёк по расширенному публичному ключу (xpub) — из аппаратного кошелька или экспорта десктопного. BTCPay выводит новый адрес для каждого счёта и ни разу не видит приватный ключ. Берите для этого новый кошелёк или новый аккаунт в кошельке, а не тот, за которым годы истории: прореженному узлу удобнее следить за тем, что происходит с этого момента.
Пока узел не догонит сеть, BTCPay показывает, что синхронизация ещё идёт, и за платежами не следит. Запуск продаж планируйте на после синхронизации, а не на вечер установки.
Что знать до запуска
- Первая синхронизация долгая. Прореженный узел всё равно скачивает и проверяет весь блокчейн — больше 700 ГБ, — прежде чем выбросить старые блоки. Трафик на наших тарифах безлимитный на 1 Гбит/с, так что сверху это ничего не стоит, но на 4 vCPU считайте в днях. В репозитории есть скрипт быстрой синхронизации; он пропускает эту работу, доверяя чужой копии набора UTXO, — а это перечёркивает часть смысла держать свой узел.
- Обновления.
btcpay-update.shподтягивает свежий BTCPay и зависимости. Запускайте в тихий час, а не посреди распродажи. - Что бэкапить. С кошельком только по xpub ваших монет на сервере нет. Потерять можно настройки магазина и историю счетов в Postgres — бэкапьте этот том, а seed кошелька храните там, где он никак не связан с этим сервером.
- Lightning потом. Начните с основной сети. Lightning — это больше блоков в запасе, управление каналами и входящая ликвидность: отдельный проект и тариф Pro, который мы подключаем по заявке.
Моё мнение: для небольшого магазина, которому раз в день платят bitcoin, BTCPay на Small-IP — самая чистая схема из возможных. Если нужны оплата картой или выплаты в фиате — это не тот инструмент.
По теме
- Свой узел Bitcoin на VPS — один узел, если нужно только проверять свой кошелёк
- Свой узел Monero на VPS
- Crypto VPS — как оплачивать серверы криптой
- VPS для сайта на своём IP — магазин, который отправляет покупателей в BTCPay
- Как настроить файрвол ufw
Комментарии
Пока нет комментариев. Будьте первым.