完成本教程需要一些Linux基础命令,如果不会,请严格根据本教程的建议内容操作 。

本教程需要以下内容:

1、公网IP或域名(DDNS)

2、极空间Z2s或其它ARM64(ubuntu20.04)设备一台

3、路由器支持端口转发或DMZ


1、准备Ubuntu20.04系统

1.1、下载Ubuntu docker镜像

A、打开docker,进入“镜像”——“常用镜像”,选中“Ubuntu”然后点击下载

B、版本选择“focal”开头的,后面时间选最新的,或者选择“20.04”理论上也行,没试过

C、镜像只有63MB,耐心等待下载完,如果长时间没有下载完成,可以关掉docker窗口,再来一遍。如此反复。(可以通过在“仓库”中设置国内的加速源,有兴趣的可以自行搜索相关方法)

1.2、创建Ubuntu容器

A、双击镜像,弹出创建容器窗口,容器名随便写,不影响别的。建议关闭“启用性能限制”,实测不限制性能内网上传最高也只能到60MB/s,虽然够用,限制后就不知道啥情况了

B、“文件夹路径”,可以不设置。如果要考虑可移植性,可以通过该设置,将seafile的安装和文件挂载出来,也就是极空间能看到和管理seafile的安装和同步的文件数据。

如果此处有设置,请记住它,后面需要用到。

PS:为什么说可以不设置?

从我的使用角度,使用seafile目的是用来同步不同PC的文件和外链分享,每台PC上本来就有一份完全一样的数据,即使seafile挂了,也不会有数据丢失。

C、“网络”建议保持“bridge”桥接

PS:为什么建议用“bridge”?

如果用host,seafile部署后的ubuntu可能会有很多的服务用到很多的端口,这就容易与Z2s本身的端口冲突,不利于管理。使用桥接模式,可以只放通需要的seafile端口即可,简洁且利于管理。

D、“端口”,放通8000和8082。这是seafile的默认端口,如果后面部署seafile需要自定义端口,请提前在此处考虑好。

设置说明:“本地端口”与“容器端口”不要求设置一样

本地端口:是容器外能访问的端口,此端口会暴露在Z2s所在的内网中,后面再通过路由器的NAT转发到外网

容器端口:是docker中启动的容器内部端口,只在容器网络内部互通,外部无法直接连接

E、“别名”与“环境”保持默认

F、“命令”,中的“Console”选择第一个

G、点击右下角“应用”,完成容器创建

1.3、配置Ubuntu基础环境

A、点击“SSH”按钮,登录Ubuntu后台。弹窗不用设置,直接点“连接”。

B、弹出了Linux命令窗口,接下来的很多操作都要在此处完成。如果时间未操作,导致输入任何字符都无反应,请关掉它,再次点击“SSH”按钮打开

C、输入“apt-get update”,更新ubuntu软件库。由于默认连接的ubuntu官方服务器,速度可能有点慢,耐心等待。(如果想要更快,请自行搜索Ubuntu换源)

2、部署seafile

2.1、下载安装包

A、seafile官方提供的ARM包在GitHub上,有条件的请直接访问该链接,下载后缀名为“focal-arm64v8l.tar.gz”最新版本。

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

有条件的应该能自己搞定,如果没有条件的,可以使用如下链接下载。(为了安全考虑,请尽量使用官方的包,不要使用第三方提供的包)

B、在线下载:先安装wget,然后再下载。进入第1.2.B章节设置的目录,本教程为/root,复制GitHub上的安装包地址,然后用wget下载

apt install wget -y
cd /root
wget https://github.com/haiwen/seafile-rpi/releases/download/v9.0.2/seafile-server-9.0.2-focal-arm64v8l.tar.gz

C、离线下载:如果第1.2.B章节设置了目录,可通过Z2s文件管理将安装包上传,本教程为”我的文件/Docker/seafile_test/

2.2、安装依赖包

A、直接执行这些命令,此处时间较长,具体时间与你的宽带网络和Z2s负载情况有关

apt-get install vim sqlite3 build-essential libevent-dev libcurl4-openssl-dev libglib2.0-dev uuid-dev intltool libsqlite3-dev libmysqlclient-dev libarchive-dev libtool libjansson-dev valac libfuse-dev re2c flex python-setuptools cmake -y

B、配置时区,先输入”6“,再输入”70“,确定后安装会继续

2.3、配置seafile安装

A、解压安装包,再用mv命令把解压的文件夹改好看点…

tar -xf seafile-server-9.0.2-focal-arm64v8l.tar.gz
mv seafile-server-9.0.2 seafile-server

B、开始部署,进入 seafile-server目录,执行./setup-seafile.sh安装,本教程使用sqlite3数据库

cd seafile-server
./setup-seafile.sh

C、输入server_name,本教程使用”test“,不能用中文

D、服务器IP,填你配置好的域名或IP地址,此处用我自己的域名”nas.isway.top“

E、设置端口,使用默认设置,不修改

F、看到这个表示配置成功

G、修改/root/conf/gunicorn.conf.py,把127.0.0.1改成0.0.0.0否则只能这个容器能访问。

H、根据提示,启动服务,期间会提示输入邮箱和密码,这就是管理员。如图表示启动成功

./seafile.sh start
./seahub.sh start

I、配置路由器的端口转发,将8000和8082端口转发到Z2s NAS的IP上。

J、访问http://nas.isway.top:8000,部署成功

2.4、一点点收尾

A、登录seafile的web,点击右上角头像,选择”系统设置“

B、将URL两个设置中的127.0.0.1,替换成域名。此步骤影响分享链接中的域名

C、接下来就是安装客户端,进行同步喽

汇报我的使用情况

1、同步速度约60M/s

2、seafile的docker正常资源消耗如下:

3、通过外链分享,下载速度大概25M/s

4、同步157G,13506个文件,大概1.5小时