docs / 入门 / configuration

配置说明

配置分三层:

  1. 构建期环境变量:决定打包什么(数据库驱动、部署形态),改动后必须重新构建。
  2. 运行期环境变量:连接串、密钥、存储凭据,可在不重新构建的情况下修改。
  3. 后台设置:站点信息、SEO / AI GEO、接口缓存规则等,存在数据库里,改动即时生效。

完整变量清单见仓库根目录的 .env.example。

必填密钥

变量说明
NUXT_JWT_SECRET登录 Cookie 的 JWT 签名密钥,32 位以上
NUXT_SETUP_TOKEN安装令牌。公网部署建议设置:安装向导必须填写它才能创建第一个管理员,防止被抢先安装
NUXT_SESSION_PASSWORD密码哈希组件要求的密钥,32 位以上
NUXT_PUBLIC_SITE_URL站点公网地址,用于 sitemap、hreflang、llms.txt 中的绝对链接

数据库

变量阶段说明
NUXT_DB_DRIVER构建sqlite(默认)/ pg / mysql,只打包对应适配器
DATABASE_URL运行file:.data/cms.sqlite、postgres://user:pass@host:5432/db、mysql://user:pass@host:3306/db
DATABASE_POOL_MAX运行pg / mysql 连接池大小,默认 10
NUXT_DB_AUTO_MIGRATE运行1 = Node 形态启动时自动执行迁移
NUXT_DB_TABLE_PREFIX构建表前缀,默认 cms_

Cloudflare 上忽略 DATABASE_URL,使用 D1 绑定 DB;pg / mysql 可通过 Hyperdrive 绑定 HYPERDRIVE。

三套 schema 在 server/database/dialects/<driver>/schema.ts,迁移目录分别为 migrations、migrations-pg、migrations-mysql。写查询时只用跨方言的 Drizzle API,方言差异由 server/database/index.ts 导出的 firstRow、insertReturning、updateReturning、upsert、likeCi 抹平;不要使用 .all()、.get()、.returning()、onConflictDoUpdate。

多语言

i18n/config.json:

{
  "fallbackLocale": "us",
  "defaultLocale": "zh",
  "locales": [
    { "code": "zh", "language": "zh-CN", "name": "简体中文", "file": "zh.json", "content": "zh" },
    { "code": "us", "language": "en-US", "name": "English", "file": "en.json", "content": "en", "aliases": ["en"] }
  ]
}
字段说明
codeURL 前缀与界面语言代码,如 /us/...
languageBCP 47 语言标签,用于 hreflang、og:locale、JSON-LD
file界面翻译文件,位于 i18n/locales/,可多个语言共用
content数据库里内容行使用的语言代码(posts.locale),缺省等于 code
aliases其他 URL 前缀,301 跳转到 code,如 /en/** → /us/**

英文内容在数据库里始终以 en 存储,URL 用 /us;/en 自动跳转。旧站点仍可使用 cn 作为中文代码。

界面文案的翻译存在 translations 表,可在后台「多语言翻译」中修改,优先级高于文件;首次启动时会从文件写入初始值。

接口约定

所有接口只使用 GET 和 POST。更新与删除通过 POST /api/admin/<资源>/:id 并在请求体传 _method: 'put' | 'delete'。

接口缓存

后台 /admin/cache:

  • 启用开关与缓存时长(1–168 小时)
  • 缓存的接口路径:留空即 /api/public/**;路径必须在 /api/ 下,/api/admin|auth|setup|docs|media 永不缓存
  • 不缓存的路径:优先级更高

规则模式:精确、前缀、通配符(* ?)、包含、正则。环境变量 NUXT_PUBLIC_API_CACHE_ENABLED、_MAX_AGE、_INCLUDE、_EXCLUDE 提供初始值。后台写入文章、产品、分类、设置、翻译后会自动清空缓存。

附件存储

变量说明
NUXT_STORAGE_DRIVERlocal(默认)/ r2 / oss / cos / s3;留空时 Cloudflare 上自动用 R2 绑定 BUCKET
NUXT_STORAGE_BUCKET存储桶名称
NUXT_STORAGE_REGIONoss-cn-hangzhou、ap-guangzhou、us-east-1 等
NUXT_STORAGE_ENDPOINT可选,覆盖默认域名(须包含桶)
NUXT_STORAGE_ACCESS_KEY_ID / NUXT_STORAGE_SECRET_ACCESS_KEY访问密钥
NUXT_STORAGE_ACCOUNT_ID在 Cloudflare 之外通过 S3 API 访问 R2 时需要
NUXT_STORAGE_PUBLIC_URLCDN 或桶的公网域名;设置后媒体地址直出该域名,否则走 /api/media/<key> 代理

阿里云 OSS 与腾讯云 COS 通过 S3 兼容接口(SigV4)访问。

SEO 与 AI GEO

后台 /admin/seo:

  • SEO 标签:按语言的站点名称、SEO 标题、Meta 描述、关键词、分享图;全局的 Google / Bing / 百度验证码、附加 robots 规则。
  • AI GEO 标签:AI 摘要与目标受众(按语言)、组织信息(类型、Logo、官方账号),llms.txt 开关,16 个 AI 爬虫逐个允许 / 禁止。

对外地址:/robots.txt、/sitemap.xml(多语言索引,带 lastmod 与 Last-Modified)、/__sitemap__/<lang>.xml、/llms.txt、/llms-full.txt、/api/public/ai-summary?locale=。页面自动输出 hreflang、x-default、og:locale 与 Organization / WebSite JSON-LD。

部署与前后端分离

变量阶段说明
NUXT_DEPLOY_TARGET构建cloudflare-pages / cloudflare-worker / node / static-frontend
NUXT_PUBLIC_API_BASE构建(前端)静态前端指向的后端地址
NUXT_CORS_ORIGINS运行(后端)允许的前端来源,逗号分隔
NUXT_AUTH_COOKIE_SAME_SITE运行(后端)跨域时设为 none(需 HTTPS)

详见 部署指南。

其他

变量说明
NUXT_API_DOCS_KEY保护 /api/docs(OpenAPI)的访问密钥
NUXT_ALTCHA_HMAC_KEY登录验证码 HMAC 密钥
NUXT_CF_ACCOUNT_ID / NUXT_CF_API_TOKEN部署脚本使用的 Cloudflare 凭据(通常放在 .cloudflare.env)