Zapomnij o Life360. OwnTracks na TrueNAS: Twój Prywatny Serwer Lokalizacji

OpenStreetMap

W dzisiejszych czasach wiele osób korzysta z aplikacji do śledzenia lokalizacji, takich jak Life360, aby wiedzieć, gdzie są członkowie rodziny. Są one wygodne, ale wiążą się z oddaniem swoich danych o lokalizacji firmie zewnętrznej. OwnTracks to alternatywa typu open-source, która pozwala na stworzenie własnego, prywatnego serwera lokalizacji, dając Ci pełną kontrolę nad Twoimi danymi.

W tym przewodniku pokażemy, jak zainstalować i skonfigurować OwnTracks na serwerze TrueNAS SCALE, używając funkcji „Custom App”. Skupimy się na prostszym trybie komunikacji HTTP, który okazał się mniej problematyczny w środowiskach kontenerowych niż MQTT z WebSocket. Skonfigurujemy również bezpieczny dostęp z zewnątrz za pomocą Nginx Proxy Manager i Cloudflare.

OwnTracks vs. Life360: Krótkie Porównanie

Zanim zaczniemy, warto zrozumieć kluczowe różnice:

OwnTracks:

  • Zalety:
    • Prywatność: Twoje dane o lokalizacji są przechowywane tylko na Twoim serwerze. Nikt inny nie ma do nich dostępu.
    • Kontrola: Pełna kontrola nad serwerem, danymi i sposobem ich wykorzystania.
    • Darmowy i Open Source: Brak opłat abonamentowych, kod źródłowy jest otwarty.
    • Elastyczność: Możliwość integracji z innymi systemami automatyki domowej (np. Home Assistant).
  • Wady:
    • Wymaga własnego serwera: Konieczność posiadania i zarządzania serwerem (np. TrueNAS).
    • Konfiguracja: Instalacja i konfiguracja wymagają pewnej wiedzy technicznej (którą zdobędziesz w tym przewodniku!).
    • Brak niektórych funkcji społecznościowych: Mniej „wypolerowany” interfejs i brak niektórych funkcji znanych z Life360 (np. raporty jazdy, wykrywanie wypadków – choć to może być też zaleta pod względem prywatności).

Life360:

  • Zalety:
    • Łatwość użycia: Bardzo prosta instalacja i konfiguracja.
    • Bogactwo funkcji: Dodatkowe opcje, takie jak wykrywanie wypadków, raporty jazdy, przyciski SOS.
    • Nie wymaga własnego serwera: Wszystko działa w chmurze.
  • Wady:
    • Prywatność: Twoje dane o lokalizacji są przechowywane i przetwarzane przez firmę zewnętrzną, która może je analizować lub udostępniać.
    • Koszty: Wiele zaawansowanych funkcji wymaga płatnej subskrypcji.
    • Brak kontroli: Jesteś zależny od polityki prywatności i działania usług firmy.

Jeśli cenisz sobie prywatność i masz już serwer TrueNAS, OwnTracks jest doskonałym wyborem.

Wymagania Wstępne

Zanim zaczniesz, upewnij się, że masz:

  1. System TrueNAS SCALE: Ten przewodnik dotyczy wersji SCALE.
  2. Domenę internetową: Będziesz potrzebować własnej domeny (np. twojadomena.com).
  3. Dostęp do zarządzania DNS domeny: W tym przewodniku użyjemy Cloudflare.
  4. Nginx Proxy Manager: Zainstalowany i działający jako aplikacja na TrueNAS.
  5. Publiczny adres IP: Lub skonfigurowany Dynamiczny DNS (DDNS).
  6. (Zalecane) Przekierowane porty: Porty 80 i 443 przekierowane na adres IP Twojego Nginx Proxy Manager w Twojej sieci lokalnej.

Krok 1: Instalacja Komponentów na TrueNAS

W tej konfiguracji potrzebujemy dwóch aplikacji działających jako kontenery:

  1. Mosquitto: Broker MQTT. Mimo że będziemy używać trybu HTTP do wysyłania danych z telefonów, owntracks/recorder nadal wymaga połączenia z brokerem MQTT do swojego wewnętrznego działania. Skonfigurujemy go tak, aby zezwalał na anonimowe połączenia z sieci lokalnej.
  2. OwnTracks Recorder: Aplikacja odbierająca dane (przez HTTP) i udostępniająca interfejs webowy z mapą.

Instalacja Mosquitto

  1. Przejdź do Aplikacji: W interfejsie TrueNAS przejdź do Apps.
  2. Znajdź Mosquitto: Wyszukaj aplikację Mosquitto (najczęściej dostępna w katalogu TrueCharts) i kliknij Install.
  3. Konfiguracja Mosquitto:
    • Application Name: np. mosquitto
    • Eclipse Mosquitto Configuration:
      • Timezone: Wybierz swoją strefę czasową.
      • Enable Persistence: Zaznacz, aby zachować dane między restartami.
      • Allow Anonymous: Zaznacz. Ponieważ Mosquitto nie będzie wystawiony na zewnątrz, a komunikacja z OwnTracks Recorder odbywa się w sieci lokalnej, możemy uprościć konfigurację, zezwalając na anonimowe połączenia.
    • User and Group Configuration: Możesz zostawić domyślne (np. 568).
    • Network Configuration:
      • Broker Port: Upewnij się, że Port Number to 1883. Nie wystawiaj tego portu na zewnątrz (nie przekierowuj go na routerze ani nie konfiguruj w NPM).
      • Web Sockets Port: Możesz zostawić domyślne lub wyłączyć. Nie jest potrzebny w tej konfiguracji.
    • Storage Configuration:
      • Skonfiguruj Host Path dla Mosquitto Data Storage i Mosquitto Config Storage, tworząc wcześniej odpowiednie datasety (np. /mnt/TWOJA_PULA/apps/mosquitto/data i /mnt/TWOJA_PULA/apps/mosquitto/config). Upewnij się, że grupa apps ma do nich uprawnienia zapisu.
    • (Pomiń) Sekcja Security Configuration lub dodawanie użytkowników nie jest potrzebna, jeśli zaznaczyłeś Allow Anonymous.
    • Resources Configuration: Ustaw niskie limity:
      • Limits CPUs: 0.25
      • Memory (in MB): 128
    • Kliknij Install. Po chwili aplikacja mosquitto powinna mieć status Running.

Instalacja OwnTracks Recorder (Custom App)

  1. Wybierz Custom App: Wróć do Apps -> Discover Apps -> Custom App.
  2. Podstawowa Konfiguracja:
    • Application Name: owntracks
  3. Image Configuration:
    • Repository: owntracks/recorder
    • Tag: latest
    • Pull Policy: Pull image if not already present...
  4. Container Configuration:
    • Timezone: Wybierz swoją strefę czasową.
    • Environment Variables: Kliknij Addcztery razy, aby dodać zmienne:
      • Do połączenia z Mosquitto (tryb anonimowy):
        • Name: OTR_MQTT_HOSTValue: Wpisz adres IP Twojego serwera TrueNAS (np. 192.168.0.13). Nie localhost!
        • Name: OTR_MQTT_PORTValue: 1883
        • (Usuń/Nie dodawaj) OTR_MQTT_USER i OTR_MQTT_PASS nie są potrzebne.
      • Do uwierzytelniania HTTP /pub:
        • Name: OTR_USERValue: Wybierz nazwę użytkownika dla HTTP (np. admin_owntracks). Ważne: Używaj tylko liter i cyfr!
        • Name: OTR_PASSValue: Wybierz silne hasło dla HTTP. Ważne: Używaj tylko liter i cyfr!
    • Restart Policy: Zmień na Always.
  5. Network Configuration:
    • Kliknij Add przy Ports.
    • Container Port: 8083
    • Node Port: np. 38083 (upewnij się, że jest wolny).
    • Protocol: TCP
  6. Storage Configuration:
    • Utwórz Datasety: /mnt/TWOJA_PULA/apps/owntracks/config i /mnt/TWOJA_PULA/apps/owntracks/store.
    • Ustaw Uprawnienia: Grupa apps musi mieć prawo zapisu.
    • Dodaj Woluminy:
      • /config -> Host Path do datasetu config.
      • /store -> Host Path do datasetu store.
  7. Resources Configuration:
    • Enable Resource Limits: Zaznaczone.
    • Limits CPUs: 0.5 lub 1.
    • Memory (in MB): 256 lub 512.
  8. (Opcjonalnie) Portal Configuration: Skonfiguruj jak poprzednio, używając Node Port (np. 38083).*
  9. Instalacja: Kliknij Install. Aplikacja owntracks powinna uruchomić się i połączyć anonimowo z mosquitto. Sprawdź logi obu aplikacji, aby upewnić się, że nie ma błędów Connection refused. W logach Mosquitto powinieneś zobaczyć połączenie bez nazwy użytkownika.

Krok 2: Konfiguracja Cloudflare

Upewnij się, że masz rekord DNS typu A dla subdomeny (np. owntracks), wskazujący na Twój publiczny adres IP.

  • Proxy status: Ustaw na DNS only (szara chmurka).

Krok 3: Konfiguracja Nginx Proxy Manager (NPM)

