Przejdź do treści głównej

Opublikowano · Zaktualizowano

Integracja aplikacji, identity i VPN w provisioningu urządzeń

Zbudowałem centralną aplikację provisioningową w Laravel 11. Łączy rekordy urządzeń, Authentik, konfigurację WireGuard, warstwę reverse proxy i skrypty Bash konfigurujące urządzenie, przy partiach rejestracji po około 2000–3000 sztuk. Ta notatka dotyczy głównie jednej decyzji: który system jest właścicielem którego fragmentu stanu urządzenia.

  • Laravel
  • device provisioning
  • WireGuard
  • Authentik
  • Redis
  • REST API
  • automatyzacja

Jeden właściciel dla każdego fragmentu stanu

Rejestracja przyjmuje pojedyncze numery seryjne i zakresy, a ten sam workflow musi utworzyć identity i konfigurację sieciową, których urządzenie potrzebuje przy uruchomieniu.

Każdy z tych elementów ma jednego właściciela. Laravel trzyma rekord urządzenia i reguły biznesowe, Authentik odpowiada za identity i dostęp, WireGuard z wg-portal za konfigurację VPN, Nginx Proxy Manager za proxy, a skrypty instalacyjne tylko wprowadzają zmiany na urządzeniu. Żaden komponent nie trzyma własnej kopii stanu urządzenia.

Workflow w Laravelu

Aplikacja korzysta z PostgreSQL i kolejek na Redisie dla pracy, która nie powinna blokować requestu administratora. Laravel Horizon pokazuje postęp kolejki i to, które zadania się nie powiodły. Operacje administracyjne przechodzą przez Laravel Policies, a dostęp chroni TOTP MFA z kodami odzyskiwania.

Administrator może wkleić mieszaną listę pojedynczych numerów i zakresów rozdzielonych przecinkami, np. E000001-E000230. Aplikacja usuwa z niej duplikaty i składa jedną listę do zatwierdzenia. Potem generuje konfigurację WireGuard, a skrypty Bash na urządzeniu pobierają ją przez REST API, które jest jedynym interfejsem dla automatyzacji po stronie urządzeń.

  • Pojedyncze numery i zakresy w jednym wejściu, deduplikowane przed zatwierdzeniem.
  • Operacje administracyjne kontrolowane przez Laravel Policies, z TOTP MFA.
  • Kolejki dla pracy, która nie musi blokować requestu, widoczne w Horizonie.
  • Jedno REST API jako interfejs dla automatyzacji na urządzeniach.

Zakres i ograniczenia

Proces obsługuje pojedyncze urządzenia i zakresy w partiach po kilka tysięcy sztuk. Mój udział skończył się w marcu 2025. Nie mam pomiarów „przed i po” i nie wiem, ile urządzeń działa dziś na tym systemie, dlatego poza wielkością partii nie podaję liczb.

Powiązany projekt

Powiązane case study: