安装ss-panel-v3-mod(魔改版)后端。 – outs – 宅…orz

安装ss-panel-v3-mod(魔改版)后端。 – outs – 宅…orz

前面https://zorz.cc/?p=190介绍了前端的搭建,这里记录一下后端的搭建。

相关资料

debian8搭建 sspanel v3 (new_master)魔改版前端
ocserv anyconnect(VPN freeradius)对接sspanel v3 mod

后端安装

安装 libsodium

  1. apt-get install build-essential wget -y
  2. wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz
  3. tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10
  4. ./configure && make -j2 && make install
  5. ldconfig

下载SSR魔改版

  1. apt-get install python-pip git -y
  2. git clone -b manyuser https://github.com/glzjin/shadowsocks.git
  3. cd shadowsocks
  4. chmod +x *.sh
  5. # 配置程序
  6. cp apiconfig.py userapiconfig.py
  7. cp config.json user-config.json

使用glzjinmod模式

这个模式后端将直接连接到数据库。
安装 cymysql

  1. pip install cymysql

修改shadowsocks目录中的userapiconfig.py

  1. # Config
  2. #节点ID 对应前端节点列表的ID
  3. NODE_ID = 1
  4.  
  5. #自动化测速,为0不测试,此处以小时为单位,要和 ss-panel 设置的小时数一致
  6. SPEEDTEST = 6
  7.  
  8. #云安全,自动上报与下载封禁IP,1为开启,0为关闭
  9. CLOUDSAFE = 1
  10.  
  11. #自动封禁SS密码和加密方式错误的 IP,1为开启,0为关闭
  12. ANTISSATTACK = 0
  13.  
  14. #是否接受上级下发的命令,如果你要用这个命令,请参考我之前写的东西,公钥放在目录下的 ssshell.asc
  15. AUTOEXEC = 1
  16.  
  17. #是否以多线程模式运行,关闭这个限速就会无效。请优先测试 1 ,开启试试,能运行没。
  18. MULTI_THREAD = 0
  19.  
  20. #多端口单用户设置,看重大更新说明,此处应和前端的.config.php的配置相同。
  21. MU_SUFFIX = 'zhaoj.in'
  22. #多端口单用户设置,看重大更新说明,此处应和前端的.config.php的配置相同。
  23. MU_REGEX = '%5m%id.%suffix'
  24.  
  25. #不明觉厉
  26. SERVER_PUB_ADDR = '127.0.0.1' # mujson_mgr need this to generate ssr link
  27. #此处不要修改
  28. API_INTERFACE = 'glzjinmod' #mudbjson, sspanelv2, sspanelv3, sspanelv3ssr, muapiv2(not support)
  29. #mudb,不要管
  30. MUDB_FILE = 'mudb.json'
  31.  
  32. # Mysql 数据库连接信息
  33. MYSQL_HOST = '127.0.0.1'
  34. MYSQL_PORT = 3306
  35. MYSQL_USER = 'ss'
  36. MYSQL_PASS = 'ss'
  37. MYSQL_DB = 'shadowsocks'
  38. MYSQL_UPDATE_TIME = 60
  39.  
  40. # 是否启用SSL连接,0为关,1为开
  41. MYSQL_SSL_ENABLE = 0
  42.  
  43. # 客户端证书目录,请看 https://github.com/glzjin/shadowsocks/wiki/Mysql-SSL%E9%85%8D%E7%BD%AE
  44. MYSQL_SSL_CERT = '/root/shadowsocks/client-cert.pem'
  45. MYSQL_SSL_KEY = '/root/shadowsocks/client-key.pem'
  46. MYSQL_SSL_CA = '/root/shadowsocks/ca.pem'
  47.  
  48. # API,不用管
  49. API_HOST = '127.0.0.1'
  50. API_PORT = 80
  51. API_PATH = '/mu/v2/'
  52. API_TOKEN = 'abcdef'
  53. API_UPDATE_TIME = 60
  54.  
  55. # Manager 不用管
  56. MANAGE_PASS = 'ss233333333'
  57.  
  58. #if you want manage in other server you should set this value to global ip
  59. MANAGE_BIND_IP = '127.0.0.1'
  60.  
  61. #make sure this port is idle
  62. MANAGE_PORT = 23333

使用modwebapi模式

安装相关软件。

  1. apt-get install libssl-dev python-dev libffi-dev python-setuptools -y
  2. pip install requests

修改shadowsocks目录中的userapiconfig.py

  1. API_INTERFACE = 'modwebapi' # glzjinmod, modwebapi
  2. WEBAPI_URL = '网站URL,需要完整输入https://'
  3. WEBAPI_TOKEN = '需要和前端的.config.php中$System_Config['muKey'] = 'TOKEN';'相同。

其他设置参考上面的配置说明。
测试通讯:

curl 站点地址/mod_mu/func/ping?key=WEBAPI_TOKEN

其中 WEBAPI_TOKEN 为您网站 config/.config.php 内 muKey 的值

有返回pong就表明可以正常通讯了
使用此模式建议将nginx的keepalive修改为75。
修改/usr/local/nginx/conf/nginx.conf

  1. keepalive_timeout 75;

面板会验证 api 请求的来源 IP 是否为节点 IP,如果用了 CDN,记得想办法把正确的 IP 传到面板上,比如用 nginx 的 real_ip 模块,这里简单说下 LNMP 重新安装 nginx 并开启real_ip 模块。这里以CDN为CLOUDFLARE为例,可以参考本博客的另外一篇文章:https://zorz.cc/post/nginx-cdn-real-ip.html
这里的修改是修改前端面板的NGINX配置:debian8搭建 sspanel v3 (new_master)魔改版前端

  1. set_real_ip_from 103.21.244.0/22;
  2. set_real_ip_from 103.22.200.0/22;
  3. set_real_ip_from 103.31.4.0/22;
  4. set_real_ip_from 104.16.0.0/12;
  5. set_real_ip_from 108.162.192.0/18;
  6. set_real_ip_from 131.0.72.0/22;
  7. set_real_ip_from 141.101.64.0/18;
  8. set_real_ip_from 162.158.0.0/15;
  9. set_real_ip_from 172.64.0.0/13;
  10. set_real_ip_from 173.245.48.0/20;
  11. set_real_ip_from 188.114.96.0/20;
  12. set_real_ip_from 190.93.240.0/20;
  13. set_real_ip_from 197.234.240.0/22;
  14. set_real_ip_from 198.41.128.0/17;
  15. set_real_ip_from 199.27.128.0/21;
  16. set_real_ip_from 2400:cb00::/32;
  17. set_real_ip_from 2606:4700::/32;
  18. set_real_ip_from 2803:f800::/32;
  19. set_real_ip_from 2405:b500::/32;
  20. set_real_ip_from 2405:8100::/32;
  21. set_real_ip_from 2c0f:f248::/32;
  22. set_real_ip_from 2a06:98c0::/29;
  23.  
  24. # use any of the following two
  25. # real_ip_header CF-Connecting-IP;
  26. real_ip_header X-Forwarded-For;
  27. real_ip_recursive on;

如果使用 nginx 的 real_ip 模块依旧报错, 面板验证不了请求来源的 IP, 这时候就需要修改 hosts 文件

  1. vi /etc/hosts
  2. # 添加你的面板IP 和 网站域名 如:
  3. 1.2.3.4 ss.panel

如果您要使用这个对用户友好的审计规则阻断页面功能,请在 user-config.json 中将 friendly_detect 设置为 1(没有这个设置就自己添加一个),然后试着访问某个在审计规则里的 http 网页就可以看到效果了。当然目前仅对访问 80 端口的 http 请求有效。

如果您想自定义这个阻断页面的内容,可以复制 detect.html 为 user-detect.html 然后修改 user-detect.html ,重启后端即可自定义。

运行后端

运行的话, 有几种方式

python server.py 用于调错的
./run.sh 无日志后台运行
./logrun.sh 有日志后台运行
supervisord
这里说下 使用Supervisor守护进程启动ssr

  1. # 安装
  2. apt-get install supervisor -y
  3.  
  4. # 写入配置
  5. vi /etc/supervisor/conf.d/ssr.conf
  6.  
  7. # 写入以下内容
  8. [program:ssr]
  9. command=python /root/shadowsocks/server.py
  10. autorestart=true
  11. autostart=true
  12. user=root
  13.  
  14. # 重启Supervisor服务。
  15. /etc/init.d/supervisor restart
  16.  
  17. # 重启 ssr
  18. supervisorctl restart ssr
  19.  
  20. # 查看Supervisor服务运行状态。
  21. supervisorctl status
  22.  
  23. # 如果遇到问题,可以检查日志:
  24. supervisorctl tail -f ssr stderr
  25.  
  26. # 如果使用supervisor进程守护,需要修改文件vi /etc/default/supervisor,添加一行:
  27. ulimit -n 1024000