<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>运维 on KnightLi的博客</title>
        <link>https://knightli.com/tags/%E8%BF%90%E7%BB%B4/</link>
        <description>Recent content in 运维 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 31 May 2026 12:23:55 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/%E8%BF%90%E7%BB%B4/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Syncthing 多设备多文件夹怎么管理？拓扑、命名和版本控制</title>
        <link>https://knightli.com/2026/05/31/syncthing-multi-device-folder-management/</link>
        <pubDate>Sun, 31 May 2026 12:23:55 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/31/syncthing-multi-device-folder-management/</guid>
        <description>&lt;h2 id=&#34;syncthing-系列目录&#34;&gt;Syncthing 系列目录
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-file-sync-practical-notes/&#34; &gt;Syncthing 怎么用？从设备配对到文件同步的实用笔记&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-docker-deploy-guide/&#34; &gt;用 Docker 部署 Syncthing：Compose、端口和目录映射避坑&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-multi-device-topology-guide/&#34; &gt;Syncthing 多设备怎么配？对等网络、星型拓扑和引入者&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-android-fork-setup-guide/&#34; &gt;Android 上怎么用 Syncthing？Syncthing-Fork 配置与照片备份&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-multi-device-folder-management/&#34; &gt;Syncthing 多设备多文件夹怎么管理？拓扑、命名和版本控制&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-iphone-photo-backup/&#34; &gt;Syncthing 如何同步 iPhone 照片到电脑或 NAS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Syncthing 设备一多，文件夹一多，如果不提前规划，很快就会乱。&lt;/p&gt;
&lt;p&gt;典型情况是：手机、平板、笔记本、台式机、NAS 都在同步；文件夹里又有照片、工作文档、代码项目、微信备份、电子书。每个设备都能改，每个目录都可能共享，最后你很难判断“这个文件到底从哪里来，又会同步到哪里去”。&lt;/p&gt;
&lt;p&gt;要把 Syncthing 用稳，核心不是多装几个客户端，而是建立一套管理规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拓扑上用星型结构。&lt;/li&gt;
&lt;li&gt;文件夹上统一 ID 和路径。&lt;/li&gt;
&lt;li&gt;设备关系上使用引入者。&lt;/li&gt;
&lt;li&gt;数据方向上区分备份和双向同步。&lt;/li&gt;
&lt;li&gt;中心节点上开启版本控制。&lt;/li&gt;
&lt;li&gt;临时文件用忽略规则过滤。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;拓扑放弃全连接优先星型&#34;&gt;拓扑：放弃全连接，优先星型
&lt;/h2&gt;&lt;p&gt;Syncthing 是 P2P 对等架构，但不代表所有设备都要两两配对。&lt;/p&gt;
&lt;p&gt;如果 5 台设备互相全连接，需要维护 10 组设备关系。新增一个文件夹时，还要在多台设备上接收、设置路径、确认共享。设备越多，管理成本越高。&lt;/p&gt;
&lt;p&gt;更推荐的方式是星型拓扑。&lt;/p&gt;
&lt;p&gt;选一台长期在线、空间大、网络稳定的设备作为中心节点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NAS&lt;/li&gt;
&lt;li&gt;群晖&lt;/li&gt;
&lt;li&gt;软路由&lt;/li&gt;
&lt;li&gt;迷你主机&lt;/li&gt;
&lt;li&gt;24 小时开机的电脑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其他设备只和中心节点配对：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;手机 ----\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;平板 -----\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;笔记本 ---- NAS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;台式机 ---/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;手机不直接加笔记本，笔记本也不直接加台式机。手机要把照片同步给电脑，先同步到 NAS，再由 NAS 同步给电脑。&lt;/p&gt;
&lt;p&gt;这样做的好处是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新设备只需要和 NAS 配对。&lt;/li&gt;
&lt;li&gt;文件夹关系集中在 NAS 上管理。&lt;/li&gt;
&lt;li&gt;NAS 可以统一做版本保留。&lt;/li&gt;
&lt;li&gt;设备离线时，NAS 仍然能作为缓冲点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;缺点是 NAS 更重要了。它应该稳定运行，并且需要单独备份。&lt;/p&gt;
&lt;h2 id=&#34;folder-id-比文件夹标签更重要&#34;&gt;Folder ID 比文件夹标签更重要
&lt;/h2&gt;&lt;p&gt;在 Syncthing 中，真正识别一个同步文件夹的是 &lt;code&gt;Folder ID&lt;/code&gt;，不是你看到的标签名。&lt;/p&gt;
&lt;p&gt;标签只是显示名称，可以在不同设备上不一样。&lt;code&gt;Folder ID&lt;/code&gt; 才是判断“这些设备上的文件夹属于同一个同步组”的关键。&lt;/p&gt;
&lt;p&gt;所以，在第一台设备创建文件夹时，建议手动指定规范 ID。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;notes-main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;work-docs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;backup-pixel-photos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;backup-iphone-photos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;media-ebooks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;code-projects
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要使用随手生成的随机 ID，也不要只写 &lt;code&gt;test&lt;/code&gt;、&lt;code&gt;sync&lt;/code&gt;、&lt;code&gt;new-folder&lt;/code&gt; 这类无法长期维护的名字。&lt;/p&gt;
&lt;p&gt;命名规则可以简单一些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;双向同步：&lt;code&gt;notes-main&lt;/code&gt;、&lt;code&gt;work-docs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;手机备份：&lt;code&gt;backup-pixel-photos&lt;/code&gt;、&lt;code&gt;backup-iphone-photos&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;资料分发：&lt;code&gt;media-ebooks&lt;/code&gt;、&lt;code&gt;media-music&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;代码目录：&lt;code&gt;code-projects&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以后在其他设备接收共享时，只要看到 Folder ID，就能判断它是什么用途。&lt;/p&gt;
&lt;h2 id=&#34;中心节点路径要规范&#34;&gt;中心节点路径要规范
&lt;/h2&gt;&lt;p&gt;在 NAS 或中心电脑上，建议创建一个统一的 Syncthing 根目录。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/Syncthing/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Phone_Backup/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── iPhone15_DCIM/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── Pixel7_DCIM/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Work/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Office_Docs/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── Coding_Projects/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Notes/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── Main_Notes/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── Media/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── eBooks/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要把同步目录散落在系统各处。散落的目录短期方便，长期一定难维护。&lt;/p&gt;
&lt;p&gt;推荐原则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有 Syncthing 管理的目录放在统一根目录下。&lt;/li&gt;
&lt;li&gt;手机备份、工作文档、媒体资料分区存放。&lt;/li&gt;
&lt;li&gt;文件夹名体现用途，不体现临时设备状态。&lt;/li&gt;
&lt;li&gt;不把系统目录、下载缓存目录直接作为长期同步目录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Syncthing 跑在 Docker 中，还要注意容器内路径和宿主机路径的对应关系。&lt;/p&gt;
&lt;p&gt;例如宿主机目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/Syncthing/Phone_Backup/iPhone15_DCIM
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;映射到容器内：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/syncthing/Phone_Backup/iPhone15_DCIM
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Web UI 里填写的是容器内路径，不是宿主机路径。&lt;/p&gt;
&lt;h2 id=&#34;引入者减少多设备配对成本&#34;&gt;引入者：减少多设备配对成本
&lt;/h2&gt;&lt;p&gt;Syncthing 的 &lt;code&gt;Introducer&lt;/code&gt;，中文界面通常叫“引入者”。&lt;/p&gt;
&lt;p&gt;它适合星型拓扑。&lt;/p&gt;
&lt;p&gt;做法是：把 NAS 设为引入者。之后新设备只要和 NAS 配对，NAS 就可以把已知设备和共享关系介绍给新设备，减少你在各个设备之间重复扫码、重复添加的工作。&lt;/p&gt;
&lt;p&gt;适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;家里有多台电脑和手机。&lt;/li&gt;
&lt;li&gt;NAS 是长期中心节点。&lt;/li&gt;
&lt;li&gt;经常新增设备。&lt;/li&gt;
&lt;li&gt;希望减少设备配对操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但不要乱用。&lt;/p&gt;
&lt;p&gt;建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只把 NAS 或主服务器设为引入者。&lt;/li&gt;
&lt;li&gt;普通手机、平板、临时电脑不要设为引入者。&lt;/li&gt;
&lt;li&gt;新设备加入后，检查它被自动添加了哪些设备和文件夹。&lt;/li&gt;
&lt;li&gt;不信任的设备不要进入引入者管理范围。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;引入者能提高效率，也会扩大自动关联范围。它适合有清晰中心节点的网络，不适合混乱的临时设备环境。&lt;/p&gt;
&lt;h2 id=&#34;区分备份和双向同步&#34;&gt;区分备份和双向同步
&lt;/h2&gt;&lt;p&gt;多文件夹管理里，最重要的一件事是：不要所有目录都用 &lt;code&gt;Send &amp;amp; Receive&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;不同目录的数据方向不一样。&lt;/p&gt;
&lt;h3 id=&#34;手机照片备份&#34;&gt;手机照片备份
&lt;/h3&gt;&lt;p&gt;手机端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Send Only
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;NAS 端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Receive Only
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样手机负责发送照片，NAS 负责接收保存。手机清理空间、NAS 整理目录时，都不容易互相影响。&lt;/p&gt;
&lt;h3 id=&#34;多端文档和笔记&#34;&gt;多端文档和笔记
&lt;/h3&gt;&lt;p&gt;电脑端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Send &amp;amp; Receive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;NAS 端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Send &amp;amp; Receive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;手机端是否加入双向同步，要看你是否真的在手机上编辑这些文件。如果手机只查看资料，可以考虑 &lt;code&gt;Receive Only&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;资料分发&#34;&gt;资料分发
&lt;/h3&gt;&lt;p&gt;NAS 端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Send Only
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其他设备：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Receive Only
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;适合电子书、安装包、参考资料这类中心分发目录。&lt;/p&gt;
&lt;h3 id=&#34;备份目录&#34;&gt;备份目录
&lt;/h3&gt;&lt;p&gt;主设备：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Send Only
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;备份机：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Receive Only
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再配合备份机端版本控制或快照。&lt;/p&gt;
&lt;h2 id=&#34;nas-上开启文件版本控制&#34;&gt;NAS 上开启文件版本控制
&lt;/h2&gt;&lt;p&gt;多设备同步最怕误删和误覆盖。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某台电脑误删了工作文档。&lt;/li&gt;
&lt;li&gt;手机清理工具删了相册目录。&lt;/li&gt;
&lt;li&gt;两台设备同时改了同一份笔记。&lt;/li&gt;
&lt;li&gt;某个同步规则写错，把空目录同步过去。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，中心节点最好开启文件版本控制。&lt;/p&gt;
&lt;p&gt;在 NAS 的 Syncthing Web UI 中：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开对应文件夹设置。&lt;/li&gt;
&lt;li&gt;进入文件版本控制。&lt;/li&gt;
&lt;li&gt;选择合适的版本策略。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;常用选择是 &lt;code&gt;Staggered File Versioning&lt;/code&gt;，也就是阶段版本控制。它会按时间间隔保留历史版本，越旧保留得越稀疏。&lt;/p&gt;
&lt;p&gt;也可以用更简单的策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trash Can File Versioning：类似回收站。&lt;/li&gt;
&lt;li&gt;Simple File Versioning：保留固定数量版本。&lt;/li&gt;
&lt;li&gt;Staggered File Versioning：按时间阶段保留。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果不知道选什么，普通家庭 NAS 可以先从 Trash Can 或 Staggered 开始。&lt;/p&gt;
&lt;p&gt;版本控制不是完整备份，但它是多设备同步里的后悔药。&lt;/p&gt;
&lt;h2 id=&#34;用忽略规则过滤临时文件&#34;&gt;用忽略规则过滤临时文件
&lt;/h2&gt;&lt;p&gt;多设备同步代码项目、文档目录或聊天备份时，临时文件和缓存很容易制造麻烦。&lt;/p&gt;
&lt;p&gt;常见问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;占用大量带宽。&lt;/li&gt;
&lt;li&gt;产生无意义冲突。&lt;/li&gt;
&lt;li&gt;不同系统生成不同缓存文件。&lt;/li&gt;
&lt;li&gt;删除目录时被忽略文件阻挡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以在文件夹设置的 Ignore Patterns 中添加规则。&lt;/p&gt;
&lt;p&gt;通用临时文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(?d).DS_Store
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(?d)Thumbs.db
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(?d)*~
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Node / Python / Java 项目：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(?d)node_modules/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(?d)__pycache__/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(?d).pytest_cache/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(?d)target/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果代码项目本身已经由 Git 管理，通常不建议用 Syncthing 同步 &lt;code&gt;.git&lt;/code&gt; 目录。可以忽略：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(?d).git/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;(?d)&lt;/code&gt; 的意思是：如果整个目录准备被删除，Syncthing 可以删除这些本地生成的忽略文件，不会因为残留缓存而阻止目录删除。&lt;/p&gt;
&lt;p&gt;忽略规则不要一次写太复杂。先覆盖最明显的缓存和临时文件，再根据实际冲突慢慢调整。&lt;/p&gt;
&lt;h2 id=&#34;多文件夹命名示例&#34;&gt;多文件夹命名示例
&lt;/h2&gt;&lt;p&gt;可以建立一套固定命名方式。&lt;/p&gt;
&lt;p&gt;手机照片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Folder ID: backup-pixel-photos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Label: Pixel Photos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAS Path: /volume1/Syncthing/Phone_Backup/Pixel7_DCIM
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;iPhone 照片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Folder ID: backup-iphone-photos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Label: iPhone Photos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAS Path: /volume1/Syncthing/Phone_Backup/iPhone15_DCIM
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;主笔记库：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Folder ID: notes-main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Label: Main Notes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAS Path: /volume1/Syncthing/Notes/Main_Notes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;工作文档：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Folder ID: work-docs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Label: Work Docs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAS Path: /volume1/Syncthing/Work/Office_Docs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;电子书：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Folder ID: media-ebooks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Label: eBooks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAS Path: /volume1/Syncthing/Media/eBooks
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只要 ID、标签、路径都有规律，多设备之后也不会失控。&lt;/p&gt;
&lt;h2 id=&#34;推荐整体方案&#34;&gt;推荐整体方案
&lt;/h2&gt;&lt;p&gt;如果你已经有 Docker 版 Syncthing 跑在 NAS 上，可以这样设计：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;NAS 作为中心节点。&lt;/li&gt;
&lt;li&gt;NAS 设为引入者。&lt;/li&gt;
&lt;li&gt;所有设备只和 NAS 配对。&lt;/li&gt;
&lt;li&gt;所有同步目录放在 &lt;code&gt;/volume1/Syncthing/&lt;/code&gt; 下面。&lt;/li&gt;
&lt;li&gt;手机照片目录使用手机 &lt;code&gt;Send Only&lt;/code&gt;、NAS &lt;code&gt;Receive Only&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;工作文档和笔记使用 &lt;code&gt;Send &amp;amp; Receive&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;资料分发目录使用 NAS &lt;code&gt;Send Only&lt;/code&gt;、其他设备 &lt;code&gt;Receive Only&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;NAS 上对重要文件夹开启版本控制。&lt;/li&gt;
&lt;li&gt;代码和缓存目录配置忽略规则。&lt;/li&gt;
&lt;li&gt;NAS 本身再做快照或异地备份。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这套结构建立起来后，再增加新设备或新文件夹，只需要按规则放进去，不需要每次重新思考同步关系。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Syncthing 的自由度很高，但自由度越高，越需要规则。&lt;/p&gt;
&lt;p&gt;多设备、多文件夹场景下，不建议做全连接网状同步。更稳的方式是让 NAS 或常开电脑做中心节点，统一 Folder ID、统一路径、统一版本控制，再用文件夹类型区分备份、双向同步和资料分发。&lt;/p&gt;
&lt;p&gt;这样既保留了 Syncthing 的 P2P 能力，又把日常管理收束到一台中心设备上。设备再多，文件夹再多，也不会变成一团乱线。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>用 Docker 部署 Syncthing：Compose、端口和目录映射避坑</title>
        <link>https://knightli.com/2026/05/31/syncthing-docker-deploy-guide/</link>
        <pubDate>Sun, 31 May 2026 12:12:05 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/31/syncthing-docker-deploy-guide/</guid>
        <description>&lt;h2 id=&#34;syncthing-系列目录&#34;&gt;Syncthing 系列目录
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-file-sync-practical-notes/&#34; &gt;Syncthing 怎么用？从设备配对到文件同步的实用笔记&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-docker-deploy-guide/&#34; &gt;用 Docker 部署 Syncthing：Compose、端口和目录映射避坑&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-multi-device-topology-guide/&#34; &gt;Syncthing 多设备怎么配？对等网络、星型拓扑和引入者&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-android-fork-setup-guide/&#34; &gt;Android 上怎么用 Syncthing？Syncthing-Fork 配置与照片备份&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-multi-device-folder-management/&#34; &gt;Syncthing 多设备多文件夹怎么管理？拓扑、命名和版本控制&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/31/syncthing-iphone-photo-backup/&#34; &gt;Syncthing 如何同步 iPhone 照片到电脑或 NAS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 Docker 中部署 Syncthing 很适合 NAS、家用服务器和 VPS 场景。它可以作为 24 小时在线的同步节点，长期承担照片、文档、Markdown 笔记或下载目录的同步任务。&lt;/p&gt;
&lt;p&gt;Docker 部署 Syncthing 的重点不是“能不能跑起来”，而是三个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配置目录要持久化。&lt;/li&gt;
&lt;li&gt;需要同步的数据目录要映射到宿主机。&lt;/li&gt;
&lt;li&gt;端口和权限要提前处理好。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这三点没处理好，容器更新后可能丢配置，Web UI 里填写路径时可能找不到真实目录，或者同步时报 &lt;code&gt;Permission denied&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;目录规划&#34;&gt;目录规划
&lt;/h2&gt;&lt;p&gt;建议先在服务器或 NAS 上准备一个独立目录，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p ~/syncthing
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/syncthing
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个目录里放 &lt;code&gt;docker-compose.yml&lt;/code&gt;，并用子目录保存 Syncthing 配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;syncthing/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── config/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;同步数据目录可以放在 NAS 或宿主机已有路径中，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/downloads
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/photos
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;配置目录和数据目录要分开。&lt;code&gt;config&lt;/code&gt; 保存 Syncthing 自己的配置、密钥和索引数据库；&lt;code&gt;downloads&lt;/code&gt;、&lt;code&gt;photos&lt;/code&gt; 这类目录才是你要同步的真实数据。&lt;/p&gt;
&lt;h2 id=&#34;方案一docker-compose&#34;&gt;方案一：Docker Compose
&lt;/h2&gt;&lt;p&gt;更推荐使用 Docker Compose，后续更新、重启和迁移都更清楚。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;~/syncthing/docker-compose.yml&lt;/code&gt; 写入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;syncthing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;syncthing/syncthing:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;syncthing&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;my-nas-syncthing&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PUID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PGID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Asia/Shanghai&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./config:/var/syncthing/config&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/volume1/downloads:/var/syncthing/downloads&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/volume1/photos:/var/syncthing/photos&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8384&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8384&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;22000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;22000&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/tcp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;22000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;22000&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/udp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;21027&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;21027&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/udp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose ps
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs -f syncthing
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;打开 Web UI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://服务器IP:8384
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;首次进入后台后，先设置 GUI 用户名和密码。&lt;/p&gt;
&lt;h2 id=&#34;方案二docker-run&#34;&gt;方案二：docker run
&lt;/h2&gt;&lt;p&gt;如果只是快速测试，也可以直接使用 &lt;code&gt;docker run&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name syncthing &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --hostname my-nas-syncthing &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;PUID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;PGID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;Asia/Shanghai &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 8384:8384 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 22000:22000/tcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 22000:22000/udp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 21027:21027/udp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v /path/to/config:/var/syncthing/config &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v /path/to/data1:/var/syncthing/data1 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --restart unless-stopped &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  syncthing/syncthing:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的 &lt;code&gt;/path/to/config&lt;/code&gt; 和 &lt;code&gt;/path/to/data1&lt;/code&gt; 必须换成宿主机真实路径。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v /volume1/docker/syncthing/config:/var/syncthing/config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v /volume1/photos:/var/syncthing/photos
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;长期使用时，还是建议改成 Compose 文件，避免每次重建容器都要重新拼命令。&lt;/p&gt;
&lt;h2 id=&#34;容器内路径和宿主机路径&#34;&gt;容器内路径和宿主机路径
&lt;/h2&gt;&lt;p&gt;Docker 新手最容易混淆的是路径。&lt;/p&gt;
&lt;p&gt;比如 Compose 里写了：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/volume1/photos:/var/syncthing/photos&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;左边 &lt;code&gt;/volume1/photos&lt;/code&gt; 是宿主机路径。右边 &lt;code&gt;/var/syncthing/photos&lt;/code&gt; 是容器内路径。&lt;/p&gt;
&lt;p&gt;进入 Syncthing Web UI 添加同步文件夹时，文件夹路径必须填写容器内路径：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/syncthing/photos
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样 Syncthing 实际操作的才是宿主机上的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/photos
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你在 Web UI 里填 &lt;code&gt;/volume1/photos&lt;/code&gt;，容器内部通常并没有这个路径，Syncthing 可能会报错，或者在容器文件系统里创建一个你并不想要的新目录。&lt;/p&gt;
&lt;h2 id=&#34;配置目录必须持久化&#34;&gt;配置目录必须持久化
&lt;/h2&gt;&lt;p&gt;下面这一行很关键：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;l&#34;&gt;./config:/var/syncthing/config&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Syncthing 的配置文件、设备密钥和索引数据库都会放在配置目录里。如果不把它挂载到宿主机，容器删除或重建后，设备 ID 可能变化，原来的设备配对关系也会失效。&lt;/p&gt;
&lt;p&gt;建议把配置目录放在稳定路径中，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/docker/syncthing/config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要把配置目录放进临时目录，也不要和同步数据目录混在一起。&lt;/p&gt;
&lt;h2 id=&#34;端口和防火墙&#34;&gt;端口和防火墙
&lt;/h2&gt;&lt;p&gt;常用端口如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8384/TCP   Web UI 管理后台
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;22000/TCP 设备间同步流量
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;22000/UDP QUIC 同步流量
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;21027/UDP 局域网发现
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 Syncthing 部署在家用 NAS 上，通常要检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NAS 自带防火墙是否放行这些端口。&lt;/li&gt;
&lt;li&gt;Docker 网桥端口是否正确映射。&lt;/li&gt;
&lt;li&gt;路由器是否隔离了 Wi-Fi 和有线网络。&lt;/li&gt;
&lt;li&gt;手机和电脑是否在同一网段。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果部署在云服务器上，还要检查云厂商安全组。尤其是 &lt;code&gt;22000/TCP&lt;/code&gt; 和 &lt;code&gt;22000/UDP&lt;/code&gt;，如果没有放行，其他设备可能只能通过 relay 连接，速度会明显变慢。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;8384&lt;/code&gt; 是管理后台端口，不建议直接暴露到公网。如果确实要远程管理，至少要设置强密码，最好再配合反向代理、HTTPS、访问控制或 VPN。&lt;/p&gt;
&lt;h2 id=&#34;权限问题puid-和-pgid&#34;&gt;权限问题：PUID 和 PGID
&lt;/h2&gt;&lt;p&gt;如果启动后 Syncthing 能打开 Web UI，但同步目录时报：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Permission denied
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;通常是容器进程没有宿主机目录的读写权限。&lt;/p&gt;
&lt;p&gt;先在宿主机上查看当前用户的 UID 和 GID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;id
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出类似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uid=1000(user) gid=1000(user) groups=1000(user)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后把 Compose 里的环境变量改成对应值：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PUID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PGID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;同时确认宿主机目录本身允许这个用户读写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -ld /volume1/photos
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;必要时调整目录所有者或权限：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo chown -R 1000:1000 /volume1/photos
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 NAS 系统上不要盲目递归改整个共享目录权限，尤其是多人共享目录。更稳妥的做法是给 Syncthing 单独准备一个同步目录，或者在 NAS 权限管理界面给对应用户授权。&lt;/p&gt;
&lt;h2 id=&#34;web-ui-首次安全设置&#34;&gt;Web UI 首次安全设置
&lt;/h2&gt;&lt;p&gt;容器启动后，访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://服务器IP:8384
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;首次进入后台，Syncthing 通常会提示设置 GUI 用户名和密码。这个步骤不要跳过。&lt;/p&gt;
&lt;p&gt;建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;立即设置 GUI 用户名和强密码。&lt;/li&gt;
&lt;li&gt;不把 &lt;code&gt;8384&lt;/code&gt; 暴露到公网。&lt;/li&gt;
&lt;li&gt;远程访问时优先走 VPN、SSH 隧道或受控反向代理。&lt;/li&gt;
&lt;li&gt;如果使用反向代理，确认只代理 Web UI，不要误开放其他不必要端口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果管理后台被别人控制，对方就可能添加设备、修改共享目录、改变同步关系。Syncthing 的同步数据传输是加密的，但管理入口本身仍然需要保护。&lt;/p&gt;
&lt;h2 id=&#34;在-web-ui-中添加同步目录&#34;&gt;在 Web UI 中添加同步目录
&lt;/h2&gt;&lt;p&gt;以照片目录为例，Compose 中已经挂载：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;l&#34;&gt;/volume1/photos:/var/syncthing/photos&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Web UI 里添加文件夹时：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Folder Label：可以写 &lt;code&gt;Photos&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Folder ID：建议使用稳定英文 ID，例如 &lt;code&gt;photos&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Folder Path：填写 &lt;code&gt;/var/syncthing/photos&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Sharing：选择要共享给哪些设备。&lt;/li&gt;
&lt;li&gt;Folder Type：按需求选择 &lt;code&gt;Send &amp;amp; Receive&lt;/code&gt;、&lt;code&gt;Send Only&lt;/code&gt; 或 &lt;code&gt;Receive Only&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这台 Docker 节点是 NAS 中心节点，常见配置是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通文档：&lt;code&gt;Send &amp;amp; Receive&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;手机照片汇总：NAS 上设为 &lt;code&gt;Receive Only&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;对外分发目录：NAS 上设为 &lt;code&gt;Send Only&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;具体选择要看你的数据流向。不要所有目录都无脑双向同步。&lt;/p&gt;
&lt;h2 id=&#34;更新容器&#34;&gt;更新容器
&lt;/h2&gt;&lt;p&gt;使用 Compose 时，更新通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose pull
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只要配置目录和数据目录都正确挂载，更新容器不会丢失设备 ID、配对关系和同步目录配置。&lt;/p&gt;
&lt;p&gt;更新前可以先备份配置目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar -czf syncthing-config-backup.tar.gz ./config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;配置目录里包含设备私钥，不要把备份文件随便上传到公共位置。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;h3 id=&#34;web-ui-打不开&#34;&gt;Web UI 打不开
&lt;/h3&gt;&lt;p&gt;先检查容器是否运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker ps
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs syncthing
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再检查端口映射：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker port syncthing
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果容器正常，仍然打不开，检查宿主机防火墙、NAS 防火墙或云服务器安全组。&lt;/p&gt;
&lt;h3 id=&#34;添加目录后提示不存在&#34;&gt;添加目录后提示不存在
&lt;/h3&gt;&lt;p&gt;检查你在 Web UI 里填写的是不是容器内路径。&lt;/p&gt;
&lt;p&gt;例如宿主机路径是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/downloads
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;容器内路径是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/syncthing/downloads
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Web UI 里应该填后者。&lt;/p&gt;
&lt;h3 id=&#34;只能通过-relay速度很慢&#34;&gt;只能通过 Relay，速度很慢
&lt;/h3&gt;&lt;p&gt;优先检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;22000/TCP&lt;/code&gt; 是否放行。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;22000/UDP&lt;/code&gt; 是否放行。&lt;/li&gt;
&lt;li&gt;路由器端口转发是否正确。&lt;/li&gt;
&lt;li&gt;云服务器安全组是否同时放行 TCP 和 UDP。&lt;/li&gt;
&lt;li&gt;本机防火墙是否拦截 Docker 映射端口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Relay 能提高可连接性，但不适合长期承担大量同步流量。&lt;/p&gt;
&lt;h3 id=&#34;同步后文件权限不对&#34;&gt;同步后文件权限不对
&lt;/h3&gt;&lt;p&gt;先确认容器运行用户是否正确，再确认宿主机目录权限。Linux、NAS、Windows 共享目录之间的权限模型不同，不要把 Syncthing 当成权限修复工具。&lt;/p&gt;
&lt;p&gt;对于跨系统同步，尽量同步普通文件和目录，少同步依赖复杂 ACL、所有者、扩展属性的系统目录。&lt;/p&gt;
&lt;h2 id=&#34;一个更稳的使用方式&#34;&gt;一个更稳的使用方式
&lt;/h2&gt;&lt;p&gt;如果你的目标是把 NAS 或服务器作为中心节点，可以这样设计：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;NAS 上用 Docker 跑 Syncthing。&lt;/li&gt;
&lt;li&gt;配置目录挂载到 &lt;code&gt;/volume1/docker/syncthing/config&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;每类数据单独挂载，例如 &lt;code&gt;/volume1/photos&lt;/code&gt;、&lt;code&gt;/volume1/notes&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;手机、电脑分别添加 NAS 的设备 ID。&lt;/li&gt;
&lt;li&gt;重要目录在 NAS 端开启文件版本。&lt;/li&gt;
&lt;li&gt;Web UI 只在内网或 VPN 内访问。&lt;/li&gt;
&lt;li&gt;NAS 本身再做独立备份，不把同步当作唯一备份。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样 Syncthing 负责设备间同步，NAS 负责长期在线和版本缓冲，真正的备份再交给快照、外接硬盘或异地备份。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Docker 部署 Syncthing 的关键是把“容器生命周期”和“同步数据生命周期”分开。&lt;/p&gt;
&lt;p&gt;容器可以随时更新、重建、迁移；但配置目录和数据目录必须稳定保存在宿主机上。Web UI 里填写的是容器内路径，宿主机权限要通过 &lt;code&gt;PUID&lt;/code&gt;、&lt;code&gt;PGID&lt;/code&gt; 和目录授权处理，端口要按实际网络环境放行。&lt;/p&gt;
&lt;p&gt;只要这几件事配置清楚，Syncthing 很适合作为 NAS、服务器和个人设备之间的轻量同步层。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CVE-2026-42945 怎么排查？Nginx Rift 漏洞触发条件、版本检查与升级建议</title>
        <link>https://knightli.com/2026/05/15/nginx-rift-cve-2026-42945/</link>
        <pubDate>Fri, 15 May 2026 17:55:42 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/15/nginx-rift-cve-2026-42945/</guid>
        <description>&lt;p&gt;&lt;code&gt;CVE-2026-42945&lt;/code&gt; 是 NGINX Open Source 和 NGINX Plus 中的一个安全漏洞，外界也把它称为 &lt;code&gt;Nginx Rift&lt;/code&gt;。它出现在 &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt;，漏洞类型是 heap-based buffer overflow。&lt;/p&gt;
