Rasadnik Milić · Plant Garden · status

Infrastruktura

Na čemu ovo radi danas, na čemu bi trebalo raditi sutra, i koja jedna odluka stoji između to dvoje.

Prvo mjerenje 16. rujna 2026. · putanje i gate premjereni 18. rujna 2026., nakon podjele Odlučeno: način posluživanja · Neodlučeno: paket poslužitelja, 58 dana Jedini stroj u pogonu: sync-probe.rasadnik-milic.hr (nadzor zaliha) Provjereno u repozitoriju, ne po dokumentaciji

Putanje i gate premjereni 18. rujna 2026. Stranica je pisana 16. rujna, dan prije podjele monorepa, pa je govorila o jednom repozitoriju i jednoj naredbi. Dvije tvrdnje su time pale: daljinski repozitorij više nije jedan, i gate više nije npm run check. Oboje je ispravljeno uz naredbu; gdje se brojka promijenila, piše i što je ovdje stajalo. Ono što podjela nije dirnula — nijedan poslužitelj trgovine, nijedan pipeline, nijedna sigurnosna kopija — stoji nepromijenjeno, jer se infrastruktura rezom repozitorija ne gradi.

Presuda u jednoj rečenici

Jedan poslužitelj postoji, i to onaj koji nadzire zalihe. Trgovina nema svoj — ni produkcijski ni probni. Način posluživanja je odlučen (statični Astro + Vendure API), veličina i cijena su izračunate, ali izbor paketa stoji neodlučen od 20. srpnja i drži roadmap stavku 12.

1poslužitelj u pogonu (nexus)
0poslužitelja za trgovinu
7repozitorija s .gitlab-ci.yml
18. 9. · 22 h · ujutro ih je bilo 0
23ručnih deployeva 16. 9.
18. 9. · premjereno iz ansible.log, ovdje je pisalo 20
58dana neodlučeno (paket)

Gdje smo i kamo idemo tri stupca, isti crtež

Infrastruktura danas, u dev okolini i u produkciji Danas radi jedan poslužitelj za nadzor zaliha, WordPress trgovina i vlasnikov laptop; trgovina nema nijedan poslužitelj. Dev okolina dodaje runner stroj i jedan dev stroj, uz Cloudflare na besplatnoj razini. Produkcija po paketu B dodaje odvojenu bazu i staging po potrebi. Danas Dev — sljedeći korak Produkcija — paket B WordPress trgovinaživa · ≈ 120 €/mj sync-probenadzor zaliha · radi od 14. 9. vlasnikov laptopcijeli stack, samo lokalno trgovina: 0 poslužiteljani probni ni produkcijski runner strojnovo · ≈ 6,42 €/mj CX23 devPostgres · Vendure · Caddy Pages ×2 + R2besplatna razina · 0 € GitLab stateFree, sa zaključavanjem · 0 € CX33 aplikacijaVendure API + worker CX23 bazaPostgres + WAL arhiva CX23 stagingpo potrebi · ujedno vježba vraćanja Pages + R2 + kopijekopije kod drugog davatelja ≈ 120 €/mj sve za staru trgovinu ≈ 12,84 €/mj dva stroja; Cloudflare i state su 0 € ≈ 20–30 €/mj staging se gasi kad se ne koristi Dev i produkcija su ista stvar s drugim .tfvars — isti OpenTofu moduli, isti Ansible playbook, druga grupa u inventaru. Sva tri stupca zajedno ostaju ispod današnjih ≈ 120 €/mj za WordPress, i dok oba rade usporedo. Cijene su iz tablice od 20. 7. nakon Hetznerova poskupljenja od 15. 6. i nisu ponovno provjerene kod davatelja. Runner i dev su odvojeni strojevi (odluka 18. 9.): build traje 56 s i baš tada čita API s dev stroja, pa bi dijeljenje procesora bilo natjecanje sa samim sobom.

Što postoji danas

