Все системы работают Амстердам · Париж · Рейкьявик +5 Оплата через Криптовалюта
Платежи и приватностьСредний уровень20 мин чтенияОбновлено 2026-09-01

Разверните BTCPay Server на своём VPS

Платёжный процессор — это компания, которая придерживает ваши деньги по пути и первым делом спрашивает, кто вы. BTCPay Server решает ту же задачу, но как программа, которую вы запускаете сами. Дальше — сколько это стоит на самом деле и где в итоге должны жить ключи.

Разверните BTCPay Server на своём VPS
На этой странице
  1. Что на самом деле меняет процессор на собственном сервере
  2. Что на самом деле разворачивается и какая часть обходится дороже всего
  3. Честный подбор размера и какой тариф подходит
  4. Что нужно, прежде чем начать
  5. Пошаговая инструкция
  6. Где живут ключи и в чём единственная ошибка, которая действительно важна
  7. Резервные копии и то, что действительно нельзя восстановить
  8. Сбои, которые остаются за кадром в быстрых инструкциях
  9. Юрисдикция, домен и то, чего не скрывает самостоятельный хостинг
  10. Часто задаваемые вопросы

Любой сторонний крипто-платёжный процессор перед тем, как перевести вам хотя бы один сатоши, спрашивает об одном и том же: кто вы, и можно ли ему подержать ваши деньги, пока они в пути. Оба пункта — решения, которые кто-то другой принял за ваш бизнес. BTCPay Server решает ту же задачу — инвойсы, курсы обмена, страница оплаты, вебхуки, касса — но как программа, которую запускаете вы сами: без аккаунта, без процента и без кого-либо между кошельком клиента и вашим.

Цена вопроса — то, что оператором становитесь вы. Это руководство как раз о том, во что это обходится на самом деле: какая часть стека ест ресурсы (и это не сам BTCPay), какой тариф ему действительно нужен, как развернуть его за час вашего внимания и сутки ожидания, и — вот что решает, была ли вся эта затея разумной — где живут ключи, когда всё уже работает. Bitcoin и Lightning — выбор по умолчанию; Monero — опциональная интеграция и, как ни странно, именно у неё из всех трёх самая чистая история с ключами. Саму машину можно арендовать по одному email-адресу и оплатить теми же монетами, которые вы вот-вот начнёте принимать.

Что на самом деле меняет процессор на собственном сервере

Обычно это подают как «без комиссий», хотя это самая неинтересная часть истории. Меняются четыре вещи, и только одна из них — про деньги:

  • Никто не держит ваши деньги, пока они в пути. Сторонний процессор принимает платёж клиента на собственный кошелёк и лишь потом зачисляет вам. Именно в этом зазоре и случаются блокировки, проверки и заморозки. BTCPay вообще ничего не получает: клиент платит на адрес, выведенный из вашего ключа, и монеты — ваши уже с первого подтверждения.
  • Никто не спрашивает, кто вы. Подключение к процессору — это процедура идентификации, в конце которой стоит банк. Установка программы — нет. В этом вся разница, и именно поэтому на запрос «как принимать крипту без KYC» всегда один ответ: «запустите процессор сами».
  • Стоимость перестаёт расти вместе с вами. Процент берётся всегда и растёт вместе с успехом. VPS и домен стоят одинаково что в удачный месяц, что в неудачный.
  • Вам достаётся вся эксплуатация. Аптайм, обновления, резервные копии — и роль человека, которому пишут, когда клиент говорит, что инвойс так и не оплатился. Это настоящая цена, и платится она вниманием, а не деньгами.

Чего вы не получаете — так это того единственного, в чём процессоры действительно хороши: превращения монет в деньги на банковском счёте за вас. BTCPay хранит то, чем ему заплатили, и в той же монете. Конвертация, выставление счетов в фиате, бухгалтерская выгрузка, которую признаёт налоговая, — всё это отдельные задачи, и большинство способов их решить возвращают ровно того идентифицированного посредника, которого вы только что убрали. Решите, какая половина этой сделки вам на самом деле была нужна, прежде чем что-то строить.

