prometheus/deploy/prometheus-x.conf

49 lines
1.9 KiB
Text
Raw Normal View History

# prometheus.x — the standalone service, served by this VPS.
#
# BCNR serves this name via its `ip`+`tls` records: Theseus and Ariadne
# resolve prometheus.x by fetching the on-chain record, which says
# "connect to <this IP>, pin the TLS cert whose DER sha256 equals <this
# fingerprint>". The resolver reverse-proxies to this vhost; a browser
# with Ariadne's Thread installed does the same.
#
# The cert is self-signed and pinned on chain — no CA is involved and
# none needs to be, which is a narrower claim than a CA makes and does
# not expire on anyone else's schedule. Rotating is one record update.
#
# To regenerate the cert and read out its DER sha256:
# bash /opt/prometheus/deploy/make-tls-cert.sh
#
# The vhost listens only on HTTPS; the on-chain `tls` pin means plain
# HTTP would be refused by the resolver anyway, and we do not want a
# scanner to be able to read ANYTHING here over cleartext.
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name prometheus.x;
ssl_certificate /etc/ssl/prometheus-x/fullchain.pem;
ssl_certificate_key /etc/ssl/prometheus-x/privkey.pem;
# The TLS resolver reaches us over the raw IP but passes `prometheus.x`
# as the Host header. The service's canonical URL generator looks at
# that header; preserving it keeps rel=canonical honest.
location / {
proxy_pass http://127.0.0.1:3700;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
prometheus: 200 MiB upload cap + Caddy block fix for the "<" error Two bugs under one roof. The visible one: a publisher uploading anything over 10 MB on the live site got "Network error — Unexpected token '<'" in the browser console. Cause: the Caddy block I wrote for prometheus.x had `request_body { max_size 2GB }` nested inside the handle block, where it is a syntax Caddy parses but does not apply, so Caddy's own 10 MB default was still the gate. Any oversize POST got Caddy's HTML 413 page, which the browser's JSON parser choked on at the leading `<`. Fix: moved `request_body { max_size … }` to the top of the prometheus.x site block (outside `handle`), where Caddy actually honours it. The live Caddyfile on p2pexchange is already patched + reloaded; a 50 MB upload verified through the end-to-end path (Caddy → service → clamd → signed scan report). The scope one: 2 GiB was more than Prometheus should offer to publishers at launch. Mobile apps are usually ~100 MB and even most desktop installers come in well under 200 MiB. Dropping to 200 MiB: - Fits every Android APK and most desktop installers. - Shrinks the operator's Sia storage bill (fewer accidental Steam-size uploads). - Keeps the "publishers of larger binaries self-host and submit a manifest with the external URL + SHA" escape hatch — the scanner still fetches the URL and checks the hash, so a 5 GB game isn't locked out, Prometheus just doesn't eat its storage. Changes: service/uploads.js MAX_FILE_BYTES default: 2 GiB → 200 MiB service/pages.js /submit step-1 subtitle: "any size up to 2 GiB" → "up to 200 MiB" deploy/prometheus-x.conf (unused angie fallback) 2g → 200m deploy/apps-silentmode-st.conf (unused angie fallback) 2g → 200m PROMETHEUS_MAX_UPLOAD_BYTES env still overrides per-instance.
2026-10-22 23:20:19 +03:00
# 200 MiB fits Android APKs and most desktop installers; matches the
# service's own cap in uploads.js. Publishers of larger binaries
# self-host and submit a manifest with the external URL + SHA.
client_max_body_size 200m;
proxy_request_buffering off;
proxy_buffering off;
proxy_read_timeout 120s;
}
}