Установка сервера BTCPay на Ubuntu 22.04/20.04 с помощью Docker
08:30, 21.12.2023
Если вы собираетесь использовать свой сервер для продажи услуг людям тем или иным способом, то вам наверняка понадобится организовать возможность проведения платежей с помощью специального платежного процессора. Если вас особенно интересуют платежи в биткойнах (и альткойнах), то вам понадобится криптовалютный платежный процессор, и BTCpay может оказаться тем самым решением, которое вы ищете. Если вас привлекло именно это решение, вы сможете установить его, следуя приведенному ниже руководству.
Введение в сервер BTCPay
Одним из главных преимуществ BTCpay заключается в том, что сервер не требует привлечения стороннего платежного процессора. Его пиринговая (p2p) природа обеспечивает большую гибкость и независимость, а также исключает возможность цензуры. Кроме того, данное решение обладает целым рядом дополнительных преимуществ:
- Децентрализация и суверенитет: Поскольку BTCpay является самостоятельным хостингом, вы и только вы полностью отвечаете за свои платежные процедуры. Такая автономия дает целый ряд ценных преимуществ. Например, отсутствует цензура, и ваш счет не может быть приостановлен.
- Нет дополнительных комиссий: Поскольку вы сами обеспечиваете работу платежного процессора, который вы размещаете на своем хостинге, нет никого, кто бы требовал от вас уплаты комиссий.
- Приватность: BTCPay не требует от пользователей предоставления личной информации.
- Безопасность: Благодаря тому, что решение имеет открытый исходный код, оно в первую очередь ориентировано на сообщество и регулярно проходит проверки безопасности. По этой причине оно обладает достаточно высокой устойчивостью к атакам. Кроме того, вы несете единоличную ответственность за свои закрытые ключи, что является еще одним вкладом в общий уровень безопасности.
- Кастомизация: BTCPay обладает широкими возможностями кастомизации, и вы можете свободно настраивать его в соответствии с вашим видением бизнеса, предоставляя своим клиентам уникальный опыт оплаты.
- Сообщество и экосистема: BTCPay имеет обширное сообщество пользователей, которое предоставляет вам доступ к надежной поддержке, богатой документации и плагинам для любого случая использования, что опять же дает вам свободу действий для настройки обработки платежей в соответствии с вашим личным видением.
- Минимальные нормативные требования: Поскольку в BTCPay не задействованы централизованные учреждения, у вас будет гораздо меньше трудностей с точки зрения соблюдения нормативных требований. Это особенно актуально, если в вашей стране действуют строгие финансовые правила.
- Простая интеграция: Платформа легко интегрируется с целым рядом распространенных платформ электронной коммерции - WooCommerce, Shopify, Magento и некоторыми другими.
- Поддержка кошельков с несколькими подписями: BTCPay поддерживает кошельки с несколькими подписями, что обеспечивает повышенную безопасность хранения криптовалюты.
- Интеграция с Lightning Network: BTCPay, помимо прочего, обеспечивает поддержку Lightning Network. Lightning Network - это решение второго уровня масштабирования для Bitcoin, которое позволяет ускорить проведение транзакций и одновременно повысить их экономическую эффективность.
Требования к серверу
BTCPay требует, чтобы ваш сервер обеспечивал следующие мощности:
Использование BTCPay Docker значительно упростит установку BTCPay, поэтому мы выбираем именно этот подход.
В репозитории программного обеспечения Ubuntu уже должен быть установлен docker. Тем не менее, чтобы убедиться в том, что установленная версия является последней, можно установить ее из APT-репозитория Docker.
- Подключите ваш сервер по SSH
- Выполните команду для добавления репозитория Docker на ваш сервер:
echo "deb [signed-by=/etc/apt/keyrings/docker.gpg.key arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
- Импортируйте GPG-ключ Docker в систему Ubuntu. Таким образом, APT сможет проверить целостность пакета:
wget --quiet -O - https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.gpg.key
- Установите пакет apt-transport-https и ca-certificates:
sudo apt install apt-transport-https ca-certificates
- Обновите индекс пакетов и установите Docker Community Edition
sudo apt update
sudo apt install docker-ce
Это должно завершить установку Docker. Убедиться в этом можно, проверив статус:
systemctl status docker
Если Docker не запустился, его можно запустить следующим образом:
sudo systemctl restart docker.socket
sudo systemctl restart docker.service
Чтобы он запускался автоматически при каждой загрузке системы:
sudo systemctl enable docker
Для проверки версии:
docker -v
Шаг 2: Настройка Docker-контейнера BTCPay
- Переключитесь на root:
sudo su -
- Скопируйте репо BTCPay Server с GitHub:
sudo apt install git
cd ~
git clone https://github.com/btcpayserver/btcpayserver-docker.git*
Вы сможете найти его в разделе ~/btcpayserver-docker. Перейдите туда:
cd ~/btcpayserver-docker/
- Выполните каждую из этих команд отдельно. Таким образом вы установите некоторые необходимые переменные окружения
export BTCPAY_HOST="btcpay.example.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_REVERSEPROXY="empty"
export BTCPAYGEN_EXCLUDE_FRAGMENTS="$BTCPAYGEN_EXCLUDE_FRAGMENTS;nginx-https"
export BTCPAYGEN_LIGHTNING="lnd"
export BTCPAY_ENABLE_SSH=true
Примечания:
BTCPAY_HOST: btcpay.example.com следует заменить на имя вашего хоста.
NBTICOIN_NETWORK: вы можете выбрать mainnet, testnet или regnet.
BTCPAYGEN_CRYPTO01: отвечает за выбор поддерживаемой монеты. Здесь мы добавили биткоин, в дальнейшем вы можете добавить другие монеты.
BTCPAYGEN_REVERSEPROXY: Выбираем либо nginx, либо traefix, либо emtpy.
BTCPAYGEN_EXECLUDE_FRAGMENTS: Отключение генерации сертификатов TLS. В дальнейшем может быть установлен бесплатный Let's Encrypt TLS.
BTCPAYGEN_LIGHTING: Выберите lnd или clightning, чтобы включить поддержку сетей lightning.
BTCPAY_ENABLE_SSH: Включите управление авторизованными ключами SSH для BTCPAY.
Переменные окружения могут быть проверены с помощью:
echo $BTCPAY_HOST
Установка Docker-контейнера BTCPay:
. ./btcpay-setup.sh -i
Проверка состояния службы systemd:
sudo systemctl status btcpayserver.service
Проверка контейнеров Docker:
sudo docker ps
По умолчанию Docker-контейнер btcpayserver/btcpayserver не должен открывать порт для хостовой ОС. Чтобы исправить это, откройте файл docker-compose в предпочтительном редакторе (здесь nano):
nano ~/btcpayserver-docker/Generated/docker-compose.generated.yml
В секции btcpayserver добавьте в разделе "ports:":
- "49392:49392"
Сохраните и выйдите. Перезапустите службу btcpayserver.service:
sudo systemctl restart btcpayserver
Теперь можно еще раз проверить состояние Docker-контейнера:
sudo docker ps
Теперь порт хостовой ОС (49392) должен быть сопоставлен с портом 49392 Docker.
Шаг 3: Настройка обратного прокси-сервера Nginx
- Установите веб-сервер Nginx из стандартного репозитория Ubuntu:
sudo apt install nginx
- Создайте файл виртуального хоста для сервера BTCPay.
sudo nano /etc/nginx/conf.d/btcpay-server.conf
- Настройте Nginx в качестве обратного прокси. Внутри конфигурационного файла btcpay добавьте следующую конфигурацию. Замените btcpay.example.com на имя вашего домена или IP-адрес сервера:
server {
listen 80;
server_name btcpay.example.com;
location / {
proxy_pass http://127.0.0.1:23000; # Порт BTCPay по умолчанию - 23000
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Если ваш BTCPay работает на другом сервере и использует другой порт, необходимо соответствующим образом настроить proxy_pass.
- Создайте символическую ссылку на конфигурационный файл Nginx в каталоге /etc/nginx/sites-enabled/ для включения сайта:
sudo ln -s /etc/nginx/sites-available/btcpay /etc/nginx/sites-enabled/
- Перед применением изменений проверьте конфигурацию Nginx на наличие синтаксических ошибок:
sudo nginx -t
- Если в тексте не появилось ошибок, перезагрузите Nginx для применения изменений:
sudo systemctl reload nginx
- Брандмауэр: Убедитесь, что брандмауэр сервера разрешает входящий трафик на порт 80. Для разрешения HTTP-трафика может потребоваться настройка параметров брандмауэра, например, UFW и других.
- Доступ к BTCPay: Убедитесь, что BTCPay теперь доступен с вашего доменного имени или IP-адреса сервера, что он работает правильно и без ошибок.
Шаг 4: Включение HTTPS для сервера BTCPay
Включение протокола HTTPS (SSL/TLS) позволит вам воспользоваться преимуществами повышенной конфиденциальности и безопасности при передаче данных как для вас, так и для ваших клиентов. Первым шагом здесь является получение SSL-сертификата, который можно получить у Let's Encrypt, надежного центра, предоставляющего бесплатные сертификаты безопасности. После этого необходимо следовать приведенным ниже инструкциям, чтобы действительно включить HTTPS.
- Установите Certbot: Certbot - это удобный инструмент, который можно использовать для автоматического получения или обновления SSL-сертификата от Let's Encrypt. Чтобы установить его, вставьте:
sudo apt update
sudo apt install certbot python3-certbot-nginx
- Зяапустите Certbot для выполнения установки SSL-сертификата:
sudo certbot --nginx -d yourdomain.com
- Настройте сервер BTCPay для работы с полученным SSL. Для этого зайдите в веб-интерфейс вашего сервера BTCPay по протоколу HTTPS. Войдите в свой аккаунт BTCPay и перейдите к настройкам аккаунта. Обновите "URL-адрес сервера" и установите свой домен с префиксом "https://". Сохраните изменения и перезапустите сервисы BTCPay.
- Поскольку сертификаты Let's Encrypt действительны только в течение 90 дней, полезно настроить для них автообновление в Certbot. Certbot делает это через задание cron. Чтобы проверить это:
sudo crontab -l
Найдите задание обновления Certbot. Не добавляйте его самостоятельно:
sudo certbot renew --quiet
- Протестируйте настройку HTTPS. Для этого зайдите на свой сервер по защищенному URL. Соединение должно быть безопасным, а SSL-сертификация - действительной.
Шаг 5: Вход в веб-интерфейс сервера BTCPay
Перейдите по адресу https://btcpay.example.com. Здесь вы можете зарегистрировать свою учетную запись администратора, если вы еще не сделали этого. После этого регистрация новых пользователей будет отключена, если вы не захотите включить ее снова. Дождитесь синхронизации узлов (это видно в правом нижнем углу). После этого можно смело изучать интерфейс и возможности BTCPay.
Шаг 6: Управление сервером BTCPay
Первое, что вам необходимо сделать, - это создать магазин. Для этого нажмите соответствующую кнопку в интерфейсе. Магазин отвечает за прием платежей.
После этого необходимо настроить кошелек. Можно добавить уже существующий или создать его на BTCPay.
Вы можете выбрать между горячим кошельком, где приватные ключи хранятся на сервере, что удобно, но потенциально более подвержено взлому, и кошельком watch-only, который обеспечивает более высокий уровень безопасности, так как приватные ключи удаляются с сервера и хранятся вне его.
Далее вы можете выбрать один из 4 типов адресов.
Последнее, что необходимо сделать, - настроить узел lightning. Здесь можно использовать либо внутренний узел молнии BTCPay, либо собственный режим lightning.
Заключение
BTCPay - это отличное решение, если вы хотите добавить криптовалютные платежи в свой магазин электронной коммерции. Мы надеемся, что данное руководство было достаточно полным, и теперь у вас настроен рабочий аккаунт BTCPay. Спасибо за внимание, оставайтесь с нами.