<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Systemd on phywei' blog</title><link>https://www.phyweicheng.com/tags/systemd/</link><description>Recent content in Systemd on phywei' blog</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Thu, 30 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.phyweicheng.com/tags/systemd/index.xml" rel="self" type="application/rss+xml"/><item><title>VPS-telegram 配置笔记</title><link>https://www.phyweicheng.com/p/vps-telegram-bot-note/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.phyweicheng.com/p/vps-telegram-bot-note/</guid><description>&lt;img src="https://www.phyweicheng.com/p/vps-telegram-bot-note/cover.png" alt="Featured image of post VPS-telegram 配置笔记" /&gt;&lt;h2 id="一整体流程和核心思路"&gt;一、整体流程和核心思路
&lt;/h2&gt;&lt;p&gt;这套方案的目标是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在本地编写和修改 Telegram 机器人代码&lt;/li&gt;
&lt;li&gt;将代码 push 到 GitHub&lt;/li&gt;
&lt;li&gt;由 GitHub Actions 自动触发部署&lt;/li&gt;
&lt;li&gt;GitHub 通过 SSH 登录 VPS&lt;/li&gt;
&lt;li&gt;VPS 上自动拉取最新代码、更新依赖、重启机器人服务&lt;/li&gt;
&lt;li&gt;最终可以在 Telegram 中通过命令查看 VPS 状态&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这套流程的核心思路不是“让 GitHub 直接替代 VPS 运行程序”，而是把职责拆开：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地：负责开发和提交代码&lt;/li&gt;
&lt;li&gt;GitHub：负责触发自动部署&lt;/li&gt;
&lt;li&gt;VPS：负责真正运行机器人&lt;/li&gt;
&lt;li&gt;systemd：负责守护机器人进程，确保自动重启和开机自启&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为了让权限更清晰，这次最终采用的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;root&lt;/code&gt;：只负责让 GitHub Action 通过 SSH 登录 VPS&lt;/li&gt;
&lt;li&gt;&lt;code&gt;debian&lt;/code&gt;：负责项目目录、&lt;code&gt;git pull&lt;/code&gt;、Python 虚拟环境、bot 运行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样做的原因是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;应用不直接用 &lt;code&gt;root&lt;/code&gt; 跑，更安全&lt;/li&gt;
&lt;li&gt;项目文件归属统一，不容易出现 Git 的 ownership 报错&lt;/li&gt;
&lt;li&gt;部署链路和运行链路职责清晰，后续更容易维护&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二最终部署架构"&gt;二、最终部署架构
&lt;/h2&gt;&lt;p&gt;最终的运行结构如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;本地修改代码后执行 &lt;code&gt;git push origin main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;GitHub Actions 触发 &lt;code&gt;.github/workflows/deploy-to-vps.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Action 使用 &lt;code&gt;root&lt;/code&gt; 的 SSH 密钥连接 VPS&lt;/li&gt;
&lt;li&gt;登录后切换到 &lt;code&gt;debian&lt;/code&gt; 用户执行部署脚本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;debian&lt;/code&gt; 在 &lt;code&gt;/home/debian/apps/VPS-telegram&lt;/code&gt; 中执行：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git fetch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git reset --hard origin/main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装 Python 依赖&lt;/li&gt;
&lt;li&gt;重启 &lt;code&gt;vps-telegram-bot.service&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;systemd&lt;/code&gt; 使用虚拟环境中的 Python 启动 &lt;code&gt;main.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Telegram 机器人继续运行最新代码&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="三本地代码改造思路"&gt;三、本地代码改造思路
&lt;/h2&gt;&lt;h3 id="1-凭据不能写死在代码里"&gt;1. 凭据不能写死在代码里
&lt;/h3&gt;&lt;p&gt;最开始 &lt;code&gt;main.py&lt;/code&gt; 中直接写了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;API_TOKEN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ADMIN_ID&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样虽然能跑，但不适合部署，因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;token 泄露风险高&lt;/li&gt;
&lt;li&gt;更换 token 需要修改代码&lt;/li&gt;
&lt;li&gt;不适合区分本地环境和 VPS 环境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此改成了从 &lt;code&gt;.env&lt;/code&gt; 读取：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;API_TOKEN&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;API_TOKEN&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ADMIN_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ADMIN_ID&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;并在代码中加入缺失检查，避免服务看似启动但实际没配置成功。&lt;/p&gt;
&lt;h3 id="2-增加依赖和忽略规则"&gt;2. 增加依赖和忽略规则
&lt;/h3&gt;&lt;p&gt;为了让 VPS 能自动安装环境，仓库中补充了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;requirements.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env.example&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.gitignore&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt; 不提交到 GitHub&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env.example&lt;/code&gt; 只保留变量模板&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.venv&lt;/code&gt;、缓存文件、流量统计文件也不提交&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-status-输出内容扩展"&gt;3. &lt;code&gt;/status&lt;/code&gt; 输出内容扩展
&lt;/h3&gt;&lt;p&gt;状态信息最终包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;服务器状态&lt;/li&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;内存&lt;/li&gt;
&lt;li&gt;Ping值&lt;/li&gt;
&lt;li&gt;下载速度&lt;/li&gt;
&lt;li&gt;今日流量&lt;/li&gt;
&lt;li&gt;近三十日流量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同时输出文案统一改为了中文，方便直接在 Telegram 中查看。&lt;/p&gt;
&lt;h3 id="4-下载速度测量逻辑优化"&gt;4. 下载速度测量逻辑优化
&lt;/h3&gt;&lt;p&gt;最开始下载速度依赖后台流量线程定期更新，容易显示为 &lt;code&gt;0&lt;/code&gt;，因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户发 &lt;code&gt;/status&lt;/code&gt; 时不一定正好处于采样更新窗口&lt;/li&gt;
&lt;li&gt;60 秒周期过长，不适合展示瞬时速度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;后来改成在执行 &lt;code&gt;/status&lt;/code&gt; 时做一次短时实时采样：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在很短时间内读取两次 &lt;code&gt;psutil.net_io_counters().bytes_recv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;根据时间差和接收字节差计算下载速度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样更适合展示“当前时刻的大致下载速度”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四github-端配置思路"&gt;四、GitHub 端配置思路
&lt;/h2&gt;&lt;h3 id="1-github-actions-的作用"&gt;1. GitHub Actions 的作用
&lt;/h3&gt;&lt;p&gt;GitHub Actions 的职责是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在代码 push 到主分支时自动触发&lt;/li&gt;
&lt;li&gt;通过 SSH 登录 VPS&lt;/li&gt;
&lt;li&gt;在 VPS 上执行部署脚本&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-使用的关键-secrets"&gt;2. 使用的关键 Secrets
&lt;/h3&gt;&lt;p&gt;仓库中配置了这些 GitHub Secrets：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;VPS_HOST&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VPS_USER&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VPS_SSH_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VPS_PORT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VPS_REPO_DIR&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;VPS_USER&lt;/code&gt; 最终使用的是 &lt;code&gt;root&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VPS_REPO_DIR&lt;/code&gt; 为 &lt;code&gt;/home/debian/apps/VPS-telegram&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-为什么不是直接用-debian-ssh-登录"&gt;3. 为什么不是直接用 &lt;code&gt;debian&lt;/code&gt; SSH 登录
&lt;/h3&gt;&lt;p&gt;实际环境中只有 &lt;code&gt;root&lt;/code&gt; 有 SSH 登录能力，因此最终采用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;root&lt;/code&gt; 负责 SSH 登录 VPS&lt;/li&gt;
&lt;li&gt;登录后通过 &lt;code&gt;sudo -u debian -H bash -lc&lt;/code&gt; 切换到 &lt;code&gt;debian&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;由 &lt;code&gt;debian&lt;/code&gt; 执行真正的更新操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是这次部署成功的关键调整之一。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五vps-端配置思路"&gt;五、VPS 端配置思路
&lt;/h2&gt;&lt;h3 id="1-为什么需要普通用户-debian"&gt;1. 为什么需要普通用户 &lt;code&gt;debian&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;虽然一开始很多操作都是用 &lt;code&gt;root&lt;/code&gt; 完成的，但应用最终不应该一直用 &lt;code&gt;root&lt;/code&gt; 运行。&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;debian&lt;/code&gt; 的好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;权限更小，更安全&lt;/li&gt;
&lt;li&gt;项目目录归属清晰&lt;/li&gt;
&lt;li&gt;便于管理 &lt;code&gt;.env&lt;/code&gt;、&lt;code&gt;.venv&lt;/code&gt;、git 仓库&lt;/li&gt;
&lt;li&gt;避免 Git 出现 &lt;code&gt;dubious ownership&lt;/code&gt; 问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-项目目录"&gt;2. 项目目录
&lt;/h3&gt;&lt;p&gt;项目最终放在：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/debian/apps/VPS-telegram
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个目录及其内容最终应归：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;debian:debian
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="3-vps-访问-github-的-deploy-key"&gt;3. VPS 访问 GitHub 的 deploy key
&lt;/h3&gt;&lt;p&gt;GitHub Action 能登录 VPS，不代表 VPS 自己能从 GitHub 拉代码。&lt;/p&gt;
&lt;p&gt;因此还需要给 &lt;code&gt;debian&lt;/code&gt; 单独配置一把 SSH key，用于：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git fetch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这把 key 的公钥加到 GitHub 仓库的：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Settings -&amp;gt; Deploy keys&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;它的作用是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;允许 VPS 上的 &lt;code&gt;debian&lt;/code&gt; 用户访问 GitHub 仓库&lt;/li&gt;
&lt;li&gt;不负责登录 VPS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-env-文件在哪里写"&gt;4. &lt;code&gt;.env&lt;/code&gt; 文件在哪里写
&lt;/h3&gt;&lt;p&gt;真实凭据不应该提交到 GitHub，因此 &lt;code&gt;.env&lt;/code&gt; 应直接写在 VPS 项目目录中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/debian/apps/VPS-telegram/.env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-env" data-lang="env"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;API_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_bot_token
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ADMIN_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_telegram_id
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PING_TARGET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;www.sjtu.edu.cn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="5-python-虚拟环境"&gt;5. Python 虚拟环境
&lt;/h3&gt;&lt;p&gt;在 VPS 上使用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -m venv .venv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后安装依赖：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.venv/bin/pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样 bot 的依赖和系统 Python 隔离，后续维护更稳定。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六systemd-服务配置思路"&gt;六、systemd 服务配置思路
&lt;/h2&gt;&lt;h3 id="1-为什么要用-systemd"&gt;1. 为什么要用 systemd
&lt;/h3&gt;&lt;p&gt;因为 bot 需要长期运行，仅靠前台执行 &lt;code&gt;python main.py&lt;/code&gt; 不够稳定。&lt;/p&gt;
&lt;p&gt;使用 systemd 的好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开机自启&lt;/li&gt;
&lt;li&gt;进程异常退出后自动重启&lt;/li&gt;
&lt;li&gt;日志可以用 &lt;code&gt;journalctl&lt;/code&gt; 查看&lt;/li&gt;
&lt;li&gt;便于 GitHub Action 自动重启服务&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-服务实际配置"&gt;2. 服务实际配置
&lt;/h3&gt;&lt;p&gt;最终服务大致为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;User&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;debian&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;WorkingDirectory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/home/debian/apps/VPS-telegram&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;EnvironmentFile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/home/debian/apps/VPS-telegram/.env&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ExecStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/home/debian/apps/VPS-telegram/.venv/bin/python /home/debian/apps/VPS-telegram/main.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Restart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这表示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bot 由 &lt;code&gt;debian&lt;/code&gt; 用户运行&lt;/li&gt;
&lt;li&gt;从项目目录读取 &lt;code&gt;.env&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;使用虚拟环境中的 Python 启动&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="七自动部署脚本思路"&gt;七、自动部署脚本思路
&lt;/h2&gt;&lt;h3 id="1-github-actions-工作流"&gt;1. GitHub Actions 工作流
&lt;/h3&gt;&lt;p&gt;工作流负责：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;checkout 仓库&lt;/li&gt;
&lt;li&gt;通过 SSH 登录 VPS&lt;/li&gt;
&lt;li&gt;进入项目目录&lt;/li&gt;
&lt;li&gt;调用部署脚本&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="2-vps-更新脚本"&gt;2. VPS 更新脚本
&lt;/h3&gt;&lt;p&gt;更新脚本负责：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;git fetch origin main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git checkout main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git reset --hard origin/main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装或更新依赖&lt;/li&gt;
&lt;li&gt;&lt;code&gt;systemctl restart vps-telegram-bot.service&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样每次 push 后，VPS 都会自动同步到远端最新版本。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="八这次实际遇到的问题与解决方式"&gt;八、这次实际遇到的问题与解决方式
&lt;/h2&gt;&lt;h3 id="1-github-action-缺少-vps_host"&gt;1. GitHub Action 缺少 &lt;code&gt;VPS_HOST&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;现象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Action 报错 &lt;code&gt;missing server host&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub Secrets 中缺少 &lt;code&gt;VPS_HOST&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在仓库 Secrets 中补充 &lt;code&gt;VPS_HOST&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-github-action-缺少-vps_repo_dir"&gt;2. GitHub Action 缺少 &lt;code&gt;VPS_REPO_DIR&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;现象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;报错 &lt;code&gt;VPS_REPO_DIR secret is not set&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在仓库 Secrets 中增加 &lt;code&gt;VPS_REPO_DIR=/home/debian/apps/VPS-telegram&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-git-报-dubious-ownership"&gt;3. Git 报 &lt;code&gt;dubious ownership&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;现象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;部署时 Git 认为仓库目录所有权可疑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSH 登录用户和项目目录拥有者不一致&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保持项目目录归 &lt;code&gt;debian&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;GitHub Action 登录后切换到 &lt;code&gt;debian&lt;/code&gt; 执行部署&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-debian-无法从-github-拉代码"&gt;4. &lt;code&gt;debian&lt;/code&gt; 无法从 GitHub 拉代码
&lt;/h3&gt;&lt;p&gt;现象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git@github.com: Permission denied (publickey)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;debian&lt;/code&gt; 用户没有配置访问 GitHub 的 deploy key&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为 &lt;code&gt;debian&lt;/code&gt; 单独生成 GitHub key&lt;/li&gt;
&lt;li&gt;将公钥加入仓库 &lt;code&gt;Deploy keys&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="5-sudo-systemctl-restart-要密码"&gt;5. &lt;code&gt;sudo systemctl restart&lt;/code&gt; 要密码
&lt;/h3&gt;&lt;p&gt;现象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;debian&lt;/code&gt; 执行重启服务时要求输入密码&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无人值守部署时，&lt;code&gt;debian&lt;/code&gt; 没有免密码执行 &lt;code&gt;systemctl&lt;/code&gt; 的权限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;visudo&lt;/code&gt; 中添加 sudoers 规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;debian ALL=(ALL) NOPASSWD: /bin/systemctl
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="6-github-action-成功但-telegram-没显示新字段"&gt;6. GitHub Action 成功但 Telegram 没显示新字段
&lt;/h3&gt;&lt;p&gt;现象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Action 成功，但 &lt;code&gt;/status&lt;/code&gt; 仍显示旧内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;仅 &lt;code&gt;git fetch&lt;/code&gt; 了代码，没有真正切换到新版本或服务未重启&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确认执行 &lt;code&gt;git reset --hard origin/main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;然后重启 &lt;code&gt;vps-telegram-bot.service&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="7-下载速度一直为-0"&gt;7. 下载速度一直为 0
&lt;/h3&gt;&lt;p&gt;原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;旧逻辑依赖后台周期更新，不适合瞬时显示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改成 &lt;code&gt;/status&lt;/code&gt; 时实时短时采样下载速度&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="九最终日常使用方式"&gt;九、最终日常使用方式
&lt;/h2&gt;&lt;p&gt;以后日常更新流程如下：&lt;/p&gt;
&lt;h3 id="本地更新代码"&gt;本地更新代码
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;your update&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push origin main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="github-自动部署"&gt;GitHub 自动部署
&lt;/h3&gt;&lt;p&gt;push 后会自动：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;触发 GitHub Action&lt;/li&gt;
&lt;li&gt;SSH 登录 VPS&lt;/li&gt;
&lt;li&gt;切换到 &lt;code&gt;debian&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;拉取最新代码&lt;/li&gt;
&lt;li&gt;更新依赖&lt;/li&gt;
&lt;li&gt;重启 bot 服务&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="telegram-中使用"&gt;Telegram 中使用
&lt;/h3&gt;&lt;p&gt;在 Telegram 中向 bot 发送：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;即可查看当前 VPS 状态。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十常用排查命令"&gt;十、常用排查命令
&lt;/h2&gt;&lt;h3 id="查看服务状态"&gt;查看服务状态
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl status vps-telegram-bot.service --no-pager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="查看最近日志"&gt;查看最近日志
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;journalctl -u vps-telegram-bot.service -n &lt;span class="m"&gt;100&lt;/span&gt; --no-pager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="实时查看日志"&gt;实时查看日志
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;journalctl -u vps-telegram-bot.service -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="查看当前代码是否已更新"&gt;查看当前代码是否已更新
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /home/debian/apps/VPS-telegram
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git log -1 --oneline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="手动同步到最新代码"&gt;手动同步到最新代码
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo -u debian -H bash -lc &lt;span class="s1"&gt;&amp;#39;cd /home/debian/apps/VPS-telegram &amp;amp;&amp;amp; git fetch origin main &amp;amp;&amp;amp; git reset --hard origin/main&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="手动重启-bot-服务"&gt;手动重启 bot 服务
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart vps-telegram-bot.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="十一这套方案的最终优点"&gt;十一、这套方案的最终优点
&lt;/h2&gt;&lt;p&gt;这次搭好的方案有这些明显优点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;代码修改后只需要 push，不需要手动登录 VPS 逐次更新&lt;/li&gt;
&lt;li&gt;凭据从代码中分离，安全性更高&lt;/li&gt;
&lt;li&gt;项目由普通用户 &lt;code&gt;debian&lt;/code&gt; 运行，更安全&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;systemd&lt;/code&gt;，稳定性高，支持自动重启&lt;/li&gt;
&lt;li&gt;日志和服务状态清晰，便于维护&lt;/li&gt;
&lt;li&gt;Telegram 中可以方便地直接查看 VPS 运行状态&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="十二后续可继续优化的方向"&gt;十二、后续可继续优化的方向
&lt;/h2&gt;&lt;p&gt;后续如果继续增强，可以考虑加入：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;磁盘占用&lt;/li&gt;
&lt;li&gt;系统负载&lt;/li&gt;
&lt;li&gt;在线时长&lt;/li&gt;
&lt;li&gt;定时日报&lt;/li&gt;
&lt;li&gt;网络入站速度和出站速度同时展示&lt;/li&gt;
&lt;li&gt;多个 ping 目标对比&lt;/li&gt;
&lt;li&gt;命令白名单和更丰富的权限控制&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这份笔记的目的，是把这次从零到跑通的实际过程完整记录下来，后续无论迁移服务器、重新部署，还是继续扩展功能，都可以直接以此为基准继续维护。&lt;/p&gt;</description></item></channel></rss>