docker-compose 自建 nextcloud 的升级教程

nextcloud 是一个多功能的自建云开源程序,功能强大,正常情况下维护方便,然而多年未更新的 nextcloud 还是有些麻烦。最近由于升级服务器的原因而痛下决心还是要升级一下程序,避免积累的漏洞带来安全隐患,同时提升功能。我这一次从 nextcloud 20.0.8 升级到 nextcloud 27.1.1。本文简单记录升级过程作为自己的升级教程。

背景介绍:

这是一个社区维护的 nextcloud, 使用的 CaddyServer + docker-compose,运行已经有5年之久,中间多年未有更新。

总体思路:

必须循着官方的升级路径去逐步升级,而不能直接从一个很旧的版本升级到最新版本,很像 gitlab 的升级,需要依照特定版本 比如我这次 20.0.8->20.0.14->21.0.9->22.0.12->23.0.12->24.0.12->25.0.12->26.0.7->27.1.1 等。在逐级升级过程中,每一步循环下列操作即可。

升级教程:

1、先在正在运行的 nextcloud 的后台中查看 /settings/admin/overview 查看当前版本和下一个升级的版本

2、先在 docker-compose.yml 中将 nextcloud docker 版本修改为 24.0.12

3、运行 docker-compose down 停止当前运行后,再运行 docker-compose up –build -d 获取新的镜像

4、这时候如果前台 nextcloud 没有正常运行的话,查看 nextcloud/version.php 中有具体的小型号,是:24.0.12.1

5、修改 nextcloud/config/config.php 中修改 version 为 24.0.12.1,再重新执行3,重启 docker-compose 这时候一个版本升级就完成了。

补充说明1:

如果遇到其他一些意外情况的解决办法, 比如进入后台发现有警告信息:settings/admin/overview -> security & setup warnings,提示需要运行”occ db:add-missing-indices”,这是因为部分升级的版本数据库等增加或调整了新的表或者字段,需要做一些更新

按照提示在命令行执行 docker exec -u 33 -it nextcloud-app-1 php occ db:add-missing-indices 请将 nextcloud-app-1 替换成你自己的容器名

执行完之后,再去后台看警告信息就已经消失了

补充说明2:

新版本的 nextcloud 可以自动处理好 version.php 和 config/config.php 中 version 版本不一致的问题,就是上述的步骤4和步骤5提到的问题,很有可能不需要手动处理。

补充说明3:

在升级完成之后,出现维护模式的提示,如下图。则去 config/config.php 中找到 maintainance mode 设为 off, 再打开 nextcloud 首页,如果很快又自动进入维护模式则说明升级失败,需要重新升级。

备份说明:

备份数据非常重要,先停止 docker 运行,再打包备份,在 nextcloud 的 docker-compose 和其文件目录中执行下列命令

停止运行:docker-compose down

打包文件:tar czvfp nextcloud.tgz ./*

重新运行:docker-compose up -d

发表回复