从Seafile 12.0升级到Seafile 13.0

7 月被平台集中处理了几篇旧文,进入 8 月后感觉似乎被限流了,阅读量一路走低。老苏打算等手上存稿发完后,就不再按时更新了。未来的更新将转为不定期形式,随缘相见。感谢大家的理解与支持!
前言
如果没有十分必要的理由,老苏不建议升级,如果执意不听劝,请先做好必要的备份;
如果你是按照老苏的 新一代文件管理平台Seafile 中的方法安装的 Seafile 12.0 ,现在想升级到 13.0 ,可以参考本文。升级的目的,是为了可以无痛的使用原来的数据。
但是如果你是新装 Seafile 13.0,建议你直接去看官方的文档,获得并体验新功能
升级
本次升级的一个核心的架构变化是 13.0 引入了 Redis 服务作为缓存和处理消息通知的后端,因此增加了与 Redis 相关的配置。
docker-compose.yml
13.0 的 docker-compose.yml 主要参考了官方的示例:https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
services:
db:
image:mariadb:10.11
container_name:seafile-mysql
environment:
-MYSQL_ROOT_PASSWORD=seafiledbpassword
-MYSQL_LOG_CONSOLE=true
-MARIADB_AUTO_UPGRADE=1
volumes:
-./data:/var/lib/mysql
memcached:
image:memcached:1.6.18
container_name:seafile-memcached
entrypoint:memcached-m256
redis:
image:redis
container_name:seafile-redis
restart:unless-stopped
command:
-/bin/sh
--c
-redis-server--requirepass"redispwd123"
environment:
-REDIS_PASSWORD=redispwd123
seafile:
image:seafileltd/seafile-mc:13.0-latest
container_name:seafile
ports:
-17080:80
-17088:8080
# - 17443:443 # If https is enabled, cancel the comment.
volumes:
-./shared:/shared
environment:
-SEAFILE_MYSQL_DB_HOST=db
-SEAFILE_MYSQL_DB_PORT=3306
-SEAFILE_MYSQL_DB_USER=root
-SEAFILE_MYSQL_DB_PASSWORD=seafiledbpassword
-INIT_SEAFILE_MYSQL_ROOT_PASSWORD=seafiledbpassword
-SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
-SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
-SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
-TIME_ZONE=Asia/Shanghai
-INIT_SEAFILE_ADMIN_EMAILwbsu2003@gmail.com
-INIT_SEAFILE_ADMIN_PASSWORD=laosu@123456
-SEAFILE_SERVER_HOSTNAME=192.168.0.197
-SEAFILE_SERVER_PROTOCOL=http
-SITE_ROOT=/
-NON_ROOT=false
-JWT_PRIVATE_KEY=cLP3RW5wu2G2yJCzsWFcM2DSxaMxx7Gc
-SEAFILE_LOG_TO_STDOUT=false
-ENABLE_SEADOC=true
-SEADOC_SERVER_URL=http://192.168.0.197:17080/sdoc-server
-SEADOC_VOLUME=/opt/seadoc-data
-SEADOC_IMAGE=seafileltd/sdoc-server:2.0-latest
-CACHE_PROVIDER=redis
-REDIS_HOST=redis
-REDIS_PORT=6379
-REDIS_PASSWORD=redispwd123
-MEMCACHED_HOST=memcached
-MEMCACHED_PORT=11211
-ENABLE_NOTIFICATION_SERVER=false
-NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:13.0-latest
-INNER_NOTIFICATION_SERVER_URL=http://notification-server:8083
-NOTIFICATION_SERVER_URL=http://192.168.0.197:17080/notification
-ENABLE_SEAFILE_AI=false
-SEAFILE_AI_SERVER_URL=http://seafile-ai:8888
-SEAFILE_AI_SECRET_KEY=cLP3RW5wu2G2yJCzsWFcM2DSxaMxx7Gc
-MD_FILE_COUNT_LIMIT=100000
depends_on:
-db
-redis
-memcached环境变量变更对比
下表总结了从 12.0 到 13.0 的主要环境变量变化、移除或替换情况。
DB_HOST SEAFILE_MYSQL_DB_HOST 数据库主机地址。13.0 的变量名更新,更具描述性。
DB_ROOT_PASSWD SEAFILE_MYSQL_DB_PASSWORD, INIT_SEAFILE_MYSQL_ROOT_PASSWORD 数据库 root 用户密码。13.0 中拆分为更具体的变量,一个用于常规连接,一个用于服务初始化。
TIME_ZONE TIME_ZONE 时区设置。此变量保持不变。
SEAFILE_ADMIN_EMAIL INIT_SEAFILE_ADMIN_EMAIL 管理员邮箱。13.0 中添加了 INIT_ 前缀,明确表示此变量仅在首次初始化时使用。
SEAFILE_ADMIN_PASSWORD INIT_SEAFILE_ADMIN_PASSWORD 管理员密码。与管理员邮箱类似,13.0 中添加了 INIT_ 前缀。
SEAFILE_SERVER_HOSTNAME SEAFILE_SERVER_HOSTNAME Seafile 服务器的主机名或 IP 地址。此变量保持不变。
SERVICE_URL SEAFILE_SERVER_PROTOCOL, SITE_ROOT 完整的服务访问 URL。13.0 中此设置被拆分,由 SEAFILE_SERVER_PROTOCOL (协议) 和 SITE_ROOT (站点根路径) 等变量组合,与 SEAFILE_SERVER_HOSTNAME 和端口共同构成完整 URL,配置更灵活。
FILE_SERVER_ROOT 已移除 文件服务器的访问 URL。在 v13.0 中,此 URL 由系统根据 SEAFILE_SERVER_PROTOCOL 和 SEAFILE_SERVER_HOSTNAME 等设置自动生成。
SEAFILE_SERVER_LETSENCRYPT 已移除 用于自动配置 Let's Encrypt SSL 证书。13.0 中已移除,HTTPS 配置方式已变更。
FORCE_HTTPS_IN_CONF 已移除 强制在配置文件中生成
HTTPS 相关的 URL。13.0 中已移除。
JWT_PRIVATE_KEY JWT_PRIVATE_KEY 用于 OnlyOffice/Collabora Online 集成的 JWT 密钥。此变量保持不变。
13.0 新增的环境变量
13.0 引入了大量新的环境变量,以支持新功能(如 SeaDoc、AI)并提供更精细化的配置。
数据库配置
SEAFILE_MYSQL_DB_PORT 数据库端口,默认为 3306。
SEAFILE_MYSQL_DB_USER 连接数据库的用户名,必须设为 root,否则数据库连接会失败。
SEAFILE_MYSQL_DB_CCNET_DB_NAME Ccnet 数据库的名称。
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME Seafile 数据库的名称。
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME Seahub 数据库的名称。
服务及URL配置
SEAFILE_SERVER_PROTOCOL 服务器协议,http 或 https。
SITE_ROOT 部署的子目录,例如 /seafile/。如果部署在根目录,则为 /。
NON_ROOT 是否以非 root 用户身份运行容器内的服务。
SEAFILE_LOG_TO_STDOUT 是否将日志输出到标准输出(stdout)。
缓存配置 (Redis & Memcached)
CACHE_PROVIDER 指定缓存后端,redis 或 memcached。13.0 推荐使用 redis。
REDIS_HOST Redis 服务的主机名。
REDIS_PORT Redis 服务的端口。
REDIS_PASSWORD Redis 服务的密码。
MEMCACHED_HOST Memcached 服务的主机名。
MEMCACHED_PORT Memcached 服务的端口。
SeaDoc (新功能)
ENABLE_SEADOC 是否启用 SeaDoc (在线文档) 功能。
SEADOC_SERVER_URL SeaDoc 服务的外部访问 URL。
SEADOC_VOLUME 存储 SeaDoc 数据的挂载卷路径。
SEADOC_IMAGE SeaDoc 服务使用的 Docker 镜像。
通知服务
ENABLE_NOTIFICATION_SERVER 是否启用实时通知服务。
INNER_NOTIFICATION_SERVER_URL 内部通知服务的 URL。
NOTIFICATION_SERVER_URL 外部可访问的通知服务 URL。
NOTIFICATION_SERVER_IMAGE 通知服务使用的 Docker 镜像。
AI 服务 (新功能)
ENABLE_SEAFILE_AI 是否启用 AI 功能。
SEAFILE_AI_SERVER_URL AI 服务的主机 URL。
SEAFILE_AI_SECRET_KEY 用于 AI 服务的密钥。
其他限制
MD_FILE_COUNT_LIMIT 存储库中最大文件数限制。
升级步骤
依次按下面的步骤执行
# 1、进入 seafile 目录
cd /volume1/docker/seafile
# 2、有条件的话,建议对 data 和 shared 做备份
# 3、停止并删除 12.0 相关的容器
docker-compose down
# 4、备份 12.0 的 docker-compose.yml 文件
mv docker-compose.yml docker-compose.12.bak.yml
# 5、将 13.0 的 docker-compose.yml 文放入当前目录
# 6、一键启动
docker-compose up -d 
运行
在浏览器中输入 http://群晖IP:17080 就能看到登录界面

登录后查看版本,已经是 13.0.8 了

说明
由于时间的关系,未做深入测试,可能会存在错误,需要自己慢慢去摸索,尤其是新功能
遇到任何问题,可以去官方论坛咨询:https://bbs.seafile.com
参考文档
-
Upgrade notes for 13.0.x - Seafile Admin Manual 地址:https://manual.seafile.com/13.0/upgrade/upgrade_notes_for_13.0.x/
-
Upgrade Seafile Docker - Seafile Admin Manual 地址:https://manual.seafile.com/13.0/upgrade/upgrade_docker/
-
Environment variables - Seafile Admin Manual 地址:https://manual.seafile.com/13.0/config/env/
-
Seafile - 开源的企业私有网盘 私有云存储软件 企业维基 知识管理 地址:https://www.seafile.com/features/
@所有人:写文不易,如果你都看到了这里,请点个赞和在看,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。