Что на самом деле разворачивается и какая часть обходится дороже всего

Название вводит в заблуждение — в чём-то даже полезно. «BTCPay Server» — это не одна программа: стандартное развёртывание поднимает сразу небольшой флот контейнеров, и понимание, что есть что, — вот разница между расчётом размера и угадыванием:

  • Bitcoin Core. Настоящая полная нода, проверяющая всё с генезис-блока. Именно этот компонент съедает диск, почти весь первый день и практически всю память. Всё остальное по сравнению с этим бесплатно.
  • NBXplorer. Индексатор между Core и BTCPay. Вы даёте ему расширенные публичные ключи; он отслеживает производные адреса и сообщает BTCPay, когда приходят деньги. Это также тот компонент, которому небезразлична обрезка — почему, станет ясно в разделе про сбои.
  • Сам BTCPay Server. Приложение: магазины, инвойсы, страница оплаты, касса, вебхуки, Greenfield API. По сравнению с остальным — скромно, несколько сотен мегабайт памяти.
  • PostgreSQL. Инвойсы, магазины, настройки, пользователи, API-ключи. Немного данных, и именно ради них вы вообще делаете резервные копии.
  • nginx с автоматическими сертификатами. Обратный прокси плюс компаньон, который выпускает и продлевает сертификат для вашего хоста. Именно поэтому порты 80 и 443 должны быть по-настоящему доступны из интернета.
  • Опционально — Lightning-нода (Core Lightning или LND) и демон Monero с wallet RPC рядом с ним — каждый тянет за собой свою цепочку и свой аппетит к диску.

Так что вопрос размера — никогда не «насколько большим должен быть BTCPay». Это всегда «сколько цепочки я храню и сколько именно цепочек». Ответьте на это, и тариф выберется сам.

Честный подбор размера и какой тариф подходит

Проект указывает 2 GB RAM со свопом как минимум и 4 GB как рекомендацию, и разрыв между этими двумя цифрами — это разрыв между установкой, которая формально завершается, и той, на которую не стыдно пустить клиентов. Рантайм приложения, PostgreSQL и синхронизирующийся bitcoind, делящие 2 GB на троих, всё-таки справятся — медленно, и файлу подкачки придётся делать работу, которой он делать не должен.

Диск определяется тем, насколько жёстко вы обрезаете цепочку, а развёртывание выражает это как фрагмент, который вы передаёте установщику. В семействе примерно так: opt-save-storage — около 100 GB файлов блоков, -s — около 50 GB, -xs — около 25 GB и -xxs — около 5 GB. Последний вариант — ловушка для всего, что должно прожить долго: истории остаётся так мало, что даже обычное обслуживание начинает сбоить. Для магазина разумный диапазон — -s или -xs.

Конкретные цифры из тарифной сетки, потому что «зависит от ситуации» — не ответ:

  • Только Bitcoin, с обрезкой, один магазинScout, 2 vCPU / 4 GB / 70 GB NVMe, $9.00/mo. Честный минимум и правильный ответ для большинства читателей.
  • Bitcoin и LightningRunner, 3 vCPU / 6 GB / 100 GB, $14.00/mo. Демон Lightning лёгкий по диску, но требовательный к постоянному онлайну; запас — как раз для ноды под ним.
  • Bitcoin, Lightning и MoneroAlpha, 6 vCPU / 12 GB / 200 GB, $28.00/mo. Один прунированный блокчейн Monero — это уже около 85 GB, так что при двух цепочках и двух индексаторах 8 GB начинает не хватать. Hunter (4 vCPU / 8 GB / 140 GB, $19.00/mo) подходит, только если Bitcoin жёстко обрезан и остаётся таким.
  • Нода без обрезки за магазином — уже другая задача с другим счётом. В руководстве по полной ноде есть эти цифры, и начинаются они с Fenrir.

