Всё описанное ниже — результат технического эксперимента. Материал не является рекламой, не призывает к каким-либо действиям, носит исключительно ознакомительный характер и подготовлен в рамках исследования.
Введение
The Open Network (TON) представляет собой высокопроизводительный блокчейн L1-уровня с шардированной архитектурой. В отличие от традиционного веба, где контент зависит от централизованных хостинг-провайдеров и DNS-регистраторов, TON Sites используют компонент TON Storage и протокол TON ADNL для создания полностью автономной экосистемы. Это позволяет развертывать веб-ресурсы, которые устойчивы к цензуре, защищены от DDOS-атак на уровне протокола и используют домены .ton в качестве криптографически доказуемых адресов.
В этой заметке предполагается что:
- сайт уже сверстан;
- в наличие есть сервер (debian/ubuntu);
- сверстанный сайт вращает nginx на сервере (наличие SSL сертификата не имеет значения);
- есть зарегистрированный домен .ton.
Установка tonutils-reverse-proxy
Что бы сеть TON поняла что домен существует, необходимо прикрутить ADNL адрес к доменному имени (звуит как-будто бы ничего нового). Для этого требуется установить tonutils-reverse-proxy из репозитрия на GitHub, которая как раз это и сделает. Для этого:
Создаем папку где всё это будет храниться и переходим туда:
sudo mkdir -p /home/tonutils && cd /home/tonutils
Выкачиваем tonutils-reverse-proxy под необходимую архитектуру и даём прав:
sudo wget https://github.com/tonutils/reverse-proxy/releases/latest/download/tonutils-reverse-proxy-linux-amd64
sudo chmod +x tonutils-reverse-proxy-linux-amd64
После устрановки делаем первый запуск:
./tonutils-reverse-proxy-linux-amd64 --domain YOUR-DOMAIN-NAME.TON
На экран выпадет QR-код для того что бы сеть TON прикрутила ADNL адрес к доменному имени (естественно за коммисию). Оплатить легче всего через Tonkeeper. После того, как оплата пройдет, в логах можно будет увидеть, что всё прошло удачно и сайт готов откликаться, следовательно доменное имя прикрутилось и сеть узнала о нем. Теперь останавливаем tonutils-reverse-proxy. После первого запуска создасться файл конфигурации рядом с бинарным файлом “config.json”.
Конфигурация
В “config.json” необходимо настроить свзять между tonutils-reverse-proxy и nginx. Для этого выставляем порт и адрес где nginx будет готов отдать сайт по умолчанию это “http://127.0.0.1:80/” по ключу “proxy_pass”. Если не нравится, то порт и интерфейс можно исправить на что-то свое:
sudo mcedit ./config.json
Далее говорим nginx, куда ему и что отдавать для этого правим конфигурацию:
sudo mcedit /etc/nginx/sites-available/site-directory
и добавляем новый сервер
server {
listen 127.0.0.1:80; # TON Proxy, same as in config.json
server_name YOUR-DOMAIN-NAME.TON; # TON domain
root /var/www/SITE-NAME;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Проверяем и перезапускаемя
sudo nginx -t
sudo systemctl restart nginx
Теперь можно запустить tonutils-reverse-proxy без дополнительных флагов. Конфигурация будет подтянута та, что лежит рядом, то есть “config.json”.
sudo ./tonutils-reverse-proxy-linux-amd64
Сайт должен стать доступным по адресу tonsite://YOUR-DOMAIN-NAME.ton. Скорее всего без VPN/Proxy зайти на него не получится.
Автозапуск
Что бы всё поднималось автоматически, создадим и пропишим конфигурацию автозапуска. В файл
sudo mcedit /etc/systemd/system/ton-proxy.service
вставляем:
[Unit]
Description=TON Reverse Proxy
Documentation=https://github.com/tonutils/reverse-proxy
After=network.target
[Service]
User=RUN_USER
NoNewPrivileges=true
ExecStart=/home/tonutils/tonutils-reverse-proxy-linux-amd64
WorkingDirectory=/home/tonutils/
Restart=on-failure
RestartPreventExitStatus=23
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
Перезашружаем список сервисов:
sudo systemctl daemon-reload
Включаем автозагрузку:
sudo systemctl enable ton-proxy
Перезапускаемся и смотрим статус:
sudo systemctl restart ton-proxy && sudo systemctl status ton-proxy