ADR-011: статика игры вынесена из куба на nginx (LXC 152 game-web), версии каталогами

- корень smart-updown.binom.pw -> nginx на Proxmox (LXC 152, 192.168.76.152)
- /api,/ws -> куб (router PathPrefix на внешнем Traefik VDS), куб не менялся
- версионирование: /opt/game/releases/<N>/, активная = симлинк /opt/game/current
- tools/proxmox-nginx: unpack-release.sh, publish-release.sh, game.nginx.conf, smart-updown.traefik.yaml, README
- приёмка живьём: корень 200 nginx/1.24.0 (Ubuntu), /27/ /28/ 200, /api/state 200 JSON, /api/ws цена, autoclose-check 9/9
- питфоллы: OCI-manifest в skopeo dir-дампе, слэш в конце версии, /solana-rpc мимо PathPrefix /api
This commit is contained in:
Porfiry
2026-09-15 17:07:30 +03:00
parent 21a3a37a66
commit f105c1adff
8 changed files with 405 additions and 2 deletions
@@ -0,0 +1,62 @@
http:
# ── middlewares ─────────────────────────────────────────────────────────
middlewares:
# Подмена Host на входе в куб — k3s-Traefik роутит именно по Host,
# а ingress `smart-updown-api` объявлен на smart-updown.binom.pw.
smart-updown-host:
headers:
customRequestHeaders:
Host: "smart-updown.binom.pw"
smart-updown-redirect-https:
redirectScheme:
scheme: https
permanent: true
# ── routers ─────────────────────────────────────────────────────────────
routers:
# API и WebSocket игры: уходят в k3s (192.168.76.120) на ingress
# `smart-updown-api` (ns game), дальше в TS-шлюз :8895.
# Отдельный router потому, что PathPrefix специфичнее Host:
# так /api и /ws не перехватываются статикой nginx.
smart-updown-api-router:
rule: "Host(`smart-updown.binom.pw`) && (PathPrefix(`/api`) || PathPrefix(`/ws`))"
service: smart-updown-api
entryPoints:
- websecure
tls:
certResolver: mycloudflare
# Корень: статика игры. Раздаёт nginx на LXC 152 (game-web, 192.168.76.152)
# в домашней сети через wg-туннель. Версии — каталогами (/28/, /29/, ...),
# корень — активная сборка (симлинк /opt/game/current).
smart-updown-router:
rule: Host(`smart-updown.binom.pw`)
service: smart-updown
entryPoints:
- websecure
tls:
certResolver: mycloudflare
# http -> https
smart-updown-http-redirect:
rule: Host(`smart-updown.binom.pw`)
entryPoints:
- web
service: noop
middlewares:
- smart-updown-redirect-https
# ── services ────────────────────────────────────────────────────────────
services:
smart-updown-api:
loadBalancer:
servers:
- url: "http://192.168.76.120"
smart-updown:
loadBalancer:
servers:
- url: "http://192.168.76.152"
noop:
loadBalancer:
servers:
- url: "http://127.0.0.1:9"