One-Click Installation
bash <(curl -Ls https://raw.githubusercontent.com/perfect-panel/XrayR-release/master/install.sh)
Docker Installation
curl -fsSL https://get.docker.com | bash -s docker
docker pull ghcr.io/perfect-panel/xrayr:latest && docker run --restart=always --name xrayr -d -v ${PATH_TO_CONFIG}/config.yml:/etc/XrayR/config.yml --network=host ghcr.io/perfect-panel/xrayr:latest
Docker Compose Installation
# Install Docker and Docker Compose
curl -fsSL https://get.docker.com | bash -s docker
# Clone the configuration
git clone https://github.com/perfect-panel/XrayR-release
# Change directory
cd XrayR-release
# Edit the config, please refer to the configuration items, save and continue
vi ./config/config.yml
# Start
docker compose up -d
Configuration Item Description:
Log:
Level: none # Log level: none, error, warning, info, debug
AccessPath: # /etc/XrayR/access.Log
ErrorPath: # /etc/XrayR/error.log
DnsConfigPath: # /etc/XrayR/dns.json Path to DNS config
ConnectionConfig:
Handshake: 4 # Handshake time limit, seconds
ConnIdle: 10 # Connection idle time limit, seconds
UplinkOnly: 2 # Time limit when the downstream connection is closed, seconds
DownlinkOnly: 4 # Time limit when the connection is closed after the uplink is closed, seconds
BufferSize: 64 # The internal cache size of each connection, kB
Nodes:
- PanelType: 'PPanel' # Panel type: PPanel, SSpanel, V2board, NewV2board, PMpanel, Proxypanel, V2RaySocks
ApiConfig:
ApiHost: 'http://127.0.0.1:667'
ApiKey: '123'
NodeID: 41
NodeType: V2ray # Node type: V2ray, Shadowsocks, Trojan
Timeout: 30 # Timeout for the API request
EnableVless: false # Enable Vless for V2ray Type
EnableXTLS: false # 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 rule list file
ControllerConfig:
ListenIP: 0.0.0.0 # IP address you want to listen on
SendIP: 0.0.0.0 # IP address you want to send packages to
UpdatePeriodic: 60 # Time to update the node info, in seconds
EnableDNS: false # Use custom DNS config, please ensure that you set the dns.json correctly
DNSType: AsIs # AsIs, UseIP, UseIPv4, UseIPv6, DNS strategy
EnableProxyProtocol: false # Only works for WebSocket and TCP
EnableFallback: false # Only supports Trojan and Vless
FallBackConfigs: # Support multiple fallbacks
- SNI: # TLS SNI (Server Name Indication), empty for any
Path: # HTTP PATH, empty for any
Dest: 80 # Required, destination of fallback, check https://xtls.github.io/config/fallback/ for details.
ProxyProtocolVer: 0 # Send PROXY protocol version, 0 to disable
CertConfig:
CertMode: dns # Option about how to get certificate: none, file, http, dns. Choosing "none" will forcibly disable the TLS config.
CertDomain: 'node1.test.com' # Domain for the certificate
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: [email protected]
DNSEnv: # DNS ENV options used by DNS provider
ALICLOUD_ACCESS_KEY: aaa
ALICLOUD_SECRET_KEY: bbb