本页针对路由版本 0.9.50。

在Docker中安装I2P

快速开始

如果您只是想快速尝试一下I2P,或在家庭网络中使用它,请遵循以下步骤:

  1. 创建两个目录 "i2pconfig "和 "i2ptorrents"。
  2. 复制以下文本并保存在 "docker-compose.yml "文件中。
  3. 
    version: "3.5"
    services:
        i2p:
            image: geti2p/i2p
            network_mode: host
            volumes:
                - ./i2pconfig:/i2p/.i2p
                - ./i2ptorrents:/i2psnark
    
  4. 执行 "docker-compose up"
  5. 启动浏览器,进入http://127.0.0.1:7657,完成设置向导。

请注意,这种快速开始方法不推荐用于远程服务器上的部署。 请阅读本文件的其他部分以了解更多信息。

构建镜像

这里有一个构建好的i2P Docker镜像 DockerHub. 如果你不想用那个,你可以自己编译一个。

docker build -t i2p .

运行一个容器

容器需要为配置数据挂载一个卷。作为可选项,你也可以为torrent("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.

有几个端口是镜像默认开放的,你可以根据你的具体需要来选择开发哪些。

端口 网络接口 描述 传输控制协议/用户数据报协议
4444 127.0.0.1 HTTP 代理 传输控制协议
4445 127.0.0.1 HTTPS代理 传输控制协议
6668 127.0.0.1 IRC代理 传输控制协议
7654 127.0.0.1 I2CP 协议 传输控制协议
7656 127.0.0.1 SAM Bridge TCP 传输控制协议
7657 127.0.0.1 路由控制台 传输控制协议
7658 127.0.0.1 I2P 网页 传输控制协议
7659 127.0.0.1 SMTP代理 传输控制协议
7660 127.0.0.1 POP3 代理 传输控制协议
7652 LAN 接口 UPnP 传输控制协议
7653 LAN 接口 UPnP UDP
12345 0.0.0.0 I2NP协议 传输控制协议 和 用户数据报协议

您至少需要路由控制台 (7657) 和 HTTP 代理 (4444)。如果您想让I2P能够接收来自互联网的连接,从而不受到防火墙限制,可以发布I2NP协议端口(12345) - 但要确保发布到一个不同的随机端口,否则别人可能会猜到您在Docker镜像中运行I2P。

网络

关于云部署的最佳实践指南超出了本文的范围,但一般来说,你应该尽量减少开放的端口数量,只将I2NP端口暴露在互联网上。 这意味着上面列表中绑定到127.0.0.1的服务(包括路由器控制台)将需要通过其他方法访问,如SSH隧道,或手动配置绑定到不同的接口。

示例

下面是一个容器的例子,它将i2phome挂载为主目录,i2ptorrents挂载为torrents,并打开HTTP Proxy、IRC、路由控制台和I2NP协议。它还将JVM的可用内存限制在256MB。

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