Сайт теперь доступен как скрытый сервис Tor по адресу .onion
Self-Hosting on the Dark Web

Автор рассказывает, как разместил свой сайт в сети Tor в качестве скрытого сервиса. Он объясняет, что адрес .onion выводится из публичного ключа, соединение шифруется end-to-end, а сертификаты и DNS не нужны. В статье приводится пошаговая настройка: правка torrc, запуск nginx на локальном порту и сборка второй копии сайта с onion-адресом в качестве base URL. Пайплайн деплоя автоматически синхронизирует clearnet- и Tor-версии.
Tor relays and encrypts your traffic as it passes through thousands of volunteer-run servers, so that no single party can link who you are to what you are doing; a hidden service extends that anonymity to the server itself.
- p4bl0
Мой личный сайт уже много лет хостится в Tor. Это легко сделать даже из дома за NAT, потому что с твоей точки зрения это исходящее соединение (что также делает это отличным способом выставить локальные сервисы, даже когда ты за NAT и у тебя нет статического IP), и по замыслу твой личный IP скрыт от посетителей.
Я писал об этом в 2600 почти десять лет назад (уже?!). Копию моей статьи можно найти здесь: https://pablorauzy.fr/outreach/2600/how-to-run-a-tor-hidden-...
Если у тебя есть Onion-копия твоего сайта, не забудь про HTTP-заголовок Onion-Location, который автоматически перенаправит пользователей Tor Browser на onion-версию сайта, даже если они зашли по обычному адресу в клирнете.
Если людям интересно, у меня также есть продолжение статьи про I2P: https://pablorauzy.fr/outreach/2600/how-to-run-an-i2p-hidden...
- ivanmontillam
Что мне действительно нравится в Onion-сайтах, так это то, что если они достаточно большие, оптимизация производительности становится реально специфичной для Tor. Несколько примеров:
- Встраивание ресурсов в base64 (img src для логотипа в шапке как base64, весь CSS должен быть inline и т.д.).
- Максимальное использование CSS (если используешь анимации и переходы, по возможности делай их на CSS, избегай JS для них).
- Убедись, что твой сайт в основном рендерится на бэкенде. Если у тебя будет JS, сайт должен работать и без него.
- Безопасность становится РЕАЛЬНО весёлой, в смысле, избегай XSS, CSRF, SQL-инъекций и любых других инъекций по максимуму.
Как кто-то резюмировал в другом комментарии[0], держи «болтливость» на минимальном уровне. Под болтливостью я понимаю: упакуй как можно больше данных в одно и то же Keep-Alive соединение. По возможности избегай новых HTTP-запросов, так как каждый из них может быть назначен на новый Onion-маршрут, что всё замедляет.
Если ты можешь доставить свой сайт в браузер за одно соединение, ты победил.
Меня всегда впечатляла производительность этих больших Onion-сайтов, они реально раздвигают пределы творчества в software engineering с учётом этих ограничений и природы Tor.
--
[0]: https://news.ycombinator.com/item?id=49872320
EDIT: Форматирование пунктов списка.
- basilikum
Вероятно, стоит добавить заголовок Onion-Location на клирнет-сайт, чтобы Tor Browser мог автоматически уведомлять посетителя об этом: https://community.torproject.org/onion-services/advanced/oni...
- mzajc
Помимо использования отдельного порта, я бы также посоветовал запускать скрытый сервис на bind-адресе, отличном от 127.0.0.1, на случай, если ты когда-нибудь разместишь что-то ещё на этом порту и забудешь отключить скрытый сервис:
> HiddenServicePort 80 127.13.37.1:8080
> listen 127.13.37.1:8080;
Таким образом, посторонние не смогут подключиться к сервису, привязанному к 127.0.0.1, если ты когда-нибудь решишь переиспользовать порт и забудешь отключить скрытый сервис.
Также нужно использовать отдельные порты и/или bind-адреса, если ты хостишь несколько скрытых сервисов и не хочешь, чтобы люди могли их сопоставить — если nginx не совпадёт с заголовком Host, он отдаст тот сайт, который идёт первым по алфавиту.
- dherls
В чём выгода создавать один и тот же сайт дважды с разными именами хостов вместо использования относительных ссылок на контент в том же домене?
- tombert
Я думал сделать это, когда сам хостил свой блог, исключительно потому что считал, что будет некий фактор аккуратности в том, чтобы честно сказать «у меня есть сайт в даркнете».
В итоге я перенёс блог на Cloudflare Pages в основном потому, что хотел использовать Cloudflare Workers для обработки комментариев, хотя всё ещё рассматривал возможность двойной публикации, просто чтобы всё ещё иметь право сказать, что я это сделал.
- coldblues
Я рекомендую людям также попробовать I2P и Yggdrasil, особенно Yggdrasil. Он не идёт на компромиссы по скорости и задержке, но у него нет анонимности.
- sowbug
В таком руководстве было бы полезно подчеркнуть необходимость резервного копирования сгенерированного приватного ключа, потеря которого заставит тебя сменить свой onion-адрес.