利用树莓派搭建SeaFile私有云

前言:

关键字:Raspberry Pi、seafile、Linux、云、私有云;

利用SeaFile搭建私有云,如果说在传统的X86架构的主机上搭建,方法还是非常简单的,官方网站上的教程已经非常的明确[虽然经常不更新],在树莓派上搭建反而要麻烦一点。实际上,在树莓派上搭建任何的开源服务,明显都比在传统X86的服务器上架设同样的开源服务要麻烦得多,这是我的总结。实际上,博主对SeaFile、OwnCloud、NextClocud这类开源的私有云并不怎么感兴趣,主要是博主没什么这类型的需求,二是FTP对博主来说已经足够了。当然,SeaFile与FTP还是有区别的,SeaFile的主要优势是文件同步以及多类型的客户端支持上比较方便,比如说手机。

当然,SeaFile还是很符合当代人的需求的,更现化的外观、更漂亮的界面、更高的安全性[数据加密]、更简单的操作[看上去是更简单]。无论如何,在浏览器上打开自己的SeaFile私有云服务器,在外人眼中,总比你打开一个老旧的FTP客户端要显得高大上多了,不是吗?嗯,很多时候人们都习惯了喜新厌旧,从不问自己真正需要的是什么。如果你告诉别人,你会搭建私有云,外人眼中对你的印象多是“技术高超,走在时代的前端”;但告诉别人你会搭建FTP呢?印象多是“技术老旧,都什么时代了,还FTP,技术中下层……”,但事实是什么?搭建SeaFile远比搭建FTP简单……

说了这么多题外话,下面进入正题吧~

另注:下文图片仅参考,因为博客主测试的树莓派上使用的用户为“Edward”而非“pi”,但代码是没问题的~

一、硬件与软件环境

本教程在以下环境下搭建测试通过!

  • 硬       件 :Raspberry Pi 3B 

  • 操作系统 :Raspbian Buster Lite

  • SeaFile版本 :7.1.4  [ For Raspberry Pi ] 

  • Python版本 :3.7.3 

  • 测试日期:2020年06月19日

二、配置及安装

假设以下为一个全新配置的树莓派操作系统,系统版本为“Raspbian Buster Lite”[注:此版本系统的Python版本为3.7.3,这很重要],首先,我们使用以下命令安装相关的依赖与必要软件。需要注意的是,“python-imaging”这个包已经不再存在了,并且被“python-pil”这个包所取代,所以以下的依赖安装命令与官方略有不同,这是官方安装教程未及时更新的问题;

在完成依赖关系配置后,本示例将得用已经编译好的Seafile服务程序文件安装相关服务,过程如下;

在重启操作完成后,再次连接服务器进行以下操作;

利用树莓派搭建SeaFile私有云

进入对应目录,执行安装操作;

利用树莓派搭建SeaFile私有云

此时已经安装完成了,在正式启用服务前,还需要一些额外的操作,比如说服务程序的配置,本示例只修改了最基本而必要的配置,即允许访问的入口;更多配置可参阅官方网站,比如说每个用户的可用空间上限,或上传文件的默认保存位置[本示例的默认保存位置对应为“”]等;现进行允许访问入口的配置,执行“nano /opt/SeafilePi/conf/gunicorn.conf.py”命令,将以下原文

修改为以下内容;

以上修改可设定监听地址及端口号,以上修改表示,允许所有IP地址连接服务器,服务进程运行在“8000”端口;

在完成以上额外操作后,还需要进行另一步针对树莓派SeaFile版本的另一额外操作,这是官方文档没有提到的,或者说官方的标准服务搭建文档没有提到的;另特别说明,这个操作不是通用的,要视系统的实际情况设定,但“seafile-server_7.1.4_pi-buster-stable.tar.gz”这个安装包在树莓派操作系统“Buster ”版本下是必需的,执行以下命令;

手动启动服务;

利用树莓派搭建SeaFile私有云

利用树莓派搭建SeaFile私有云

停用服务;

三、开机启动[SYSTEMD]

实际上经过以上操作,已经可以使用Seafile服务了[内网],但总不可能每次树莓派重启,我们都手动启用服务一次吧?我们希望Seafile服务能自动启动,于是有了下面些部分的内容。关于开机自动启用服务,有两种方式:即传统的“init”及当前的“systemd”,这两种方法官方教程均有提及,博主参考了官方代码,个人还是喜欢“systemd”方式多一点,以下内容参照官方并作了对应树莓派的修改,操作如下:

