Skip to content

Docker部署

tdragon6 edited this page Sep 26, 2023 · 7 revisions

容器配置

  • docker-compose.yml中定义了6个docker容器服务:
    • nginx8888,用以访问平台web界面,对外开放。
    • rssh3232,用以接收反弹shell的监听端口,对外开放;同时也是flask容器获取客户端连接的端口,通过内部网络访问。
    • redis6379,用以记录和操作连接的客户端数据,对内开放,flask通过内部网络访问redis。
    • flask5000,提供web服务,对内开放,通过nginx转发。
    • shell7681,提供浏览器中访问的交互终端Shell,使用ttyd获取浏览器shell,对内开放,通过nginx转发和鉴权控制。
    • memfd7682,提供浏览器中访问的内存注入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

部署Supershell

快速构建 中采用默认的配置部署,如果对外的两个端口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镜像源

Clone this wiki locally