# 利用Seafile搭建私有文件同步云盘

笔者在日常生活经常需要在不同的设备间同步文件,以前一直使用的是坚果云个人免费版。不得不说,坚果云真是一款非常优秀的云同步软件,功能完善,同步速度也比较快,但可惜的是免费版本在上传下载流量和存储空间上都有一定的限制。

国外云盘,如DropBox等,已经在国内被屏蔽,无法正常使用。国内的百度网盘,并没有文件同步功能,只支持手动的上传和下载,而且也没有文件历史版本功能。

Seafile是一款优秀的开源企业云盘软件,拥有文件版本管理、跨平台文件同步和共享等功能,可以方便自建一个私有的云存储服务。

# 简介

Seafile是国内团队开发的一个国际化的开源项目,在 GitHub 上的项目有超过4500人关注,在国内最大的开源社区开源中国上面也赢得了很多赞誉。Seafile目前拥有国内外两个活跃的用户社区:seafile官方中文社区(bbs.seafile.com),seafile官方英文社区(forum.seafile.com/),活跃用户已超过50万。 Seafile的客户有卡巴斯基、德国 Mainz 大学、德国柏林洪堡大学、法国 Strasbourg 大学、德国 Max Planck 科学院、芬兰 Turku 大学、中国平安等。

Seafile是一款强大优秀的云同步软件,拥有跨平台文件同步、移动端文件访问、挂载盘、文件共享和权限控制、文件锁定、文件版本管理和资料库镜像、在线编辑和协同编辑、审计日志等功能。

Seafile服务器端支持Linux、Windows(已不再更新,但我们可以使用Docker)和树莓派,客户端支持Mac、Linux、Windows、Android和iOS,当然也支持网页的形式来管理和访问。

# Seafile服务端部署教程(Linux)

部署 Seafile 服务器笔者采用的是使用官网推荐,也是最简单的安装方式,即使用Docker。

# 安装Docker

此处以CentOS7为例,其他操作系统参考官方文档安装。

#step1 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 

#step2 添加yum源
yum-config-manager \
    --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

#step3 安装Docker社区版并启动
yum -y install docker-ce docker-ce-cli containerd 
systemctl start docker

#step4 配置Docker国内镜像加速
#由于国内网络问题,不修改后面拉取镜像的速度会太慢
vi /etc/docker/daemon.json 
#写入如下内容并保存(更新:由于下面这个源仍然速度比较慢,强烈推荐使用阿里云等的国内加速源)
{ "registry-mirrors"
: [
"https://registry.docker-cn.com"] 
}

#step5 重新启动服务
systemctl daemon-reload
systemctl restart docker 

# 运行seafile容器

参数解析: SEAFILE_SERVER_HOSTNAME:服务器域名 SEAFILE_ADMIN_EMAIL:管理员账号 SEAFILE_ADMIN_PASSWORD:管理员密码 -v /opt/seafile-data:seafile容器挂载目录 -p 80:80:端口映射 以上参数可根据需要修改

docker run -d --name seafile \
  -e SEAFILE_SERVER_HOSTNAME=seafile.example.com \
  -e SEAFILE_ADMIN_EMAIL=me@example.com \
  -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password \
  -v /opt/seafile-data:/shared \
  -p 80:80 \
  seafileltd/seafile:latest 

有可能第一次启动会失败,可以输入docker ps检查seafile容器是否在运行 如果失败,重启该容器即可 找到创建的seafile容器contanier id

docker ps -a 

输入刚才contanier id

docker stop ${contanier id } 

再次启动

docker start ${contanier id } 

# Seafile服务端部署教程(Windows)

官方有提供Windows版的服务端,但是已经不再更新(仍然可以安装)。 但我们可以通过Docker的方式来安装最新版本的Seafile服务端软件。

# 安装Docker Desktop for Windows

到官网下载并安装Docker Desktop for Windows,一路确认即可,注意需要注册账号。

启动Docker Desktop,Settings -> Daemon -> Registry添加镜像库加速地址并重启(可选,但强烈推荐,否则镜像下载速度会很慢),我使用的是阿里云的镜像库加速地址。

阿里云镜像加速器获取办法见链接 (opens new window),需要注册,开通该服务是免费的。

打开cmd,输入如下命令并回车(注意会要求对文件系统的权限,同意即可)。

#自己修改{}处的内容(包括{})
docker run -d --name seafile 
-e SEAFILE_SERVER_HOSTNAME={服务器ip地址} 
-e SEAFILE_ADMIN_EMAIL={登录邮箱} 
-e SEAFILE_ADMIN_PASSWORD={登录密码} 
-v {服务器路径,例如"/d/seafile-data",意思是挂载D盘下seafile-data文件夹}:/shared 
-p {分配服务器的一个端口号,例如80}:80 seafileltd/seafile:latest 

# 使用

登录Seafile的web界面 地址栏输入服务器域名或ip,并输入刚才设置的用户名和密码,即可查看seafile的web界面。

修改后台设置 以管理员身份登录(如果按之前操作,现在就是管理员身份),打开系统管理页面。

修改此处的SERVICE_URL,去掉末尾的:8000,因为我们没有开放8000端口。

使用桌面同步windows客户端。 配置服务器域名、用户名和密码。

成功连接后,此时可以添加本地文件夹进行同步

macOS客户端和Linux客户端(有图形界面的) 设置类似Windows客户端,此处不再详述。

Linux命令行客户端

命令行客户端没有图形界面,按需使用。这里做一个简单示例(同步一个已经存在的资料库),更多用法配置见官方文档。 安装Seafile客户端

# 适用于CentOS/RHEL系统,其他系统参见https://help.seafile.com/en/syncing_client/install_linux_client.html
wget -O /etc/yum.repos.d/copr-pkerling-seafile.repo https://copr.fedorainfracloud.org/coprs/pkerling/seafile/repo/epel-7/pkerling-seafile-epel-7.repo
yum -y install seafile

初始化Seafile客户端

# 创建一个文件夹用于存放设置文件,请替换 <your-dir>  例如(/seafile-client )
mkdir  <your-dir>         
# 初始化,请替换 <your-dir> 
seaf-cli init -d <your-dir> 
# 启动
seaf-cli start

同步服务器已存在资料库的命令行

#<library-id> 资料库的id,不是资料库的名称
#<seahub-server-url> ,seafile服务器地址
#<existing-folder> ,用于存放同步下来文件的文件夹
#<username>,用户名
#<password>,密码,这是可选项
seaf-cli sync -l <library-id> -s <seahub-server-url> -d <existing-folder> -u <username> [-p <password>]

资料库id的获取稍微麻烦一点,请在浏览器端登录你的seafile,然后访问<seahub-server-url>/api2/repos。你会得到一个json数组,数组每一个元素代表每一个资料库的信息,找到id。

此外还支持多种客户端,更多内容参见官网。