# Design Rationale — git-pages → Nginx + PV > Päivitetty: 2026-06-28 — git-pages korvattu Nginx + upload-sidecar -arkkitehtuurilla. ## Miksi git-pages poistettiin Codeberg git-pages storage v2 pakottaa kaikki tiedostot yhteen `.index`-protobufiin per site. Raja on 1MB kovakoodattu. Monorepo täytti tämän — uusia raportteja ei voinut julkaista. ## Uusi arkkitehtuuri - **Nginx** palvelee staattisia tiedostoja suoraan PV:ltä - **Upload-sidecar** (busybox httpd + CGI) ottaa vastaan PUT + tar.gz ja purkaa PV:lle - **URL = FS-polku** — `/{owner}/{repo}/{branch}/{sha8}/{suite}/` - **Branch raakana URL:ssa** — `feature/x` FS:ssä = `feature/x/` - **Linkki on aina 1-suuntainen** — gitea → raportti - **GITEA_API_URL poistuu** publish-skriptin pakollisista env-varista ## Ratkaisun periaatteet ### 1. Ei välikerrosta — tiedostot suoraan PV:llä git-pagesin `.index`-protobuf poistuu. Tiedostot ovat suoraan PV:llä kansiorakenteessa. Nginx palvelee niitä suoraan. ### 2. Yksinkertainen upload-sidecar Python HTTP-serveri ottaa vastaan PUT-pyynnöt ja purkaa tar.gz:n oikeaan paikkaan. Ei monimutkaista API:a, ei tietokantaa. ### 3. Julkaisu ja luku eri porteilla Eri portit mahdollistavat eri Traefik-säännöt: julkaisu vaatii BasicAuthin, luku on julkinen. ### 4. Retention lukee PV:tä suoraan Ei HTTP API:a retentionia varten. Skripti listaa kansiot, tarkistaa branchit Giteasta, poistaa vanhat. ## Rajapinnat | Suunta | Protokolla | Auth | Kuvaus | |--------|------------|------|--------| | Julkaisija → Traefik | HTTPS PUT | BasicAuth `publish` | tar.gz → upload-sidecar | | Selain → Traefik | HTTPS GET/HEAD | — | HTML-raportti nginxiltä | | Retention → Gitea | HTTPS GET | PAT | branch-tarkistus | | Traefik → nginx | HTTP :8080 | — | sisäverkko | | Traefik → upload | HTTP :8081 | — | sisäverkko (BasicAuth tarkistettu) |