自托管文件同步与协作平台Sync-in

简介

什么是 Sync-in ?

Sync-in 是一个开源的、自托管的文件存储、同步和协作平台,定位为 NextcloudDropbox 的现代替代品。它由法国开发者 Johan Legrand 创建,使用 TypeScript 开发,让你在自己的服务器上搭建完整的文件管理与协作工作空间,支持文件同步、实时协作编辑、细粒度权限管理、全文搜索和 WebDAV 访问。

主要特点

  • 文件存储与同步:支持跨设备文件同步,提供 WindowsmacOSLinux 桌面客户端
  • 实时协作编辑:支持集成 OnlyOfficeCollabora Online,支持多人同时编辑文档
  • 现代身份认证:支持 OIDC 单点登录、LDAP 企业集成、多因素认证(MFA)和应用密码
  • 细粒度权限控制:基于空间(Spaces)和共享(Shares)的权限管理,支持角色访问控制
  • 强大的全文搜索:深度文档内容索引,支持多种格式的全文搜索,内置 OCR 功能
  • WebDAV 支持:原生 WebDAV 协议,可将空间挂载为本地磁盘
  • 文件保护:支持存储配额、文件锁定和安全的共享环境
  • 开源免费:基于 AGPL-3.0 协议开源,可免费使用和修改

应用场景

  • 个人云存储:替代 Dropbox / Google Drive,在自己的服务器上管理文件,数据完全自主可控
  • 团队协作:创建团队空间,与成员共享文件、实时协作编辑文档,支持评论和活动追踪
  • 家庭 NAS 文件管理:配合群晖 NAS,将 NAS 上的目录挂载到 Sync-in 中统一管理
  • 企业文档管理:集成 LDAP / OIDC 认证,支持 MFA,满足企业级安全和合规需求

Sync-in 是一个功能完备的自托管文件协作平台,无论是个人使用还是团队协作,都能提供安全、高效的文件管理体验。

安装

采用 docker-compose 安装。Sync-in 依赖 MariaDB 数据库,并可选集成 OnlyOffice 实现在线文档编辑,建议使用官方提供的 docker-compose 方式进行部署。

本文写作时,最新版本为 v2.3.0

docker-compose 安装

将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
services:
sync_in:
image: syncin/server:latest
container_name: syncin-web
restart: always
ports:
- "6162:8080"
volumes:
- ./environment.yaml:/app/environment/environment.yaml # 配置文件
- ./data:/app/data # 数据存储
environment:
- INIT_ADMIN=true
- INIT_ADMIN_PASSWORD=yourpassword # 管理员密码
- INIT_ADMIN_LOGIN=admin # 管理员用户名
- PUID=${PUID:-8888} # 用户 ID
- PGID=${PGID:-8888} # 用户组 ID
depends_on:
- mariadb
logging:
driver: json-file
options:
max-size: "25m"
max-file: "5"

mariadb:
image: mariadb:11
container_name: syncin-mariadb
restart: always
command: --innodb_ft_cache_size=16000000 --max-allowed-packet=1G
volumes:
- ./mariadb_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: MySQLRootPassword # 数据库根密码
MYSQL_DATABASE: sync_in

配置环境变量

docker-compose.yml 同级目录下创建 environment.yaml 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql:
url: mysql://root:MySQLRootPassword@mariadb:3306/sync_in
auth:
encryptionKey: changeEncryptionKeyWithStrongKey
token:
access:
secret: changeAccessWithStrongSecret
refresh:
secret: changeRefreshWithStrongSecret
applications:
files:
dataPath: /app/data
collabora:
enabled: false
onlyoffice:
enabled: false
secret: onlyOfficeSecret

注意mysql.url 中的数据库密码必须与 docker-compose.ymlMYSQL_ROOT_PASSWORD 的值保持一致。

初始化管理员账号

docker-compose.yml 中通过环境变量 INIT_ADMIN=true 自动创建初始管理员账号:

  • INIT_ADMIN_LOGIN:管理员登录名(默认为 admin
  • INIT_ADMIN_PASSWORD:管理员密码(请务必修改为强密码)

首次启动后,系统会自动创建管理员账号,登录后建议立即修改密码并启用 MFA

通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 syncin 和 子目录
mkdir -p /volume1/docker/syncin/{data,mariadb_data}

# 进入 syncin 目录
cd /volume1/docker/syncin

# 将 docker-compose.yml 和 environment.yaml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中访问 http://<群晖IP>:6162 即可进入登录界面

首次登录使用初始化时设置的管理员账号和密码

登录后可以进行以下操作:

  1. 创建个人空间:上传和管理自己的文件

  1. 创建团队空间:邀请成员协作,设置访问权限
  2. 挂载外部目录:通过 WebDAV 将空间挂载到本地文件管理器

RainDrive 中设置

可以看到我们上传的文件

  1. 集成桌面客户端:下载官方桌面客户端实现文件同步

注意事项

  1. 数据库密码docker-compose.ymlMYSQL_ROOT_PASSWORDenvironment.yamlmysql.url 的密码必须保持一致
  2. 加密密钥encryptionKeyaccess.secretrefresh.secret 务必修改为强随机字符串,且不要随意更改,否则会导致 MFA 验证码失效
  3. 数据持久化/app/data 目录存储所有用户文件,建议定期备份
  4. 性能建议:生产环境下建议分配至少 2GB 内存给 Sync-in 容器
  5. OnlyOffice 端口:如果集成 OnlyOffice,首先要确保反向代理配置已启用

参考文档

Sync-in/server: Secure, open-source platform for file storage, sharing, collaboration, and syncing
地址:https://github.com/Sync-in/server

syncin/server - Docker Image
地址:https://hub.docker.com/r/syncin/server

Sync-in 官方网站
地址:https://sync-in.com

Sync-in 官方文档 - Docker 部署指南
地址:https://sync-in.com/docs/setup-guide/docker