部署说明
本文先给出一套可以直接复制的部署文件,再说明每一项的含义。当前仓库默认使用 SQLite + 本地磁盘挂载,适合单机或小型服务器。
Docker Compose
yaml
version: "3.9"
services:
z-drive:
image: designerwang/z-drive:latest
container_name: z-drive
restart: unless-stopped
ports:
- "8000:8000"
environment:
APP_NAME: z-drive
DEBUG: "false"
DATABASE_URL: sqlite:////data/storage/z_drive.db
STORAGE_PATH: /data/storage
VIEW_ORIGIN: "false"
ENABLE_BROWSER_CACHE: "true"
IMAGE_MAX_FILE_SIZE_MB: "50"
CLOUD_TOTAL_SPACE_MB: "10240"
IMAGE_AUTH_MODE: none
SIGN_SALT: ${SIGN_SALT:-change-me}
ADMIN_USERNAME: ${ADMIN_USERNAME:-admin}
ADMIN_PASSWORD: ${ADMIN_PASSWORD:-change-me}
JWT_SECRET: ${JWT_SECRET:-z-drive-change-me-secret-key-at-least-32-bytes}
JWT_EXPIRE_MINUTES: ${JWT_EXPIRE_MINUTES:-10080}
volumes:
- ./storage:/data/storage对应 .env
bash
# z-drive runtime settings
# Copy to .env and replace sensitive values before production use.
APP_NAME=z-drive
DEBUG=false
DATABASE_URL=sqlite:///./z_drive.db
STORAGE_PATH=storage
VIEW_ORIGIN=false
ENABLE_BROWSER_CACHE=true
IMAGE_MAX_FILE_SIZE_MB=50
CLOUD_TOTAL_SPACE_MB=10240
IMAGE_AUTH_MODE=none
SIGN_SALT=replace-with-random-salt
ADMIN_USERNAME=admin
ADMIN_PASSWORD=replace-with-strong-password
JWT_SECRET=replace-with-long-random-secret-at-least-32-bytes
JWT_EXPIRE_MINUTES=10080启动步骤
bash
cp .env.example .env
docker compose up -d如果你使用上面的 Compose 示例,首次启动前需要先创建本地存储目录:
bash
mkdir -p storage本地运行
如果你不是直接用 Docker,也可以在本机运行:
bash
cp .env.example .env
uv sync
cd web
pnpm install
pnpm build
cd ..
uv run z-drive默认访问地址:
- 管理端:
http://127.0.0.1:8000/ - 健康检查:
http://127.0.0.1:8000/health
部署建议
- 生产环境下请务必修改
.env里的ADMIN_PASSWORD、JWT_SECRET和SIGN_SALT。 - 如果你希望保留上传文件和数据库,记得把
./storage目录持久化到宿主机或云盘卷。 - 如果是反向代理部署,建议在代理层开启 HTTPS,并把请求头中的真实客户端 IP 透传给后端。
