content: demo article — custom SVG diagrams (machine architecture, publish flow, attack surface) + cover, dated to sit second on the list

This commit is contained in:
2026-07-28 20:03:44 +02:00
parent 71b9808a11
commit 93712a1481
5 changed files with 322 additions and 26 deletions
+9 -26
View File
@@ -1,9 +1,10 @@
---
title: "Jak działa to demo: portal statyczny + CMS oparty o git"
description: "Architektura rozwiązania, przydatne linki i porównanie klas rozwiązań: strona w 100% statyczna z graficznym edytorem treści vs CMS z własną bazą danych."
date: 2026-07-28
date: 2026-07-23
category: demo
author: Cyfronet
cover: /diagrams/cover-git-cms.svg
draft: false
---
@@ -12,28 +13,18 @@ w repozytorium git. Redaktor dostaje **graficzny edytor w przeglądarce** —
a mimo to w produkcji nie działa żadna aplikacja, żadna baza danych.
Ten artykuł został napisany i opublikowany dokładnie tą ścieżką.
## Jak to działa
## Od zapisu do publikacji
```
redaktor (przeglądarka)
│ edycja WYSIWYG + upload obrazów
▼
Sveltia CMS (/admin/ — statyczne pliki JS, zero własnego backendu)
│ zapis = commit przez API (logowanie OAuth)
▼
Gitea (repozytorium: treść w Markdown + obrazy)
│ poller sprawdza nowe commity (systemd timer, co ~10 s)
▼
build w kontenerze (Astro: Markdown → HTML, ~225 stron)
│ atomowa podmiana symlinka na nową wersję
▼
nginx — serwuje wyłącznie statyczne pliki
```
![Pięć kroków publikacji: zapis w edytorze → commit w repo → detekcja zmiany → build strony → publikacja](/diagrams/od-zapisu-do-publikacji.svg)
Publikacja jest automatyczna — zapis w edytorze po chwili sam pojawia się
na stronie, bez żadnego ręcznego deployu. Każda zmiana to commit, więc
**pełna historia treści i możliwość cofnięcia są w gicie za darmo**.
## Jak to wygląda na maszynie
![Architektura na maszynie demo: redaktor zapisuje przez Sveltię do Gitei, timer systemd uruchamia jednorazowy kontener builda Astro, wynik trafia do wolumenu releases, a nginx serwuje czytelnikom wyłącznie statyczne pliki](/diagrams/architektura-maszyna.svg)
## Gdzie co jest
| Co | Gdzie |
@@ -49,15 +40,7 @@ i jednorazowy kontener builda odpalany przez systemd timer.
## Dlaczego strona statyczna
```
CMS z bazą danych: to rozwiązanie:
internet ──► aplikacja CMS (PHP/Node) internet ──► pliki HTML
+ baza danych (nie ma czego zhakować,
+ pluginy nie ma czego patchować)
▲ wszystko publiczne,
wszystko trzeba patchować edycja ──► git (tylko zalogowani)
```
![Porównanie powierzchni ataku: CMS z bazą wystawia publicznie aplikację, panel logowania, bazę i pluginy — tu publiczne są tylko pliki HTML, a edycja idzie przez git dla zalogowanych](/diagrams/powierzchnia-ataku.svg)
- **Bezpieczeństwo**: publicznie wystawione są tylko pliki. Nie istnieje
panel admina dostępny z internetu, baza do wykradzenia ani runtime z CVE.