作为街拍党的我会经常备份相册到云方便随时随地同步到宿舍和家里的电脑,而国内支持手机相册备份的云服务要么就限速限空间老铁实在是不能忍受了。召唤树莓派!是时候搭建个私人家庭网盘了,对比了两家较大名气的开源云服务SeaFile和OwnCloud,我选择了SeaFile,由于树莓派在内网,穿透的问题6月的时候搭建了个评论服务器刚好资源较空闲可以用来内网穿透到树莓派。

搭建Seafile

依赖环境准备

在你准备搭建的时候建议先仔细阅读一下官方的英文文档(中文文档不全):SeaFile Documents
本文档针对有一定Linux的人员阅读,并不是傻瓜教程因为官方文档已经说得非常详细了,但是因为官方文档是通用教程有些地方可能不适用于树莓派,本文对搭建方法简单带过,着重讲不适用于树莓派的地方,和我搭建过程中的疑难杂症
1. 安装依赖(摘抄官方文档)

1
$ apt-get install python2.7 libpython2.7 python-setuptools python-imaging python-ldap python-urllib3 sqlite3

2. 建立主工作文件夹

1
2
3
#在一个你需要放置SeaFile的文件夹建立一个父文件夹,所有操作均在此文件夹进行
mkdir seafile
cd seafile

下载树莓派版安装包

https://github.com/haiwen/seafile-rpi/releases

1
2
3
4
# 下载
wget https://github.com/haiwen/seafile-rpi/releases/download/v6.0.9/seafile-server_6.0.9_stable_pi.tar.gz
# 解压
tar zxvf seafile-server_6.0.9_stable_pi.tar.gz

安装Seafile

程序会自行检测依赖环境是否安装若不报错会自动进入安装程序,接下来按照安装程序的提示分别输入 网站名称服务地址数据文件夹地址 就可以了安装程序很完善不再另行解释。

1
2
cd seafile-server-6.0.9
./setup-seafile.sh

Seafile的配置

https://manual.seafile.com/config/ccnet-conf.html
https://manual.seafile.com/config/seahub_settings_py.html
着重看conf文件夹的 seafile.confseahub_settings.py配置文件ccnet.conf文件中的配置数据已经逐步移动到seahub_settings.py了,seahub_settings.pyc是缓存文件

默认的服务端口更改

默认端口8000是网页服务端口,8082是文件服务端口
修改 seafile.conf 文件中的两个port:更改端口
如果修改了端口需要注意添加 SERVICE_URL="http/s://服务地址:端口"FILE_SERVER_ROOT="http/s://服务地址:端口/seafhttp"seahub_settings.py 配置文件中,并且文件服务端口的修改要么就保持默认要么就要与网页服务端口同步一致(针对经过Nginx反代的Seafile,由自带的网页服务提供的网页不建议修改)

例如服务地址:https://www.hscbook.com 网页端口:8111 文件服务端口:8111

1
2
3
4
5
6
7
8
9
#seafile.conf
[fileserver]
#服务地址
host = 0.0.0.0
#Seafile 服务端口
port = 8111
[seahub]
#SeaHub 服务端口
port=8111

1
2
3
#seahub_settings.py
SERVICE_URL = 'https://www.hscbook.com:8111'
FILE_SERVER_ROOT = 'https://www.hscbook.com:8111/seafhttp'

Seafile 自启动

https://manual.seafile.com/deploy/start_seafile_at_system_bootup.html
在官方文档获取启动脚本并修改参数,上传到/etc/init.d/seafile-server赋予执行权限
运行:chkconfig --add seafile-server

安装Memcached加速Seafile

依赖环境准备

1
sudo apt-get install gcc make binutils python python-all-dev

编译Memcached

1
2
3
4
5
6
7
8
9
#从官方下载源码
wget http://memcached.org/latest
#重命名(查看下载信息修改版本号)
mv latest memcached-1.x.x.tar.gz
#解压缩
tar -zxvf memcached-1.x.x.tar.gz
cd memcached-1.x.x.tar.gz
#编译
./configure --prefix=/usr/local/memcached && make && sudo make install

编译libmemcached

1
2
3
4
5
6
7
8
#从官方下载源码
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
#解压缩
tar zxf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
#编译 (这个树莓派编译要超级久)
./configure --prefix=/usr/local/libmemcached
make &&make install

