Итак, имеется удаленный VPS под Ubuntu, и разместить сайт нужно именно на нем. Ибо, можно, конечно сделать его у себя на ноуте, но когда ноут выключен – сайт ведь недоступен (лично меня это неизменно раздражает в .i2p и .onion).
Далее я предполагаю, что ваш LAMP уже настроен, и нормально отдает контент в обычный интернет. Т.е. у вас на нем уже крутится пара-тройка обычных (не-i2p) сайтов.
Сначала ставим i2p на Ubuntu:
sudo apt-add-repository ppa:i2p-maintainers/i2p
sudo apt-get update
sudo apt-get install i2p
Конфигурируем i2p-роутер как постоянно работающий демон:
sudo dpkg-reconfigure -plow i2p
По ходу конфигурирования (через графический интерфейс) нужно будет ответить на несколько простых вопросов, ставите автозапуск, память я оставил по умолчанию 128 мб, в общем, думаю, с этим у вас проблем не возникнет.
По завершении конфигурирования i2p-демон запустится самостоятельно.
Теперь нам нужно, чтобы панель с веб-интерфейсом i2p-роутера была доступна удаленно. Для этого открываем файл
/var/lib/i2p/i2p-config/clients.config
И меняем в нем
clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/
на
clientApp.0.args=7657 80.80.80.80 ./webapps/
Где вместо
80.80.80.80
Ставите внешний IP вашего VPS. Есть еще вариант (от разработчиков i2p), где вы можете заменить на:
clientApp.0.args=7657 0.0.0.0 ./webapps/
но я его не пробовал.
Теперь вам доступен веб-интерфейс для управления вашим удаленным i2p-роутером.
ПЕРВЫМ ДЕЛОМ идете на:
http://80.80.80.80:7657/configui
(вместо 80.80.80.80 подставьте IP вашего VPS) и устанавливаете логин-пароль (чтоб никто не уволок). Теперь доступ к веб-консоли имеете только вы (ну, я надеюсь на это).
В руководстве рекомендуют: «Пройдите на localhost:7657/index.jsp и нажмите на «Мягкий перезапуск», это перезапустит JVM и все приложения». Сделайте. Не забудьте вместо localhost подставить IP вашего VPS.
Теперь вот какой косяк с i2p под Ubuntu 16.04: в левой панели веб-консоли вы увидите надпись:
Внимание: ECDSA недоступно. Обновите Java или ОС.
Это связано с тем, что Ubuntu 16.04 использует… в общем, вам нужно поставить другую Java, стабильную. Я выбрал вариант от Oracle.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
и далее:
sudo update-java-alternatives -s java-8-oracle
Теперь вам осталось создать новый HTTP-туннель к вашему сайту. Сделать это можно здесь:
http://80.80.80.80:7657/i2ptunnelmgr
(IP поменяйте только)
Выбираете в «Новый открытый сервис» — HTTP (стоит по умолчанию) и жмете «Создать». В поле
Точка доступа: Адрес(H):
Указываете IP вашего VPS. Порт указываете тот, на котором работает сервер (скажем, apache2, обычно это 80 или 8080), и в поле:
Имя веб-сайта(W):
Пишете что-то типа:
moysite.i2p
Ставите галку на автозапуск. По желанию меняете Название(N) и Описание(e).
Остальное не трогаете. Жмете на «Сохранить».
Вуаля! Теперь ваш сайт виден по 32-битному ключу-адресу (типа такого: pqajparec44p74uvpxvxhpd5u3neuqs2t4awwd6bcieku3juhwwa.b32.i2p ) в i2p сети. А если вы добавите ваш сайт в адресные книги различных сервисов, например, сюда: stats.i2p, то со временем и ваше доменное имя moysite.i2p, которое вы указали ранее, попадет в адресные книги остальных сервисов. И ваш сайт смогут находить уже напрямую по этому имени, или через jump-сервисы.
Но если мой сервер отдает несколько виртхостов на одном сокете, как я узнаю, какой домен будет виден в сети i2p?
А хороший вопрос-то. В общем, я тоже тестировал установку на рабочем сервере с виртхостами и решил вопрос так: назначил сайту для i2p другой порт (который мы прописывали ранее при создании туннеля). Давайте сделаем это вместе. Открываете:
/etc/apache2/ports.conf
И пишете туда:
Listen 8088
Например пусть у нас это будет порт номер 8088.
В другой конфиг:
/etc/apache2/sites-enabled/000-default.conf
Пишете что-то вроде:
<VirtualHost *:8088>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/moysite
ErrorLog ${APACHE_LOG_DIR}/error8088.log
CustomLog ${APACHE_LOG_DIR}/access8088.log combined
</VirtualHost>
(непременно закройте тег VirtualHost — на Хабре глюк с отображением этого куска кода)
DocumentRoot разумеется путь меняете на реальный, на тот где у вас собственно папка DocumentRoot для вашего i2p-сайта. Если нет такой – создайте. Сохраняете всё. Перезапускаете апач:
sudo service apache2 restart
Если не хотите, чтобы ваш i2p-сайт был виден из обычного интернета, в каталог DocumentRoot кладете .htaccess следующего содержания:
Order deny,allow
Deny from all
Allow from 80.80.80.80
80.80.80.80 – меняете на IP своего VDS.
Идете на stats.i2p и добавляете ваш сайт в тамошний сервис.
После добавления ваш сайт становится доступен, например, так:
stats.i2p/cgi-bin/jump.cgi?a=r.i2p
(это адрес сайта, который я и сделал)
И да, в общем-то, более логично, не размещать i2p-сайт на рабочем VPS. Лучше взять под i2p что-то отдельное. Ну, мне так видится.
Если есть доп. вопросы по установке – велком в каменты.
Ссылки на использованные доки:
> geti2p.net/ru/faq
> help.ubuntu.ru/wiki/i2p
> help.ubuntu.ru/wiki/java
Комментарии (14)
Erelecano
01.05.2017 22:40+3Жаба и апач?
Да вы — знатный изощренец.
i2pd и nginx вам в помощь
https://i2pd.readthedocs.io/en/latest/tutorials/http/#host-anonymous-website
Всех настроек i2pd
Put in your ~/.i2pd/tunnels.conf file:
[anon-website]
type = http
host = 127.0.0.1
port = 8080
keys = anon-website.dat
Ну а nginx и обезьяна настроить может, даже ссылок давать не буду.procode
01.05.2017 23:02позитивчик )
спасибо.Erelecano
02.05.2017 10:17+1Просто i2pd все же менее прожорлив, ибо C++, а не жава, так что лучше использовать его. Да и плясок с ним меньше, как мы из доки видим. Если я ничего не путаю, то автор i2pd где-то тут на Хабре обитается, но я сходу не вспомню его ник, может увидит тему про i2p и сам придет, объяснит чем еще i2pd лучше реализации на жаве.
UPD: orignal — автор i2pd, я нашел его!procode
02.05.2017 22:31Устанавливал по этому мануалу: https://habrahabr.ru/post/275643/ — куча ворнингов на этапе make и вылетел с allocated memory (на свежем VPS с 1 гигом оперативы).
Попытался установить с пакета .deb — тоже чего попало началось. Не может открыть какой-то там файл и прочая хрень. Потом еще полчаса вычищал эту гадость с системы (оно себя по разным папкам раскидало :)
Наверное если хорошо в этом понимать и иметь свободный день-два — настроить его как-то и можно, но уже совершенно не хочется.
Почему нельзя было сделать apt-get install i2pd и чтобы оно сразу работало, как в этом сабже?
krpl
02.05.2017 17:01Очень плохая идея открывать web интерфейс i2p таким способом:
http://x.x.x.x:7657/configui
- Пароль будет передаваться в открытом виде по http.
- Факт коннекта с вашего ip на порт 7657 i2p ноды увидят и запишут в лог все кому не лень.
Блокировать такие вещи через .htaccess тоже идея так себе. Целесообразнее написать правило iptables которым запретить коннекты к 8088 всем кроме 127.0.0.1
procode
03.05.2017 01:51Кстати, а что вы предлагаете в качествеальтернативы веб-интерфейсу? Конфиги править?
krpl
03.05.2017 05:33Получать доступ к нему более безопасным способом. Например через ssh туннель или OpenVPN. Или через https (в nginx это называется proxy_pass, когда ваш браузер коннектится к nginx на вашем VPS по https (пусть даже с самоподписаным сертификатом) а он уже к порту 7657 процесса i2p по http). Выбор большой…
procode
03.05.2017 07:37Звучит разумно, да. Можно и через Tor по идее… В общем, выбор действительно есть :) Спасибо.
KonstantinSpb
Делать сайт в ZeroNet, нет? Правда, как там поведут динамические сайты (LAMP) не в курсах
procode
Впервые услышал. Прогуглил. Занятно. Возможно по факту тестирования напишу нечто подобное и про создание сайта в ZeroNet :)
Спасибо.