手动安装X-ray并手搓配置文件

安装X-ray内核

https://github.com/XTLS/Xray-install

1
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

默认配置:

1
2
/usr/local/etc/xray/config.json
/etc/systemd/system/multi-user.target.wants/xray.service → /etc/systemd/system/xray.service.

Gemini写的脚本,有问题还没改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/bash

# 检查是否以 root 用户运行
if [[ $EUID -ne 0 ]]; then
echo "请以 root 用户身份运行此脚本。"
exit 1
fi

# 定义变量
SOCKS_PORT=10808 # Socks 端口 (可以修改)
USERNAME="fjshefl" # Socks 用户名 (请修改)
PASSWORD="shxckefgj8746dsjewn57cdxj3" # Socks 密码 (请修改)
LOG_DIR="/var/log/xray"
CONFIG_FILE="/etc/xray/config.json"
SERVICE_FILE="/etc/systemd/system/xray.service"
XRAY_VERSION="v1.8.4" # 请替换为最新的非预览版版本
XRAY_ZIP="Xray-linux-64.zip" # 请替换为你自己的架构zip文件,例如Xray-linux-arm64-v8a.zip

# 函数:创建 Xray 配置文件
create_config_file() {
echo "生成 Xray 配置文件..."
cat > "$CONFIG_FILE" <<EOF
{
"log": {
"loglevel": "warning",
"access": "${LOG_DIR}/access.log",
"error": "${LOG_DIR}/error.log"
},
"inbounds": [
{
"port": ${SOCKS_PORT},
"protocol": "socks",
"settings": {
"users": [
{
"user": "${USERNAME}",
"pass": "${PASSWORD}"
}
],
"auth": "password"
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
EOF
}

# 安装 Xray
install_xray() {
echo "下载 Xray..."
wget "https://github.com/XTLS/Xray-core/releases/download/${XRAY_VERSION}/${XRAY_ZIP}" -O xray.zip
if [ $? -ne 0 ]; then
echo "下载 Xray 失败!"
exit 1
fi

echo "解压 Xray..."
unzip xray.zip
if [ $? -ne 0 ]; then
echo "解压 Xray 失败!"
exit 1
fi

echo "移动 Xray 到 /usr/local/bin..."
sudo mv xray /usr/local/bin/xray
sudo chmod +x /usr/local/bin/xray
if [ $? -ne 0 ]; then
echo "移动 Xray 失败!"
exit 1
fi

rm xray.zip
}

# 更新系统
echo "更新系统..."
sudo apt update -y
sudo apt upgrade -y

# 安装 curl 和 unzip
echo "安装 curl 和 unzip..."
sudo apt install curl unzip -y

# 安装 Xray
install_xray

# 创建日志目录
echo "创建日志目录..."
sudo mkdir -p "$LOG_DIR"
sudo chown -R root:root "$LOG_DIR"

# 生成 Xray 配置文件
create_config_file

# 设置配置文件权限
echo "设置配置文件权限..."
sudo mkdir -p /etc/xray
sudo chown -R root:root /etc/xray
sudo chmod 644 "$CONFIG_FILE"
sudo mv config.json /etc/xray/config.json

# 创建 systemd 服务文件
echo "创建 systemd 服务文件..."
cat > "$SERVICE_FILE" <<EOF
[Unit]
Description=Xray Service
After=network.target

[Service]
User=root
ExecStart=/usr/local/bin/xray run -config $CONFIG_FILE
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

# 启动 Xray 服务
echo "启动 Xray 服务..."
sudo systemctl daemon-reload
sudo systemctl enable xray
sudo systemctl start xray

# 检查 Xray 服务状态
echo "检查 Xray 服务状态..."
sudo systemctl status xray
if [ $? -ne 0 ]; then
echo "启动 Xray 服务失败,请检查日志"
exit 1
fi

echo "--------------------------------------------------"
echo "请手动在 Telegram 中配置 Socks 代理:"
echo "服务器: 你的服务器 IP 地址"
echo "端口: $SOCKS_PORT"
echo "用户名: $USERNAME"
echo "密码: $PASSWORD"
echo "--------------------------------------------------"

echo "Xray Socks 代理安装完成!"
exit 0

碰到个奇怪的问题,密码验证的方式死活不行,最后用了UUID的方式验证

修改文件:/usr/local/etc/xray/config.json

密码验证:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"log": {
"loglevel": "warning",
"access": "${LOG_DIR}/access.log",
"error": "${LOG_DIR}/error.log"
},
"inbounds": [
{
"port": ${SOCKS_PORT},
"protocol": "socks",
"settings": {
"users": [
{
"user": "${USERNAME}",
"pass": "${PASSWORD}"
}
],
"auth": "password"
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}

UUID

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"log": {
"loglevel": "warning",
"access": "/var/log/xray/access.log",
"error": "/var/log/xray/error.log"
},
"inbounds": [
{
"port": 51180,
"protocol": "socks",
"settings": {
"clients": [
{
"id": "UUID",
"level": 1
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}