CPU важен ровно один раз. Проверка подписей во время начальной загрузки блоков распараллеливается, так что от двух до четырёх vCPU превращают первую синхронизацию из нескольких дней в примерно одни сутки, а затем всё возвращается к простою. Трафик — это разовые расходы на всю цепочку, а порт на 1 Gbps с безлимитным трафиком обходится без счетов за превышение в конце месяца. Задержка платёжному процессору безразлична, так что выбирайте локацию по юрисдикции, а не по миллисекундам — Амстердам, Париж, Бухарест и София — все по базовой цене.

Что нужно, прежде чем начать

Список короткий, и один пункт в нём — не технический.

  • Домен с A-записью, уже указывающей на сервер. Сертификат выпускается по HTTP для этого хоста, поэтому DNS обязан резолвиться до запуска установщика, а не во время него. Обычная форма — поддомен вроде pay.example.com.
  • Порты 80 и 443, открытые всему миру. Порт 80 не опционален, даже если потом на нём не будет ничего полезного: он нужен для проверки при выпуске сертификата.
  • Debian 13 из библиотеки шаблонов, на машине, которая уже прошла десятиминутный курс защиты. Сделайте это заранее — когда стек уже работает, аккуратно встроить защиту намного сложнее.
  • Кошелёк, который уже под вашим контролем, и его расширенный публичный ключ. Sparrow, Electrum или аппаратный кошелёк. Держите его наготове до установки, чтобы не поддаться соблазну дать серверу сгенерировать кошелёк за вас.
  • Email для удостоверяющего центра. На него приходят только предупреждения об истечении сертификата — и больше ничего.
  • Решение по обрезке, принятое уже сейчас. Передумать позже значит пересинхронизировать цепочку с нуля, а второй раз потратить на это сутки вам не захочется.

