官网构建与部署#
生产域名为 https://i.lninl.com,官网和文档位于根目录,浏览器工作台在 /app/。 整个产物是静态文件,可以部署到 GitHub Pages 或 Caddy,不需要运行模型后端。 最终采用 GitHub Pages;Caddy 服务器保留给可选 Relay,不因发布官网而修改现有站点。
本地构建#
sh scripts/build_web.sh
python3 scripts/build_site.py
python3 -m unittest discover -s site -p test_build.py
python3 -m http.server 8090 --directory dist/site打开 http://localhost:8090/,工作台为 /app/。构建器校验 app 静态资源的 SHA-256, 只复制 web/assets.json 明确列出的资源,不发布 tests、node_modules、源码仓库或 本地数据。用户文档取自顶层 docs/*.md 与公开贡献/许可文档,设计过程和临时验证 记录不生成官网页面。无需外部字体、CDN、分析脚本或后端搜索服务。
GitHub Pages#
工作流 .github/workflows/pages.yml 在默认分支构建并发布 dist/site。Pull request 可以构建检查,但不部署。配置 repository Settings → Pages → GitHub Actions。 再绑定 Custom domain 为 i.lninl.com,最后在 DNS 提供商配置:
Type: CNAME
Name: i
Value: qinains.github.io不要包含 /i 或仓库 URL。删除同名冲突的 A/AAAA 记录;不要为所有子域名使用通配 配置。绑定域名并正确解析后启用 Enforce HTTPS。GitHub 证书签发和 DNS 缓存可能 需要等待,不能以 Actions 构建成功代替公开 HTTPS 验证。
只有仓库构建和发布所需的 GitHub Token 权限;不需要把 API key、SSH key、DNS token 或服务器口令放入仓库。浏览器模型连接由最终使用者自行配置。
可选 Caddy 部署#
若以后切换回自有服务器,上传完整构建到新的 release 目录,切换 current 软链, 保留前一个版本用于回滚。先备份 Caddy 配置,再添加独立站点并 validate 后 reload:
i.lninl.com {
root * /srv/lninl/current
encode zstd gzip
@wasm path *.wasm
header @wasm Content-Type application/wasm
file_server
}不要覆盖无关站点,也不要把仓库根目录设为 Web root。Relay 是另外的授权服务, 如果站点托管在 GitHub Pages,不能假设它自动拥有同源 /relay 路由。
发布后验收#
首页、文档、站内搜索、移动布局、MIT/贡献页面、三套扩展下载、/app/、WASM MIME、 PWA scope 与离线资源均需检查。跨托管平台但保留相同 HTTPS origin 时,浏览器 存储身份仍由 origin 决定;不要为“更新”而清除用户站点数据。
GitHub Pages 不提供自定义服务器安全响应头;官网使用 CSP meta,工作台保留自身 预览安全边界。不要声称静态托管提供了任意后端、扩展签名或跨域代理能力。