Skip to content

求助,xrayr in docker 对接xboard通信正常,但拉取订阅节点不可用 #777

@FerryboatSeranade

Description

@FerryboatSeranade

我对我的域名和通讯密钥,公私钥等进行了一些脱敏处理.
以下是我遇到的问题: 我要给一台节点机配置成Vless+Reality+xtls-rprx-vision,域名偷取addons.mozilla.org, 我成功让Xboard和XrayR进行了通信. 但是客户端V2rayN(已配置选择Xray作为核心)从Xboard拉取订阅时,拉取的节点实际无法上网(节点没有被ban,端口确实可以打开-因为我用Xray直接),报错信息如下.
尝试AI解答无果,遂来求助.

/XrayR-release# docker compose up

WARN[0004] /root/data/docker_data/XrayR-release/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
Attaching to xrayr-1

xrayr-1  | XrayR 0.9.4 (A Xray backend that supports many panels) 
xrayr-1  | time="2025-12-18T09:55:13+08:00" level=info msg="Start the panel.." func="github.com/XrayR-project/XrayR/panel.(*Panel).Start" file="github.com/XrayR-project/XrayR/panel/panel.go:165"
xrayr-1  | 2025/12/18 09:55:13 [Debug] app/log: Logger started
xrayr-1  | 2025/12/18 09:55:13 [Info] app/dns: DNS: created localhost client
xrayr-1  | 2025/12/18 09:55:13 [Warning] core: Xray 1.8.20 started
xrayr-1  | 2025/12/18 09:55:17 [Debug] app/proxyman/inbound: creating stream worker on 0.0.0.0:443
xrayr-1  | 2025/12/18 09:55:17 [Info] transport/internet/tcp: listening TCP on 0.0.0.0:443
xrayr-1  | time="2025-12-18T09:55:17+08:00" level=info msg="Added 1 new users" func="github.com/XrayR-project/XrayR/service/controller.(*Controller).addNewUser" file="github.com/XrayR-project/XrayR/service/controller/controller.go:428" Host="https://mydomain.com" ID=1 Type=Vless
xrayr-1  | time="2025-12-18T09:55:17+08:00" level=info msg="Start node monitor periodic task" func="github.com/XrayR-project/XrayR/service/controller.(*Controller).Start" file="github.com/XrayR-project/XrayR/service/controller/controller.go:165" Host="https://mydomain.com" ID=1 Type=Vless
xrayr-1  | time="2025-12-18T09:55:17+08:00" level=info msg="Start user monitor periodic task" func="github.com/XrayR-project/XrayR/service/controller.(*Controller).Start" file="github.com/XrayR-project/XrayR/service/controller/controller.go:165" Host="https://mydomain.com ID=1 Type=Vless
xrayr-1  | time="2025-12-18T09:55:17+08:00" level=info msg="Start cert monitor periodic task" func="github.com/XrayR-project/XrayR/service/controller.(*Controller).Start" file="github.com/XrayR-project/XrayR/service/controller/controller.go:165" Host="https://mydomain.com" ID=1 Type=Vless
xrayr-1  | time="2025-12-18T09:56:18+08:00" level=info msg="0 user deleted, 0 user added" func="github.com/XrayR-project/XrayR/service/controller.(*Controller).nodeInfoMonitor" file="github.com/XrayR-project/XrayR/service/controller/controller.go:307" Host="https://mydomain.com" ID=1 Type=Vless
xrayr-1  | 2025/12/18 09:57:07 [Info] [427130925] proxy/vless/inbound: firstLen = 0
xrayr-1  | 2025/12/18 09:57:07 [Info] [427130925] app/proxyman/inbound: connection ends > proxy/vless/encoding: failed to read request version > EOF
xrayr-1  | time="2025-12-18T09:57:19+08:00" level=info msg="0 user deleted, 0 user added" func="github.com/XrayR-project/XrayR/service/controller.(*Controller).nodeInfoMonitor" file="github.com/XrayR-project/XrayR/service/controller/controller.go:307" Host="https://mydomain.com" ID=1 Type=Vless
xrayr-1  | 2025/12/18 09:57:19 183.162.123.45:7201 rejected  proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:19 [Info] [3439812264] proxy/vless/inbound: firstLen = 517
xrayr-1  | 2025/12/18 09:57:19 [Info] [3439812264] app/proxyman/inbound: connection ends > proxy/vless/inbound: invalid request from 133.112.113.45:7201 > proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:19 183.162.123.45:7214 rejected  proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:19 [Info] [4105195186] proxy/vless/inbound: firstLen = 517
xrayr-1  | 2025/12/18 09:57:19 [Info] [4105195186] app/proxyman/inbound: connection ends > proxy/vless/inbound: invalid request from 133.112.113.45:7214 > proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:20 183.162.123.45:7220 rejected  proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:20 [Info] [1859829238] proxy/vless/inbound: firstLen = 517
xrayr-1  | 2025/12/18 09:57:20 [Info] [1859829238] app/proxyman/inbound: connection ends > proxy/vless/inbound: invalid request from 133.112.113.45:7220 > proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:20 183.162.123.45:7232 rejected  proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:20 [Info] [3535529013] proxy/vless/inbound: firstLen = 517
xrayr-1  | 2025/12/18 09:57:20 [Info] [3535529013] app/proxyman/inbound: connection ends > proxy/vless/inbound: invalid request from 133.112.113.45:7232 > proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:21 183.162.123.45:7296 rejected  proxy/vless/encoding: invalid request version
xrayr-1  | 2025/12/18 09:57:21 [Info] [3451090030] proxy/vless/inbound: firstLen = 517
xrayr-1  | 2025/12/18 09:57:21 [Info] [3451090030] app/proxyman/inbound: connection ends > proxy/vless/inbound: invalid request from 133.112.113.45:7296 > proxy/vless/encoding: invalid request version