Пошаговая инструкция

  1. Разверните сервер, направьте на него домен и сразу защитите его

    Закажите тариф, на который указал раздел про размер, выберите Debian 13 и подбирайте локацию по юрисдикции, а не по задержке. Сразу же создайте DNS-запись — она должна успеть распространиться к тому моменту, когда установщик попросит удостоверяющий центр подтвердить, что домен ваш:

    pay.example.com.   300   IN   A   198.51.100.10

    Затем — курс из руководства по защите Debian: пользователь не-root с ключом, вход по паролю отключён, автоматические обновления безопасности включены, и файрвол по умолчанию всё запрещает. Всё, что дальше, предполагает, что это уже сделано и что открыты только 22, 80 и 443.

    apt update && apt full-upgrade -y
    apt install -y git curl

    Не устанавливайте Docker вручную. Установочный скрипт сам ставит и настраивает нужную ему версию, а самостоятельная установка — самая частая причина, по которой первый запуск не удаётся.

  2. Склонируйте репозиторий развёртывания и выберите свои фрагменты

    Всё развёртывание — это один репозиторий из shell-скриптов и compose-фрагментов. Склонируйте его от root, туда, где точно не потеряете:

    git clone https://github.com/btcpayserver/btcpayserver-docker
    cd btcpayserver-docker

    Конфигурация — это переменные окружения, которые установщик читает один раз, а потом сохраняет, так что весь конфигурационный файл, который вы вообще когда-либо напишете, — это набор export ниже:

    export BTCPAY_HOST="pay.example.com"
    export NBITCOIN_NETWORK="mainnet"
    export BTCPAYGEN_CRYPTO1="btc"
    export BTCPAYGEN_REVERSEPROXY="nginx"
    export BTCPAYGEN_LIGHTNING="clightning"
    export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage-s"
    export LETSENCRYPT_EMAIL="you@example.com"

    BTCPAYGEN_LIGHTNING принимает clightning, lnd, phoenixd или вообще ничего — оставьте пустым, если вы ещё не готовы держать горячие средства, ведь добавить его позже — это просто ещё один запуск того же скрипта. Названия фрагментов — это как раз то, что меняется от релиза к релизу, так что прежде чем их вставлять, загляните на актуальную страницу развёртывания проекта.

  3. Запустите установщик и дайте цепочке синхронизироваться

    Одна команда собирает compose-файл, скачивает образы и поднимает всё сразу:

    . ./btcpay-setup.sh -i

    Она завершается за пару минут и оставляет после себя рабочий веб-интерфейс. А вот рабочий магазин — нет: Bitcoin Core в этот момент как раз скачивает и проверяет цепочку, и платить некуда, пока это не закончится. Следите за прогрессом, а не гадайте:

    bitcoin-cli.sh -getinfo
    btcpay-down.sh     # stop everything
    btcpay-up.sh       # start everything

    Верить стоит показателю verificationprogress, и на старте он обманчив: первые девяносто процентов проходят быстро, а последние десять съедают почти всё время, потому что недавние блоки — полные. На NVMe с двумя-четырьмя vCPU рассчитывайте примерно на сутки. Не трогайте процесс, пока он работает — перезапуск посреди синхронизации отберёт у вас только кеш.

  4. Создайте аккаунт администратора и закройте за собой дверь

    Откройте https://pay.example.com и зарегистрируйтесь. Первый созданный аккаунт становится администратором, а значит, окно между завершением установки и вашей регистрацией — единственный по-настоящему опасный момент во всём процессе. Сделайте это немедленно, из уже открытой вкладки браузера.

    Затем в настройках сервера отключите открытую регистрацию, чтобы второй посетитель не мог создать аккаунт, и включите двухфакторную аутентификацию для себя. И то, и другое — по два клика, а вместе они и есть разница между вашим платёжным процессором и чужим платёжным процессором. Всех остальных администраторов приглашайте явно.

  5. Подключите кошелёк, с которого сервер не может тратить

    Создайте магазин, затем подключите Bitcoin-кошелёк. BTCPay предложит сгенерировать новый прямо здесь; выберите другой путь — подключить существующий кошелёк — и вставьте расширенный публичный ключ уровня аккаунта, экспортированный из своего:

    zpub6r...
        # account-level extended PUBLIC key (xpub / ypub / zpub), never a prv
        # Sparrow: wallet settings.  Electrum: Wallet -> Information -> Master Public Key

    Эта строка публична по замыслу. Она позволяет BTCPay выводить неограниченное число адресов для получения и распознавать платежи на них; она не позволяет BTCPay — или тому, кто его скомпрометирует, — потратить хоть один сатоши. Приватный ключ остаётся там, где и был, в идеале — на аппаратном кошельке, который никогда не видел эту машину.

    Стоит усвоить два следствия. Используйте свежий аккаунт или отдельный путь деривации для магазина, а не ключ кошелька, которым вы пользуетесь уже много лет — раздел о сбоях объясняет, почему история и обрезка плохо уживаются друг с другом. И помните: тот, у кого есть этот расширенный ключ, видит вообще каждый ваш платёж — это не ключ от денег, но и далеко не пустяк. Относитесь к нему как к гроссбуху, оставленному открытым на столе.

  6. Добавьте Lightning и решите, сколько ваших денег будет там жить

    Если вы задали BTCPAYGEN_LIGHTNING ещё при установке, нода уже запущена и подключена изнутри, и в настройках магазина её нужно только включить. Если вы оставили переменную пустой, задайте её и запустите установочный скрипт заново; он идемпотентен и не станет пересинхронизировать цепочку.

    export BTCPAYGEN_LIGHTNING="clightning"
    . ./btcpay-setup.sh -i

    Теперь часть, которая скорее решение, чем настройка. Баланс каналов хранится в кошельке, с которого сервер может тратить, потому что платёжный канал иначе просто не бывает; варианта Lightning только для просмотра не существует. Компрометация этого сервера обойдётся ровно в баланс каналов и ни в чём больше, поэтому держать там стоит такую сумму, потерю которой вы просто разозлитесь, а не разоритесь. Сметайте средства в холодное хранилище по расписанию, которого вы действительно будете придерживаться.

    Будьте готовы, что первый месяц будет про ликвидность, а не про платежи. Ноде продавца нужна входящая ёмкость — а это прямая противоположность тому, что даёт открытие канала: открывая канал, вы финансируете свою же сторону. Купить входящую ликвидность у сервиса, прогнать подводный своп, чтобы перекинуть средства на дальнюю сторону, или подождать, пока пиры сами откроют каналы к вам, когда у вас появится оборот, — вот три честных варианта. Работают оба — и Core Lightning, и LND; про Core Lightning проще рассуждать рядом с нодой с обрезкой, и почему именно — объясняет руководство по полной ноде.

  7. Добавьте Monero с кошельком только для просмотра

    Monero подключается так же, как второй крипто-слот, — это поднимает демон Monero и wallet RPC рядом со всем остальным:

    export BTCPAYGEN_CRYPTO2="xmr"
    . ./btcpay-setup.sh -i

    Закладывайте бюджет на вторую цепочку: около 85 GB в прунированном виде и день-два на первую синхронизацию на NVMe. Подробности по обоим пунктам — в руководстве по ноде Monero.

    Работа с ключами здесь — лучшая часть всей настройки. Monero разделяет возможность видеть входящие платежи и возможность их тратить, поэтому вы генерируете кошелёк только для просмотра из основного адреса и приватного ключа просмотра, и это всё, что вообще когда-либо хранит сервер:

    monero-wallet-cli --generate-from-view-key store-view

    Он запросит стандартный адрес, приватный ключ просмотра и пароль. Скопируйте получившиеся файлы кошелька в каталог кошельков Monero, который предоставляет развёртывание, укажите на него магазину, и BTCPay будет генерировать субадрес под каждый инвойс и следить за платежами на него. Ключ траты никогда не покидает машину, на которой вы его сгенерировали.

    Ещё один момент, под который стоит спроектировать оплату: полученные выходы заблокированы на десять блоков, это примерно двадцать минут, так что BTCPay видит платёж задолго до того, как его можно потратить. Для цифровых товаров это вопрос политики. Для всего, что передаётся из рук в руки, это уже очередь.

  8. Протестируйте всё сначала как клиент, а затем как оператор

    «Страница загружается» — это не тест. Создайте инвойс на символическую сумму, оплатите его из настоящего кошелька, а затем пройдитесь по настройкам, которые решают, что происходит, когда платёж проходит не идеально:

    • Политика подтверждений. Сколько блоков нужно, прежде чем инвойс считается оплаченным. Ноль подтверждений разумен для кофе и неверен для ноутбука; это настройка на уровне магазина, и самое значимое число во всём интерфейсе.
    • Срок действия инвойса. Сколько времени есть у клиента, прежде чем указанный курс перестаёт действовать. По умолчанию — пятнадцать минут, и это мало для тех, кто платит выводом с биржи.
    • Допуск по недоплате. Процент недоплаты, который вы готовы принять, лишь бы не оставить клиента с наполовину оплаченным инвойсом и заявкой в поддержку. Небольшое, но ненулевое значение — практичная настройка.
    • Недоплата и переплата. Один раз намеренно недоплатите по инвойсу и посмотрите, что сделает ваш магазин. Куда лучше узнать это на собственных деньгах.

    Затем половина, которая касается оператора: включите вебхук и убедитесь, что ваш магазин действительно его получает, сгенерируйте ключ Greenfield API, если что-то будет создавать инвойсы программно, и сделайте одну полную резервную копию перед запуском в бой — чтобы первое в жизни восстановление оказалось репетицией, а не спасением при пожаре.

