在Docker中安装I2P
快速开始
如果您只是想快速尝试一下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
请注意,这种快速开始方法不推荐用于远程服务器上的部署。 请阅读本文件的其他部分以了解更多信息。
构建镜像
这里有一个构建好的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