折腾一段时间后的总结 -于2018.1
开源网盘,尤其是想要同步盘功能的话,seafile和nextcloud算是比较好的两个选择。个人感觉seafile功能更强,有类似gitignore的能力,别的同步盘还没发现有这个能力的。但是对一般用户来讲,seafile的易用性是不如nextcloud的。nextcloud的交互体验确实做得很好,有商业软件的水准。seafile嘛...感觉是没有交互设计师参与的。
但是!搭建网盘服务一定不能忽视带宽的问题!国内的带宽是天价!我们个人随便用用的腾讯云、阿里云,带宽都是1Mbps的,实际上就是128KB/s,这个速度,对需要同步大文件的网盘来讲,是完全不够用的!不管是加带宽还是换成按流量购买,个人用户都不太扛得住。
如果用国外服务器,流量是着实便宜,我的搬瓦工vps每个月1T流量简直不要钱一样。但是国外便宜的vps硬盘往往比较小,另外服务器在国外的话,网络毕竟没有国内稳定,也是要考虑的!
折腾到底,跟朋友合买了Office 365,投奔了onedrive的怀抱。
Seafile是什么
Seafile 是一款开源的企业云盘,注重可靠性和性能。支持 Windows, Mac, Linux, iOS,
Android 平台。支持文件同步或者直接挂载到本地访问。
就是个开源的同步网盘。随着各种网盘的倒闭和百度云的堕落,靠谱的网盘是越来越少了。国外的要么被墙了要么速度慢,这时候在自己的服务器上搭建私人同步盘就是个不错的选择了。
目前比较流行的开源网盘也没几个,适合自建服务器上有Seafile
和ownCloud
,比较接近传统网盘。另外有个用于多客户端同步的Syncthing
。
Seafile
这个网盘,功能还是很强大的,自动同步,还附带版本控制。就是界面丑了点,但是瑕不掩瑜。
本文介绍在CentOS 7上Seafile的部署流程。
完整资料建议查看官方手册
安装
安装
这里我选择的是最新的6.3.2版本,建议去下载页面查看linux服务端的最新版本,并替换下面的链接。
wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_6.3.2_x86-64.tar.gz
mkdir seafile
mv seafile-server_6.3.2_x86-64.tar.gz seafile/
cd seafile/
tar xzf seafile-server_6.3.2_x86-64.tar.gz
yum -y install epel-release
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
yum -y install python-imaging MySQL-python python-memcached python-ldap python-urllib3 ffmpeg ffmpeg-devel
pip install --upgrade setuptools #为了保证moviepy安装成功
pip install pillow moviepy
cd seafile-server-*
./setup-seafile.sh #运行安装脚本并回答预设问题
安装完成后,默认文件服务(seafile)运行在8082端口,web管理页面(seahub)运行在8000端口。
修改seahub的端口
我的服务器上还有别的工具在运行,因此修改了seahub的端口号,并通过nginx的反向代理访问。
更改conf/ccnet.conf文件中SERVICE_URL和conf/gunicorn.conf中的bind即可修改端口号。
nginx反向代理
编辑/etc/nginx/nginx.conf
,在中间找个地方插入下面的代码。一些关键词要改成自己的。
server {
listen 80;
server_name seafile.example.com;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 1200s;
# used for view/edit office file via Office Online Server
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
location /media {
root /home/user/haiwen/seafile-server-latest/seahub;
}
}
然后重启nginx
service nginx restart
这个时候在你配置的域名下就可以访问seafile了,需要登录后在管理后台修改两个字段,形如:
SERVICE_URL: http://www.myseafile.com
FILE_SERVER_ROOT: http://www.myseafile.com/seafhttp
开机启动
配置开机启动。CentOS 7支持systemctl,用这个就好了。
vim /etc/systemd/system/seafile.service
文件内容如下,注意把${seafile_dir}
替换成自己的安装目录。User和Group替换成自己的,估计个人的话大部分都是root吧。
[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target
[Service]
Type=oneshot
ExecStart=${seafile_dir}/seafile-server-latest/seafile.sh start
# 如果seahub使用了nginx反代,请修改为 ExecStart=${seafile_dir}/seafile-server-latest/seahub.sh start-fastcgi
ExecStart=${seafile_dir}/seafile-server-latest/seahub.sh start
ExecStop=${seafile_dir}/seafile-server-latest/seafile.sh stop
ExecStop=${seafile_dir}/seafile-server-latest/seahub.sh stop
RemainAfterExit=yes
User=root
Group=root
[Install]
WantedBy=multi-user.target
刷新配置并开机启动
systemctl daemon-reload
systemctl enable seafile
结语
其实主要还是给自己个备忘。说起来,seafile的官方安装指引,很规范,但是对个人来说有些操作都比较累赘了。比如安装包专门放一个地方好维护,自启动脚本seafile和seahub分开。个人搭建的话随意一点也是可以的。