报错1:登录时错误
Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[42501]: Insufficient privilege: 7 ERROR: permission denied for table oc_migrations
彻底清理并重新安装
最直接的办法是删掉旧的数据库数据卷,让 PostgreSQL 从完全空白的状态重新初始化。你之前用 SQLite 时也遇到过类似问题,本质都是“旧数据干扰了新安装”。
在服务器终端执行以下命令:
bash
-
停止并删除所有相关容器
docker compose down -
删除 PostgreSQL 的数据卷(这会清空数据库里的所有数据)
docker volume rm nc_postgres_data -
重新启动
docker compose up -d
等 PostgreSQL 容器状态变成 healthy 后,再刷新 Nextcloud 安装页面,重新填写管理员账号和数据库密码,点击安装。
报错2:应用onlyoffice,没有内容
点开“应用”一直转圈,最根本的原因是:你的 Nextcloud 服务器在国内,无法稳定连接到官方的应用商店服务器(apps.nextcloud.com)来拉取应用列表。你部署在腾讯云等国内机房的服务器,访问这个海外地址经常会被卡住,导致页面无限加载。
既然知道了原因,就可以直接解决。下面有两个办法,第一个成功率最高,也最适合你现在的环境。
方案一:配置国内应用商店镜像(最推荐)
这是国内用户解决这个问题的标准做法。你只需要修改一下 Nextcloud 的配置文件,让它从国内的镜像源获取应用列表。
- 编辑配置文件:在你运行 Nextcloud 的服务器终端,进入容器并编辑配置文件:
bash
docker exec -it nextcloud bash
nano /var/www/html/config/config.php
2.添加镜像配置:在 config.php 文件的末尾(); 之前),加入下面两行代码。这里推荐使用 v2 镜像,因为它同时加速了应用下载,避免后续安装时又卡住:
php
‘appstoreenabled’ => true,
‘appstoreurl’ => ‘https://www.orcy.net/ncapps/v2/‘,
报错3:无法保存文档。请检查连接设置或与管理员联系,单机确认按钮时,系统将提示您下载文档。
检查日志
docker logs onlyoffice –tail 100
核对两边实际生效的 JWT 密钥
docker exec -u www-data nextcloud php occ config:app:get onlyoffice jwt_secret
第二步:检查 ONLYOFFICE 容器环境变量
docker exec onlyoffice env | grep JWT
终极解决方案
第一步:修改 Nextcloud 配置文件
用宿主机的 nano 打开配置文件(假设你还在 /var/lib/docker/volumes/nc_data/_data/config/ 目录下):
bash
nano config.php
找到 );,在它前面加上:
php
‘overwriteprotocol’ => ‘https’,
‘overwrite.cli.url’ => ‘https://files.altairnexus.top‘,
保存退出后,重启 Nextcloud 容器:
bash
docker restart nextcloud
第二步:验证回调地址是否变更为 HTTPS
等几秒钟容器启动完毕,再次在 ONLYOFFICE 容器里执行刚才的 curl 命令:
bash
docker exec onlyoffice curl -I http://files.altairnexus.top/apps/onlyoffice/track
报错4:htmlview应用市场里没有
下载htmlview
方式一:直接从 GitLab 下载(推荐)
HtmlViewer 的官方仓库在 GitLab 上,直接下载它的源码归档包最稳妥。在服务器上执行:
bash
-
下载 GitLab 上的源码包(master 分支)
docker exec -it nextcloud curl -L -o /tmp/htmlviewer.tar.gz https://git.mdns.eu/nextcloud/htmlviewer/-/archive/29.1.0/htmlviewer-29.1.0.tar.gz -
检查下载的文件格式(这次应该能看到 gzip compressed data)
docker exec -it nextcloud file /tmp/htmlviewer.tar.gz
解压并安装(注意这次解压出来的文件夹名会带版本号):
bash
解压
docker exec -it nextcloud tar -xzf /tmp/htmlviewer.tar.gz -C /var/www/html/apps/
改名(把 htmlviewer-29.1.0 或 htmlviewer-29.0.0 改成 htmlviewer)
docker exec -it nextcloud mv /var/www/html/apps/htmlviewer-29.1.0 /var/www/html/apps/htmlviewer 2>/dev/null || docker exec -it nextcloud mv /var/www/html/apps/htmlviewer-29.0.0 /var/www/html/apps/htmlviewer
修正权限
docker exec -u www-data nextcloud chown -R www-data:www-data /var/www/html/apps/htmlviewer
启用
docker exec -u www-data nextcloud php occ app:enable htmlviewer