Thumbnail Server

从 Seafile 13.0 开始,新增了一个组件 —— 缩略图服务(thumbnail server)。 缩略图服务可以为图片、视频、PDF 以及其他文件类型生成缩略图。 它采用任务队列架构,相比在 Seahub 组件中直接生成缩略图,能更好地处理并发负载。
启用该功能时,需要通过 caddy 或其他反向代理将缩略图请求直接转发到缩略图服务器。
如何配置与运行
首先下载 thumbnail-server.yml 到 Seafile 目录:
            
                
                
wget https://manual.seafile.com/13.0/repo/docker/thumbnail-server.yml
修改 .env 文件,并将 thumbnail-server.yml 添加到 COMPOSE_FILE 中:
            
                
                
COMPOSE_FILE='seafile-server.yml,caddy.yml,thumbnail-server.yml'
seahub_settings.py 中加入以下配置,以启用视频缩略图:
            
                
                
# 视频缩略图(默认关闭)
ENABLE_VIDEO_THUMBNAIL = True
最后运行以下命令启动缩略图服务器:
            
                
                
docker compose down
docker compose up -d
Seafile集群中的缩略图服务
在专业版(Pro Edition)中,缩略图服务没有额外功能,与社区版相同。
如果启用了集群,需要在其中一台服务器或独立服务器上部署缩略图服务,并通过负载均衡器将 WebSocket 请求转发到该节点。
下载 .env thumbnail-server.yml 到缩略图服务器目录:
            
                
                
wget https://manual.seafile.com/13.0/repo/docker/thumbnail-server/thumbnail-server.yml
wget -O .env https://manual.seafile.com/13.0/repo/docker/thumbnail-server/env
然后根据实际环境修改 .env 文件,以下字段需要配置:
变量
描述
SEAFILE_VOLUME
缩略图服务器数据卷目录
SEAFILE_MYSQL_DB_HOST
Seafile MySQL 主机
SEAFILE_MYSQL_DB_USER
Seafile MySQL 用户,默认 seafile
SEAFILE_MYSQL_DB_PASSWORD
Seafile MySQL 密码
TIME_ZONE
时区
JWT_PRIVATE_KEY
JWT 密钥,需与 Seafile .env 文件中配置一致
INNER_SEAHUB_SERVICE_URL
内网访问 Seahub 的 URL,例如 http://<Seafile 服务器内网IP>
SEAF_SERVER_STORAGE_TYPE
存储类型,可选值:disk(本地磁盘)、s3、multiple(多存储后端)
S3_COMMIT_BUCKET
S3 后端 commit 对象桶
S3_FS_BUCKET
S3 后端 fs 对象桶
S3_BLOCK_BUCKET
S3 后端 block 对象桶
S3_KEY_ID
S3 后端密钥 ID
S3_SECRET_KEY
S3 后端密钥
S3_AWS_REGION
存储桶所在区域
S3_HOST
存储桶主机
S3_USE_HTTPS
是否启用 HTTPS 访问 S3
S3_USE_V4_SIGNATURE
是否启用 S3 v4 协议
S3_PATH_STYLE_REQUEST
是否使用路径风格 URL 访问对象(推荐自建存储系统使用该选项)
S3_SSE_C_KEY
SSE-C 加密密钥(32 字符长度随机字符串)
运行缩略图服务:
            
                
                
docker compose up -d
负载均衡器配置
负载均衡器需要将 /thumbnail 请求转发到缩略图服务器(HTTP 协议)。
以下为使用 haproxy 的示例(需要 haproxy 版本 ≥ 2.0)。其他负载均衡器可参考类似配置。
            
                
                
#/etc/haproxy/haproxy.cfg

# 其他已有配置
......

frontend seafile
     bind 0.0.0.0:80
     mode http
     option httplog
     option dontlognull
     option forwardfor
     acl thumbnail_request url_sub -i /thumbnail/
     use_backend thumbnail_backend if thumbnail_request
     default_backend backup_nodes

backend backup_nodes
     cookie SERVERID insert indirect nocache
     server seafileserver01 192.168.0.2:80

backend thumbnail_backend
     option forwardfor
     server thumbnail 192.168.0.9:80
缩略图服务与 Seafile 存储
缩略图服务器必须能访问 Seafile 存储。
本地存储:需将 Seafile 节点的 /opt/seafile-data 目录挂载到缩略图节点,并正确设置 SEAFILE_VOLUME
单一 S3 存储:在 .env 中正确配置相关环境变量。
多存储后端:需将 Seafile 节点的 seafile.conf 复制到缩略图节点 /opt/seafile-data/seafile/conf ,并在 .env 中设置 SEAF_SERVER_STORAGE_TYPE=multiple
缩略图服务目录结构
/opt/seafile-data —— 挂载目录,用于存储持久化数据(如日志等),避免容器重建时数据丢失。
  • /opt/seafile-data/conf :配置文件目录
  • /opt/seafile-data/logs :日志目录
  • /opt/seafile-data/seafile-data :Seafile 存储目录(本地存储时使用)
  • /opt/seafile-data/seahub-data/thumbnail :缩略图文件目录