167 lines
4.3 KiB
Markdown
167 lines
4.3 KiB
Markdown
# Troubleshooting
|
|
|
|
## Nodes missing from palette
|
|
|
|
### Symptom
|
|
|
|
Node-RED runs but Nextcloud nodes do not appear under **Manage palette → Nodes**.
|
|
|
|
### Checks
|
|
|
|
1. **Entrypoint ran**
|
|
|
|
```bash
|
|
docker logs nextcloud-node-red 2>&1 | head -20
|
|
```
|
|
|
|
Expect:
|
|
|
|
```
|
|
[entrypoint] Installing nextcloud nodes into /data...
|
|
[entrypoint] Source: /opt/nextcloud-nodes/node-red-contrib-nextcloud-ocs
|
|
[entrypoint] Target: /data/node_modules/node-red-contrib-nextcloud-ocs
|
|
```
|
|
|
|
If you only see the Node-RED banner with no `[entrypoint]` lines, the image may still use `CMD` instead of `ENTRYPOINT ["/entrypoint.sh"]` — rebuild from current `Dockerfile`.
|
|
|
|
2. **Module installed in userDir**
|
|
|
|
```bash
|
|
docker exec nextcloud-node-red ls /data/node_modules/node-red-contrib-nextcloud-ocs
|
|
docker exec nextcloud-node-red cat /data/node_modules/node-red-contrib-nextcloud-ocs/package.json
|
|
```
|
|
|
|
3. **User directory**
|
|
|
|
Logs must show `User directory : /data`. If it shows `/usr/src/node-red/.node-red/`, entrypoint did not start Node-RED with `--userDir /data`.
|
|
|
|
4. **Stale volume (old package version)**
|
|
|
|
Compare `/opt` vs `/data`:
|
|
|
|
```bash
|
|
docker exec nextcloud-node-red sh -c \
|
|
'grep version /opt/nextcloud-nodes/node-red-contrib-nextcloud-ocs/package.json; \
|
|
grep version /data/node_modules/node-red-contrib-nextcloud-ocs/package.json'
|
|
```
|
|
|
|
If `/opt` is newer, restart should copy on boot. If `/data` stays old, remove volume (loses flows):
|
|
|
|
```bash
|
|
docker rm -f nextcloud-node-red
|
|
docker volume rm node-red-data
|
|
docker run -d --name nextcloud-node-red --network host \
|
|
-v node-red-data:/data --restart unless-stopped nextcloud-node-red:latest
|
|
```
|
|
|
|
5. **Browser cache**
|
|
|
|
Hard refresh (Ctrl+F5) or open Node-RED in a private window.
|
|
|
|
---
|
|
|
|
## Container restart loop
|
|
|
|
### Symptom
|
|
|
|
`docker ps` shows `Restarting`; logs repeat entrypoint lines.
|
|
|
|
### Cause
|
|
|
|
Old `entrypoint.sh` tried to copy missing `settings.js`:
|
|
|
|
```
|
|
cp: can't stat '/usr/src/node-red/.node-red/settings.js': No such file or directory
|
|
```
|
|
|
|
### Fix
|
|
|
|
Use current `entrypoint.sh` (starts `node-red --userDir /data` only). Rebuild:
|
|
|
|
```bash
|
|
docker build --no-cache -t nextcloud-node-red:latest .
|
|
```
|
|
|
|
---
|
|
|
|
## `No Nextcloud configuration node selected`
|
|
|
|
Flow nodes reference a deleted or unconfigured **nextcloud-config** node. Open each red Nextcloud node and re-select the config node, then Deploy.
|
|
|
|
---
|
|
|
|
## API errors / connection refused
|
|
|
|
| Issue | Fix |
|
|
|-------|-----|
|
|
| `ECONNREFUSED` to localhost | Use `--network host` or use LAN IP / hostname, not `127.0.0.1` from bridge network |
|
|
| SSL errors | Self-signed: nodes set `rejectUnauthorized: false`; or install proper certs |
|
|
| 401 Unauthorized | Use **app password**, correct username |
|
|
| 404 on OCS path | App not installed/enabled on Nextcloud (Collectives, Talk, etc.) |
|
|
|
|
Test from container:
|
|
|
|
```bash
|
|
docker exec nextcloud-node-red wget -qO- --header="OCS-APIRequest: true" \
|
|
--user='USER:APP_PASSWORD' \
|
|
https://cloud.example.com/ocs/v2.php/cloud/user
|
|
```
|
|
|
|
---
|
|
|
|
## Docker build shows old files
|
|
|
|
Build context must include updated `nodes/nextcloud-ocs/`:
|
|
|
|
```bash
|
|
grep version nodes/nextcloud-ocs/package.json # on host before build
|
|
docker build --no-cache -t nextcloud-node-red:latest .
|
|
```
|
|
|
|
`docker builder prune -af` clears COPY layer cache.
|
|
|
|
---
|
|
|
|
## Nextcloud iframe blank
|
|
|
|
1. Browser DevTools → Console: CSP violations.
|
|
2. Confirm **nodered_embed** is enabled and admin URL matches iframe target host.
|
|
3. `CSPListener` adds `frame-src` for the hostname from `nodered_url`.
|
|
4. Reverse proxy must not set `X-Frame-Options: DENY` on Node-RED.
|
|
|
|
```bash
|
|
curl -I https://cloud.example.com | grep -i frame
|
|
curl -I http://192.168.1.26:1880 | grep -i frame
|
|
```
|
|
|
|
---
|
|
|
|
## Permission denied on entrypoint copy
|
|
|
|
Old files in volume owned by root. Fix:
|
|
|
|
```bash
|
|
docker rm -f nextcloud-node-red
|
|
docker volume rm node-red-data
|
|
# recreate container
|
|
```
|
|
|
|
Or fix ownership once:
|
|
|
|
```bash
|
|
docker exec -u root nextcloud-node-red chown -R node-red:node-red /data
|
|
```
|
|
|
|
---
|
|
|
|
## Verify node discovery manually
|
|
|
|
```bash
|
|
docker exec nextcloud-node-red node -e "
|
|
const p=require('/data/node_modules/node-red-contrib-nextcloud-ocs/package.json');
|
|
console.log(p.version, Object.keys(p['node-red'].nodes).length, 'nodes');
|
|
"
|
|
```
|
|
|
|
Expected: version from `package.json` and **16** node types.
|