告别云服务商依赖:remotely-save与WebDAV私有云同步方案全指南

【免费下载链接】remotely-save remotely-save/remotely-save - 一个非官方的Obsidian同步插件,支持多种云服务,允许用户在本地和云端之间同步Obsidian知识库。 【免费下载链接】remotely-save 项目地址: https://gitcode.com/gh_mirrors/re/remotely-save

你是否正面临这些同步痛点?

  • 第三方云服务频繁调整API导致同步中断
  • 敏感笔记数据存储在公有云存在隐私风险
  • 跨国云服务同步速度慢且不稳定
  • 多设备间笔记同步出现冲突却无法手动解决

本文将通过8个实战步骤,教你搭建完全掌控的WebDAV私有同步服务,配合remotely-save插件实现Obsidian知识库的安全高效同步。读完本文你将获得

  • 3种WebDAV服务器的搭建与优化方案
  • 跨平台设备同步的完整配置指南
  • 私有云安全加固的7个实用技巧
  • 同步冲突的高级排查与解决方法

方案架构与工作原理

remotely-save插件通过WebDAV(Web-based Distributed Authoring and Versioning)协议实现与私有服务器的文件同步。其核心工作流程如下:

mermaid

关键技术点包括:

  • 增量同步算法:仅传输变更部分而非整个文件
  • 冲突检测机制:基于修改时间和文件大小的双重校验
  • WebDAV协议适配:支持标准协议的同时兼容各服务器特性

准备工作与环境要求

设备类型 最低配置要求 推荐配置
服务器 CPU: 1核, 内存: 512MB, 存储: 10GB CPU: 2核, 内存: 2GB, 存储: 100GB SSD
客户端 Obsidian 0.13.25+ Obsidian 1.4.0+
网络环境 上传带宽1Mbps 上传带宽5Mbps+, 低延迟网络

必需软件:

  • Docker Engine (推荐20.10+) 或
  • Nginx/Apache/Caddy服务器环境
  • Git (用于获取项目代码)

服务器搭建:三种WebDAV方案对比与实现

方案一:Nginx + Docker (推荐新手)

这种方式利用Docker容器快速部署,无需复杂配置即可获得生产级WebDAV服务:

# 创建数据存储目录
mkdir -p /data/webdav && cd /data/webdav

# 启动Nginx WebDAV容器
docker run -d \
  --name=webdav-server \
  -p 127.0.0.1:8080:80 \
  -v $(pwd)/data:/data \
  -e WEBDAV_USERNAME=obsidian_user \
  -e WEBDAV_PASSWORD=$(openssl rand -base64 12) \
  -e PUID=1000 \
  -e PGID=1000 \
  --restart unless-stopped \
  dgraziotin/nginx-webdav-nononsense

自动生成的密码会显示在容器日志中,可通过docker logs webdav-server查看

核心配置说明:

  • 127.0.0.1:8080:80:仅监听本地端口,增强安全性
  • PUID/PGID:设置文件系统权限,避免权限问题
  • --restart unless-stopped:确保服务器意外关闭后自动重启

方案二:Apache (企业级稳定性)

适合需要高度定制化的场景,支持更复杂的访问控制和权限管理:

# 创建数据目录和配置文件
mkdir -p /data/webdav/{data,conf} && cd /data/webdav

# 启动Apache WebDAV容器
docker run -d \
  --name=apache-webdav \
  -p 127.0.0.1:8080:80 \
  -v $(pwd)/data:/var/lib/dav \
  -v $(pwd)/conf:/etc/apache2/conf-enabled \
  -e USERNAME=obsidian_user \
  -e PASSWORD=secure_password_here \
  -e AUTH_TYPE=Basic \
  --restart unless-stopped \
  bytemark/webdav

高级权限配置示例(保存为conf/dav.conf):

