Hi all,
Today I had some time and went back and forth with ChatGPT to try to figure this thing out, and why I can’t get to GrampsWeb. The docker-compose.yml I used is here: https://raw.githubusercontent.com/gramps-project/gramps-web-docs/main/examples/docker-compose-letsencrypt/docker-compose.yml
These are the findings so far:
Finding 1
Using this command we saw there are errors in nginx-proxy:
# docker logs nginx-proxy --tail 50
This is the result:
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26674800
nginx.1 | 2025/02/28 21:16:05 [crit] 7001#7001: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26674900
nginx.1 | 2025/02/28 21:16:05 [crit] 7002#7002: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675000
nginx.1 | 2025/02/28 21:16:05 [crit] 7003#7003: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675100
nginx.1 | 2025/02/28 21:16:05 [crit] 7004#7004: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675200
nginx.1 | 2025/02/28 21:16:05 [crit] 7005#7005: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675300
nginx.1 | 2025/02/28 21:16:05 [crit] 7006#7006: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675400
nginx.1 | 2025/02/28 21:16:06 [crit] 7007#7007: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675500
nginx.1 | 2025/02/28 21:16:06 [crit] 7008#7008: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675600
nginx.1 | 2025/02/28 21:16:06 [crit] 7009#7009: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675700
nginx.1 | 2025/02/28 21:16:06 [crit] 7010#7010: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675800
nginx.1 | 2025/02/28 21:16:06 [crit] 7011#7011: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26675900
nginx.1 | 2025/02/28 21:16:06 [crit] 7012#7012: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26676000
nginx.1 | 2025/02/28 21:16:06 [crit] 7013#7013: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26676100
nginx.1 | 2025/02/28 21:16:06 [crit] 7014#7014: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26676200
nginx.1 | 2025/02/28 21:16:06 [crit] 7015#7015: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26676300
nginx.1 | 2025/02/28 21:16:06 [crit] 7016#7016: pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
nginx.1 | nginx: [crit] pread() "/etc/nginx/conf.d/my_proxy.conf" failed (21: Is a directory)
forego | starting nginx.1 on port 26676400
Finding 2
ChatGPT suggest that the file my_proxy.conf should be a file and not a directory but with the lines in docker-compose.yml file state this:
volumes:
- ./nginx_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro
- conf:/etc/nginx/conf.d
ChatGPT says the the bind in line 2 is overridden by line 3 which mounts a directory, and that this script actually creates a directory my_proxy.conf instead of a file my_proxy.conf. And that the errors from finding 1 would be solved if we delete this my_proxy.conf directory. We have confirmed that it really is a directory and not a file using
[/] # docker exec -it nginx-proxy ls -la /etc/nginx/conf.d/
which gave a result:
total 16
drwxr-xr-x 3 root root 4096 Mar 1 08:35 .
drwxr-xr-x 1 root root 4096 Feb 28 17:13 ..
-rw-r--r-- 1 root root 5497 Mar 1 08:18 default.conf
drwxr-xr-x 2 root root 40 Mar 1 08:35 my_proxy.conf
I can’t delete this folder inside the container even if the nginx-proxy is stopped. So ChatGPT suggested accessing it and deleting it using “alpine” container which also resulted in an error.
Then ChatGPT suggested to delete the folder
/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/default_conf/_data/my_proxy.conf
because it figured that was the folder on the host outside the container by using the results form this command:
# docker inspect nginx-proxy | grep -A 5 'Mounts'
After deleting it there were same errors as in Finding 1
Can someone confirm that this is correct? There is “default.conf” file which could be enough? And what changes in the docker-compose.yml should be made to repair this?
Finding 3.
Command
curl http://172.29.4.3:5000
gives this result:
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><meta name="description" content="Gramps Web - research & organize your family tree together"><base href="/"><link rel="stylesheet" href="fonts/fonts.css"><link rel="stylesheet" href="tippy.css"><link rel="icon" href="images/favicon.ico"><link rel="manifest" href="manifest.json" crossorigin="use-credentials"><meta name="theme-color" content="#6D4C41"><meta name="mobile-web-app-capable" content="yes"><meta name="application-name" content="Gramps"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar" content="#6D4C41"><meta name="apple-mobile-web-app-title" content="Gramps"><link rel="apple-touch-icon" sizes="192x192" href="images/icon192.png"><style>body,html{margin:0;padding:0;height:100%}</style><title>Gramps Web</title><link rel="preload" href="./f78fa77f.js" as="script" crossorigin="anonymous"></head><body><gramps-js></gramps-js><script src="config.js"></script><script type="module" src="./f78fa77f.js"></script><script>"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("sw.js").then((function(){console.log("ServiceWorker registered.")})).catch((function(e){console.log("ServiceWorker registration failed: ",e)}))}))</script></body></html>
But I cannot access it through the browser, not even from computer in the same network and trying:
http://NASIP:80
http://NASIP:5000
http://NASIP:443
http://xy.duckdns.org:80
https://xy.duckdns.org:443
https://xy.duckdns.org:8443 (edited docker-compose.yml in the line “443:443” to “8443:443” because port 443 was in use. Later I figured out that on my NAS “Enable secure connection (HTTPS)” was enabled, so I disabled it. Now that port is free)
All the above give no results.
What can I try next?
If editing docker-compose.yml file is the answer please let me know what to put in.
Thank you for the help!