-
Notifications
You must be signed in to change notification settings - Fork 188
Docker部署
tdragon6 edited this page Sep 26, 2023
·
7 revisions
- docker-compose.yml中定义了6个docker容器服务:
- nginx:8888,用以访问平台web界面,对外开放。
- rssh:3232,用以接收反弹shell的监听端口,对外开放;同时也是flask容器获取客户端连接的端口,通过内部网络访问。
- redis:6379,用以记录和操作连接的客户端数据,对内开放,flask通过内部网络访问redis。
- flask:5000,提供web服务,对内开放,通过nginx转发。
- shell:7681,提供浏览器中访问的交互终端Shell,使用ttyd获取浏览器shell,对内开放,通过nginx转发和鉴权控制。
- memfd:7682,提供浏览器中访问的内存注入Shell,使用ttyd获取浏览器shell,对内开放,通过nginx转发和鉴权控制。
- docker-compose中通过depends_on定义了容器启动顺序:
redis -> flask -> shell -> memfd -> nginx -> rssh
- flask和rssh内部启动逻辑进行了严格的顺序处理,控制flask在redis启动后才启动,rssh在flask启动后再启动,这是为了确保rssh接收反弹shell的webhook请求一定会被flask收到,flask操作的数据一定会在redis中更新。
- flask容器没有bash,有nc,所以采用nc监听redis端口的手段确保顺序启动。
- rssh容器有bash,没有nc,所以使用wait-for-it.sh脚本确保顺序启动。
为了方便部署,shell和memfd容器使用ttyd二进制文件直接部署,其他容器均是源镜像或源代码部署。
ttyd二进制文件使用 https://github.com/tsl0922/ttyd/releases/download/1.7.3/ttyd.x86_64 ,md5值与release源代码中 ./ttyd/ttyd
二进制文件一致,如下所示:
- ttyd md5:
a5d9489f0954ba267a537f7ca6c22949
快速构建 中采用默认的配置部署,如果对外的两个端口8888和3232被占用,请修改docker-compose.yml文件中nginx和rssh容器服务的配置,更换端口后启动(这里注意是更改ports前一个的端口号,不是expose的端口号,如果更改rssh端口,还需要重新设置修改临时环境变量 EXTERNAL_ADDRESS
中的端口号,以便一行命令上线功能可以正常使用)。
v2.0.0版本开始可通过远程pull和本地原生两种方式构建镜像
-
docker-compose.yml
从云端仓库下载镜像,极速构建,云端镜像构建时基于linux/amd64架构 -
docker-compose.yml.local
从本地构建镜像,兼容本地系统架构
国内主机请配置docker镜像源