Знать бы еще, что сделано, а что нет. Примерно могу набросать, но там столько граблей может вылезти, что заранее не скажешь, да и потом особо не скажешь, не видя всей картины. Опять же, я тоже могу что-то забыть.
- Раз домен уже есть, значит далее понадобится сертификат. С панелью у меня опыта нет, может быть она его сама уже запросила, смотри в папку
/etc/letsencrypt/live/<your domain>
, там должны быть 4 файлика .pem
, если есть - хорошо, если нет - ставь certbot
и запрашивай certbot certonly --standalone --preferred-challenges http -d <your domain>
. Не забудь открыть на время запроса 80 порт, не знаю, что ты там используешь, но для ufw
, например, это будет ufw allow 80/tcp
. Серт на 3 месяца, про обновление почитаешь сам.
- Настройка прав для
xray
.
Лучше всего для него создать отдельного пользователя и группу для доступа к ключам
adduser xrayproc --system --no-create-home
groupadd -r letsencryptusers
usermod -g letsencryptusers xrayproc
Также изменение разрешений для чтения ключей
chown :letsencryptusers /etc/letsencrypt/live
chmod 750 /etc/letsencrypt/live
chown :letsencryptusers /etc/letsencrypt/live/<your domain>
# т.е. ключи - линки на файлы в archive
chown :letsencryptusers /etc/letsencrypt/archive
chmod 750 /etc/letsencrypt/archive
В общем не помню уже всех разрешений. Надо чтоб доступ у группы letsencryptusers был на чтение и исполнение всей цепочки папок, и на чтение файлов fullchain.pem
и privkey.pem
3. Создать systemd юнит, положить в /usr/lib/systemd/system/xray.service
.
Тут предполагается, что сам xray и его конфиг лежат в /opt/xray
, есл инет - поправь на реальные.
[Unit]
Description=XRay Service
Documentation=https://github.com/xtls
After=network.target
[Service]
User=xrayproc
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/opt/xray/xray run -c /opt/xray/config.json
Restart=on-failure
RestartPreventExitStatus=23
WorkingDirectory=/opt/xray
LimitNPROC=10000
LimitNOFILE=1000000
[Install]
WantedBy=multi-user.target
Применить изменения и активировать
systemctl daemon-reload
systemctl enable xray
Когда будет готов конфиг, можно и запускать
systemctl start xray
4. Пример куска конфига xray. Привожу пример инбаунда для reality с маскировкой под свой сайт. Это не полный конфиг. Прмеры полных конфигов можешь найти у людей выше.
xray
{
"inbounds": [
{
"tag": "reality",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"email": "<some email>",
"id": "<your UUID>",
"flow": "xtls-rprx-vision",
"level": 0
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "127.0.0.1:8445", // A website that support TLS1.3 and h2. You can also use `1.1.1.1:443` as dest
"serverNames": [
"<your domain>" // A server name in the cert of dest site. If you use `1.1.1.1:443` as dest, then you can leave `serverNames` empty, it is a possible ways to bypass Iran's internet speed restrictions.
],
"privateKey": "<your private key>", // run `xray x25519` to generate. Public and private keys need to be corresponding.
"shortIds": [
"<your short id>"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
}
}
]
}
Небольшое пояснение:
Сделать UUID /opt/xray/xray uuid
Сделать shortid openssl rand -base64 <key_size 16 или 32>
"dest": "127.0.0.1:8445"
- фейковый сайт
5. Теперь понадобится… сам сайт.
В папке /etc/nginx/sites-available
нужно создать файл, например mysite
В папке /var/www/<your domain>/html
расположи файлы сайта.
Должно быть что-то вроде такого:
nginx
server {
listen 127.0.0.1:8445 ssl so_keepalive=on;
http2 on;
ssl_certificate /etc/letsencrypt/live/<your domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<your domain>/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 valid=60s;
resolver_timeout 2s;
root /var/www/<your domain>/html;
index Index.html;
error_page 403 /403.html;
error_page 401 /401.html;
error_page 404 /404.html;
error_page 400 405 413 500 502 503 504 /500.html;
client_header_timeout 52w;
keepalive_timeout 52w;
server_name <your domain>;
location / {
try_files $uri $uri/ =404;
}
}
Проверить, что конфиг без ошибок nginx -t
Сделать символьную ссылку на этот файл в папке /etc/nginx/sites-enabled
Ну и если все хорошо - перезапустить NGINX