Konfiguracja pozostaje taka sama jak poprzednio:

  1. Utwórz Listę Dostępu (Access Lists) z użytkownikiem i hasłem do ochrony mapy.
  2. Utwórz Proxy Host:
    • Details: Domena (owntracks.twojadomena.com), Scheme http, Forward IP (TrueNAS IP), Forward Port (38083), włącz Block Common Exploits i Websockets Support.
    • SSL: Wybierz ważny certyfikat (najlepiej przez DNS Challenge), włącz Force SSL, HTTP/2, HSTS.
    • Access List: Wybierz utworzoną listę dostępu.
    • Zapisz.

Krok 4: Konfiguracja Aplikacji Mobilnej (iOS/Android)

Konfiguracja aplikacji mobilnej również pozostaje taka sama:

  1. Pobierz i zainstaluj aplikację OwnTracks.
  2. Ustawienia Połączenia:
    • Mode: HTTP.
    • URL: https://owntracks.twojadomena.com/pub
    • Authentication: Włączone.
    • UserID: Nazwa użytkownika z OTR_USER.
    • Password: Hasło z OTR_PASS (tylko litery/cyfry).
  3. Ustawienia Identyfikacji:
    • UserID: Unikalna nazwa osoby (np. jan).
    • DeviceID: Unikalna nazwa urządzenia (np. telefon_jana).
    • (Opcjonalnie) TrackerID (tid): Krótki identyfikator (np. J).
  4. Zapisz Ustawienia.

Krok 5: Wybór Trybu Pracy (Monitoring Mode)

Aplikacja OwnTracks oferuje kilka trybów raportowania lokalizacji, które różnią się częstotliwością aktualizacji i zużyciem baterii. Możesz je dostosować w ustawieniach aplikacji mobilnej (zazwyczaj w sekcji Preferences -> Reporting lub podobnej):

  • Significant Location Change Mode (Tryb Znaczącej Zmiany Lokalizacji):
    • Działanie: Aplikacja polega na systemie operacyjnym telefonu (iOS/Android), aby powiadomić ją o znaczącej zmianie lokalizacji (np. zmiana masztu komórkowego). System decyduje, co jest „znaczące”.
    • Zalety: Najbardziej oszczędny pod względem zużycia baterii. Idealny, jeśli nie potrzebujesz śledzenia w czasie rzeczywistym, a jedynie ogólnej informacji o przemieszczaniu się.
    • Wady: Aktualizacje mogą być rzadkie i mniej precyzyjne. Lokalizacja może nie być aktualizowana przez dłuższy czas, jeśli telefon nie uzna zmiany za „znaczącą”.
  • Move Mode (Tryb Ruchu):
    • Działanie: Aplikacja używa czujników ruchu telefonu (akcelerometr), aby wykryć, że urządzenie się porusza. Kiedy wykryje ruch, częściej sprawdza lokalizację GPS i wysyła aktualizacje. Kiedy urządzenie jest nieruchome, przechodzi w tryb oszczędzania energii.
    • Zalety: Dobry kompromis między dokładnością a zużyciem baterii. Zapewnia częstsze aktualizacje podczas podróży.
    • Wady: Zużywa więcej baterii niż tryb Significant Change, zwłaszcza jeśli często się poruszasz.
  • Manual Mode (Tryb Ręczny):
    • Działanie: Aplikacja wysyła aktualizację lokalizacji tylko wtedy, gdy ręcznie naciśniesz przycisk „Publish” (Publikuj) w interfejsie aplikacji.
    • Zalety: Daje pełną kontrolę nad tym, kiedy Twoja lokalizacja jest udostępniana. Minimalne zużycie baterii związane ze śledzeniem.
    • Wady: Brak automatycznego śledzenia. Wymaga interakcji użytkownika.

Wybór trybu zależy od Twoich potrzeb. Dla większości użytkowników Move Mode oferuje najlepszy balans.

Aspekty Bezpieczeństwa

