base on trojan多用户管理部署程序, 支持web页面管理 # trojan ![](https://img.shields.io/github/v/release/Jrohy/trojan.svg) ![](https://img.shields.io/docker/pulls/jrohy/trojan.svg) [![Go Report Card](https://goreportcard.com/badge/github.com/Jrohy/trojan)](https://goreportcard.com/report/github.com/Jrohy/trojan) [![Downloads](https://img.shields.io/github/downloads/Jrohy/trojan/total.svg)](https://img.shields.io/github/downloads/Jrohy/trojan/total.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) trojan多用户管理部署程序 ## 功能 - 在线web页面和命令行两种方式管理trojan多用户 - 启动 / 停止 / 重启 trojan 服务端 - 支持流量统计和流量限制 - 命令行模式管理, 支持命令补全 - 集成acme.sh证书申请 - 生成客户端配置文件 - 在线实时查看trojan日志 - 在线trojan和trojan-go随时切换 - 支持trojan://分享链接和二维码分享(仅限web页面) - 支持转化为clash订阅地址并导入到[clash_for_windows](https://github.com/Fndroid/clash_for_windows_pkg/releases)(仅限web页面) - 限制用户使用期限 ## 安装方式 *trojan使用请提前准备好服务器可用的域名* ### a. 一键脚本安装 ``` #安装/更新 source <(curl -sL https://git.io/trojan-install) #卸载 source <(curl -sL https://git.io/trojan-install) --remove ``` 安装完后输入'trojan'可进入管理程序 浏览器访问 https://域名 可在线web页面管理trojan用户 前端页面源码地址: [trojan-web](https://github.com/Jrohy/trojan-web) ### b. docker运行 1. 安装mysql 因为mariadb内存使用比mysql至少减少一半, 所以推荐使用mariadb数据库 ``` docker run --name trojan-mariadb --restart=always -p 3306:3306 -v /home/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=trojan -e MYSQL_ROOT_HOST=% -e MYSQL_DATABASE=trojan -d mariadb:10.2 ``` 端口和root密码以及持久化目录都可以改成其他的 2. 安装trojan ``` docker run -it -d --name trojan --net=host --restart=always --privileged jrohy/trojan init ``` 运行完后进入容器 `docker exec -it trojan bash`, 然后输入'trojan'即可进行初始化安装 启动web服务: `systemctl start trojan-web` 设置自启动: `systemctl enable trojan-web` 更新管理程序: `source <(curl -sL https://git.io/trojan-install)` ## 运行截图 ![avatar](asset/1.png) ![avatar](asset/2.png) ## 命令行 ``` Usage: trojan [flags] trojan [command] Available Commands: add 添加用户 clean 清空指定用户流量 completion 自动命令补全(支持bash和zsh) del 删除用户 help Help about any command info 用户信息列表 log 查看trojan日志 port 修改trojan端口 restart 重启trojan start 启动trojan status 查看trojan状态 stop 停止trojan tls 证书安装 update 更新trojan updateWeb 更新trojan管理程序 version 显示版本号 import [path] 导入sql文件 export [path] 导出sql文件 web 以web方式启动 Flags: -h, --help help for trojan ``` ## 注意 安装完trojan后强烈建议开启BBR等加速: [one_click_script](https://github.com/jinwyp/one_click_script) ## Thanks 感谢JetBrains提供的免费GoLand [![avatar](asset/jetbrains.svg)](https://jb.gg/OpenSource) ", Assign "at most 3 tags" to the expected json: {"id":"4500","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"