Seafile 踩坑记——SSL 折磨实录

本文介绍了在已有飞牛的情况下,仍需配置可道云或 Seafile 作为同步盘的原因。网盘适用于存储不常使用的大文件,而同步盘适用于频繁修改和跨设备使用的文件。Seafile 作为优秀的同步盘解决方案,侧重同步功能,使用体验接近 Onedrive,且分块存储保障文件安全。文章详细指导了如何使用 docker compose 部署 Seafile 专业版系统,包括下载配置文件、修改环境变量、配置 HTTPS 证书等步骤,并提醒注意官方文档中的坑。启动后如遇 502 错误,需等待几分钟初始化。

上期讲了可道云的配置,这期来讲讲 Seafile。

为什么有了飞牛,我仍然要配置可道云或者 Seafile?

首先简单说明一下“网盘”与同步盘的区别。我的理解是,网盘更加类似于百度网盘,主要作用是存储使用频次少、容量大、文件长期不改变的文件,例如视频、音频、软件安装包等等。一般用法是,需要的时候下载下来,使用完就删掉,或者是修改之后重新上传上去。

而同步盘则更加适用于文件小,但使用频次和修改频次极高的场景,例如文档编写,往往几十秒就要保存一次。或者是修改之后,我希望无缝衔接到另外一台设备使用,而不用我手动去一个个、一次次地上传下载。

现阶段的 NAS,如果说只看它系统自带的文件系统,其实更偏向于网盘的功能。这对于办公的话是不太方便的,因此许多人应该都有同步盘的需求。

像群晖这样优秀的 NAS 系统,则在本身提供网盘功能的基础上,使用 Synology Drive 套件补足了同步盘的功能,这是非常值得学习的。但目前像他这样做的太少,我们只能自己想办法去实现同步盘的功能。

而可道云与 Seafile 都是非常优秀的同步盘解决方案。但是它们的侧重点仍然有所不同。可道云还是更偏向网盘那一类,是在网盘的基础上做了一个半成品的同步功能。但他的云办公功能做得很好,非常适合文档协作。如果没有强烈的本地文件存储需求的话,用可道云是不错的。并且可道云提供了一个 teamOS 操作系统,可以很简单地进行安装。

Seafile 则更加偏向于同步盘,使用体验与 Onedrive、群晖 Drive 非常像,并且我觉得比群晖 drive 做得更加优秀,并且分块存储地特性也保障了文件的安全性。但缺点是,它的安装过程非常复杂,需要手动配置,并且需要一定的技术基础。尤其是在配置 SSL 方面,官方文档写得不明不白,需要自己摸索。

不过好消息是你看到了我这篇文章,我可以带你避免更多的坑。

安装 Seafile

Seafile12 官方文档

我们采用 docker compose 的形式部署专业版系统。

首先,新建一个 seafile-pro 文件夹,以后所有的数据都会存放在这里。

工程文件夹

然后下载 docker compose 文件,一共有四个文件,分别是:

  • .env:环境变量文件,用于配置 Seafile 的各种参数。
  • seadoc.yml:Seafile 的文档服务,用于提供 Seafile 的文档。
  • seafile-server.yml:Seafile 的服务,用于提供 Seafile 的服务。
  • caddy.yml:Caddy 的服务,用于提供 HTTPS 服务。
1
2
3
4
wget -O .env https://manual.seafile.com/12.0/repo/docker/pro/env
wget https://manual.seafile.com/12.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/12.0/repo/docker/pro/seafile-server.yml
wget https://manual.seafile.com/12.0/repo/docker/caddy.yml

然后修改 .env 文件,官方文档中已经对需要注意的配置项做了详细的说明,我们主要注意以下这些项:

数据目录

由于我把所有的数据都放在 seafile-pro 这个项目文件夹下面,因此我把所有的 /opt 都改为了./data,用于持久化数据。

网络协议配置

如果服务要上公网的话,用 http 是不合适的,因此我们就不配置 http 了,一开始就直接上 https。因此 SEAFILE_SERVER_HOSTNAME 填写域名,后面就分别以 seafile.example.com为例。SEAFILE_SERVER_HOSTNAME 填写 https。

https 证书配置

中文的安装手册里面没有 https 的内容,需要在英文文档查看。

Https and Caddy

首先下载你申请的域名证书,把他们改名后放到以下位置。

1
2
3
./data/seafile-caddy/certs/
├── cert.pem  # xxx.crt in some case
├── key.pem # xxx.key in some case

修改 seafile-server.yml 文件。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
services:
  ...
  seafile:
    ...
    volumes:
      ...
    labels:
      caddy: ${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
      # 添加这一行
      caddy.tls: "/data/caddy/certs/cert.pem /data/caddy/certs/key.pem"
      ...

然后直接docker compose up -d即可。

此外,如果你先用了 http,后续想要更换为 https 的话,还需要修改一下seahub_settings.py,文件目录是./data/seafile-data/seafile/conf/seahub_settings.py

把所有的 http://seafile.example.com 更改为 https://seafile.example.com。然后启动

启动后 502 错误

表明已经成功了,等待几分钟初始化即可。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计