介绍
go-ignite是一个基于Docker实现,由Golang开发的多账户SS(R)管理面板。
对用户来说,SS(R)服务被隔离在单独的容器中,安全高效,一键创建服务,简单方便。
对管理员,提供后台管理页面,能够快捷的管理用户服务,重置流量等

说明
用户面板:
支持创建 SS 和 SSR,但是仅提供自定义加密方式,且只能在初始化激活账号的时候,创建之后无法更改;
SS 支持 AEAD 系加密;
SSR 密码由随机生成、协议默认 auth_aes128_md5、混淆默认 tls1.2_ticket_auth_compatible。

管理面板:
无法更改用户端口、服务类型;
用户使用的端口并非随机创建。

因为需要使用 Docker,所以请使用非 OpenVZ 构架的 VPS 进行。

安装
安装 Docker

curl -sSL https://get.daocloud.io/docker | sh

运行 Docker

service docker start

安装 Docker-Compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

注意:版本号可以自行更改

给执行权限

chmod +x /usr/local/bin/docker-compose

前面步骤完成后,需要为当前登录帐号设置直接操作 Docker 的权限,也就是将当前用户帐号加入 Docker 用户组,下方命令中的 current_user 替换为当前用户名,如:usermod -aG docker root

usermod -aG docker current_user

添加完毕之后,用户重新登录即可生效,可用 docker ps 命令验证,如无错误,表示 Docker 环境设置成功。

创建和运行
创建一个目录并在其中创建一个文件名为 docker-compose.yml,然后键入以下任意一种方案的内容保存:
我就直接放在/opt 下

cd /opt
vi docker-compose.yml

方案一:通过 IP 访问(中文为了说明,使用时请删除)

version: '3'

services:

  ignite:
    container_name: ignite
    image: goignite/ignite
    volumes:
      - "./data:/root/ignite/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - HOST_ADDRESS=8.8.8.8
      # 此处修改为VPS IP,是展示在用户界面上的 SS/R 的连接 IP
      - HOST_FROM=5001
      # SS/R 容器的起始可用端口范围,默认 5001
      - HOST_TO=6000
      # SS/R 容器的截止可用端口范围,默认 6000
    ports:
      - "80:5000"
      # 用户界面访问端口,默认 80
    restart: always

  ignite-admin:
    container_name: ignite-admin
    image: goignite/ignite-admin
    volumes:
      - "./data:/root/ignite/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - AUTH_USERNAME=admin
      # 管理员用户名
      - AUTH_PASSWORD=admin_password
      # 管理员密码
      - Auth_SECRET=ignite2017
      # 生成 JWT Token 的密钥,随便修改
    ports:
      - "8080:8000"
      # 管理界面访问端口,默认 8080
    restart: always

方案二:通过域名访问(中文为了说明,使用时请删除)

version: '3'

services:

  nginx-proxy:
    container_name: nginx-proxy
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
      # 访问端口,可以无需修改
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    restart: always

  ignite:
    container_name: ignite
    image: goignite/ignite
    volumes:
      - "./data:/root/ignite/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - HOST_ADDRESS=8.8.8.8
      # 此处修改为 VPS IP,是展示在用户界面上的 SS/R 的连接 IP
      - HOST_FROM=5001
      # SS/R 容器的起始可用端口范围,默认 5001
      - HOST_TO=6000
      # SS/R 容器的截止可用端口范围,默认 6000
      - VIRTUAL_PORT=5000
      - VIRTUAL_HOST=domain.com
      # 用户面板的访问域名
    restart: always

  ignite-admin:
    container_name: ignite-admin
    image: goignite/ignite-admin
    volumes:
      - "./data:/root/ignite/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - AUTH_USERNAME=admin
      # 管理员用户名
      - AUTH_PASSWORD=admin_password
      # 管理员密码
      - Auth_SECRET=ignite2017
      # 生成 JWT Token 的密钥,随便修改
      - VIRTUAL_PORT=8000
      - VIRTUAL_HOST=admin.domain.com
      # 管理面板的访问域名
    restart: always

保存后,CD 至该目录,执行 docker-compose up -d 即可运行。

cd /opt
docker-compose up -d

管理
以下命令请 CD 至 docker-compose.yml 的目录下执行。

docker-compose up -d
# 运行
docker-compose down
# 停止
docker-compose pull
# 更新

如需修改 docker-compose.yml,请先停止后再修改。

以HMB为例,docker-compose.yml内容如下

version: '3'

services:

  ignite:
    container_name: ignite
    image: goignite/ignite
    volumes:
      - "./data:/root/ignite/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - HOST_ADDRESS=XXX.com
      - HOST_FROM=12411
      - HOST_TO=12417
    ports:
      - "12418:5000"
    restart: always

  ignite-admin:
    container_name: ignite-admin
    image: goignite/ignite-admin
    volumes:
      - "./data:/root/ignite/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - AUTH_USERNAME=admin
      - AUTH_PASSWORD=198704
      - Auth_SECRET=ignite2017
    ports:
      - "12419:8000"
    restart: always


参考来源:
https://github.com/go-ignite/ignite
https://anlan.ga/143

Last modification:August 18, 2022
If you think my article is useful to you, please feel free to appreciate