从社区版迁移至专业版(Docker)

本文介绍如何将通过 Docker Compose 部署的 Seafile 社区版(CE)迁移到专业版(Pro),适用于 Seafile 14.0 和 13.0 的单节点部署。迁移时保留原有资料库、数据库和配置数据,主要更换专业版 Docker 配置与镜像,并启用专业版搜索服务。
迁移前请将社区版升级到与目标专业版相同的主版本: 迁移到专业版 14.0 时,应先使用社区版 14.0;迁移到专业版 13.0 时,应先使用社区版 13.0。请先按相应的升级流程完成版本升级并验证服务正常,再进行版本类型切换。不要将跨大版本升级与社区版转专业版合并为一步操作。
下文以 Docker Compose 配置目录 /opt/seafile 、Seafile 数据目录 /opt/seafile-data 为例。如现有环境使用其他目录,应以当前实际路径为准; 迁移期间不得将数据目录指向新的空目录 。
一、迁移前准备
1. 确认版本、授权和现有配置
迁移前请确认:
  • 当前社区版的主版本已与目标专业版一致,且现有服务运行正常。
  • 已取得有效的专业版授权文件 seafile-license.txt 。没有有效授权文件时,专业版会以最多支持 3 名用户的试用模式运行。
  • 已记录原有 .env 、 seafile-server.yml 及其他正在使用的 Compose 文件;确认 COMPOSE_FILE 中启用的组件。
  • 已记录数据持久化路径、MySQL/MariaDB 的连接信息和数据库名称,以及是否使用外部数据库、S3 或其他存储后端。
  • 已记录域名、HTTPS、反向代理、Redis、SeaDoc、通知服务、非 root 运行模式及其他自定义配置。
2. 备份配置、数据库和资料库数据
建议安排维护窗口,暂停用户写入后完成一致性备份。至少备份三个 Seafile 数据库( ccnet_db 、 seafile_db 、 seahub_db ,以实际名称为准)、Seafile 持久化数据及当前 Docker 配置。使用外部 MySQL、S3 或其他存储时,还应备份相应的配置与访问凭据,并确认恢复方案。
有关备份方法,请参阅 备份与恢复 。 不要把仅存放在原服务器同一磁盘上的副本当作唯一备份 。
可先单独保存当前 Compose 配置(请确认目标目录的访问权限):
            
                
                
cd /opt/seafile
mkdir -p backup-before-pro
chmod 700 backup-before-pro
cp -a .env *.yml backup-before-pro/
上述命令 只备份 Compose 配置 ,不能替代数据库及资料库数据备份。备份文件可能包含密码,请妥善保管。
3. 停止社区版
在原 Docker Compose 配置目录执行:
            
                
                
cd /opt/seafile
docker compose down
该命令停止并移除当前项目的容器,不会自动删除绑定挂载到宿主机的数据目录。 不要添加 -v ,也不要删除 /opt/seafile-data 、数据库持久化目录或其他现有数据目录。
二、准备专业版 Compose 文件
为了避免下载时覆盖旧配置,请先将专业版模板下载到单独目录,检查并修改后再替换当前文件。
Seafile 14.0
            
                
                
mkdir -p /opt/seafile/pro-migration-template
cd /opt/seafile/pro-migration-template
wget -O .env https://manual.seafile.com/14.0/repo/docker/pro/env
wget https://manual.seafile.com/14.0/repo/docker/pro/seafile-server.yml
wget https://manual.seafile.com/14.0/repo/docker/pro/seasearch.yml
Seafile 14.0 专业版 默认使用 SeaSearch ,因此需要 seasearch.yml 。通常可以继续使用原社区版中同版本的 caddy.yml 、 seadoc.yml 等组件文件;如果当前目录缺少新 .env 的 COMPOSE_FILE 所引用的文件,应补齐对应的 14.0 版本文件,例如:
            
                
                
cd /opt/seafile
wget https://manual.seafile.com/14.0/repo/docker/caddy.yml
wget https://manual.seafile.com/14.0/repo/docker/seadoc.yml
仅在对应文件缺失且确实需要该组件时执行上述下载命令;不要覆盖已有的自定义反向代理或 SeaDoc 配置。
Seafile 13.0
仍使用 13.0 的部署环境时,下载与之匹配的专业版模板:
            
                
                
mkdir -p /opt/seafile/pro-migration-template
cd /opt/seafile/pro-migration-template
wget -O .env https://manual.seafile.com/13.0/repo/docker/pro/env
wget https://manual.seafile.com/13.0/repo/docker/pro/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/pro/elasticsearch.yml
Seafile 13.0 的标准专业版部署使用 Elasticsearch,需在 .env 的 COMPOSE_FILE 中包含 elasticsearch.yml ,并确保 Elasticsearch 的数据目录可写。若已单独规划使用 SeaSearch,可按照 SeaSearch 配置说明 核对所需服务和搜索配置;不要同时启用两套相互冲突的搜索设置。
三、安装专业版授权文件
将授权文件 seafile-license.txt 放到原 Seafile 数据持久化目录中的 seafile 子目录。例如:
            
                
                
