Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- infra/caddy/Caddyfile: git.* and ci.* proxies live now; main-site block (with WP 301 redirects) commented until cutover day - infra/gitea and infra/woodpecker: Docker Compose bound to localhost behind Caddy, with .env.example for the Woodpecker OAuth credentials - docs/server-setup.md: every command from ordering the CX22 through the end-to-end translation test, plus the cutover-day checklist Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017z2rT1oN7vMS4ggo23n5WG
64 lines
2.0 KiB
Caddyfile
64 lines
2.0 KiB
Caddyfile
# /etc/caddy/Caddyfile — copy this file there, then: sudo systemctl reload caddy
|
|
#
|
|
# Caddy fetches and renews Let's Encrypt certificates automatically the first
|
|
# time a domain's DNS points at this server. git.* and ci.* work immediately;
|
|
# the vienalatina.com block stays commented until cutover day (Sunday evening),
|
|
# because Caddy can only get its certificate once the A record points here.
|
|
|
|
git.vienalatina.com {
|
|
reverse_proxy 127.0.0.1:3000
|
|
}
|
|
|
|
ci.vienalatina.com {
|
|
reverse_proxy 127.0.0.1:8000
|
|
}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# UNCOMMENT EVERYTHING BELOW ON CUTOVER DAY (after flipping the A record)
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# www.vienalatina.com {
|
|
# redir https://vienalatina.com{uri} 301
|
|
# }
|
|
#
|
|
# vienalatina.com {
|
|
# root * /var/www/vienalatina.com
|
|
# encode zstd gzip
|
|
# file_server
|
|
#
|
|
# # llms.txt is markdown (matches the old WP behaviour)
|
|
# header /llms.txt Content-Type "text/markdown; charset=utf-8"
|
|
#
|
|
# # --- 301s for old WordPress URL patterns -----------------------------
|
|
#
|
|
# # /?p=123 style permalinks → home (add specific mappings as GSC reports them)
|
|
# @wp_query_permalink {
|
|
# path /
|
|
# query p=*
|
|
# }
|
|
# redir @wp_query_permalink / 301
|
|
#
|
|
# # WP category base was /categoria/… (Spanish slugs); Hugo uses /categories/…
|
|
# @old_category path_regexp oldcat ^/categoria/(.*)$
|
|
# redir @old_category /categories/{re.oldcat.1} 301
|
|
#
|
|
# # WP author archives have no Hugo equivalent → home
|
|
# @old_author path /autor/*
|
|
# redir @old_author / 301
|
|
#
|
|
# # Old WP media library URLs → migrated uploads folder
|
|
# @old_uploads path_regexp oldup ^/wp-content/uploads/(?:\d{4}/\d{2}/)?(.*)$
|
|
# redir @old_uploads /uploads/{re.oldup.1} 301
|
|
#
|
|
# # Anything else that starts with /wp- doesn't exist anymore
|
|
# @wp_leftovers path /wp-admin/* /wp-login.php /wp-json/* /xmlrpc.php
|
|
# redir @wp_leftovers / 301
|
|
#
|
|
# # Custom 404 falls back to Hugo's 404 page
|
|
# handle_errors {
|
|
# @404 expression {err.status_code} == 404
|
|
# rewrite @404 /404.html
|
|
# file_server
|
|
# }
|
|
# }
|