Skip to content

环境变量 ​

配置优先级从高到低:data/install.json > 进程环境变量 > .env 文件。

.env 从当前工作目录、apps/server、仓库根等位置向上逐级查找,加载时不会覆盖已经存在的环境变量。

服务 ​

变量默认值说明
PORT3000HTTP 监听端口,页面、RPC、WebSocket 共用
PLUGIM_WEB_DIST自动探测前端静态目录;探测不到 index.html 时只跑接口
PLUGIM_LOG_DIR空(不写文件)日志目录,按天写 server-YYYY-MM-DD.log;向导里的 logDir 优先

数据库 ​

变量默认值说明
PLUGIM_DB_DRIVERsqlitesqlite 或 postgres;向导写入的 install.json 优先
PLUGIM_DB_FILEdata/plugim.dbSQLite 文件路径,相对进程工作目录
DATABASE_URLpostgres://localhost:5432/plugimPostgreSQL 连接串,仅 dbDriver=postgres 时使用

认证与注册 ​

变量默认值说明
PLUGIM_JWT_SECRET内置开发密钥生产环境必须改,用 openssl rand -hex 32 生成;未设置时启动日志会告警
PLUGIM_ADMINS空引导管理员用户名,逗号分隔;这些用户名注册时自动获得管理员,留空则谁都不自动提升。仓库的 .env.example 里填的是 admin
PLUGIM_ALLOW_REGISTERtrue设 false 关闭注册;后台「系统设置」或向导策略步骤写入数据库后,以数据库的值为准
PLUGIM_INVITE_CODE空非空则注册必须携带邀请码;同样会被后台策略覆盖

会话与实时 ​

变量默认值说明
PLUGIM_DEFAULT_SESSIONgeneral默认频道名,即侧栏的「综合频道」
PLUGIM_STUN_URLSstun:stun.l.google.com:19302STUN 列表,逗号分隔
PLUGIM_TURN_URL空形如 turn:turn.example.com:3478?transport=udp;空则不下发中继
PLUGIM_TURN_USER空TURN 用户名
PLUGIM_TURN_PASS空TURN 密钥,需与 coturn 的 static-auth-secret 一致

离线推送 ​

变量默认值说明
PLUGIM_VAPID_PUBLIC_KEY空VAPID 公钥,和私钥同时设置才生效
PLUGIM_VAPID_PRIVATE_KEY空VAPID 私钥
PLUGIM_VAPID_SUBJECTmailto:admin@example.com推送凭证的联系方式,mailto: 或站点 URL

两个密钥都留空时,服务端首次启动会自动生成一对并写进 settings 表(键名 vapid_public / vapid_private),重启后继续用同一对。浏览器端 PushManager.subscribe 需要安全上下文,HTTPS 或 localhost 才可用;订阅存在 push_subscriptions 表,推送返回 404/410 时自动删除该订阅。用户离线(没有 WebSocket 连接)才发推送,只发文字预览,图片、文件等显示为类型占位。

判定在线与否只看 WebSocket 连接。网关每 30 秒给每条连接发一次 ping,连续两轮没有回应就断开并清掉身份,所以拔网线、直接关机这类不发 FIN 的掉线会在半分钟到一分钟内被当成离线,推送随即照常发。

安装锁定文件 ​

data/install.json,路径可以用 PLUGIM_INSTALL_FILE 改:

json
{
  "dbDriver": "sqlite",
  "dbFile": "data/plugim.db",
  "logDir": "logs"
}

由安装向导写入。savedb 这一步会先测连接,通过后写入文件并自动重启进程。手工改过之后重启生效。

.env 模板 ​

仓库根目录的 .env.example 就是模板,里面的默认值和代码一致,复制成 .env 再改:

bash
cp .env.example .env

Last updated:

plugim 部署文档