Skip to content

配置项

Campux 通过环境变量配置。可以写在 .env,也可以由容器平台注入。

应用

变量默认值说明
NODE_ENVproduction运行环境,影响 cookie 安全策略和生产检查
DATABASE_URL未设置 → SQLite数据库连接串。postgresql://... 用 PostgreSQL;file:./data/campux.db(或留空)用内置 SQLite
CAMPUX_DB_PROVIDER按 URL 推断显式强制 sqlitepostgresql,覆盖按 DATABASE_URL 协议的自动判定
CAMPUX_SERVER_HOST0.0.0.0后端监听地址
CAMPUX_SERVER_PORT8989后端监听端口
CAMPUX_WEB_ORIGINhttp://localhost:5180前端访问源,影响 CORS 和 cookie
CAMPUX_WEB_DIST_DIRapps/web/dist生产模式静态文件目录
CAMPUX_SKIP_AUTO_MIGRATEfalse设置为 true1 时跳过启动自动迁移
CAMPUX_ALLOW_SEEDNODE_ENV=productionbun run db:seed 默认拒绝执行;设为 true 才允许在生产库植入弱密码演示账号

部署模式与初始化

部署模式不是环境变量,而是在首次初始化向导里选择并保存在数据库(SystemSetting)中:

  • single(自用单墙):隐藏多租户,登录直达唯一校园墙。自部署推荐。
  • multi(多租户运营平台):暴露校园墙选择、管理端注册和运维面板,和官方服务一致。

初始化会创建第一个系统运维账号,并把当前访问域名自动设为管理端 host。该流程只能执行一次(实例已有系统运维后接口拒绝重放)。详见部署与快速开始

自助开墙域名

多租户官方服务可以在运营者创建校园墙时自动分配 ${slug}.${CAMPUX_TENANT_DOMAIN_SUFFIX},并通过 Cloudflare DNS API 创建 CNAME 记录。未配置时保持旧行为:创建校园墙但不自动绑定专属域名,仍可由系统运维在运维面板手动填写 host。

变量默认值说明
CAMPUX_TENANT_DOMAIN_SUFFIX自动分配的域名后缀,例如 campux.top
CAMPUX_CLOUDFLARE_API_TOKENCloudflare API Token,至少需要目标 Zone 的 Zone ReadDNS Write
CAMPUX_TENANT_DOMAIN_TARGETCNAME 指向的官方入口 host;为空时依次使用管理端 host、CAMPUX_WEB_ORIGIN 的 host
CAMPUX_CLOUDFLARE_ZONE_ID可选;为空时按后缀调用 Cloudflare Zones API 查询
CAMPUX_TENANT_DOMAIN_PROXIEDtrue创建 DNS 记录时是否开启 Cloudflare proxy
CAMPUX_TENANT_DOMAIN_TTL1DNS TTL,1 表示 Cloudflare 自动 TTL;其他值建议不低于 60

安全

变量必填说明
CAMPUX_BOT_SESSION_SECRET生产必填加密 Bot session cookies

生产环境缺少 CAMPUX_BOT_SESSION_SECRET 会启动失败。

数据库形态(SQLite / PostgreSQL)

Campux 支持两种数据库,同一套数据模型、同一份业务代码,运行时按 DATABASE_URL 协议选择:

  • SQLite(默认)DATABASE_URL 留空、或 file:./data/campux.db、或以 .db/.sqlite 结尾。 零外部依赖,适合单文件 / 单机自托管。
  • PostgreSQLDATABASE_URL=postgresql://...。官方实例 / Docker compose 默认形态, 适合多实例、强并发、独立备份。

可用 CAMPUX_DB_PROVIDER=sqlite|postgresql 显式覆盖自动判定。

对象存储

存储后端默认跟随数据库形态:SQLite → 本地文件系统(local);PostgreSQL → S3(s3)。 可用 CAMPUX_STORAGE_DRIVER 单独覆盖。

变量默认值说明
CAMPUX_STORAGE_DRIVER跟随 DB 形态local(本地文件系统)或 s3(S3/MinIO)
CAMPUX_STORAGE_LOCAL_DIR./data/uploadslocal 驱动的存储根目录

s3 驱动需要

变量默认值说明
S3_ENDPOINThttp://localhost:9000S3-compatible endpoint
S3_REGIONautoS3 region
S3_BUCKETcampux-nextbucket 名称
S3_ACCESS_KEY_IDcampuxaccess key
S3_SECRET_ACCESS_KEYcampux-secretsecret key
S3_PUBLIC_BASE_URLhttp://localhost:9000/campux-next浏览器可访问的公开前缀

s3 驱动下 S3_PUBLIC_BASE_URL 必须从用户浏览器可访问,否则投稿图片和渲染图会裂。 local 驱动下图片读取走应用自身的 /api/uploads/post-image 代理,无需公网前缀。

渲染

变量默认值说明
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH容器内建议设置为 /usr/bin/chromium-browser
CAMPUX_RENDER_CORNER_QQ渲染图角标头像备用 QQ

匿名遥测

详见匿名遥测:上报内容、时机与隐私边界。

变量默认值说明
CAMPUX_TELEMETRY_DISABLEDtrue/1 完全关闭匿名遥测
CAMPUX_TELEMETRY_ENDPOINThttps://dash.campux.top中心收集服务地址;非生产环境仅在显式设置时上报
CAMPUX_TELEMETRY_INSTANCE_NAME自愿的公开实例标签(≤64 字符)
CAMPUX_BUILD_VERSIONdev构建版本号,由 CI 在镜像构建时注入,无需手动设置

示例

ini
NODE_ENV=production
DATABASE_URL=postgresql://campux:campux@postgres:5432/campux_next
CAMPUX_SERVER_HOST=0.0.0.0
CAMPUX_SERVER_PORT=8989
CAMPUX_WEB_ORIGIN=https://campux.example.com
CAMPUX_WEB_DIST_DIR=/app/apps/web/dist
CAMPUX_BOT_SESSION_SECRET=replace-with-a-long-random-secret
CAMPUX_TENANT_DOMAIN_SUFFIX=campux.example.com
CAMPUX_TENANT_DOMAIN_TARGET=app.campux.example.com
CAMPUX_CLOUDFLARE_API_TOKEN=replace-with-cloudflare-api-token
S3_ENDPOINT=http://minio:9000
S3_REGION=auto
S3_BUCKET=campux-next
S3_ACCESS_KEY_ID=campux
S3_SECRET_ACCESS_KEY=campux-secret
S3_PUBLIC_BASE_URL=https://campux.example.com/assets