将 Go1c/FastNodeSync-CLI 封装为支持 PUID/PGID 的 Docker 镜像,用于在无图形界面的服务器上双向同步 Obsidian 仓库。
GitHub Actions 每 6 小时检查一次上游 main 分支。只有对应 commit SHA 尚未发布时才会构建;上游没有更新则跳过。项目自身文件变更或手动触发工作流时仍会强制构建。构建时使用上游最新 commit SHA,推送以下镜像标签:
mahufong/fastnodesync_cli:latestmahufong/fastnodesync_cli:sha-<上游短提交号>mkdir -p config vault
cp config.yaml config/config.yaml
docker compose up -d
services:
fastnodesync-cli:
image: mahufong/fastnodesync_cli:latest
container_name: fastnodesync-cli
restart: unless-stopped
environment:
PUID: "${PUID:-99}"
PGID: "${PGID:-100}"
TZ: "${TZ:-Asia/Shanghai}"
# FNS_API: "${FNS_API:-}"
# FNS_TOKEN: "${FNS_TOKEN:-}"
volumes:
- "${CONFIG_PATH:-./config}:/app/config"
- "${VAULT_PATH:-./vault}:/app/vault"
可复制 .env.example 为 .env 后修改运行参数:
cp .env.example .env
docker compose up -d
GUID 是 PGID 的兼容别名。如果需要使用 GUID,请在 Compose 的 environment 中删除 PGID,改为:
environment:
PUID: "${PUID:-99}"
GUID: "${GUID:-100}"
编辑 config/config.yaml,至少设置:
server:
api: "https://your-server-address"
token: "your_jwt_token"
vault: "defaultVault"
sync:
watch_path: "/app/vault"
也可以将配置文件中的 api 和 token 留空,然后通过 FNS_API、FNS_TOKEN 环境变量传入。
| 变量 | 默认值 | 说明 |
|---|---|---|
PUID | 99 | 进程运行用户的 UID |
PGID | 100 | 进程运行用户组的 GID |
GUID | - | PGID 的兼容别名,仅在未设置 PGID 时生效 |
容器只会以指定 UID/GID 运行同步程序,不会修改 /app/config 和 /app/vault 中已有文件或目录的所有权。请提前确保该 UID/GID 对挂载目录具有所需的读写权限。
docker run -d \
--name fastnodesync-cli \
--restart unless-stopped \
-e PUID=99 \
-e PGID=100 \
-e TZ=Asia/Shanghai \
-v /path/to/config:/app/config \
-v /path/to/vault:/app/vault \
mahufong/fastnodesync_cli:latest
查看程序状态:
docker exec fastnodesync-cli python -m fns_cli.main status -c /app/config/config.yaml
server.vault 必须与 Obsidian 插件中设置的仓库名称一致。/app/vault/.fns_state.json,请持久化 /app/vault。main 分支。Content type
Image
Digest
sha256:e4cd64c8d…
Size
47.6 MB
Last updated
about 2 months ago
docker pull mahufong/fastnodesync_cli