从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.0docker-compose.yml 主要参考了官方的示例:https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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 -m 256

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.013.0 的主要环境变量变化、移除或替换情况。

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 完整的服务访问 URL13.0 中此设置被拆分,由 SEAFILE_SERVER_PROTOCOL (协议) 和 SITE_ROOT (站点根路径) 等变量组合,与 SEAFILE_SERVER_HOSTNAME 和端口共同构成完整 URL,配置更灵活。
FILE_SERVER_ROOT 已移除 文件服务器的访问 URL。在 v13.0 中,此 URL 由系统根据 SEAFILE_SERVER_PROTOCOLSEAFILE_SERVER_HOSTNAME 等设置自动生成。
SEAFILE_SERVER_LETSENCRYPT 已移除 用于自动配置 Let's Encrypt SSL 证书。13.0 中已移除,HTTPS 配置方式已变更。
FORCE_HTTPS_IN_CONF 已移除 强制在配置文件中生成 HTTPS 相关的 URL13.0 中已移除。
JWT_PRIVATE_KEY JWT_PRIVATE_KEY 用于 OnlyOffice/Collabora Online 集成的 JWT 密钥。此变量保持不变。

13.0 新增的环境变量

13.0 引入了大量新的环境变量,以支持新功能(如 SeaDocAI)并提供更精细化的配置。

13.0 环境变量 说明
数据库配置
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 服务器协议,httphttps
SITE_ROOT 部署的子目录,例如 /seafile/。如果部署在根目录,则为 /
NON_ROOT 是否以非 root 用户身份运行容器内的服务。
SEAFILE_LOG_TO_STDOUT 是否将日志输出到标准输出(stdout)。
缓存配置 (Redis & Memcached)
CACHE_PROVIDER 指定缓存后端,redismemcached13.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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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/