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

Введение

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