Seafile Docker 部署概览
基于 Docker 的 Seafile 安装由以下组件组成(Docker 镜像):
- Database: 存储与 Seafile 和 SeaDoc 相关的数据。
- Memcached: 缓存服务器。
- Redis: 缓存服务器(13.0默认缓存服务器由Memcached切换到Redis缓存)。
- Caddy: Caddy 服务器使用户能够从外部访问 Seafile 服务(即 Seafile 服务器和 Sdoc 服务器),并修改 SSL 配置。
- Seafile 可选扩展:
- SeaDoc服务:SeaDoc 服务器,提供轻量级的在线协作文档编辑器。
- 通知服务:客户端通知客户资料库的更新,提供实时更新功能。
- 元数据服务:为资料库提供元数据管理 (13.0支持)。
- Seafile AI 和人脸嵌入:用户可以启用 Seafile AI 支持文件标签、文件和图像摘要、文本翻译、sdoc 写作辅助、生成图像标签(包括物体、天气、颜色等)、图像中的人脸检测和编码以及图像中的文本检测(OCR)等功能 (13.0支持)。
12.0组件架构图:

13.0组件架构图:

注意:只有 Seafile 11.0 版本或者更高版本,才支持集成 SeaDoc 。
HTTPS 和 Caddy 反向代理服务器
注意:从Seafile Docker 12.0起,HTTPS将由Caddy处理,Seafile Docker 默认使用的Caddy镜像为lucaslorentz/caddy-docker-proxy:2.9-alpine。
Caddy是一个现代的开源Web服务器,主要在Seafile Docker中绑定外部流量和内部服务。除了传统代理组件的优势之外(例如:Nginx),Caddy还为用户提供了更简单的配置去完成HTTPS证书的获取和更新。
要启用 HTTPS,用户只需在.env中配置以下字段:
SEAFILE_SERVER_PROTOCOL=https
SEAFILE_SERVER_HOSTNAME=example.com
使用自定义(现有)证书
使用caddy.yml,将创建一个默认的 volume-mount:/opt/seafile-caddy
中(您可以通过修改.env 文件中的SEAFILE_CADDY_VOLUME)。按照惯例,您应该在容器主机文件系统中提供您的证书和密钥文件。/opt/seafile-caddy/certs/
使其可供 Caddy 使用:
/opt/seafile-caddy/certs/
├── cert.pem # xxx.crt in some case
├── key.pem # xxx.key in some case
使用此命令,您可以生成自己的自定义证书:
cd/opt/seafile-caddy/certs
opensslreq-x509-nodes-days365-newkeyrsa:2048-keyout./key.pem-out./cert.pem
请注意,自定义证书不能用于 IP 地址。
然后修改seafile-server.yml以启用您的自定义证书,顺便,我们强烈建议您在执行此作之前备份seafile-server.yml:
cp seafile-server.yml seafile-server.yml.bak
nano seafile-server.yml
services:
...
seafile:
...
volumes:
...
# If you use a self-generated certificate, please add it to the Seafile server trusted directory (i.e. remove the comment symbol below)
# - "/opt/seafile-caddy/certs/cert.pem:/usr/local/share/ca-certificates/cert.crt"
labels:
caddy: ${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty} # leave this variables only
caddy.tls: "/data/caddy/certs/cert.pem /data/caddy/certs/key.pem"
...
注意:DNS 解析必须在容器内工作。
如果您使用的是像 my-custom-setup.local这样的非正规域名,则必须确保 docker 容器可以解析此 DNS 查询。如果您不运行自己的 DNS 服务器,则必须将 extras_hosts 添加到您的.yml文件中
修改seahub_settings.py并重启服务器
如果您在初始部署时启用了 HTTPS,则可以跳过该部分(HTTPS 将在首次启动时生效)。
- 修改 seahub_settings.py 并将所有 http://seafile.example.com 更改为 https://seafile.example.com。
- 重新启动服务器:
dockercomposedown&&dockercomposeup-d