共计 1797 个字符,预计需要花费 5 分钟才能阅读完成。
背景
迁移服务器之后正常迁移 nextcloud 服务,因为是部署在 docker 中,所以升级也比较方便,但是因为 docker-compose.yml 中是镜像 latest,所以迁移后自动更新了版本。导致无法启动。
具体表现
发现一直处于维护中,然后提示升级失败
查看迁移前环境镜像的版本 docker image inspect nextcloud:latest|grep -i version
,然后更改 yml 配置文件中镜像的版本为看到的版本。
发现部分文件已经升级: 相关内容
恢复方法
因为已经提前做了备份,所以直接删除当前持久化目录,从备份中恢复,然后更改 docker-compose 的 yml 文件,更改镜像版本为上面查询的版本,最终启动正常,恢复服务。
正常跨版本
因为看到新版本也更新了很多特性,所以这里也做了一些版本升级,正常启动如下
想要升级到新版本,可以 docker-compose 设置为当前版本正常启动后登录,进入管理设置 - 概览,会看到提示可更新的版本
也可以查看官方升级路线, 这里是官方版本路线:https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule
然后更改 docker-compose 的 yml 配置文件版本号为可更新的版本,再重新启动 docker-compose up -d
后面重复以下步骤
-
升级启动后首先进入概览页面,
- 如果需要手动点击升级,则点击一下。
-
查看告警,按照提示进入 docker 使用相关命令修复。然后刷新管理页面 UI,看到无相关告警后。进行下一步。
备注:命令执行可能需要切换用户 --user www-data,具体命令搜索 nextcloud 修复索引,搜索到相关命令。
- 明确且不关注的告警,如 url 不安全,可根据需求判断是否处理。
- 更改 yml 配置文件的版本为当前概览页面提示可更新的版本,然后重启
docker-compose up -d
最终本次升级到 24.0.8,(此刻最新稳定包为 25.0.2)服务一切正常,本次升级结束。
问题
joplin 使用 webdav 连接,多个客户端有一个客户端无法连接.
报错信息
File with name joplin/locks/1_1_9d60348fb0ae4f0f8b3a2ce749390c3e.json could not be located
解决方法
当前 nextcloud 版本为 24.0.8,还可以升级到最新版本 25.0.2
尝试多种方法无法解决后,尝试升级,升级后正常解决。
最近删除文件夹打不开
表现:
最近删除文件打不开、卡死。
后台日志
管理页面日志如下:
Allowed memory size of 536870912 bytes exhausted (tried to allocate 20480 bytes) at /var/www/html/3rdparty/doctrine/dbal/src/Driver/PDO/Result.php#120
分析
尝试了很多方法增加 php 内存,但是没有解决问题,此时发现:历史删除文件存储目录很大。
推测是文件太多,这里手动全部删除。
命令
sudo nextcloud.occ trashbin:cleanup -all-users
发现已经可以正常访问 最近删除文件夹了。
优化配置
为了避免长期不维护之后,最近删除文件目录再次打不开。配置一下 nextcloud 的回收站设置。
最终根据自己的情况,我增加了下面的配置
'trashbin_retention_obligation' => 'auto,90',
'versions_retention_obligation' => 'auto,90',
配置文件 docker 目录下 /var/www/html/config/config.php
对应宿主机目录 xxx/docker-nextcloud_nextcloud/_data/config/config.php
在配置文件 $CONFIG = array () 之间插入即可。
文章首发于:https://nebofeng.com/2022/12/17/nextcloud-docker%e8%bf%81%e7%a7%bb-%e8%b7%a8%e7%89%88%e6%9c%ac%e5%8d%87%e7%ba%a7/