用 Podman 在家用电脑搭私人 WebDAV 书签同步服务

环境:Linux Mint 21.x | Podman 4.9 | rootless 模式
目标:开机自启、崩溃自恢复、全浏览器通用、零翻墙。


1. 最终效果

  • Chrome / Edge / Firefox 通过 Floccus 插件把书签实时同步到 本地 WebDAV
  • 数据落盘 ~/webdav/data/bookmarks.xbel,完全私有。
  • 使用 Podman Pod + 用户级 systemd 托管,重启后无需登录即可自动拉起。

2. 一键脚本(用户级 systemd)

把下面保存为 ~/bin/webdav-pod.sh 并给执行权限:

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
#!/usr/bin/env bash
set -e
POD_NAME=webdav-pod
PORT=18080
USER=floccus
PASS=$(openssl rand -hex 8)
DATA_DIR="$HOME/webdav/data"

mkdir -p "$DATA_DIR"
echo "PASSWORD=$PASS"

# 1. 创建 Pod(rootless)
podman pod create --name "$POD_NAME" -p "$PORT":80

# 2. 运行容器(rootless)
podman run -d --restart=no --pod "$POD_NAME" \
--name webdav \
-e USERNAME="$USER" \
-e PASSWORD="$PASS" \
-v "$DATA_DIR":/var/lib/dav:Z \
docker.io/bytemark/webdav # 无法拉取镜像需要配置podman国内源

# 3. 生成用户级 systemd 单元
mkdir -p ~/.config/systemd/user
cd ~/.config/systemd/user
podman generate systemd --name "$POD_NAME" --files --new
systemctl --user daemon-reload
systemctl --user enable --now "pod-${POD_NAME}.service"

执行:

1
2
chmod +x ~/bin/webdav-pod.sh
~/bin/webdav-pod.sh

3. 浏览器配置(Floccus)

服务器地址 http://<电脑IP>:18080/
用户名 floccus
密码 脚本输出的 16 位随机串
书签路径 bookmarks.xbel
同步策略 双向同步,15 min

4. 日常运维(用户级)

1
2
3
4
5
6
7
8
# 看日志
journalctl --user -u pod-webdav-pod -f

# 重启 Pod(含内部容器)
systemctl --user restart pod-webdav-pod

# 备份书签
cp ~/webdav/data/bookmarks.xbel{,.$(date +%F)}

5. 卸载清理(用户级)

1
2
3
4
5
systemctl --user stop pod-webdav-pod
systemctl --user disable pod-webdav-pod
rm -f ~/.config/systemd/user/{pod,pod-webdav-pod,container-webdav}.service
systemctl --user daemon-reload
podman pod rm -f webdav-pod

6. 同步插件下载地址


整个方案 零依赖云厂商,换电脑/重装系统只需把 ~/webdav/data 备份带走,再跑一遍脚本即可恢复同步。Happy syncing!