NetSendo v2.7.1: poprawki Live Visitors i konfiguracji MCP w Dockerze
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.
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ę nalocalhost, 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
.envdział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
- Pobierz nowy obraz
W katalogu NetSendo uruchom:
docker compose pull && docker compose up -d - Sprawdź wartości Reverb w .env
Ustaw
VITE_REVERB_HOST,VITE_REVERB_PORTiVITE_REVERB_SCHEMEna adres, pod którym przeglądarki łączą się z serwerem WebSocket. Zwykle jest to Twoja publiczna domena, a nielocalhost. - Zastosuj zmiany
Jeśli edytowałeś
.env, uruchom ponowniedocker compose up -d. Entrypoint odbuduje cache konfiguracji z nowymi wartościami. - 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. - 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łączeniews://jako mixed content. Za proxy TLS ustawVITE_REVERB_SCHEME=httpsi publiczny port proxy, zwykle443.
🎯 Wskazówki eksperta
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.
Jeśli zmiana w .env nie działa, docker compose up -d --force-recreate sprawi, że entrypoint uruchomi się ponownie i odbuduje cache konfiguracji.
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.
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.