DioStanjeGdje
Repozitoriji na daljinuradi Deset ih je od 17. 9., pod grupom gitlab.com:plant-garden/ — devet u podgrupi flora-platform i sync-nexus u ecommerce-tools. Gura se ručno, u naletima. Do 18. 9. ovdje je stajao jedan: rasadnik-milic/nova-produkcija/new-way.git, koji je bio remote monorepa i danas ne pripada nijednom checkoutu u flora-baseu.git remote get-url origin po repozitoriju
Kontrolni poslužitelj (nexus)uživo od 14. 9. sync-probe.rasadnik-milic.hr, docker compose, isporuka Ansibleom, noćni posao retencije u 3:00. Jedini stroj koji ovaj projekt drži u pogonu.flora-base/sync-nexus/ansible/
Slika trgovine (Docker)postoji, ne vrti se flora-core/Dockerfile gradi server, ali je nijedan stroj ne pokreće.flora-core/Dockerfile
bilo ecommerce/Dockerfile
Razvojna bazaradi Postgres 16 u flora-core/compose.dev.yml, baza plant_garden na 5432, podaci u imenovanom volumenu. Kontejner se od podjele zove flora-core-postgres-1.flora-core/compose.dev.yml
CIfaze 1 i 2 rade Gate na svaki push, na vlastitom runneru (flora · zajednicki · cx23, GitLab Runner 19.4.0). Predložak je jedan — flora-infra/ci/gate.yml — a sedam repozitorija nosi po desetak redaka koji ga includeaju. Izmjereno na runneru: flora-base 33 testa / 8,7 s, flora-atlas 144 poveznice / 7,5 s, flora-libs 76 / 24,3 s, sync-nexus 650 / 85,6 s, flora-core 3.325 / 436 s. www-plant-garden-hr 75 / 70,4 s i www-plant-garden-si 78 / 68,8 s. faza 2 radi od 19. 9. Slika se gradi Kanikom i nosi dva taga — $CI_COMMIT_SHA i latest — skeneri (hadolint, Trivy nad slikom i nad lockfileom) se vrte zaključani digestom i padaju samo na porast iznad osnovice u repozitoriju, a dev stroj sliku povlači deploy tokenom opsega samo read_registry i pokreće je Quadlet jedinicama koje su ga čekale. Build 880 s, slika 411.751.879 B, 94 migracije → 149 tablica, backup + dokazani restore 11 s. api-dev.plant-garden.hr je Vendure 3.7.3, ne više naša stranica o nedostupnosti. faza 3 radi od 20. 9. Storefront .si se gradi na runneru protiv žive dev Vendure i diže wranglerom na Pages: build:si 246,2 s / 1.712 stranica, pages:si 41,8 s / 1.938 datoteka, deploy 1b32e901 na dev-v2.plant-garden.si. Build je zaseban job, gate je ostao type-check + test bez baze, a tree_clean se vrti i u buildu — bez www-plant-garden-hr u estateu pravni manifest padne s 8 na 3 unosa, i straža to hvata. Faze 4–6 čekaju.
do 20. 9. ovdje je stajalo „Faze 3–6 čekaju"; 18. 9. ujutro „ne postoji"; ./flora check i dalje radi isto lokalno
roadmap 3 · nalaz, poglavlja 11 i 12
Probna okolinapostoji za SI dev-v2.plant-garden.si je živ — curl 25. 9. vraća HTTP 200, s API-jem na flora-dev. Do 25. 9. je ovdje pisalo „ne postoji", što je prestalo biti točno kad je faza 3 objavila SI trgovinu. Ostaje otvoreno za HR i za prelazak na produkciju: ovo je mjesto na kojem se gradi i objavljuje, ne još i ono na kojem se prelazak uvježbava s podacima.roadmap 7 i 31
Isporuka storefrontaradi za .si od 20. 9. Naš runner gradi, wrangler diže na Cloudflare Pages, bez Workera. Pipeline #2865211959: build:si 246,2 s → 1.712 stranica, pages:si 41,8 s → 1.938 datoteka na projekt flora-dev-si. Stranica je dev-v2.plant-garden.si i vraća 200. .hr se i dalje ne objavljuje — flora-dev-hr nema ni domenu ni ijedan deploy, i ostaje samo susjed u estateu da pravni manifest ispadne cijel.
do 20. 9. ovdje je stajalo „ne postoji — odlučeno je kako, ali nijedan build nije objavljen"; provjereno nezavisno u izvještaju 10b
roadmap 40 · 10a, 10b
Sigurnosna kopija i nadzorne postoji za trgovinu. Lokalne kopije postoje samo za nexus i WP plugin, i to kao nusprodukt Ansible isporuke.roadmap 44 i 45

