使用 SeaSearch 作为搜索引擎(Pro)

SeaSearch 是 Seafile 专业版支持的轻量级文件索引与搜索引擎。 Seafile 14.0 专业版使用 Docker 标准部署时,默认启用 SeaSearch ,通常不需要另外安装或手动开启。Seafile 13.0 可以使用 SeaSearch,但需要根据现有部署情况手动配置。
本文主要介绍 Docker 部署方式。SeaSearch 服务本身以 Docker 方式运行;如果 Seafile 服务器采用二进制方式安装,仍需单独部署 SeaSearch 服务,并按实际安装方式管理 Seafile 进程。
Seafile 14.0:检查和配置 SeaSearch
确认 SeaSearch 已启用
在 Seafile 14.0 专业版的标准 Docker 部署中, seasearch.yml 和相关环境变量已包含在部署配置中。切换到 Seafile Docker 配置目录:
            
                
                
cd /opt/seafile
检查 .env 中的 COMPOSE_FILE 是否包含 seasearch.yml ,并确认搜索相关配置:
            
                
                
ENABLE_SEARCH=true
SEARCH_ENGINE=seasearch
ENABLE_FULL_TEXT_SEARCH=true
SEASEARCH_URL=http://seasearch:4080
SEASEARCH_TOKEN=<SeaSearch API 授权令牌>
配置项
说明
默认值或要求
ENABLE_SEARCH
是否启用文件搜索。
true
SEARCH_ENGINE
指定文件搜索引擎。
seasearch
ENABLE_FULL_TEXT_SEARCH
是否索引文档内容。设置为 false 时,只进行文件名等非内容搜索。
true
SEASEARCH_URL
Seafile 容器访问 SeaSearch 服务的地址。
http://seasearch:4080
SEASEARCH_TOKEN
访问 SeaSearch API 的授权令牌。
必填
SS_DATA_PATH
SeaSearch 持久化数据目录(宿主机路径)。
/opt/seasearch-data
SEASEARCH_IMAGE
SeaSearch Docker 镜像。
seafileltd/seasearch:1.0-latest
如果使用默认配置,请保留原有 COMPOSE_FILE 中的其他 Compose 文件,不要用上面的示例覆盖整份 .env 。
生成 SeaSearch 授权令牌
默认情况下,首次初始化 SeaSearch 时使用与 Seafile 初始管理员相同的账号和密码,即:
  • INIT_SS_ADMIN_USER 使用 INIT_SEAFILE_ADMIN_EMAIL 的值。
  • INIT_SS_ADMIN_PASSWORD 使用 INIT_SEAFILE_ADMIN_PASSWORD 的值。
用实际的 SeaSearch 初始化用户名和密码生成 Base64 令牌:
            
                
                
echo -n 'admin@example.com:your-password' | base64
将输出结果填写到 .env 的 SEASEARCH_TOKEN 中:
            
                
                
SEASEARCH_TOKEN=<上述命令的输出结果>
如果为 SeaSearch 单独设置了 INIT_SS_ADMIN_USER 和 INIT_SS_ADMIN_PASSWORD ,必须使用 这两个值 生成令牌,不能继续使用 Seafile 管理员的凭据。
注意: Base64 编码不是加密。该令牌包含可还原的账号凭据,不要将其粘贴到工单、日志或公开文档中。首次初始化完成后,可以从 .env 中移除 INIT_SS_ADMIN_USER 、 INIT_SS_ADMIN_PASSWORD 等仅用于初始化的明文信息,但应妥善保存账号凭据; 不要删除仍在使用的 SEASEARCH_TOKEN 。
配置全文搜索和索引间隔
在 .env 中使用以下配置启用文档内容的全文索引:
            
                
                
ENABLE_FULL_TEXT_SEARCH=true
如果不需要检索文档正文,可设置为:
            
                
                
ENABLE_FULL_TEXT_SEARCH=false
如需调整索引同步间隔,可编辑 Seafile 的 seafevents.conf (Docker 默认宿主机路径: /opt/seafile-data/seafile/conf/seafevents.conf ):
            
                
                
[SEASEARCH]
interval = 10m
10m 表示每 10 分钟进行一次索引同步。若 .env 中已设置 ENABLE_FULL_TEXT_SEARCH ,该设置优先于 seafevents.conf 中的 enable_full_text_search 。
SeaSearch 使用其他服务器或 Apple Silicon
如果 SeaSearch 不在与 Seafile 相同的 Docker 网络中运行,请将 SEASEARCH_URL 替换为 Seafile 容器实际可访问的地址,例如:
            
                
                
SEASEARCH_URL=http://192.168.1.100:4080
如果使用 Apple Silicon 设备(如 M 系列芯片),可选用不依赖 MKL 的镜像:
            
                
                
