a13e6b40ce
/docs has a left navigation and eleven pages written for players first, then hosters, then contributors: what Horizon is, install, settings, multiplayer, logs and bug reports, hosting (the launcher's Servers page and the command line), modpacks, mods and data packs, performance, contributing and the FAQ. /server redirects to /docs/hosting. The build checks every link between the pages and every image. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49 lines
1.9 KiB
Caddyfile
49 lines
1.9 KiB
Caddyfile
# Serves dist/ on Railway's $PORT. Fingerprinted CSS and JS are cached for a year,
|
|
# media for a week, and the page itself is always revalidated. The site lives at
|
|
# https://playhorizon.dev: Railway's own *.up.railway.app address redirects there, so the
|
|
# page is indexed once. Railway's healthcheck (Host: healthcheck.railway.app) is still served.
|
|
{
|
|
admin off
|
|
auto_https off
|
|
persist_config off
|
|
}
|
|
|
|
:{$PORT:8080} {
|
|
root * /srv
|
|
|
|
@railway header_regexp Host ^[^.]+\.up\.railway\.app(:[0-9]+)?$
|
|
redir @railway https://playhorizon.dev{uri} permanent
|
|
encode zstd gzip
|
|
|
|
header {
|
|
X-Content-Type-Options nosniff
|
|
Referrer-Policy strict-origin-when-cross-origin
|
|
X-Frame-Options DENY
|
|
Permissions-Policy "interest-cohort=(), browsing-topics=(), camera=(), microphone=(), geolocation=()"
|
|
Content-Security-Policy "default-src 'self'; script-src 'self' {$CSP_SCRIPT}; style-src 'self' {$CSP_STYLE}; img-src 'self' data: https://avatars.githubusercontent.com; font-src 'self'; connect-src 'self' https://api.github.com https://raw.githubusercontent.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self'"
|
|
-Server
|
|
}
|
|
@assets path /assets/*
|
|
header @assets Cache-Control "public, max-age=31536000, immutable"
|
|
@media path /media/* /fonts/* /og.png /favicon* /apple-touch-icon.png
|
|
header @media Cache-Control "public, max-age=604800"
|
|
# The server guide became a section of the documentation.
|
|
redir /server /docs/hosting permanent
|
|
redir /server.html /docs/hosting permanent
|
|
rewrite /privacy /privacy.html
|
|
@doc path_regexp doc ^/docs/([a-z-]+)$
|
|
rewrite @doc /docs/{re.doc.1}.html
|
|
@pages path / /index.html /404.html /privacy.html /docs /docs/* /sitemap.xml
|
|
header @pages Cache-Control "no-cache"
|
|
@legal path /LEGAL.md /fonts/*.txt
|
|
header @legal Content-Type "text/plain; charset=utf-8"
|
|
|
|
file_server {
|
|
hide .csp-script .csp-style og.html
|
|
}
|
|
handle_errors {
|
|
rewrite * /404.html
|
|
file_server
|
|
}
|
|
}
|