Где живут ключи и в чём единственная ошибка, которая действительно важна

Почти любой плохой исход с процессором на собственном сервере тянется от одного и того же решения, принятого рано и небрежно: позволить серверу держать то, чем можно потратить. Стоит явно разобрать три случая, потому что они по-настоящему разные.

  • Bitcoin в блокчейне: только для просмотра, всегда. BTCPay хранит расширенный публичный ключ и ничего больше. Если сервер скомпрометирован, атакующий узнаёт, сколько вам заплатили, и может подменить адрес будущих инвойсов — это настоящая атака, и именно поэтому кошелёк вашего магазина стоит перепроверить после любого инцидента — но тронуть уже полученную монету он не может.
  • Lightning: горячий по определению. Каналы финансируются монетами, которыми сервер может тратить, потому что канал иначе просто не работает. Это осознанное исключение, и раздел выше как раз про его размер.
  • Monero: только для просмотра, структурно. Приватный ключ просмотра раскрывает каждый входящий платёж и не даёт полномочий ни на один из них. На стороне Bitcoin аналога этому нет.

Единственная функция, которая намеренно ломает эту модель, — Payjoin. Она позволяет вашему серверу добавить свой вход в транзакцию клиента, что заметно подрывает эвристику общего входа, на которую опирается анализ блокчейна, и даёт реальный выигрыш в приватности обеим сторонам — но получатель должен уметь подписывать, а значит, внутри BTCPay нужен горячий кошелёк. Это настоящий компромисс, а не бесплатная функция. Идите на него осознанно и пополняйте этот кошелёк так же, как Lightning-кошелёк: суммой, а не всем, что у вас есть.

А если вы дали мастеру установки сгенерировать кошелёк магазина, потому что так было быстрее всего: запишите сид, который он вам показал, проверьте его в офлайн-кошельке, а затем спланируйте переход на схему только для просмотра. Сид, который хоть раз побывал на сервере, торчащем в интернете, — это сид с запущенным обратным отсчётом.

Резервные копии и то, что действительно нельзя восстановить

Разложите состояние по тому, чего будет стоить его воссоздать, — ответы получатся очень разными:

  • Цепочка. Это не задача для бэкапа. Это публичные данные, и они пересинхронизируются — медленно, но бесплатно. Никогда не делайте их резервную копию.
  • База данных. Инвойсы, магазины, настройки, пользователи, API-ключи. Вот это настоящий бэкап, он маленький, и его потеря стоит вам бухгалтерской записи о каждой продаже — не денег, а бумажной работы.
  • Ваш ончейн-кошелёк. Уже в безопасности, потому что ключа здесь никогда не было. Это и есть награда за пятый шаг.
  • Состояние каналов Lightning. Вот это по-настоящему больно. Статическая резервная копия канала позволяет вернуть средства в ваших каналах после полной потери, принудительно их закрыв; сами каналы она не восстанавливает, а если она устарела — она бесполезна. Она меняется при каждом открытии или закрытии канала, так что ей место в автоматической копии за пределами сервера, а не в папке, о которой вы вспоминаете раз в квартал.
  • Кошелёк Monero только для просмотра. Восстанавливается из адреса и ключа просмотра, которые вы и так храните офлайн. Делайте резервную копию их, а к файлам кошелька относитесь как к кешу.

Развёртывание поставляется со скриптами, которые делают это правильно:

btcpay-backup.sh    # stops the stack, dumps Postgres, tars the config, restarts
btcpay-restore.sh   # puts one of those archives back

Эта пауза и есть весь смысл — горячая копия работающей базы данных может восстановиться во что-то весьма занимательное. Шифруйте всё, что покидает машину, и помните: еженедельный снапшот, включённый в каждый тариф, — это удобство, а не резервная копия: снапшот живёт там же, где и то, что он должен защищать.

Сбои, которые остаются за кадром в быстрых инструкциях