&lt;p&gt;这类新闻很容易被写成“潜伏 18 年”“不用密码远程控制”“三成服务器中招”。这些说法有传播性，但看补丁和 NVD 描述时，最好把风险拆开看：它确实严重，也确实不需要登录账号；但并不是所有 Nginx 实例都会自动被接管，触发需要特定 rewrite 配置和请求条件。&lt;/p&gt;
&lt;h2 id=&#34;先看官方描述&#34;&gt;先看官方描述
&lt;/h2&gt;&lt;p&gt;NVD 对 &lt;code&gt;CVE-2026-42945&lt;/code&gt; 的描述可以概括为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;影响 NGINX Plus 和 NGINX Open Source。&lt;/li&gt;
&lt;li&gt;漏洞位于 &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;当 &lt;code&gt;rewrite&lt;/code&gt; 指令后面跟着 &lt;code&gt;rewrite&lt;/code&gt;、&lt;code&gt;if&lt;/code&gt; 或 &lt;code&gt;set&lt;/code&gt; 指令，并且使用未命名的 PCRE 捕获组，例如 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt;，同时替换字符串里包含问号 &lt;code&gt;?&lt;/code&gt; 时，可能触发问题。&lt;/li&gt;
&lt;li&gt;未认证攻击者可以发送构造请求触发漏洞。&lt;/li&gt;
&lt;li&gt;结果可能是 NGINX worker 进程发生 heap buffer overflow 并重启。&lt;/li&gt;
&lt;li&gt;如果系统关闭了 ASLR，存在代码执行可能。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;F5 作为 CNA 给出的评分是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CVSS v4.0：&lt;code&gt;9.2&lt;/code&gt;，Critical。&lt;/li&gt;
&lt;li&gt;CVSS v3.1：&lt;code&gt;8.1&lt;/code&gt;，High。&lt;/li&gt;
&lt;li&gt;CWE：&lt;code&gt;CWE-122 Heap-based Buffer Overflow&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，这不是普通的“配置写错导致 404”问题，而是 Nginx 官方安全修复范围内的内存安全漏洞。&lt;/p&gt;
&lt;h2 id=&#34;哪些说法需要降温&#34;&gt;哪些说法需要降温
&lt;/h2&gt;&lt;p&gt;第一，“不用密码”基本可以理解为未认证攻击。也就是说，攻击者不需要登录 Nginx 后台，不需要拿到 SSH，也不需要应用系统账号。但这不等于任何公网 Nginx 都能被随手接管。&lt;/p&gt;
&lt;p&gt;第二，“直接远程控制”要看条件。官方描述里更稳妥的说法是：漏洞可导致 worker 进程重启；在 ASLR 关闭的系统上，代码执行是可能结果。对启用了 ASLR、发行版编译加固完整、运行权限受限的环境，风险路径会更复杂。&lt;/p&gt;
&lt;p&gt;第三，“30% 服务器中招”不能简单等同于“所有 Nginx 市占率都是漏洞暴露面”。真正暴露要同时看版本、是否启用受影响模块、是否存在特定 rewrite 配置、发行版是否已经回补补丁，以及 Nginx 运行环境的加固状态。&lt;/p&gt;
&lt;p&gt;更准确的判断方式是：只要你在生产环境运行 Nginx，就应该尽快检查；但不要只按标题里的比例判断自己是否中招。&lt;/p&gt;
&lt;h2 id=&#34;受影响范围怎么判断&#34;&gt;受影响范围怎么判断
&lt;/h2&gt;&lt;p&gt;从 nginx.org 发布信息看，2026 年 5 月 13 日发布的 &lt;code&gt;nginx-1.30.1&lt;/code&gt; stable 和 &lt;code&gt;nginx-1.31.0&lt;/code&gt; mainline 包含多项安全修复，其中包括 &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt; 的 buffer overflow，也就是 &lt;code&gt;CVE-2026-42945&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你使用官方 Nginx 源码或官方包，可以优先关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NGINX Open Source stable：升级到 &lt;code&gt;1.30.1&lt;/code&gt; 或之后版本。&lt;/li&gt;
&lt;li&gt;NGINX Open Source mainline：升级到 &lt;code&gt;1.31.0&lt;/code&gt; 或之后版本。&lt;/li&gt;
&lt;li&gt;NGINX Plus：查看 F5 对应分支的修复版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你使用 Debian、Ubuntu、RHEL、AlmaLinux、Rocky Linux、Alpine、容器镜像、Plesk、宝塔、Ingress Controller 或云厂商托管组件，不要只看 &lt;code&gt;nginx -v&lt;/code&gt; 里的上游版本号。很多发行版会把安全补丁 backport 到旧版本包里，版本号看起来旧，但补丁可能已经合入。&lt;/p&gt;
&lt;h2 id=&#34;一分钟判断是否需要紧急处理&#34;&gt;一分钟判断是否需要紧急处理
&lt;/h2&gt;&lt;p&gt;可以先按下面几个问题快速分级：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这台 Nginx 是否直接暴露在公网，或者位于 API Gateway、反向代理、负载均衡、Ingress 入口层？&lt;/li&gt;
&lt;li&gt;是否使用官方 Nginx 包、源码编译包、第三方面板、容器镜像，且还没有确认 &lt;code&gt;CVE-2026-42945&lt;/code&gt; 修复状态？&lt;/li&gt;
&lt;li&gt;配置里是否存在复杂 &lt;code&gt;rewrite&lt;/code&gt; 规则，尤其是连续 &lt;code&gt;rewrite&lt;/code&gt;、&lt;code&gt;if&lt;/code&gt;、&lt;code&gt;set&lt;/code&gt;，以及 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt; 这类未命名捕获组？&lt;/li&gt;
&lt;li&gt;是否存在把请求路径、查询参数或用户可控输入带入 rewrite 目标的场景？&lt;/li&gt;
&lt;li&gt;系统加固是否较弱，例如 ASLR 被关闭、worker 权限过高、容器权限过宽？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果前两项命中，并且 rewrite 配置还没有排查，建议按高优先级处理。公网入口、共享环境、Kubernetes Ingress、边缘代理和承载登录/API 流量的 Nginx，应该优先升级或替换到确认修复的包。&lt;/p&gt;
&lt;h2 id=&#34;debian--ubuntu--rhel--alpine-如何确认修复&#34;&gt;Debian / Ubuntu / RHEL / Alpine 如何确认修复
&lt;/h2&gt;&lt;p&gt;发行版用户不要只看 &lt;code&gt;nginx -v&lt;/code&gt;。Debian、Ubuntu、RHEL、AlmaLinux、Rocky Linux、Alpine 这类系统经常把安全补丁回补到稳定分支，表面版本号可能仍然低于 nginx.org 的 &lt;code&gt;1.30.1&lt;/code&gt; 或 &lt;code&gt;1.31.0&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Debian / Ubuntu 可以优先看安全公告、包 changelog 和可升级列表：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -V
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt list --upgradable &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt changelog nginx &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;CVE-2026-42945&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;RHEL / AlmaLinux / Rocky Linux 可以看安全更新和包变更记录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum updateinfo list security &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rpm -q --changelog nginx &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;CVE-2026-42945&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Alpine 可以检查当前包版本和安全分支更新：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apk info -v nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apk version -v nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果包管理器、发行版安全公告或厂商 advisory 明确写明已修复 &lt;code&gt;CVE-2026-42945&lt;/code&gt;，即使上游版本号看起来不新，也可以按“已回补修复”处理。反过来，如果只是版本号较高但来源不明，仍然要确认构建日期和补丁来源。&lt;/p&gt;
&lt;h2 id=&#34;容器镜像与-ingress-controller-怎么查&#34;&gt;容器镜像与 Ingress Controller 怎么查
&lt;/h2&gt;&lt;p&gt;容器环境要检查镜像里的 Nginx，而不是只看宿主机。先确认镜像实际内置版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm your-nginx-image nginx -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm your-nginx-image nginx -V
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;还要看基础镜像是否更新过。如果镜像基于 Debian、Ubuntu、Alpine 或发行版包构建，判断方式应回到对应发行版的安全公告和包 changelog。只重启旧镜像没有意义，镜像本身需要重新构建或替换。&lt;/p&gt;
&lt;p&gt;Kubernetes Ingress 需要同时确认三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ingress Controller 项目是否发布了针对 &lt;code&gt;CVE-2026-42945&lt;/code&gt; 的 advisory 或修复版本。&lt;/li&gt;
&lt;li&gt;当前集群运行的 controller 镜像 digest 是否已经更新，而不是只改了 tag。&lt;/li&gt;
&lt;li&gt;controller 内置 Nginx 版本、构建参数和模板配置是否仍然包含高风险 rewrite 规则。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以先看运行中的镜像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx get pods -o wide
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx describe pod &amp;lt;pod-name&amp;gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i image
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用云厂商托管 Ingress 或网关，还要查对应云服务公告。托管组件通常不是用户自己 &lt;code&gt;apt upgrade&lt;/code&gt; 能解决的，需要等待厂商修复或切换到已修复版本。&lt;/p&gt;
&lt;h2 id=&#34;rewrite-配置重点排查哪些写法&#34;&gt;rewrite 配置重点排查哪些写法
&lt;/h2&gt;&lt;p&gt;这个漏洞和 &lt;code&gt;rewrite&lt;/code&gt; 配置有关，排查时可以先搜索 Nginx 配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -R &lt;span class=&#34;s2&#34;&gt;&amp;#34;rewrite&amp;#34;&lt;/span&gt; /etc/nginx -n
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -R &lt;span class=&#34;s2&#34;&gt;&amp;#34;\\&lt;/span&gt;$&lt;span class=&#34;s2&#34;&gt;[0-9]&amp;#34;&lt;/span&gt; /etc/nginx -n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重点关注类似模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;rewrite&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;^/old/(.*)&lt;/span&gt;$ &lt;span class=&#34;s&#34;&gt;/new/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1?&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;permanent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt; 这类未命名捕获组，以及替换目标中的 &lt;code&gt;?&lt;/code&gt;，是官方描述里的关键条件之一。排查时尤其关注下面几类写法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个 &lt;code&gt;rewrite&lt;/code&gt; 后面紧跟另一个 &lt;code&gt;rewrite&lt;/code&gt;、&lt;code&gt;if&lt;/code&gt; 或 &lt;code&gt;set&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;正则里使用 &lt;code&gt;(.*)&lt;/code&gt;、&lt;code&gt;(.+)&lt;/code&gt; 这类宽泛捕获，并在目标里用 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;rewrite 目标里带 &lt;code&gt;?&lt;/code&gt;，用于拼接或丢弃查询参数。&lt;/li&gt;
&lt;li&gt;rewrite 输入来自公网路径、Host、URI、参数或上游可控值。&lt;/li&gt;
&lt;li&gt;面板、网关、Ingress 注解或模板自动生成的 rewrite 规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果短时间内无法升级，可以先做临时缓解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;减少复杂 rewrite 规则。&lt;/li&gt;
&lt;li&gt;把未命名捕获组改成更清晰的命名捕获。&lt;/li&gt;
&lt;li&gt;避免在替换字符串里拼接不必要的 &lt;code&gt;?&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;对高风险入口加 WAF 或反向代理规则。&lt;/li&gt;
&lt;li&gt;确认系统启用了 ASLR。&lt;/li&gt;
&lt;li&gt;降低 Nginx worker 运行权限，确认 systemd sandbox、SELinux/AppArmor 等加固状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些只是缓解，不是替代补丁。&lt;/p&gt;
&lt;h2 id=&#34;修复优先级&#34;&gt;修复优先级
&lt;/h2&gt;&lt;p&gt;建议按暴露面排序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;公网入口 Nginx。&lt;/li&gt;
&lt;li&gt;反向代理、API Gateway、边缘网关。&lt;/li&gt;
&lt;li&gt;多租户环境里的 Nginx。&lt;/li&gt;
&lt;li&gt;Kubernetes Ingress Controller。&lt;/li&gt;
&lt;li&gt;Plesk、面板工具、云市场镜像等自带 Nginx 的组件。&lt;/li&gt;
&lt;li&gt;内网但承载关键业务的 Nginx。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;升级后如何验证nginx--treloadworker-状态&#34;&gt;升级后如何验证：nginx -t、reload、worker 状态
&lt;/h2&gt;&lt;p&gt;更新后不要只看包管理器提示成功，还要确认配置、进程和实际二进制都已经切换。先验证配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;确认没有错误后再平滑加载：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl reload nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果包升级涉及二进制替换，建议确认旧 worker 已退出：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以查看主进程启动时间和二进制路径，确认运行中的服务不是旧进程继续驻留。必要时安排维护窗口重启服务，避免旧 worker 或旧容器继续处理请求。&lt;/p&gt;
&lt;p&gt;容器和 Ingress 环境还要确认新镜像已经真正滚动完成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx rollout status deployment/&amp;lt;deployment-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx get pods -o wide
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;验证重点不是“命令执行过”，而是“线上流量已经由包含修复的 Nginx 进程承载”。&lt;/p&gt;
&lt;h2 id=&#34;不要忽略同批次-nginx-修复&#34;&gt;不要忽略同批次 Nginx 修复
&lt;/h2&gt;&lt;p&gt;nginx.org 在同一天发布的 &lt;code&gt;1.30.1&lt;/code&gt; 和 &lt;code&gt;1.31.0&lt;/code&gt; 不只修复了 &lt;code&gt;CVE-2026-42945&lt;/code&gt;。发布信息还提到 HTTP/2 request injection、SCGI/uWSGI buffer overread、charset module buffer overread、HTTP/3 address spoofing、OCSP resolver use-after-free 等问题。&lt;/p&gt;
&lt;p&gt;这意味着生产环境不应该只针对单个 CVE 做临时规则，而是应该把 Nginx 这一轮安全更新当成一次整体升级来处理。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CVE-2026-42945&lt;/code&gt; 的关键点不是“所有 Nginx 都会被秒控”，而是：一个长期存在于 rewrite 模块里的内存安全漏洞，在特定配置下可被未认证请求触发，最直接后果是 worker 崩溃重启；在 ASLR 关闭等较弱环境下，代码执行风险更高。&lt;/p&gt;
&lt;p&gt;对运维来说，处理顺序很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确认 Nginx 来源和版本。&lt;/li&gt;
&lt;li&gt;查看发行版、F5、nginx.org 或云厂商公告。&lt;/li&gt;
&lt;li&gt;尽快升级到包含修复的版本或发行版安全包。&lt;/li&gt;
&lt;li&gt;排查复杂 rewrite 配置，尤其是 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt; 和 &lt;code&gt;?&lt;/code&gt; 组合。&lt;/li&gt;
&lt;li&gt;确认 ASLR、权限隔离和服务重载状态。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;标题可以吓人，修复要冷静。先确认暴露面，再升级，再回头清理高风险 rewrite 规则。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-42945&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD: CVE-2026-42945&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nginx.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nginx.org 发布信息&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://my.f5.com/manage/s/article/K000161019&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;F5 Security Advisory K000161019&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://depthfirst.com/nginx-rift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DepthFirst: Nginx Rift&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>rsync --delete 参数详解与清空目录实践</title>
        <link>https://knightli.com/2026/03/29/rsync-delete-%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3/</link>
        <pubDate>Sun, 29 Mar 2026 11:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/03/29/rsync-delete-%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3/</guid>
        <description>&lt;p&gt;&lt;code&gt;rsync --delete&lt;/code&gt; 的核心作用是：删除目标目录中“源目录不存在”的文件，从而让目标端与源端保持一致。&lt;/p&gt;
