Below is quick copy of aum's I2P Site deployment guide.

1. - Установите локальный сервер
  • Для простоты мы рассмотрим процедуру настройки для веб-сервера; тем не менее, эта процедура одинакова вне зависимости от того, серверы и/или клиенты для каких протоколов вы устанавливаете.
  • Я рекомендую использовать веб-сервер Tiny Httpd, thttpd, (на сайте доступна windows-версия), но вы можете использовать то, что удобно вам.
  • Другим более стойким вариантом является использование EasyPHP, также с открытым исходным кодом. EasyPHP поставляется вместе с PHP, PHPmyadmin, mySQL, и веб-сервером Apache. Для новичков, если нет опыта по настройке и размещению контента на серверах, рекомендуем просмотреть страницу о хостинге для справки.
  • Настройте выбранный вами веб-сервер на нужный порт и корневую директорию с веб-документами. В этом примере будет использоваться порт 10880.
  • Убедитесь, что ваш межсетевой экран запрещает входящие соединения на этом порту (что нарушило бы вашу анонимность).
  • Попробуйте открыть при помощи вашего обычного браузера (того, у которого "прямое соединение") страницу по адресу http://localhost:10880 для проверки работы веб-сервера (при необходимости замените 10880 на выбранный вами порт).
  • Когда убедитесь, что ваш веб-сервер работает корректно и вы можете зайти на него локально из браузера - переходите к следующему шагу.
2 - Генерация I2P пары ключей назначения
  • Внутренняя сеть I2P не использует IP-адреса. Для защиты вашей анонимности она использует уникальные адреса, называемые ключами назначения.
  • Ключ адреса назначения работает почти как обычные IP-адреса, исключая возможность отследить его до вашего реального IP-адреса или действительного местонахождения. Когда пользователи отправляют запрос на связь с вами, то шлюзы отвечают за вас. Таким образом, пользователь, который отправил запрос, может узнать только IP-адреса шлюзов. Однако, шлюзы не знают ваш IP-адрес, так как шлюзы являются последними узлами туннелей, и вы анонимно создаете туннели с помощью чесночной маршрутизации. (Шлюзы как марионетки, которые не могут видеть кукловода, при этом все используют их для общения)
  • Для развертывания сервера в I2P вы создаете пару ключей назначения. Закрытый ключ используется для аутентификации вашего сервера при его подключении к I2P. Открытый ключ (ключ назначения) публикуется, чтобы клиенты могли соединяться с вашим сервером (не напрямую, через ваши шлюзы)
  • Каждый сервис, который вы запускаете в I2P, требует отдельной пары ключей.
  • Выполните следующую команду для генерации пары ключей: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" (в одну строку)
  • Выполните следующую команду для генерации пары ключей, если вы используете Windows: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat"
  • Имена файлов myWebPrivKey.dat и myWebPubKey.dat не обязательно должны быть именно такими - задайте свои, если хотите, но не забывайте о своём выборе.
  • Теперь нам нужно экспортировать публичный ключ, закодированный в base64, для последующей его публикации.
  • Чтобы закодировать ваш myWebPubKey.dat в base64 для публикации и обмена, выполните такую команду java -cp lib/i2p.jar net.i2p.data.Base64 encode myWebPubKey.dat > myWebPubKey.txt (в одну строчку).
  • Файл myWebPubKey.txt, который вы только что сгенерировали, содержит длинную base64-строку (516 символов по нашим подсчётам), которая называется ключом назначения. На текущий момент всё, что вам нужно знать об этой строке - это то, что она позволяет удалённым клиентам однозначно определить и соединиться с вашим сервером точно так же, как IP-адрес позволяет удалённым устройствам определять ваш компьютер и соединяться с ним.
  • Но в отличие от IP-адреса при использовании ключа назначения невозможно определить физическое местонахождение вашего устройства; IP-адрес вашего сервера не может быть отслежен или связан с этим ключом назначения даже несмотря на то, что ваш сервер доступен в I2P.
3 - Создайте "Туннель" из I2P к вашему серверу
  • Для того, чтобы клиенты из I2P смогли получить доступ к вашему серверу, вы должны открыть "мост" или "туннель", который направляет соединения от этих клиентов на ваш локальный сервер.
  • Для активации этого туннеля выполните команду java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" (в одну строчку).
  • Если вы использовали другие имена для файлов или номер порта - измените их и здесь
  • Пользователи Windows - не забудьте заменить апострофы на двойные кавычки. Т.е.: java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat"
  • В течение нескольких секунд "туннель" должен активироваться, и удалённые клиенты смогут соединяться с вашим сервером анонимно. Не забудьте дать маршрутизатору время "разогреться" перед тем, как приглашать посетителей.
4 - Обновите свой hosts.txt
  • Для тестирования вашего сервера локально потребуется создать запись в hosts.txt, чтобы сеть I2P могла преобразовать вводимый в браузере URL в полный открытый ключ, необходимый для обнаружения сервера.
  • Отредактируйте hosts.i2p: добавьте строку myserver.i2p=blahblahblah, где myserver.i2p — 'домен' в I2P, на котором вы хотите разместить сайт, а blahblahblah — открытый ключ в виде base64, который вы создали ранее в файле myWebPubKey.txt
  • Если всё указано верно, вы и другие пользователи смогут связаться с вашим сервером, введя доменное имя myserver.i2p в адресную строку браузера.