SEASEARCH_IMAGE=seafileltd/seasearch-nomkl:1.0-latest
确保使用与运行平台兼容的 SeaSearch 镜像。
Seafile 13.0:手动启用 SeaSearch
Seafile 13.0 的 Docker 部署可以使用 SeaSearch 替代 Elasticsearch。以下步骤用于仍在使用 Elasticsearch、准备切换到 SeaSearch 的环境。
1. 下载 SeaSearch Compose 文件
            
                
                
cd /opt/seafile
wget https://manual.seafile.com/13.0/repo/docker/pro/seasearch.yml
2. 修改 .env
编辑 /opt/seafile/.env ,在现有 COMPOSE_FILE 列表中 添加 seasearch.yml ,移除 elasticsearch.yml 。保留原本仍需使用的其他 Compose 文件。
同时检查或设置以下变量:
            
                
                
SEASEARCH_IMAGE=seafileltd/seasearch:1.0-latest
SS_DATA_PATH=/opt/seasearch-data
INIT_SS_ADMIN_USER=<SeaSearch 初始化用户名>
INIT_SS_ADMIN_PASSWORD=<SeaSearch 初始化密码>
INIT_SS_ADMIN_USER 和 INIT_SS_ADMIN_PASSWORD 默认可以使用 Seafile 的初始管理员凭据。它们用于 SeaSearch 首次初始化,请替换上面的占位符。
3. 修改 seafevents.conf
先按上一节的方法,将 SeaSearch 初始化用户名和密码编码为 Base64 令牌。编辑宿主机上的配置文件:
            
                
                
nano /opt/seafile-data/seafile/conf/seafevents.conf
添加或修改:
            
                
                
[SEASEARCH]
enabled = true
seasearch_url = http://seasearch:4080
seasearch_token = <SeaSearch API 授权令牌>
interval = 10m
index_office_pdf = true
index_office_pdf = true 用于索引 Office、PDF 等文档内容。如果只需要检索文件名,可以将其设为 false 。
如果原来配置了 Elasticsearch,请在 seafevents.conf 中禁用它:
            
                
                
[INDEX FILES]
enabled = false
注意: Seafile 13.0 的上述 seafevents.conf 配置与 Seafile 14.0 通过 .env 设置 SEARCH_ENGINE 、 ENABLE_FULL_TEXT_SEARCH 的方式不同。请根据实际版本修改,避免同时保留相互冲突的搜索配置。
可选:将 SeaSearch 索引保存到 S3
Seafile 14.0 和 13.0 均支持为 SeaSearch 使用 S3 对象存储。在 .env 中设置:
            
                
                
SS_STORAGE_TYPE=s3
S3_SS_BUCKET=seasearch-index
S3_KEY_ID=<S3 Access Key ID>
S3_SECRET_KEY=<S3 Secret Access Key>
S3_USE_V4_SIGNATURE=true
S3_PATH_STYLE_REQUEST=false
S3_AWS_REGION=us-east-1
S3_HOST=
S3_USE_HTTPS=true
S3_SS_BUCKET 是保存 SeaSearch 索引 的存储桶,不是用于存放 Seafile 文件对象的 S3_COMMIT_BUCKET 、 S3_FS_BUCKET 或 S3_BLOCK_BUCKET 。使用非 AWS 的 S3 兼容服务时,需填写 S3_HOST ,并按提供商要求调整区域及路径样式访问选项。
即使将索引保存到 S3,SeaSearch 仍需要本地数据目录作为缓存和运行数据目录。关于 S3 连接参数及存储桶设置,请参阅 使用 S3 存储后端 。
不要在已有 SeaSearch 索引数据的情况下直接切换存储后端并删除原始索引数据。 请先确认迁移或重建方案,并备份相关数据。
重启服务并检查状态
修改配置后,进入 .env 和 Docker Compose 文件所在目录,重新启动服务:
            
                
                
cd /opt/seafile
docker compose down
docker compose up -d
该操作会暂停当前 Compose 项目中的服务,请选择适当的维护时间执行。
查看容器状态及 SeaSearch 日志:
            
                
                
docker compose ps
docker logs -f seafile-seasearch
还可以检查默认持久化目录下的日志,例如:
            
                
                
/opt/seasearch-data/log/seafevents.log
如果搜索暂时没有结果,请先确认 SeaSearch 容器正常运行、Seafile 能访问 SEASEARCH_URL 、授权令牌正确,并等待索引同步完成。不要直接删除 /opt/seasearch-data 中的文件来排查故障。
集群部署注意事项
在 Seafile 集群中启用或修改 SeaSearch 时,应确保各节点使用一致的搜索服务地址和授权配置。特别是后端节点需要正确配置搜索功能;修改后建议按集群维护流程重新启动相关节点,确保配置和索引同步行为一致。