install -m 0644 /path/to/seafile-license.txt /opt/seafile-data/seafile/seafile-license.txt
将 /path/to/seafile-license.txt 替换为实际文件路径。如果现有 SEAFILE_VOLUME 并非 /opt/seafile-data ,应将授权文件放在 当前使用的 SEAFILE_VOLUME 对应目录下的 seafile/ ,不要因为切换到专业版而更改数据卷路径。
四、修改专业版 .env
编辑刚下载的模板:
            
                
                
nano /opt/seafile/pro-migration-template/.env
根据旧 .env 逐项合并现有配置。 不要直接用模板的默认密码、默认数据路径或默认域名覆盖已运行环境的值。 特别检查下表:
配置项
说明
SEAFILE_IMAGE
14.0: seafileltd/seafile-pro-mc:14.0-latest ;13.0: seafileltd/seafile-pro-mc:13.0-latest 。镜像版本应与当前已升级的社区版主版本一致。
BASIC_STORAGE_PATH 、 SEAFILE_VOLUME 、 SEAFILE_MYSQL_VOLUME
沿用原来的存储路径,避免挂载到新的空目录。使用外部数据库时,按现有配置处理。
SEAFILE_MYSQL_DB_HOST 、 SEAFILE_MYSQL_DB_PORT
保留原 MySQL/MariaDB 地址和端口。使用 Docker 内置数据库时,通常为 db:3306 。
SEAFILE_MYSQL_DB_USER 、 SEAFILE_MYSQL_DB_PASSWORD
保留现有数据库账户和密码。
SEAFILE_MYSQL_DB_CCNET_DB_NAME 、 SEAFILE_MYSQL_DB_SEAFILE_DB_NAME 、 SEAFILE_MYSQL_DB_SEAHUB_DB_NAME
保留原有三个数据库名称。
JWT_PRIVATE_KEY
保留原有 JWT 私钥,不要重新随机生成。
SEAFILE_SERVER_HOSTNAME 、 SEAFILE_SERVER_PROTOCOL
保留原服务的访问域名及 HTTP/HTTPS 协议。
CACHE_PROVIDER 、 REDIS_HOST 、 REDIS_PORT 、 REDIS_PASSWORD
按原有 Redis 缓存配置填写,避免意外切换缓存服务。
SEAF_SERVER_STORAGE_TYPE 、相关 S3_* 变量
如使用 S3 或其他存储后端,应保留现有存储配置,并核对专业版模板中的相应字段。
COMPOSE_FILE 、 COMPOSE_PATH_SEPARATOR
确保包含当前实际使用的组件文件,并与本次启用的搜索服务一致。
原社区版的 INIT_SEAFILE_ADMIN_EMAIL 、 INIT_SEAFILE_ADMIN_PASSWORD 、 INIT_SEAFILE_MYSQL_ROOT_PASSWORD 等首次初始化变量,通常不需要再次初始化已经存在的 Seafile 管理员或数据库;但如果新部署的 SeaSearch 需要引用 Seafile 初始管理员凭据, 必须先为 SeaSearch 提供可用的初始化用户名和密码 ,见下节。
如使用外部 MySQL/MariaDB,专业版模板中关于 db 服务及服务依赖的修改应与原部署保持一致,避免迁移时启动一套新的空数据库。详细配置请参阅 使用现有 MySQL 服务器部署 。
Seafile 14.0:配置 SeaSearch
Seafile 14.0 专业版的默认搜索引擎为 SeaSearch。请在新的 .env 中确认以下配置:
            
                
                
SEAFILE_IMAGE=seafileltd/seafile-pro-mc:14.0-latest
ENABLE_SEARCH=true
SEARCH_ENGINE=seasearch
ENABLE_FULL_TEXT_SEARCH=true
SEASEARCH_URL=http://seasearch:4080
SS_DATA_PATH=/opt/seasearch-data
首次启用 SeaSearch 时,建议明确指定初始化账户(请设置实际的安全密码):
            
                
                
INIT_SS_ADMIN_USER=search-admin@example.com
INIT_SS_ADMIN_PASSWORD=<SeaSearch 初始化密码>
使用实际的用户名和密码生成 API 授权令牌:
            
                
                
printf '%s' 'search-admin@example.com:your-password' | base64 | tr -d '\n'
将输出填入 .env :
            
                
                
SEASEARCH_TOKEN=<上一步生成的令牌>
请确保 SEASEARCH_TOKEN 与 INIT_SS_ADMIN_USER 、 INIT_SS_ADMIN_PASSWORD 对应的账户凭据一致。Base64 是编码而非加密,应保护好令牌和初始化密码。完成 SeaSearch 首次初始化后,可以移除仅用于首次初始化的明文凭据,但 不要删除仍在使用的 SEASEARCH_TOKEN 。
检查 SeaSearch 的存储方式: 14.0 专业版 .env 模板中的 SS_STORAGE_TYPE 默认继承 SEAF_SERVER_STORAGE_TYPE 。如果原 Seafile 将文件存储在 S3,且希望 SeaSearch 索引也使用 S3,请设置 SS_STORAGE_TYPE=s3 、独立的 S3_SS_BUCKET ,并检查共享的 S3 访问密钥和连接配置。若希望索引保存在本地,可以显式设置 SS_STORAGE_TYPE=disk ,并确保 SS_DATA_PATH 指向可写且持久化的目录。如果 Seafile 使用多个存储后端( SEAF_SERVER_STORAGE_TYPE=multiple ), 不能直接将 multiple 用作 SeaSearch 的存储类型 ,应根据实际情况把 SS_STORAGE_TYPE 设置为 disk 或 s3 。详情参阅 使用 S3 存储后端 。
COMPOSE_FILE 必须包含 seasearch.yml ,并保留其他实际使用的组件。对于包含 Caddy 和 SeaDoc 的标准部署,可参考:
            
                
                
COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,seasearch.yml'
COMPOSE_PATH_SEPARATOR=','
如原环境未启用 SeaDoc、使用自定义反向代理或还包含其他组件,应根据实际情况调整,不能直接照抄上述列表。 Seafile 14.0 的默认 SeaSearch 配置无需添加旧版 Elasticsearch 的 [INDEX FILES] 示例。 更多信息请参阅 使用 SeaSearch 作为搜索引擎 。
Seafile 13.0:配置 Elasticsearch
Seafile 13.0 的标准迁移流程使用 Elasticsearch。确认新的 .env 中包含:
            
                
                
SEAFILE_IMAGE=seafileltd/seafile-pro-mc:13.0-latest
SEAFILE_ELASTICSEARCH_VOLUME=/opt/seafile-elasticsearch/data
COMPOSE_FILE 中应包含 elasticsearch.yml 。标准部署可参考以下列表,并根据现有组件修改:
            
                
                
COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,elasticsearch.yml'
COMPOSE_PATH_SEPARATOR=','
在宿主机上编辑 Seafile 数据目录中的 seafevents.conf (如 /opt/seafile-data/seafile/conf/seafevents.conf ),添加或调整以下配置;如果已有 [INDEX FILES] 节,请修改该节,不要重复添加同名节:
            
                
                
[INDEX FILES]
es_host = elasticsearch
es_port = 9200
enabled = true
interval = 10m
确保 Elasticsearch 容器有足够的内存和其数据目录的写入权限。若原环境已使用 SeaSearch 并希望继续使用,应按实际搜索引擎配置进行迁移,而不是直接切换为 Elasticsearch。
五、替换 Compose 配置并启动专业版
1. 替换配置文件
确认新 .env 已合并原有持久化路径、数据库连接和所有必要组件配置后,在原 Docker Compose 目录中执行:
            
                
                
cd /opt/seafile
cp pro-migration-template/.env .env
cp pro-migration-template/seafile-server.yml seafile-server.yml
Seafile 14.0 还需复制 SeaSearch 文件:
            
                
                
cp /opt/seafile/pro-migration-template/seasearch.yml /opt/seafile/seasearch.yml
Seafile 13.0 的标准 Elasticsearch 部署则复制:
            
                
                
cp /opt/seafile/pro-migration-template/elasticsearch.yml /opt/seafile/elasticsearch.yml
保留项目原有的其他 Compose 文件,并检查 .env 中的 COMPOSE_FILE 是否只引用实际存在、需要使用的文件。不同主版本的 Compose 模板不要混用。
2. 检查并启动服务
            
                
                
cd /opt/seafile
docker compose config --quiet
docker compose up -d
docker compose ps
如果 docker compose config --quiet 报错,先根据提示修正缺失文件、环境变量或服务依赖,不要跳过检查直接启动。
3. 查看日志
查看 Seafile 容器日志:
            
                
                
docker logs -f seafile
Seafile 14.0 使用 SeaSearch 时,还可以查看:
            
                
                
docker logs -f seafile-seasearch
Seafile 13.0 使用 Elasticsearch 时,可以查看:
            
                
                
docker logs -f seafile-elasticsearch
启动后使用原有域名登录 Seafile,检查管理员和普通用户账户、资料库和文件访问、上传下载、分享链接及搜索功能。首次生成专业版搜索索引可能需要一定时间;搜索结果尚未完整时,请先检查索引服务日志。
六、迁移完成后的检查
  • 确认专业版授权已生效,且没有意外进入最多支持 3 名用户的试用模式。
  • 确认原有三个数据库、资料库数据及持久化路径均被正确使用,资料库内容没有丢失。
  • 确认 HTTPS、反向代理、缓存、SeaDoc、通知服务及其他启用的扩展组件工作正常。
  • 确认搜索服务可用,必要时等待首次索引构建完成。
  • 保留迁移前的数据库、数据文件和 Compose 配置备份,至少在完成业务验证前不要清理。
回退提醒: 如果专业版首次启动过程中修改了数据库结构,不能保证仅换回社区版镜像和 Compose 文件就能安全回退。需要回退时,应依据迁移前备份恢复相匹配版本的数据库和数据目录,再启用原社区版配置。不要在未确认数据兼容性的情况下直接降级运行。