Odlučeno hosting-decision.md, 21. 7. 2026.

  • Statični Astro za sadržaj, Vendure API za sve što se brzo mijenja. Otočići čitaju Shop API iz preglednika, pa svaka produkcijska domena mora u storefrontOrigins — to je korak prelaska, ne kod.
  • Bez Astro Server Islanda, jer traže Workere. Dinamični dijelovi se učitavaju s klijenta, uz kratko prazno stanje.
  • Ponovna gradnja je način poništavanja predmemorije — pokreću je promjene dostupnosti, cijena i sadržaja.
  • Omnibus najniža cijena mijenja se s vremenom, pa dolazi kroz API ili se sajt gradi iznova.
  • Preusmjeravanja idu u _redirects, koji Pages podržava bez Workera; granica je oko 2.100 pravila.
  • Oblik URL-ova ostaje kakav je, da poveznice prežive prelazak.

Neodlučeno infrastructure-options.md, „Decision pending" od 20. 7. 2026.

Tri paketa su izračunata na pravoj veličini kataloga (1.545 proizvoda, 168.332 prodane jedinice kroz život trgovine). Traženi najgori slučaj nedostupnosti je ≤ 1 sat. Preporuka dokumenta je paket B.

PaketCijena/mj.Ispunjava ≤ 1 hGubitak podatakaTeret održavanja
A — jedan stroj≈ €10–15✗ (2–4 h)≤ 24 hnajmanji
B — app i baza odvojeno, PITR preporuka≈ €20–30✓ (30–60 min)minuteumjeren
C — B plus topla pričuva≈ €50–70✓✓ (5–15 min)sekundenajveći

Sva tri ostaju daleko ispod današnjih ≈ €120/mj. za WordPress, čak i dok oba sustava rade usporedno.

Četiri pitanja koja stoje prije odluke čeka vlasnika

  • Koliko zauzimaju slike na WordPressu — du -sh wp-content/uploads na starom poslužitelju.
  • Gdje se poslužuje storefront — veže se na odluku o hostingu; pun statični build je ≈ 3.100 stranica kroz oba jezika.
  • Gdje živi DNS domena — paket C traži nizak TTL i brzo širenje.
  • Potvrda cijena CX33 / CX43 u Hetznerovoj konzoli; javna obavijest o poskupljenju spominje samo CX23.

Razvojna okolina ono na čemu se radi danas

  • Jedna naredba diže sve — ./flora dev iz flora-basea pokreće Vendure, oba storefronta i sandučić, te ispiše blok poveznica kad odgovore. Do podjele je to bio npm run dev iz korijena monorepa; flora-base nema package.json, pa te naredbe ondje više nema. Redoslijed dizanja čita se iz repos.json.
  • Portovi nisu proizvoljni, i podjela ih nije promijenila: 3000 Vendure API i sandučić, 5175 Dashboard, 4331 HR i 4332 SI (repos.json, 18. 9.) — te dvije adrese su u razvojnom CORS popisu, pa otočić smije zvati Shop API.
  • Launcher sam nađe LAN adresu računala i objavi oba storefronta ostalim uređajima u mreži; LAN_HOST nadjačava.
  • Baza je u Dockeru, podaci u imenovanom volumenu — brisanje kontejnera ne briše bazu. Kontejner se od podjele zove flora-core-postgres-1, a compose.dev.yml je u flora-coreu.

Što ovdje još treba čime se ova stranica puni

  • Odluka o paketu, s datumom i obrazloženjem, pa infrastructure-options.md prelazi u Active. Nepromijenjeno — „Decision pending" od 20. 7., i podjela to nije ni pomaknula ni trebala pomaknuti.
  • Popis strojeva kad nastanu: uloga, veličina, tko im pristupa, gdje su ključevi. Nepromijenjeno, i dalje jedan stroj.
  • Domene, DNS i certifikati — tko ih drži, kad ističu, tko ih obnavlja. Nepromijenjeno.
  • Runbook za ispade — što se gasi, što se diže i koga se zove. Nepromijenjeno.
  • Riješeno 17.–18. 9.: kod više ne stoji u jednom repozitoriju. Deset ih je, svaki sa svojim remoteom i svojim gateom, a ./flora check ih vrti sve. To je preduvjet za fazu 1 pipelinea koji ne postoji — gate po repozitoriju je ono što CI treba pokretati — ali sam pipeline time nije ni započet.
  • Novo od podjele: usklađenost između repozitorija. sha-lock.json bilježi koji su commitovi išli zajedno, ali ništa ne provjerava da su ostali usklađeni. Dok je bio jedan repozitorij, to pitanje nije postojalo.
  • Put koda do produkcije i sigurnosne kopije imaju svoje tabove: CI/CD implementacija i Backup implementacija.