新一代文件管理平台Seafile
简介
本文软件应网友
逍遥客
的要求而编写,因为他在群晖及威联通上均遇到了部署问题。
老苏应该是 16
年左右的时候,用笔记本电脑 + USB
移动硬盘 + ngrok
+ Seafile Windows
服务端 + Seafile Windows
挂载盘客户端搭建过可以远程访问的私有云盘,大概这么用了 3
年,直到最后移动硬盘挂了
在老苏看来,Seafile
无论对于文件存储、共享、协作的多样化需求,都能得到满足。唯一让老苏觉得不爽的是,文件是以私有的分块的形式存储在服务器上,虽然能提高文件传输效率,但存储出现问题时,数据的恢复要麻烦的多
什么是 Seafile ?
Seafile
是一个开源文件同步和共享解决方案,专为高可靠性、性能和生产力而设计。跨设备和团队同步、共享和协作。Seafile
是Dropbox
和Synology Drive
的替代品。
主要特点
- 文件同步:支持在多个设备之间同步文件,确保用户在不同设备上访问到最新版本的文件。
- 文件共享:用户可以轻松地共享文件和文件夹,支持生成共享链接,便于团队协作。
- 版本控制:提供文件历史版本管理,用户可以查看和恢复以前的文件版本。
- 安全性:支持数据加密,确保文件在传输和存储过程中的安全性。
- 团队协作:支持团队和组织的文件管理,用户可以创建库和管理权限,便于团队协作。
- 跨平台支持:提供
Windows
、macOS
、Linux
、iOS
和Android
的客户端,支持多种操作系统。 - 自托管选项:用户可以选择在自己的服务器上托管
Seafile
,增加数据的控制和隐私性。
适用场景
- 个人用户需要同步和备份文件。
- 企业和团队需要安全的文件共享和协作解决方案。
- 需要自托管文件管理系统以满足特定的合规性或隐私要求。
总之,Seafile
是一个功能强大的文件同步和共享解决方案,适合个人用户和团队使用。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 seafile-mc
,这是 Seafile
的社区版,选择第一个 seafileltd/seafile-mc
,版本选择 12.0-latest
。
本文写作时,
12.0-latest
版本对应为12.0.11
;
采用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
根据官方提供的文件修改,源文件地址: https://cloud.seafile.com/d/f4e8883db63845d29350/?p=%2F12.0&mode=list
1 | services: |
下面是环境变量及其说明
环境变量 | 说明 |
---|---|
MYSQL_ROOT_PASSWORD |
MariaDB 数据库的 root 用户密码 |
MYSQL_LOG_CONSOLE |
启用控制台日志输出 |
MARIADB_AUTO_UPGRADE |
自动升级 MariaDB 数据库 |
DB_HOST |
Seafile 连接的数据库主机名(此处为 db ) |
DB_ROOT_PASSWD |
Seafile 连接数据库时使用的 root 密码 |
TIME_ZONE |
设置服务器时区,这里为 Asia/Shanghai |
SEAFILE_ADMIN_EMAIL |
Seafile 管理员的电子邮件地址 |
SEAFILE_ADMIN_PASSWORD |
Seafile 管理员账户的密码 |
SEAFILE_SERVER_HOSTNAME |
Seafile 服务器的主机名或 IP 地址 |
SEAFILE_SERVER_LETSENCRYPT |
是否启用 Let's Encrypt SSL 证书 |
FORCE_HTTPS_IN_CONF |
是否强制在配置中启用 HTTPS |
JWT_PRIVATE_KEY |
JSON Web Token (JWT) 的私钥,Seafile 需要一个长度不小于 32 个字符的随机字符串 |
SERVICE_URL |
Seafile 服务的 URL ,用于外部访问 |
FILE_SERVER_ROOT |
文件服务的根 URL ,指向 Seafile 的文件接口 |
其中最后的三项是老苏根据需要,在官方的基础上新增的,其中
JWT_PRIVATE_KEY
是为了解决安装过程中,日志中出现的错误SERVICE_URL
是为了日志中出现的跨域问题FILE_SERVER_ROOT
是为了解决上传时出现的网络错误
然后执行下面的命令
1 | # 新建文件夹 seafile 和 子目录 |
运行
第一次启动的时间会比较长,如果只是看到
502 Bad Gateway
不用担心,多等一会儿
在浏览器中输入 http://群晖IP:17080
就能看到登录界面
但是老苏用环境变量中设置的账号、密码登录会失败,从日志看出现过下面的内容
1 | Error happened during creating seafile admin. |
关于这个问题,按照 https://bbs.seafile.com/t/topic/20232/2 里的说法,是因为 docker
版本低于 20.10.10
导致的
所以老苏只能尝试用命令行,来创建管理员。只要根据提示输入用户名和密码就可以
1 | # 创建管理员 |
虽然看起来会有一个警告,但不会影响创建管理员用户
这个账号可以正常登录,并看到主界面
Seafile
本身的使用很简单,上传一个文件试试是否正常
客户端
除了网页外,还支持各平台的客户端应用,包括了桌面同步客户端、挂载盘客户端和移动客户端,下载地址:https://www.seafile.com/download
老苏用过 Windows
挂载盘客户端,可以让你通过本地虚拟磁盘直接访问服务器上的文件,无需同步。不占用本地磁盘。支持视频直接播放。
WebDAV
或者在启用了 WebDAV
协议后,可以直接使用支持 WebDAV
的客户端访问
- 第一步、需要在
docker-compose.yml
中的seafile
部分,将8080
端口暴露出来
1 | ports: |
- 第二步、在本地编辑一个文件
seafdav.conf
,内容如下
1 | [WEBDAV] |
上传并覆盖掉 /shared/seafile/conf/seafdav.conf
文件
- 第三步、在
设置
中设置WebDAV
密码
需要注意的是,页面上显示的
WebDAV URL
的端口是不正确的,不用理会
默认 WebDAV
的密码是没有设置的
- 第四步、重启
seafile
容器。
1 | # 重启容器 |
- 第五步、设置
WebDAV
客户端,例如RaiDrive
可以看到之前通过 Web
上传的文件
垃圾回收
在 Seafile
中,当文件被删除时,组成这些文件的块数据不会立即删除,因为可能有其他文件也会引用这些块数据(用于去重功能的实现)。为了真正删除无用的块数据,还需要额外运行 GC
程序。
1 | # 垃圾回收 |
对于社区版来说,该程序会暂停 Seafile
服务
但这是一个相对较快的程序,一旦程序运行完成,Seafile
服务也会自动重新启动。
参考文档
haiwen/seafile: High performance file syncing and sharing, with also Markdown WYSIWYG editing, Wiki, file label and other knowledge management features.
地址:https://github.com/haiwen/seafileSeafile - 开源的企业私有网盘 私有云存储软件 企业维基 知识管理
地址:https://www.seafile.com/home/简介 - seafile-manual-cn
地址:https://cloud.seafile.com/published/seafile-manual-cn/Seafile Cloud
地址:https://cloud.seafile.com/d/f4e8883db63845d29350/WebDAV extension - Seafile Admin Manual
地址:https://manual.seafile.com/12.0/extension/webdav/docker部署seafile最新版v11报错 - 服务器问题 - Seafile 用户论坛
地址:https://bbs.seafile.com/t/topic/20232/2