NextCloud搭配OnlyOffice执行docker-compose down后无法打开历史保存文档
1. 清理OnlyOffice服务端缓存
首先执行命令安全清理OnlyOffice未同步的缓存,强制将缓存数据同步回NextCloud:docker exec onlyoffice documentserver-prepare4shutdown.sh
执行完成后重启OnlyOffice容器:docker restart onlyoffice
重启完成后测试旧文档是否可以正常打开。
2. 重置NextCloud中的OnlyOffice文档关联标识
如果第一步无效,基本可以判定是旧文档在NextCloud数据库中存储的OnlyOffice文件哈希标识,和重启后的OnlyOffice服务缓存不匹配导致的问题,新文档是重启后生成所以不存在匹配问题,执行以下操作重置关联:
进入NextCloud容器:docker exec -u www-data nextcloud bash
执行官方提供的缓存重置命令:php occ onlyoffice:documents:reset
执行完成后退出容器,再次测试打开旧文档即可。
3. 固定JWT密钥避免后续复现
你当前的docker-compose配置未固定OnlyOffice的JWT密钥,每次容器重建或者镜像更新时都会自动生成新的密钥,很容易导致旧文档签名失效,建议修改docker-compose.yml的onlyoffice服务配置,添加固定密钥参数:
onlyoffice: container_name: onlyoffice image: onlyoffice/documentserver:latest stdin_open: true tty: true restart: always networks: - cloud_network expose: - "80" environment: - JWT_SECRET=自行设置的复杂字符串 - JWT_ENABLED=true volumes: #- /mnt/apps/onlyoffice/data:/var/www/onlyoffice/Data - office_data_volume:/var/www/onlyoffice/Data #- onlyoffice_log_volume:/var/log/onlyoffice - office_db_volume:/var/lib/postgresql
修改完成后同步更新NextCloud后台OnlyOffice连接器设置中的JWT密钥,保持两边一致即可,后续再重启容器不会再出现同类问题。
4. 版本回退(可选)
如果你执行docker-compose up时自动拉取了最新版的OnlyOffice镜像,也可能是版本兼容性问题,可将镜像标签从latest改为你之前正常使用的历史版本号,重新拉起容器即可。
内容的提问来源于stack exchange,提问作者zoid