&lt;p&gt;它常用于以下场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同步时清理目标端的历史冗余文件&lt;/li&gt;
&lt;li&gt;借助空目录快速清空目标目录&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;基础语法&#34;&gt;基础语法
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete 源目录/ 目标目录/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-a&lt;/code&gt;：归档模式，保留权限、时间戳等属性&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--delete&lt;/code&gt;：删除目标端中多出的文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关键注意：&lt;code&gt;源目录&lt;/code&gt; 末尾是否带 &lt;code&gt;/&lt;/code&gt; 会影响同步行为。带 &lt;code&gt;/&lt;/code&gt; 表示同步目录内容，不带 &lt;code&gt;/&lt;/code&gt; 表示同步目录本身。&lt;/p&gt;
&lt;h2 id=&#34;用空目录快速清空目标目录&#34;&gt;用空目录快速清空目标目录
&lt;/h2&gt;&lt;p&gt;如果你的目标是“保留目录结构但清空内容”，可以让一个空目录作为源进行同步：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1) 创建空目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /tmp/empty_dir
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2) 同步并删除目标目录中的内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete /tmp/empty_dir/ /path/to/target_dir/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种方式在大目录场景下通常比逐个删除更高效，也更容易写入自动化脚本。&lt;/p&gt;
&lt;h2 id=&#34;常用扩展参数&#34;&gt;常用扩展参数
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--delete-before&lt;/code&gt;：先删除再传输，某些场景下效率更高&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--progress&lt;/code&gt;：显示传输与处理进度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例（清理 Nginx 日志目录）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete --progress /tmp/empty_dir/ /var/log/nginx/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;先用 &lt;code&gt;--dry-run&lt;/code&gt; 预演，确认删除范围再执行&lt;/li&gt;
&lt;li&gt;在生产环境使用前，建议先做一次目标目录备份&lt;/li&gt;
&lt;li&gt;对关键路径执行时，优先在低峰时段操作&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