安装Python环境的客户端

1
2
LIBMEMCACHED=/usr/local/libmemcached pip install pylibmc
sudo pip install django-pylibmc

修改Seafile配置文件开启缓存

打开seahub_settings.py添加

1
2
3
4
5
6
7
8
9
#######################################################
## 启用MemCached缓存
#######################################################
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
}
}

运行Memcached
sudo /usr/bin/memcached -d -m 64m -l 127.0.0.1 -p 11211 -u pi -d
最后重启Seafile服务就可以了

自启动Memcached

修改下面的参数,并上传到/etc/init.d/memcached赋予执行权限
运行:chkconfig --add memcached

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#! /bin/sh

### BEGIN INIT INFO
# Provides: memcached
# Required-Start: $remote_fs $syslog $time
# Required-Stop: $remote_fs $syslog $time
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: starts the memcached server
# Description: starts memcached using start-stop-daemon
### END INIT INFO

PATH=/opt/bin:/opt/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PIDFILE=/run/memcached.pid
NAME=memcached
RUNAS=pi

EXEC=/usr/local/memcached/bin/memcached
EXEC_OPTS="-p 11211 -m 64m -d"

case "$1" in
start)
echo "Starting $NAME"
start-stop-daemon --start --chuid $RUNAS --quiet --background --make-pidfile --pidfile $PIDFILE \
--exec $EXEC -- $EXEC_OPTS
;;
stop)
echo "Stopping $NAME"
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
--exec $EXEC
;;
restart)
echo "Restarting $NAME"
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
--exec $EXEC
sleep 1
start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE \
--exec $EXEC -- $EXEC_OPTS
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac

exit 0

Nginx 反代理Seafile并CDN加速

Seafile 的静态文件挺大的,每次都回源好心疼我的流量,上官方论坛、谷歌都没有找到有用的教程就只能自己研究了。我的环境有点特殊,因为树莓派是经过内网穿透到VPS进行外网访问的端口不是默认的80,443端口,这表示我不能用CDN加速了(大多数的CDN都是只能加速80,443流量的)有天逛谷歌无意看到一篇Cloudflare的文章:https://support.cloudflare.com/hc/en-us/articles/200169156-Which-ports-will-Cloudflare-work-with-发现Cloudflare可以反代理非80,443端口这大法简直贼溜。
HTTP专用端口:80,8080,8880,2052,2082,2086,2095
HTTPS专用端口:443,2053,2083,2087,2096,8443
专用端口的意思是比如你用2053端口,那么从 【 用户Cloudflare源服务器 】 必须全程HTTPS,任何一环使用HTTP都是不允许的。

安装Srafile后头像无法正常显示

可能是因为我的环境的问题,第一次安装Seafile后头像无法显示,上传头像显示Page unavailable删掉文件重新下载安装也没用,上官方发帖提问无果,最后还是自己根据官方的文档上的目录结构检查目录发现avatars目录链接文件存在异常。
正常情况/seafile-server-latest/seahub/media/avatars 目录是个链接文件指向 -> /seahub-data/avatars,并且/seahub-data/avatars存放着默认头像
我分别用ln命令查看了两个目录,发现/seahub-data/avatars 也是个链接文件并指向 -> /seafile-server-latest/seahub/media/avatars 这是搞事情啊,两个互相指向?

处理方法

分别在SSH(FTP查看不了失效的链接文件)把两个avatars链接文件RM掉。再在下载的安装包重新提取avatars文件夹放到 ./seahub-data 并且在./seafile-server-latest/seahub/media/avatars 创建链接文件并指向 ./seahub-data/avatars 清空缓存然后重启SeaFile

END

为了搭建Seafile我用了一个礼拜,遇到很多的疑难杂症都是自己Google的。实在自己解决不了的可以上官方论坛或者直接在下面留言也行,我能帮的我都尽量。
留言开通了留言审核请正确填写邮箱,填写的邮箱不对外公开并且是经过加密的,不用担心垃圾邮件服务器的扫描(我也很厌恶垃圾邮件)!

文章协议: Attribution-NonCommercial-NoDerivatives
文章地址: https://www.hscbook.com/article/raspberrypi-seafile/
除非注明,本博文章均为原创,转载请以链接形式标明本文地址