xrayr-1 | time="2025-12-18T09:55:17+08:00" level=info msg="Added 1 new users" func="github.com/XrayR-project/XrayR/service/controller.(*Controller).addNewUser" file="github.com/XrayR-project/XrayR/service/controller/controller.go:428" Host="https://mydomain.com" ID=1 Type=Vless
这个日志表明确实是和我的xboard面板进行了通信,并且ID=1,Type=Vless

下面是我从Xboard用curl拉取的配置,因为我不知道怎么在Xboard中去看. curl命令是我在节点机上运行的.
下面这个命令是我要从NODE_ID=1这个标记拉取Xboard的配置,返回有意义的json,说明Xboard配置应当是正确的吧
HOST="https://mydomain.com"
KEY="E430F779xxxxxxxxxxxxC4F5E316672"
NODE_ID="1"

curl -s -X GET "${HOST}/api/v1/server/UniProxy/config?node_id=${NODE_ID}&node_type=vless"
-H "Token: ${KEY}"
| json_pp

{
"base_config" : {
"pull_interval" : 60,
"push_interval" : 60
},
"flow" : "xtls-rprx-vision",
"listen_ip" : "0.0.0.0",
"network" : "tcp",
"networkSettings" : null,
"protocol" : "vless",
"server_port" : 443,
"tls" : 2,
"tls_settings" : {
"allow_insecure" : false,
"private_key" : "MEgm7f3R_XHVKpiF432344324kmCWfPLDbkJaOS5GA",
"public_key" : "ZHHyXwLyn4PJ__2KUJpYCZze1211In_TvJ5QFxmNmkI",
"server_name" : "addons.mozilla.org",
"server_port" : "443",
"short_id" : "fsa012gez3fd12ef"
}
}
然后再看下UUID

HOST="https://mydomain.com"
KEY="E430F779xxxxxxxxxxxxC4F5E316672" # 记得换成新的
NODE_ID="1"

注意:这里把 config 改成了 user

curl -s -X GET "${HOST}/api/v1/server/UniProxy/user?node_id=${NODE_ID}&node_type=vless&token=${KEY}"
| json_pp

得到

{
"users" : [
{
"id" : 1,
"speed_limit" : null,
"uuid" : "0141ddbe-3d84-4eef-99d5-6bd36dd61e15"
}
]
}

然后我用这个uuid对应的订阅也肯定能从客户端V2ray中拉取到上面的节点信息吗,但是做ping测试或者连接,就报上面的日志 proxy/vless/encoding: invalid request version ,我向请教下哪里出了问题,很早以前我用XrayR对接过Xboard倒是挺好的. 是最近XrayR更新了吗,还是什么原因

我再补充一下我XrayR的docker yaml配置config/config.yml

/XrayR-release# cat docker-compose.yml 
version: '3'
services: 
  xrayr: 
    # image: cloudorz/xrayr:latest
    image: ghcr.io/xrayr-project/xrayr@sha256:ad16bfb5311221d6130c2f455ee447128e91587c941e65df82ccc7d487b50e77
    volumes:
      - ./config:/etc/XrayR/ # 映射配置文件夹
    restart: always
    environment:
      - TZ=Asia/Shanghai
    network_mode: host

