搭建 SSPanel Uim 前端,对接 soga v2ray 或 trojan 后端教程

一、前置要求

耐心

安装需要花费许多时间,有可能还会安装失败,需要重来,确保你有足够的耐心和时间

基础知识

如果你什么都不懂,比如连端口都不知道怎么放行,Linux 常见命令也不会,遇到问题也不会 Google,建议你先学习好相关知识再来

域名一个

确保你对域名解析等概念和操作比较熟悉,这里不会教你这些内容。

VPS 系统要求

  • Cent OS 7 及以上
  • Ubuntu 16 及以上
  • Debian 9 及以上

前端 VPS 配置要求

  • 1 CPU 以上
  • 个人使用 1G 即可(需要swap),长期稳定运行建议 2 G 及以上
  • 10 G 硬盘空间及以上

建站的服务器推荐选择稳定可靠的大商家,国内网络可以不做过多要求,国际网络要稳定,因为通常是需要套 CDN 的。不套 CDN 的话,建议买高防服务器。

以下是推荐的服务器商家:vultr

后端 VPS 配置要求

没有硬性要求,取决于后端需要运行多少用户

二、安装宝塔

Cent OS

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

Ubuntu

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

Debian

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

等待脚本运行完成,完成后脚本会输出宝塔面板访问地址和宝塔用户名密码,进入浏览器登录即可。如果打不开的话,那就是防火墙没放行,这个要到 VPS 商家面板里放行。

安装宝塔完成

三、安装 SSPanel Uim

安装 LNMP

登录宝塔后会提示安装 LNMP,我们这里选择安装 Nginx、MySQL、PHP、phpMyAdmin,注意版本不要选错。

点击一键安装后宝塔会在后台进行安装,这个过程比较久,可能需要十几分钟,安装完成后再继续下面的教程。

安装 LNMP

配置 PHP

进入<软件商店>,找到刚刚安装的 PHP 7.4,点击设置

设置php

删除如图所示的函数。

删除禁用函数

部署 SSPanel Uim

创建站点

选择<网站>,点击添加站点

添加站点

这里假设你的域名为 aaa.com,并且已经将 www.aaa.com 解析到了 VPS 的 IP 地址上,按照以下配置创建站点。

数据库用户名和密码可以自定义。

创建站点

创建站点后会帮你创建数据库,数据库名默认和你的数据库用户名一样,注意不要搞混。

创建成功

安装 SSPanel Uim

自行将命令中的<域名>替换为创建站点时的域名,教程里是 www.aaa.com

进入站点目录,并删除自动创建的文件

cd /www/wwwroot/域名/
rm * -rf

下载 SSPanel Uim 最新版

以下两条命令只运行一个,根据你的需要进行选择

# 下载 master 分支,代码很久没更新了,不建议使用
git clone -b master https://github.com/Anankke/SSPanel-Uim.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard

# 下载 dev 分支
git clone -b dev https://github.com/Anankke/SSPanel-Uim.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard

安装SSPanel Uim,注意替换<域名>替换为创建站点时的域名,教程里是 www.aaa.com

git config core.filemode false
wget https://getcomposer.org/installer -O composer.phar
php composer.phar
php composer.phar install
cp config/.config.example.php config/.config.php
cp config/appprofile.example.php config/appprofile.php
cd ../
chmod -R 755 域名/
chown -R www:www 域名/
ln -s /www/wwwroot/域名/sql/glzjin_all.sql /www/backup/database/

修改站点

修改之前添加的站点,在网站目录中修改运行目录,并保存

修改运行目录

伪静态加入以下内容并保存

location / {
    try_files $uri /index.php$is_args$args;
}
伪静态设置

设置 ssl 使用 https 访问,宝塔会自动帮你申请证书,申请完之后记得勾选强制 HTTPS,这里不做演示了

设置ssl

导入数据库

如果这里没出现文件,那么则运行此命令:ln -s /www/wwwroot/域名/sql/glzjin_all.sql /www/backup/database/

导入数据库

配置 config

该文件需要配置许多东西,这里只讲基本配置,确保网站能够正常运行,其它的配置可以自行查看配置文件里的说明进行配置

配置 config

配置以下内容后,记得保存,注意根据你实际情况进行配置,不要跟我的一样

配置

创建管理员账号以及其它初始化工作

cd /www/wwwroot/域名/
php xcat User createAdmin
php xcat User resetTraffic
php xcat SyncRadius syncusers
php xcat Tool initQQWry
php xcat Tool initdownload

至此,SSPanel Uim 安装完毕,你现在可以打开 http://www.aaa.com 来访问你的网站,并登录刚才创建的管理员账号

四、安装 soga 后端

https://github.com/sprov065/soga

docker 启动方式请查看:https://github.com/sprov065/soga/wiki

soga 后端是一个支持 v2ray 和 trojan 的后端

v2ray

soga 后端针对 v2ray 占内存的特点使用 C 语言特别优化了 v2ray 的内存占用,在相同用户数量和 alterId 下,相对于原版 v2ray 来说可节省 40-60% 的内存空间,用户数量越多,节省的内存就越多。

trojan

trojan 相对于 v2ray 来说更轻量和高效,在大量用户下也几乎不占多少内存,推荐优先选择 trojan。

一键安装,安装完成不要着急启动,查看后面的教程进行对接

bash <(curl -Ls https://blog.sprov.xyz/soga.sh)

soga 管理命令

soga              - 显示管理菜单 (功能更多)
soga start        - 启动 soga
soga stop         - 停止 soga
soga restart      - 重启 soga
soga status       - 查看 soga 状态
soga enable       - 设置 soga 开机自启
soga disable      - 取消 soga 开机自启
soga log          - 查看 soga 日志
soga update       - 更新 soga
soga install      - 安装 soga
soga uninstall    - 卸载 soga

五、对接 soga 后端 v2ray 功能

同步时间(重要)

v2ray 节点需要进行时间同步,时间若与客户端相差太大则无法连接

CentOS 7

yum install -y ntp
systemctl enable ntpd
ntpdate -q 0.rhel.pool.ntp.org
systemctl restart ntpd

Debian 9 / Ubuntu 16

apt-get install -y ntp
systemctl enable ntp
systemctl restart ntp

进入管理面板,添加一个 v2ray 节点

添加节点

如图,节点地址格式按照以下说明进行配置,其余配置自行设置

节点配置

设置节点地址

  • 假设有域名 hk.aaa.com,根据具体示例开启或未开启 CDN,服务器 IP 为 1.3.5.7
  • path 参数需以 / 开头
  • server 参数是显示给用户连接的地址,在开启 CDN 的情况下一定要填 CDN 域名,否则将无法使用 CDN
  • NAT 时使用 inside_port,inside_port 表示节点内部监听的端口,当 NAT 商家提供给你的外部端口和你服务器监听的内部端口不一致时使用

节点地址格式:

IP;用户连接的端口;alterId;(tls或不填);(tcp或ws);path=/xxx|host=xxxx.com|server=xxx.com|inside_port=xxx

tcp 示例,请注意 tcp 后面有两个分号

ip;12345;2;tcp;;server=域名
示例:1.3.5.7;12345;2;tcp;;server=hk.domain.com

tcp + tls 示例

ip;12345;2;tcp;tls;server=域名|host=域名
示例:1.3.5.7;12345;2;tcp;tls;server=hk.domain.com|host=hk.domain.com

ws 示例,若不用 CDN,可以去掉 host,注意ws前有两个分号

ip;80;2;ws;;path=/xxx|server=域名|host=CDN域名
示例:1.3.5.7;80;2;ws;;path=/v2ray|server=hk.domain.com|host=hk.domain.com

ws + tls 示例,若不用 CDN,可以去掉 host

ip;443;2;ws;tls;path=/xxx|server=域名|host=CDN域名
示例:1.3.5.7;443;2;ws;tls;path=/v2ray|server=hk.domain.com|host=hk.domain.com

偏移端口 ws

当用户连接端口与程序监听端口不一致时使用,例如,中转机器连接端口与后端监听端口不同时

ip;监听端口;2;ws;;path=/xxx|server=域名|host=CDN域名|outside_port=用户连接端口

中转使用场景解释

落地服务器IP;落地服务器监听端口;2;ws;;path=/xxx|server=转发服务器IP或域名|host=CDN域名|outside_port=转发服务器监听端口
示例:1.3.5.7;80;2;ws;;path=/v2ray|server=hk.domain.com|host=hk.domain.com|outside_port=34567

偏移端口 ws + tls

当用户连接端口与程序监听端口不一致时使用,例如,中转机器连接端口与后端监听端口不同时

ip;监听端口;2;ws;tls;path=/xxx|server=域名|host=CDN域名|outside_port=用户连接端口

中转使用场景解释

落地服务器IP;落地服务器监听端口;2;ws;tls;path=/xxx|server=转发服务器IP或域名|host=CDN域名|outside_port=转发服务器监听端口
示例:1.3.5.7;443;2;ws;tls;path=/v2ray|server=hk.domain.com|host=hk.domain.com|outside_port=34567

tcp 模式也是同理,这里不再举例。

配置 soga

编辑配置文件 /etc/soga/soga.conf

基础配置

type=sspanel-uim                             # 必填这个
server_type=v2ray                            # 必填这个
api=webapi                                   # webapi 或 db,表示 webapi 对接或数据库对接

# webapi 对接
webapi_url=https://xxx.com/                  # webapi url,填写面板主页地址
webapi_mukey=xxxx                            # webapi key

# 数据库对接
db_host=db.xxx.com                           # 数据库地址
db_port=3306                                 # 数据库端口
db_name=name                                 # 数据库名
db_user=root                                 # 数据库用户名
db_password=asdasdasd                        # 数据库密码

node_id=1                                    # 节点id
soga_key=                                    # 授权key,社区版无需填写,最多支持88用户,商业版无限制
user_conn_limit=0                            # 限制用户IP数,0代表无限制,默认会优先使用面板设置的限制IP数,在部分旧版面板下可能会获取不到,则使用这个值

force_close_ssl=false                        # 设为true可强制关闭tls,即使前端开启tls,soga也不会开启tls,方便用户自行使用nginx、caddy等反代

配置证书

若未开启 tls,则无需配置证书

soga 支持三种方式配置证书,任选其一即可

① 手动指定证书路径

  • 以 / 开头的绝对路径
cert_file=                                   # 手动指定证书路径
key_file=                                    # 手动指定密钥路径

② http 模式自动申请证书(推荐)

  • 确保服务器中没有其它程序占用 80 端口,申请和续签时需要临时使用
  • 确保域名已解析到本服务器的IP
  • 确保未开启CDN,若需开启CDN,则推荐方式三
cert_domain=xxx.com                          # 申请证书的域名
cert_mode=http                               # 申请模式

③ dns 模式自动申请证书

CloudFlare 配置示例

cert_domain=xxx.com                          # 申请证书的域名
cert_mode=dns                                # 申请模式
dns_provider=dns_cf                          # DNS 提供商

[email protected]                      # CF 邮箱,注意加 DNS_ 前缀
DNS_CF_Key=xxxxx                             # CF API 密钥,注意加 DNS_ 前缀

DNSPod 配置示例

cert_domain=xxx.com                          # 申请证书的域名
cert_mode=dns                                # 申请模式
dns_provider=dns_dp                          # DNS 提供商

DNS_DP_Id=111                                # DNSPod 用户 id,注意加 DNS_ 前缀
DNS_DP_Key=xxxxx                             # DNSPod API 密钥,注意加 DNS_ 前缀

其它的 DNS 服务商都能在这个页面找到:https://github.com/acmesh-official/acme.sh/wiki/dnsapi

配置要点:

  • 找到 DNS 提供商的名称,以 dns_ 开头,后面跟提供商的缩写
  • 找到 DNS 提供商所需要配置的内容,区分大小写,一般都是 API 密钥之类的,注意要在 soga 配置中加上 DNS_ 前缀,防止配置冲突

启动 soga

若启动失败,则使用 soga log 查看日志输出,并检查所有的配置是否有误

soga start

六、对接 soga 后端 trojan 功能

进入管理面板-节点列表,添加一个 Trojan 节点,其余配置自行设置

添加 trojan 节点

配置节点地址

节点地址格式:

域名或IP;port=连接端口#偏移端口  (偏移端口可选)

示例:

未加入偏移端口,后端实际监听 443 端口,用户连接 443 端口

hk.aaa.com;port=443

偏移端口

加入偏移端口后,后端实际监听 12345 端口,用户连接 443 端口

hk.aaa.com;port=443#12345

中转使用场景

hk.aaa.com;port=落地机监听端口#中转机监听端口

配置 soga

编辑配置文件 /etc/soga/soga.conf

基础配置

type=sspanel-uim                             # 必填这个
server_type=trojan                           # 必填这个
api=webapi                                   # webapi 或 db,表示 webapi 对接或数据库对接

# webapi 对接
webapi_url=https://xxx.com/                  # webapi url,填写面板主页地址
webapi_mukey=xxxx                            # webapi key

# 数据库对接
db_host=db.xxx.com                           # 数据库地址
db_port=3306                                 # 数据库端口
db_name=name                                 # 数据库名
db_user=root                                 # 数据库用户名
db_password=asdasdasd                        # 数据库密码

node_id=1                                    # 节点id
soga_key=                                    # 授权key,社区版无需填写,最多支持88用户,商业版无限制
user_conn_limit=0                            # 限制用户IP数,0代表无限制,默认会优先使用面板设置的限制IP数,在部分旧版面板下可能会获取不到,则使用这个值
trojan_remote_addr=127.0.0.1                 # trojan 反代地址,防止主动探测,务必搭建一个http服务
trojan_remote_port=80                        # trojan 反代端口,防止主动探测,务必搭建一个http服务

配置证书

若未开启 tls,则无需配置证书

soga 支持三种方式配置证书,任选其一即可

① 手动指定证书路径

  • 以 / 开头的绝对路径
cert_file=                                   # 手动指定证书路径
key_file=                                    # 手动指定密钥路径

② http 模式自动申请证书(推荐)

  • 确保服务器中没有其它程序占用 80 端口,申请和续签时需要临时使用
  • 确保域名已解析到本服务器的IP
  • 确保未开启CDN,若需开启CDN,则推荐方式三
cert_domain=xxx.com                          # 申请证书的域名
cert_mode=http                               # 申请模式

③ dns 模式自动申请证书

CloudFlare 配置示例

cert_domain=xxx.com                          # 申请证书的域名
cert_mode=dns                                # 申请模式
dns_provider=dns_cf                          # DNS 提供商

[email protected]                      # CF 邮箱,注意加 DNS_ 前缀
DNS_CF_Key=xxxxx                             # CF API 密钥,注意加 DNS_ 前缀

DNSPod 配置示例

cert_domain=xxx.com                          # 申请证书的域名
cert_mode=dns                                # 申请模式
dns_provider=dns_dp                          # DNS 提供商

DNS_DP_Id=111                                # DNSPod 用户 id,注意加 DNS_ 前缀
DNS_DP_Key=xxxxx                             # DNSPod API 密钥,注意加 DNS_ 前缀

其它的 DNS 服务商都能在这个页面找到:https://github.com/acmesh-official/acme.sh/wiki/dnsapi

配置要点:

  • 找到 DNS 提供商的名称,以 dns_ 开头,后面跟提供商的缩写
  • 找到 DNS 提供商所需要配置的内容,区分大小写,一般都是 API 密钥之类的,注意要在 soga 配置中加上 DNS_ 前缀,防止配置冲突

启动 soga

若启动失败,则使用 soga log 查看日志输出,并检查所有的配置是否有误

soga start

七、购买 soga 后端商业版

目前 soga 社区版最多支持 88 名用户,若需要解除此限制,需要购买商业版,详情请点击:https://github.com/sprov065/soga/wiki

这篇文章有 13 个评论

  1. 头像

    很棒的后端,教程也很详细。
    不过前端部署的教程好像少了一个最后的定时任务。。。
    30 22 * * * php /www/wwwroot/你的文件夹名/xcat SendDiaryMail
    0 0 * * * php -n /www/wwwroot/你的文件夹名/xcat Job DailyJob
    */1 * * * * php /www/wwwroot/你的文件夹名/xcat Job CheckJob

  2. 头像

    找到原因了,节点IP默认1没改

  3. 头像

    Jun 29 09:49:24 VM_0_2_centos soga[11235]: OSError: [Errno 98] error while attempting to bind on address (‘0.0.0.0’, 80): address already in use
    请问,soga启动不了,报上面错误,用的是指定证书路径。

  4. 头像

    Jun 18 02:01:35 xxx soga[10831]: 2020-06-18 02:01:35-root-INFO-Already config cert_file and key_file
    Jun 18 02:01:35 xxx soga[10831]: 2020-06-18 02:01:35-root-INFO-you are using free license, max users: 88
    Jun 18 02:01:36 xxx soga[10831]: 2020-06-18 02:01:36-root-INFO-start v2ray: tcp
    Jun 18 02:01:36 xxx soga[10831]: 2020-06-18 02:01:36-root-INFO-update user: 2
    Jun 18 02:01:36 xxx soga[10831]: 2020-06-18 02:01:36-root-INFO-start at :10000
    Jun 18 02:01:36 xxx soga[10831]: 2020-06-18 02:01:36-root-INFO-stream: tcp tls: True
    Jun 18 02:03:16 xxx soga[10831]: 2020-06-18 02:03:16-root-INFO-closing server…
    Jun 18 02:03:16 xxx soga[10831]: 2020-06-18 02:03:16-root-INFO-close server success
    Jun 18 02:03:16 xxx soga[10831]: 2020-06-18 02:03:16-root-INFO-update user: 2
    Jun 18 02:03:16 xxx soga[10831]: 2020-06-18 02:03:16-root-INFO-start at :10000
    Jun 18 02:03:16 xxx soga[10831]: 2020-06-18 02:03:16-root-INFO-stream: tcp tls: True
    Jun 18 02:03:16 xxx soga[10831]: 2020-06-18 02:03:16-root-INFO-start v2ray: tcp
    Jun 18 02:03:17 xxx soga[10831]: 2020-06-18 02:03:17-root-INFO-update user: 2
    Jun 18 02:04:57 xxx soga[10831]: 2020-06-18 02:04:57-root-INFO-update user: 2
    Jun 18 02:06:37 xxx soga[10831]: 2020-06-18 02:06:37-root-INFO-update user: 2
    Jun 18 02:08:17 xxx soga[10831]: 2020-06-18 02:08:17-root-INFO-closing server…
    Jun 18 02:08:17 xxx soga[10831]: 2020-06-18 02:08:17-root-INFO-close server success
    Jun 18 02:08:17 xxx soga[10831]: 2020-06-18 02:08:17-root-INFO-update user: 2
    Jun 18 02:08:17 xxx soga[10831]: 2020-06-18 02:08:17-root-INFO-start at :10000
    Jun 18 02:08:17 xxx soga[10831]: 2020-06-18 02:08:17-root-INFO-stream: tcp tls: True
    Jun 18 02:08:17 xxx soga[10831]: 2020-06-18 02:08:17-root-INFO-start v2ray: tcp
    Jun 18 02:08:18 xxx soga[10831]: 2020-06-18 02:08:18-root-INFO-update user: 2
    Jun 18 02:09:58 xxx soga[10831]: 2020-06-18 02:09:58-root-INFO-update user: 2
    Jun 18 02:11:38 xxx soga[10831]: 2020-06-18 02:11:38-root-INFO-update user: 2
    Jun 18 02:13:18 xxx soga[10831]: 2020-06-18 02:13:18-root-INFO-update user: 2

    前端灯亮了
    后端是安卓v2rayNG
    证书是手动指定的一个有效的CA证书
    前端、v2ray后端、手机的时间都同步了,误差在2秒内

    连接后手机上面显示 io: read/write on closed pipe
    无法打开网页

    手机v2rayNG里面“允许不安全连接:true”以后就能恢复正常

    该怎么处理呢?

  5. 头像

    soga[1079]: 2020-06-16 04:15:35-root-WARNING-get https://www.xxx.com/mod_mu/nodes/1/info failed: Expecting value: line 1 column 1 (char 0), result: Could not connect to main database: SQLSTATE[HY000] [2002] Connection refused, status:200

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

关闭菜单