安全更新:Docker 镜像从 v0.4.0-rc.1 起已修复 FFmpeg MagicYUV 解码器漏洞 CVE-2026-8461(高危),使用旧镜像的实例请立即升级。查看 CVE 公告
安全更新:v0.4.0-beta.3 已修复 WebDAV 请求可导致服务进程终止的问题,旧版本实例请尽快升级。查看安全公告
数据库配置
[database]url = "sqlite://asterdrive.db?mode=rwc"pool_size = 10retry_count = 3先选数据库类型
Section titled “先选数据库类型”- SQLite —— 单机、NAS、个人或小团队,最省心
- PostgreSQL —— 你已经在跑 PG,或者想接入现有运维体系
- MySQL —— 你已经在用 MySQL,想保持统一
| 选项 | 默认值 | 作用 |
|---|---|---|
url | "sqlite://asterdrive.db?mode=rwc" | 数据库连接字符串 |
pool_size | 10 | 连接池大小 |
retry_count | 3 | 启动阶段连接失败时的重试次数 |
SQLite
Section titled “SQLite”url = "sqlite://asterdrive.db?mode=rwc"Docker 里更常见的写法:
url = "sqlite:///data/asterdrive.db?mode=rwc"PostgreSQL
Section titled “PostgreSQL”url = "postgres://user:password@localhost:5432/asterdrive"用户名或密码含 @、:、/、?、# 等保留字符时,推荐使用结构化原始凭据,Forge 会安全注入并编码:
url = { base_url = "postgres://localhost:5432/asterdrive", username = "RAW_USERNAME", password = "RAW_PASSWORD" }url = "mysql://user:password@localhost:3306/asterdrive"MySQL 同样支持结构化写法:
url = { base_url = "mysql://localhost:3306/asterdrive", username = "RAW_USERNAME", password = "RAW_PASSWORD" }结构化模式中的 username 和 password 是原始值,不要预先 percent-encode;base_url 不能再包含 userinfo。AsterDrive 不会把这两个字段写入配置序列化、Debug、health 或 doctor 输出。请限制 data/config.toml 的读取权限;在 Kubernetes 中优先通过 Secret 挂载完整配置文件,避免把凭据放进命令行或普通日志。
也可以通过嵌套环境变量注入:
ASTER__DATABASE__URL__BASE_URL=postgres://database.internal:5432/asterdriveASTER__DATABASE__URL__USERNAME=RAW_USERNAMEASTER__DATABASE__URL__PASSWORD=RAW_PASSWORD启动时会自动做什么
Section titled “启动时会自动做什么”每次启动,AsterDrive 都会:
- 建立数据库连接
- 自动应用迁移(更新 schema)
- 继续启动服务
所以日常升级不需要你手动跑迁移命令。
换数据库后端,不要直接改 url
Section titled “换数据库后端,不要直接改 url”SQLite 的路径语义
Section titled “SQLite 的路径语义”默认 SQLite 用相对路径时,相对 data/config.toml 所在目录解析。
| 部署方式 | 默认落点 |
|---|---|
| 本地直接运行 | ./data/asterdrive.db |
| systemd | WorkingDirectory/data/asterdrive.db |
Docker(写成 sqlite:///data/asterdrive.db?mode=rwc) | 容器里的 /data |
长期部署,把 SQLite 路径写成固定目录或挂到持久化卷里,避免受工作目录变化影响。
pool_size 和 retry_count 怎么调
Section titled “pool_size 和 retry_count 怎么调”- 单机、小团队:保持默认
- 外部数据库启动较慢(容器编排里 DB 起得比 AsterDrive 慢):把
retry_count调高 - 并发高、数据库本身也允许更多连接:再考虑提
pool_size
对应环境变量
Section titled “对应环境变量”ASTER__DATABASE__URL="sqlite:///data/asterdrive.db?mode=rwc"ASTER__DATABASE__POOL_SIZE=10ASTER__DATABASE__RETRY_COUNT=3