Cover

部署 Seafile

Seafile Docker 部署概览
基于 Docker 的 Seafile 安装由以下组件组成(Docker 镜像):
  • Seafile Server: Seafile 核心服务,有关详细信息,请参阅Seafile 组件。
  • Sdoc Server: SeaDoc 服务器,提供轻量级在线协作文档编辑器,详情请见SeaDoc。
  • 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 将在首次启动时生效)。
  1. 修改 seahub_settings.py 并将所有 http://seafile.example.com 更改为 https://seafile.example.com。
  2. 重新启动服务器:
dockercomposedown&&dockercomposeup-d