From f43212df7f245d51c140ea2acf03b9964dfc5127 Mon Sep 17 00:00:00 2001 From: Mieszko Makuch Date: Sun, 6 Sep 2026 15:32:39 +0200 Subject: [PATCH] demo article: diagrams moved here from the code repo (uploads/diagrams), deploy docs pointer updated --- news/architektura-demo-git-cms.md | 12 +- pages/contact.md | 4 +- pages/disclaimer.md | 2 +- pages/privacy.md | 2 +- uploads/diagrams/architektura-cms-z-baza.svg | 110 ++++++++++++++++++ uploads/diagrams/architektura-maszyna.svg | 111 +++++++++++++++++++ uploads/diagrams/cover-git-cms.svg | 78 +++++++++++++ uploads/diagrams/od-zapisu-do-publikacji.svg | 76 +++++++++++++ uploads/diagrams/powierzchnia-ataku.svg | 48 ++++++++ 9 files changed, 433 insertions(+), 10 deletions(-) create mode 100644 uploads/diagrams/architektura-cms-z-baza.svg create mode 100644 uploads/diagrams/architektura-maszyna.svg create mode 100644 uploads/diagrams/cover-git-cms.svg create mode 100644 uploads/diagrams/od-zapisu-do-publikacji.svg create mode 100644 uploads/diagrams/powierzchnia-ataku.svg diff --git a/news/architektura-demo-git-cms.md b/news/architektura-demo-git-cms.md index 1b7517b..ef04678 100644 --- a/news/architektura-demo-git-cms.md +++ b/news/architektura-demo-git-cms.md @@ -4,7 +4,7 @@ description: "Architektura rozwiązania, przydatne linki i porównanie klas rozw date: 2026-07-23 category: demo author: Cyfronet -cover: /diagrams/cover-git-cms.svg +cover: /uploads/diagrams/cover-git-cms.svg lang: pl draft: false --- @@ -19,7 +19,7 @@ tego uczciwie niżej. Ten artykuł został napisany i opublikowany dokładnie t ## Od zapisu do publikacji -![Pięć kroków publikacji: zapis w edytorze → commit w repo → detekcja zmiany → build strony → publikacja](/diagrams/od-zapisu-do-publikacji.svg) +![Pięć kroków publikacji: zapis w edytorze → commit w repo → detekcja zmiany → build strony → publikacja](/uploads/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 @@ -27,14 +27,14 @@ na stronie, bez żadnego ręcznego deployu. Każda zmiana to commit, więc ## 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) +![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](/uploads/diagrams/architektura-maszyna.svg) Dla porównania — ta sama maszyna z klasycznym CMS-em. Układ diagramu jest celowo identyczny, żeby różnice było widać na pierwszy rzut oka: tu każdy element działa bez przerwy, a panel logowania i aplikacja są wystawione do internetu. -![Architektura klasycznego CMS z bazą danych: aplikacja z publicznym panelem admina i renderowaniem na żądanie działa non stop, obok baza danych wymagająca backupów i wolumen mediów](/diagrams/architektura-cms-z-baza.svg) +![Architektura klasycznego CMS z bazą danych: aplikacja z publicznym panelem admina i renderowaniem na żądanie działa non stop, obok baza danych wymagająca backupów i wolumen mediów](/uploads/diagrams/architektura-cms-z-baza.svg) ## Gdzie co jest @@ -44,14 +44,14 @@ do internetu. | Edytor treści | `/admin/` (link „Content editor" w stopce) | | Gitea (repo `ctao/portal`) | port 3000 na maszynie demo | | Konto demo | użytkownik `ctao` (hasło u prowadzącego demo) | -| Dokumentacja wdrożenia | katalog `deploy/` w repo: `README.md` (runbook) i `DEPLOY-LOG.md` (pełna historia decyzji) | +| Dokumentacja wdrożenia | katalog `deploy/` w repo kodu: `README.md` (runbook) | Całość działa w podmanie na jednej maszynie: kontener Gitei, kontener nginx i jednorazowy kontener builda odpalany przez systemd timer. ## Dlaczego strona statyczna -![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) +![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](/uploads/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. diff --git a/pages/contact.md b/pages/contact.md index 30df917..8d2135a 100644 --- a/pages/contact.md +++ b/pages/contact.md @@ -3,10 +3,10 @@ title: Contact description: How to reach the CTAO and the Science Portal team. --- -*Demo page — final wording will be provided by the CTAO Central Organisation.* +*Demo page. Final wording will be provided by the CTAO Central Organisation.* - **General enquiries:** see the contact section on [ctao.org](https://www.ctao.org/) -- **Science user support:** help desk, FAQ and user forum — via [User Support](/support) (integration planned) +- **Science user support:** help desk, FAQ and user forum, via [User Support](/support) (integration planned) - **Portal (technical):** SUSS Science Portal team For media and outreach enquiries, please use the channels listed on the CTAO website. diff --git a/pages/disclaimer.md b/pages/disclaimer.md index f92e376..ef5ad7c 100644 --- a/pages/disclaimer.md +++ b/pages/disclaimer.md @@ -3,7 +3,7 @@ title: Disclaimer description: Terms of use of the CTAO Science Portal. --- -*Demo page — the final terms of use will be provided by the CTAO Central +*Demo page. The final terms of use will be provided by the CTAO Central Organisation.* ## Content credit diff --git a/pages/privacy.md b/pages/privacy.md index e363967..a9f9d6c 100644 --- a/pages/privacy.md +++ b/pages/privacy.md @@ -3,7 +3,7 @@ title: Privacy statement description: How the CTAO Science Portal handles personal data. --- -*Demo page — the final privacy statement will be provided by the CTAO Central +*Demo page. The final privacy statement will be provided by the CTAO Central Organisation.* Sign-in and account information are handled by the central **CTAO AAI** diff --git a/uploads/diagrams/architektura-cms-z-baza.svg b/uploads/diagrams/architektura-cms-z-baza.svg new file mode 100644 index 0000000..8b4db31 --- /dev/null +++ b/uploads/diagrams/architektura-cms-z-baza.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + MASZYNA · CMS Z BAZĄ DANYCH + np. WordPress, Strapi, Drupal — wspólny schemat tej klasy rozwiązań + + + + + + + + Redaktor + panel admina w przeglądarce + logowanie do aplikacji + + + + + + + + Czytelnik + publiczna strona portalu + HTML składany na żądanie + + + + + + APLIKACJA CMS + + NON STOP + + panel admina + publiczny adres + logowanie + z internetu + + renderowanie stron + każde wejście czytelnika = + praca aplikacji i bazy + + pluginy / rozszerzenia + własny cykl aktualizacji + i podatności + + + + + + BAZA DANYCH + + NON STOP + treść + konta użytkowników + wymaga backupów i testów odtwarzania + migracje schematu przy aktualizacjach + historia zmian: zależnie od produktu, + bywa funkcją płatną + + + + + + media/ + + WOLUMEN + obrazy i pliki poza bazą + osobny backup + + + + logowanie do panelu + + + HTML na żądanie + + + SQL + + + upload + + + + 2 procesy działają bez przerwy, także nocą + + aktualizacje bezpieczeństwa = stały obowiązek + diff --git a/uploads/diagrams/architektura-maszyna.svg b/uploads/diagrams/architektura-maszyna.svg new file mode 100644 index 0000000..bda902b --- /dev/null +++ b/uploads/diagrams/architektura-maszyna.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + MASZYNA DEMO · PODMAN + osobne kontenery pod systemd · wszystko w jednym katalogu użytkownika + + + + + + + + Redaktor + przeglądarka · /admin/ (Sveltia) + edycja WYSIWYG, podgląd 1:1 + + + + + + + + Czytelnik + publiczna strona portalu + czysty, szybki HTML + + + + + + GITEA + + :3000 + + repo ctao/portal + treść: Markdown + obrazy (WebP) + każda zmiana = commit + pełna historia + rollback za darmo + + + + + + BUILD · ASTRO + + KONTENER JEDNORAZOWY + timer systemd (co ~10 s) sprawdza, + czy w repo jest nowy commit + jeśli tak: git fetch → checkout → + Markdown → statyczny HTML + po buildzie kontener znika + + + + + + releases/ + + WOLUMEN + 9f2c1d/ poprzednia wersja + 71b980/ ← current (symlink) + podmiana atomowa — zero przestoju + + + + + + NGINX + + :8080 + serwuje releases/current + wyłącznie statyczne pliki + brak aplikacji · brak bazy · brak PHP + + + + zapis przez API (OAuth) + + + git fetch + + + nowa wersja strony + + + current/ + + + statyczny HTML + diff --git a/uploads/diagrams/cover-git-cms.svg b/uploads/diagrams/cover-git-cms.svg new file mode 100644 index 0000000..565f5fe --- /dev/null +++ b/uploads/diagrams/cover-git-cms.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + M↓ + + diff --git a/uploads/diagrams/od-zapisu-do-publikacji.svg b/uploads/diagrams/od-zapisu-do-publikacji.svg new file mode 100644 index 0000000..471b2ad --- /dev/null +++ b/uploads/diagrams/od-zapisu-do-publikacji.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + Zapis w edytorze + Sveltia · WYSIWYG + podgląd artykułu 1:1 + obrazy → WebP przy uploadzie + + + Commit w repo + Gitea · logowanie OAuth + zapis przez API = commit + historia każdej zmiany + + + Detekcja zmiany + timer systemd + sprawdza repo co ~10 s + brak zmian = brak pracy + + + Build strony + jednorazowy kontener + Astro: Markdown → + statyczny HTML + + + Publikacja + atomowa podmiana symlinka + nginx od razu serwuje + nową wersję + + + + awaria builda? strona działa dalej na starej wersji + + rollback = git revert — jedna komenda + diff --git a/uploads/diagrams/powierzchnia-ataku.svg b/uploads/diagrams/powierzchnia-ataku.svg new file mode 100644 index 0000000..b887430 --- /dev/null +++ b/uploads/diagrams/powierzchnia-ataku.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + CMS Z BAZĄ DANYCH + internet + + + ▪ aplikacja CMS (PHP / Node) — publiczna + ▪ panel logowania — publiczny + ▪ baza danych z treścią + ▪ pluginy i zależności + wszystko działa non stop i wymaga patchowania + + + + + + TO ROZWIĄZANIE + internet + + + ▪ pliki HTML — i nic więcej + nie ma czego zhakować ani patchować + + edycja + + + ▪ git (Gitea) — tylko zalogowani + poza ścieżką czytelnika — awaria nie kładzie strony +