第一步:创建宿主机持久化目录#
在宿主机执行命令,创建配置与缓存目录:
1
2
| sudo mkdir -p /var/home/core/container-work/rclone/config
sudo mkdir -p /var/home/core/container-work/rclone/cache
|
验证方法:运行 ls -ld /var/home/core/container-work/rclone/config,确认目录已创建。
第二步:生成 Google Drive 配置文件#
通过一次性交互容器完成 Google Drive 授权绑定:
1
2
3
| sudo podman run -it --rm \
-v /var/home/core/container-work/rclone/config:/config/rclone:z \
docker.io/rclone/rclone:latest config
|
交互要点回顾:
n 新建配置,名称输入 gdrive。- 存储类型选择
drive。 - 填入你自己的
client_id 与 client_secret。 - Scope 选
1(完整访问)。 root_folder_id 与 service_account_file 直接回车留空。Edit advanced config? 选 n。Use auto config? 选 n。- 在本地有浏览器的电脑上运行终端给出的
rclone authorize 命令,登录已加入测试用户的 Google 账号,将获得的 {"access_token": ...} 字符串粘贴回终端。 Configure this as a Shared Drive? 选 n。y 确认保存,最后 q 退出。
验证方法:
运行以下命令测试连接是否畅通:
1
2
3
| sudo podman run --rm \
-v /var/home/core/container-work/rclone/config:/config/rclone:z \
docker.io/rclone/rclone:latest lsd gdrive:
|
预期结果:正常列出 Google Drive 根目录的文件夹名称。
第三步:配置 Quadlet .container 文件#
创建系统级 Quadlet 目录并写入服务文件:
1
2
| sudo mkdir -p /etc/containers/systemd
sudo nano /etc/containers/systemd/my-rclone.container
|
写入以下经过微调的配置内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| [Unit]
Description=Rclone WebDAV Service for Google Drive (Podman)
After=network-online.target
Wants=network-online.target
[Container]
ContainerName=my-rclone
Image=docker.io/rclone/rclone:latest
AutoUpdate=registry
# 限制监听仅宿主机本地回环,防止公网直通未加密端口
PublishPort=127.0.0.1:1084:8080
Volume=/var/home/core/container-work/rclone/config:/config/rclone:z
Volume=/var/home/core/container-work/rclone/cache:/cache:z
Exec=serve webdav gdrive:/ \
--addr :8080 \
--user webdavuser \
--pass webdavpass \
--cache-dir /cache \
--vfs-cache-mode writes \
--vfs-cache-max-size 15G \
--vfs-cache-max-age 24h \
--dir-cache-time 48h \
--buffer-size 32M \
--tpslimit 8 \
--tpslimit-burst 10
[Service]
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
|
第四步:重载 systemd 并启动容器服务#
Quadlet 会自动将 .container 文件转译为原生的 my-rclone.service:
1
2
3
4
5
6
7
8
| # 1. 重载 systemd 生成服务
sudo systemctl daemon-reload
# 2. 启动并设置开机自启
sudo systemctl enable --now my-rclone
# 3. 检查服务运行状态
sudo systemctl status my-rclone
|
验证方法:
查看容器实时日志:
1
| sudo podman logs -f my-rclone
|
预期结果:日志输出类似 WebDAV server listening on [::]:8080 或 Serving on :8080,无持续报错或重启循环。
第五步:调整 Caddy 反向代理#
在宿主机的 Caddyfile 中,将上游端口指定为你配置的 1084:
1
2
3
4
5
6
7
| dav.yourdomain.com {
reverse_proxy 127.0.0.1:1084 {
transport http {
response_header_timeout 300s
}
}
}
|
重载 Caddy:
1
| sudo systemctl reload caddy
|
验证方法:
在外部终端使用 curl 测试验证:
1
| curl -I -u trarer:tanjie https://dav.yourdomain.com/
|
预期结果:返回 HTTP/2 200 或带有 Dav: 1, 2 的响应头。