/XrayR-release# cat config/config.yml 
Log:
  Level: debug # Log level: none, error, warning, info, debug 
  AccessPath: #/etc/XrayR/access.log # /etc/XrayR/access.Log
  ErrorPath: #/etc/XrayR/error.log # /etc/XrayR/error.log
DnsConfigPath: # /etc/XrayR/dns.json # Path to dns config, check https://xtls.github.io/config/dns.html for help
RouteConfigPath: # /etc/XrayR/route.json # Path to route config, check https://xtls.github.io/config/routing.html for help
InboundConfigPath: # /etc/XrayR/custom_inbound.json # Path to custom inbound config, check https://xtls.github.io/config/inbound.html for help
OutboundConfigPath: # /etc/XrayR/custom_outbound.json # Path to custom outbound config, check https://xtls.github.io/config/outbound.html for help
ConnectionConfig:
  Handshake: 4 # Handshake time limit, Second
  ConnIdle: 30 # Connection idle time limit, Second
  UplinkOnly: 2 # Time limit when the connection downstream is closed, Second
  DownlinkOnly: 4 # Time limit when the connection is closed after the uplink is closed, Second
  BufferSize: 64 # The internal cache size of each connection, kB
Nodes:
  -
    PanelType: "NewV2board" # Panel type: SSpanel, V2board, NewV2board, PMpanel, Proxypanel, V2RaySocks
    ApiConfig:
      ApiHost: "https://mydomain.com"
      ApiKey: "E430F779xxxxxxxxxxxxC4F5E316672"
      NodeID: 1
      NodeType: Vless # Node type: V2ray, Vmess, Vless, Shadowsocks, Trojan, Shadowsocks-Plugin
      Timeout: 30 # Timeout for the api request
      EnableVless: true # Enable Vless for V2ray Type
      EnableXTLS: true # Enable XTLS for V2ray and Trojan
      SpeedLimit: 0 # Mbps, Local settings will replace remote settings, 0 means disable
      DeviceLimit: 0 # Local settings will replace remote settings, 0 means disable
      RuleListPath: # /etc/XrayR/rulelist Path to local rulelist file
    ControllerConfig:
      ListenIP: 0.0.0.0 # IP address you want to listen
      SendIP: 0.0.0.0 # IP address you want to send pacakage
      UpdatePeriodic: 60 # Time to update the nodeinfo, how many sec.
      EnableDNS: false # Use custom DNS config, Please ensure that you set the dns.json well
      DNSType: AsIs # AsIs, UseIP, UseIPv4, UseIPv6, DNS strategy
      EnableProxyProtocol: false # Only works for WebSocket and TCP
      AutoSpeedLimitConfig:
        Limit: 0 # Warned speed. Set to 0 to disable AutoSpeedLimit (mbps)
        WarnTimes: 0 # After (WarnTimes) consecutive warnings, the user will be limited. Set to 0 to punish overspeed user immediately.
        LimitSpeed: 0 # The speedlimit of a limited user (unit: mbps)
        LimitDuration: 0 # How many minutes will the limiting last (unit: minute)
      GlobalDeviceLimitConfig:
        Enable: false # Enable the global device limit of a user
        RedisAddr: 127.0.0.1:6379 # The redis server address
        RedisPassword: YOUR PASSWORD # Redis password
        RedisDB: 0 # Redis DB
        Timeout: 5 # Timeout for redis request
        Expiry: 60 # Expiry time (second)
      EnableFallback: false # Only support for Trojan and Vless
      FallBackConfigs:  # Support multiple fallbacks
        -
          SNI: # TLS SNI(Server Name Indication), Empty for any
          Alpn: # Alpn, Empty for any
          Path: # HTTP PATH, Empty for any
          Dest: 80 # Required, Destination of fallback, check https://xtls.github.io/config/features/fallback.html for details.
          ProxyProtocolVer: 0 # Send PROXY protocol version, 0 for dsable
      CertConfig:
        CertMode: none # Option about how to get certificate: none, file, http, tls, dns. Choose "none" will forcedly disable the tls config.
        CertDomain: "node1.test.com" # Domain to cert
        CertFile: /etc/XrayR/cert/node1.test.com.cert # Provided if the CertMode is file
        KeyFile: /etc/XrayR/cert/node1.test.com.key
        Provider: alidns # DNS cert provider, Get the full support list here: https://go-acme.github.io/lego/dns/
        Email: test@me.com
        DNSEnv: # DNS ENV option used by DNS provider
          ALICLOUD_ACCESS_KEY: aaa
          ALICLOUD_SECRET_KEY: bbb

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions