NetSendo
Platform Updates

NetSendo v2.7.1: poprawki Live Visitors i konfiguracji MCP w Dockerze

NetSendo Team6 min czytania

Otwierasz stronę Live Visitors w swoim self-hostowanym NetSendo. Na serwerze działa, ale gdy współpracownik otwiera ją na swoim laptopie, lista w czasie rzeczywistym jest pusta. Nie widać żadnego błędu ani żadnych odwiedzających. Przeglądarka po cichu próbuje połączyć się z ws://localhost:8085, a na jego komputerze pod tym adresem nic nie ma.

NetSendo v2.7.1 to małe wydanie poprawkowe, które rozwiązuje ten problem w instalacjach Docker. Naprawia też ten sam błąd w integracji MCP, więc Twój MCP_API_KEY znów jest odczytywany. Poniżej wyjaśniamy, co poszło nie tak, jak zaktualizować i jak sprawdzić konfigurację czasu rzeczywistego.

TL;DR: W instalacjach Docker strona Live Visitors ignorowała ustawienia VITE_REVERB_* z pliku .env i kierowała przeglądarki na localhost:8085 przez zwykłe http. Status MCP i php artisan mcp:test-connection też nie widziały MCP_API_KEY. Teraz oba działają. Aby zaktualizować, uruchom docker compose pull && docker compose up -d. Nie musisz zmieniać plików konfiguracyjnych ani przebudowywać frontendu.

🚀 Co nowego w v2.7.1

📡

Live Visitors łączy się poprawnie

Przeglądarki dostają adres WebSocket ustawiony w .env, a nie localhost.

🔑

Wykrywanie klucza MCP

Status MCP w panelu i test połączenia w CLI odczytują teraz MCP_API_KEY.

🧪

Ochrona przed regresją

Nowy test kończy się błędem, jeśli kod aplikacji, trasy lub widoki wywołują env() bezpośrednio.

Przyczyna: env() i konfiguracja w cache

NetSendo jest zbudowane na Laravelu. Przy starcie entrypoint Dockera uruchamia php artisan config:cache, które zapisuje całą konfigurację w jednym szybkim pliku. To standardowa praktyka produkcyjna, ale ma jeden haczyk: gdy konfiguracja jest w cache, Laravel nie wczytuje już pliku .env. Od tej chwili env() zwraca pustą wartość wszędzie poza samymi plikami konfiguracyjnymi.

To trochę jak wydrukowane menu w restauracji. Gdy menu jest już wydrukowane (w cache), pytanie o dania dnia z tablicy w kuchni (.env) nic nie daje. Trzeba czytać menu (config()).

Kontroler Live Visitors odczytywał VITE_REVERB_HOST, VITE_REVERB_PORT i VITE_REVERB_SCHEME bezpośrednio przez env(). Przy konfiguracji w cache wszystkie trzy były puste, więc strona używała wartości domyślnych: localhost, 8085 i http. Działało to tylko wtedy, gdy przeglądarka była uruchomiona na samym serwerze.

Poprawka

Te wartości są teraz w config/broadcasting.php pod kluczem browser, a strona odczytuje je przez config(). Twoje dotychczasowe wpisy w .env nadal działają, na przykład:

VITE_REVERB_HOST=marketing.example.com
VITE_REVERB_PORT=443
VITE_REVERB_SCHEME=https

Wartości są przekazywane do strony, gdy serwer ją renderuje, więc nie są wbudowane w paczkę JavaScript. Po ich zmianie wystarczy docker compose up -d. Nie musisz przebudowywać frontendu, co ma znaczenie, bo npm run build i tak nie da się uruchomić w kontenerze produkcyjnym.

ℹ️ Sprawdzone: Zespół przetestował to na obrazie 2.7.0 z konfiguracją w cache. Stary kod kierował przeglądarkę na localhost, a nowy na adres z .env.

MCP_API_KEY znów jest odczytywany

Status MCP w panelu i polecenie php artisan mcp:test-connection miały ten sam problem: odczytywały MCP_API_KEY przez env(). Najpierw sprawdzały też ustawienie services.mcp.api_key, ale takie ustawienie nie istniało. Teraz jest w config/services.php, więc klucz jest odczytywany także przy konfiguracji w cache.

Test, który nie pozwoli błędowi wrócić

Nowy tests/Feature/RuntimeConfigTest.php robi dwie rzeczy. Sprawdza, czy strona Live Visitors używa skonfigurowanego adresu, i przerywa build, jeśli kod aplikacji, trasy lub widoki wywołują env() bezpośrednio. Przyszłe funkcje nie przywrócą więc tego błędu przypadkiem.

💼 Korzyści i przypadki użycia

  • ✅ Śledzenie odwiedzających w czasie rzeczywistym działa z każdego urządzenia, nie tylko z serwera
  • ✅ Zmiany w .env działają po restarcie kontenera, bez przebudowy
  • ✅ Integracje MCP pokazują poprawny status
  • ✅ Brak zmian w plikach konfiguracyjnych od wersji 2.7.0
