Metadata Server

从 Seafile 13.0 开始,新增了一个组件 —— 元数据服务( metadata server )。 元数据服务用于为资料库提供元数据管理,以便更好地理解和掌握资料库的相关信息。
部署
前置条件
元数据服务器启动需要使用 Redis 作为缓存服务器(在 Seafile 13.0 中应为默认缓存服务器)。
因此,必须为 Seafile 部署 Redis,并在部署元数据服务器之前,修改 seafile.conf seahub_settings.py seafevents.conf 来启用 Redis。
注意
请确保 Seafile 服务已成功部署 后,再部署元数据服务器。
因为元数据服务器需要读取 Seafile 的配置文件 seafile.conf 。如果在 Seafile 部署之前或同时部署元数据服务器,可能会因为检测不到 seafile.conf 而启动失败。
下载docker-compose文件
如果与 Seafile 同一台机器部署
必须将该文件下载到与 seafile-server.yml 相同的目录下。
            
                
                
wget https://manual.seafile.com/13.0/repo/docker/md-server.yml
如果需要独立部署
在独立部署的情况下(通常用于集群部署),元数据服务器仅支持使用 S3 等后端存储的 Seafile。
            
                
                
wget https://manual.seafile.com/13.0/repo/docker/metadata-server/md-server.yml
wget -O .env https://manual.seafile.com/13.0/repo/docker/metadata-server/env
修改.env文件
元数据服务器读取所有环境变量配置,不需要单独的配置文件。
在非独立部署的情况下,你无需在 .env 文件中添加额外变量即可启动元数据服务器(它会读取与 Seafile 相同的配置,包括 JWT_PRIVATE_KEY ,并在本地保存资料库元数据,默认路径为 /opt/seafile-data/seafile/md-data )。
但需要在 .env 中修改 COMPOSE_FILE 列表,加入 md-server.yml
            
                
                
COMPOSE_FILE='...,md-server.yml'
为方便部署,提供两种配置示例:
1.seafile 数据存储在本地:
这种情况下无需在 .env 文件中添加额外配置。可以指定镜像版本、本地缓存大小等。
            
                
                
MD_IMAGE=seafileltd/seafile-md-server:13.0-latest
MD_MAX_CACHE_SIZE=1GB
2.seafile 数据存储在后端存储(如S3)
需要先在 S3 上创建一个存储桶用于保存元数据,然后在 .env 文件中添加或修改如下内容:
            
                
                
MD_IMAGE=seafileltd/seafile-md-server:13.0-latest
MD_STORAGE_TYPE=s3
S3_MD_BUCKET=...
S3_KEY_ID=<your-key-id>
S3_SECRET_KEY=<your-secret-key>
S3_USE_V4_SIGNATURE=true
S3_PATH_STYLE_REQUEST=false
S3_AWS_REGION=us-east-1
S3_HOST=
S3_USE_HTTPS=true
S3_SSE_C_KEY=
确保Seafile数据可访问
为了正确获取元数据信息,必须保证元数据服务器能正确访问 Seafile 的数据。
  • 同机部署 :元数据服务器会自动获取 Seafile 服务器的配置,无需额外处理。
  • 独立部署(集群环境常见) :需确保元数据服务器 .env 中与存储相关的配置(如 SEAF_SERVER_STORAGE_TYPE )与 Seafile .env 一致,并能访问 Seafile 配置文件(如 seafile.conf ),以保证正确读取数据。(建议保持与Seafile服务一致的配置文件目录结构)
元数据服务器环境变量列表
变量
描述
是否必须
JWT_PRIVATE_KEY
用于连接 Seafile 服务器的 JWT 密钥
必须
MD_MAX_CACHE_SIZE
最大缓存大小,默认 1GB
可选
REDIS_HOST
Redis 主机,默认 redis
可选
REDIS_PORT
Redis 端口,默认 6379
可选
REDIS_PASSWORD
Redis 密码
可选
MD_STORAGE_TYPE
元数据存储位置,可选 disk (本地)或 s3 ,默认 disk
可选
S3_MD_BUCKET
元数据存储桶(使用 S3 时必填)
必须(当 MD_STORAGE_TYPE=s3 时)
MD_CHECK_UPDATE_INTERVAL
元数据更新间隔,默认 30m
可选
MD_FILE_COUNT_LIMIT
资料库中元数据功能所允许的最大文件数量。如果某个资料库中的文件数超过此值,则不会为该资料库启用元数据管理功能。对于已启用元数据管理的资料库,如果其元数据记录数已达到此值,但仍有部分文件未被记录到元数据服务器中,那么这些未记录的文件将不会再进行元数据管理。
可选
此外,使用 S3 时还需配置 S3_ 前缀的变量(同时 Seafile 的存储桶配置也需要)。
修改 seahub_settings.py
要在 Seafile 中启用元数据服务器,请在 seahub_settings.py 中加入以下配置:
如果与 Seafile 同一台机器部署:
            
                
                
ENABLE_METADATA_MANAGEMENT = True
METADATA_SERVER_URL = 'http://seafile-md-server:8084'
如果需要独立部署
            
                
                
ENABLE_METADATA_MANAGEMENT = True
METADATA_SERVER_URL = 'http://<your metadata-server host>:8084'
启动服务
使用以下命令启动元数据服务器(Seafile 服务也需要重启):
            
                
                
docker compose down
docker compose up -d
启用并验证元数据服务器
1.检查容器日志
查看 seafile-md-server 容器日志:
            
                
                
docker logs -f seafile-md-server
若运行正常,会输出:
            
                
                
[md-server] [2025-03-27 02:30:55] [INFO] Created data links
[md-server] [2025-03-27 02:30:55] [INFO] Database initialization completed
[md-server] [2025-03-27 02:30:55] [INFO] Starting Metadata server
2. 检查 Seafile 日志
seafevents.log 中可以看到类似信息,且 seahub.log 中没有报错:
            
                
                
[2025-02-23 06:08:05] [INFO] seafevents.repo_metadata.index_worker:134 refresh_lock refresh_thread Starting refresh locks
[2025-02-23 06:08:05] [INFO] seafevents.repo_metadata.slow_task_handler:61 worker_handler slow_task_handler_thread_0 starting update metadata work
...
3.前端验证
进入 Seafile 网页端,在 设置 → 启用扩展属性
即可在 视图 页签中查看资料库的元数据。
目录结构
当 Seafile 与元数据服务器部署在同一台机器时,它们共享持久化目录(如 /opt/seafile-data )。
元数据服务器使用以下目录或文件:
  • /opt/seafile-data/seafile/md-data :元数据服务器数据与缓存
  • /opt/seafile-data/seafile/logs/seaf-md-server :元数据服务器日志目录,包含运行日志和访问日志