fix(caddy): *arr stack and qBittorrent are LAN-only at the edge
A missing Porkbun record was never the gate: Caddy issues one certificate per name and every one is in public CT logs, so the *arr hostnames were discoverable and the edge accepted them. Each of the five vhosts now carries a remote_ip source gate (LAN proxies through, everything else gets 404) - the posture the Sonarr comment already claimed. AGENTS.md records the LAN-gate shape as the required form of internal-only, and Caddy.md records why DNS secrecy is fiction.
This commit is contained in:
1 parent
52d6da4f49
commit
b5173033b6
3 files changed
+56
-9
No files matched your search
+42
-7
@@ -303,14 +303,31 @@ jelly.franksdank.cloud {
|
||||
}
|
||||
|
||||
|
||||
# --- *arr Stack (exempt by construction: own auth) ---
|
||||
|
||||
# --- *arr Stack + qBittorrent: LAN-ONLY at the edge (2026-11-04) -----------
|
||||
# Frank's law: these never leave the home boxes. DNS secrecy is NOT a gate —
|
||||
# Caddy issues one certificate per name and every one is in public CT logs
|
||||
# (crt.sh lists prowlarr/radarr/lidarr/readarr/qbittorrent.franksdank.cloud),
|
||||
# so a stranger can send the Host. The gate is the source address: a LAN client
|
||||
# proxies through, anything off-LAN gets 404. `remote_ip` reads the real client
|
||||
# address because the router DNATs the forward (no proxy hop in between).
|
||||
prowlarr.franksdank.cloud {
|
||||
reverse_proxy 192.168.0.112:9696
|
||||
@lan remote_ip 127.0.0.1/32 ::1/128 192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
|
||||
handle @lan {
|
||||
reverse_proxy 192.168.0.112:9696
|
||||
}
|
||||
handle {
|
||||
respond 404
|
||||
}
|
||||
}
|
||||
|
||||
radarr.franksdank.cloud {
|
||||
reverse_proxy 192.168.0.112:7878
|
||||
@lan remote_ip 127.0.0.1/32 ::1/128 192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
|
||||
handle @lan {
|
||||
reverse_proxy 192.168.0.112:7878
|
||||
}
|
||||
handle {
|
||||
respond 404
|
||||
}
|
||||
}
|
||||
|
||||
# --- Sonarr: internal-only by construction (retired 2026-09-04) -----------
|
||||
@@ -321,15 +338,33 @@ radarr.franksdank.cloud {
|
||||
# zero-auth UI to the internet via manual DNS — retired.
|
||||
|
||||
lidarr.franksdank.cloud {
|
||||
reverse_proxy 192.168.0.112:8686
|
||||
@lan remote_ip 127.0.0.1/32 ::1/128 192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
|
||||
handle @lan {
|
||||
reverse_proxy 192.168.0.112:8686
|
||||
}
|
||||
handle {
|
||||
respond 404
|
||||
}
|
||||
}
|
||||
|
||||
readarr.franksdank.cloud {
|
||||
reverse_proxy 192.168.0.112:8787
|
||||
@lan remote_ip 127.0.0.1/32 ::1/128 192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
|
||||
handle @lan {
|
||||
reverse_proxy 192.168.0.112:8787
|
||||
}
|
||||
handle {
|
||||
respond 404
|
||||
}
|
||||
}
|
||||
|
||||
qbittorrent.franksdank.cloud {
|
||||
reverse_proxy 192.168.0.112:8080
|
||||
@lan remote_ip 127.0.0.1/32 ::1/128 192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
|
||||
handle @lan {
|
||||
reverse_proxy 192.168.0.112:8080
|
||||
}
|
||||
handle {
|
||||
respond 404
|
||||
}
|
||||
}
|
||||
|
||||
# --- Internal listener: auth decision layer ---------------------------------
|
||||
|
||||
Reference in new issue
Block a user