🛒

E-commerce: wyprzedaż na żywo

Twój zespół marketingu obserwuje Live Visitors podczas startu kampanii, żeby widzieć ruch z newslettera. Od v2.7.1 każdy w zespole widzi tę samą listę na żywo we własnej przeglądarce, więc możecie:

  • Sprawdzić, czy linki z kampanii przyciągają ruch w ciągu kilku minut
  • Wychwycić strony docelowe, które mają wizyty, ale nie mają konwersji
  • Zaplanować kolejne wysyłki, np. przypomnienia o porzuconym koszyku, na podstawie realnej aktywności
🤖

SaaS: asystenci AI przez MCP

Jeśli łączysz narzędzia AI z NetSendo przez MCP, żeby zarządzać kampaniami onboardingowymi lub zapobiegającymi odejściom klientów, fałszywy komunikat o braku klucza marnuje czas na debugowanie. Teraz mcp:test-connection mówi, czy konfiguracja naprawdę działa.

🏢

Agencje: wiele instancji za proxy

Agencje często uruchamiają osobną instancję NetSendo dla każdego klienta, każdą na własnej domenie za reverse proxy. Każda instancja może teraz mieć własny host i schemat WebSocket w .env. Po szybkim restarcie panele otwierane przez klientów łączą się z właściwym adresem.

🛠️ Krok po kroku: aktualizacja i weryfikacja

  1. Pobierz nowy obraz

    W katalogu NetSendo uruchom:

    docker compose pull && docker compose up -d
  2. Sprawdź wartości Reverb w .env

    Ustaw VITE_REVERB_HOST, VITE_REVERB_PORT i VITE_REVERB_SCHEME na adres, pod którym przeglądarki łączą się z serwerem WebSocket. Zwykle jest to Twoja publiczna domena, a nie localhost.

  3. Zastosuj zmiany

    Jeśli edytowałeś .env, uruchom ponownie docker compose up -d. Entrypoint odbuduje cache konfiguracji z nowymi wartościami.

  4. Przetestuj z innego komputera

    Otwórz Live Visitors na innym urządzeniu. W narzędziach deweloperskich przeglądarki przejdź do zakładki Network i ustaw filtr „WS”. Połączenie powinno iść do Twojej domeny, a nie do localhost:8085.

  5. Przetestuj MCP (jeśli go używasz)

    W kontenerze aplikacji uruchom php artisan mcp:test-connection (np. docker compose exec <usługa-aplikacji> php artisan mcp:test-connection). Potem sprawdź, czy status MCP w panelu pokazuje klucz.

⚠️ Częsty błąd: Jeśli panel ładuje się przez HTTPS, przeglądarka zablokuje zwykłe połączenie ws:// jako mixed content. Za proxy TLS ustaw VITE_REVERB_SCHEME=https i publiczny port proxy, zwykle 443.

🎯 Wskazówki eksperta

1
Nigdy nie wywołuj env() poza plikami konfiguracyjnymi

Jeśli rozszerzasz NetSendo lub piszesz własny kod w Laravelu, dodawaj każde nowe ustawienie do pliku konfiguracyjnego i odczytuj je przez config(). Nowy test pilnuje tej zasady w kodzie NetSendo.

2
W razie potrzeby wymuś odtworzenie kontenera

Jeśli zmiana w .env nie działa, docker compose up -d --force-recreate sprawi, że entrypoint uruchomi się ponownie i odbuduje cache konfiguracji.

3
Poprawnie przekazuj WebSockety przez proxy

Upewnij się, że reverse proxy przekazuje do Reverb nagłówki Upgrade i Connection. Bez nich połączenie się nie uda, nawet jeśli adres jest poprawny.

4
Trzymaj sekrety z dala od frontendu

Do przeglądarki trafiają tylko publiczny host, port i schemat. MCP_API_KEY i inne sekrety trzymaj w konfiguracji po stronie serwera, skąd v2.7.1 je teraz odczytuje.

✅ Podsumowanie

v2.7.1 to małe wydanie z realnym efektem. W instalacjach Docker Live Visitors znów działa dla każdego użytkownika na każdym urządzeniu. Integracja MCP poprawnie odczytuje Twój klucz API. A nowy test nie pozwoli wrócić temu rodzajowi błędów konfiguracji. Aktualizacja to jedno polecenie bez zmian w konfiguracji, a ponieważ hostujesz NetSendo samodzielnie, dane o odwiedzających zostają na Twoich serwerach.

Szczegóły konfiguracji czasu rzeczywistego i MCP znajdziesz w dokumentacji. Możesz też przejrzeć dostępne integracje albo przeczytać pełne informacje o wydaniu na GitHubie.

Gotowy na aktualizację?

Uruchom v2.7.1 w niecałą minutę. Jeśli NetSendo Ci pomaga, zostaw nam gwiazdkę na GitHubie.

#docker#live-visitors#websockets#mcp#laravel#bug-fix#self-hosted
Udostępnij