Przejdź do treści głównej

2024–2025 · Projekt systemu, backend, bezpieczeństwo i integracje

Platforma provisioningu urządzeń

Rejestracja i konfiguracja urządzeń partiami po kilka tysięcy sztuk

Producent sprzętu potrzebował systemu do rejestracji i provisioningu swoich urządzeń, zgłaszanych partiami po około 2000–3000 sztuk. Dla każdego urządzenia trzeba było przygotować rekord w aplikacji, identity i konfigurację VPN, które potem pobierała automatyzacja na samym urządzeniu.

Problem

Przy takich partiach ręczna konfiguracja nie wchodzi w grę. Do tego każde urządzenie musiało się zgadzać w panelu administracyjnym, w Authentiku i w konfiguracji VPN, bez trzymania osobnej kopii jego stanu w każdym z tych systemów.

Rezultat

Rejestracja obsługuje partie tej wielkości, a każdy fragment stanu urządzenia ma jeden system, który za niego odpowiada. Nie mam pomiarów „przed i po”, a mój udział skończył się w marcu 2025, więc nie wiem, ile urządzeń działa dziś na tym systemie.

Decyzje i implementacja

  • Zbudowałem centralną aplikację w Laravel 11 z PostgreSQL i kolejkami na Redisie. Laravel Horizon pokazuje postęp zadań provisioningu i to, które z nich się nie powiodły.
  • Dodałem rejestrację pojedynczych numerów seryjnych i zakresów (np. E000001-E000230), także wymieszanych na jednej liście rozdzielonej przecinkami. Aplikacja usuwa duplikaty i składa z tego jedną listę, którą zatwierdza administrator.
  • Każdemu fragmentowi stanu dałem jednego właściciela: Laravel trzyma rekord urządzenia i reguły autoryzacji, Authentik odpowiada za identity i dostęp, wg-portal i generowana konfiguracja WireGuard za VPN, a Nginx Proxy Manager za warstwę proxy. Żaden komponent nie trzyma własnej kopii stanu urządzenia.
  • Panel administracyjny zabezpieczyłem Laravel Policies i TOTP MFA z kodami odzyskiwania, z możliwością wyłączenia MFA.
  • Udostępniłem REST API jako jedyny interfejs dla automatyzacji po stronie urządzeń. Skrypty Bash na urządzeniu pobierają przez nie konfigurację i ją wprowadzają.
  • System dostarczyłem w Docker Compose, a wymagania techniczne uzgadniałem z producentem urządzeń.

Wykorzystane technologie

  • PHP
  • Laravel 11
  • PostgreSQL
  • Redis
  • REST API
  • WireGuard
  • Authentik
  • Docker Compose
  • Bash
  • Laravel Horizon

Notatki z tego projektu

Notatki techniczne powiązane z tym projektem: