视频加载失败

博客搭建过程

7937 字
40 分钟
博客搭建过程

Firefly 博客搭建过程与使用说明#

最后更新:2026-09-29。本文根据项目代码和已有验收记录整理;本次更新文档没有重新部署服务器,也没有发布新的正文。

这是一份给个人项目使用者看的说明。它记录 Firefly 博客是怎样搭建、部署和管理的,也说明日常修改网站时应该在哪里操作。

文档不会记录密码、SSH 私钥、数据库密码、Supabase Secret Key 或 service_role key。

先看这里:这次修改需要部署什么#

想做的事操作何时生效
修改运行时配置保存草稿,再发布配置网站读取新配置后
修改标记“需要重建”的配置先发布配置,再到发布中心点“重建线上内容与已发布配置…”重建任务显示“已上线”后
修改文章、动态或“关于我”正文对应内容页保存草稿,点“提交任务 → 发布…”内容发布任务重建成功后
修改 Mac 应用按钮、表单和编辑器在 Mac 编译并替换原应用新版应用启动后,不需要重建网站
修改网站组件、样式或构建逻辑生成并启用新的固定源码包,再提交网站重建新代码任务部署成功后

网站重建按钮不会顺带发布未发布的文章或“关于我”草稿。

近期进展:视频直传已完成生产验收,顶栏视频图标已改为包含“循环播放”和“播放 / 暂停”的二级菜单。“关于我与独立页面”管理功能已编译并安装,原文已接入远程草稿,测试文字没有发布。

最近一次已有记录的生产发布是 2026-09-28 19:38<24>(北京时间)的顶栏视频菜单任务。今天的应用更新不等于网站新发布。详细步骤见 服务器部署手册、关于我管理说明 和 视频菜单验收。

1. 这个项目由什么组成#

Firefly 不是只有一个网页,而是由三部分配合工作:

  1. 博客网站:访客打开的 https://bytefun.site,由 Astro 生成静态网页。
  2. Supabase 后端:保存登录用户、评论、网站配置、文章草稿、历史版本和资源信息。
  3. Firefly Admin:安装在 Mac 上的原生管理应用,用来改配置、写文章、上传资源和提交发布任务。

配置或内容保存后,不一定会马上出现在访客页面。网站有两种生效方式:

  • 运行时配置:例如网站标题、公告、主题色、壁纸 URL、评论开关。发布配置后,网站下次读取配置即可生效。
  • 构建时内容:例如文章正文、字体、Markdown、页面路由、RSS、站点地图和搜索索引。必须提交一次网站重建任务,服务器构建成功并切换线上目录后才生效。

整个流程可以简单理解为:

Mac 上编辑
|
v
Supabase 保存草稿和版本
|
+--> 运行时配置发布 ------> 网站读取最新配置
|
+--> 内容发布/重建任务 ----> 腾讯云 worker 构建 ----> Nginx 切换网站

2. 使用到的技术#

网站前端#

技术在项目中的作用
Astro 7.2.10生成页面、路由和静态站点
Svelte 5.57.0登录、评论、上传等需要交互的页面组件
TypeScript 6.0.3业务代码和类型检查
Markdown / MDX文章、动态、项目和独立页面的内容格式
Astro Content Collections定义并校验文章、动态、项目和页面字段
Tailwind CSS 4、Stylus、PostCSS页面布局和样式
Swup页面切换动画
Pagefind静态全文搜索
Sharp图片压缩和尺寸处理
Expressive Code代码块高亮、行号和折叠
Iconify网站图标

后端#

技术在项目中的作用
Supabase PostgreSQL保存账号、评论、配置、内容版本和发布任务
Supabase Auth邮箱登录和 GitHub OAuth 登录
Row Level Security(RLS)在数据库层限制普通用户和管理员的权限
Supabase Storage保存网站图片、音频、视频和私密附件、预览文件
Supabase Realtime订阅评论等实时数据变化
Supabase Edge Functions提供管理员 API、上传地址、内容预览和公开配置接口
JSONB保存可变化的网站配置和内容快照

部署和管理#

技术在项目中的作用
腾讯云 CVM运行构建 worker 和提供网站文件
Ubuntu Linux服务器操作系统
Node.js 22.23.0执行 Astro 构建和发布 worker
pnpm 11.22.0安装依赖和运行构建命令
Nginx提供静态页面、HTTPS 和原子目录切换
systemd保证 firefly-content-worker 后台运行并自动重启
Let’s Encrypt / CertbotHTTPS 证书

macOS 管理应用#

Firefly Admin 是真正的 macOS 原生应用,不是网页套壳:

  • Swift 6、SwiftUI、最低支持 macOS 14。
  • NavigationSplitView 三栏导航,使用原生 Form、List、Table、Sheet 和 Toolbar。
  • MVVM 结构,网络层使用 URLSession + Codable。
  • 登录令牌和本地草稿密钥放在 macOS Keychain。
  • OSLog 记录网络和发布状态。
  • WKWebView 显示线上预览、草稿预览和手机/平板尺寸预览。

3. 第一步:整理原有博客#

开始搭建时,先检查了项目根目录、package.json、src/config、src/types、src/content 和 Astro 配置,确认原博客可以独立构建。

主要内容目录如下:

src/content/posts/ 文章
src/content/dynamic/ 动态
src/content/projects/ 项目展示
src/content/spec/ About、友链、留言板等独立页面
src/config/ 网站默认配置
src/types/ 配置类型定义
public/ 不需要处理、直接公开的文件

原有 Markdown 文件仍然保留。后台导入时会读取标题、摘要、日期、分类、标签、封面和自定义 Frontmatter;不认识的字段也会保留,避免编辑器暂时不支持某个字段时把内容弄丢。

文章的稳定 ID 和 URL slug 分开保存。修改 slug 会生成旧地址跳转页;撤回后页面、RSS、站点地图和搜索结果都会在下一次构建中移除。

4. 第二步:在本地检查和构建网站#

在 Mac 终端进入项目目录:

Terminal window
cd /Users/nightwind/aiWork/firefly/Firefly

首次安装依赖:

Terminal window
pnpm install

修改网站代码后,建议按下面顺序检查:

Terminal window
pnpm check
pnpm type-check
pnpm build

三个命令的含义:

  • pnpm check:检查 Astro 页面、组件和内容集合。
  • pnpm type-check:检查 TypeScript 类型。
  • pnpm build:生成完整的 dist/,同时处理图片、字体、Pagefind、RSS 和站点地图。

本地查看效果:

Terminal window
pnpm dev

浏览器打开 http://localhost:4321。pnpm build 只代表本地静态构建成功,它不会自动读取 Supabase 最新配置,也不会把网站部署到服务器。

5. 第三步:部署到腾讯云#

生产服务器信息如下:

项目值
公网 IPxxx
系统Ubuntu Linux x86_64
网站域名https://bytefun.site
源码包目录/opt/firefly(传统源码目录)
固定构建源码/opt/firefly-content/code/<代码哈希>/
构建任务目录/var/lib/firefly-content/jobs/
线上发布目录/var/www/firefly-managed/current
旧静态目录/var/www/firefly(保留作备份)
构建账号firefly-build
后台服务firefly-content-worker

第一次部署做了什么#

  1. 备份原有博客和 Nginx 配置。
  2. 在服务器安装 Node.js 和固定版本的 pnpm。
  3. 上传源码并执行 pnpm install --frozen-lockfile。
  4. 执行检查和生产构建,把 dist/ 放到网站目录。
  5. 配置 Nginx 和 HTTPS。
  6. 用浏览器检查首页、文章、RSS、站点地图和 404 页面。

Nginx 当前指向 firefly-managed/current,发布时只切换这个软链接。新构建失败时,线上软链接不变,原网站继续运行。

6. 第四步:初始化 Supabase#

6.1 创建项目并获取公开连接信息#

在 Supabase Dashboard 创建项目,记录:

  • Project URL,例如 https://<project-ref>.supabase.co。
  • Publishable key(旧项目可能叫 anon public key)。

应用连接时使用项目根 URL,不要把 /rest/v1/ 拼到 URL 末尾。Publishable key 可以放在网站和 Mac 应用中;Secret key、service role key 和数据库密码只能放在服务器端。

6.2 初始化表和 Storage#

初始 SQL 位于:

supabase/schema.sql
supabase/config-versions.sql
supabase/migrations/