5 - Зайдите на свой сайт в I2P
  • Укажите вашему второму браузеру - тому, который вы настроили на использование localhost:4444 в качестве прокси-сервера - посетить адрес http://myserver.i2p
  • Вы должны увидеть стартовую страницу своего веб-сервера.
6 - Создайте локальное соединение через клиентские туннели
  • Теперь пора задуматься о чём-то большем, чем просто веб-серверы.
  • Когда вы ближе познакомитесь с I2P, вы захотите пользоваться всякого рода серверами и клиентами.
  • Прелесть I2P заключается в том, что она позволяет вполне обычным клиентам и серверам большинства протоколов работать без особой перенастройки путём их 'туннелирования' через анонимную сеть.
  • Вы можете использовать почтовые серверы/клиенты, серверы/клиенты разрешения имён, новостные серверы/клиенты - практически всё - возможно, даже FTP в пассивном режиме.
  • Теперь создадим клиентский туннель. Он похож на серверный, созданный нами ранее, но работает в обратном направлении. Он ждёт соединений на определённом порту на вашем компьютере; ваш локальный клиент соединяется с этим портом; соединение перенаправляется через I2P к сервису на другом конце туннеля.
  • Для открытия клиентского туннеля для сервера наберите команду code>java -jar lib/i2ptunnel.jar -nogui -e "config localhost 7654" -e "client 10888 textofbase64key" (всё одной строкой)
  • Порт 10888 выбран произвольно - он просто должен отличаться от порта, на котором ожидает соединений ваш сервер.
  • textofbase64key — это содержимое текстового файла myWebPubKey.txt, воспроизведенное полностью в одну линию (как вариант, вместо textofbase64key можно выбрать имя из hosts.txt, например, myserver.i2p)
  • Клиентский туннель с вашего компьютера в I2P откроется и будет готов к использованию через пару минут после выполнения этой команды.
  • Зайдите браузером (не тем, который настроен использовать localhost:4444) на http://localhost:10888
  • Удостоверьтесь, что главная страница вашего сервера отображается в браузере.
  • Использование локальных клиентских программ для доступа к удаленному серверу I2P ничем не отличается от обычной процедуры: получаете открытый ключ удаленного сервера в виде base64 (ключ адреса назначения), выбираете локальный порт для соединения с удаленным сервером, открываете туннель, просто подсоединяетесь клиентской программой и получаете доступ к вашему любимому контенту.
7 - Поделитесь адресом вашего сервера
  • Используя анонимные средства (например, один из I2P IRC-серверов или ugha's wiki), сообщите доменное имя (например, www.mynick.i2p вместе с ключом адреса назначения. После этого другие пользователи смогут соединиться с вашим сервером без риска для вашей и их анонимности.
  • Помните, что вы можете зайти на What's on I2P и найти самые последние публичные ключи, привязанные к URL. Вы также должны разместить там свои публичный ключи и URL. Разумеется, вы захотите сделать это анонимно. Drupal.i2p.net в настоящее время, по состоянию на момент написания этого текста, доступен только из сети. Таким образом, для того чтобы получить доступ к внешней сети WWW анонимно из внутренней I2P, вам придется запустить ваш скрипт под названием startSquid. Сделайте это таким же образом, как вы делали другие скрипты. Перенастройте свой браузер на прокси localhost:5555, как определено в скрипте, и когда скрипт сгенерирует свои ключи, вы сможете получить доступ к прокси-приманке. Вставьте любой URL (например, Google или этот i2p-сайт) в адресную строку браузера и вы будете серфить в интернете анонимно. Сейчас вы можете безопасно указывать ваш публичный ключ, и никто не узнает ваш IP-адрес.
8 - Написать скрипты, чтобы справиться со всем этим беспорядком
  • Если проходить через эти шаги каждый раз, когда вы настраиваете I2P сервер или развертываете клиент, то можно сойти с ума.
  • Сайт Aum http://www.freenet.org.nz/i2p/ содержит скрипт setupServer.py, который автоматизирует все эти шаги в одной командной строке. Но я уважаю, что представления людей об интерфейсах отличаются, и попытка написать что-то удовлетворяющее всем требованиям обычно приводит к громоздким и непонятным вещам, которые отпугивают новичков.
  • Пожалуйста, свободно пользуйтесь и подстраивайте на свой вкус setupServer.py или напишите свой собственный на Python или другом языке.
  • Также вы можете захотеть написать скрипт, который управляет загрузкой маршрутизатора I2P, eepProxy, а также используемыми вами туннелями. У меня есть такой скрипт, называется startEverything.sh, загружается при входе в систему. (Не забудьте найти на сайте шаблоны скриптов для автоматизации команд I2P. Если я создам для них страницы, то постараюсь указать здесь ссылки.
  • Упражнение для пользователей Windows: перенести setupServer.py в файл MS-DOS .BAT