{"id":15447311,"url":"https://github.com/fregie/simple","last_synced_at":"2025-04-19T21:30:13.416Z","repository":{"id":57617091,"uuid":"377499006","full_name":"fregie/simple","owner":"fregie","description":"✈️Simple is a platform to manage multiple VPN services.(Support shadowsocks,trojan for now)","archived":false,"fork":false,"pushed_at":"2022-09-26T04:35:20.000Z","size":20676,"stargazers_count":21,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T13:35:14.499Z","etag":null,"topics":["docker","proxy","shadowsocks","trojan","trojan-go","vpn"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fregie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-16T13:05:09.000Z","updated_at":"2023-10-28T15:55:37.000Z","dependencies_parsed_at":"2022-08-29T05:31:47.625Z","dependency_job_id":null,"html_url":"https://github.com/fregie/simple","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fregie%2Fsimple","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fregie%2Fsimple/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fregie%2Fsimple/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fregie%2Fsimple/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fregie","download_url":"https://codeload.github.com/fregie/simple/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249810044,"owners_count":21328529,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","proxy","shadowsocks","trojan","trojan-go","vpn"],"created_at":"2024-10-01T20:04:49.348Z","updated_at":"2025-04-19T21:30:13.396Z","avatar_url":"https://github.com/fregie.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple\n\n[![Build](https://img.shields.io/github/workflow/status/fregie/simple/Build?style=flat-square)](https://github.com/fregie/simple/actions/workflows/gobuild.yml) ![GPL](https://img.shields.io/github/license/fregie/simple?style=flat-square) ![Downloads](https://img.shields.io/github/downloads/fregie/simple/total?style=flat-square)\n\nSimple是一款网络代理/VPN服务端管理平台。使用simple来轻松管理服务器上多种不同协议的服务端。  \n\u003c!-- @import \"[TOC]\" {cmd=\"toc\" depthFrom=2 depthTo=6 orderedList=false} --\u003e\n\n\u003c!-- code_chunk_output --\u003e\n\n- [Contribute](#contribute)\n- [为什么](#为什么)\n- [支持的协议](#支持的协议)\n- [功能](#功能)\n- [Show me](#show-me)\n- [安装](#安装)\n  - [安装docker和docker-compose](#安装docker和docker-compose)\n  - [下载docker-compose定义文件](#下载docker-compose定义文件)\n  - [修改配置](#修改配置)\n      - [config.yaml](#configyaml)\n      - [trojan-go/server.json （不使用trojan无需修改）](#trojan-goserverjson-不使用trojan无需修改)\n      - [trojan-go/simple.fregie.cn.crt \u0026 simple.fregie.cn.key （不使用trojan无需修改）](#trojan-gosimplefregiecncrt-simplefregiecnkey-不使用trojan无需修改)\n  - [启动服务](#启动服务)\n  - [安装命令行管理工具spctl](#安装命令行管理工具spctl)\n- [使用](#使用)\n  - [配置spctl](#配置spctl)\n  - [session](#session)\n    - [查看可用协议](#查看可用协议)\n    - [创建](#创建)\n    - [查看全部](#查看全部)\n    - [查看特定session](#查看特定session)\n    - [删除](#删除)\n- [配置](#配置)\n  - [Simple](#simple-1)\n- [对接prometheus](#对接prometheus)\n\n\u003c!-- /code_chunk_output --\u003e\n\n## 为什么\n如果你只是想在服务器上随便启动一个网络代理的服务端自己用，那么你不需要simple  \n如果你想把你的服务器打造成一个强大的多协议多用户网络代理平台，那么你需要simple\n\n## 支持的协议\n- [x] trojan\n- [x] shadowsocks\n- [ ] openvpn\n- [ ] ikev2\n- [ ] WireGuard\n- [ ] V2ray\n\n## 功能\n- [x] 创建、删除、查询VPN客户端配置\n- [x] 配置数据持久化\n- [x] 用户级限速\n- [x] 容器化部署\n- [x] 使用grpc api管理\n- [x] 使用http api管理\n- [x] 使用命令行工具(spctl)管理\n- [x] 使用grpc+protobuf与VPN对接，可自由插拔不同VPN\n- [x] prometheus数据指标采集\n- [ ] 使用dashboard管理\n\n## Show me\n![create](docs/img/spctl-create.png)\n![get](docs/img/get.png)\n![grafana](docs/img/grafana.png)\n\n## 安装\nSimple使用多服务模块化设计，需要数个服务同时运行，传统部署方式会略麻烦，推荐使用docker部署。\n\n### 安装docker和docker-compose\n[安装docker](https://docs.docker.com/engine/install/)\n[安装docker-compose](https://docs.docker.com/compose/install/)\n\n### 下载docker-compose定义文件\n```shell\nwget https://github.com/fregie/simple/releases/download/v1.0.2/simple-docker-compose.tar.gz\ntar -xzf simple-docker-compose.tar.gz\ncd docker\n```\n\n### 修改配置\n启动服务前需要修改部分配置\n##### config.yaml\nsimple的配置文件，需要将`host`字段修改为服务器的公网ip或域名\n##### trojan-go/server.json （不使用trojan无需修改）\ntrojan-go服务端的配置文件。  \n[trojan-go文档](https://p4gefau1t.github.io/trojan-go/basic/full-config/)\n##### trojan-go/simple.fregie.cn.crt \u0026 simple.fregie.cn.key （不使用trojan无需修改）\ntrojan使用的证书，根据你服务器的域名修改\n\n### 启动服务\n```shell\ndocker-compose up -d\n```\n\n### 安装命令行管理工具spctl\n```shell\nwget https://github.com/fregie/simple/releases/download/v1.0.2/spctl\nchmod +x spctl\n```\n`spctl`会读取$HOME目录下的`.spctl`文件作为配置文件\n```shell\necho 'grpcAddr: 127.0.0.1:4433' \u003e $HOME/.spctl\n```\n\n## 使用\n### 配置spctl\n配置文件`$HOME/.spctl`.  \n```yaml\n# simple服务的grpc地址\ngrpcAddr: 127.0.0.1:4433\n```\n### session\nsession是simple的基本单位，含义为一个vpn的客户端会话，可以理解为一个客户端可用的配置。\n#### 查看可用协议\n```shell\n$ spctl get protos\nSupport protos:\n• trojan\n• ss\n```\n#### 创建\n```shell\n$ spctl create session --proto ss --type url --name ss-01        \n SUCCESS  Create success!\nID:            ss-50001-3R0v02B1tU1J1qXzDCFBhSwiX\nName:          ss-01\nProto:         ss\nConfig type:   URL\nConfig:\nss://YWVzLTEyOC1nY206M1IwdjAyQjF0VTFKMXFYekBzaW1wbGUuZnJlZ2llLmNuOjUwMDAx\n```\n#### 查看全部\n```shell\n$ spctl get sessions                                     \nName      | ID                                 | proto  | config type\nss-02     | ss-50000-TJ6WoD93G795H2bMA1L5umcUs | ss     | URL        \ntrojan-01 | trojan-3c2230a6-4tQL30I5nt0Oyl4UK3 | trojan | URL        \nss-01     | ss-50001-3R0v02B1tU1J1qXzDCFBhSwiX | ss     | URL        \n```\n#### 查看特定session\n```shell\n$ spctl get session ss-01 --conf\nID:            ss-50001-3R0v02B1tU1J1qXzDCFBhSwiX\nName:          ss-01\nProto:         ss\nConfig type:   URL\nOption:\n    Upload rate limit:   0 mbps\n    Download rate limit: 0 mbps\nConfig:\nss://YWVzLTEyOC1nY206M1IwdjAyQjF0VTFKMXFYekBzaW1wbGUuZnJlZ2llLmNuOjUwMDAx\n```\n\n#### 删除\n```shell\n$ spctl delete session ss-01                              \n SUCCESS  Delete ss-01\n```\n\n## 配置\n### Simple\nconfig.yaml\n```yaml\ngrpc_addr: \"0.0.0.0:4433\"                    # grpc服务的监听地址\ngrpc_gateway_addr: \"0.0.0.0:4443\"            # grpc_gateway的监听地址（http接口）\nprom_addr: \"0.0.0.0:4442\"                    # export prometheus数据的http监听地址\nhost: simple.fregie.cn                       # 服务器host，ip或者域名，用于通知session该服务器的外网ip或域名\nsqlite: /root/simple/docker/simple/simple.db # sqlite存储数据的路径，用于数据持久化\nservices:                                    # 接入服务的vpn服务端适配器的地址\n  - \"127.0.0.1:10003\"\n```\n\n## 对接prometheus\nsimple支持通过prometheus采集指标，并通过grafana展示。  \n在配置文件中增加:\n```yaml\nprom_addr: \"0.0.0.0:4442\"\n```\nsimple会使用这个地址作为export的http addr，在prometheus配置文件中的`scrape_configs`下增加对这个地址指标的采集即可采集到数据:\n```yaml\n- job_name: simple\n  scrape_interval: 10s\n  static_configs:\n  - targets:\n    - your_server:4442\n```\n在grafana中import该dashboard: 14879\nhttps://grafana.com/grafana/dashboards/14879","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffregie%2Fsimple","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffregie%2Fsimple","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffregie%2Fsimple/lists"}