100 lines
2.9 KiB
Caddyfile
100 lines
2.9 KiB
Caddyfile
{
|
||
# Global Caddy options.
|
||
#
|
||
# auto_https on
|
||
# - Caddy listens on port 80 for every host (ACME + redirect).
|
||
# - Automatically issues HTTPS certificates.
|
||
# - Automatically redirects HTTP → HTTPS unless disabled.
|
||
#
|
||
}
|
||
|
||
# ------------------------------------------------------------
|
||
# Redirect www → root domain
|
||
# ------------------------------------------------------------
|
||
www.avaaz.ai {
|
||
# Permanent redirect to naked domain
|
||
redir https://avaaz.ai{uri} permanent
|
||
}
|
||
|
||
# ------------------------------------------------------------
|
||
# Marketing site (optional — if frontend handles it, remove this)
|
||
# Redirect root → app
|
||
# ------------------------------------------------------------
|
||
avaaz.ai {
|
||
# If you have a static marketing page, serve it here.
|
||
# If not, redirect visitors to the app.
|
||
redir https://app.avaaz.ai{uri}
|
||
}
|
||
|
||
# ------------------------------------------------------------
|
||
# Frontend (Next.js)
|
||
# Public URL: https://app.avaaz.ai
|
||
# Internal target: frontend:3000
|
||
# ------------------------------------------------------------
|
||
app.avaaz.ai {
|
||
# Reverse-proxy HTTPS traffic to the frontend container
|
||
reverse_proxy frontend:3000
|
||
|
||
# Access log for debugging frontend activity
|
||
log {
|
||
output file /data/app-access.log
|
||
}
|
||
|
||
# Compression for faster delivery of JS, HTML, etc.
|
||
encode gzip zstd
|
||
}
|
||
|
||
# ------------------------------------------------------------
|
||
# Backend (FastAPI)
|
||
# Public URL: https://api.avaaz.ai
|
||
# Internal target: backend:8000
|
||
# ------------------------------------------------------------
|
||
api.avaaz.ai {
|
||
# Reverse-proxy all API traffic to FastAPI
|
||
reverse_proxy backend:8000
|
||
|
||
# Access log — useful for monitoring API traffic and debugging issues
|
||
log {
|
||
output file /data/api-access.log
|
||
}
|
||
|
||
# Enable response compression (JSON, text, etc.)
|
||
encode gzip zstd
|
||
}
|
||
|
||
# ------------------------------------------------------------
|
||
# LiveKit (signaling only — media uses direct UDP)
|
||
# Public URL: wss://rtc.avaaz.ai
|
||
# Internal target: livekit:7880
|
||
# ------------------------------------------------------------
|
||
rtc.avaaz.ai {
|
||
# LiveKit uses WebSocket signaling, so we reverse-proxy WS → WS
|
||
reverse_proxy livekit:7880
|
||
|
||
# Access log — helps diagnose WebRTC connection failures
|
||
log {
|
||
output file /data/rtc-access.log
|
||
}
|
||
|
||
# Compression not needed for WS traffic, but harmless
|
||
encode gzip zstd
|
||
}
|
||
|
||
# ------------------------------------------------------------
|
||
# Gitea (Git server UI + HTTPS + SSH clone)
|
||
# Public URL: https://git.avaaz.ai
|
||
# Internal target: gitea:3000
|
||
# ------------------------------------------------------------
|
||
git.avaaz.ai {
|
||
# Route all HTTPS traffic to Gitea’s web UI
|
||
reverse_proxy gitea:3000
|
||
|
||
# Log all Git UI requests and API access
|
||
log {
|
||
output file /data/git-access.log
|
||
}
|
||
|
||
# Compress UI responses
|
||
encode gzip zstd
|
||
}
|