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
openssl req -x509 -nodes -days 365 -newkey rsa: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。
-
重新启动服务器:
docker compose down && docker compose up -d