本文介绍如何将通过 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 提供可用的初始化用户名和密码
,见下节。
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 文件就能安全回退。需要回退时,应依据迁移前备份恢复相匹配版本的数据库和数据目录,再启用原社区版配置。不要在未确认数据兼容性的情况下直接降级运行。