Terraform config under terraform/ manages the two existing VPS hosts and hands the app to docker-compose, with local state: - prod: the new 48GB/12-core VPS (release branch, thermograph.org), sized larger. - beta: the old VPS 75.119.132.91 (main branch, testing tier), no public domain. - The LAN dev box stays on deploy/deploy-dev.sh (dev branch) — out of Terraform. A reusable module (modules/thermograph-host) SSHes each host to install docker/ compose/ufw (+ Caddy when a domain is set), sync the checkout to the host's branch, render /etc/thermograph.env from Terraform variables (secrets pushed via provisioner content, never on local disk), `docker compose up -d`, and health-check. Named volumes are preserved on re-apply, so the Postgres data is never recreated. Container resources are now env-driven in docker-compose.yml (APP_CPUS/DB_CPUS/ DB_MEMORY/WORKERS) with unchanged defaults, so Terraform can size each host.
18 lines
672 B
Text
18 lines
672 B
Text
# /etc/caddy/Caddyfile — RENDERED BY TERRAFORM for ${domain}.
|
|
# Caddy provisions a Let's Encrypt cert on first request and auto-renews; the domain's
|
|
# A/AAAA record must already point at this host and ports 80/443 must be open.
|
|
#
|
|
# The app owns the domain root and runs with THERMOGRAPH_BASE=/, so everything is
|
|
# reverse-proxied to the single uvicorn on 127.0.0.1:${port}.
|
|
#
|
|
# NOTE: the repo's deploy/Caddyfile additionally serves the emigriffith.dev portfolio
|
|
# and legacy redirects; those are host-specific and intentionally not templated here.
|
|
${domain} {
|
|
encode zstd gzip
|
|
|
|
reverse_proxy 127.0.0.1:${port}
|
|
|
|
log {
|
|
output file /var/log/caddy/thermograph.log
|
|
}
|
|
}
|