Примерно в порядке того, как часто они стоят кому-то целого вечера:

  • Сертификат никак не выпускается. В девяти случаях из десяти A-запись создали уже после запуска установщика, либо порт 80 отфильтрован. Почините DNS, убедитесь, что имя резолвится откуда-то, кроме вашего собственного ноутбука, и перезапустите установочный скрипт. Слепые повторные попытки против удостоверяющего центра приводят к лимиту запросов и неделе ожидания, так что между попытками нужно что-то менять.
  • У импортированного расширенного ключа с историей нулевой баланс. Это и есть ловушка обрезки. Индексатор находит новые платежи, наблюдая за новыми блоками, но чтобы восстановить прошлое уже существующего кошелька, нужно прочитать блоки, которые нода с обрезкой уже удалила. Заведите для магазина свежий аккаунт — и проблемы просто не будет; а если вам обязательно нужно импортировать историю, понадобятся нода без обрезки и rescan.
  • «Клиент заплатил, а инвойс всё ещё открыт». Обычно это недоплата из-за комиссии кошелька отправителя, инвойс, истёкший, пока платёж висел неподтверждённым, либо политика подтверждений строже, чем вам казалось. Все три случая — это настройки, и именно поэтому сначала стоит протестировать на собственных деньгах.
  • Нода незаметно отстаёт. Зависший bitcoind продолжает выдавать адреса и пропускает платежи, ничего не сообщая об этом. Сверяйте высоту блока с любым публичным источником по расписанию и настройте оповещение на разрыв; узнавать об этом от клиента — не вариант.
  • Обновление в неподходящий момент. btcpay-update.sh ведёт себя корректно, но перезапускает вообще всё. Запускайте его осознанно, никогда автоматически и никогда во время продажи.
  • У адреса появляется репутация. Страница оплаты на IPv4 из чёрного списка — это страница оплаты, которую тихо отвергают некоторые корпоративные сети и почтовые фильтры. Каждый тариф здесь поставляется с выделенным адресом без истории, и его стоит проверить, прежде чем печатать домен хоть где-нибудь.

Юрисдикция, домен и то, чего не скрывает самостоятельный хостинг

Программа убирает посредника. Всё остальное — она не убирает, и честно сказать об этом полезнее, чем составить ещё один список возможностей.

Домен — слабое место. Он где-то зарегистрирован, он публично резолвится, и именно на него в первую очередь смотрят. Процессор на собственном сервере, поднятый на хосте, зарегистрированном на ваше имя у регистратора в вашей же стране, убрал деньги из рук третьей стороны, но оставил личность ровно там же, где она и была. Если это важно для того, что вы продаёте, регистратор заслуживает не меньше внимания, чем хостинг.

Юрисдикция — реальная переменная. От того, где стоит машина, зависит, чьё судебное решение до неё дотянется и сколько бюрократии встанет на пути. Это трение и дистанция, а не иммунитет — именно это подробно разбирает статья про офшорный хостинг, и её стоит прочитать прежде, чем выбирать флаг вместо сети.

Аккаунт — последнее звено. Аренда сервера по email-адресу и оплата в Monero означает, что никакая выписка по карте не свяжет страницу оплаты с банком — странная вещь упускать из виду, когда вы строите систему, весь смысл которой — обходиться без этого. Каждый тариф здесь по умолчанию без KYC, а в каждой локации выдаётся выделенный чистый IPv4 с кастомным reverse DNS.

А граница проведена явно, а не подразумевается. Ноды, процессоры и магазины — обычная инфраструктура, и здесь им рады; политика допустимого использования короткая, публичная, и у неё есть жёсткий предел. Нужна ли вам лицензия на приём платежей — вопрос о том, что вы продаёте и где вы находитесь, а не о программе — и это вопрос к квалифицированному специалисту, а не к руководству по хостингу.

Часто задаваемые вопросы

Какой тариф VPS нужен для BTCPay Server?

Scout (2 vCPU / 4 GB / 70 GB NVMe, $9.00/mo) с обрезанной нодой Bitcoin — честный минимум для рабочего магазина, и это то, что стоит покупать большинству читателей. Добавьте Lightning — и Runner (3 vCPU / 6 GB / 100 GB, $14.00/mo) станет комфортнее; добавьте Monero второй цепочкой — и Alpha (6 vCPU / 12 GB / 200 GB, $28.00/mo) станет тем размером, о котором можно больше не думать. Проект указывает 2 GB как минимум, и это правда, хоть и не самая приятная.

