obsidian-livesync 插件设置项全解:从远程数据库、端到端加密到 Hatch 急救机制
数据同步【免费下载链接】obsidian-livesync项目地址https://gitcode.com/gh_mirrors/ob/obsidian-livesync点击查看免费下载Self-hosted LiveSync本仓库是 Obsidian 的一款自托管实时同步插件通过 CouchDB、S3 兼容对象存储或 WebRTC P2P 三种远程连接方式将本地 Vault 与多台设备进行双向同步。本文以仓库内日文版设置文档 docs/settings_ja.md 为主线逐项讲解全部设置键settings key的语义、取值范围与默认值并结合仓库源码设置面板、配置解析、兼容性迁移等实现文件给出底层佐证帮助你准确理解每个开关的作用并完成生产级配置。说明原文档开头标注内容稍有陈旧本文已按当前仓库源码核对各设置键的读取位置与默认行为个别项以源码为准。若你发现某开关的界面位置有变可先执行设置页内的Check database configuration或通过 CLI 导出设置确认实际键名。一、Remote Database Configurations远程数据库配置远程数据库配置是同步的核心入口。当前版本支持同时注册多个连接配置文件connection profile在「Remote Databases」列表中统一管理并随时切换。操作说明➕ Add new connection新建连接配置并启动对应类型的设置向导Setup Dialog Import connection粘贴连接字符串如slshttps://...、slss3://...、slsp2p://...完成导入 Configure打开设置向导编辑所选连接配置的参数✅ Activate将所选配置设为当前激活的同步目的地️ Delete从列表删除连接配置选择要添加或编辑的连接配置后插件会根据数据库类型CouchDB、S3 兼容对象存储、P2P打开对应的设置对话框。需要特别留意只要有任何同步正在运行就无法编辑连接配置必须先暂停/解除同步再修改。连接字符串的解析逻辑可参见 src/apps/cli/commands/runCommand.ts 与 src/common/replicatorConfigurationIdentity.ts后者会把couchDB_URI、couchDB_USER、couchDB_PASSWORD、couchDB_DBNAME以及 JWT 相关参数组合成唯一连接身份用于区分不同远程配置。1.1 CouchDB 连接配置CouchDB 的各项参数均在CouchDB 设置对话框内配置设置键与界面名称对照如下URI设置键couchDB_URICouchDB 的连接地址对话框内显示为URL。若使用 IBM Cloudant应填写其 External Endpoint (preferred) 地址。两条硬性约束Obsidian Mobile 上只允许 HTTPS 安全连接URI末尾不能带斜杠/。Username设置键couchDB_USERCouchDB 登录用户名对话框内显示为Username。文档建议该用户具备管理员权限以便自动创建数据库与写入_design文档。Password设置键couchDB_PASSWORDCouchDB 登录密码对话框内显示为Password。Database Name设置键couchDB_DBNAME同步目标数据库名对话框内显示为Database Name。命名约束不能包含大写字母、空格以及除_$()/-之外的特殊字符不能以下划线_开头若数据库不存在会在连接测试或应用设置时自动创建需要账号具备创建权限。Use Internal API设置键useRequestAPI对话框内显示为Use Internal API。启用后插件会改用 Obsidian 内部 Request API 来规避不可绕过的 CORS 问题。这是不符合 Web 标准的规避手段不保证在所有环境下可用且可能降低安全性、在未来 Obsidian 更新中失效。仅在服务端无法配置 CORS 时使用。在 CLI 侧replicatorConfigurationIdentity.ts 会把useRequestAPI连同 URI/DBNAME 一起编码进连接身份用于定位正确的复制目标。Custom Headers设置键couchDB_CustomHeaders附加到发往 CouchDB 服务器的每一个请求上的自定义 HTTP 头对话框内显示为Custom Headers。格式为头名: 值每行一条。JWT 认证实验性以下一组设置键共同启用基于 JSON Web Token 的 CouchDB 认证。原文档明确提示JWT 是未经充分验证的实验性功能请谨慎使用。关于在 CouchDB 侧签发 JWT 的实操细节可参考 docs/tips/jwt-on-couchdb.md。设置键界面名称说明useJWTUse JWT Authentication总开关启用 JWT 认证jwtAlgorithmJWT Algorithm签名算法支持HS256、HS512、ES256、ES512jwtExpDurationJWT Expiration Duration (minutes)令牌有效期分钟0表示永不过期jwtKeyJWT KeyHS256/HS512填共享密钥ES256/ES512填pkcs8 PEM 格式的私钥jwtKidJWT Key ID (kid)写入 JWT 头的 Key IDjwtSubJWT Subject (sub)JWT 主题即 CouchDB 用户名在源码中replicatorConfigurationIdentity.ts 会根据useJWT决定认证方式启用 JWT 时读取jwtAlgorithm/jwtKey/jwtKid/jwtSub/jwtExpDuration构建令牌否则退回 Basic 认证couchDB_USER/couchDB_PASSWORD。1.2 Object StorageMinIO / S3 / Cloudflare R2配置对象存储参数在S3/MinIO/R2 设置对话框内配置设置键界面名称说明endpointEndpoint URLS3 兼容存储端点地址Mobile 端仅支持 HTTPSaccessKeyAccess Key ID认证用 Access Key IDsecretKeySecret Access Key认证用 Secret Access KeyregionRegion存储区域如us-east-1Cloudflare R2 通常填autobucketBucket Name存放同步数据的桶名useCustomRequestHandlerUse internal API存储未支持 CORS 时启用改用 Obsidian 内部 API 与 S3 通信属非标准规避手段bucketPrefixFolder Prefix桶内实际目录前缀必须以/结尾如vault-name/存桶根则留空forcePathStyleUse Path-Style Access启用后桶操作使用forcePathStyle选项bucketCustomHeadersCustom Headers附加到发往桶的所有请求的自定义头头名: 值每行一条1.3 连接测试与配置检查Test Database connection按当前设置键测试能否连通数据库创建数据库的权限问题也会在此暴露。Check database configuration直接从设置界面进入并检查/修改 CouchDB 配置用于排查couchDB_DBNAME等键值是否与服务器实际状态一致。1.4 Peer-to-Peer (P2P) 同步配置P2P 模式通过 WebRTC 实现设备间直接同步不依赖中央数据库。其设置键在 CLI 侧同样被完整支持——src/apps/cli/commands/runCommand.ts 会读取P2P_Enabled/P2P_roomID/P2P_passphrase/P2P_relays等键决定是否进入 P2P 模式src/apps/cli/test/test-helpers.sh 的测试脚本也展示了从环境变量注入这些键的用法。设置键界面名称说明P2P_EnabledEnabled总开关启用基于 WebRTC 的设备直连同步P2P_relaysRelay URL用于协调 WebRTC 连接的 WebSocket 中继服务器 URL多个用逗号分隔可点击按钮填入默认中继P2P_roomIDGroup ID标识同步设备组的房间/组 ID所有设备必须一致可手填自定义字符串或用随机生成按钮P2P_passphrasePassphraseP2P 通信的认证与加密口令所有设备必须一致P2P_DevicePeerNameDevice Peer ID本设备在 P2P 网络中的名字组内必须唯一P2P_AutoStartAuto Start P2P Connection插件启动时自动发起 P2P 连接P2P_AutoBroadcastAuto Broadcast Changes本地变更自动广播给已连接对端对端随即拉取变更P2P_turnServersTURN Server URLs (comma-separated)严格 NAT/防火墙下直连失败时用于中继的 TURN/STUN 服务器 URL逗号分隔通常留空即可P2P_turnUsernameTURN UsernameTURN 认证用户名P2P_turnCredentialTURN CredentialTURN 认证密码P2P 的部署与故障排查可继续阅读 docs/setup_p2p.md、docs/p2p.md 与 docs/tips/p2p-sync-tips.md。仓库还提供了自托管中继的参考配置 docker/coturn/compose.ymlTURN 服务器与 docker/config/livesync.ini。二、End to End Encryption端到端加密E2EE 对数据库内存放的数据进行加密磁盘上的 Vault 文件保持明文。加密算法为AES-GCM。Passphrase加密使用的口令文档明确要求使用足够长的口令。口令只存在于客户端服务端仅能拿到密文。Obfuscate Properties设置键usePathObfuscation启用后远程服务器上的文件路径与文件夹名会被混淆加密处理提升元数据隐私代价是轻微的性能下降。Encryption Algorithm设置键E2EEAlgorithm选择端到端加密算法的版本v2V2: AES-256-GCM With HKDF推荐默认版本forceV1或V1: Legacy旧版算法仅用于同步旧版本加密过的既有 Vault。Apply启用/更换加密的正确姿势启用 E2EE 前必须理解两点约束避免让同一内容以不同口令加密后的版本同时存在会造成两份密文Self-hosted LiveSync 用内容的crc32做去重这也会放大上述风险。因此启用 E2EE 的正确流程是先废弃本地与远程的所有数据库再只用新口令加密的内容重新同步一遍。Apply and send推荐在性能最强的设备上执行初始化本地数据库并设置或清除口令随后把所有文件重新登记进数据库初始化远程数据库锁定远程数据库将其他设备拒之门外全量重新发送。该操作负载高、耗时长优先在桌面端执行。Apply and receive初始化本地数据库并设置或清除口令解除远程数据库上的锁全量接收并解密。注意两种操作执行后都会禁用全部同步设置需重新激活。此处的锁定远程数据库机制与后文 Hatch 区的Lock remote database一致——重建数据库时插件会自动上锁。三、Local Database Configurations本地数据库配置Batch database update批量数据库更新将数据库更新延迟到以下任一事件发生时才真正落库发生复制replication打开其他文件窗口可见性状态变化除文件修改外的其他文件相关事件。注意该选项不能与 LiveSync 模式同时使用。minimum chunk size 与 LongLine threshold分块阈值原文档提示当前这两项无法在 UI 中直接调整由默认值自动处理。Self-hosted LiveSync 在保证每个 chunk 至少minimum chunk size字符的前提下尽可能高效地分割笔记。之所以引入该算法是因为按固定字符数切分时编辑文件开头会导致后续所有分块位置整体偏移最终几乎整份文件都要重传。具体分块规则经验法则默认值为20 字符 / 250 字符从文件头向后查找最近的换行若该换行位置超出 LongLine Threshold则以此为 chunk 边界否则依次查找换行 → Windows 风格空行\r\n\r\n附近→ 非 Windows 风格空行取三者中最远的位置与换行后以#开头的位置比较取较近者作为 chunk 边界。原文档还提到即使把所有字符除换行与#外替换成●该算法依然有效。若发现异常分块行为可在命令面板执行Dump informations of this doc导出信息提交反馈。分块器版本设置键chunkSplitterVersion选择 chunk 分割算法版本V3 效率最高若遇到异常可回退到 Default 或 Legacy。该设置键与customChunkSize一起暴露在设置界面的 Advanced 面板中见 src/modules/features/SettingDialogue/AdvancedSettingSpecs.ts——其中customChunkSize接受0值0 表示不覆盖、走默认分块大小。四、General Settings通用设置设置键界面名称说明lessInformationInLogDo not show low-priority log启用后不记录低优先级日志只显示带通知的日志showVerboseLogVerbose log输出详细冗余日志便于排障hideFileWarningNotice—启用后文件警告横幅改为在状态栏显示 ⛔ 图标不显示详情networkWarningStyle—无法连接同步服务器时网络错误的展示方式BANNER完整横幅/ICON仅图标/HIDDEN完全隐藏这些键在通用设置面板源码 src/modules/features/SettingDialogue/GeneralSettingSpecs.ts 中有明确定义hideFileWarningNotice为开关型networkWarningStyle为下拉选择选项来自NetworkWarningStyles常量BANNER/ICON/HIDDEN。五、Sync setting同步设置同步模式设置键syncMode值行为LIVESYNCLiveSync实时、持续的双向同步。需要 CouchDB 或 WebRTC P2P 远程服务器S3 对象存储不支持PERIODICPeriodic Sync按Periodic Sync Interval的间隔定时同步ONEVENTSOn Events由文件保存、打开文件、启动等事件触发同步细粒度由下方开关控制面板源码 src/modules/features/SettingDialogue/PaneSyncSettings.ts 展示了该下拉的动态选项非 CouchDBP2P场景下PERIODIC显示为 Periodic with batch 组合ONEVENTS则按同步源显示为 On events 或 Periodic and events。切换模式时插件会同步联动保存相关的触发器开关。配套开关设置项说明Periodic Sync Interval定时同步间隔秒syncMinimumInterval事件触发自动同步的最小间隔毫秒用于防抖Sync on Save文件保存时同步。注意Obsidian 在编辑过程中会周期性保存新增附件同理因此该开关会导致较频繁的同步Sync on File Open打开文件时同步Sync on StartObsidian 启动时同步原文档给出的推荐组合启用 LiveSync或Periodic Sync Sync on File Open。删除与文件夹行为Use Trash for deleted files远程删除文件时本设备不真正删除而是移入系统回收站/垃圾箱。Do not delete empty folder默认情况下文件夹内文件全部删除后插件会连文件夹一起删除启用本项后保留空文件夹。注意Self-hosted LiveSync 的同步对象是文件文件夹本身不参与同步。Use newer file if conflicted (beta)发生冲突时始终采用较新的文件自动解决冲突。冲突解决的完整实现见 src/serviceFeatures/conflictResolution/checker.ts负责判定operations.ts负责执行。同步隐藏文件Sync hidden files隐藏文件不会主动被文件系统事件捕获需要显式扫描Scan hidden files before replication每次复制前扫描隐藏文件Scan hidden files periodically每隔 n 秒周期性扫描抑制通知设置键suppressNotifyHiddenFilesChange启用后不再弹出隐藏文件变更通知。重要前提——时钟必须同步每次扫描都会连同文件修改时间一起记录文件消失这一事实也会被记录。当该隐藏文件的记录被复制时若记录比存储中的更新才写回存储。反过来如果某文件即使新出现在隐藏目录里的修改时间被判定为更旧对应的变更会被跳过甚至取消即删除。因此请务必保证所有设备时钟已正确对时。相关实现可参考 src/features/HiddenFileSync/CmdHiddenFileSync.ts 与 src/features/HiddenFileSync/CmdHiddenFileSync.unit.spec.ts。Advanced settings复制批量参数Self-hosted LiveSync 基于 PouchDB通过 CouchDB 复制协议与远程同步因此所有笔记都会被拆分为数据库允许的 chunk。但即使如此CouchDB 复制协议中 Upload Batch of Changed Documents 这一步的请求体仍可能变得巨大且无法自动按调用动态调节所以插件开放了以下参数设置项默认值说明Batch size250每批处理的 change feed 数量Batch limit40一次处理的批数上限sendChunksBulkMaxSizeMB单次请求发送 chunk 的最大体积单位MB调参提醒若把值调小请求数量会增加若客户端离服务器较远总吞吐量会下降、传输量反而增大。所以不要一味调小。该键出现在兼容性迁移代码 src/common/compatibilitySettings.ts 中旧键sendChunksBulk关闭时被统一迁移到sendChunksBulkMaxSize 1说明它属于需要跟随版本迁移的旧配置升级插件后建议核对实际值。六、Customisation Sync自定义同步用于同步 Obsidian 的插件、快捷键、主题、代码片段等自定义配置旧称 Plugin Sync。设置键界面名称说明deviceAndVaultNameDevice name设备名在所有同步设备间必须唯一修改前需先停用自定义同步usePluginSyncV2Per-file-saved customisation sync启用按文件的高效自定义同步需先做简单迁移且所有设备必须升级到 v0.23.18启用后与旧版本失去兼容性usePluginSyncEnable customisation sync启用主题/片段/快捷键/插件配置同步。安全原因必须同时启用端到端加密autoSweepPluginsScan customisation automatically每次复制前扫描自定义配置变更autoSweepPluginsPeriodicScan customisation periodically每分钟周期扫描自定义配置变更notifyPluginOrSettingUpdatedNotify customised其他设备更新了自定义配置时显示通知命令入口见 src/features/ConfigSync/CmdConfigSync.ts其单测 CmdConfigSync.command.unit.spec.ts 覆盖了该功能的命令注册与执行流程。七、Miscellaneous其他设置Show status inside editor在编辑器内显示同步状态信息移动端尤其方便。Check integrity on saving保存时校验数据是否完整写入数据库。八、Hatch急救区注意使用Hatch 是遇到麻烦时才能打开的盖子其中操作可能破坏数据务必谨慎。当同步状态异常时Hatch 区域顶部会显示警告。锁定警告的两种模式模式 1数据库被锁定且本设备未标记为 resolved。常见触发场景其他设备启用了 E2EE 或执行过 Drop History使本设备处于不应继续同步的状态。解除方法若因启用加密导致设置口令后执行「这个设备的同步状态をリセット」重置此设备同步状态或「このデバイスのファイルでサーバーデータを上書き」用本机文件覆盖服务器数据会自动解除若确认已自行备份也可点击Ive made a backup, mark this device resolved手动标记解除。模式 2提示远程数据库在过去曾经被解除过模式 1 的锁。在所有设备都解除锁定后可一并解除数据库锁即便置之不理也不影响正常使用。Verify and repair all files重新读取 Vault 内全部文件若发现与数据库存在差异或读取失败则写回数据库。Reset Synchronisation on This Device丢弃本地数据库从远程数据全量重建。Overwrite Server Data with This Devices Files用本机文件重建覆盖本地与远程数据库。Lock remote database锁定远程数据库其他设备再尝试同步时会报错并取消同步。数据库重建后会自动设置相同的锁。当同步故障且需要保护本机数据 服务器数据时作为紧急避难手段使用。Scram 开关紧急停止为防止数据库损坏或意外数据丢失而设计的紧急停止开关。当发生严重的配置不一致或同步错误时插件可能自动进入 Scram 状态并暂停同步。Suspend file watching设置键suspendFileWatching停止本地文件变更的监听与检测。Suspend database reflecting设置键suspendParseReplicationResult停止把数据库变更写回存储文件Vault 内文件的处理。Compatibility (Metadata)元数据清理Do not keep metadata of deleted files设置键deleteMetadataOfDeletedFiles删除文件时同步历史元数据也立即从数据库删除不保留。Delete old metadata of deleted files on start-up设置键automaticallyDeleteMetadataOfDeletedFiles设定删除文件元数据的保留天数超过天数的旧元数据在插件启动时自动清理。0表示禁用自动清理。处理大小不匹配文件设置键processSizeMismatchedFiles处理存在大小不一致size mismatch的文件对由特定 API 或外部联动工具创建的文件同步尤其有用。Remediation事件反映上限Max file modification time for reflecting events设置键maxMTimeForReflectEvents修改时间Unix 纪元秒晚于该值的文件其事件反映将被忽略0表示不设限。该键用于防止远端未来时间戳的文件反向覆盖本地数据。Corrupted data损坏数据修复无法从数据库写回存储的文件会集中显示在此同时插件会给出错误提示。处置方式若 Obsidian 中仍存在该数据编辑并覆盖保存一次通常即可恢复写入成功也可借助 File History 插件找回内容若无其他恢复途径唯一的办法就是点击删除数据库中的损坏文件按钮清除这条损坏记录以消除报错——请先确认确实无法抢救再操作。九、补充CLI 环境下的配置键除 Obsidian 界面外本仓库的 CLI 应用同样读取上述设置键。默认设置由 src/apps/cli/cliSettingsDefaults.ts 通过createNewVaultSettings()生成P2P 与同步相关键在 runCommand.ts 中被读取端到端加密与隐藏文件扫描等能力在 CLI 侧CmdConfigSync.ts、CmdHiddenFileSync.ts也有对应实现适合脚本化、容器化部署场景。十、速查清单建议的典型配置场景建议单人多设备实时同步CouchDB 或 P2P syncModeLIVESYNC或PERIODIC Sync on File Open启用端到端加密先用最强设备执行Apply and send口令设置得足够长算法保持v2隐私敏感路径开启usePathObfuscation移动端使用编辑器内状态显示Show status inside editor遇到锁警告先阅读 Hatch 警告文案区分模式 1/2 后再决定重置或标记 resolved批量参数Batch size 250 / Batch limit 40 /sendChunksBulkMaxSize按网络质量调整勿过度调小进一步阅读docs/settings.md英文版设置文档、docs/quick_setup_cn.md快速上手、docs/troubleshooting.md故障排查、docs/recovery.md数据恢复。如需在自有服务器部署 CouchDB可参考 docs/setup_own_server_cn.md 与 docker/docker-compose.yml。赞分享数据同步【免费下载链接】obsidian-livesync项目地址https://gitcode.com/gh_mirrors/ob/obsidian-livesync点击查看免费下载相关推荐Obsidian LiveSync 端到端加密配置终极隐私保护指南Obsidian LiveSync 端到端加密配置终极隐私保护指南 在当今数据安全日益重要的时代Obsidian LiveSync 的 端到端加密 功能为您数据同步Actual Budget安全机制端到端加密与数据保护Actual Budget安全机制端到端加密与数据保护 概述 Actual Budget作为一款本地优先Local First的个人财务管理应用其安全机金融科技本地优先PWACoco Server数据加密端到端的安全保障机制Coco Server数据加密端到端的安全保障机制 引言企业数据安全的挑战与机遇 在数字化时代企业面临着前所未有的数据安全挑战。敏感文档、客户信息、知识产后端人工智能AI 应用RAGAI Agent深度研究搜索引擎数据集成企业应用上一篇PlayCover文件系统架构IPA缓存与应用数据存储路径下一篇phpunit-speedtrap高级用法自定义测试阈值与环境变量控制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考