Sign inSign up

jearton1024/ssmgr

By jearton1024

•Updated over 4 years ago

A web panel for shadowsocks management.

Image
1

334

jearton1024/ssmgr repository overview

⁠Feature

  1. Run ssmgr with type m
  2. Run ssmgr-tiny with type s

⁠Run ssmgr with type m

⁠准备配置文件
⁠redis.conf
  1. download from https://raw.githubusercontent.com/redis/redis/6.2/redis.conf⁠
  2. put it under ~/docker/ssmgr-redis/conf
⁠webgui.yml
  1. 参考官方文档:https://shadowsocks.github.io/shadowsocks-manager/#/config?id=%e9%85%8d%e7%bd%ae%e5%b9%b6%e8%bf%90%e8%a1%8cweb%e7%95%8c%e9%9d%a2⁠
  2. put it under ~/docker/ssmgr-webgui
  3. 配置示例(将邮件配置里的smtp服务器替换成自己的)
type: m
plugins:
  flowSaver:
    use: true
  user:
    use: true
  account:
    use: true
  email:
    use: true
    type: "smtp"
    username: "xxx"
    password: "xxx"
    host: "xxx"
  webgui:
    use: true
    host: "0.0.0.0"
    port: "8080"
    site: "https://yourdomain.com"
db: "webgui.sqlite"
redis:
  host: "ssmgr-redis"
  port: 6379
  db: 0
⁠docker compose config
version: "3.9"
services:
  ssmgr-redis:
    image: "redis:6.2.6"
    restart: always
    networks:
      - backend
    environment:
      - TZ=Asia/Shanghai
      - LANG="C.UTF-8"
      - LC_ALL="C.UTF-8"
      - LANGUAGE="C.UTF-8"
    volumes:
      - ~/docker/ssmgr-redis/conf:/etc/redis
      - ~/docker/ssmgr-redis/data:/data
    entrypoint: [ "redis-server", "/etc/redis/redis.conf" ]
  ssmgr-webgui:
    image: "jearton1024/ssmgr:latest"
    restart: always
    depends_on:
      - ssmgr-redis
    networks:
      - frontend
      - backend
    environment:
      - RUN_MODE=webgui
    volumes:
      - ~/docker/ssmgr-webgui:/root/.ssmgr
networks:
  backend:
    external: true
  frontend:
    external: true

⁠Run ssmgr-tiny with type s

⁠准备配置文件
⁠config.json
  1. 具体配置项的官方说明:https://github.com/shadowsocks/shadowsocks-libev/blob/master/doc/shadowsocks-libev.asciidoc#config-file⁠
  2. put it under ~/docker/ss-manager
  3. 配置示例:
{
  "server": "0.0.0.0",
  "timeout": 60,
  "method": "aes-256-gcm",
  "nameserver": "8.8.8.8,8.8.4.4,2001:4860:4860::8888,2001:4860:4860::8844",
  "fast_open": true,
  "no_delay": true,
  "reuse_port": true,
  "mode": "tcp_and_udp",
  "plugin": "v2ray-plugin",
  "plugin_opts": "server;path=/vv"
}
⁠ss.yml
  1. 参考官方文档:https://shadowsocks.github.io/shadowsocks-manager/#/config?id=%e6%89%8b%e5%b7%a5%e6%96%b9%e5%bc%8f⁠
  2. put it under ~/docker/ssmgr-ss:/root/.ssmgr
  3. 配置示例:
type: s
shadowsocks:
  address: ss-manager:6001
manager:
  address: 0.0.0.0:16001
  password: 'xxxxxxx'
⁠docker compose config
version: '3.9'
services:
  ss-manager:
    image: "jearton1024/shadowsocks-libev:latest"
    restart: always
    networks:
      backend: {}
      frontend:
        aliases:
          - ss-server
    environment:
      - RUN_MODE=manager
    volumes:
      - ~/docker/ss-manager:/etc/shadowsocks-libev
  ssmgr-ss:
    image: "jearton1024/ssmgr:latest"
    restart: always
    depends_on:
      - ss-manager
    networks:
      - backend
    ports:
      - "16001:16001"
    environment:
      - RUN_MODE=ss
    volumes:
      - ~/docker/ssmgr-ss:/root/.ssmgr
networks:
  backend:
    external: true
  frontend:
    external: true

⁠Dockerfile

# syntax=docker/dockerfile:1
FROM node:12-alpine3.15
LABEL maintainer="jearton1024 <[email protected]>"

ENV TZ=Asia/Shanghai
ENV RUN_MODE=webgui
ENV DEBUG=false

COPY opt /opt

RUN set -ex \
    && chmod a+x /opt/ssmgr/entrypoint.sh \
    # enable edge/community repo
    && echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
    # replace mirror
    && sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories \
    && apk update \
    && apk add --no-cache iproute2 git tzdata yq \
    # config timezone
    && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \
    # install shadowsocks-manager
    && npm install -g cnpm --registry=https://registry.npmmirror.com \
    && cnpm install -g shadowsocks-manager --unsafe-perm \
    # download ssmgr-tiny
    && git clone -b master --depth=1 https://github.com/gyteng/shadowsocks-manager-tiny.git ssmgr-tiny

EXPOSE 8080 16001

ENTRYPOINT [ "/opt/ssmgr/entrypoint.sh" ]

⁠opt/ssmgr/entrypoint.sh

#!/bin/sh
startWebGUI() {
  CONFIG_FILE=$1
  if [ ! -e "${CONFIG_FILE}" ]; then
    echo "Config file not exists: ${CONFIG_FILE}"
    exit 1
  fi
  # run server
  if [ "${DEBUG}" = true ]; then
    ssmgr -c "$CONFIG_FILE" --debug
  else
    ssmgr -c "$CONFIG_FILE"
  fi
}

startSS() {
  CONFIG_FILE=$1
  if [ ! -e "${CONFIG_FILE}" ]; then
    echo "Config file not exists: ${CONFIG_FILE}"
    exit 1
  fi
  # parse config
  shadowsocks_address=$(yq '.shadowsocks.address' "${CONFIG_FILE}")
  manager_address=$(yq '.manager.address' "${CONFIG_FILE}")
  manager_password=$(yq '.manager.password' "${CONFIG_FILE}")
  # run server
  node /ssmgr-tiny -s "$shadowsocks_address" -m "$manager_address" -p "$manager_password"
}

if [ "${RUN_MODE}" = 'webgui' ]; then
  startWebGUI "/root/.ssmgr/webgui.yml"
elif [ "${RUN_MODE}" = 'ss' ]; then
  startSS "/root/.ssmgr/ss.yml"
else
  echo "RUN MODE is invalid: ${RUN_MODE}"
fi

⁠Contact me if any feedback

[email protected]⁠

Tag summary

Content type

Image

Digest

Size

83.6 MB

Last updated

over 4 years ago

docker pull jearton1024/ssmgr