Tutorial: Fix incorrect description

#819
#820

Co-authored-by: weycen <22557692+weycen@users.noreply.github.com>
Co-authored-by: ts0307 <3348532+ts0307@users.noreply.github.com>
This commit is contained in:
Fangliding
2026-02-11 22:16:10 +08:00
co-authored by weycen ts0307
parent cc8f03de78
commit ee825d5fd9
4 changed files with 4 additions and 171 deletions
+1 -56
View File
@@ -85,62 +85,7 @@ Xray основан на проекте с открытым исходным к
![Установка сертификата для Xray](./ch07-img02-xray-cert-install.png)
5. `acme.sh` проверяет срок действия сертификата каждые 60 дней и автоматически обновляет его при необходимости. Однако, насколько мне известно, он не устанавливает новый сертификат для `xray-core` автоматически. Поэтому нам нужно добавить автоматическое задание cron, которое будет делать это за нас.
1. Базовые команды Linux:
| Номер | Команда | Описание |
| :------: | :----------: | :------------------------------------------- |
| `cmd-15` | `crontab -e` | Редактирование crontab текущего пользователя |
2. Создаём файл скрипта (`xray-cert-renew.sh`):
```shell
nano ~/xray_cert/xray-cert-renew.sh
```
3. Копируем в него следующий код, заменив `sub.yourdomain.com` на своё доменное имя, и сохраняем файл:
```bash
#!/bin/bash
/home/vpsadmin/.acme.sh/acme.sh --install-cert -d sub.yourdomain.com --ecc --fullchain-file /home/vpsadmin/xray_cert/xray.crt --key-file /home/vpsadmin/xray_cert/xray.key
echo "Xray Certificates Renewed"
chmod +r /home/vpsadmin/xray_cert/xray.key
echo "Read Permission Granted for Private Key"
sudo systemctl restart xray
echo "Xray Restarted"
```
::: warning
Как заметили пользователи, `acme.sh` имеет команду `reloadcmd`, которая позволяет выполнить произвольную команду после обновления сертификата. Таким образом, можно настроить автоматическую установку сертификата для `Xray`. Однако, поскольку `crontab` — очень полезный и часто используемый инструмент в Linux, в данном руководстве мы будем использовать его для обновления сертификата `Xray`. (Подробнее о команде `reloadcmd` можно прочитать в [документации `acme.sh`](https://github.com/acmesh-official/acme.sh)).
Кроме того, в момент записи гифки в скрипт не была добавлена команда перезапуска `Xray`, поскольку в планах разработчиков `Xray` — поддержка **горячего обновления сертификатов**. Это означает, что `Xray` сможет автоматически обнаруживать обновление сертификата и перезагружать его без необходимости перезапуска. После добавления этой функции я обновлю конфигурацию `config.json`, включив эту настройку, и удалю команду перезапуска из скрипта.
:::
4. Делаем скрипт исполняемым:
```shell
chmod +x ~/xray_cert/xray-cert-renew.sh
```
5. Запускаем `crontab -e`, чтобы добавить задание на автоматическое выполнение `xray-cert-renew.sh` каждый месяц (не используйте `sudo`, так как мы добавляем задание для пользователя `vpsadmin`. При первом запуске `crontab` вам будет предложено выбрать редактор. Выбираем знакомый нам `nano`!):
```shell
crontab -e
```
6. Добавляем следующую строку в конец файла и сохраняем его:
```
# 1:00am, 1st day each month, run `xray-cert-renew.sh`
0 1 1 * * bash /home/vpsadmin/xray_cert/xray-cert-renew.sh
```
7. Весь процесс показан на гифке:
![Автоматическая установка сертификата для Xray каждый месяц](./ch07-img03-crontab-cert-renew.gif)
5. `acme.sh` будет проверять раз в день и автоматически обновлять сертификаты, срок действия которых истекает менее чем через 30 дней. Xray по умолчанию автоматически перезагружает сертификаты, так что нет необходимости беспокоиться о последующих обновлениях сертификатов.
## 7.4 Настройка Xray