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
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 将在首次启动时生效)。
  1. 修改 seahub_settings.py 并将所有 http://seafile.example.com 更改为 https://seafile.example.com。
  2. 重新启动服务器:
            
                
                
docker compose down && docker compose up -d