Установка I2P в Docker
Очень быстрый старт
Если вы просто хотите попробовать I2P или используете его в домашней сети, выполните следующие шаги:
- Создайте две директории "i2pconfig" и "i2ptorrents"
- Скопируйте следующий текст и сохраните его в файле "docker-compose.yml".
- Выполните команду "docker-compose up"
- Запустите браузер и перейдите по адресу http://127.0.0.1:7657, чтобы завершить работу мастера настройки.
version: "3.5"
services:
i2p:
image: geti2p/i2p
network_mode: host
volumes:
- ./i2pconfig:/i2p/.i2p
- ./i2ptorrents:/i2psnark
Обратите внимание, что этот подход быстрого запуска не рекомендуется для производственного развертывания на удаленных серверах. Пожалуйста, прочитайте остальную часть этого документа для дополнительной информации.
Построение изображения
На сайте DockerHub доступен образ i2P. Если вы не хотите использовать этот образ, вы можете собрать его самостоятельно:
docker build -t i2p .
Запуск контейнера
Тома
Контейнеру необходим том для установки данных конфигурации. По желанию можно установить отдельный том для загрузки торрентов ("i2psnark"). См. пример ниже.
Использование памяти
By default the image limits the memory available to the Java heap to 512MB. You can override that with the JVM_XMX
environment variable.
Порты
Существует несколько портов, которые открываются через образ. Вы можете выбрать, какие из них открывать, в зависимости от ваших конкретных потребностей.
Порт | Сетевой интерфейс | Описание | TCP/UDP |
---|---|---|---|
4444 | 127.0.0.1 | HTTP Прокси | TCP |
4445 | 127.0.0.1 | HTTP Прокси | TCP |
6668 | 127.0.0.1 | IRC-прокси | TCP |
7654 | 127.0.0.1 | Протокол I2CP | TCP |
7656 | 127.0.0.1 | SAM Bridge TCP | TCP |
7657 | 127.0.0.1 | Консоль маршрутизатора | TCP |
7658 | 127.0.0.1 | Сайт I2P | TCP |
7659 | 127.0.0.1 | SMTP Прокси | TCP |
7660 | 127.0.0.1 | POP3 Прокси | TCP |
7652 | LAN-интерфейс | UPnP | TCP |
7653 | LAN-интерфейс | UPnP | UDP |
12345 | 0.0.0.0 | Протокол I2NP | TCP и UDP |
Вам, вероятно, нужны, как минимум, консоль маршрутизатора (7657) и HTTP-прокси (4444). Если вы хотите, чтобы I2P мог принимать входящие соединения из интернета и, следовательно, не думать, что он заблокирован, опубликуйте порт протокола I2NP (12345) - но убедитесь, что вы публикуете на другой случайный порт, иначе другие могут догадаться, что вы запускаете I2P в Docker-образе.
Работа в сети
Руководство по лучшей практике для облачных применений выходит за рамки данного документа, но в целом вам лучше попытаться минимизировать количество открытых портов, открывая для интернета только порты I2NP. Это означает, что доступ к сервисам из приведенного выше списка, привязанным к 127.0.0.1 (к которым относится консоль маршрутизатора), необходимо получить другими способами, например, через туннелирование ssh, или вручную настроить привязку к другому интерфейсу.
Пример
Вот пример контейнера, который устанавливает i2phome
в качестве домашнего каталога, i2ptorrents
для торрентов и открывает протоколы HTTP Proxy, IRC, Router Console и I2NP. Он также ограничивает память, доступную для JVM, до 256 МБ.
docker run \
-e JVM_XMX=256m \
-v i2phome:/i2p/.i2p \
-v i2ptorrents:/i2psnark \
-p 4444:4444 \
-p 6668:6668 \
-p 7657:7657 \
-p 54321:12345 \
-p 54321:12345/udp \ # I2NP port needs TCP and UDP. Change the 54321 to something random, greater than 1024.
i2p:latest