Simple是一款网络代理/VPN服务端管理平台。使用simple来轻松管理服务器上多种不同协议的服务端。
如果你只是想在服务器上随便启动一个网络代理的服务端自己用,那么你不需要simple
如果你想把你的服务器打造成一个强大的多协议多用户网络代理平台,那么你需要simple
- trojan
- shadowsocks
- openvpn
- ikev2
- WireGuard
- V2ray
- 创建、删除、查询VPN客户端配置
- 配置数据持久化
- 用户级限速
- 容器化部署
- 使用grpc api管理
- 使用http api管理
- 使用命令行工具(spctl)管理
- 使用grpc+protobuf与VPN对接,可自由插拔不同VPN
- prometheus数据指标采集
- 使用dashboard管理
Simple使用多服务模块化设计,需要数个服务同时运行,传统部署方式会略麻烦,推荐使用docker部署。
wget https://github.com/fregie/simple/releases/download/v1.0.2/simple-docker-compose.tar.gz
tar -xzf simple-docker-compose.tar.gz
cd docker
启动服务前需要修改部分配置
simple的配置文件,需要将host
字段修改为服务器的公网ip或域名
trojan-go服务端的配置文件。
trojan-go文档
trojan使用的证书,根据你服务器的域名修改
docker-compose up -d
wget https://github.com/fregie/simple/releases/download/v1.0.2/spctl
chmod +x spctl
spctl
会读取$HOME目录下的.spctl
文件作为配置文件
echo 'grpcAddr: 127.0.0.1:4433' > $HOME/.spctl
配置文件$HOME/.spctl
.
# simple服务的grpc地址
grpcAddr: 127.0.0.1:4433
session是simple的基本单位,含义为一个vpn的客户端会话,可以理解为一个客户端可用的配置。
$ spctl get protos
Support protos:
• trojan
• ss
$ spctl create session --proto ss --type url --name ss-01
SUCCESS Create success!
ID: ss-50001-3R0v02B1tU1J1qXzDCFBhSwiX
Name: ss-01
Proto: ss
Config type: URL
Config:
ss://YWVzLTEyOC1nY206M1IwdjAyQjF0VTFKMXFYekBzaW1wbGUuZnJlZ2llLmNuOjUwMDAx
$ spctl get sessions
Name | ID | proto | config type
ss-02 | ss-50000-TJ6WoD93G795H2bMA1L5umcUs | ss | URL
trojan-01 | trojan-3c2230a6-4tQL30I5nt0Oyl4UK3 | trojan | URL
ss-01 | ss-50001-3R0v02B1tU1J1qXzDCFBhSwiX | ss | URL
$ spctl get session ss-01 --conf
ID: ss-50001-3R0v02B1tU1J1qXzDCFBhSwiX
Name: ss-01
Proto: ss
Config type: URL
Option:
Upload rate limit: 0 mbps
Download rate limit: 0 mbps
Config:
ss://YWVzLTEyOC1nY206M1IwdjAyQjF0VTFKMXFYekBzaW1wbGUuZnJlZ2llLmNuOjUwMDAx
$ spctl delete session ss-01
SUCCESS Delete ss-01
config.yaml
grpc_addr: "0.0.0.0:4433" # grpc服务的监听地址
grpc_gateway_addr: "0.0.0.0:4443" # grpc_gateway的监听地址(http接口)
prom_addr: "0.0.0.0:4442" # export prometheus数据的http监听地址
host: simple.fregie.cn # 服务器host,ip或者域名,用于通知session该服务器的外网ip或域名
sqlite: /root/simple/docker/simple/simple.db # sqlite存储数据的路径,用于数据持久化
services: # 接入服务的vpn服务端适配器的地址
- "127.0.0.1:10003"
simple支持通过prometheus采集指标,并通过grafana展示。
在配置文件中增加:
prom_addr: "0.0.0.0:4442"
simple会使用这个地址作为export的http addr,在prometheus配置文件中的scrape_configs
下增加对这个地址指标的采集即可采集到数据:
- job_name: simple
scrape_interval: 10s
static_configs:
- targets:
- your_server:4442
在grafana中import该dashboard: 14879 https://grafana.com/grafana/dashboards/14879