# Syncthing 使用

### 以非 root 用户运行（强烈推荐）

在部署 Syncthing 时，**不建议使用 root 用户运行**。

原因如下：

- root 权限过高，一旦配置错误可能影响整个系统  
- 同步过程中可能误操作系统目录（如 `/etc`、`/var`）  
- 文件权限容易混乱，后期维护成本高  

实际运维中，**使用独立用户运行是标准做法**

{{< steps  >}}
{{< step >}}

**创建用户**

```bash
useradd -m -s /usr/sbin/nologin syncthing
```

说明：

-m：自动创建用户目录
-s /usr/sbin/nologin：禁止该用户登录系统（提升安全性）

这个用户仅用于运行 Syncthing 服务，不用于登录

{{< /step >}}
{{< step >}}

使用 `syncthing` 启动 Syncthing 服务

```bash
systemctl enable --now syncthing@syncthing
```

首次启动后，Syncthing 会自动初始化配置目录：

```bash
/home/syncthing/.local/state/syncthing/
```

该目录包含：

- config.xml（主配置文件）
- 设备证书（身份认证）
- 同步索引数据

建议不要手动删除或随意修改此目录内容

{{< /step >}}
{{< /steps >}}

### (可选) 配置WEB监听地址或端口

默认情况下，Syncthing 的 Web 管理界面仅监听：

```
127.0.0.1:8384
```

这意味着：

只能通过本机访问（更安全）

如果你需要远程访问（例如跨服务器管理），可以修改配置文件：

```bash
vi "/home/syncthing/.local/state/syncthing/config.xml"
```

找到：

```xml
<address>127.0.0.1:8384</address>
```

修改为：

```xml
<address>0.0.0.0:8384</address>
```

表示监听所有网络接口的TCP 8384端口。

{{< callout context="caution" title="安全建议" icon="outline/alert-triangle" >}}
- 不建议直接暴露到公网
- 推荐配合以下方式使用：
    - SSH 隧道
    - 反向代理（带认证）
    - 防火墙限制 IP
{{< /callout >}}

### (可选)为 Syncthing 用户设置目录权限

为了确保 Syncthing 可以正常读写同步目录，需要正确设置权限.

例如: 需要同步 `/site` 目录

```bash
chown -R syncthing:syncthing /site
```

**说明：**

- Syncthing 不会自动提升权限
- 所有文件操作都以运行用户身份执行

如果权限不正确，可能出现：

- 文件无法同步
- 无法删除文件
- 同步报错（permission denied）


**运维建议：**

- 同步目录尽量统一归属 syncthing 用户
- 避免多个用户同时写入同一目录
- 特别是在 “Receive Only” 场景下，避免人为修改文件