Сайт теперь доступен как скрытый сервис 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-сайтов, они действительно раздвигают границы творчества в программной инженерии с учётом этих ограничений и природы 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
В чём выгода создавать один и тот же сайт дважды с разными именами хостов вместо использования относительных ссылок на контент в том же домене?