[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technology-pl-terraform":3,"technology-projects-pl-terraform":28,"mdc-a1kxzj-key":75},{"id":4,"title":5,"category":6,"content":7,"description":8,"extension":9,"faq":10,"icon":11,"links":12,"meta":21,"projects":22,"since":24,"stem":25,"updated":26,"__hash__":27},"technologies_pl\u002Fpl\u002Ftechnologies\u002Fterraform.yml","Terraform","infrastructure","Terraform opisuje infrastrukturę w plikach konfiguracyjnych i zarządza zasobami za pomocą dostawców, czyli providerów. Korzystam z niego w infrastrukturze DigiPulse, aby konfigurację usług łatwiej było przeglądać i odtwarzać.\n\n## Konfiguracja i plan zmian\n\nProvider Docker daje Terraform dostęp do zasobów Dockera. Wspólna konfiguracja może opisywać podobne środowiska z różnymi zmiennymi wejściowymi. Każde wymaga własnego planu uwzględniającego aktualny stan: zapisany plan nie jest szablonem do użycia w innym środowisku.\n\n## Przestrzenie robocze i sekrety\n\nPrzestrzenie robocze CLI rozdzielają stan, ale nie stanowią granicy uprawnień. Pliki stanu i planu mogą zawierać sekrety nawet dla wartości oznaczonych jako sensitive. Środowiska wymagające silniejszej izolacji potrzebują osobnych danych dostępowych, chronionego magazynu stanu i odpowiednich uprawnień.\n\n## Infrastruktura a wydania aplikacji\n\nKonfiguracja infrastruktury opisuje zasoby i zależności, a wydania aplikacji mogą przechodzić przez oddzielny proces CI\u002FCD. Terraform wykrywa różnice między opisanym a rzeczywistym stanem podczas tworzenia planu, ale nie zapobiega stale ręcznym zmianom. Plan trzeba przejrzeć przed zastosowaniem, zwłaszcza gdy przewiduje wymianę lub usunięcie zasobu.\n","Infrastruktura jako kod z Terraform: zasoby Docker, konfiguracje środowisk i weryfikacja zmian przed wdrożeniem usług SaaS.","yml",null,"i-simple-icons-terraform",[13,18],{"label":14,"to":15,"color":16,"icon":17},"terraform.io","https:\u002F\u002Fdeveloper.hashicorp.com\u002Fterraform","neutral","i-heroicons-arrow-top-right-on-square",{"label":19,"to":20,"color":16,"icon":17},"Dokumentacja techniczna","https:\u002F\u002Fdeveloper.hashicorp.com\u002Fterraform\u002Flanguage\u002Fstate\u002Fworkspaces",{},[23],"digipulse","2024","pl\u002Ftechnologies\u002Fterraform","2026-09-20","jMqJSey4AfcW-qZffND8YXpjxYVmA2B8B9O_Nrp6v0c",[29],{"id":30,"title":31,"content":32,"date":33,"description":34,"extension":9,"featured":35,"image":36,"links":37,"meta":46,"stack":47,"stem":69,"tags":70,"url":40,"__hash__":74},"projects_pl\u002Fpl\u002Fprojects\u002Fdigipulse.yml","DigiPulse","SaaS do monitorowania dostępności — sprawdzanie co 60 sekund, śledzenie wygaśnięcia SSL, powiadomienia przez Telegram i email. Panel administracyjny i podstawowy backend zbudowane na Laravel (Octane, websockety Reverb) i Filament, a silnik monitorujący to osobny serwis w Go. Integracja logowania Google OAuth i Cloudflare Turnstile. Zawiera serwer MCP, który udostępnia dane monitoringu bezpośrednio asystentom AI. Self-hosted na Proxmox.\n\n## Kluczowe funkcje\n\n- **Dedykowany silnik w Go** - sprawdzanie dostępności wykonuje osobny serwis w Go, więc ciągłe odpytywanie co 60 sekund nie spowalnia aplikacji Laravel\n- **Dashboard w czasie rzeczywistym** - websockety Reverb przesyłają zmiany statusu do UI na żywo, bez odświeżania\n- **Octane + Filament** - Laravel rezydentny w pamięci z pełnym panelem administracyjnym dla monitorów, kontaktów i reguł alertów\n- **Serwer MCP** - monitory i incydenty dostępne dla asystentów AI (Claude, Cursor) przez Model Context Protocol\n- **Google OAuth + Turnstile** - logowanie bez hasła i ochrona przed botami na formularzach publicznych\n- **Self-hosted** - wdrożone na własnym homelab Proxmox, którym zarządzam end-to-end\n\n## Stos technologiczny\n\n- **Backend**: Laravel (Octane, websockety Reverb)\n- **Panel administracyjny**: Filament\n- **Silnik monitorujący**: Go (osobny serwis)\n- **Baza danych**: PostgreSQL\n- **Integracja AI**: Serwer MCP\n- **Infrastruktura**: Self-hosted na Proxmox\n","2026-04-17","SaaS do monitorowania dostępności: architektura event-driven — Laravel (Octane, Reverb) i Filament wysyłają zadania przez Redis do lekkiego workera w Go; serwer MCP udostępnia dane monitoringu asystentom AI; powiadomienia Telegram\u002Fe-mail",true,"\u002Fhero\u002Fdigipulse.avif",[38,42],{"label":39,"to":40,"color":41,"icon":17},"Live Demo","https:\u002F\u002Fdigipulse.cloud","primary",{"label":43,"to":44,"color":16,"icon":45},"GitHub","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fdigipulse-backend","i-simple-icons-github",{},[48,51,54,57,60,63,66],{"name":49,"icon":50},"Laravel","i-simple-icons-laravel",{"name":52,"icon":53},"Filament","i-simple-icons-filament",{"name":55,"icon":56},"Go","i-simple-icons-go",{"name":58,"icon":59},"PostgreSQL","i-simple-icons-postgresql",{"name":61,"icon":62},"Redis","i-simple-icons-redis",{"name":64,"icon":65},"Vue","i-simple-icons-vuedotjs",{"name":67,"icon":68},"MCP","i-heroicons-cpu-chip","pl\u002Fprojects\u002Fdigipulse",[71,49,55,72,67,61,73],"SaaS","Monitoring","Event-driven","GqA86kRO7Vh1dUrEBwiAh6SARuOescZleItqed4Wz8M",{"data":76,"body":77},{},{"type":78,"children":79},"root",[80,88,95,100,106,111,117],{"type":81,"tag":82,"props":83,"children":84},"element","p",{},[85],{"type":86,"value":87},"text","Terraform opisuje infrastrukturę w plikach konfiguracyjnych i zarządza zasobami za pomocą dostawców, czyli providerów. Korzystam z niego w infrastrukturze DigiPulse, aby konfigurację usług łatwiej było przeglądać i odtwarzać.",{"type":81,"tag":89,"props":90,"children":92},"h2",{"id":91},"konfiguracja-i-plan-zmian",[93],{"type":86,"value":94},"Konfiguracja i plan zmian",{"type":81,"tag":82,"props":96,"children":97},{},[98],{"type":86,"value":99},"Provider Docker daje Terraform dostęp do zasobów Dockera. Wspólna konfiguracja może opisywać podobne środowiska z różnymi zmiennymi wejściowymi. Każde wymaga własnego planu uwzględniającego aktualny stan: zapisany plan nie jest szablonem do użycia w innym środowisku.",{"type":81,"tag":89,"props":101,"children":103},{"id":102},"przestrzenie-robocze-i-sekrety",[104],{"type":86,"value":105},"Przestrzenie robocze i sekrety",{"type":81,"tag":82,"props":107,"children":108},{},[109],{"type":86,"value":110},"Przestrzenie robocze CLI rozdzielają stan, ale nie stanowią granicy uprawnień. Pliki stanu i planu mogą zawierać sekrety nawet dla wartości oznaczonych jako sensitive. Środowiska wymagające silniejszej izolacji potrzebują osobnych danych dostępowych, chronionego magazynu stanu i odpowiednich uprawnień.",{"type":81,"tag":89,"props":112,"children":114},{"id":113},"infrastruktura-a-wydania-aplikacji",[115],{"type":86,"value":116},"Infrastruktura a wydania aplikacji",{"type":81,"tag":82,"props":118,"children":119},{},[120],{"type":86,"value":121},"Konfiguracja infrastruktury opisuje zasoby i zależności, a wydania aplikacji mogą przechodzić przez oddzielny proces CI\u002FCD. Terraform wykrywa różnice między opisanym a rzeczywistym stanem podczas tworzenia planu, ale nie zapobiega stale ręcznym zmianom. Plan trzeba przejrzeć przed zastosowaniem, zwłaszcza gdy przewiduje wymianę lub usunięcie zasobu."]