89 lines
2.6 KiB
Caddyfile
89 lines
2.6 KiB
Caddyfile
# ----------------------------------------------------------------------------
|
|
# jb-website — Caddy site config.
|
|
#
|
|
# Routing model (see docs/planning.md §6.2):
|
|
# joshbairstow.com -> /srv/* (apex / home)
|
|
# blog.joshbairstow.com -> /srv/blog/* (writing archive + posts)
|
|
# art.joshbairstow.com -> /srv/art/* (generative art focus view)
|
|
# code.joshbairstow.com -> /srv/code/* (experiments & tools)
|
|
#
|
|
# Each block points at the same /srv directory but uses `root` with the path
|
|
# prefix appropriate to the subdomain. Caddy handles HTTPS via the automatic
|
|
# ACME / Let's Encrypt flow at the email address below.
|
|
#
|
|
# Local dev: see the `localhost` block at the bottom — Caddy listens on :8080
|
|
# with no TLS so `docker compose up` works out of the box on a laptop.
|
|
# ----------------------------------------------------------------------------
|
|
{
|
|
# Replace with the address you want ACME-challenge contact / cert-expiry mail at.
|
|
email josh@joshbairstow.com
|
|
}
|
|
|
|
# ---- apex ------------------------------------------------------------------
|
|
joshbairstow.com, www.joshbairstow.com {
|
|
root * /srv
|
|
encode zstd gzip
|
|
file_server
|
|
try_files {path} {path}/index.html /404.html
|
|
|
|
@www host www.joshbairstow.com
|
|
redir @www https://joshbairstow.com{uri} permanent
|
|
}
|
|
|
|
# ---- blog ------------------------------------------------------------------
|
|
blog.joshbairstow.com {
|
|
root * /srv/blog
|
|
encode zstd gzip
|
|
# Assets and the canvas-island JS live at /_astro and /assets on the apex build.
|
|
# Re-route them from the subdomain root by falling through to the parent /srv.
|
|
@asset path /_astro/* /assets/*
|
|
handle @asset {
|
|
root * /srv
|
|
file_server
|
|
}
|
|
handle {
|
|
file_server
|
|
try_files {path} {path}/index.html /srv/404.html
|
|
}
|
|
}
|
|
|
|
# ---- art -------------------------------------------------------------------
|
|
art.joshbairstow.com {
|
|
root * /srv/art
|
|
encode zstd gzip
|
|
@asset path /_astro/* /assets/*
|
|
handle @asset {
|
|
root * /srv
|
|
file_server
|
|
}
|
|
handle {
|
|
file_server
|
|
try_files {path} {path}/index.html /srv/404.html
|
|
}
|
|
}
|
|
|
|
# ---- code ------------------------------------------------------------------
|
|
code.joshbairstow.com {
|
|
root * /srv/code
|
|
encode zstd gzip
|
|
@asset path /_astro/* /assets/*
|
|
handle @asset {
|
|
root * /srv
|
|
file_server
|
|
}
|
|
handle {
|
|
file_server
|
|
try_files {path} {path}/index.html /srv/404.html
|
|
}
|
|
}
|
|
|
|
# ---- local dev (no TLS) ----------------------------------------------------
|
|
# Hit http://localhost:8080 to preview the built apex; the subdomain rewrites
|
|
# above only fire when accessed by their real hostnames.
|
|
:8080 {
|
|
root * /srv
|
|
encode zstd gzip
|
|
file_server
|
|
try_files {path} {path}/index.html /404.html
|
|
}
|