Issue: Jellyfin crashes after 10-15 mins of streaming using the URL, causing all URLs in Caddyfile to go down for 1-2 mins. System recovers, but issue repeats with Jellyfin. No issue when using local IP:Port of Jellyfin

Error logs:

ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.021015191 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.021015191 request={"remote_ip":"192.168.1.223","remote_port":"42000","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/9ead0851-c8d6-7576-0f7d-c34e0695fdd1/stream?static=true&mediaSourceId=9ead0851c8d675760f7dc34e0695fdd1&streamOptions=%7B%7D","headers":{"Range":["bytes=2967545311-"],"Accept-Encoding":["identity"],"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"],"X-Forwarded-For":["192.168.1.223"],"Icy-Metadata":["1"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gnas.duckdns.org"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gnas.duckdns.org"}} ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.021015191 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566007.683709 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.021015191 request={"remote_ip":"192.168.1.223","remote_port":"42000","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/9ead0851-c8d6-7576-0f7d-c34e0695fdd1/stream?static=true&mediaSourceId=9ead0851c8d675760f7dc34e0695fdd1&streamOptions=%7B%7D","headers":{"Range":["bytes=2967545311-"],"Accept-Encoding":["identity"],"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"],"X-Forwarded-For":["192.168.1.223"],"Icy-Metadata":["1"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gnas.duckdns.org"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.223:42000: write: connection reset by peer
ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.005586001 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.005586001 request={"remote_ip":"192.168.1.223","remote_port":"56210","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/9ead0851-c8d6-7576-0f7d-c34e0695fdd1/stream?static=true&mediaSourceId=9ead0851c8d675760f7dc34e0695fdd1&streamOptions=%7B%7D","headers":{"X-Forwarded-Host":["media.gnas.duckdns.org"],"Range":["bytes=2983444007-"],"Accept-Encoding":["identity"],"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"],"X-Forwarded-For":["192.168.1.223"],"Icy-Metadata":["1"],"X-Forwarded-Proto":["https"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gnas.duckdns.org"}} ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.005586001 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 ERR ERR ERR ERR ERR ERR ERR ERR ts=1717566104.1948254 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.005586001 request={"remote_ip":"192.168.1.223","remote_port":"56210","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/9ead0851-c8d6-7576-0f7d-c34e0695fdd1/stream?static=true&mediaSourceId=9ead0851c8d675760f7dc34e0695fdd1&streamOptions=%7B%7D","headers":{"X-Forwarded-Host":["media.gnas.duckdns.org"],"Range":["bytes=2983444007-"],"Accept-Encoding":["identity"],"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"],"X-Forwarded-For":["192.168.1.223"],"Icy-Metadata":["1"],"X-Forwarded-Proto":["https"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.223:56210: write: connection reset by peer

Caddyfile

{
	acme_ca https://acme-v02.api.letsencrypt.org/directory
	acme_dns duckdns secret-token
}

gnas.duckdns.org:443 {
	tls {
		dns duckdns secret-token
	}

	encode zstd gzip

	reverse_proxy 192.168.1.9:80
}

*.gnas.duckdns.org:443 {
	tls {
		dns duckdns secret-token
	}

	encode zstd gzip

	@files host files.gnas.duckdns.org
	handle @files {
		reverse_proxy 192.168.1.9:8081
	}

	@tv host tv.gnas.duckdns.org
	handle @tv {
		reverse_proxy 192.168.1.9:8989
	}

	@dash host dash.gnas.duckdns.org
	handle @dash {
		reverse_proxy 192.168.1.9:8090
	}

	@ssh host ssh.gnas.duckdns.org
	handle @ssh {
		reverse_proxy 192.168.1.9:3000
	}

	@vault host vault.gnas.duckdns.org
	handle @vault {
		reverse_proxy vaultwarden:80
		# reverse_proxy /notifications/hub vaultwarden:3012
	}

	@notes host notes.gnas.duckdns.org
	handle @notes {
		reverse_proxy 192.168.1.9:22300
	}

	@movies host movies.gnas.duckdns.org
	handle @movies {
		reverse_proxy 192.168.1.9:7878
	}

	@subs host subs.gnas.duckdns.org
	handle @subs {
		reverse_proxy 192.168.1.9:6767
	}

	@docks host docks.gnas.duckdns.org
	handle @docks {
		reverse_proxy 192.168.1.9:9000
	}

	# @speedtest host speedtest.gnas.duckdns.org
	# handle @speedtest {
	#      request_body {
	#         max_size 1GB
	#     }
	#    reverse_proxy 192.168.1.9:3003
	# }

	@flare host flare.gnas.duckdns.org
	handle @flare {
		reverse_proxy 192.168.1.9:8191
	}

	@torrents host torrents.gnas.duckdns.org
	handle @torrents {
		reverse_proxy 192.168.1.9:8080
	}

	@photos host photos.gnas.duckdns.org
	handle @photos {
		reverse_proxy 192.168.1.9:8089
	}

	@sync host sync.gnas.duckdns.org
	handle @sync {
		reverse_proxy 192.168.1.9:8384
	}

	@backup host backup.gnas.duckdns.org
	handle @backup {
		reverse_proxy 192.168.1.9:8200
	}

	@indexer host indexer.gnas.duckdns.org
	handle @indexer {
		reverse_proxy 192.168.1.9:9117
	}

	@monitor host monitor.gnas.duckdns.org
	handle @monitor {
		reverse_proxy 192.168.1.9:19999
	}

	@media host media.gnas.duckdns.org
	handle @media {
		reverse_proxy 192.168.1.9:8096
		# reverse_proxy 192.168.1.9:8920
		# reverse_proxy 192.168.1.9:7359
		# reverse_proxy 192.168.1.9:1900
	}

	# @adguard host adguard.gnas.duckdns.org
	# handle @adguard {
	#     reverse_proxy adguardhome:80
	#     reverse_proxy adguardhome:53
	#     reverse_proxy adguardhome:67
	#     reverse_proxy adguardhome:68
	#     reverse_proxy adguardhome:443
	#     reverse_proxy adguardhome:3000
	#     reverse_proxy adguardhome:853
	#     reverse_proxy adguardhome:784
	#     reverse_proxy adguardhome:8853
	#     reverse_proxy adguardhome:5443
	# }
}

adguard-gnas.duckdns.org:443 {
	tls {
		dns duckdns secret-token
	}

	encode zstd gzip

	reverse_proxy adguardhome:80
}

Howdy @fedonr, that looks like some pretty crazy error output.

Would you mind filling out a Help topic template? Just so we can get details about your version, install and run methods, etc.

2 Likes

Hello, thank you for the revert. Sure let me share the details.

1. The problem I’m having:

I am trying to run wildcards, where on a duckdns domain, where one of them is Jellyfin, while everything else works, Jellyfin also does work but it throws continuous errors in Caddy when I trying to stream something on Jellyfin. Here streaming works fine for 20 minutes or so even with continuous errors, but after that 20 minutes entire caddy instance goes down where all my URLs in Caddyfile stops working for minute or 2, and after 2 minutes it would come back up automatically but it would happen again if I continue streaming on Jellyfin. (Local IP:Port of Jellyfin works flawlessly without any errors on Jellyfin’s end)

2. Error messages and/or full log output:

INF ts=1717630445.6574082 msg=using provided configuration config_file=/etc/caddy/Caddyfile config_adapter=caddyfile
INF ts=1717630445.700362 logger=admin msg=admin endpoint started address=localhost:2019 enforce_origin=false origins=["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]
INF ts=1717630445.7198641 logger=tls.cache.maintenance msg=started background certificate maintenance cache=0xc0005e5000
INF ts=1717630445.7203054 logger=http.auto_https msg=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
INF ts=1717630445.7203777 logger=http.auto_https msg=enabling automatic HTTP->HTTPS redirects server_name=srv0
INF ts=1717630445.7670023 logger=http msg=enabling HTTP/3 listener addr=:443
INF ts=1717630445.7671943 msg=failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes for details.
INF ts=1717630445.767435 logger=http.log msg=server running name=srv0 protocols=["h1","h2","h3"]
INF ts=1717630445.7676134 logger=http.log msg=server running name=remaining_auto_https_redirects protocols=["h1","h2","h3"]
INF ts=1717630445.7676334 logger=http msg=enabling automatic TLS certificate management domains=["gnas.duckdns.org","*.gnas.duckdns.org","adguard-gnas.duckdns.org"]
WRN ts=1717630446.027174 logger=tls msg=storage cleaning happened too recently; skipping for now storage=FileStorage:/data/caddy instance=6f75b3cc-b2f1-439b-933a-f7d88671a120 try_again=1717716846.0271678 try_again_in=86399.999998938
INF ts=1717630446.0273783 logger=tls msg=finished cleaning storage units
INF ts=1717630446.0485334 msg=autosaved config (load with --resume flag) file=/config/caddy/autosave.json
INF ts=1717630446.048561 msg=serving initial configuration
ERR ts=1717639170.3562548 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.407909895 request={"remote_ip":"192.168.1.223","remote_port":"59032","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/cf51c1742a46ae3dc341d1201bc8e166/stream.mkv?Static=true&mediaSourceId=cf51c1742a46ae3dc341d1201bc8e166&deviceId=SmVsbHlmaW5NZWRpYVBsYXllciAxLjcuMSAod2luZG93cy14ODZfNjQgMTApfDE2Njg4Nzg3NzIzMzM1&api_key=09713071671a440e954a9d162385e92c&Tag=06bf5365cb407ee3687f4d46f56e0658","headers":{"X-Forwarded-Host":["media.gnas.duckdns.org"],"Icy-Metadata":["1"],"User-Agent":["JellyfinMediaPlayer"],"Accept":["*/*"],"Range":["bytes=5303949911-"],"X-Forwarded-For":["192.168.1.223"],"X-Forwarded-Proto":["https"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"","server_name":"media.gnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.223:59032: write: connection reset by peer
ERR ts=1717639385.3135998 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.026370395 request={"remote_ip":"192.168.1.223","remote_port":"53816","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/aa0551be21409d31227c208a73450bd7/stream.mkv?Static=true&mediaSourceId=aa0551be21409d31227c208a73450bd7&deviceId=SmVsbHlmaW5NZWRpYVBsYXllciAxLjcuMSAod2luZG93cy14ODZfNjQgMTApfDE2Njg4Nzg3NzIzMzM1&api_key=b828b13e6f1e4ea08fc0948dc4151111&Tag=0bd3d16c273a481df9f23e9a055f4d3b","headers":{"Range":["bytes=0-"],"X-Forwarded-For":["192.168.1.223"],"Icy-Metadata":["1"],"User-Agent":["JellyfinMediaPlayer"],"Accept":["*/*"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gnas.duckdns.org"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"","server_name":"media.gnas.duckdns.org"}} error=reading: context canceled
ERR ts=1717639391.3371725 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.063473184 request={"remote_ip":"192.168.1.223","remote_port":"53852","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/aa0551be21409d31227c208a73450bd7/stream.mkv?Static=true&mediaSourceId=aa0551be21409d31227c208a73450bd7&deviceId=SmVsbHlmaW5NZWRpYVBsYXllciAxLjcuMSAod2luZG93cy14ODZfNjQgMTApfDE2Njg4Nzg3NzIzMzM1&api_key=b828b13e6f1e4ea08fc0948dc4151111&Tag=0bd3d16c273a481df9f23e9a055f4d3b","headers":{"Range":["bytes=3543309760-"],"X-Forwarded-For":["192.168.1.223"],"Icy-Metadata":["1"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gnas.duckdns.org"],"User-Agent":["JellyfinMediaPlayer"],"Accept":["*/*"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"","server_name":"media.gnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.223:53852: write: connection reset by peer
ERR ts=1717639394.2098138 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.404245576 request={"remote_ip":"192.168.1.223","remote_port":"53862","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/aa0551be21409d31227c208a73450bd7/stream.mkv?Static=true&mediaSourceId=aa0551be21409d31227c208a73450bd7&deviceId=SmVsbHlmaW5NZWRpYVBsYXllciAxLjcuMSAod2luZG93cy14ODZfNjQgMTApfDE2Njg4Nzg3NzIzMzM1&api_key=b828b13e6f1e4ea08fc0948dc4151111&Tag=0bd3d16c273a481df9f23e9a055f4d3b","headers":{"Icy-Metadata":["1"],"User-Agent":["JellyfinMediaPlayer"],"Accept":["*/*"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gnas.duckdns.org"],"Range":["bytes=3245733806-"],"X-Forwarded-For":["192.168.1.223"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"","server_name":"media.gnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.223:53862: write: connection reset by peer
ERR ts=1717639397.2365308 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.493236025 request={"remote_ip":"192.168.1.223","remote_port":"53866","client_ip":"192.168.1.223","proto":"HTTP/1.1","method":"GET","host":"media.gnas.duckdns.org","uri":"/Videos/aa0551be21409d31227c208a73450bd7/stream.mkv?Static=true&mediaSourceId=aa0551be21409d31227c208a73450bd7&deviceId=SmVsbHlmaW5NZWRpYVBsYXllciAxLjcuMSAod2luZG93cy14ODZfNjQgMTApfDE2Njg4Nzg3NzIzMzM1&api_key=b828b13e6f1e4ea08fc0948dc4151111&Tag=0bd3d16c273a481df9f23e9a055f4d3b","headers":{"User-Agent":["JellyfinMediaPlayer"],"Accept":["*/*"],"Range":["bytes=3814398220-"],"X-Forwarded-For":["192.168.1.223"],"Icy-Metadata":["1"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gnas.duckdns.org"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"","server_name":"media.gnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.223:53866: write: connection reset by peer

3. Caddy version:

v2.8.4 (Docker Container) (in a separate Docker Macvlan)

4. How I installed and ran Caddy:

Using the Docker container (in a separate Docker Macvlan) with the custom Caddy module for Duckdns

a. System environment:

Running Caddy as a Docker container (in a separate Docker Macvlan)

Host OS: OpenMediaVault 7.1.1-1 (based on Debian 12)

Docker Version: docker-ce 5:26.1.3-1~debian.12~bookworm

Now here 192.168.1.9 is my host IP, but as Caddy is in the Docker Macvlan, it can not communicate with Host IP, so I have a bridge network on Host with IP 192.168.1.223, using which Caddy would be able to see host IP 192.168.1.9

b. Command:

docker run -d \
  --name unicad \
  --restart unless-stopped \
  --ip 192.168.1.197 \
  --dns 9.9.9.9 \
  --network="net" \
  -p 80:80 \
  -p 443:443 \
  -v /drive1t/dockerconf/caddy/caddy:/usr/bin/caddy \
  -v /drive1t/dockerconf/caddy/Caddyfile:/etc/caddy/Caddyfile:rw \
  -v /drive1t/dockerconf/caddy/caddy-config:/config \
  -v /drive1t/dockerconf/caddy/caddy-data:/data \
  -e DOMAIN=gnas.duckdns.org \
  -e EMAIL=nas@gmail.com \
  -e TOKEN=secret-token \
  -e LOG_FILE=/data/access.log \
  -e DUCKDNS_DOMAIN=https://gnas.duckdns.org \
  -e DUCKDNS_TOKEN=secret-token \
  caddy:latest

d. My complete Caddy config:

{
	acme_ca https://acme-v02.api.letsencrypt.org/directory
	acme_dns duckdns secret-token
}

gnas.duckdns.org:443 {
	tls {
		dns duckdns secret-token
	}

	encode zstd gzip

	reverse_proxy 192.168.1.9:80
}

*.gnas.duckdns.org:443 {
	tls {
		dns duckdns secret-token
	}

	encode zstd gzip

	@files host files.gnas.duckdns.org
	handle @files {
		reverse_proxy 192.168.1.9:8081
	}

	@tv host tv.gnas.duckdns.org
	handle @tv {
		reverse_proxy 192.168.1.9:8989
	}

	@dash host dash.gnas.duckdns.org
	handle @dash {
		reverse_proxy 192.168.1.9:8090
	}

	@ssh host ssh.gnas.duckdns.org
	handle @ssh {
		reverse_proxy 192.168.1.9:3000
	}

	@vault host vault.gnas.duckdns.org
	handle @vault {
		reverse_proxy vaultwarden:80
		# reverse_proxy /notifications/hub vaultwarden:3012
	}

	@notes host notes.gnas.duckdns.org
	handle @notes {
		reverse_proxy 192.168.1.9:22300
	}

	@movies host movies.gnas.duckdns.org
	handle @movies {
		reverse_proxy 192.168.1.9:7878
	}

	@subs host subs.gnas.duckdns.org
	handle @subs {
		reverse_proxy 192.168.1.9:6767
	}

	@docks host docks.gnas.duckdns.org
	handle @docks {
		reverse_proxy 192.168.1.9:9000
	}

	# @speedtest host speedtest.gnas.duckdns.org
	# handle @speedtest {
	#      request_body {
	#         max_size 1GB
	#     }
	#    reverse_proxy 192.168.1.9:3003
	# }

	@flare host flare.gnas.duckdns.org
	handle @flare {
		reverse_proxy 192.168.1.9:8191
	}

	@torrents host torrents.gnas.duckdns.org
	handle @torrents {
		reverse_proxy 192.168.1.9:8080
	}

	@photos host photos.gnas.duckdns.org
	handle @photos {
		reverse_proxy 192.168.1.9:8089
	}

	@sync host sync.gnas.duckdns.org
	handle @sync {
		reverse_proxy 192.168.1.9:8384
	}

	@backup host backup.gnas.duckdns.org
	handle @backup {
		reverse_proxy 192.168.1.9:8200
	}

	@indexer host indexer.gnas.duckdns.org
	handle @indexer {
		reverse_proxy 192.168.1.9:9117
	}

	@monitor host monitor.gnas.duckdns.org
	handle @monitor {
		reverse_proxy 192.168.1.9:19999
	}

	@media host media.gnas.duckdns.org
	handle @media {
		reverse_proxy 192.168.1.9:8096
		# reverse_proxy 192.168.1.9:8920
		# reverse_proxy 192.168.1.9:7359
		# reverse_proxy 192.168.1.9:1900
	}

	# @adguard host adguard.gnas.duckdns.org
	# handle @adguard {
	#     reverse_proxy adguardhome:80
	#     reverse_proxy adguardhome:53
	#     reverse_proxy adguardhome:67
	#     reverse_proxy adguardhome:68
	#     reverse_proxy adguardhome:443
	#     reverse_proxy adguardhome:3000
	#     reverse_proxy adguardhome:853
	#     reverse_proxy adguardhome:784
	#     reverse_proxy adguardhome:8853
	#     reverse_proxy adguardhome:5443
	# }
}

adguard-gnas.duckdns.org:443 {
	tls {
		dns duckdns secret-token
	}

	encode zstd gzip

	reverse_proxy adguardhome:80
}

If you use the acme_dns global option, then you don’t need to also repeat it inside your sites with tls > dns.

You can remove this line, this is simply re-stating the default.

This usually means Caddy couldn’t write to the connection because the connection was closed by the client (i.e. browser or whatever). I don’t know why that would happen in your case though.

2 Likes

Thank you for the insight. As that is the only wildcard that throws the errors, while everything else works great.

I have removed the redundant data like TLS and defaults.

However if this Jellyfin issue can be solved it would be a great help, as such errors starts as soon as I start streaming, and after 20 minutes or so everything would crash making all my URLs in Caddyfile do dark for 2 to 3 minutes after which it would come back up automatically, where streaming again would cause the same issue

What do you mean by “everything would crash” though? We haven’t seen any “crash logs” or whatever. You haven’t shown evidence of Caddy shutting down, or logs just before it shuts down. Does your server run out of memory or something? Is your server just severely underpowered?

I proxy Jellyfin with Caddy and never have problems. I know many others do as well. No special config necessary, just simply reverse_proxy to Jellyfin.

2 Likes

Just to throw in as well, I also reverse-proxy Jellyfin, just a single reverse_proxy jellyfin:8096 in the site block, no other config, no errors.

3 Likes

Yes so I have also noticed this issues recently after updating to Jellyfin 10.9 and above.

And yes I am not able to fetch the logs during the crash, as that happens very randomly.

Caddy would keep giving me the logs for Jellyfin with reset by peer etc. And still the streaming would work. But sometimes within 10 to 20 minutes of streaming. Jellyfin would suddenly stop playing, and that is also the time all my URLs from Caddyfile(reverse proxies) would stop working for 1 to 2 minutes and it would come back up automatically. And this loop repeats if I use the Jellyfin Streaming again (this issue and error logs only happen after I start any stream on Jellyfin- Tried using both linux server and official Docker Images of Jellyfin)

1 Like

Tried using a different URL in caddyfile only for Jellyfin, the new Duckdns link (no wildcards). Still the same.

ERR ts=1717736164.8409603 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.002019252 request={"remote_ip":"192.168.1.9","remote_port":"41620","client_ip":"192.168.1.9","proto":"HTTP/1.1","method":"GET","host":"gharomv.duckdns.org","uri":"/Videos/b7413af1fb4a3c24c1b4a6cf486f4718/stream.mkv?Static=true&mediaSourceId=b7413af1fb4a3c24c1b4a6cf486f4718&deviceId=SmVsbHlmaW5NZWRpYVBsYXllciAxLjcuMSAod2luZG93cy14ODZfNjQgMTApfDE2Njg4Nzg3NzIzMzM1&api_key=927ccc50c1e0476d937fef746968a7ca&Tag=7804b1af1b40fb6cf7b6d339629fdbec","headers":{"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["gharomv.duckdns.org"],"Range":["bytes=2071919510-"],"X-Forwarded-For":["192.168.1.9"],"Icy-Metadata":["1"],"User-Agent":["JellyfinMediaPlayer"],"Accept":["*/*"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"","server_name":"gharomv.duckdns.org"}} error=writing: write tcp 192.168.1.9:443->192.168.1.9:41620: write: connection reset by peer

Is it possible this is a clientside / network side issue?

Does it happen with only one PC/phone/etc or does Caddy stop responding to all requests from all clients for all configured websites?

Do you see write: connection reset by peer errors for all of your Jellyfin clients or only one?

1 Like

It happens when I use the Direct Play clients like Official Jellyfin Media Player on Windows PC, Findroid on Android, it does not happen when using Web based streaming.

While using Web based streaming it gives me the below error sometimes but not as frequent.

ERR ts=1717737865.2096539 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.9:8096 duration=0.003095551 request={"remote_ip":"192.168.1.9","remote_port":"59408","client_ip":"192.168.1.9","proto":"HTTP/3.0","method":"GET","host":"gharomv.duckdns.org","uri":"/videos/b7413af1-fb4a-3c24-c1b4-a6cf486f4718/hls1/main/344.mp4?DeviceId=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyNS4wLjAuMCBTYWZhcmkvNTM3LjM2fDE3MTc3Mzc4MjE1MTI1&MediaSourceId=b7413af1fb4a3c24c1b4a6cf486f4718&VideoCodec=av1,hevc,h264,h264&AudioCodec=aac,opus,flac&AudioStreamIndex=3&VideoBitrate=139616000&AudioBitrate=384000&MaxFramerate=23.976025&PlaySessionId=11fcea9a597640d08eb84bedc62a7c56&api_key=f1f1cd548f4d4798b721b290909cbef2&SubtitleMethod=Encode&TranscodingMaxAudioChannels=2&RequireAvc=false&Tag=7804b1af1b40fb6cf7b6d339629fdbec&SegmentContainer=mp4&MinSegments=1&BreakOnNonKeyFrames=True&h264-level=40&h264-videobitdepth=8&h264-profile=high&h264-rangetype=SDR&h264-deinterlace=true&TranscodeReasons=ContainerNotSupported,%20AudioCodecNotSupported&runtimeTicks=20640620000&actualSegmentLengthTicks=60060000","headers":{"Sec-Fetch-Dest":["empty"],"Sec-Fetch-Site":["same-origin"],"X-Forwarded-Proto":["https"],"Sec-Fetch-Mode":["cors"],"Accept-Language":["en-US,en;q=0.5"],"Priority":["u=1, i"],"Sec-Gpc":["1"],"Sec-Ch-Ua-Platform":["\"Windows\""],"Accept":["*/*"],"User-Agent":["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"],"Accept-Encoding":["gzip, deflate, br, zstd"],"X-Forwarded-For":["192.168.1.9"],"Sec-Ch-Ua":["\"Brave\";v=\"125\", \"Chromium\";v=\"125\", \"Not.A/Brand\";v=\"24\""],"Sec-Ch-Ua-Mobile":["?0"],"X-Forwarded-Host":["gharomv.duckdns.org"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h3","server_name":"gharomv.duckdns.org"}} error=writing: H3_REQUEST_CANCELLED

Here I have reverse proxied Jellyfin on new URL from Duckdns and also transferred over Jellyfin container and Caddy container to Host (192.168.1.9) to avoid any complications

Just an update, such reset by peer issues still happen when using Direct play clients, did the new clean installation of Openmediavault 7, Jellyfin and Caddy on my new test machine. Results are consistent.

That looks like an HTTP/3 error. Want to try disabling HTTP/3?

{
   servers {
       protocols h1 h2
   }
}
1 Like

Yes so I did that that, I still get

ERR ts=1719082288.7063768 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.10:8096 duration=0.00377029 request={"remote_ip":"192.168.1.16","remote_port":"35346","client_ip":"192.168.1.16","proto":"HTTP/1.1","method":"GET","host":"media.gharnas.duckdns.org","uri":"/Videos/1fe8ff7b-5056-dfe5-3b86-c66cc691e05e/stream?static=true&mediaSourceId=1fe8ff7b5056dfe53b86c66cc691e05e&streamOptions=%7B%7D","headers":{"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gharnas.duckdns.org"],"X-Forwarded-For":["192.168.1.16"],"Icy-Metadata":["1"],"Accept-Encoding":["identity"],"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gharnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.16:35346: write: connection reset by peer
ERR ts=1719082289.0001006 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.10:8096 duration=0.003585345 request={"remote_ip":"192.168.1.16","remote_port":"35348","client_ip":"192.168.1.16","proto":"HTTP/1.1","method":"GET","host":"media.gharnas.duckdns.org","uri":"/Videos/1fe8ff7b-5056-dfe5-3b86-c66cc691e05e/stream?static=true&mediaSourceId=1fe8ff7b5056dfe53b86c66cc691e05e&streamOptions=%7B%7D","headers":{"Range":["bytes=6359-"],"Accept-Encoding":["identity"],"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gharnas.duckdns.org"],"X-Forwarded-For":["192.168.1.16"],"Icy-Metadata":["1"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gharnas.duckdns.org"}} error=reading: context canceled
ERR ts=1719082301.2471807 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.10:8096 duration=0.004441733 request={"remote_ip":"192.168.1.16","remote_port":"35350","client_ip":"192.168.1.16","proto":"HTTP/1.1","method":"GET","host":"media.gharnas.duckdns.org","uri":"/Videos/1fe8ff7b-5056-dfe5-3b86-c66cc691e05e/stream?static=true&mediaSourceId=1fe8ff7b5056dfe53b86c66cc691e05e&streamOptions=%7B%7D","headers":{"Icy-Metadata":["1"],"Range":["bytes=167912866-"],"Accept-Encoding":["identity"],"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"],"X-Forwarded-For":["192.168.1.16"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gharnas.duckdns.org"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gharnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.16:35350: write: broken pipe
ERR ts=1719082307.5944998 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.10:8096 duration=0.013238071 request={"remote_ip":"192.168.1.16","remote_port":"35362","client_ip":"192.168.1.16","proto":"HTTP/1.1","method":"GET","host":"media.gharnas.duckdns.org","uri":"/Videos/1fe8ff7b-5056-dfe5-3b86-c66cc691e05e/stream?static=true&mediaSourceId=1fe8ff7b5056dfe53b86c66cc691e05e&streamOptions=%7B%7D","headers":{"X-Forwarded-Host":["media.gharnas.duckdns.org"],"Icy-Metadata":["1"],"Range":["bytes=391483707-"],"Accept-Encoding":["identity"],"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"],"X-Forwarded-For":["192.168.1.16"],"X-Forwarded-Proto":["https"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gharnas.duckdns.org"}} error=writing: write tcp 192.168.1.197:443->192.168.1.16:35362: write: broken pipe
ERR ts=1719082321.2695239 logger=http.handlers.reverse_proxy msg=aborting with incomplete response upstream=192.168.1.10:8096 duration=0.018047286 request={"remote_ip":"192.168.1.16","remote_port":"35364","client_ip":"192.168.1.16","proto":"HTTP/1.1","method":"GET","host":"media.gharnas.duckdns.org","uri":"/Videos/1fe8ff7b-5056-dfe5-3b86-c66cc691e05e/stream?static=true&mediaSourceId=1fe8ff7b5056dfe53b86c66cc691e05e&streamOptions=%7B%7D","headers":{"User-Agent":["Dalvik/2.1.0 (Linux; U; Android 13; LM-F100 Build/TKQ1.220829.002)"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["media.gharnas.duckdns.org"],"X-Forwarded-For":["192.168.1.16"],"Icy-Metadata":["1"],"Range":["bytes=344403096-"],"Accept-Encoding":["identity"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"media.gharnas.duckdns.org"}} error=reading: context canceled

Those errors mean that Caddy is proxying correctly but something is interrupting the connection between the proxy and the client. I would triple check your network configuration.

1 Like