I2P — это не TOR, не анонимайзер, а собственная сеть, свои сайты.
Прошло всего ничего с последней статьи о том как подключиться к ней (не буду вдаваться в подробности - сам хотел такую написать, но всё никак руки не доходили), и мне захотелось поэксперементировать.
Итак. Цель статьи как понятно из заголовка - установка и настройка своего хостинга с сайтом и пробросом его в i2p.
Имеется:
роутер i2p (настроенный по этой статье)
Безлимитный интернет.
Для справки и тех, кто в танке, на всякий пожарный:
$HOME - переменная, указывающая на домашнюю директорию в папку пользователя
$USER - переменная, обозначающая имя пользователя. В примерах ниже надо заменять на свои значения.
Ну.. поехали.
Для начала ставим LAMP. В интернете есть куча статей по настройке nginx в i2p, но я увы преверженец apache. Посему LAMP....
sudo apt-get install php5 apache2 mysql-server php5-mysql libapache2-mod-php5
Так сказать прожиточный минимум. Остальное подтянется. Не забудьте в mysql ввести пароль от root'a при установке. И хорошо запомнить его, для тех у кого нет памяти - лучше записать.
Теперь нам надо настроить Apache.
Для начала определимся. У меня сайт... эм.. блог... Эм.. страничка.. В общем не важно. Мне хватит и на /home метров 200... Посему буду его держать в папке с i2p.
Создаём папку $HOME/.i2p/eepsite/docroot/www - там у нас будет сайт.
Если он уже есть у вас, то его бэкапчик, или самораспаковывающийся архив суём туда. Если нет - ну и пофиг. Попозже к этому вернемся.
Поехали, нас ждёт Apache!
В теории тут настраивается всё просто.
Для копирования файла настройки из виртуального узла по умолчанию в новый файл (mysite) введите в командной строке следующую команду:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite
Отредактируйте в нем новый файл настройки (mysite):
sudo nano /etc/apache2/sites-available/mysite
Измените корневой узел документов, указав в нем новое местоположение:
/home/$USER/.i2p/eepsite/docroot/www/
Измените «Directory directive» путем замены <Directory /var/www/>
на <Directory /home/$USER/.i2p/eepsite/docroot/www/>
Сохраните файл mysite
Активация нового виртуального узла
Для отключения виртуального узла по умолчанию и включения нового узла запустите терминал и выполните следующие две служебные программы в окне терминала:
sudo a2dissite default && sudo a2ensite mysite
Перезапустите сервер HTTP Apache:
sudo service apache2 restart
Работа с несколькими проектами
После этого небольшого тюнинга по адресу http://localhost нам выводится содержимое папки «www». И если там что-то уже лежит, то это нам и покажут 8) Но порой работаешь сразу над несколькими проектами — и теперь нам необходимо создать домены в этой папке с соответствующими привязками.
Итак, идем в папку /etc/apache2/sites-available/ и создаем там файл vhosts.conf.
touch /etc/apache2/sites-available/vhosts.conf
После этого открываем его любым текстовым редактором и добавляем туда такой текст:
<VirtualHost *:80>
ServerName first.my
ServerAlias www.first.my
DocumentRoot /home/$USER/.i2p/eepsite/docroot/www/first.my
</VirtualHost>
<VirtualHost *:80>
ServerName second.my
ServerAlias www.second.my
DocumentRoot /home/$USER/.i2p/eepsite/docroot/www/second.my
</VirtualHost>
Сохраняем документ, идем в свою папку /home/$USER/.i2p/eepsite/docroot/www/ и там создаем соответственно папки first.my и second.my.
Далее открываем в текстовом редакторе файл /etc/hosts и добавляем в конце следующий текст:
127.0.0.1 first.my
127.0.0.1 second.my
После этого активируем vhosts.conf в apache:
cd /etc/apache2/sites-enabled/
sudo ln -s ../sites-available/vhosts.conf
Задача выполнена. Все, что теперь осталось — только перегрузить сервер.
sudo service apache2 restart
После этого, набрав в адресной строке адреса http://first.my или http://second.my Вы должны увидеть содержимое соответствующих папок.
mod_rewrite
PS как выяснилось позже, у установленного таким образом апача отсутствует mod_rewrite, что делает невозможным использование .htaccess. Решение:
sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/default
Меняем у элементов «AllowOverride NONE» на «AllowOverride ALL»
sudo services apache2 restart
Поздравляю. Тут кончается первая часть. Установка и настройка apache. Теперь можно положить свой сайт в /home/$USER/.i2p/eepsite/docroot/www/ если ещё не сделали конечно. Для тех, кто за NAT'om - рекомендую использовать например сервис noip - на данный момент он бесплатен, и на 1-м аккаунте одновременно можно держать до 3-х доменов, правда чтобы настроить надо натыкаться..
Кроме того там есть удобная утилита noip2, которую можно поставить из исходников... ИЛи из deb-пакета. Скачать скомпиленный уже пакетик можно тут (57,32 kb). При установке он запросит логин/пароль от учётной записи, ваше доменное имя и частоту обновления.
Теперь осталось только дообавить в /etc/crontab строчку
@reboot /usr/local/bin/noip2
Вуаля, всё должно работать. ЗЫ Это не является рекламой, если не доверяете noip, поставьте свой Dinamic DNS... Много информации про DynDNS есть на FreeDNS
Для дальнейшей простоты я буду называть "свой" сайт test.no-ip.biz. В сети i2p он будет носить имя test.i2p. Вы же не забудьте поменять их на свои.
Часть 2-ая. Настройка i2p. Зеркалирование блога на wordpress.
Помните начальную фразу про заворачивание Apache? Тоже самое надо сделать и для i2p.
nano $HOME/.i2p/eepsite/contexts/base-context.xml
И меняем значение переменной
<Set name="resourceBase">/home/$USER/.i2p/eepsite/docroot/</Set>
на
<Set name="resourceBase">/home/$USER/.i2p/eepsite/docroot/www/</Set>
Заходим в менеджер туннелей: 127.0.0.1:7657/i2ptunnel/index.jsp
Создаём новый серверный HTTP туннель:
Попадаем в настройки:
Теперь по пунктам:
- Название(N) и Описание(e) — Просто имя и описание туннеля. Ни на что не влияют.
- Адрес(H) и Порт(P) — Адрес и порт нашего веб-сервера. Мы будем ставить на 127.0.0.1 и порт 80.
- Имя веб-сайта(W) — Домен, на котором мы планируем держать сайт.
- Файл секретного ключа(k) — Файл, в котором будет храниться ключ, по которому генерируется адрес туннеля. Совет: после генерации файла (размер 663 байта) сразу сделайте его резервную копию, иначе, при его потере, вы потеряете доменное имя. Оно будет забито за вами, но вы не будете иметь к нему доступ.
Нажимаем «Сохранить». Затем «Запустить». После запуска идём в настройки туннеля и копируем Локальный адрес назначения(L). Он пригодится нам при регистрации в DNS.
Регистрация в DNS (красивый и бесплатный DNS в i2p)
Регистрация на сайте, предоставляющем hosts.txt в общем-то необязательна, ибо в I2P DNS является полностью распределённым. Клиенты сами обмениваются между собой «адресными книгами». Но уж если хочется, то… заходим на сервер stats.i2p и вводим свой хост [Имя веб-сайта(W)] и Локальный адрес назначения(L).
Регистрация завершена!
Через некоторое время ваш test.i2p будет доступен в сети i2p прямо по доменному имени!
Теперь начнём линковку....
Прежде, чем приступить к этой задаче, необходимо переделать туннель для сайта. Это несложно и делается в консоли управления. Сделайте у себя также, как на картинке, вставив свой адрес сервера, порт и домен.
Local destination создается автоматически. Больше на той странице менять ничего не надо. Сохраняйте (кнопка в самом низу страницы) и стартуйте этот туннель. После старта станет доступна кнопка Preview со ссылкой типа http://q3ekhqgqxnrgaeshsesdhdfhfsjhsf5vxlzoj76soarecgf3a.b32.i2p/ (не тыркайте зря, не работает, это ж пример). Если ваш сайт загружается по этой ссылке, то считайте вы уже прошли квест на четверть пути.
Теперь адаптация сайта под i2p. У меня - блог на Wordpress.
Для начала надо заменить все ссылки на сайте. Это можно сделать путем изменения записей в базе данных.
Подключитесь к базе данных и выберите вашу базу (моя называется wordpress):
# mysql -p
mysql> use wordpress;
Теперь необходимо найти таблицу опций
mysql> show tables;
У меня она называетя wp_options. У вас может быть имя таблицы с каким-нибудь другим префиксом, или вообще без него. Например, просто options. Когда вы нашли нужную таблицу пошлите 2 запроса, исправляющих параметры сайта. Их через админку wordpress не получится изменить.
mysql> pdate wp_options set option_value="/" where option_name="siteurl";
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update options set wp_option_value="/" where option_name="home";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Вуаля, теперь бОльшая часть ссылок будет работать правильно как в обычной сети, так и в i2p.
Следующий шаг это поиск абсолютных ссылок внутри сайта. Например, вот код меню, которое показывается посетителю моего сайта. Например:
<div id="menu">
<ul>
<LI><a href="/">Главная страница</a></LI>
</ul>
Остальное шаманство автор запретил выкладывать, чтобы не переписывать и не травить ему душу - просто выложу путь к его страничке. Этот аффтор очень щепетилен по поводу печенек для себя любимого, и до коле очень жаден, поэтому будьте людьми, покормите его, зайдя к нему на сайт, отключив AdBlock... он будет признателен!
Не забудьте посмотреть как выглядит ваш сайт в i2p.
Вот как это выглядит в итоге (ВНИМАНИЕ! Если не работает, значит я сплю, увы пока не накопил на домашний сервачёк):
chibiko.no-ip.biz
i2p: chibiko.i2p
PPS по мотивам:
http://www.wikireality.ru/
http://www.shpargalko.com/2010/03/01/i2p-nastrojka/
http://habrahabr.ru/post/97996/