在新项目上应按文件名顺序执行迁移,或使用已经登录并绑定项目的 Supabase CLI。生产环境不要把一份已经执行过的旧 SQL 再次当成新迁移执行。

主要数据包括:

  • profiles:用户公开资料。
  • blog_comments:文章评论。
  • user_files:用户文件元数据。
  • site_settings:兼容旧版本的网站设置。
  • site_config_versions、草稿和审计表:配置版本、发布和操作记录。
  • content_*:文章、动态、项目、内容版本、发布任务和发布事件。
  • site_assets:网站公开资源元数据。
  • content-assets:内容草稿使用的私有附件桶。

6.3 设置管理员#

管理员角色放在 Supabase Auth 的 app_metadata 中,普通用户不能自己修改:

update auth.users
set raw_app_meta_data =
coalesce(raw_app_meta_data, '{}'::jsonb) || '{"role":"admin"}'::jsonb
where email = '你的管理员邮箱';

修改角色后退出应用并重新登录。GitHub 登录需要在 Supabase Authentication 中启用 GitHub provider,并加入应用的回调地址 firefly-admin://auth/callback。

7. 权限和安全是怎样工作的#

所有重要写入都经过三层检查:

  1. Supabase Auth 检查是否登录。
  2. Edge Function 检查 app_metadata.role 是否为 admin。
  3. PostgreSQL RLS 再检查站点、用户和资源权限。

因此:

  • 普通用户不能读取管理员草稿、历史私密正文或发布任务。
  • 普通用户不能上传或删除网站资源。
  • 客户端绝不保存 service role key、Secret key 或数据库密码。
  • 上传接口同时检查 MIME 类型、扩展名、文件大小和文件名。
  • 文章和配置使用版本号或更新时间做并发检查,避免覆盖其他设备的修改。
  • 日志和错误提示不会输出登录令牌、私密正文或服务端密钥。

8. 第五步:接入网站运行时配置#

网站默认值仍在 src/config/ 中。统一的 runtime-config 模块启动时读取 Supabase 中“已发布”的配置,再覆盖本地默认值:

本地默认配置 -> 读取远程已发布配置 -> 合并 -> 页面使用

如果网络或 Supabase 暂时不可用,网站继续使用本地配置,不会因为配置接口失败而白屏。配置会缓存并带版本号,页面通过 Swup 切换时复用同一份结果,不会每个组件重复请求。

可以直接发布后生效的配置#

  • 网站标题、描述和导航标题。
  • 主题色、浅色/深色/跟随系统模式。
  • 壁纸地址、遮罩和毛玻璃相关运行时设置。
  • 首页横幅文字、公告和个人资料。
  • 侧边栏布局、已构建页面开关。
  • 友链、打赏信息。
  • 评论区域开关。

发布后仍需要重建的配置#

  • 字体下载、字体子集化和代码字体。
  • 新增或修改 Astro 路由、Markdown/MDX、Content Collections。
  • Mermaid、PlantUML、代码高亮主题等构建插件。
  • RSS、站点地图、Pagefind 搜索索引和 SEO/OG 静态资源。
  • 需要新增模板或组件才能支持的功能。
  • 视频地址及标记为构建项的播放器配置。相关迁移和新版 admin-assets 已部署;循环开关可在新版网站运行时生效。

每个配置字段在应用中会标记“运行时生效”或“需要重建”。

9. 第六步:安装和使用 Firefly Admin#

已安装应用位置:

/Users/nightwind/Applications/Firefly Admin.app

日常直接双击这个应用即可,不需要每次重新编译。第一次从新位置启动时,macOS 可能询问是否允许访问原有钥匙串项目;在系统弹窗中允许即可,系统密码不要写入文档或聊天。

本地重新构建应用#

在仓库根目录运行:

Terminal window
cd /Users/nightwind/aiWork/firefly/Firefly
pnpm admin:manifest
bash FireflyAdmin/scripts/build-app.sh
codesign --verify --deep --strict "FireflyAdmin/build/Firefly Admin.app"

pnpm admin:manifest 用于刷新配置 Schema 和默认值,修改配置定义时需要执行;只修改 Swift 界面时通常不需要刷新它。构建脚本会自动生成并打包原项目的 About、友链说明和留言板说明,供首次接入使用。

编译完成不等于日常应用已更新。 先按 Command-Q 退出旧应用,保留旧应用副本,再复制新应用到固定安装位置。复制命令见 部署手册中的应用更新步骤。之后仍从 /Users/nightwind/Applications/Firefly Admin.app 启动,避免误开其他旧副本。

本轮使用 Command Line Tools,原生编译与签名校验通过;没有完整 Xcode,不能记为 xcodebuild 通过。完整 Xcode 可用时,也可以打开 FireflyAdmin/FireflyAdmin.xcodeproj,选择实际的 FireflyAdmin scheme。个人本机使用临时签名;对外分发才需要另行安排 Developer ID 签名、公证和更新机制。

重新编译后,macOS 可能再次要求读取原钥匙串。请在系统弹窗中自行允许,不要发送密码,也不要删除钥匙串或本地草稿来绕过提示。

登录和连接#

  1. 打开应用的“连接设置”。
  2. 输入 Supabase 项目根 URL 和 Publishable/anon key。
  3. 使用邮箱登录,或使用 GitHub OAuth 登录。
  4. 确认账号的角色显示为管理员。
  5. 线上预览地址填写 https://bytefun.site;本地预览可填写 http://localhost:4321。

令牌保存在 Keychain;本地内容草稿使用加密文件保存,密钥也在 Keychain,并按项目、站点和账号隔离。

10. 在应用中修改网站配置#

左侧配置页面按网站功能分组,例如“网站基础”“导航栏”“外观与主题”“壁纸”“首页与横幅”“侧边栏”“页面开关”“评论系统”“友链”“相册”和“高级配置”。

常见操作:

  1. 打开一个配置分区,先同步线上已发布值。
  2. 修改字段。选项较少的地方使用整块可点击的方框卡片;数字使用减号、输入框和加号;图片字段提供上传和预览。
  3. 点击“保存草稿”或按 Command + S。
  4. 需要让访客看到时,点击“发布”,查看修改前后的差异后确认。
  5. 如果字段标记“需要重建”,发布配置后进入发布中心,点击“重建线上内容与已发布配置…”。

“恢复默认值”只改变当前编辑值,不会自动发布;“撤销未保存修改”会恢复到上次保存状态。保存失败时,应用会保留本地内容,不会清空输入框。

11. 壁纸、视频壁纸、毛玻璃和调色板#

图片壁纸#

打开“壁纸与毛玻璃”:

  • 选择横幅、全屏、透明覆盖或纯色背景模式。
  • 设置桌面和移动端壁纸 URL。
  • 调整遮罩、顶栏透明和模糊强度。
  • 保存并发布配置。

图片 URL 可以从“资源管理”上传后直接复制,也可以使用已有公开 URL。清空 URL 会回到源码默认壁纸。

视频壁纸#

视频壁纸需要三个条件:

  1. 在“资源管理”上传合法的视频资源并得到 URL。
  2. 在“壁纸与毛玻璃”中打开视频开关并选择视频 URL。
  3. 如果字段标记“需要重建”,发布配置后提交一次网站重建。

当前生产项目已部署视频迁移和新版 admin-assets。视频使用“获取上传凭证 → 直接上传 Storage → 校验登记”的流程,视频字节不再经过 Edge Function。32 MiB MP4 已完成真实上传验收,约 59 秒后成功登记;进度传完还需等待登记完成。

应用、数据库和存储桶已取消额外写死的视频上限,但当前 Supabase Free 项目全局上限仍为 50 MiB。更大文件可以使用其他服务的 HTTPS 视频直链,或自行升级套餐后同步调整项目限制与服务端能力值;没有自动购买升级。

  • 网站访客:点击顶栏视频图标展开二级菜单,选择“循环播放”“播放 / 暂停”。图标本身只展开菜单,页面底部没有控制按钮。
  • 站长默认设置:在应用“壁纸与毛玻璃 → 循环播放视频”设置并发布。访客在菜单中修改只影响自己的当前播放。
  • 修改视频地址后按字段提示发布并重建;只上传文件不会自动替换网站壁纸。

