1. The problem I’m having:
https is failing on a file_server index.html
curl -vL https://cathead.duckdns.org
* Host cathead.duckdns.org:443 was resolved.
* IPv6: (none)
* IPv4: 47.32.80.65
* Trying 47.32.80.65:443...
* Connected to cathead.duckdns.org (47.32.80.65) port 443
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (IN), TLS alert, internal error (592):
* OpenSSL/3.0.13: error:0A000438:SSL routines::tlsv1 alert internal error
* Closing connection
curl: (35) OpenSSL/3.0.13: error:0A000438:SSL routines::tlsv1 alert internal error
I’ve added the duckdns plugin using xcaddy
(https works for reverse proxies)
2. Error messages and/or full log output:
Jan 31 10:58:01 TheDrone caddy[194031]: {"level":"info","ts":1738339081.83 89661,"logger":"admin","msg":"stopped previous server","address":"localhos t:2019"} 2 Jan 31 10:58:01 TheDrone caddy[194031]: {"level":"info","ts":1738339081.83 89807,"msg":"shutdown complete","signal":"SIGTERM","exit_code":0}
3 Jan 31 10:58:01 TheDrone systemd[1]: Stopped caddy.service - Caddy. 4 Jan 31 10:58:01 TheDrone systemd[1]: caddy.service: Consumed 28.386s CPU t ime, 27.6M memory peak, 0B memory swap peak. 5 Jan 31 10:58:23 TheDrone systemd[1]: Starting caddy.service - Caddy... 6 Jan 31 10:58:23 TheDrone caddy[395978]: caddy.HomeDir=/var/lib/caddy
7 Jan 31 10:58:23 TheDrone caddy[395978]: caddy.AppDataDir=/var/lib/caddy/.l ocal/share/caddy
8 Jan 31 10:58:23 TheDrone caddy[395978]: caddy.AppConfigDir=/var/lib/caddy/ .config/caddy
9 Jan 31 10:58:23 TheDrone caddy[395978]: caddy.ConfigAutosavePath=/var/lib/ caddy/.config/caddy/autosave.json
10 Jan 31 10:58:23 TheDrone caddy[395978]: caddy.Version=v2.9.1 h1:OEYiZ7DbCz AWVb6TNEkjRcSCRGHVoZsJinoDR/n9oaY=
11 Jan 31 10:58:23 TheDrone caddy[395978]: runtime.GOOS=linux
12 Jan 31 10:58:23 TheDrone caddy[395978]: runtime.GOARCH=amd64
13 Jan 31 10:58:23 TheDrone caddy[395978]: runtime.Compiler=gc
14 Jan 31 10:58:23 TheDrone caddy[395978]: runtime.NumCPU=4
15 Jan 31 10:58:23 TheDrone caddy[395978]: runtime.GOMAXPROCS=4
16 Jan 31 10:58:23 TheDrone caddy[395978]: runtime.Version=go1.23.5
17 Jan 31 10:58:23 TheDrone caddy[395978]: os.Getwd=/
18 Jan 31 10:58:23 TheDrone caddy[395978]: LANG=en_US.UTF-8
19 Jan 31 10:58:23 TheDrone caddy[395978]: PATH=/usr/local/sbin:/usr/local/bi n:/usr/sbin:/usr/bin:/snap/bin
20 Jan 31 10:58:23 TheDrone caddy[395978]: NOTIFY_SOCKET=/run/systemd/notify
21 Jan 31 10:58:23 TheDrone caddy[395978]: USER=caddy
22 Jan 31 10:58:23 TheDrone caddy[395978]: LOGNAME=caddy
23 Jan 31 10:58:23 TheDrone caddy[395978]: HOME=/var/lib/caddy
24 Jan 31 10:58:23 TheDrone caddy[395978]: INVOCATION_ID=c0d8ee493ac44784a8cb 8ce3c6e4be8a
25 Jan 31 10:58:23 TheDrone caddy[395978]: JOURNAL_STREAM=8:1447867
26 Jan 31 10:58:23 TheDrone caddy[395978]: SYSTEMD_EXEC_PID=395978
27 Jan 31 10:58:23 TheDrone caddy[395978]: MEMORY_PRESSURE_WATCH=/sys/fs/cgro up/system.slice/caddy.service/memory.pressure
28 Jan 31 10:58:23 TheDrone caddy[395978]: MEMORY_PRESSURE_WRITE=c29tZSAyMDAw MDAgMjAwMDAwMAA=
29 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.18 54513,"msg":"using config from file","file":"/etc/caddy/Caddyfile"}
30 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.18 71948,"msg":"adapted config to JSON","adapter":"caddyfile"}
31 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"warn","ts":1738339103.18 72056,"msg":"Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies","adapter":"caddyfile","file":"/etc/caddy/Caddyfil e","line":22}
32 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.18
83636,"logger":"admin","msg":"admin endpoint started","address":"localhost :2019","enforce_origin":false,"origins":["//127.0.0.1:2019","//localhost:2 019","//[::1]:2019"]}
33 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.18 85588,"logger":"http.auto_https","msg":"server is listening only on the HT TPS port but has no TLS connection policies; adding one to enable TLS","se rver_name":"srv0","https_port":443}
34 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.18 85667,"logger":"tls.cache.maintenance","msg":"started background certifica te maintenance","cache":"0xc00028f280"}
35 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.18 85822,"logger":"http.auto_https","msg":"enabling automatic HTTP->HTTPS red irects","server_name":"srv0"}
36 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"warn","ts":1738339103.18 85982,"logger":"http.auto_https","msg":"server is listening only on the HT TP port, so no automatic HTTPS will be applied to this server","server_nam e":"srv1","http_port":80}
37 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.18 98248,"logger":"http","msg":"enabling HTTP/3 listener","addr":":443"}
38 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.19 02084,"logger":"http.log","msg":"server running","name":"srv0","protocols" :["h1","h2","h3"]}
39 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"warn","ts":1738339103.19 02585,"logger":"http","msg":"HTTP/2 skipped because it requires TLS","netw ork":"tcp","addr":":80"}
40 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"warn","ts":1738339103.19
02661,"logger":"http","msg":"HTTP/3 skipped because it requires TLS","netw ork":"tcp","addr":":80"}
41 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.19 02747,"logger":"http.log","msg":"server running","name":"srv1","protocols" :["h1","h2","h3"]}
42 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.19 02795,"logger":"http","msg":"enabling automatic TLS certificate management ","domains":["jellyfin.cathead.duckdns.org","immich.cathead.duckdns.org"," plex.cathead.duckdns.org","adguard.cathead.duckdns.org","openwrt.cathead.d uckdns.org","calibre.cathead.duckdns.org","ownfoil.cathead.duckdns.org","a udiobookshelf.cathead.duckdns.org","transmission.cathead.duckdns.org","sou lseek.cathead.duckdns.org"]}
43 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.27 41156,"logger":"tls","msg":"storage cleaning happened too recently; skippi ng for now","storage":"FileStorage:/var/lib/caddy/.local/share/caddy","ins tance":"5bf20750-46f1-45f6-937d-816d56d609c6","try_again":1738425503.27411 3,"try_again_in":86399.999999233}
44 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.27 42667,"logger":"tls","msg":"finished cleaning storage units"}
45 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.46 24128,"msg":"autosaved config (load with --resume flag)","file":"/var/lib/ caddy/.config/caddy/autosave.json"}
46 Jan 31 10:58:23 TheDrone caddy[395978]: {"level":"info","ts":1738339103.46 25354,"msg":"serving initial configuration"}
3. Caddy version:
v2.9.1 h1:OEYiZ7DbCzAWVb6TNEkjRcSCRGHVoZsJinoDR/n9oaY=
4. How I installed and ran Caddy:
a. System environment:
latest Ubuntu
systemd
b. Command:
systemctl start caddy.service
c. Service/unit/compose file:
d. My complete Caddy config:
11 {
12 debug
13 }
14
15 cathead.duckdns.org:80 {
16 tls {
17 dns duckdns 00000000-0000-0000-00000
18 }
19 # Set this path to your site's directory.
20 root * /var/www/
21
22 file_server
23
24 # Enable the static file server.
25 #file_server
26
27 }
28
29 openwrt.cathead.duckdns.org {
30 reverse_proxy 192.168.1.1
31 }
32
33 adguard.cathead.duckdns.org {
34 reverse_proxy 192.168.1.1:8080
35 }
36
37 audiobookshelf.cathead.duckdns.org {
38 reverse_proxy 192.168.1.55:13378
39 }
40
41 calibre.cathead.duckdns.org {
42 reverse_proxy 192.168.1.55:8282
43 }
44
45 immich.cathead.duckdns.org {
46 reverse_proxy 192.168.1.55:2283
47 }
48
49 jellyfin.cathead.duckdns.org {
50 reverse_proxy 192.168.1.55:8096
51 }
52
53 plex.cathead.duckdns.org {
54 reverse_proxy 192.168.1.55:32400
55 }
56
57 soulseek.cathead.duckdns.org {
58 reverse_proxy 192.168.1.55:5030
59 }
60
61 transmission.cathead.duckdns.org {
62 reverse_proxy 192.168.1.55:9091
63 }
64
65 ownfoil.cathead.duckdns.org {
66 reverse_proxy 192.168.1.55:8465
67 }