Environment Variables

Environment Variables

配置变量

Required variables

The following parameters are required:

ParameterOptional valuesDescription
DB_FORMATmap (default) / key / sqlData persistence format
DB_DRIVERauto (default) / blob / cfkv / kv / d1 / do / mysqlStorage location

Security variables

In addition to DB_FORMAT and DB_DRIVER, it is strongly recommended to configure the following security-related variables:

VariableRequiredDescription
ENCRYPTION_SECRETRecommendedStatic encryption key (≥16 chars) for encrypting drive tokens / secrets. Stored in plaintext when unset
JWT_SECRETRecommendedJWT signing key (≥16 chars). Auto-generated and persisted to KV when unset
ADMIN_PASSWORDOptionalSkip the install wizard and auto-initialize the admin with this password
ALLOWED_ORIGINSOptionalComma-separated CORS origin allowlist
TABLE_PREFIXOptionalSQL table prefix (default x_), only effective when DB_FORMAT = "sql"
CRON_SECRETOptionalAuth key for scheduled tasks (EdgeOne Schedules only)

Storage format differences

DB_FORMATDescription
mapAll data stored as a single JSON. Reads the whole object on every access — lower performance but best compatibility.
keyEach record stored as a Key-Value pair, read on demand — decent compatibility and performance, but no indexing.
sqlData stored as SQL tables, fully identical to the Go backend. Supports indexing and full features, but multiple reads take longer.

Storage driver differences

DB_DRIVERSupported platformDescription
autoUniversalAuto-detect, priority: blob → cfkv → kv → d1 → memory
blobEdgeOne / ESAPersistence provided by EdgeOne or Alibaba ESA Blob, free
cfkvUniversalCloudflare KV REST API, for remote access on platforms without persistence
kvCF / EO / ESAKV database, fast and free
d1CFD1 database, Cloudflare only
doCFDurable Objects, Cloudflare only
mysqlUniversalConnect to your own MySQL database

Valid combinations

DB_FORMATDB_DRIVERDescription
mapautoJSON storage, auto-selects blob / kv / d1 based on the platform
mapblobJSON storage via EdgeOne / ESA Blob (recommended for those platforms)
mapcfkvJSON storage via remote CF KV outside CF Workers
mapkvJSON storage via KV on CF Workers (recommended)
mapd1JSON storage via D1 on CF Workers (not recommended)
mapdoJSON storage via DO on CF Workers (not recommended, may incur cost)
keykvKey-Value storage via KV on CF Workers (recommended)
keyd1Key-Value storage via D1 on CF Workers (recommended)
keymysqlKey-Value storage via MySQL on CF Workers (not recommended)
sqld1SQL-Table storage via D1 on CF Workers (recommended)
sqlmysqlSQL-Table storage via MySQL

Remote database configuration

If you bound cfkv, set the following variables:

VariableDescription
CF_ACCOUNT_IDCloudflare account ID
CF_KV_NAMESPACE_IDCloudflare KV namespace ID
CF_API_TOKENCloudflare API token with KV access

If you bound MySQL, set the following variables:

VariableDescription
MYSQL_URLConnection string, e.g. mysql://user:pass@host:3306/db. When set, the fields below are ignored
MYSQL_HOSTDatabase host
MYSQL_PORTDatabase port (3306)
MYSQL_USERDatabase user
MYSQL_PASSWORDDatabase password
MYSQL_DATABASEDatabase name

必选变量

必须配置这些参数:

参数名可选值说明
DB_FORMATmap(默认)、keysql数据持久化格式
DB_DRIVERauto(默认)、blobcfkvkvd1domysql数据库存储位置

安全变量

DB_FORMATDB_DRIVER 外,强烈建议配置以下安全相关变量:

变量必要说明
ENCRYPTION_SECRET推荐静态加密密钥(≥16 字符),用于加密网盘 token / secret 等敏感字段;未配置时明文落盘
JWT_SECRET推荐JWT 签名密钥(≥16 字符);未配置时自动生成并持久化到 KV
ADMIN_PASSWORD可选跳过安装向导,以该密码自动初始化 admin
ALLOWED_ORIGINS可选CORS 允许来源白名单(逗号分隔)
TABLE_PREFIX可选SQL 表名前缀(默认 x_),仅 DB_FORMAT = "sql" 时生效
CRON_SECRET可选定时任务鉴权密钥(仅 EdgeOne 定时任务需要)

不同存储格式差异

DB_FORMAT 类型描述
map所有数据存储为一个 JSON,每次访问都需要全部读取,性能较差,但兼容性好
key单条数据存储为 Key-Value,按需读取,兼容性和性能还行,但不支持索引
sql数据存储为 SQL-Table,与 Go 后端完全一致,支持索引,功能齐全,但多次读取耗时长

不同存储驱动差异

DB_DRIVER 类型支持平台说明
auto通用自动检测,优先级 blob → cfkv → kv → d1 → memory
blobEdgeOne / ESAEdgeOne 或阿里云 ESA Blob 提供的持久化工具,免费
cfkv通用Cloudflare KV REST API,适用于没有持久化的平台远程调用
kvCF、EO、ESAKV 数据库,速度快,免费
d1CFD1 数据库,仅支持 Cloudflare
doCFDO 持久化对象,仅支持 Cloudflare
mysql通用连接到自己的 MySQL 数据库

可选有效组合变量

DB_FORMATDB_DRIVER说明
mapauto数据存储为 JSON,自动根据部署环境选择 blob、kv、d1
mapblob数据存储为 JSON,使用 EdgeOne / ESA Blob 持久化存储(推荐)
mapcfkv数据存储为 JSON,在非 CF Worker 环境使用远程 CF KV 存储
mapkv数据存储为 JSON,在 CF Worker 环境使用 KV 存储(推荐)
mapd1数据存储为 JSON,在 CF Worker 环境使用 D1 存储(不推荐)
mapdo数据存储为 JSON,在 CF Worker 环境使用 DO 存储(不推荐,可能付费)
keykv数据存储为 Key-Value,在 CF Worker 环境使用 KV 存储(推荐)
keyd1数据存储为 Key-Value,在 CF Worker 环境使用 D1 存储(推荐)
keymysql数据存储为 Key-Value,在 CF Worker 环境使用 MySQL 存储(不推荐)
sqld1数据存储为 SQL-Table,在 CF Worker 环境使用 D1 存储(推荐)
sqlmysql数据存储为 SQL-Table,在 CF Worker 环境使用 MySQL 存储

远程数据库配置项

如果您绑定了 cfkv,则需要设置相关变量:

变量说明
CF_ACCOUNT_IDCloudflare 账号 ID
CF_KV_NAMESPACE_IDCloudflare 绑定的 KV ID
CF_API_TOKENCloudflare 具有 KV 权限的 Token

如果您绑定了 MySQL,则需要设置相关变量:

变量说明
MYSQL_URL地址串,例如:mysql://user:pass@host:3306/db,配置后则不需要配置下方变量
MYSQL_HOST数据库地址
MYSQL_PORT数据库端口(3306)
MYSQL_USER数据库用户
MYSQL_PASSWORD数据库密码
MYSQL_DATABASE数据库名称

Contributors