Предыстория: намедни написалась книжка относительно нового государственного строя (Государство-домен), который ждет нас в близком будущем. А поскольку Роскомнадзор реагирует на подобные вещи неадекватно – решил завести под свою писанину сайт в приватной сети i2p. По ходу создания пришлось решать некоторые технические вопросы, которые я ниже и рассмотрю, пытаясь сэкономить ваше время, заодно и шпаргалка мне будет.
Итак, имеется удаленный VPS под Ubuntu, и разместить сайт нужно именно на нем. Ибо, можно, конечно сделать его у себя на ноуте, но когда ноут выключен – сайт ведь недоступен (лично меня это неизменно раздражает в .i2p и .onion).
Далее я предполагаю, что ваш LAMP уже настроен, и нормально отдает контент в обычный интернет. Т.е. у вас на нем уже крутится пара-тройка обычных (не-i2p) сайтов.
Сначала ставим i2p на Ubuntu:
Конфигурируем i2p-роутер как постоянно работающий демон:
По ходу конфигурирования (через графический интерфейс) нужно будет ответить на несколько простых вопросов, ставите автозапуск, память я оставил по умолчанию 128 мб, в общем, думаю, с этим у вас проблем не возникнет.
По завершении конфигурирования i2p-демон запустится самостоятельно.
Теперь нам нужно, чтобы панель с веб-интерфейсом i2p-роутера была доступна удаленно. Для этого открываем файл
И меняем в нем
на
Где вместо
Ставите внешний IP вашего VPS. Есть еще вариант (от разработчиков i2p), где вы можете заменить на:
но я его не пробовал.
Теперь вам доступен веб-интерфейс для управления вашим удаленным i2p-роутером.
ПЕРВЫМ ДЕЛОМ идете на:
(вместо 80.80.80.80 подставьте IP вашего VPS) и устанавливаете логин-пароль (чтоб никто не уволок). Теперь доступ к веб-консоли имеете только вы (ну, я надеюсь на это).
В руководстве рекомендуют: «Пройдите на localhost:7657/index.jsp и нажмите на «Мягкий перезапуск», это перезапустит JVM и все приложения». Сделайте. Не забудьте вместо localhost подставить IP вашего VPS.
Теперь вот какой косяк с i2p под Ubuntu 16.04: в левой панели веб-консоли вы увидите надпись:
Это связано с тем, что Ubuntu 16.04 использует… в общем, вам нужно поставить другую Java, стабильную. Я выбрал вариант от Oracle.
и далее:
Теперь вам осталось создать новый HTTP-туннель к вашему сайту. Сделать это можно здесь:
(IP поменяйте только)
Выбираете в «Новый открытый сервис» — HTTP (стоит по умолчанию) и жмете «Создать». В поле
Указываете IP вашего VPS. Порт указываете тот, на котором работает сервер (скажем, apache2, обычно это 80 или 8080), и в поле:
Пишете что-то типа:
Ставите галку на автозапуск. По желанию меняете Название(N) и Описание(e).
Остальное не трогаете. Жмете на «Сохранить».
Вуаля! Теперь ваш сайт виден по 32-битному ключу-адресу (типа такого: pqajparec44p74uvpxvxhpd5u3neuqs2t4awwd6bcieku3juhwwa.b32.i2p ) в i2p сети. А если вы добавите ваш сайт в адресные книги различных сервисов, например, сюда: stats.i2p, то со временем и ваше доменное имя moysite.i2p, которое вы указали ранее, попадет в адресные книги остальных сервисов. И ваш сайт смогут находить уже напрямую по этому имени, или через jump-сервисы.
А хороший вопрос-то. В общем, я тоже тестировал установку на рабочем сервере с виртхостами и решил вопрос так: назначил сайту для i2p другой порт (который мы прописывали ранее при создании туннеля). Давайте сделаем это вместе. Открываете:
И пишете туда:
Например пусть у нас это будет порт номер 8088.
В другой конфиг:
Пишете что-то вроде:
(непременно закройте тег VirtualHost — на Хабре глюк с отображением этого куска кода)
DocumentRoot разумеется путь меняете на реальный, на тот где у вас собственно папка DocumentRoot для вашего i2p-сайта. Если нет такой – создайте. Сохраняете всё. Перезапускаете апач:
Если не хотите, чтобы ваш i2p-сайт был виден из обычного интернета, в каталог DocumentRoot кладете .htaccess следующего содержания:
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
Итак, имеется удаленный 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