From 71026ee291d347884656daf8fbc1ad6c1e73da26 Mon Sep 17 00:00:00 2001 From: dsh Date: Tue, 15 Sep 2026 18:00:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=9A=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E9=83=A8=E7=BD=B2=E7=9B=AE=E6=A0=87=E7=9A=84?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=96=B9=E5=BC=8F=EF=BC=8C=E5=B9=B6=E5=BC=80?= =?UTF-8?q?=E5=90=AF=E7=BA=BF=E4=B8=8A=E5=8E=8B=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 排查「树莓派预览打不开」时发现两件事,都不是这次部署造成的,但都修了/记了: 1) 树莓派上根本没有 web 服务 - nginx 未安装(Unit nginx.service could not be found),80 端口无人监听 - deploy.sh 一直把文件 rsync 到 /home/pi/www/Astro_firefly(这次也确实到了, index.html 17:54、59 个 KaTeX 字体都在),但没有服务对外提供 - 补了 Caddy 容器 blog-caddy(--restart unless-stopped,配置 /home/pi/caddy/Caddyfile, 站点根挂到 /srv:ro),http://192.168.1.87 现在正常,各页面 200 2) 云服务器的 Caddy 一条 encode 都没有,全站裸传 - twikoo.min.js 506 KB、主 CSS 231 KB、首页 HTML 134 KB - 站点块加 encode zstd gzip(改前按已有习惯备份成 Caddyfile.bak.gzip.20260915_175943,validate 通过后 reload) - 实测 twikoo.min.js 506108 -> 160547 B(省 68%),CSS 230615 -> 40822 B(省 82%) - Caddy 按 Accept-Encoding 协商 zstd / gzip,所有页面仍 200 README 与操作指南补了「两个目标各自怎么服务的」和 Pi Caddy 的重建命令, 并注明 1Panel 管的 Caddyfile 手改后要注意什么、reload 为什么是安全的。 --- README.md | 29 +++++++++++++++++++++++++++++ docs/操作指南.md | 5 +++++ src/data/reading.json | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a90a0f..5bf2c8c 100644 --- a/README.md +++ b/README.md @@ -360,6 +360,35 @@ src/components/bookshelf-content.astro 目标地址和 SSH 密钥在脚本顶部的**配置区**。脚本会在构建失败或产物异常时**直接中止**——因为推送用的是 `rsync --delete`,拿一个残缺的 `dist/` 上去会清空线上目录。 +### 两个目标各自怎么服务的 + +| 目标 | 服务方式 | 地址 | +|---|---|---| +| 云服务器 | **1Panel 管理的 Caddy 容器**(`1Panel-caddy-meZ7`),配置在 `/opt/1panel/apps/caddy/caddy/data/conf/Caddyfile`,站点根 `/srv/astro-blog` | | +| 树莓派 | **Caddy 容器**(`blog-caddy`,`--restart unless-stopped`),配置在 `/home/pi/caddy/Caddyfile`,站点根 `/home/pi/www/Astro_firefly` | | + +**两个都开了压缩**(`encode zstd gzip`)。这个别删:`twikoo.min.js` 裸传 506 KB、压完 160 KB,主 CSS 231 KB → 41 KB。Caddy 按 `Accept-Encoding` 自动协商 zstd / gzip。 + +Pi 上原本没有 web 服务(文件 rsync 过去了但 80 端口没人听),2026-09-15 补了 Caddy 容器。重建命令: + +```bash +ssh pi@192.168.1.87 +mkdir -p /home/pi/caddy/{data,config} +cat > /home/pi/caddy/Caddyfile <<'EOF' +:80 { + root * /srv + encode zstd gzip + file_server +} +EOF +docker run -d --name blog-caddy --restart unless-stopped -p 80:80 \ + -v /home/pi/caddy/Caddyfile:/etc/caddy/Caddyfile:ro \ + -v /home/pi/caddy/data:/data -v /home/pi/caddy/config:/config \ + -v /home/pi/www/Astro_firefly:/srv:ro caddy:alpine +``` + +> 云服务器的 Caddyfile 是 1Panel 生成的。手动改完之后 1Panel 那边可能不认识,**改前先按它已有的习惯备份**(`Caddyfile.bak.<说明>.<时间戳>`),改完用 `docker exec 1Panel-caddy-meZ7 caddy validate --config /etc/caddy/Caddyfile` 校验再 `caddy reload`——reload 是原子的,配置有错会保留旧配置继续跑,站点不会挂。 + `vercel.json` 仍然保留,把它接到 Vercel 也可以。走 Vercel 时需要在项目里配置环境变量 `PUBLIC_TWIKOO_ENV_ID`(评论后端地址,留空则不渲染评论区);本地开发写进 `.env`(已 gitignore),参考 `.env.example`。 --- diff --git a/docs/操作指南.md b/docs/操作指南.md index 29b7a31..fe4b0a6 100644 --- a/docs/操作指南.md +++ b/docs/操作指南.md @@ -162,6 +162,11 @@ pnpm preview # 本地预览构建产物(搜索功能只有这里才生效 它会构建一次,然后 rsync 到树莓派和云服务器,覆盖生产前会问你一句确认。 +两个目标都是 **Caddy** 在服务,而且都开了压缩(`twikoo.min.js` 506 KB → 160 KB)。 + +- 云服务器:1Panel 管的 Caddy 容器,配置 `/opt/1panel/apps/caddy/caddy/data/conf/Caddyfile` +- 树莓派:Caddy 容器 `blog-caddy`,配置 `/home/pi/caddy/Caddyfile` + | 命令 | 用途 | |---|---| | `./deploy.sh` | 构建 + 部署两个目标 | diff --git a/src/data/reading.json b/src/data/reading.json index b968889..855d6dc 100644 --- a/src/data/reading.json +++ b/src/data/reading.json @@ -1,5 +1,5 @@ { - "updatedAt": "2026-09-15T09:51:31.421Z", + "updatedAt": "2026-09-15T10:00:22.188Z", "source": "weread", "books": [ {