项目简介
x-ui是一个基于xray-core为核心的图形化代理搭建工具,前端使用Vue框架,后端使用Golang编写。
它的目的是为了帮助各位更好地去搭建属于自己的代理服务,并且能够通过Telegram bot进行便捷地监控与管理。
简单来说,X-UI就是一个搭建代理的神器,你不需要关注底层配置文件应该怎么写,只要简单的在网页上按部就班的输入一些信息即可,极大的降低了用户的上手难度。
x-ui主要包含以下功能
- 系统状态监控
- 支持单端口多用户、多协议,网页可视化操作
- 支持的协议:vmess、vless、trojan、shadowsocks、shadowsocks 2022、dokodemo-door、socks、http
- 支持配置更多传输配置:http、tcp、ws、grpc、kcp、quic
- 流量统计,限制流量,限制到期时间,一键重置与设备监控
- 可自定义 xray 配置模板
- 支持 https 访问面板(自备域名 + ssl 证书)
- 支持一键SSL证书申请且自动续签
- Telegram bot通知、控制功能
- 更多高级配置项,详见面板
具体使用、配置细节以及问题排查请查看官方wiki:wiki
安装环境
工具 | 版本 |
---|---|
系统 | CentOS 7 |
Docker | 25.0.4 |
Docker-Compose | 2.24.7 |
x-ui | FranzKafkaYu/x-ui:0.3.4.4 |
由于原版vaxilu/x-ui已经已经停止更新,这里使用了FranzKafkaYu的版本,GitHub地址:FranzKafkaYu/x-ui
安装步骤
安装Docker
具体安装步骤见:Docker安装教程
安装docker-compose
具体安装步骤见:Docker-Compose安装教程
安装x-ui
新建目录
mkdir -p /你的路径/x-ui/data/db /你的路径/x-ui/data/cert
编写docker-compose.yml文件
在x-ui目录下新建docker-compose.yml文件,并填写以下内容
version: "3.9"
services:
xui:
# 镜像tag使用alpha-zh表示是FranzKafkaYu的镜像,如果需要英文,则使用enwaiax/x-ui:alpha
image: enwaiax/x-ui:alpha-zh
container_name: xui
# 映射的本地路径,左侧为自己的实际路径,按实际情况填写即可
volumes:
# 数据库文件路径
- $PWD/data/db/:/etc/x-ui/
# 密钥文件路径
- $PWD/data/cert/:/root/cert/
# 时区文件(非必须)
- /etc/localtime:/etc/localtime:ro
# 重启策略。如果容器退出,Docker将自动重启它,除非手动停止它
restart: unless-stopped
# 将使用宿主机网络
network_mode: host
启动容器
在docker-compose.yml文件所在目录下执行
docker-compose up -d
至此x-ui就安装好了
配置Nginx(非必须)
如果想通过Nginx代理的话,则需要如下配置
修改nginx.conf
修改conf/nginx.conf文件
events {
worker_connections 1024;
}
# 非必须,若需使用Reality等协议才需要,按需配置即可
stream {
include /etc/nginx/conf.d/*_stream.conf;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_timeout 300;
include /etc/nginx/conf.d/*_http.conf;
}
重点是stream块下的 include /etc/nginx/conf.d/*_stream.conf;
与http块下的 include /etc/nginx/conf.d/*_http.conf;
我们具体的配置都写在这个路径下的配置文件中。
新建xui_http.conf配置
在conf.d目录下新建文件xui_http.conf,该文件为x-ui的http配置,填写如下内容
server {
# 监听443端口并复用端口
# 如有https需求,则添加ssl
# 由于需要与stream复用端口,所以要加reuseport,如没有这个需求可以不加
listen 443 ssl reuseport;
# 按需填写域名即可
server_name xxx.xxx.com;
charset utf-8;
access_log off;
# 若listen中开启了ssl,则填写如下配置
ssl_certificate /证书存储路径/fullchain.cer;
ssl_certificate_key /证书存储路径/域名.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
# x-ui配置,路径为面板url根路径,按实际情况填写。首次打开前可以配置为/,首次打开后生成了新的根路径再来修改配置即可。
location /xxxx {
# 默认面板UI端口为54321
proxy_pass http://127.0.0.1:54321;
proxy_http_version 1.1;
proxy_set_header Host $host;
sendfile on;
keepalive_requests 25600;
keepalive_timeout 300 300;
proxy_buffering off;
proxy_buffer_size 8k;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
至此,Nginx基础配置完成,接下来就可以登录面板了
新建xui_stream.conf配置(非必须)
在conf.d目录下新建文件xui_stream.conf,该文件为x-ui的stream配置,填写如下内容(下面的是空配置,后面配置节点时,会根据协议增加详细的配置)
map $ssl_preread_server_name $sni_name {
}
server {
# 复用443端口配置
listen 443 reuseport;
# 根据sni分流到不同的上游服务器
proxy_pass $sni_name;
# 用于获取TLS握手信息,也就是可以获取SNI的信息用于分流
ssl_preread on;
}
登录面板
在安装完成且x-ui正常运行的情况下,在浏览器内输入 http://服务器IP或域名:端口
进入登录页面。
默认情况下端口为 54321
,登录账号为 admin
,密码为 admin。
上述配置使用了nginx反代,所以需使用 443
端口替代 54321
端口。
在安装/更新时都会提示对账户/密码进行修改,若不修改,则为默认值或与之前设定保持一致。
x-ui为了增强安全性,面板自0724版本增加了随机根路径功能。
如果你是初次安装,第一次登录面板后进入面板设置会自动生成根路径并重启面板。这时有了新的根路径后,记得更新nginx配置。
配置都正确后,就可以打开x-ui网页了。
节点配置
首先,点击左侧菜单栏 入栈列表
,然后再点击 添加入站
然后下面进行具体的配置
Vless+reality+xtls-rprx-vision组合
节点配置
首先选择协议为vless,然后新建一个用户
端口根据自己需求设置即可,我这里直接用默认的,其他的选项可以根据提示自行设置。
图片中选项按要求设置,其他设置可以使用默认值,也可根据需求自行修改
然后点击添加即可,之后在入站列表就可以看到新添加的节点了。
注意事项
- 使用
xtls-rprx-vision
流控需要xray core版本为1.7.5
及以上 - 使用
reality
需要xray core版本为1.8.0
及以上
Nginx配置(非必须)
使用reality需要stream配置,在xui_stream.conf中增加如下配置
map $ssl_preread_server_name $sni_name {
# reality节点的伪装域名,要和新建节点时的可选域名一致
addons.mozilla.org reality;
}
# 配置不同的上游服务
upstream reality {
# 部署reality的容器的ip和监听的端口,要和新建节点时的端口一致,ip根据实际情况填写
server 127.0.0.1:32355;
}
server {
# 复用443端口配置
listen 443 reuseport;
# 根据sni分流到不同的上游服务器
proxy_pass $sni_name;
# 用于获取TLS握手信息,也就是可以获取SNI的信息用于分流
ssl_preread on;
}
修改后,重载nginx即可生效。
客户端配置
Mac
Clash Verge(v1.5.11)
在配置文件中 proxies
选项下增加如下配置
proxies:
- name: "reality"
type: vless
server: 填写你实际服务器的IP或域名
port: 使用了Nginx则填写nginx代理的端口,否则直接填写新建节点时的端口
uuid: 填写新建user时的id
network: tcp
tls: true
udp: true
flow: xtls-rprx-vision
servername: 填写新建节点时的可选域名 # REALITY servername
reality-opts:
public-key: 填写新建节点时的公钥
client-fingerprint: chrome # 填写新建节点时的utls
然后重新加载配置文件,即可生效。
IOS
Shadowrocket(2.2.46)
进入首页点击右上角加号,按图片配置即可
保存即可使用
安卓
V2rayNG(v1.8.6)
进入首页点击顶部加号,选择扫描二维码或从剪贴板导入即可。
二维码或节点信息在x-ui面板,入站列表获取。
注:如果使用了nginx反代,扫描二维码或从剪切板导入配置后,要将端口改为nginx的端口,这两个方式导入的是节点端口。
Windows
V2rayN(V6.23)
进入首页点击服务器,选择扫描二维码或从剪贴板导入即可。
二维码或节点信息在x-ui面板,入站列表获取。
注:如果使用了nginx反代,扫描二维码或从剪切板导入配置后,要将端口改为nginx的端口,这两个方式导入的是节点端口。
评论区