V2Ray Poseidon搭配SSPanel遇到的一些问题

这不是一篇教你如何搭建机场的文章

事情是这样的,平常墙内媒体类软件都会选择性无视,偶尔逛逛B站舞蹈区,其他时间总要找到事情做,经常关注一些TG群和频道,看到便宜的鸡,总会想着买来折腾下,之前趁着Paypal夏日的10美金购物券活动,花了7RMB,撸了1年的RackNerd 主机  ,1G1C/3T/17G的配置,科学上网足够了,其他的折腾自行搜索。我选了San Jose地域,总体来说还不错,不懂评测,Just For Fun,简单看了下电信路由是从大西洋过去的:joy:。偶尔晚上会炸下,单看YouTube,我这晚上表现较好的时候4w+,白天的话6w+,我的网速在50Mbps左右,由于这个毕竟和很多因素有关,不能给出客观的评价,还是自己试下吧。
YouTube速率
这个是我白天用Clash.NET测试的,我用路由器的客户端直接拉胯和断流。当然了我已经 很满足了,毕竟相当于白嫖了。

遇到的哪些问题以及如何解决的

  1. 这个主机在我这边的用途很明确,就是科学上网,但是如果我就仅仅用一键脚本,一路回车下去,那也没啥意思。从长远来看,碰到重要的节假日,你可能都不记得当时是怎么用起来的了,可能又要浪费时间去折腾下,那我就在这个机子上多上几种协议,也可以顺便搞个前端面板之类的(V2Board或者SSPanel)。当然了为了不让主机负载太高,尽量别这样搞,在搞个机子放前端,我现在就这样的,我这台主要是放后端,由于这台我刚开始用了Trojan Poseidon后端,443端口被占用了,导致我后来想用V2ray的时候(ws+tls)组合,死活启动都是失败,从前端面板来看,节点是飘红的。再加上这是商业面板,网上的资料是少之又少,官网教程只是很简单的一笔带过,里面的坑对于刚摸索的人来说,一不小心就陷进去了,最后弄了1天,只能放弃。
  2. 看下面的内容前,请确保你之前已经搭建好了前端面板,也已经对接上了1种协议的后端,比如shadowsocks,SSR,v2ray或者Trojan,然后你只是想把vps更充分利用下,再试试其他协议是不是更好一点,总之,如果你遇到问题就焦虑的话,我劝你放弃,我不是闲的蛋疼,都不会给自己找事,本来很简单的问题,被我复杂化,完全可以多搞几台机子,分别跑不同的后端,或者同一种后端不同的协议。
  3. 先放一篇官网的教程,至于我为什么选择了Poseidon作为后端来使用Trojan,主要是我用了soga,然而启动是可以启动,但就是用不起来,我也找不到解决办法,也有可能是程序Bug,虽然开发者说支持Trojan,但这种你不花钱,还是先找能用起来的吧,如果你不差钱,那就另说。
  4. 按照上面的教程,先把时间校准下,和自己电脑时间差距不能太大,这个用vmess是这样的,我不知道现在解决了没。关闭防火墙,安装docker和docker-compose,确认docker服务启动,教程都有,我直接说关键点吧。
    • 由于后端用到了tls,就需要申请证书,后面配置的时候会用到,刚开始我以为如果要使用tls的话,必须要安装NGINX,然后给网站申请证书,但这里会有个问题,就是我原先安装的Trojanp已经吧443端口占用了,我的NGINX如果配置好证书启动的话,就不能用443了,虽然后来我把NGINX端口改为8443,但是当启动v2ray-ws-tls容器的时候,由于我主机端口用了8443,那么我会启动不了,于是我把NGINX关了,我认为NGINX可能就是你要更好的伪装会用到,但是Poseidon V2ray这边又是用的Docker来部署的,又是一大堆端口,文档也没解释清楚这些端口都是干啥用的,这里就会各种问题。这里我使用acme脚本来申请证书,如果用后端给的http和dns的方式,我都试了,总是申请证书失败,dns的话,好像是ml后缀的域名CloudFlare不支持,如果要部署在这里不出问题,还是买个便宜的域名吧,推荐namesilo的xyz后缀的域名,现在好像有活动,可以搜一下。安装acme:
      curl https://get.acme.sh | sh

      给acme设置别名并加到系统环境变量里:

      alias acme.sh=~/.acme.sh/acme.sh
      echo 'alias acme.sh=~/.acme.sh/acme.sh' >>/etc/profille
      source /etc/profile

      设置定时任务,自动执行证书 续签任务:

      crontab -e
      00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs

      创建用于存放证书的目录,我这里是用的宝塔面板:

      mkdir -p /www/server/panel/vhost/cert/example.domain.com  #这个是你在宝塔面板申请证书的时候,证书的存放位置,我这里是手动申请,其中example.domain.com替换为你自己的网站域名,你也可以放到你的网站根目录里,自行对应。

      验证你是否是此域名的拥有者,顺便检查下域名是否可以申请:

      acme.sh --issue -d puff.wordtian.ml --webroot /www/wwwroot/example.domain.com --log

      命令输出没有明显的红色报错,说明可以进行下面申请证书的操作了:

      acme.sh --install-cert -d example.domain.com \
      --key-file /www/server/panel/vhost/cert/example.domain.com/example.domain.com.key \
      --fullchain-file /www/server/panel/vhost/cert/example.domain.com/example.domain.com.cer \
      --reloadcmd  "nginx -s reload"      #其中的域名自行替换

      证书申请成功,系统会提示Cert success.。你可以到之前创建的用于存放证书的目录里看有没有证书文件。

    • 上面说了,由于NGINX和Poseidon V2ray的后端容器的端口会冲突,我就不在NGINX的配置文件里设置证书了。下面直接演示如何在SSPanel里添加节点,后端配置文件设置。在SSPanel的管理面板,进行添加节点的操作,格式如下:节点名称随便写。主要是节点地址:
      example.domain.com;8443;0;tls;ws;path=/|host=example.domain.com #这里的域名自行替换,是你之前看官方文档里申请的域名或者你自己前端面板的域名(前提是你前端和后端在一台机器上)。

      节点ip:你要科学上网的vps的公网ip地址。

      节点类型:V2ray,其他设置请自行设置。

      sspanel添加节点

    • 后端配置: 我们知道官方文档是用Docker来部署的容器作为后端,然后给了3种配置的配置文件:
      v2ray配置文件
      我们用的是ws-tls这个目录下的配置文件,进入这个目录,先使用vim把前端给对接上:

      vim config.json
      {
      "poseidon": {
       "panel": "sspanel-webapi",
       "license_key": "",  // 无效,或空的 license key 都会被当成社区版
       "nodeId": x,                // 面板里添加完节点后生成的自增ID,请自行替换你添加节点后前面的数字哦。
       // every N seconds
       "checkRate": 60,
       "panelUrl": "https://example.domain.com", // SSPanel 面板地址,请自行替换。
       "panelKey": "xxxxxxx",              // SSPanel 面板的配置文件中的 muKey 的值,请自行替换。
       "user": {
         // inbound tag, which inbound you would like add user to
         "inboundTag": "proxy",
         "level": 0,
         "alterId": 0,        // 和添加节点时那边统一。
         "security": "none"
       }// 是否通过 HAProxy 代理协议,获取用户的真实 IP
       "acceptProxyProtocol": false
      },
      "log": {
       "loglevel": "debug"
      },
      "inbounds": [
       {
         "port": 10086,        // 这里可能和NGINX的反向代理端口有关,由于我没有启动NGINX,也就默认了,当然了如果有哪位朋友知道这里如何搭配NGINX进行反代,麻烦评论区告知,我文章在补充下。
         "protocol": "vmess",
         "streamSettings": {
           "network": "ws",
           "wsSettings": {
             "path": "/"         // 这个和添加节点时保持统一。
           }
         },
         "tag": "proxy"
       }
      ],
      "outbounds": [{ "protocol": "freedom" }]
      }
      

      修改完毕,保存。下面编辑docker-compose.yml文件,这个是提供v2ray服务的后端,和上面的配置文件应该是有点关系的,但我说不清啥关系:joy:。这里注意是改端口,当然了如果你就搭建v2ray节点,就不会像我这么麻烦了,直接按官方文档里给的设置来就行了。然后我是手动指定证书路径到容器的路径,如果你的域名可以使用cloudflare的dns api来申请,建议用自动化的方式,我这太麻烦,也不太清楚是否必要。

      version: '3'
      
      services:
      v2ray-ws-tls:
       image: v2cc/poseidon
       container_name: v2ray-ws-tls
       restart: always
       ports:
       # 看到了么,下面端口的映射关系是hostPort:ContainerPort,然后这里的8443是我们添加节点时用的端口,10086是上一个配置文件的端口。
         - "8443:10086"
         # - "80:80"
         # 手动映射本地证书和key到容器,:前面的请自行替换你实际的路径。
       volumes:
         - ./config.json:/etc/v2ray/config.json
         - /www/server/panel/vhost/cert/example.domain.com/example.domain.com.cer:/etc/v2ray/v2ray.crt
         - /www/server/panel/vhost/cert/example.domain.com/example.domain.com.key:/etc/v2ray/v2ray.key
       environment:
         # 手动指定证书文件,配置文件需要映射到容器里面
         - CERT_FILE=/etc/v2ray/v2ray.crt
         - KEY_FILE=/etc/v2ray/v2ray.key
      
         # 让程序自动生成 TLS 证书,支持 http 和 dns 两种方式
         # 若使用 http 方式获取证书,需要将 80 端口映射到主机并放行
         - CERT_MODE=dns
         # dns_cf 或 dns_namesilo 或 dns_namecheap
         - DNS_PROVIDER=dns_cf
      # 申请 DNS 证书的域名
         - CERT_DOMAIN=demo.oppapanel.xyz
         # 使用 cloudflare DNS 验证
         - CF_Email=
         - CF_Key=
         # 使用 namesilo DNS 验证
         - Namesilo_Key=
         # 使用 namecheap DNS 验证
         - NAMECHEAP_USERNAME=
         - NAMECHEAP_API_KEY=
       logging:
         driver: "json-file"
         options:
           max-size: 2g

      设置好之后,保存。启动容器。

      cd /root/v2ray-poseidon/docker/sspanel/ws-tls
      dc up -d

      如果启动没有报错的话,可以用一下命令确认容器状态。有报错,需要具体分析了。

      dc ps  # 查看容器状态。
      dc logs -f  # 刷新后端日志,看有没有报错。
      dc stop   # 停止容器
      dc rm    # 删除容器
      dc restart  # 重启容器
      

      如果你想在一台机器上,弄更多节点,请参考更多节点配置

      如果有任何问题,欢迎留言讨论。这篇文章只做技术性探讨,由此引发的一切法律性风险请自行承担哈,the big brother is watching you。

 

 

 

2021年8月8日                                        添加评论

In Poseidon, sspanel, v2ray, 科学上网

# # # # # # # #

发表回复