目前,国外云盘,如DropBox等,国内被屏蔽。国内的百度网盘等都开始收费、限速等等,总是就是用的不爽。

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

1. Seafile 简介

Seafile是国内团队开发的一个国际化的开源项目,在 GitHub 上的项目有超过4500人关注,在国内最大的开源社区开源中国上面也赢得了很多赞誉。
Seafile目前支持免费开源的社区版、还有收费的企业版。

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

开源免费的Seafile搭建私有云盘_客户端

官网下载

https://www.seafile.com/download/

Seafile服务器端支持Linux(debian和ubuntu)和树莓派(Raspberry Pi),客户端支持Mac、Linux、Windows、Android和iOS,当然也支持网页的形式来管理和访问。

2. Seafile服务端部署

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

2.1 安装Docker社区版

Docker的安装参见官方文档

执行以下命令安装依赖包

yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

添加yum软件源

#这是官方yum源
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
#由于网络问题非常建议使用国内源
#yum-config-manager \
#    --add-repo \
#    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

安装 Docker CE

yum install docker-ce docker-ce-cli containerd.io 
#启动docker
systemctl start docker

配置Docker国内镜像加速
由于国内网络问题,不修改后面拉取镜像的速度会太慢

vi /etc/docker/daemon.json

写入如下内容,保存
{ "registry-mirrors": ["https://registry.docker-cn.com"] }

重新启动服务

systemctl daemon-reload
systemctl restart docker

修改SELINUX设置,否则后面可能会出错

vi /etc/selinux/config

将SELINUX一栏修改为修改为SELINUX=disabled保存并重启centos

2.2 拉取seafile镜像

拉取seafile镜像,可能需要下载一会儿

docker pull seafileltd/seafile

列出本地镜像,检查一下

docker images

2.3 创建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 }

2.4 打开防火墙端口

打开80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙

firewall-cmd --reload

2.5 修改本地hosts文件

首先在centos命令行中输入ip address,查询该centos的ip地址。
我的电脑是windows操作系统,修改hosts文件(路径为"C:\Windows\System32\drivers\etc\hosts"),末尾处添加
192.168.56.101 seafile.example.com注意替换192.168.56.101为自己电脑虚拟机上centos的ip地址

2.6 登录Seafile的web界面

地址栏输入服务器域名,例如之前模拟时设置的http://seafile.example.com,并输入刚才设置的用户名和密码,即可查看seafile的web界面。

开源免费的Seafile搭建私有云盘_客户端_02

开源免费的Seafile搭建私有云盘_客户端_03

2.7使用windows客户端

配置服务器域名、用户名和密码。

开源免费的Seafile搭建私有云盘_客户端_04

2.8Linux命令行客户端

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

安装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。

开源免费的Seafile搭建私有云盘_客户端_05

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