diff --git a/Caddyfile b/Caddyfile index 25cb68a..cc9fc4e 100644 --- a/Caddyfile +++ b/Caddyfile @@ -56,6 +56,22 @@ api_key {$CROWDSEC_API_KEY:disabled} ticker_interval 15s } + + # ── Redis TCP proxy via layer4 ──────────────────────────────────────────── + # Exposes homelab Redis over TLS for Asynq job enqueueing from the backend. + # Listens on :6380 (all interfaces). TLS is terminated here using the cert + # for redis.libnovel.cc; traffic is proxied to the homelab Redis instance. + # Requires the caddy-l4 module in the custom Caddy build. + layer4 { + :6380 { + route { + tls + proxy { + upstream {$HOMELAB_REDIS_ADDR:192.168.0.109:6379} + } + } + } + } } (security_headers) { @@ -253,27 +269,3 @@ search.libnovel.cc { import security_headers reverse_proxy meilisearch:7700 } - -# ── Redis TCP proxy: exposes homelab Redis over TLS for Asynq ───────────────── -# The backend (prod) connects to rediss://redis.libnovel.cc:6380 to enqueue -# Asynq jobs. Caddy terminates TLS (Let's Encrypt cert for redis.libnovel.cc) -# and proxies the raw TCP stream to the homelab Redis via this reverse proxy. -# -# NOTE: Redis is NOT running on the prod server — it runs on the homelab -# (192.168.0.109:6379) and is exposed to the internet via this Caddy proxy. -# The homelab Redis is protected by REDIS_PASSWORD (requirepass). -# -# Caddy layer4 app handles this; requires the caddy-l4 module in the build. -{ - layer4 { - redis.libnovel.cc:6380 { - route { - tls - proxy { - # Homelab Redis — replace with actual homelab IP or FQDN - upstream {$HOMELAB_REDIS_ADDR:192.168.0.109:6379} - } - } - } - } -}