1. The problem I’m having:
I followed this tutorial - https://www.youtube.com/watch?v=AEyhpuWeiTk&t=685s trying to setup a reverse proxy for Jellyfin using Caddy and DuckDNS. I installed both, but when I ran the command “./Caddy run --config Caddyfile” in PowerShell I got multiple errors like “could not get certificate from issuer” followed by “likely a Firewall issue”. I made the rules on both my router and my firewall. Portchecker says both HTTP and HTTPS ports are closed. If it’s relevant, I was using Tailscale for Jellyfin up until this point and I’m still using it until I get it to work, I don’t want to set it up again. I’m also connected through ethernet
2. Error messages and/or full log output:
PS C:\Users\vinnt\downloads\Caddy> ./caddy run --config Caddyfile
2026/07/05 17:43:51.024 INFO maxprocs: Leaving GOMAXPROCS=2: CPU quota undefined
2026/07/05 17:43:51.024 INFO GOMEMLIMIT is updated {"GOMEMLIMIT": 9604233216, "previous": 9223372036854775807}
2026/07/05 17:43:51.024 INFO using config from file {"file": "Caddyfile"}
2026/07/05 17:43:51.024 INFO adapted config to JSON {"adapter": "caddyfile"}
2026/07/05 17:43:51.024 WARN Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies {"adapter": "caddyfile", "file": "Caddyfile", "line": 2}
2026/07/05 17:43:51.091 INFO admin admin endpoint started {"address": "localhost:2019", "enforce_origin": false, "origins": ["//localhost:2019", "//[::1]:2019", "//127.0.0.1:2019"]}
2026/07/05 17:43:51.096 INFO http.auto_https server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS {"server_name": "srv0", "https_port": 443}
2026/07/05 17:43:51.104 INFO http.auto_https enabling automatic HTTP->HTTPS redirects {"server_name": "srv0"}
2026/07/05 17:43:51.109 INFO http enabling HTTP/3 listener {"addr": ":443"}
2026/07/05 17:43:51.111 INFO http.log server running {"name": "srv0", "protocols": ["h1", "h2", "h3"]}
2026/07/05 17:43:51.114 WARN http HTTP/2 skipped because it requires TLS {"network": "tcp", "addr": ":80"}
2026/07/05 17:43:51.124 WARN http HTTP/3 skipped because it requires TLS {"network": "tcp", "addr": ":80"}
2026/07/05 17:43:51.126 INFO http.log server running {"name": "remaining_auto_https_redirects", "protocols": ["h1", "h2", "h3"]}
2026/07/05 17:43:51.127 INFO http enabling automatic TLS certificate management {"domains": ["cdxxplus.duckdns.org"]}
2026/07/05 17:43:51.128 INFO autosaved config (load with --resume flag) {"file": "C:\\Users\\vinnt\\AppData\\Roaming\\Caddy\\autosave.json"}
2026/07/05 17:43:51.140 INFO serving initial configuration
2026/07/05 17:43:51.104 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0x153a8ec88500"}
2026/07/05 17:43:51.160 INFO tls.obtain acquiring lock {"identifier": "cdxxplus.duckdns.org"}
2026/07/05 17:43:51.162 INFO tls storage cleaning happened too recently; skipping for now {"storage": "FileStorage:C:\\Users\\vinnt\\AppData\\Roaming\\Caddy", "instance": "62fc2d99-ae54-440f-9ee7-75d7f08d0dcc", "try_again": "2026/07/06 17:43:51.162", "try_again_in": 86400}
2026/07/05 17:43:51.193 INFO tls finished cleaning storage units
2026/07/05 17:43:51.197 INFO tls.obtain lock acquired {"identifier": "cdxxplus.duckdns.org"}
2026/07/05 17:43:51.215 INFO tls.obtain obtaining certificate {"identifier": "cdxxplus.duckdns.org"}
2026/07/05 17:43:51.239 INFO http waiting on internal rate limiter {"identifiers": ["cdxxplus.duckdns.org"], "ca": "https://acme-v02.api.letsencrypt.org/directory", "account": ""}
2026/07/05 17:43:51.244 INFO http done waiting on internal rate limiter {"identifiers": ["cdxxplus.duckdns.org"], "ca": "https://acme-v02.api.letsencrypt.org/directory", "account": ""}
2026/07/05 17:43:51.246 INFO http using ACME account {"account_id": "https://acme-v02.api.letsencrypt.org/acme/acct/3505115696", "account_contact": []}
2026/07/05 17:43:52.448 INFO http.acme_client trying to solve challenge {"identifier": "cdxxplus.duckdns.org", "challenge_type": "http-01", "ca": "https://acme-v02.api.letsencrypt.org/directory"}
2026/07/05 17:44:03.013 ERROR http.acme_client challenge failed {"identifier": "cdxxplus.duckdns.org", "challenge_type": "http-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/QM8HKoN_kqyVUyE4ZDyQvpYsA27z94-JA9dyTpGuppw: Timeout during connect (likely firewall problem)", "instance": "", "subproblems": null}}
2026/07/05 17:44:03.028 ERROR http.acme_client validating authorization {"identifier": "cdxxplus.duckdns.org", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/QM8HKoN_kqyVUyE4ZDyQvpYsA27z94-JA9dyTpGuppw: Timeout during connect (likely firewall problem)", "instance": "", "subproblems": null}, "order": "https://acme-v02.api.letsencrypt.org/acme/order/3505115696/528944032846", "attempt": 1, "max_attempts": 3}
2026/07/05 17:44:04.382 INFO http.acme_client trying to solve challenge {"identifier": "cdxxplus.duckdns.org", "challenge_type": "tls-alpn-01", "ca": "https://acme-v02.api.letsencrypt.org/directory"}
2026/07/05 17:44:14.655 ERROR http.acme_client challenge failed {"identifier": "cdxxplus.duckdns.org", "challenge_type": "tls-alpn-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Timeout during connect (likely firewall problem)", "instance": "", "subproblems": null}}
2026/07/05 17:44:14.661 ERROR http.acme_client validating authorization {"identifier": "cdxxplus.duckdns.org", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Timeout during connect (likely firewall problem)", "instance": "", "subproblems": null}, "order": "https://acme-v02.api.letsencrypt.org/acme/order/3505115696/528944082206", "attempt": 2, "max_attempts": 3}
2026/07/05 17:44:14.662 ERROR tls.obtain could not get certificate from issuer {"identifier": "cdxxplus.duckdns.org", "issuer": "acme-v02.api.letsencrypt.org-directory", "error": "HTTP 400 urn:ietf:params:acme:error:connection - 78.80.80.226: Timeout during connect (likely firewall problem)"}
2026/07/05 17:44:14.666 ERROR tls.obtain will retry {"error": "[cdxxplus.duckdns.org] Obtain: [cdxxplus.duckdns.org] solving challenge: cdxxplus.duckdns.org: [cdxxplus.duckdns.org] authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - 78.80.80.226: Timeout during connect (likely firewall problem) (ca=https://acme-v02.api.letsencrypt.org/directory)", "attempt": 1, "retrying_in": 60, "elapsed": 23.4504684, "max_duration": 2592000}
2026/07/05 17:45:14.673 INFO tls.obtain obtaining certificate {"identifier": "cdxxplus.duckdns.org"}
2026/07/05 17:45:14.697 INFO http using ACME account {"account_id": "https://acme-staging-v02.api.letsencrypt.org/acme/acct/309706974", "account_contact": []}
2026/07/05 17:45:16.462 INFO http.acme_client trying to solve challenge {"identifier": "cdxxplus.duckdns.org", "challenge_type": "tls-alpn-01", "ca": "https://acme-staging-v02.api.letsencrypt.org/directory"}
2026/07/05 17:45:23.646 ERROR http.acme_client challenge failed {"identifier": "cdxxplus.duckdns.org", "challenge_type": "tls-alpn-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Connection refused", "instance": "", "subproblems": null}}
2026/07/05 17:45:23.648 ERROR http.acme_client validating authorization {"identifier": "cdxxplus.duckdns.org", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Connection refused", "instance": "", "subproblems": null}, "order": "https://acme-staging-v02.api.letsencrypt.org/acme/order/309706974/43298198364", "attempt": 1, "max_attempts": 3}
2026/07/05 17:45:24.973 INFO http.acme_client trying to solve challenge {"identifier": "cdxxplus.duckdns.org", "challenge_type": "http-01", "ca": "https://acme-staging-v02.api.letsencrypt.org/directory"}
2026/07/05 17:45:31.737 ERROR http.acme_client challenge failed {"identifier": "cdxxplus.duckdns.org", "challenge_type": "http-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/50QTzREk1K0CdOR3h5NoYhyMMhv93Rs7uX1Fi9jQQS8: Connection refused", "instance": "", "subproblems": null}}
2026/07/05 17:45:31.742 ERROR http.acme_client validating authorization {"identifier": "cdxxplus.duckdns.org", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/50QTzREk1K0CdOR3h5NoYhyMMhv93Rs7uX1Fi9jQQS8: Connection refused", "instance": "", "subproblems": null}, "order": "https://acme-staging-v02.api.letsencrypt.org/acme/order/309706974/43298207304", "attempt": 2, "max_attempts": 3}
2026/07/05 17:45:31.743 ERROR tls.obtain could not get certificate from issuer {"identifier": "cdxxplus.duckdns.org", "issuer": "acme-v02.api.letsencrypt.org-directory", "error": "HTTP 400 urn:ietf:params:acme:error:connection - 78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/50QTzREk1K0CdOR3h5NoYhyMMhv93Rs7uX1Fi9jQQS8: Connection refused"}
2026/07/05 17:45:31.743 ERROR tls.obtain will retry {"error": "[cdxxplus.duckdns.org] Obtain: [cdxxplus.duckdns.org] solving challenge: cdxxplus.duckdns.org: [cdxxplus.duckdns.org] authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - 78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/50QTzREk1K0CdOR3h5NoYhyMMhv93Rs7uX1Fi9jQQS8: Connection refused (ca=https://acme-staging-v02.api.letsencrypt.org/directory)", "attempt": 2, "retrying_in": 120, "elapsed": 100.5273086, "max_duration": 2592000}
2026/07/05 17:47:31.744 INFO tls.obtain obtaining certificate {"identifier": "cdxxplus.duckdns.org"}
2026/07/05 17:47:31.757 INFO http using ACME account {"account_id": "https://acme-staging-v02.api.letsencrypt.org/acme/acct/309706974", "account_contact": []}
2026/07/05 17:47:32.356 INFO http.acme_client trying to solve challenge {"identifier": "cdxxplus.duckdns.org", "challenge_type": "tls-alpn-01", "ca": "https://acme-staging-v02.api.letsencrypt.org/directory"}
2026/07/05 17:47:39.375 ERROR http.acme_client challenge failed {"identifier": "cdxxplus.duckdns.org", "challenge_type": "tls-alpn-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Connection refused", "instance": "", "subproblems": null}}
2026/07/05 17:47:39.509 ERROR http.acme_client validating authorization {"identifier": "cdxxplus.duckdns.org", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Connection refused", "instance": "", "subproblems": null}, "order": "https://acme-staging-v02.api.letsencrypt.org/acme/order/309706974/43298348694", "attempt": 1, "max_attempts": 3}
2026/07/05 17:47:41.039 INFO http.acme_client trying to solve challenge {"identifier": "cdxxplus.duckdns.org", "challenge_type": "http-01", "ca": "https://acme-staging-v02.api.letsencrypt.org/directory"}
2026/07/05 17:47:50.986 ERROR http.acme_client challenge failed {"identifier": "cdxxplus.duckdns.org", "challenge_type": "http-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/rDyH5sOEzju7qjO9RXX0XEKHGm-KZ12YU4OO8HcCxXM: Connection refused", "instance": "", "subproblems": null}}
2026/07/05 17:47:50.986 ERROR http.acme_client validating authorization {"identifier": "cdxxplus.duckdns.org", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/rDyH5sOEzju7qjO9RXX0XEKHGm-KZ12YU4OO8HcCxXM: Connection refused", "instance": "", "subproblems": null}, "order": "https://acme-staging-v02.api.letsencrypt.org/acme/order/309706974/43298357564", "attempt": 2, "max_attempts": 3}
2026/07/05 17:47:50.986 ERROR tls.obtain could not get certificate from issuer {"identifier": "cdxxplus.duckdns.org", "issuer": "acme-v02.api.letsencrypt.org-directory", "error": "HTTP 400 urn:ietf:params:acme:error:connection - 78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/rDyH5sOEzju7qjO9RXX0XEKHGm-KZ12YU4OO8HcCxXM: Connection refused"}
2026/07/05 17:47:50.986 ERROR tls.obtain will retry {"error": "[cdxxplus.duckdns.org] Obtain: [cdxxplus.duckdns.org] solving challenge: cdxxplus.duckdns.org: [cdxxplus.duckdns.org] authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - 78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/rDyH5sOEzju7qjO9RXX0XEKHGm-KZ12YU4OO8HcCxXM: Connection refused (ca=https://acme-staging-v02.api.letsencrypt.org/directory)", "attempt": 3, "retrying_in": 120, "elapsed": 239.7702251, "max_duration": 2592000}
2026/07/05 17:49:50.989 INFO tls.obtain obtaining certificate {"identifier": "cdxxplus.duckdns.org"}
2026/07/05 17:49:50.993 INFO http using ACME account {"account_id": "https://acme-staging-v02.api.letsencrypt.org/acme/acct/309706974", "account_contact": []}
2026/07/05 17:49:52.154 INFO http.acme_client trying to solve challenge {"identifier": "cdxxplus.duckdns.org", "challenge_type": "tls-alpn-01", "ca": "https://acme-staging-v02.api.letsencrypt.org/directory"}
2026/07/05 17:50:02.011 ERROR http.acme_client challenge failed {"identifier": "cdxxplus.duckdns.org", "challenge_type": "tls-alpn-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Connection refused", "instance": "", "subproblems": null}}
2026/07/05 17:50:02.012 ERROR http.acme_client validating authorization {"identifier": "cdxxplus.duckdns.org", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Connection refused", "instance": "", "subproblems": null}, "order": "https://acme-staging-v02.api.letsencrypt.org/acme/order/309706974/43298492214", "attempt": 1, "max_attempts": 3}
2026/07/05 17:50:03.335 INFO http.acme_client trying to solve challenge {"identifier": "cdxxplus.duckdns.org", "challenge_type": "http-01", "ca": "https://acme-staging-v02.api.letsencrypt.org/directory"}
2026/07/05 17:50:14.179 ERROR http.acme_client challenge failed {"identifier": "cdxxplus.duckdns.org", "challenge_type": "http-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/OhVvOod628XlOVW0yT9K6M1FpyfgMcejGZ7Feo-Nbi4: Timeout during connect (likely firewall problem)", "instance": "", "subproblems": null}}
2026/07/05 17:50:14.180 ERROR http.acme_client validating authorization {"identifier": "cdxxplus.duckdns.org", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/OhVvOod628XlOVW0yT9K6M1FpyfgMcejGZ7Feo-Nbi4: Timeout during connect (likely firewall problem)", "instance": "", "subproblems": null}, "order": "https://acme-staging-v02.api.letsencrypt.org/acme/order/309706974/43298505334", "attempt": 2, "max_attempts": 3}
2026/07/05 17:50:14.180 ERROR tls.obtain could not get certificate from issuer {"identifier": "cdxxplus.duckdns.org", "issuer": "acme-v02.api.letsencrypt.org-directory", "error": "HTTP 400 urn:ietf:params:acme:error:connection - 78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/OhVvOod628XlOVW0yT9K6M1FpyfgMcejGZ7Feo-Nbi4: Timeout during connect (likely firewall problem)"}
2026/07/05 17:50:14.180 ERROR tls.obtain will retry {"error": "[cdxxplus.duckdns.org] Obtain: [cdxxplus.duckdns.org] solving challenge: cdxxplus.duckdns.org: [cdxxplus.duckdns.org] authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - 78.80.80.226: Fetching http://cdxxplus.duckdns.org/.well-known/acme-challenge/OhVvOod628XlOVW0yT9K6M1FpyfgMcejGZ7Feo-Nbi4: Timeout during connect (likely firewall problem) (ca=https://acme-staging-v02.api.letsencrypt.org/directory)", "attempt": 4, "retrying_in": 300, "elapsed": 382.9651372, "max_duration": 2592000}
3. Caddy version:
v2.11.4
4. How I installed and ran Caddy:
I downloaded from Download Caddy for WindowsAMD64 along with caddy-dns/cloudflare and caddy-dns/duckdns
a. System environment:
Windows 11 25H2, OS build 26200.8655, not using Docker for Caddy
b. Command:
PS C:\Users\vinnt\downloads\Caddy> ./caddy run --config Caddyfile
c. Service/unit/compose file:
d. My complete Caddy config:
cdxxplus.duckdns.org {
reverse_proxy 127.0.0.1:8096
}
5. Links to relevant resources:
The tutorial: https://www.youtube.com/watch?v=AEyhpuWeiTk&t=685s