3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер

3 горизонтальные линии, бургер
Удалить все
ЗАГРУЗКА ...

Содержание



    Как развернуть BTCPay сервер на VPS вручную

    Часы
    05.03.2026
    /
    Часы
    12.04.2026
    /
    Часы
    16 минут
    Глазик
    273
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0

    Почему оно тебе вообще надо, непринуждённое вступление

    Давай представим на минутку, что у тебя есть сайт. Хотя, наверное, некоторым и не надо представлять. И ты хочешь продавать свои услуги или товары, чтобы это сделать нужно как-то подключить платежи на сайт. Погуглив немного и пораспрашивав генеративные сети, ты скорее всего столкнёшься со следующей ситуацией - всё сложно.
    Всё сложно, особенно для моего региона и моих "товарищей" из Беларуси и России. Ну в общем, как всегда :)
    Тебе наверняка знакомы такие платёжные агрегаторы как PayPal, Stripe и Square. Они, как я считаю, являются отличными сервисами для владельцев маленьких сайтов, а так же для молодых и неопытных вебмастеров вроде меня. Их можно описать такой фразой: "Подключил и забыл". Увы, они сразу отпадают, ибо просто не работают в нашем регионе. Давай дальше.
    Есть ещё и наши аналоги, которые способны принимать платежи и просто заточены под местных вебмастеров. Так, в Беларуси есть монополист под названием bePaid. В России это YooMoney, QIWI, SBP, SberPay, ну и WebMoney, разумеется. Но есть пара нюансов, которые стоит учесть:
    1. Не все они способны принимать платежи со всего мира. Так, я уверен только в bePaid, ибо они это напрямую написали на своём сайте.
    2. Возможна интеграция на сайт только если ты ИП или Самозанятый. Но не физическое лицо.
    Вообще, нюансов гораздо больше и хотелось бы описать их по подробнее, но не об этом статья, а как ты уже догадался из заголовка статьи - об криптоплатежах и то как их реализовать развернув для этого, для начала, BTCPay сервер.
    Преимущества такого способа принятия оплаты следующие:
    1. Независимость как от политической ситуации, так и от банковской системы.
    2. Отсутствие комисий. То есть, смотря как реализовать криптоплатежи на сайте и будет зависеть будешь ли ты платить комисию или нет.
    Но недостатков у такого способа хватает тоже:
    1. Сложность реализации. Можно сделать проще и использовать различные агрегаторы и "шлюзы", но тогда первое преимущество улетучивается, да и второе тоже.
    2. Сложность использования. Да, не все умеют платить криптой и не стоит этому удивляться
    3. В некоторых странах это не законно. Ну если мы говорим про Беларусь, то здесь это чистая история.
    4. Проблема вывода средств. Не так уж и много сервисов позволяющих выводить криптовалюту в обычную валюту, смотри предыдущий пункт.
    5. Плохая репутация из-за всяких дамперов, спекулянтов, инвесторов, криптобро, крипто-пророков ну и обычных мошенников, как же без них.
    Честно скажу, это довольно много минусов, чтобы решить добавлять криптоплатежи на свой сайт. Но в моей ситуации это наверное единственный способ, ведь он требует от меня, на самом деле, только технические навыки и желание его реализовать. Да и независимость от банков и политики звучит заманчиво. Поэтому, эта статья будет посвящена реализации таких платежей на сайте.
    И как, собственно говоря это реализовать? Конкретно говоря, как я собираюсь такое реализовать на сайте? Ну, во-первых, не на этом сайте, а на отдельном VPS. А во-вторых, сделаю я это при помощи BTCPay Server, который и разверну на отдельном VPS. Общаться они будут используя REST API.
    BTCPay Server — это процессор криптовалютных платежей с открытым исходным кодом и самостоятельным хостингом, работает с биткойнами и альткойнами.
    VPS (Virtual Private Server) — это услуга аренды виртуальной машины, имитирующей работу физического сервера и благодаря виртуализации делит ресурсы с другими пользователями, при этом предоставляя полный контроль (root-доступ), собственную операционную систему и независимые ресурсы
    REST API (Representational State Transfer API) — это архитектурный стиль взаимодействия между клиентом и сервером, основанный на протоколе HTTP используя стандартные методы: GET, POST, PUT, DELETE

    Как выглядит общий процесс разворачивания такого сервера и требования к нему

    Сначала нужно купить/арендовать сервер. Это может быть как дешёвый VPS, так и выделенный сервер. Главное требование к серверу это размер выделенной памяти, ибо, для того чтобы хранить даже облегчённый узел биткойна, потребуется минимум 10-15 гигабайт.
    Есть такие понятия как лёгкий/облегчённый узел и полный/полноценный узел блокчейна. Суть в том, что полный узел хранит всю историю переводов пользователей и весит около 700-800 Гигабайт памяти. Потребуется достаточно большой размер диска, чтобы хранить такой объём. И соответственно очень дорогой. Поэтому есть так называемые лёгкие узлы, которые не хранят весь блокчейн, а только заголовки отдельных блоков и в зависимости от настроек BTCPay Server, его размер может варьироваться от 10-15 Гигабайт.
    Я так же рекомендовал бы использовать хотя бы 2 ядра и 4 гига оперативки. Это чтобы сервер не падал каждые 5 минут от перегрузки. Даже из таких требований выходит довольно дорого для самописной безделушки и даже так синхронизация облегчённого ядра может занять неделю :(
    После потребуется установить и настроить соответствующий софт для работы по проверке блоков. Так, потребуется установить следующие пакеты на сервер:
    1. Bitcoin Core. Собственно говоря, это твой кошелёк для хранения, зачисления и перевода средств.
    2. .Net SDK. Необходимая зависимость для компиляции и запуска, таких пакетов как NBXplorer и BTCPay Server.
    3. NBXplorer. Минималистичный UTXO трекер HD кошельков, для отслеживания текущего баланса и создания новых адресов для платежей.
    4. BTCPay Server. Для принятия платежей, вот.
    5. База данный PostgreSQL. Как для NBXplorer, так и для BTCPay Server
    6. Nginx веб-сервер. Для возможности общения сайта владельца с сервером на котором установлен BTCPay Server
    UTXO (Unspent Transaction Output) - это фундаментальная единица в криптовалютах, представляющая собой остаток криптовалюты после транзакции. Сдача, которая тоже записывается в блокчейн.
    PostgreSQL - это мощная, надежная и бесплатная объектно-реляционная система управления базами данных (СУБД) с открытым исходным кодом.
    Nginx - это высокопроизводительный веб-сервер и обратный прокси-сервер с открытым исходным кодом.
    В теории всё довольно просто, нужно установить необходимые пакеты и настроить их под свои нужды. После создать две отдельные базы данных для NBXplorer и BTCPay. Следующим шагом будет разворачивание Nginx веб-сервера для доступа из вне, то есть с моего сайта. И всё.
    Конечно, ещё нужно научиться работать с этим сервером через его API, и подключить к сайту. А именно создать соответствующие виджеты на сайте и разместить их. Но это гораздо проще, чем предыдущие шаги. Но хватит рассусоливаний и лишних рассуждений, давай приступим к настройке и подготовке сервера.

    Настройка и подготовка сервера

    Всё начинается с аренды сервера, как было сказано выше, единственным требованием к такому серверу является размер диска. Для наших нужд нужно как минимум 20 гигабайт. Не важно у какого провайдера ты приобретёшь данный сервер, данный гайд является провайдер-агностическим.
    Я буду использовать дистрибутив Debian 12, в качестве операционной системы для своего сервера. Официальная документация к BTCPay Server использует Ubuntu 20.04, но отличий, на самом деле между Debian и Ubuntu, не то чтобы много. В теории, такой сервер можно запустить и на Windows, но мы здесь не занимаемся такими извращениями.
    Предварительно, лучше упростить себе доступ к серверу и перейти к аутентификации при помощи SSH ключей. В этой статье я опущу данный процесс, но в этой статье ты сможешь ознакомиться с ним во всех деталях.
    Следующее, что необходимо сделать, так это то, как сделать на удалённом сервере привилегированного пользователя. Ни в коем случае не делаем ничего через root-пользователя. Опять же, подробно об этом процессе можно прочитать уже в статье про создание привилегированного пользователя на Linux машинах.
    После того, как создадим привилегированного пользователя установим такие базовые пакеты как:
    gitДля клонирования репозиториев на сервер
    wgetДля скачивания файлов/архивов с интернета в терминале
    vimТекстовый редактор в терминале
    tarУниверсальный архиватор и разархиватор архивов
    postgresql и postgresql-contribБаза данных
    nginxВеб сервер для доступа из вне
    certbot и python3-certbot-nginxСпециальный скрипт для генерации TTL/SSL сертификатов
    Имя пакетаОписание пакета
    !!! Возможно, некоторые пакеты уже установлены в систему, я не могу знать, какие провайдер установил по умолчанию, поэтому перечислю все, что необходимы.
    Делается это через одну команду:
    sudo apt-get update & sudo apt-get upgrade sudo apt-get install git wget vim tar
    После того, как была настроенна система/сервер то есть установленны необходимые пакеты, создан необходимый пользователь и упрощён и обезопасен доступ к серверу через SSH, можно приступать к установке и настройке непосредственных компонентов необходимых для работы BTCPay Server.
    Все дальнейшие действия на сервере я провожу под непривилегерованным пользователем - btcpay-user.

    Установка Bitcoin Core 28.1

    Начнём с установки того, что называют ядром биткойна. То что будет рассчитывать все проводимые транзакции в мире и какого в этом мире наше место. Установить архив с ядром можно здесь. Там же ты можешь увидеть все доступные для использования версии, и выбрать подходящую тебе. Я выберу самую последнюю версию, на момент написания данной статьи - это 28.1.
    Сделаем мы это так, скачаем соответствующий архив, разархивируем его и установим некоторые из бинарных файлов в директорию для приложений и исполняемых файлов. Можно скачать в виде скрипта или просто скопировать, вот содержимое данного скрипта:
    BITCOIN_VERSION="28.1" BITCOIN_URL="https://bitcoin.org/bin/bitcoin-core-28.1/bitcoin-28.1-x86_64-linux-gnu.tar.gz" BITCOIN_SHA256="07f77afd326639145b9ba9562912b2ad2ccec47b8a305bd075b4f4cb127b7ed7" # install bitcoin binaries cd /tmp wget -O bitcoin.tar.gz "$BITCOIN_URL" echo "$BITCOIN_SHA256 bitcoin.tar.gz" | sha256sum -c - && \ mkdir bin && \ sudo tar -xzvf bitcoin.tar.gz -C /usr/local/bin --strip-components=2 "bitcoin-$BITCOIN_VERSION/bin/bitcoin-cli" "bitcoin-$BITCOIN_VERSION/bin/bitcoind" rm bitcoin.tar.gz
    Мы установим bitcoind и bitcoin-cli. Первый нужно будет запустить как сервис на заднем фоне и обращаться к нему время от времени при помощи bitcoin-cli. Так же, потребуется предварительно настроить наше ядро. Для этого сделаем bitcoin.conf и поместим его в /etc/bitcoin. Создай директорию при необходимости.
    В bitcoin.conf, нужно записать следующие настройки:
    server=1 # need RPC for btcpay. rpcbind=127.0.0.1 # loopback is default for 0.18.0 but no harm making sure. whitelist=127.0.0.1 # for nbxplorer. rpcallowip=127.0.0.1/32 # loopback is default but again no harm. zmqpubrawblock=tcp://127.0.0.1:28332 # needed for lightning. zmqpubrawtx=tcp://127.0.0.1:28333 # needed for lightning. prune=5000 # Recommended if not enough disk space for full 600+GB blockchain.
    Необходимо ещё изменить права доступа к данному файлу:
    sudo chmod 644 /etc/bitcoin/bitcoin.conf
    Конфигурация ядра биткойна почти закончена, осталось только создать соответствующую службу и активировать её, чтобы она всегда перезапускалась при перезагрузке сервера. Файл службы я назову bitcoind.service и содержимое данной службы следующее:
    # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use # $ systemctl edit bitcoind.service # See "man systemd.service" for details. # Note that almost all daemon options could be specified in # /etc/bitcoin/bitcoin.conf, but keep in mind those explicitly # specified as arguments in ExecStart= will override those in the # config file. [Unit] Description=Bitcoin daemon Documentation=https://github.com/bitcoin/bitcoin/blob/master/doc/init.md # https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ After=network-online.target Wants=network-online.target [Service] ExecStart=/usr/local/bin/bitcoind -pid=/run/bitcoind/bitcoind.pid \ -conf=/etc/bitcoin/bitcoin.conf \ -datadir=/var/lib/bitcoind \ -startupnotify='systemd-notify --ready' \ -shutdownnotify='systemd-notify --stopping' # Make sure the config directory is readable by the service user ExecStartPre=!/bin/chgrp btcpay-user /etc/bitcoin # Process management #################### Type=notify NotifyAccess=all PIDFile=/run/bitcoind/bitcoind.pid Restart=on-failure TimeoutStartSec=infinity TimeoutStopSec=600 # Directory creation and permissions #################################### # Run as bitcoin:bitcoin User=btcpay-user Group=btcpay-user # /run/bitcoind RuntimeDirectory=bitcoind RuntimeDirectoryMode=0710 # /etc/bitcoin ConfigurationDirectory=bitcoin ConfigurationDirectoryMode=0710 # /var/lib/bitcoind StateDirectory=bitcoind StateDirectoryMode=0710 # Hardening measures #################### # Provide a private /tmp and /var/tmp. PrivateTmp=true # Mount /usr, /boot/ and /etc read-only for the process. ProtectSystem=full # Deny access to /home, /root and /run/user ProtectHome=true # Disallow the process and all of its children to gain # new privileges through execve(). NoNewPrivileges=true # Use a new /dev namespace only populated with API pseudo devices # such as /dev/null, /dev/zero and /dev/random. PrivateDevices=true # Deny the creation of writable and executable memory mappings. MemoryDenyWriteExecute=true # Restrict ABIs to help ensure MemoryDenyWriteExecute is enforced SystemCallArchitectures=native [Install] WantedBy=multi-user.target
    Первоначальный код службы можно найти здесь, единственное, что я изменил так это имя пользователя, его группу и путь до службы. После того как файл сервиса был успешно создан, переместим его в директорию служб и активируем его:
    sudo cp bitcoind.service /etc/systemd/system/ sudo systemctl enable bitcoind.service sudo systemctl start bitcoind.service sudo systemctl status bitcoind.service
    Всё должно получиться, если же нет, то смотри логи. Вывод в терминал должен помочь.
    Я разве что могу рассказать про самую распространённую ошибку с кодом 203. Этот код значит что служба была найдена и запущенна, но путь к исполняемому файлу (в этом случае это bitcoind) не найден. Обязательно перепроверь все пути.
    После запуска демона с той конфигурацией, которую мы задали в bitcoin.conf, он будет скачивать весь текущий блокчейн. Вернее, в нашем случае с указанием prune=5000 он скачает только заголовки блоков чтобы сэкономить место на сервере - это называется инициализация узла.
    Чтобы иметь возможность узнать статус синхронизации, можно использовать команду bitcoin-cli.
    bitcoin-cli -rpccookiefile=/var/lib/bitcoind/.cookie getblockchaininfo
    Это займёт некоторое время. Считай если дошло до 0.99 или 1.00 значений, узел синхронизирован. И так как это служба, которая работает в фоновом режиме, мы сможем продолжить работать над сервером. Например, скачать необходимую версию рабочих инструментов разработчика (или SDK) на сервер.

    Установка .Net SDK 8

    Нам нужно установить последнюю доступную версию т.е. 8. Дело в том, что и NBXplorer и BTCPay Server зависят от этих SDK, и на данный момент им необходима именно 8 версия, поэтому её и установим.
    SDK (Software Development Kit) - это набор подготовленных, платформо-специфичных инструментов, библиотек, документации и примеров исходников кода созданных специально для помощи разработчикам в разработке приложений для определённых платформ, ОС и языков программирования.
    Проблема лишь в том, что в официальных пакетных репозиториях у Debian такого пакета нет. Поэтому для начала необходимо добавить такой репозиторий, от Microsoft.
    wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
    С начала мы скачиваем deb пакет с серверов Microsoft, потом добавляем новое зеркало пакетов. И после удаляем, нет необходимости в его сохранении. Теперь нам должен быть доступен пакет dotnet-sdk-8.0
    Но всегда перед тем как использовать пакеты из других пакетных репозиториях, необходимо обновить пакетный менеджер, так:
    sudo apt-get update sudo apt-get install dotnet-sdk-8.0
    После установки, давай проверим установленную версию SDK, в результате команда должна вернуть номер текущей установленной версии SDK:
    dotnet --version
    Так как теперь у нас есть необходимые компоненты, можно приступить к компиляции и запуску NBXplorer.

    Установка NBXplorer

    Данное приложение позволяет отслеживать все транзакции направленные данный сервер. То есть если пошли платежи с твоего сайта на BTCPay Server, который мы развернём чуть позже. Но для начала, давай установим и скомпилируем данное приложение.
    cd ~ git clone https://github.com/dgarage/NBXplorer cd NBXplorer ./build.sh
    После того как приложение было установленно, нужно добавить новую базу данных для NBXplorer.
    Войдём в среду работы с базами данных на PostgreSQL:
    sudo -u postgres psql
    И создадим новую базу данных, делается это следующим образом:
    CREATE DATABASE nbxplorer TEMPLATE 'template0' LC_CTYPE 'C' LC_COLLATE 'C' ENCODING 'UTF8'; CREATE USER nbxplorer WITH ENCRYPTED PASSWORD 'urpassword'; GRANT ALL PRIVILEGES ON DATABASE nbxplorer TO nbxplorer; GRANT ALL ON SCHEMA public TO nbxplorer; ALTER SCHEMA public OWNER TO nbxplorer;
    База данных создана, значит можно создавать файл конфигурации nbxplorer.conf и копировать его в /etc/nbxplorer/ директорию. Содержимое nbxplorer.conf:
    ### Database ### postgres=User ID=nbxplorer;Password=urpassword;Application Name=nbxplorer;MaxPoolSize=20;Host=localhost;Port=5432;Database=nbxplorer;
    И скопировать файл в /etc/nbxplorer/:
    sudo mkdir /etc/nbxplorer sudo cp nbxplorer.config /etc/nbxplorer sudo chmod 644 /etc/nbxplorer/nbxplorer.config
    Мы сейчас связали созданную нами базу данных и NBXplorer приложение. И эта связка должна работать в фоновом режиме, чтобы постоянно следить за появлением новых транзакций и добавлять их в базу данных. Для этого создадим службу. Содержимое файла службы - nbxplorer.service:
    [Unit] Description=NBXplorer daemon Requires=bitcoind.service After=bitcoind.service [Service] WorkingDirectory=/home/btcpay-user/NBXplorer ExecStart=/home/btcpay-user/NBXplorer/run.sh --conf=/etc/nbxplorer/nbxplorer.conf User=btcpay-user Group=btcpay-user Type=simple PIDFile=/run/nbxplorer/nbxplorer.pid Restart=on-failure [Install] WantedBy=multi-user.target
    Просто замени везде btcpay-user на имя своего пользователя и эта служба уже будет готова к использованию на твоём сервере.
    Давай же создадим наконец данную службу:
    sudo cp nbxplorer.service /etc/systemd/system sudo systemctl enable --now nbxplorer
    Возможно у тебя выдало ошибку с кодом 134, в таком случае проверь запущен ли демон bitcoind. Это его прямая зависимость и NBXplorer не может работать без него.
    Вот таким образом запускается на сервере NBXplorer, не слишком тяжело правда? Остался последний демон, который нужно запустить - BTCPay Server.

    Установка BTCPay Server

    И начнём это со скачивания исходного кода с GitHub и компиляции самого приложения.
    cd ~ git clone https://github.com/btcpayserver/btcpayserver cd btcpayserver ./build.sh
    Дальше всё как в NBXplorer, создаём отдельную базу данный на PostgreSQL, добавляем файл конфигурации в систему, создаём и запускаем демона/службу в фоновом режиме.
    Заходим в интерактивную оболочку postgresql:
    sudo -u postgres psql
    Создаём базу данных:
    CREATE DATABASE btcpay TEMPLATE 'template0' LC_CTYPE 'C' LC_COLLATE 'C' ENCODING 'UTF8'; CREATE USER btcpay WITH ENCRYPTED PASSWORD 'urpassword'; GRANT ALL PRIVILEGES ON DATABASE btcpay TO btcpay; GRANT ALL ON SCHEMA public TO btcpay; ALTER SCHEMA public OWNER TO btcpay;
    Создаём файл конфигурации btcpay.conf, и вставляем туда следующее, предварительно поменяв на свои данные:
    network=mainnet chains=btc port=23000 bind=127.0.0.1 ### Database ### postgres=User ID=btcpay;Password=yourpassword;Application Name=btcpayserver;Host=localhost;Port=5432;Database=btcpay; ### NBXplorer ### # Указываем путь к куки-файлу явно, если он не находится автоматически btc.explorer.url=http://127.0.0.1:24444/ btc.explorer.cookiefile=/home/btcpay-user/.nbxplorer/Main/.cookie # Твоя строка для базы данных эксплорера explorer.postgres=User ID=nbxplorer;Password=yourpassword;Application Name=nbxplorer;MaxPoolSize=20;Host=localhost;Port=5432;Database=nbxplorer;
    Помещаем созданный файл конфигурации btcpay.conf в /etc/btcpay:
    sudo mkdir /etc/btcpay sudo cp btcpay.config /etc/btcpay sudo chmod 644 /etc/btcpay/btcpay.conf
    И теперь нужно запустить BTCPay работать в фоновом режиме, как службу, создай файл btcpay.service и запиши туда следующее, предварительно поменяв пути до исполняемых файлов и скриптов, а также имя пользователя и группы с btcpay-user на имя своего пользователя:
    [Unit] Description=BTCPay Server Requires=nbxplorer.service After=nbxplorer.service [Service] WorkingDirectory=/home/btcpay-user/btcpayserver Environment=BTCPAY_BTCEXTERNALRTL="server=https://mainnet.demo.btcpayserver.org/rtl;cookiefile=/var/lib/rtl/.cookie" ExecStart=/home/btcpay-user/btcpayserver/run.sh --conf=/etc/btcpay/btcpay.conf User=btcpay-user Group=btcpay-user Type=simple PIDFile=/run/btcpayserver/btcpayserver.pid Restart=on-failure [Install] WantedBy=multi-user.target
    Скопируем данный файл в директорию всех служб - /etc/systemd/system. Активируем его:
    sudo cp btcpay.service /etc/systemd/system/ sudo systemctl enable btcpay sudo systemctl start btcpay
    Чтобы проверить на корректность запуска и активации службы можно выполнить данную команду:
    sudo systemctl status btcpay
    А чтобы проверить журнал работы данной команды можно запустить вот такую команду:
    sudo journalctl -xe --unit btcpay --follow
    На этом, с минимально необходимыми компонентами, мы закончили. У нас есть всё необходимое для работы маленького узла в пиринговой, блокчейн системе для принятия платежей через криптовалюту. Но теперь, данный сервер необходимо открыть всему миру и делается это через веб сервер Nginx.

    Установка и настройка Nginx Веб сервера

    Важным требованием к данному серверу является его работа только через HTTPS протокол, иначе он может просто не запуститься.

    Создаём TTL/SSL сертификат

    Для этого нужно выпустить SSL сертификат, при чём не один раз, а постоянно. Делается это при помощи отличного CLI инструмента - certbot. Здесь есть полная инструкция того, как эту команду использовать, мы же просто сделаем так:
    HTTPS (Hyper Text Transfer Protocol Secured) - это защищенная версия протокола HTTP, обеспечивающая шифрование данных между браузером пользователя и веб-сайтом с помощью протоколов TLS/SSL
    SSL (Secure Sockets Layer) — это протокол безопасности, обеспечивающий зашифрованное соединение между веб-браузером пользователя и сервером сайта
    sudo certbot --nginx -d your.domain.name
    Не забудь подставить своё доменное имя. В моём случае я буду использовать btc-node.of.by.
    Я его купил с упором на то, что если данный способ оплаты будет пользоваться популярность и сама нода станет отличным посредником для ругих сайтов, то я во-первых буду его поддерживать, а во-вторых превращу его в полную 600 гиговую ноду.
    У тебя могут возникнуть трудности с данным этапом, так при покупке нового домена его ещё нужно будет привязать к твоей машине т.е. VPS. Делается это через DNS-записи A и АААА. Первая запись должна содержать домен и IPv4 твоего VPS, вторая запись тоже должна содержать домен и уже IPv6 того же VPS.
    Для того чтобы DNS-записи вступили в силу потребуется время. От Часа и до 24 часов. Поэтому придётся подождать.
    Чтобы проверить, что они вступили в силу, используй любой WhoIs инструмент где ты сможешь увидеть IP своего VPS сервера. Если таковой виден, значит ты успешно подключил свой домен к VPS, и теперь прописывая доменное имя в адресной строке браузера, ты на самом деле обращаешься к своему серверу на 80 порт - протокол HTTP.
    Зачем покупать домен, если можно использовать IP адрес напрямую? Дело всё в том, что сервер BTCPay может работать только через протокол HTTPS, но не HTTP. А чтобы перейти на данный протокол, необходимо выпустить сертификат, который может быть выпущен только для доменных имён, но не адресов.

    Запускаем Nginx веб-сервер

    Для этого создай файл btcpay-server.conf в /etc/nginx/sites-available и запиши следующую конфигурацию, предварительно поменяв везде btc-node.of.by на имя своего сервера:
    # If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the # scheme used to connect to this server map $http_x_forwarded_proto $proxy_x_forwarded_proto { default $http_x_forwarded_proto; '' $scheme; } # If we receive X-Forwarded-Port, pass it through; otherwise, pass along the # server port the client connected to map $http_x_forwarded_port $proxy_x_forwarded_port { default $http_x_forwarded_port; '' $server_port; } # If we receive Upgrade, set Connection to "upgrade"; otherwise, delete any # Connection header that may have been passed to this server map $http_upgrade $proxy_connection { default upgrade; '' close; } # Apply fix for very long server names server_names_hash_bucket_size 128; # Prevent Nginx Information Disclosure server_tokens off; # Default dhparam # Set appropriate X-Forwarded-Ssl header map $scheme $proxy_x_forwarded_ssl { default off; https on; } gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; log_format vhost '$host $remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; access_log off; # HTTP 1.1 support proxy_http_version 1.1; proxy_buffering off; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto; proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl; proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; client_header_buffer_size 500k; large_client_header_buffers 4 500k; # Mitigate httpoxy attack (see README for details) proxy_set_header Proxy ""; server { server_name btc-node.of.by; listen 80; access_log /var/log/nginx/access.log vhost; return 301 https://$host$request_uri; } server { client_max_body_size 100M; server_name btc-node.of.by; listen 443 ssl http2 ; access_log /var/log/nginx/access.log vhost; ssl_protocols TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_prefer_server_ciphers on; ssl_session_timeout 5m; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_certificate /etc/letsencrypt/live/btc-node.of.by/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/btc-node.of.by/privkey.pem; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/btc-node.of.by/fullchain.pem; add_header Strict-Transport-Security "max-age=31536000" always; #include /etc/nginx/vhost.d/default; # Here is the main BTCPay Server application location / { proxy_pass http://127.0.0.1:23000; } }
    В этой конфигурации мы перенаправляем все запросы по HTTP протоколу на HTTPS. Так же связываем наш веб-сервер с BTCPay Server через открытый ранее порт 23000, который мы указали явно в настройках btcpay.conf.
    Теперь создадим ссылку на данную конфигурацию в /etc/nginx/sites-enabled, удалим конфигурацию по умолчанию и перезапустим веб-сервер:
    sudo cd /etc/nginx/sites-enabled sudo ln -s ../sites-available/btcpay-server.conf btcpay-server.conf sudo rm -f ./default sudo systemctl restart nginx
    Удалить default конфигурацию необходимо только в sites-enabled, потому что если оставить данную конфигурацию, то сервер будет запускать сначала её, что помешает работе нашего сервера BTCPay.
    Если всё сделано правильно, то ты должен будешь увидеть страницу входа на сервер.

    Дополнительные улучшения к твоему BTCPay серверу

    Это была минимальная установка, необходимая для работы BTCPay сервера. Но её можно дополнить дополнительными элементами, такими как Tor и Lightning Network (Это будет рассмотрено в отдельной статье).
    Первый позволяет усилить безопасность передаваемых сообщений при совершении покупок в такой открытой и ненадёжной среде Интернет.
    Второй же позволяет ускорить совершение транзакций в крипте и увеличивает пропускную способность, т.е. количество одновременных совершаемых транзакций до миллиардов в секунду, в сравнении с 10 у изначального биткойна.

    Защита используя Tor

    Начнём пожалуй с защиты. Tor кроме того, что усилит безопасность передаваемых сообщений, он ещё и поможет с обходом NAT.
    NAT traversal (обход NAT) — это набор методов, позволяющих устройствам в частных сетях за NAT-маршрутизатором устанавливать прямые соединения через интернет, преодолевая ограничения трансляции адресов.
    Для этого установим сам тор:
    sudo apt-get install tor
    И отредактируем файл /etc/tor/torrc. Где нам потребуется раскоментировать следующие строки, чтобы всё заработало:
    1. ControlPort 9051
    2. CookieAuthentication 1
    3. CookieAuthFileGroupReadable 1 (Иногда его может и не быть, просто добавь рядом)
    Всё готово, теперь только добавим нашего пользователя в группу debian-tor и перезапустим соответствующие процессы:
    sudo usermod -a -G debian-tor btcpay-user sudo systemctl restart tor sudo systemctl restart bitcoind
    Чтобы проверить, работает ли наш bitcoind на onion адресе, можно использовать команду:
    bitcoin-cli getnetworkinfo
    В результате получишь такой вот ответ, где красным отмечен текущий onion адрес:

    Подводим итоги

    Вот я и закончил описывать процесс развёртывания BTCPay сервера на отдельном VPS. Это было долго, думаю ты с этим согласен. В этой статье мы смогли сами собрать все необходимые компоненты и объединить их в единую работающую структуру. Начиная с самого необходимого bitcoincore и продолжая наращивать на него nbxplorer и тот же btcpay server.
    В конце открыв доступ к нашему серверу используя Nginx веб-сервер. И дополнили картину, установив Tor.
    Я хотел ещё в этой статье описать процесс установки Lightning Network, но она и так сильно растянулась. Это будет рассмотрено в отдельной статье. В отдельной статье же и будет рассмотрен процесс практического использования такого вот сервера для нужд собственного сайта. Я покажу как можно будет добавить собственный кошелёк и как добавить кнопки оплаты на сайт.

    Не забудь поделиться, лайкнуть и оставить комментарий)

    Комментарии

    (0)

    captcha
    Отправить
    ЗАГРУЗКА ...
    Сейчас тут пусто. Буть первым (o゚v゚)ノ

    Другое

    Похожие статьи


    Как развернуть Django сайт на бегет хостинг (или VPS). Полная инструкция.

    Часы
    12.05.2024
    /
    Часы
    11.03.2026
    Глазик
    9023
    Сердечки
    3
    Соединённые точки
    1
    Соединённые точки
    2
    Соединённые точки
    0
    Это статья-инструкция о том как можно разместить django-сайт на beget. Показываю два способа (деплой на хостинге и деплой на VPS). Плюс, как настроить и подключить базу данных, почту, статику и …

    Как загрузить django сайт на хостинг от reg.ru

    Часы
    16.03.2025
    /
    Часы
    15.04.2026
    Глазик
    5815
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    2
    Соединённые точки
    0
    Как запустить django сайт на reg.ru с настройкай базы данных. Настроим переадресацию на HTTPS, на nginx, gunicorn, и работа с DNS

    Как загрузить django сайт на timeweb

    Часы
    24.07.2025
    /
    Часы
    15.04.2026
    Глазик
    3760
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    2
    Как развернуть django проект на хостинге от timeweb с созданием и настройкой базы данных, переадресации на HTTPS, nginx, gunicorn, плюс работа с доменами и DNS