播放失败时检查视频 URL 能否直接打开、编码是否被浏览器支持,以及开关和地址是否已发布到本次构建。

调色板#

网站右上角调色板入口由“调色板与显示”控制。若网站看不到入口,先确认入口开关已发布;若修改的是构建字段,再提交重建任务。

12. 文章、动态和项目管理#

新建文章或动态#

  1. 打开左侧“文章管理”或“动态内容”。
  2. 点击“新建”或按 Command + N。
  3. 填写标题、slug、摘要、正文、日期、分类、标签、封面和 SEO 信息。
  4. 使用“插入”菜单添加标题、粗体、链接、列表、代码块或表格。
  5. 点击“保存草稿”。编辑器会显示已保存、保存中、离线或失败状态。
  6. 点击“提交任务 -> 发布”,或者先生成私密网站预览。

编辑已经上线的文章时,访客仍看到旧版本;新版本只有在构建和部署成功后才上线。

导入已有 Markdown#

在文章或动态列表中点击“导入”:

  1. 选择 Firefly 项目目录,扫描 src/content。
  2. 查看 Frontmatter、slug、图片路径和重复项。
  3. 解决冲突后导入可用项目。
  4. 导出导入报告,确认失败项。

重复导入同一个文件不会创建重复内容;原 Markdown 和资源仍保留。MDX 文件可以只读查看和原样导出,应用不会在服务器直接执行来源不明的 MDX 组件。

删除和批量操作#

原文件或已上线内容需要先通过实际发布任务从网站正文、归档、RSS、站点地图和搜索中移除。列表多选后可提交一个统一删除/重建任务,成功后自动移入回收站;失败不会当作删除成功。单篇操作以确认窗口提示为准,已撤回内容可以直接移入回收站。

本地恢复副本与服务器内容是两回事。若列表仍显示“本地恢复副本”,在该列表中使用“彻底删除”,或“全选本地副本 → 批量彻底删除…”;这只清除本机副本,不删除服务器正式版本。

修改“关于我”及其他独立页面#

  1. 打开左侧 “关于我与独立页面”→“编辑关于我”,直接打开现有原文或草稿,不重复创建。
  2. 编辑 Markdown 正文,新增段落、标题、图片或链接。网页正文标题是以 # 开头的行;“管理标题”只用于应用列表。
  3. 点 保存草稿 → 提交任务 → 发布…,到发布中心等待服务器重建成功。
  4. 新增页面… 可接入现有 About、留言板说明、友链说明。首次接入 Markdown 时可选空白正文,原文仍在历史中,已有草稿不会被清空。当前不新增任意 URL,可信友链 MDX 只读。
  5. 删除… 明确提示影响范围。成功重建后地址返回 404,内容进入回收站;恢复后需再次发布。导航入口可另在“导航栏”移除。

长篇“关于我”在这里修改;头像、昵称和简短简介仍在 “个人资料”。本轮只接入原文,没有发布测试内容。完整步骤及验收边界见 关于我管理说明。

13. 图片、音频和相册#

“资源管理”支持按以下类型筛选:

logo、favicon、wallpaper、avatar、gallery、sponsor、music-cover、other

可以上传、预览、改名、复制公开 URL、查看大小和删除。图片会检查类型并压缩;音频支持 MP3、M4A、WAV、OGG。已被配置、文章、草稿或历史版本引用的资源默认不能直接删除,需要先替换引用。

相册继续使用原有相册入口,可以调整照片顺序、封面、替代文本、说明、日期、地点和标签。私密附件放在 content-assets 私有桶,不能因为 URL 难猜就当成公开保护。

14. 网站预览#

应用提供两种预览:

  • 编辑器快速预览:只检查 Markdown 排版,不代表最终网站模板效果。
  • 网站预览:使用实际 Astro 模板和样式。文章草稿通过发布中心生成一个私密预览任务,再在 WKWebView 中打开。

网站预览支持桌面、平板和手机宽度,显示预览版本和生成时间。私密预览凭证短期有效,只能访问指定版本,不会改变线上发布指针,也不会进入公开 RSS、站点地图或 Pagefind。凭证过期后重新生成预览即可。

15. 发布中心是怎样工作的#

一次正式发布按以下顺序进行:

保存草稿
-> 校验内容和配置
-> 生成不可变快照
-> 创建发布任务
-> worker 构建
-> 检查首页、路由、RSS、站点地图和 Pagefind
-> Nginx 原子切换目录
-> 检查线上网站
-> 标记已上线

发布中心的状态含义:

  • 草稿未发布:只保存了编辑内容。
  • 配置已发布,等待重建:配置版本已经生效,但构建型改动还没有上线。
  • 排队中:服务器已收到任务。
  • 构建中:正在生成 Astro 网站。
  • 部署中:产物已生成,正在检查并切换线上目录。
  • 已上线:线上检查通过,数据库的 live 指针已更新。
  • 失败:线上保留上一个成功版本,可查看错误摘要并重试。

Mac 应用关闭不会中断任务,worker 在服务器上继续执行。重复点击发布会使用幂等键避免重复任务;同一站点的任务按顺序执行,旧任务不会覆盖较新的线上版本。

16. 配置历史、回滚和快照清理#

配置回滚#

在“快照管理”中选择历史版本,查看 JSON Diff 或可读 Diff,再点击“恢复此版本”。恢复会创建一个新的版本并留下审计记录,不会直接覆盖历史记录。

内容回滚#

在发布中心选择成功的发布任务,点击“回滚至此快照”。服务器会使用当时固定的代码包、内容和资源重新构建;只有线上检查通过后才会切换。内容回滚不会自动回滚独立的 runtime-config,如需完全恢复外观,还要在配置历史中回滚对应分区。

释放空间#

配置快照回收站和服务器构建工作区是两个地方:

  • “快照管理 → 回收站”处理配置历史记录,本身很小,不能靠删除它释放大量服务器磁盘。
  • “快照管理 → 服务器备份 · 释放磁盘”或“存储空间 → 服务器构建备份”可扫描服务器工作区,先看计划,再确认清理。
  • 资源管理可检查未引用资源;它与服务器构建备份清理是不同操作。
  • 服务器 /var/lib/firefly-content/jobs/ 保存构建工作区和日志,不能在任务运行时直接删除。

服务器清理前先查看任务状态,保留当前线上版本和约定数量的可回滚版本,再使用项目提供的清理脚本执行 dry-run。不要使用 rm -rf /var/lib/firefly-content/*,否则可能删除正在运行的构建或排查所需日志。

17. 服务器日常维护#

以下命令在服务器 SSH 会话中执行:

Terminal window
# 查看 worker
systemctl status firefly-content-worker
# 查看最近日志
journalctl -u firefly-content-worker -n 100 --no-pager
# 查看当前线上目录
readlink /var/www/firefly-managed/current
# 查看线上发布标识
curl -fsS https://bytefun.site/content-release.json
# 查看某个任务的构建日志(日志可能含私密正文,只在服务器查看)
tail -n 80 /var/lib/firefly-content/jobs/<任务 UUID>/build.log

更新网站代码时不能直接修改已经启用的固定源码目录。正确流程是:本地检查代码、生成新的源码包和 SHA-256、上传到 /opt/firefly-content/code/<新哈希>/,在 Ubuntu 上安装 frozen lockfile 依赖,完成隔离构建后,把新代码哈希设为后续任务使用的版本。旧代码包要保留,方便回滚。

18. 常见问题#

修改后网页没有变化#

先看字段说明:

  • “运行时生效”:确认已经保存并发布配置,刷新网站或等待缓存过期。
  • “需要重建”:进入发布中心提交“重建线上内容与已发布配置”。

普通 pnpm build 不会自动读取 Supabase,也不会自动部署。

应用提示 PGRST002#

Could not query the database for the schema cache 通常是 Supabase PostgREST 暂时无法读取数据库结构,常见原因是数据库连接暂时不可用、迁移正在执行、项目暂停,或接口缓存尚未刷新。先检查 Supabase 项目状态和 SQL 迁移,再退出重开应用;不要把 service role key 放进应用来绕过问题。

保存草稿超时#

应用会保留当前编辑内容,并在超时后只读核对服务器版本,避免重复写入。检查网络、Supabase 状态和是否有另一个设备同时编辑。出现 409 冲突时先比较差异,再选择合并或重新加载。

构建失败但网站还能打开#

这是预期的保护行为。worker 在构建和产物检查通过后原子切换 current,再执行线上 HTTP 检查;检查失败会尝试切回上一目录,只有验证成功才标记“已上线”。若线上状态与数据库记录不一致,任务会保留保护状态,须先核对,不能直接改成成功。查看发布中心错误摘要和服务器 build.log 后处理。

壁纸或顶栏效果消失#

检查“壁纸与毛玻璃”中的 URL、模式、遮罩和顶栏透明设置是否已发布;涉及视频、字体或模板的字段还要重建。浏览器缓存也可能保留旧 CSS,可使用无痕窗口或强制刷新验证。

页面、RSS 或搜索没有更新#

文章和动态必须完成一次真实发布任务。只有 succeeded 且线上检查通过后,正文、分类、RSS、站点地图和 Pagefind 才会一起更新。

应用启动时一直等待#

检查 macOS 是否弹出钥匙串授权窗口。允许 Firefly Admin 读取登录凭证和本地草稿密钥后重新启动。若应用来自不同路径,macOS 可能再次询问授权。

评论为什么没有显示想要的昵称或头像#

到网站 /account/ 登录,编辑公开昵称和头像地址。评论读取用户公开资料,不展示登录邮箱;尚未设置公开昵称时显示稳定的“读者-…”名称,没有头像时使用默认头像。这里的评论账号资料与应用“个人资料”中的站长侧边栏介绍不是同一项设置。

19. 当前状态和边界#

已完成并有生产记录#

  • 网站已部署到腾讯云,Nginx 和 HTTPS 正常工作。
  • Supabase Auth、PostgreSQL、Storage、RLS、Realtime 和 Edge Functions 已接入。
  • 配置草稿、发布、历史、审计和回滚已接入。
  • 文章、动态、项目、Markdown 导入、资源管理和批量删除已接入。
  • 服务器 worker、固定源码包、构建失败保护、Nginx 原子切换和内容回滚已有生产记录。
  • 私密预览、定时发布、应用关闭后继续执行已有实现和验收记录。
  • 视频资源迁移和 admin-assets 直传接口已完成生产部署,MP4 上传不再经过 Edge Function 中转。
  • Firefly Admin macOS 应用可构建、安装和使用。

需要留意的事项#

  • 2026-09-28 已补齐真实管理员 MP4 上传验收,包括原生应用上传 32 MiB 文件;公开与私密视频、并发登记、伪造格式拒绝等 5 组生产检查及 14 项评论身份检查通过,测试数据已清理。视频最大文件仍受当前 Free 项目 50 MiB 上限约束。
  • “关于我与独立页面”已实现并安装,真实 API 接入原文且保留为 v1 草稿。本地原生编译、网站三项检查、183 项内容测试和 7 项构建映射测试通过;没有发布测试正文,也没有在生产删除真实 About 页面。最后一次列表滚动修正版的截图验收仍待补齐,不能记为全部界面验收通过。
  • 字体下载依赖外部网络。字体下载失败会让构建任务失败,线上会继续保留上一成功版本。
  • 新增网站组件、路由、字体、Markdown 内容处理或构建插件,必须生成新的固定源码包并重建网站。
  • 本项目按个人使用需求维护,没有额外建设企业级灾备、告警和自动部署体系;已有服务器备份和回滚能力仍应保留。

20. 相关文件#

21. 最常用的操作清单#

只改标题、壁纸、主题色或公告#

打开 Firefly Admin
-> 对应配置分区
-> 修改并保存草稿
-> 发布配置
-> 如果字段要求重建,再到发布中心提交重建

新增并上线一篇文章#

文章管理 -> 新建文章
-> 编辑正文和元数据
-> 保存草稿
-> 可选:生成私密网站预览
-> 提交发布任务
-> 等待“已上线”

服务器空间不足#

先查看发布中心是否有 building/deploying 任务
-> 打开“快照管理 -> 服务器备份”或“存储空间 -> 服务器构建备份”
-> 扫描服务器并查看清理计划(dry-run)
-> 保留当前线上版本和回滚版本
-> 再清理旧构建工作区和日志

修改“关于我”并上线#

关于我与独立页面 -> 编辑关于我
-> 修改 Markdown 正文
-> 保存草稿
-> 提交任务 -> 发布
-> 等待发布中心显示“已上线”

记住:保存草稿、发布配置、重建网站、已上线是不同状态。运行时配置发布后即可由网站读取;需要重建的配置和正文,须等待相应服务器任务完成。“已保存”不代表访客已经看到改动。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
博客搭建过程
https://bytefun.site/posts/new-b17543c6/
作者
木子
发布于
2026-09-29
许可协议
CC BY-NC-SA 4.0

评论

正在加载评论…

登录后参与评论。

Profile Image of the Author
木子
一个小菜鸟
公告
少年恃险若平地,独倚长剑凌清秋
最新动态
站点统计
文章
3
分类
3
标签
2
总字数
17,691
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
1
Firefly 博客搭建过程与使用说明
先看这里:这次修改需要部署什么
1. 这个项目由什么组成
2. 使用到的技术
网站前端
后端
部署和管理
macOS 管理应用
3. 第一步:整理原有博客
4. 第二步:在本地检查和构建网站
5. 第三步:部署到腾讯云
第一次部署做了什么
6. 第四步:初始化 Supabase
6.1 创建项目并获取公开连接信息
6.2 初始化表和 Storage
6.3 设置管理员
7. 权限和安全是怎样工作的
8. 第五步:接入网站运行时配置
可以直接发布后生效的配置
发布后仍需要重建的配置
9. 第六步:安装和使用 Firefly Admin
本地重新构建应用
登录和连接
10. 在应用中修改网站配置
11. 壁纸、视频壁纸、毛玻璃和调色板
图片壁纸
视频壁纸
调色板
12. 文章、动态和项目管理
新建文章或动态
导入已有 Markdown
删除和批量操作
修改“关于我”及其他独立页面
13. 图片、音频和相册
14. 网站预览
15. 发布中心是怎样工作的
16. 配置历史、回滚和快照清理
配置回滚
内容回滚
释放空间
17. 服务器日常维护
18. 常见问题
修改后网页没有变化
应用提示 PGRST002
保存草稿超时
构建失败但网站还能打开
壁纸或顶栏效果消失
页面、RSS 或搜索没有更新
应用启动时一直等待
评论为什么没有显示想要的昵称或头像
19. 当前状态和边界
已完成并有生产记录
需要留意的事项
20. 相关文件
21. 最常用的操作清单
只改标题、壁纸、主题色或公告
新增并上线一篇文章
服务器空间不足
修改“关于我”并上线
文章目录
1
Firefly 博客搭建过程与使用说明
先看这里:这次修改需要部署什么
1. 这个项目由什么组成
2. 使用到的技术
网站前端
后端
部署和管理
macOS 管理应用
3. 第一步:整理原有博客
4. 第二步:在本地检查和构建网站
5. 第三步:部署到腾讯云
第一次部署做了什么
6. 第四步:初始化 Supabase
6.1 创建项目并获取公开连接信息
6.2 初始化表和 Storage
6.3 设置管理员
7. 权限和安全是怎样工作的
8. 第五步:接入网站运行时配置
可以直接发布后生效的配置
发布后仍需要重建的配置
9. 第六步:安装和使用 Firefly Admin
本地重新构建应用
登录和连接
10. 在应用中修改网站配置
11. 壁纸、视频壁纸、毛玻璃和调色板
图片壁纸
视频壁纸
调色板
12. 文章、动态和项目管理
新建文章或动态
导入已有 Markdown
删除和批量操作
修改“关于我”及其他独立页面
13. 图片、音频和相册
14. 网站预览
15. 发布中心是怎样工作的
16. 配置历史、回滚和快照清理
配置回滚
内容回滚
释放空间
17. 服务器日常维护
18. 常见问题
修改后网页没有变化
应用提示 PGRST002
保存草稿超时
构建失败但网站还能打开
壁纸或顶栏效果消失
页面、RSS 或搜索没有更新
应用启动时一直等待
评论为什么没有显示想要的昵称或头像
19. 当前状态和边界
已完成并有生产记录
需要留意的事项
20. 相关文件
21. 最常用的操作清单
只改标题、壁纸、主题色或公告
新增并上线一篇文章
服务器空间不足
修改“关于我”并上线