执行以下命令,在目标目录下创建“seafile.service”文件:

并在文件中输入以下内容:

执行以下命令,在目标目录下创建“seahub.service”文件:

并在文件中输入法以下内容,注意以下内容在官方配置中额外加入了环境变量的定义,这是在树莓派上使用“SYSTEMD”启动Seafile服务所额外的必须配置[缺少本条环境变量配置定义,SYSTEMD会在服务启动的过程中检出错误而无法启动],关于“LC_ALL=en_US.UTF-8”这个变量的说明见上文:

特别说明,以上配置文件的配置代码是没有错的,但在你复制这些代码的过程中,可能会产生特殊字符的错误问题,这些特殊字符是无法从视觉上分别的,常出现字符问题的特殊字符包括空格、换行符、英文标点符号等;以下代码复测过程中一个偶然示例,注意,这是同一份文件,未作任何修改,在“vim”与“nano”命令下的区别,竟然多出了莫名其妙的字符[注意“RemainAfterExit=yes”这条配置项],造成服务无法正常启动,见下面图片;说实施,博主经常在WINDOW下利用SSH连接至服务器搭建服务的,字符问题常常把博主搞得焦头烂额!!!!!!!!!

利用树莓派搭建SeaFile私有云

设定Seafile服务开机自启动、测试及状态查询:

四、配置定义

关于SeaFile的可定义配置项并不多,而且一些配置官方已经不使用了,所以实际的可配置项目更少,由于此部分内容难以总结,所以读者自己至官方网站查询即可,其配置文件均保存在“/conf”目录,下面仅对配置文件作一个简单的说明;另外补充,一些配置文件在这个安装包中并没有默认创建,读者若想使用该部分功能,创建对应配置文件即可;

关于Seafile服务的数据保存位置;令我很好奇的是,Seafile并没有在其配置文件中提供自定义数据保存位置的配置项,默认情况下,数据均保存在“./seafile-data”中[上面的截图中有提示过],不评论其优点与缺点了,如果真想修改数据的默认保存目录,有以下两个方法:1.对使用“”目录使用软连接或挂载其它磁盘至该目录上;2.使用“ps -aux | grep seafile”命令查询“seafile.sh”脚本实际执行的命令[查询后将会发现,实际执行的是一个名为“seafile-controller”程序,并且其数据的保存位置由一个“-d”选项所指定],然后使用对应的命令运行Seafile服务即可;

五、参考

这是楼主参考的一些文章,读者遇到问题可参考;

六、结

反正博主暂时并没有使用SEAFILE的想法,关于SEAFILE中上传的文件数据,是强制加密的,所以像博主这种FTP保存数据的来说,原来的数据迁移至SEAFILE并不方便;数据加密对企业来说非常重要,但对个人用户来说,其重要性可能就没这么重要了;而博主认为最关键的一点是,对于个人用户来说,其建立的SEAFILE是不稳定的,是容易发生问题的,这一额外的加密措施,很可能加剧了当SEAFILE服务出现问题时,用户恢复数据的难度。如果对加密并没有额外的需求,博主认为,读者可以考虑一下OwnCloud或NextCloud这两个开源的私有云,其上传的文件并不强制加密,这也意味着,你原有的数据在迁移上非常方便~

网友评论3

  1. 板凳
    雨愁:

    成功了,非常感谢,不过当前是用树莓派,怎么挂硬盘,要是有教和一就好了

    2021-03-04 上午12:20 [回复]
    • Edward:

      $ blkid
      /dev/sda1: UUID="58c86c5a-9c2c-4b9c-bfd0-db64283ea88e" TYPE="ext4" PARTUUID="804797c8-01"
      ....
      $ cat /etc/fstab
      ...
      UUID=58c86c5a-9c2c-4b9c-bfd0-db64283ea88e /Data ext4 defaults,noatime 0 0
      ...

      2021-03-09 下午10:35 [回复]
  2. 沙发
    路人:

    非常感谢,你的教程特别全。希望能坚持下去!

    2020-11-02 上午9:58 [回复]

发表评论

表情
还能输入210个字