−25%

на годовую оплату Windows, до 31.10. К тарифам

EQVPS
Начать

VPS для BTCPay Server: приём крипты у себя

BTCPay Server со своим прореженным узлом Bitcoin: платежи прямо на ваш кошелёк, без процессора посередине. Проверенная установка, расчёт под 35 ГБ, оговорки.

Любой платёжный процессор посередине приносит с собой свои условия, свой 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 — самая чистая схема из возможных. Если нужны оплата картой или выплаты в фиате — это не тот инструмент.

По теме

Готовы развернуть? Оплата криптой, без KYC — сервер за минуту.

Развернуть →

Частые вопросы

Сколько диска нужно BTCPay Server?

С профилем opt-save-storage-xxs узел Bitcoin хранит всего около 5 ГБ блоков. Сверху добавляются chainstate (набор UTXO — около дюжины гигабайт, и он растёт), примерно 2,5 ГБ Docker-образов и система. Это помещается в 35 ГБ Small-IP. Следующий профиль, opt-save-storage-xs, один держит 25 ГБ блоков и требует уже тариф Pro — он по заявке.

Сколько длится первая синхронизация?

Дни, а не часы. Даже прореженный узел скачивает и проверяет весь блокчейн Bitcoin — это больше 700 ГБ трафика — и только потом выбрасывает старые блоки. Трафик на наших тарифах безлимитный, так что скачивание ничего не стоит сверху, но платежи BTCPay увидит только после того, как узел догонит сеть.

BTCPay хранит мои монеты?

Нет, если подключить кошелёк по расширенному публичному ключу (xpub). Тогда сервер может создавать адреса и следить за платежами, но приватных ключей у него нет и потратить он ничего не может. Потеряете сервер — потеряете настройки магазина, а не деньги.

Нужен ли выделенный IP?

Да. Ваш магазин и браузеры покупателей должны достучаться до BTCPay по порту 443, а Let's Encrypt — до порта 80, чтобы выдать сертификат. NAT-тариф снаружи принимает только ваш SSH-порт.

А Lightning или Monero он умеет?

Оба варианта есть, но на маленькие тарифы ни один не влезает. Узлу Lightning нужно больше блоков в запасе и больше внимания, чем платежам в основной сети; узлу Monero нужно намного больше диска, чем прореженному Bitcoin. Начните с bitcoin в основной сети на Small-IP; для любого из них напишите нам про тариф Pro.

Комментарии

Пока нет комментариев. Будьте первым.

Оставить комментарий

Комментарии проходят модерацию перед публикацией.