Можно ли запустить BTCPay Server без полной ноды Bitcoin?

Да, но вопрос в том, кому вы решите довериться. BTCPay можно направить на внешнюю ноду, которую вы уже держите сами — это разумный вариант, и хороший повод прежде почитать руководство по полной ноде, — либо на чужую ноду, а это возвращает в схему третью сторону, которая видит каждый адрес, сгенерированный вашим магазином. Встроенная нода существует именно потому, что это единственная конфигурация, где за вами никто не наблюдает. Нода с обрезкой — всё равно полная нода: обрежьте её, и почти всё возражение насчёт ресурсов исчезает.

Поддерживает ли BTCPay Server Monero?

Да, как опциональная интеграция, которую вы включаете при развёртывании. Она поднимает демон Monero и wallet RPC, и вы подключаете его через кошелёк только для просмотра, сгенерированный из основного адреса и приватного ключа просмотра — так сервер видит платежи, но не может их потратить, а это лучше всего, что доступно на стороне Bitcoin. Цена вопроса — вторая цепочка, которую нужно синхронизировать и хранить, и блокировка полученных выходов на десять блоков, примерно двадцать минут, прежде чем средства станут доступны для траты.

Законно ли запускать собственный платёжный процессор?

Запуск программы — это обычная эксплуатация ПО. В большинстве мест регулируется деятельность по хранению или переводу денег от имени других людей, а некастодиальный процессор, принимающий оплату за ваши собственные товары, именно этим и не занимается, потому что ничего и никогда не хранится от чьего-либо имени. Что вы продаёте и где вы живёте — это по-прежнему определяет ваши обязательства, включая налоговые, и самостоятельный хостинг ничего в этом не меняет. Это руководство по хостингу, а не юридическая консультация: если вы планируете обслуживать третьих лиц, считайте, что вы уже в другой категории, и спрашивайте квалифицированного специалиста.

Если сервер умрёт, я потеряю деньги?

Ончейн-деньги — нет, если вы выполнили пятый шаг — эти монеты сидят в кошельке, чей ключ никогда не был на сервере, а свежая установка с тем же расширенным публичным ключом снова их увидит. Что вы теряете — так это записи: инвойсы, настройки магазина, API-ключи, если только вы не сохраняли резервную копию базы данных. Lightning — исключение, потому что средства в каналах лежат на сервере; чтобы восстановить их после полной потери, нужна актуальная статическая резервная копия канала, и она принудительно закрывает ваши каналы, а не восстанавливает их.

Нужно ли доменное имя для BTCPay Server?

На практике — да. Развёртывание выпускает сертификат для конкретного хоста, браузеры и кошельки ожидают HTTPS на странице оплаты, а клиентов просят отправить деньги на то, что написано в адресной строке. Поддомена чего-то, чем вы уже владеете, вполне достаточно. Если сама по себе публичность домена — проблема, к BTCPay можно обращаться и через onion-сервис — это законная конфигурация, которая заодно меняет, сколько клиентов вообще смогут добраться до страницы.

Сколько на самом деле стоит самостоятельный хостинг в месяц?

Программа бесплатна и распространяется по лицензии AGPL, так что платите вы только за VPS, домен и своё время. При $9.00 в месяц за Scout и паре долларов в год за домен арифметика против любого процессора, берущего процент, перестаёт биться уже при совсем небольшом обороте — и, в отличие от процента, эта сумма не растёт вместе с вашим успехом. Честная часть цены — третий пункт: теперь именно вы тот, кто замечает, что нода перестала синхронизироваться.

Разверните офшорный VPS примерно за минуту

Без KYC, оплата криптовалютой, только NVMe. Выберите тариф, оплатите в Monero или любой крупной монете — root-доступ примерно через 60 секунд.

Fenrir на страже