<Location /dav>
  DAV On
  AuthType Basic
  AuthName "Obsidian Private Cloud"
  AuthUserFile /etc/apache2/passwd.dav
  Require user obsidian_user
  
  # 限制单个文件大小为100MB
  LimitRequestBody 104857600
  
  # 日志配置
  CustomLog /var/log/apache2/dav_access.log combined
  ErrorLog /var/log/apache2/dav_error.log
</Location>

方案三:Caddy (极简配置与自动HTTPS)

适合需要HTTPS支持的场景,尤其推荐用于移动设备同步:

  1. 创建Caddy配置文件(Caddyfile):
your-domain.com:443 {
    route /obsidian/* {
        root * /data/webdav
        basicauth {
            obsidian_user $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
        }
        uri strip_prefix /obsidian
        webdav
        # 启用gzip压缩
        encode gzip
        # 日志配置
        log {
            output file /var/log/caddy/obsidian.log
            format json
        }
    }
}
  1. 启动Caddy服务:
docker run -d \
  --name=caddy-webdav \
  -p 80:80 \
  -p 443:443 \
  -v $(pwd)/Caddyfile:/etc/caddy/Caddyfile \
  -v $(pwd)/data:/data/webdav \
  -v caddy_data:/data/caddy \
  -v caddy_logs:/var/log/caddy \
  --restart unless-stopped \
  caddy:latest
  1. 生成密码哈希:
docker exec -it caddy-webdav caddy hash-password -plaintext 'your_secure_password'

客户端配置与优化

基础配置步骤

  1. 在Obsidian中安装remotely-save插件
  2. 打开插件设置,选择"WebDAV"作为远程服务类型
  3. 填写服务器信息:
参数 配置值 注意事项
服务器地址 http://localhost:8080 远程访问使用域名或公网IP
用户名 obsidian_user 与服务器配置一致
密码 你的安全密码 建议使用密码管理器生成
认证类型 Basic 根据服务器配置选择
远程基础目录 (留空或自定义) 建议使用"obsidian_vault"便于区分
  1. 点击"测试连接",成功后点击"保存设置"

高级配置与优化

在插件设置的"高级选项"中进行以下优化:

mermaid

关键优化项:

  • 同步间隔:设置为5-10分钟,平衡实时性和资源占用
  • 超时设置:根据网络状况调整为30-60秒
  • 并行上传数:家庭网络建议设为2-3,企业网络可设为5-8
  • 大文件处理:启用"分块上传",设置块大小为5MB
  • 冲突解决策略:选择"保留双方版本"更安全,自动添加冲突标记

跨平台同步配置指南

iOS/Android移动设备

移动设备需要特别注意以下配置:

  1. HTTPS要求:iOS设备必须使用HTTPS连接,可通过以下方式实现:

    • 使用Caddy自动配置SSL证书
    • 通过反向代理如提供HTTPS
    • 自建CA并在设备上安装证书(高级用户)
  2. 网络优化

    • 启用"仅WiFi同步"避免移动数据消耗
    • 配置"同步压缩"减少数据传输量
    • 设置"后台同步"确保应用退出后仍能完成同步

配置示例(iOS通过Tailscale访问)

  1. 在服务器和iOS设备上安装Tailscale
  2. 获取服务器的Tailscale IP(如100.100.100.100)
  3. 在remotely-save中配置:
    • 服务器地址:http://100.100.100.100:8080
    • 其他设置保持不变
  4. 测试连接并保存

安全加固与防护措施

网络安全

  1. 访问控制

    • 使用防火墙限制仅允许信任IP访问
    • 配置示例(UFW防火墙):
    ufw allow from 192.168.1.0/24 to any port 8080
    ufw deny 8080/tcp
    
  2. 传输安全

    • 强制使用HTTPS,配置TLS 1.2+
    • 禁用不安全的密码套件
    • 配置HSTS头防止降级攻击

服务器安全

  1. 文件系统权限

    • 以非root用户运行WebDAV服务
    • 设置数据目录权限为700,文件为600
    chmod -R 700 /data/webdav/data
    chown -R webdav-user:webdav-group /data/webdav
    
  2. 审计与监控

    • 启用访问日志记录所有操作
    • 配置异常访问告警(如多次失败登录)
    • 定期审查同步日志检测异常活动
  3. 备份策略

    • 配置WebDAV数据目录的定期备份
    • 实施3-2-1备份策略:3份备份,2种介质,1份异地

常见问题排查与解决

连接问题排查流程

mermaid

典型问题解决

  1. CORS错误

    Access to fetch at 'http://example.com/' from origin 'app://obsidian.md' has been blocked by CORS policy
    

    解决方法:更新WebDAV服务器的CORS配置,添加以下响应头:

    Access-Control-Allow-Origin: app://obsidian.md,capacitor://localhost,http://localhost
    Access-Control-Allow-Methods: PROPFIND,PROPPATCH,MKCOL,PUT,DELETE,MOVE,COPY,GETLIB,LOCK,UNLOCK
    Access-Control-Allow-Headers: Depth,Content-Type,Authorization
    
  2. 大文件同步失败

    解决方法:

    # 对于Nginx服务器,修改配置增加上传限制
    client_max_body_size 100M;
    

    在remotely-save设置中启用分块上传,设置"最大重试次数"为5

  3. 同步冲突频繁

    解决方法:

    • 增加同步频率,减少冲突可能性
    • 启用"编辑锁定"功能,防止多设备同时编辑
    • 在设置中调整冲突解决策略为"手动解决"

性能优化与扩展

服务器性能调优

根据服务器硬件配置进行以下优化:

  1. 缓存配置

    • 为静态资源启用适当的缓存策略
    • Nginx示例配置:
    location / {
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS;
        expires 1h;
        add_header Cache-Control "public, max-age=3600";
    }
    
  2. 资源限制

    • 设置连接数限制防止DoS攻击
    • 配置带宽限制确保公平使用

高级扩展方案

  1. 多服务器同步

    使用rsync在主从服务器间同步数据:

    rsync -avz --delete /data/webdav/ backup-server:/data/webdav/
    
  2. 存储扩展

    配置LVM实现存储的动态扩展:

    # 创建物理卷
    pvcreate /dev/sdb
    # 扩展卷组
    vgextend webdav_vg /dev/sdb
    # 扩展逻辑卷
    lvextend -l +100%FREE /dev/webdav_vg/data
    # 调整文件系统大小
    resize2fs /dev/webdav_vg/data
    
  3. 监控系统

    使用Prometheus+Grafana监控同步性能:

    • 监控文件同步延迟
    • 跟踪存储空间使用情况
    • 设置关键指标告警

总结与最佳实践

通过本文介绍的方案,你已成功搭建了基于WebDAV的私有云同步系统。为确保长期稳定运行,建议遵循以下最佳实践:

  1. 定期维护

    • 每周检查同步日志,及时发现潜在问题
    • 每月进行一次完整备份,测试恢复流程
    • 每季度更新服务器软件和安全补丁
  2. 安全习惯

    • 使用强密码并定期更换(每3-6个月)
    • 限制WebDAV服务仅在信任网络中可访问
    • 避免在公共网络编辑重要笔记,使用本地模式
  3. 进阶探索

    • 实现版本控制与文件历史回溯
    • 配置自动化备份与灾难恢复方案
    • 探索与其他工具如Joplin、Notion的同步集成

私有云同步方案不仅解决了数据隐私和访问控制问题,还提供了更灵活的定制选项。随着知识库的增长,这种架构将为你提供坚实可靠的同步基础,让你专注于知识创作而非技术难题。

【免费下载链接】remotely-save remotely-save/remotely-save - 一个非官方的Obsidian同步插件,支持多种云服务,允许用户在本地和云端之间同步Obsidian知识库。 【免费下载链接】remotely-save 项目地址: https://gitcode.com/gh_mirrors/re/remotely-save

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