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 -59
View File
@@ -90,65 +90,7 @@
![Xray服务器端安装流程演示](./ch07-img02-xray-cert-install.png)
5. `acme.sh` 会每 60 天检查一次证书并自动更新临期证书。但据我所知是它并不会自动将新证书安装给 `xray-core`,所以我们需要新增一个系统的自动周期任务来完成这一步
1. 小小白白 Linux 基础命令:
| 编号 | 命令名称 | 命令说明 |
| :------: | :----------: | :--------------------: |
| `cmd-15` | `crontab -e` | 编辑当前用户的定时任务 |
2. 建立一个脚本文件(`xray-cert-renew.sh`
```shell
nano ~/xray_cert/xray-cert-renew.sh
```
3. 把下面的内容复制进去,记得替换你的真实域名,然后保存退出
```bash
#!/bin/bash
/home/vpsadmin/.acme.sh/acme.sh --install-cert -d a-name.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
系统中一个非常有用、非常常用的功能,所以本文保留 `crontab` 的方式来更新 `Xray` 证书。(对 `reloadcmd` 感兴趣的同学可以查看 `acme.sh`
的[官方文档](https://github.com/acmesh-official/acme.sh)
另外,录制动图时,脚本中没有加入重启 `Xray` 的命令,是因为 `Xray` 计划支持【证书热更新】功能,即 `Xray` 会自动识别证书更新并重载证书、无需手动重启。待功能加入后,我将适当修改 `config.json`
开启此设置,并删除脚本中的重启命令。
:::
4. 给这个文件增加【可执行】权限
```
chmod +x ~/xray_cert/xray-cert-renew.sh
```
5. 运行 `crontab -e`,添加一个自动任务【每月自动运行一次`xray-cert-renew.sh`】 (注意不要加`sudo`,因为我们增加的是`vpsadmin`
账户的自动任务。初次运行时会让你选择编辑器,当然是选择熟悉的`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
+1 -1
View File
@@ -159,7 +159,7 @@
### 5.5 基于更多条件的分流
到目前位置,我们仍然只讲了【路由功能】分流能力的冰山一角!因为它还支持很多其他的判断条件!我在此简单罗列如下:
到目前为止,我们仍然只讲了【路由功能】分流能力的冰山一角!因为它还支持很多其他的判断条件!我在此简单罗列如下:
本文已经讲过的:
+1 -55
View File
@@ -85,61 +85,7 @@ Although we have already applied for TLS certificates earlier, according to the
![Xray Certificate Install Demo](./ch07-img02-xray-cert-install.png)
5. `acme.sh` checks the certificate every 60 days and automatically renews it if it's close to expiration. However, as far as I know, it does not automatically install the new certificate to `xray-core`, so we need to add a system automatic periodic task to complete this step.
1. Linux 101 - Basic Commands:
| Number | Command Name | Command Description |
| :------: | :----------: | :-------------------------------------: |
| `cmd-15` | `crontab -e` | Edit the current user's scheduled tasks |
2. Create a script file (`xray-cert-renew.sh`):
```shell
nano ~/xray_cert/xray-cert-renew.sh
```
3. Copy the content below into it, remembering to replace it with your real domain name, then save and exit.
```bash
#!/bin/bash
/home/vpsadmin/.acme.sh/acme.sh --install-cert -d a-name.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
As pointed out by others, `acme.sh` has a `reloadcmd` command that can automatically execute specific commands when the certificate is updated. This could be used to automatically install certificates for `Xray`. However, since `crontab` is a very useful and common function in Linux systems, this article retains the `crontab` method for updating `Xray` certificates. (Those interested in `reloadcmd` can check the [official documentation](https://github.com/acmesh-official/acme.sh) of `acme.sh`).
Additionally, in the GIF recording, the script did not include the `Xray` restart command because `Xray` plans to support [Certificate Hot Reload], meaning `Xray` will automatically recognize certificate updates and reload them without a manual restart. Once this feature is added, I will modify `config.json` appropriately to enable this setting and remove the restart command from the script.
:::
4. Add [Executable] permission to this file.
```shell
chmod +x ~/xray_cert/xray-cert-renew.sh
```
5. Run `crontab -e` to add an automatic task [Run `xray-cert-renew.sh` automatically once a month] (Note: do not add `sudo`, because we are adding the automatic task for the `vpsadmin` account. When running for the first time, it will ask you to choose an editor; choose the familiar `nano`!).
```shell
crontab -e
```
6. Add the following content to the end of the file, save, and exit.
```
# 1:00am, 1st day each month, run `xray-cert-renew.sh`
0 1 1 * * bash /home/vpsadmin/xray_cert/xray-cert-renew.sh
```
7. The complete process demonstration is as follows:
![Automatically install certificates for Xray monthly](./ch07-img03-crontab-cert-renew.gif)
5. `acme.sh` checks every day and automatically updates certificates that expire within 30 days. Xray reloads the certificate automatically by default, so you don't need to worry about certificate updates.
## 7.4 Configuring Xray
+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