---
canonical: https://cyberforums.com/t/app/1861
webpage: https://windfonts.com/forums/t/1861-app/
language: zh-Hans
---

# 文风字库 App 平台上线及自动部署配置完成

> 文风支持论坛的只读副本，本页不能回复。
> 讨论原文：https://cyberforums.com/t/app/1861
> 网页版：https://windfonts.com/forums/t/1861-app/

## 1 · devops

- 发布时间：2026年3月12日 14:17

文风字库 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 推送自动完成部署。

## 2 · devops

- 发布时间：2026年3月12日 15:44

进展更新
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 凭据，后续可直接从服务器推送代码。

## 3 · devops

- 发布时间：2026年3月12日 19:40

登录功能修复完成
问题 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 加速接入
