基于Seafile搭了个私有云

前几天在腾讯云那里撸了一台学生机,120软妹币一年。

cloud-tencent02.png

突然发现现在像腾讯阿里这些都玩24岁以下实名用户都是学生的东西了。有个网友说他之前买腾讯的学生机时候1元/年 这才是真·学生机好吗!!!好事永远轮不到我
现在手里多了台服务器,想来想去决定拿来搭个私有云服务。高级了点,就是个人云盘
其实之前就已经试过很多网盘程序。比如我试过强大的NextCloud,也有试过一些个人开发的网盘程序。个人开发的相对而言功能目前不多,很多都处于beta版本。而Nextcloud确实是强大,不光UI舒服,它还有一个非常丰富的插件应用中心。各类的插件能够使Nextcloud的强大更加淋漓尽致的体现出来。所以最后我选择了Seafile
SeafileNextcloud比起来感觉差不多,我个人认为区别更多的在于Nextcloud的插件更丰富。但是安装的插件多了性能就会下降,对于高配置的服务器来说这都不是问题,不过很明显我这120软妹币的服务器不是高配置的服务器。
这样一看起来,不管是Seafile还是Nextcloud,在我手上其实都差不多。

Seafile一开始安装的是社区版。安装前看了官方的文档,需要MySQLNginx以及可选的Memcached。所以我就先通过Oneinstack安装好环境,还有一个就是必须的Python以及一些Python扩展。但是安装好后发现seafile的Web端打不开,我能感觉到应该是Nginx配置的问题。折腾了好几次,还是没搞定,然后我就把服务器重置了,通过官方提供的脚本一键安装部署。

后来又在seafile的交流群知道了PRO版在三个用户内是免费的。然后我就开始申请资格。加销售微信一天没回后我决定发邮件。这绝对是我第一次写邮件。

20190723103116.png

第二天就有回应了。拿PRO资格主要也是为了对接Aliyun OSS作后端,其次才是其他的高级扩展功能。~OSS作后端的一个好处就是我可以跨区域备份,防止毁灭性打击,以及以后要是服务器不要了,也不需要把云盘里的文件一个一个下载出来,直接在OSS里就有。即使在家庭NAS中,我觉得使用OSS作为后端也是很有必要的。~是我理解错了。因为之前使用过的一些国内个人开发的网盘程序对接OSS作储存端,文件上传服务器后,在OSS里是直接以文件的形式存在。即你上传了什么,桶里就存这什么。而seafile则是将所上传的文件进行分片的形式存在桶里面,并不是以所上传的文件的形式存在桶里。而这个分片的个数以及大小在/seafile/conf/seafile.conf中可以进行设定。


我的seafile是绑定了域名的。为了提高安全性,我给它加了SSL。还有一个就是我发现即使绑定了域名,直接输入IP地址也可以访问,这个使得服务器的安全性大打折扣,和配置HTTPS一样,在nginx.conf里进行配置禁止通过IP直接访问。

vi /etc/nginx/conf.d/seafile.conf

#禁止通过IP直接访问
server {
  listen 80 default;
  server_name _;
  return 403;
}
#强制http跳转到https
server {
    listen 80;
    server_name cloud.jockie.fun;
    rewrite ^ https://$http_host$request_uri? permanent;
    server_tokens off;
}
#添加ssl
server {
    listen 443;
    ssl on;
    ssl_certificate /opt/sslkey/cloud.jockie.fun.crt; #证书位置
    ssl_certificate_key /opt/sslkey/cloud.jockie.fun.key; #密钥位置
    server_name cloud.jockie.fun;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    proxy_set_header X-Forwarded-For $remote_addr;

    server_tokens off;

还有一个就是bug级别有点气又有点好笑的邮件配置

一开始不管我怎么配置,都会导致seahub启动失败。什么可能我都试过了,都还是会报错,最后求助论坛
2019-07-18T10-33-34.344Z.png
20190723171107.png

还在seafile的交流群里求助。以葫芦娃救爷爷之姿,使尽浑身解数,都没能把我捞起来。他们还亲自配置了他们自己的seafile,都没有问题。在他们显得无力的时候,我在论坛的以为路人的指引下,把/conf/gunicorn.conf中的daemon关了,然后我就看到报错信息,大概就是说我的单词拼错了,把True拼成Ture
4186194330.png
在那一瞬间我感到一丝无力

20190723170050.png
20190723172417.png


我还再腾讯那里发现个好东西,腾讯的除了COS是免费的外,CFS也是免费的,有10G免费存储量,超出的的话只计算超出部分。相比之下阿里的NAS则是付费的,还老贵,对于我这种穷学生来说当然是免费的最适合我。
拿CFS来做备份存储也是一个不错的选择,~和挂OSS作后端储存再通过跨区域备份是有一定区别的,虽然两者都可以起到备份的功能。~再加上一个定时任务,到点自动备份。美滋滋

#安装并挂在CFS
yum install nfs-utils
sudo mount -t nfs -o vers=4 ***.***.***.***:/ /root/backup/
mount -l(df -h)

#安装CFS监控
## 下载 CFS 服务监控插件
wget http://mirrors.tencentyun.com/install/cfs/cfs_barad_plugin_installer_release_v11
## 修改文件类型
chmod +x cfs_barad_plugin_installer_release_v11
## 安装插件
./cfs_barad_plugin_installer_release_v11

#备份seafile数据库
mysqldump -h 127.0.0.1 -uusername -ppassword --opt ccnet_db > /root/backup/databases/ccnet-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
mysqldump -h 127.0.0.1 -uusername -ppassword --opt seafile_db > /root/backup/databases/seafile-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
mysqldump -h 127.0.0.1 -uusername -ppassword --opt seahub_db > /root/backup/databases/seahub-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`

#增量备份seafile数据
rsync -az /opt/seafile /root/backup/data/

#创建定时任务进行自动备份(每晚22:30)
crontab -e  #添加
crontab -l   #检查
30 22 * * * mysqldump -h 127.0.0.1 -uusername -ppassword --opt ccnet_db > /root/backup/databases/ccnet-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
30 22 * * * mysqldump -h 127.0.0.1 -uusername -ppassword --opt seafile_db > /root/backup/databases/seafile-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
30 22 * * * mysqldump -h 127.0.0.1 -uusername -ppassword --opt seahub_db > /root/backup/databases/seahub-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
30 22 * * * rsync -az /opt/seafile /root/backup/data/

搭这个云盘,我顺带还做了个LOGO给它👇

VelaCloudDisk1920_1080_1.png
20190723170028.png


Last modification:July 29th, 2019 at 08:43 pm
如果觉得我的文章对你有帮助,可以请我喝咖啡

Leave a Comment

,