BunshipBunship
运维

环境变量与配置

Bunship Web + API 运行所需的环境变量清单。

本页是当前仓库 必需环境变量 的权威清单。

代码参考:

  • web schema:apps/ship/src/env.ts
  • auth runtime:packages/auth/src/server.ts, packages/auth-clerk/src/server.ts
  • api runtime:apps/ship-api/src/server.tsapps/ship-api/src/index.ts

最小必需(Web + API)

缺失这些变量会导致启动/构建失败,或影响认证/支付/存储等核心流程。

变量是否必需使用方说明
NEXT_PUBLIC_AUTH_PROVIDER是(默认 better-authweb, apibetter-authclerk
DATABASE_URLweb, api, authPostgres 连接串
NEXT_PUBLIC_SITE_URLweb, api, auth站点地址,支持逗号分隔多域名
NEXT_PUBLIC_SERVER_URLweb, api, authAPI 地址
NEXT_PUBLIC_API_PREFIX否(默认 /api/v1web, api, authAPI 前缀
ADMIN_EMAIL_LISTweb, auth管理员邮箱列表(逗号分隔)
EMAIL_FROMauth邮件发件人(验证码/重置密码/OTP)
RESEND_API_KEYweb/auth邮件服务密钥
S3_ENDPOINTweb, api存储服务地址
S3_REGIONweb, api存储区域
S3_ACCESS_KEYweb, api存储访问密钥
S3_SECRET_KEYweb, api存储访问密钥密文
S3_BUCKETweb, apiBucket 名称
NEXT_PUBLIC_S3_URL_BASEweb, api公网对象地址前缀
STRIPE_SECRET_KEYweb, apiStripe API Key
STRIPE_WEBHOOK_SECRETweb, apiStripe Webhook 签名密钥
S_GITHUB_PERSONAL_ACCESS_TOKENweb, api管理端/功能页用的 GitHub API Token
CLOUDFLARE_ACCOUNT_ID是(web schema)web当前环境校验要求

Better Auth 专用(当 NEXT_PUBLIC_AUTH_PROVIDER=better-auth

变量是否必需使用方说明
BETTER_AUTH_SECRETauth/apiBetter Auth 签名密钥
BETTER_AUTH_URLauth/apiAuth 基础地址
AUTH_SECRETweb/authWeb 环境校验必需
OAUTH_GITHUB_CLIENT_ID是(开启 GitHub OAuth 时)web/authGitHub OAuth
OAUTH_GITHUB_CLIENT_SECRET是(开启 GitHub OAuth 时)web/authGitHub OAuth
OAUTH_GOOGLE_CLIENT_ID建议authGoogle OAuth 服务端 Client ID
OAUTH_GOOGLE_CLIENT_SECRET建议authGoogle OAuth 服务端 Secret
NEXT_PUBLIC_OAUTH_GOOGLE_CLIENT_ID是(开启 Google OAuth 时)webGoogle One Tap / Sign-In UI

Clerk 专用(当 NEXT_PUBLIC_AUTH_PROVIDER=clerk

变量是否必需使用方说明
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYwebClerk 公钥
CLERK_SECRET_KEYapi/authClerk 服务端密钥
CLERK_WEBHOOK_SECRETapi/api/v1/webhook/clerk 使用

API 运行与部署变量

变量是否必需说明
PORT否(默认 9001API 监听端口
APP_ENV建议development / production 等环境标识
NODE_ENV建议Node 运行环境
JWT_SECRET建议API JWT 签名密钥(虽有 fallback,不建议用于生产)
JWT_EXPIRATION否(默认 7dAPI JWT 有效期
GIT_COMMIT_SHA日志构建信息
BUILD_TIME日志构建信息
CROSS_SUB_DOMAIN可选跨子域 Cookie 域名

可选功能变量

变量功能
UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKENKV/Redis 功能
NEXT_PUBLIC_GA_ID, NEXT_PUBLIC_UMAMI_DATA_ID分析统计
NEXT_PUBLIC_APP_VERSION, VERCEL_GIT_COMMIT_SHAUI 版本展示
BETTER_UPLOAD_PROVIDER, AWS_FORCE_PATH_STYLE上传提供方行为
OPENAI_API_KEY, OPENAI_API_BASE管理端 AI 命令/协作
REPLICATE_API_TOKENReplicate 服务
KIE_API_KEY, KIE_API_BASE_URLKIE 服务
FAL_API_KEYFAL 服务

本地 .env 示例(Better Auth)

NEXT_PUBLIC_AUTH_PROVIDER=better-auth

DATABASE_URL=postgresql://postgres:postgres@localhost:5432/bunship
BETTER_AUTH_SECRET=replace-with-long-random-secret
BETTER_AUTH_URL=http://localhost:3001
AUTH_SECRET=replace-with-long-random-secret

NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_SERVER_URL=http://localhost:3001
NEXT_PUBLIC_API_PREFIX=/api/v1

ADMIN_EMAIL_LIST=admin@example.com
EMAIL_FROM=Bunship <noreply@example.com>
RESEND_API_KEY=re_xxx

OAUTH_GITHUB_CLIENT_ID=xxx
OAUTH_GITHUB_CLIENT_SECRET=xxx
OAUTH_GOOGLE_CLIENT_ID=xxx
OAUTH_GOOGLE_CLIENT_SECRET=xxx
NEXT_PUBLIC_OAUTH_GOOGLE_CLIENT_ID=xxx

S3_ENDPOINT=https://s3.example.com
S3_REGION=auto
S3_ACCESS_KEY=xxx
S3_SECRET_KEY=xxx
S3_BUCKET=bunship
NEXT_PUBLIC_S3_URL_BASE=https://cdn.example.com

STRIPE_SECRET_KEY=sk_test_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
S_GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxx
CLOUDFLARE_ACCOUNT_ID=xxx

本地 .env 示例(Clerk)

NEXT_PUBLIC_AUTH_PROVIDER=clerk

DATABASE_URL=postgresql://postgres:postgres@localhost:5432/bunship

NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_SERVER_URL=http://localhost:3001
NEXT_PUBLIC_API_PREFIX=/api/v1

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxx
CLERK_SECRET_KEY=sk_test_xxx
CLERK_WEBHOOK_SECRET=whsec_xxx

ADMIN_EMAIL_LIST=admin@example.com
EMAIL_FROM=Bunship <noreply@example.com>
RESEND_API_KEY=re_xxx

S3_ENDPOINT=https://s3.example.com
S3_REGION=auto
S3_ACCESS_KEY=xxx
S3_SECRET_KEY=xxx
S3_BUCKET=bunship
NEXT_PUBLIC_S3_URL_BASE=https://cdn.example.com

STRIPE_SECRET_KEY=sk_test_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
S_GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxx
CLOUDFLARE_ACCOUNT_ID=xxx