A web panel for shadowsocks management.
334
~/docker/ssmgr-redis/conf~/docker/ssmgr-webguitype: 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
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
~/docker/ss-manager{
"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"
}
~/docker/ssmgr-ss:/root/.ssmgrtype: s
shadowsocks:
address: ss-manager:6001
manager:
address: 0.0.0.0:16001
password: 'xxxxxxx'
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
# 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" ]
#!/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
Content type
Image
Digest
Size
83.6 MB
Last updated
over 4 years ago
docker pull jearton1024/ssmgr