Skoro hostujesz własny serwer lokalizacji, bezpieczeństwo jest kluczowe. Oto jak zadbaliśmy o nie w tej konfiguracji:

  1. Szyfrowanie Transportu (TLS/SSL):
    • Używając Nginx Proxy Manager z certyfikatem Let’s Encrypt, cała komunikacja odbywa się przez HTTPS, chroniąc dane przed podsłuchem.
    • Włącz Force SSL w NPM.
  2. Uwierzytelnianie Punktu Końcowego (/pub):
    • Zmienne OTR_USER i OTR_PASS w kontenerze owntracks/recorder włączają HTTP Basic Auth, wymagając loginu i hasła do wysyłania danych.
    • Używaj silnego hasła bez znaków specjalnych.
  3. Ochrona Dostępu do Mapy:
    • Access List w Nginx Proxy Manager dodaje drugą warstwę uwierzytelniania wymaganą do przeglądania mapy.
  4. Komunikacja Lokalna Mosquitto:
    • Broker Mosquitto skonfigurowany jest do akceptowania anonimowych połączeń, ale nie jest wystawiony na zewnątrz. Dostęp do niego ma tylko kontener owntracks/recorder w tej samej sieci wewnętrznej TrueNAS, co minimalizuje ryzyko.
  5. Kontrola nad Danymi:
    • Twoje dane nigdy nie opuszczają Twojego serwera. Masz pełną kontrolę.
  6. (Opcjonalnie) Szyfrowanie End-to-End (Payload Encryption):
    • Możesz włączyć szyfrowanie danych lokalizacji w aplikacji mobilnej (Secret encryption key). Dane będą przechowywane na serwerze w postaci zaszyfrowanej. Wymaga to ręcznego odszyfrowania po stronie klienta lub w zintegrowanych systemach.
OwnTracks iOS

Informacja o Quick Setup

W dokumentacji OwnTracks możesz znaleźć metodę instalacji o nazwie „Quick Setup”. Jest to zestaw skryptów do szybkiego wdrożenia kompletnego środowiska OwnTracks (MQTT + Recorder) na standardowym serwerze VPS.

Dlaczego nie użyliśmy Quick Setup na TrueNAS?

  • Zarządzanie Kontenerami: TrueNAS SCALE ma własny system zarządzania aplikacjami. Używanie „Custom App” i oficjalnych aplikacji (jak Mosquitto z TrueCharts) jest bardziej zintegrowane i natywne.
  • Elastyczność: Metoda „Custom App” daje większą kontrolę nad konfiguracją poszczególnych komponentów i zasobów.
  • Środowisko: Skrypty Quick Setup są optymalizowane dla typowych systemów Linux, a nie specyficznego środowiska TrueNAS SCALE.

Instalacja przez „Custom App” i aplikacje z katalogów jest bardziej odpowiednia dla TrueNAS SCALE.

Dodawanie Członków Rodziny

Powtórz Krok 4 na telefonie członka rodziny:

  • Użyj tych samych danych w sekcji Połączenie (URL, OTR_USER, OTR_PASS).
  • Ustaw unikalne wartości w sekcji Identyfikacja (UserID, DeviceID, TrackerID).

Rozwiązywanie Problemów

  • Aplikacja nie łączy się (HTTP):
    • Sprawdź URL (/pub!), UserID, Password (bez znaków specjalnych!).
    • Sprawdź status rekordu DNS w Cloudflare („DNS only”).
    • Sprawdź logi owntracks i aplikacji mobilnej.
  • Błędy Connection refused w logach owntracks:
    • Upewnij się, że kontener Mosquitto działa.
    • Sprawdź, czy zmienne OTR_MQTT_HOST i OTR_MQTT_PORT w konfiguracji owntracks wskazują poprawny adres IP TrueNAS i port (1883). Sprawdź, czy nie ma zmiennych OTR_MQTT_USER i OTR_MQTT_PASS.
  • Nie widać mapy (błąd 401, 403):
    • Loguj się do mapy danymi z Access List w NPM.
  • Nie widać mapy (błąd 502, 504):
    • Sprawdź, czy kontener owntracks działa.
    • Sprawdź konfigurację Proxy Host w NPM.

Podsumowanie

Gratulacje! Skonfigurowałeś swój własny, prywatny serwer lokalizacji OwnTracks na TrueNAS. Uproszczona konfiguracja Mosquitto z dostępem anonimowym w sieci lokalnej, w połączeniu z komunikacją przez HTTP i zabezpieczeniami Nginx Proxy Manager, zapewniają wygodne i bezpieczne rozwiązanie. Ciesz się kontrolą nad swoimi danymi o lokalizacji!

Andre Selfie
Andrzej Majewski

Moja fascynacja technologią zaczęła się podczas studiów informatycznych na Uniwersytecie Zielonogórskim. Od czasu przeprowadzki do Wielkiej Brytanii w 2015 roku i osiedlenia się na stałe w Bournemouth, przekułem tę pasję w karierę zawodową poświęconą infrastrukturze o wysokiej wydajności.W głębi duszy jestem entuzjastą Linuxa – to zaangażowanie wykracza poza moją pracę zawodową w SolutionsInc i obejmuje również mój rozbudowany, prywatny homelab. Niezależnie od tego, czy zarządzam złożonymi architekturami serwerowymi przez ISPConfig, buduję systemy VoIP w ramach Phones Rescue, czy tworzę narzędzia do automatyzacji w Pythonie, najlepiej czuję się, podejmując wyzwania związane z projektowaniem wydajnych rozwiązań open-source

Komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *