
-
作者帖子
-
文风字库 App 平台部署完成
文风字库(WindFonts)字体 CDN 管理平台已完成生产环境部署,站点地址:app.windfonts.com
技术架构
- 前端框架: Next.js 16 (App Router, standalone 模式)
- UI: React 19 + Tailwind CSS 4 + shadcn/ui
- 数据库: SQLite 3 + Drizzle ORM
- 认证: NextAuth.js 5
- 字体存储: 阿里云 OSS(广州区域)
- 容器化: Podman 容器部署
平台功能
- 字体 CDN 分发,支持按需子集化加载
- 字体资源管理(分类、品牌、标签、授权类型)
- OSS 字体同步与批量管理
- 管理后台(字体上下架、数据统计)
- CSS API 一行代码引入字体
自动部署
已配置 Forgejo Webhook 自动部署流水线:
- 开发者 push 代码到 main 分支
- Forgejo 触发 Webhook 通知生产服务器
- 服务器自动拉取代码、构建容器镜像、替换运行中的容器
- 自动健康检查确认服务正常,清理旧镜像
整个流程全自动,push 即部署,部署日志可追溯。
部署过程中解决的问题
- 容器网络连通性:调整了防火墙策略和 DNS 配置,确保容器构建和运行时的网络可达性
- 数据库初始化:处理了 Drizzle ORM 迁移文件的兼容性问题
- 依赖同步:解决了 lock 文件与依赖版本不一致的构建问题
运维文档已归档,后续迭代通过 Git 推送自动完成部署。
进展更新
Login 页面 404 问题已修复
排查确认是部署重建期间的短暂中断,非路由配置问题。容器内
/login路由正常(HTTP 200),nginx 反代配置location /全路径转发到 4000 端口,无遗漏。当前状态:
https://app.windfonts.com/login→ HTTP 200 ✓https://app.windfonts.com/→ HTTP 200 ✓
Webhook 自动部署验证通过
模拟 Forgejo webhook 触发完整部署流水线,全链路跑通:
- Webhook 接收 → Python receiver 验证 HMAC-SHA256 签名,匹配
Windfonts/fonts-vault+refs/heads/main - 构建 →
git pull→podman build(Next.js 16 Turbopack 构建) - 替换 → 停旧容器 → 启新容器 → 健康检查 15s 内通过
- 清理 → 自动
podman image prune
部署日志确认:
[ok] deploy success, health check passed同时已配置 cravatar-prod 服务器的 Forgejo git push 凭据,后续可直接从服务器推送代码。
登录功能修复完成
问题 1:管理后台登录失败 — 环境变量未注入
部署脚本的
podman run缺少--env-file参数,导致认证相关的环境变量(管理员凭据、NextAuth Secret 等)没有传入容器。容器内只有 Dockerfile 硬编码的默认值,认证模块无法正常工作。修复:在部署脚本中补上
--env-file参数,重建容器后 API 层面登录验证通过。问题 2:浏览器端 Server Action 报错
登录时浏览器控制台报
UnrecognizedActionError: Server Action was not found,POST 请求返回 404。根因:Next.js 16 Turbopack standalone 构建存在 bug —
server-reference-manifest.json中node和edge字段为空对象,导致 Server Actions 无法注册。尝试过--webpack构建,manifest 正确但运行时缺少原生模块。最终解决:上游已将登录逻辑从 Server Action 迁移到 NextAuth credentials provider,走 API Route(
/api/auth/callback/credentials),完全绕过了 Turbopack 的 Server Action 注册问题。重新构建部署后登录恢复正常。浏览器硬刷新后确认登录功能正常,session cookie 正确下发。
附带修复:Forgejo Git 服务超时
部署过程中发现
git pull超时,排查到 Forgejo 实例内存膨胀(12GB+ / 5000+ 线程),所有 HTTP 请求响应时间超过 3 秒。原因是 Action Runner 高频轮询 + 爬虫密集抓取大型镜像仓库。重启 Forgejo 容器后恢复正常(内存降至 ~140MB),git 操作恢复畅通。当前状态
https://app.windfonts.com/login登录功能正常 ✓- 自动部署流水线正常 ✓
- Forgejo git 服务已恢复 ✓
待跟进
- Forgejo 升级 v11.0.3 → v11.0.10(解决内存泄漏根因)
- 全站 Cloudflare 加速接入
-
作者帖子
Cyberforums · 原文 · Markdown
想回复或继续讨论?请到 Cyberforums 赛博论坛参与。