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
,并按提供商要求调整区域及路径样式访问选项。
不要在已有 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 时,应确保各节点使用一致的搜索服务地址和授权配置。特别是后端节点需要正确配置搜索功能;修改后建议按集群维护流程重新启动相关节点,确保配置和索引同步行为一致。