Docker 适合 NAS、单机和小团队部署。
最省心的做法是把数据库、上传目录和临时目录都放到 /data,这样升级容器时最不容易丢数据。
如果你使用官方镜像并把数据库与临时目录都指向 /data,卷里通常会看到:
asterdrive.dbuploads/.tmp/.uploads/
其中:
asterdrive.db和uploads/需要长期保留.tmp/和.uploads/一般不用备份,但会影响本地磁盘占用
如果你现在还是纯 HTTP 测试环境,可以先直接运行:
docker run -d \
--name asterdrive \
-p 3000:3000 \
-e ASTER__SERVER__HOST=0.0.0.0 \
-e ASTER__AUTH__BOOTSTRAP_INSECURE_COOKIES=true \
-e ASTER__DATABASE__URL="sqlite:///data/asterdrive.db?mode=rwc" \
-v asterdrive-data:/data \
ghcr.io/apts-1547/asterdrive:latest这只会在第一次初始化时把浏览器 Cookie 的 HTTPS 要求设成关闭。
正式切到 HTTPS 后,到后台把对应系统设置改回开启,然后把这个环境变量去掉。
在宿主机准备一个 config.toml,只写你要覆盖的项目即可,例如:
[auth]
jwt_secret = "replace-with-your-own-random-secret"
bootstrap_insecure_cookies = false
[server]
temp_dir = "/data/.tmp"
upload_temp_dir = "/data/.uploads"然后把它只读挂载进容器:
docker run -d \
--name asterdrive \
-p 3000:3000 \
-e ASTER__SERVER__HOST=0.0.0.0 \
-e ASTER__DATABASE__URL="sqlite:///data/asterdrive.db?mode=rwc" \
-v asterdrive-data:/data \
-v "$(pwd)/config.toml:/config.toml:ro" \
ghcr.io/apts-1547/asterdrive:latest如果不挂载 config.toml,容器第一次启动时也会自动生成一份默认配置,但它会留在容器内部,不适合长期正式部署。
services:
asterdrive:
image: ghcr.io/apts-1547/asterdrive:latest
ports:
- "3000:3000"
environment:
ASTER__SERVER__HOST: 0.0.0.0
ASTER__DATABASE__URL: sqlite:///data/asterdrive.db?mode=rwc
volumes:
- asterdrive-data:/data
- ./config.toml:/config.toml:ro
restart: unless-stopped
volumes:
asterdrive-data:auth.jwt_secret是否已经固定- 如果暂时是纯 HTTP 测试,是否只在首次引导时设置了
bootstrap_insecure_cookies = true - 切到 HTTPS 后,后台系统设置里的 Cookie 安全开关是否已经改回开启
- 如果站点对外访问,
公开站点地址是否已经填成真实域名 - 如果要开放注册、找回密码或邮箱改绑,测试邮件是否已经发通
- 数据库、上传目录和临时目录是否确实落在持久化卷里
- 默认策略组是否已经创建
- 如果以后要走 S3 / MinIO,是否已经计划好对象存储 CORS 和密钥管理
docker logs -f asterdrive使用 docker compose 时,升级通常就是:
docker compose pull
docker compose up -d升级后建议重新打开浏览器页面,再检查一次登录、上传、分享、策略组和 WebDAV。