Chl/使用 Docker 安装 Shadowsocks-Manager 过程: 启动面板(1)

Created Fri, 24 Nov 2023 15:25:20 +0800 Modified Fri, 24 Nov 2023 15:25:20 +0800

介绍

Shadowsocks-Manager 是一个基于 Node.js 开发的 shadowsocks 多用户管理平台,支持 SS / SSR / Clash 等多种订阅方式 (#)

前提条件

如果您愿意相信的我步骤,为了避免不必要的麻烦,请考虑以下推荐:

系统

Ubuntu Jammy 22.04 (LTS)
Ubuntu Focal 20.04 (LTS)

安装

大纲

1. 腾讯云/阿里云 -> 轻量应用服务器
2.     -> 选择系统: Ubuntu Jammy 22.04 (LTS) 
3.         -> 安装 Docker Engine -> 启动 Shadowsocks-Manager(ssmgr) 容器 
4.             -> 登录面板: 安装 Redis 并配置密码

Docker Engine (#)

在 Ubuntu Jammy 22.04 (LTS) 上安装精简版 Docker Engine 是非常轻松从一件事,选择使用 apt 存储库安装,基本只需要跟着粘贴指令即可。

Docker

上图展示,安装 Docker 的 3 个主要步骤:(1) 选择 Docker Engine; (2) 安装 Docker Engine; (3) 验证 Docker Engine

使用 apt 存储库安装 (#)

  1. 设置 Docker apt 的仓库
# Add Docker's official GPG key(添加 Docker 的官方 GPG 密钥):
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources(将仓库添加到 Apt 源):
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  1. 安装 Docker 包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 验证 Docker 引擎安装是否成功
sudo docker run hello-world

如果看到,Hello from Docker! 则说明安装成功。 Successful docker

Shadowsocks-Manager (#)

Shadowsocks-Manager

添加配置

在这一环节,需要您完成以下前提步骤:

sudo su 切换 root 账号 
    -> mkdir ~/.ssmgr 创建目录 -> cd ~/.ssmgr 进入目录 
        -> 创建 nano default.yml 节点配置文件 & 创建 nano webgui.yml 面板配置文件

default.yml

插句话1: 之所以选择命名为 default.yml,而不是 ss.yml 或者 default.yaml。

是因为我发现官方 Docker 镜像创建容器时,调用的是 default.yml 这个名称的配置文件,纯属个人经验。

root@VM-4-5-ubuntu:~/.ssmgr# cat default.yml 
type: s

shadowsocks:
  address: 127.0.0.1:6001

manager:
  address: 0.0.0.0:6002
  password: '123456'

db: 'db.sqlite'

# db:
#   host: '1.1.1.1'
#   user: 'root'
#   password: 'abcdefg'
#   database: 'ssmgr'

webgui.yml

插句话2: 同样的,为了统一文件后缀,我选择了 webgui.yml 而不是 webgui.yaml。

root@VM-4-5-ubuntu:~/.ssmgr# cat webgui.yml 
type: m
manager:
  address: 127.0.0.1:6002 # 轻量应用服务器IP
  password: '123456'
plugins:
  flowSaver:
    use: true
  user:
    use: true
  account:
    use: true
  email:
    use: true
    type: 'smtp'
    username: 'username'
    password: 'password'
    host: 'smtp.your-email.com'
  webgui:
    use: true
    host: '0.0.0.0'
    port: '80'
    site: 'http://yourwebsite.com'
    admin_username: 'admin@qq.com'
    admin_password: 'pannel_password'
    # icon: 'icon.png'
    # skin: 'default'
    # language: 'en-US'
    # googleAnalytics: 'UA-xxxxxxxx-x'
    # gcmSenderId: '476902381496'
    # gcmAPIKey: 'AAAAGzddLRc:XXXXXXXXXXXXXX'
    # google_login_client_id: '724695589056-p78tu8738t4fjel56yhe34qq34gjufsi.apps.googleusercontent.com'
    # google_login_client_secret: 'TjUd36YnQ-YUI2uUtQa_43Tl'
    # facebook_login_client_id: '9825686749820123'
    # facebook_login_client_secret: 'a46c6bb6f8281c23d2b74b43008c9c46'
    # github_login_client_id: '7c45c34c1de3ef937d37'
    # github_login_client_secret: 'd2768efe5258cfb9ce4da11ed7ddc334bc65756b'
    # twitter_login_consumer_key: 'tKPH3RViDT68PtHBMHYJuQ'
    # twitter_login_consumer_secret: 'wYCtWdUSEfm8H3ES0r5rgHKeqGvYGiFDrGj4THiq3T6'

db: 'webgui.sqlite'
redis:
  host: '127.0.0.1'
  port: 6379
  password: 'redis_password'
  db: 0

注意到 admin_username 和 admin_password 两项,您 Shadowsocks-Manager 面板登录账号密码为 admin@qq.com 和 pannel_password

启动容器

为了方便小伙伴们, 我构造了以下指令,帮助您在完成 (1) 安装 Docker Engine; (2) 添加 2 项配置文件(default.yml & webgui.yml) 的基础上,可以顺利一键启动 Shadowsocks-Manager 面板 (#)

docker run --name ssmgr -it --restart always --net=host -v ~/.ssmgr:/root/.ssmgr gyteng/ssmgr bash -c \
"(ssmgr -t s -s 127.0.0.1:6001 -m 0.0.0.0:6002 -p 123456 -r libev:aes-256-cfb &) && \
(ssmgr -c /root/.ssmgr/default.yml &) && \
(ssmgr -c /root/.ssmgr/webgui.yml &) && \
tail -f /dev/null"

我解决了参考[1]最后提及的问题,方便大家一键启动镜像容器,无需进入容器再进行启动操作。

参数

1. docker run: 启动新的 Docker 容器。

2. --name ssmgr: 为容器指定名称 ssmgr。

3. -it: 分配一个交互式终端。

4. --restart always: 容器停止后自动重启。

5. --net=host: 容器使用宿主机的网络。

6. -v ~/.ssmgr:/root/.ssmgr: 将宿主机的 ~/.ssmgr 目录挂载到容器内。

7. gyteng/ssmgr: 指定使用的 Docker 镜像。

8. bash -c: 通过 bash 执行随后的命令。

细节

1. (ssmgr -t s -s 127.0.0.1:6001 -m 0.0.0.0:6002 -p 123456 -r libev:aes-256-cfb &): 启动 ssmgr 服务,设置监听地址、端口、密码和加密方法。

2. (ssmgr -c /root/.ssmgr/default.yml &), (ssmgr -c /root/.ssmgr/webgui.yml &): 使用 ssmgr 分别启动 default.yml 和 webgui.yml 配置文件。

3. tail -f /dev/null: 保持容器持续运行。

展示

恭喜您已经完成一大步,现在只需要访问您服务器IP地址,就可以看到登录面板。

登录注册

成功

首页

成功

服务器

成功

用户

成功

账号

成功

设置

成功

但您目前还无法登录,接下来需要您,在服务器上的Docker容器里安装Redis,才可以正常登录。 因为篇幅有限,请看下一篇文章:使用 Docker 安装 Shadowsocks-Manager 过程: Redis 配置(2)

参考

[1] Goldsubmarine, “Docker部署ss,” Goldsubmarine’s Blog, November 11, 2018. [Online]. Available: https://goldsubmarine.github.io/2018/11/11/docker%E9%83%A8%E7%BD%B2ss/. [Accessed: November 24, 2023].