环境: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"


podman pod create --name "$POD_NAME" -p "$PORT":80


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


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


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!