CzADSB-Mlat server: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(Lighttpd)
 
(Není zobrazeno 25 mezilehlých verzí od stejného uživatele.)
Řádka 1: Řádka 1:
 
== Verze ==
 
== Verze ==
* https://github.com/mutability/mlat-server - 11 let starý kód, který se již neaktualizuje
+
* https://github.com/mutability/mlat-server       - 11 let starý kód, který se již neaktualizuje
 
+
* https://github.com/adsb-related-code/mlat-server - hlavni zdroj !                       This branch is 363 commits ahead of mutability/mlat-server:master
* https://github.com/adsb-related-code/mlat-server - hlavni zdroj !                     This branch is 363 commits ahead of mutability/mlat-server:master
+
* https://github.com/adsbexchange/mlat-server                                             This branch is 1 commit behind                          adsb-related-code/mlat-server
 
+
* https://github.com/ADSBexchange/mlat-server                                              This branch is 2 commits ahead of and 1 commit behind   adsb-related-code/mlat-server
* https://github.com/TanerH/mlat-server - starý kód, který se již neaktualizuje        This branch is 1 commit ahead of and 320 commits behind adsb-related-code/mlat-server:master
+
* https://github.com/TanerH/mlat-server           - starý kód, který se již neaktualizuje This branch is 1 commit ahead of and 320 commits behind adsb-related-code/mlat-server
* https://github.com/adsbexchange/mlat-server                                           This branch is 1 commit behind                         adsb-related-code/mlat-server
+
* https://github.com/wiedehopf/mlat-server                                                 This branch is 325 commits ahead of and 1 commit behind TanerH/mlat-server
 
+
* https://github.com/adsblol/mlat-server                                                   This branch is 21 commits ahead of                      wiedehopf/mlat-server:master
* https://github.com/wiedehopf/mlat-server                                             This branch is 325 commits ahead of and 1 commit behind TanerH/mlat-server
 
 
 
* https://github.com/adsblol/mlat-server                                               This branch is 21 commits ahead of                      wiedehopf/mlat-server:master
 
  
  
Řádka 15: Řádka 12:
 
* https://github.com/wiedehopf/mlat-server-sync-map/tree/master
 
* https://github.com/wiedehopf/mlat-server-sync-map/tree/master
  
== Příprava ==
+
== Instalace ==
 +
=== Příprava ===
  
 
  sudo apt update && sudo apt upgrade -y
 
  sudo apt update && sudo apt upgrade -y
Řádka 21: Řádka 19:
 
  sudo chmod 777 /opt/
 
  sudo chmod 777 /opt/
 
  git clone https://github.com/adsblol/mlat-server.git /opt/mlat-server
 
  git clone https://github.com/adsblol/mlat-server.git /opt/mlat-server
 +
# Provedeme pripadnou opravu zdroje
 
  VENV=/opt/mlat-python-venv
 
  VENV=/opt/mlat-python-venv
 
  sudo rm -rf $VENV
 
  sudo rm -rf $VENV
Řádka 32: Řádka 31:
  
 
Po každé aktualizaci kódu znovu zkompilujte věci Cython:
 
Po každé aktualizaci kódu znovu zkompilujte věci Cython:
 +
VENV=/opt/mlat-python-venv
 
  source $VENV/bin/activate
 
  source $VENV/bin/activate
 
  cd /opt/mlat-server
 
  cd /opt/mlat-server
Řádka 41: Řádka 41:
 
Opusteni VENV:
 
Opusteni VENV:
 
  deactivate
 
  deactivate
 +
 +
=== Opravy ===
 +
V novějších verzích Pythonu (striktně od verze 3.11, ale v 3.13 je to už definitivní) došlo ke změně ve funkci random.sample.
 +
V některých uložištích tento nový formát není zohledněn. Prosím zkontrolujme soubor /opt/mlat-server/mlat/tracker.py, řádky 321 a 326. Pokud tam je:
 +
new_sync |= set(random.sample(acAvailable, k=min(len(acAvailable), addSome)))
 +
přepíšeme na:
 +
new_sync |= set(random.sample(list(acAvailable), k=min(len(acAvailable), addSome)))
 +
 +
=== User ===
 +
Při instalaci se může stát, že se nevytvoří uživatel 'mlat-server' pod kterým služba běží. To můžeme zkontrolovat.
 +
 +
Ověření zda uživatel existuje
 +
id mlat-server
 +
 +
Vytvoření systémového uživatele a nastavení skupiny
 +
sudo useradd -r -s /usr/sbin/nologin -M mlat-server
 +
grep mlat-server /etc/passwd
 +
 +
Nastavení vlastníka pro aplikaci a virtuální prostředí
 +
sudo chown -R mlat-server:mlat-server /opt/mlat-server
 +
sudo chown -R mlat-server:mlat-server /opt/mlat-python-venv
 +
Pokud mlat-server potřebuje číst data ze složky lighttpd nebo naopak, může být užitečné přidat uživatele do skupiny www-data (volitelné)
 +
sudo usermod -a -G www-data mlat-server
 +
 +
  
 
== Servises ==
 
== Servises ==
 +
=== Nové ===
 
  sudo cp /opt/mlat-server/systemd-service.example /usr/lib/systemd/system/mlat-server.service
 
  sudo cp /opt/mlat-server/systemd-service.example /usr/lib/systemd/system/mlat-server.service
 
  sudo mcedit /usr/lib/systemd/system/mlat-server.service
 
  sudo mcedit /usr/lib/systemd/system/mlat-server.service
  
 
  ExecStart=/opt/mlat-python-venv/bin/python3 /opt/mlat-server/mlat-server \
 
  ExecStart=/opt/mlat-python-venv/bin/python3 /opt/mlat-server/mlat-server \
    --client-listen 31090 \
+
    --client-listen 40147:40147 \
    --motd "Ahoj, tohle je mlat-server czadsb.cz" \
+
    --motd "Dekujem ze predavas mlat data na CzADSB" \
    --filtered-basestation-listen 31003 \
+
    --filtered-basestation-listen 31003 \
    --basestation-listen 31004 \
+
    --basestation-listen 31004 \
    --write-csv /run/mlat-server/positions.csv \
+
    --write-csv /run/mlat-server/positions.csv \
    --work-dir /run/mlat-server \
+
    --work-dir /run/mlat-server \
    --check-leaks
+
    --check-leaks \
 +
    --dump-pseudorange /run/mlat-server/pseudorange.json
  
 
  sudo systemctl daemon-reload
 
  sudo systemctl daemon-reload
 +
sudo systemctl enable mlat-server.service
 
  sudo systemctl restart mlat-server.service
 
  sudo systemctl restart mlat-server.service
 +
 +
=== Původní ===
 +
ExecStart=/opt/mlat-python-venv/bin/ python3 /home/czadsb/mlat-server/mlat-server
 +
    --client-listen 40147:40147
 +
    --basestation-listen :31003
 +
    --write-csv /home/czadsb/mlat-server/positions.csv
 +
    --work-dir /home/czadsb/mlat-server
 +
    --check-leaks
 +
    --motd Ahoj, tohle je mlat-server czadsb.cz
  
 
== Help ==
 
== Help ==
Řádka 63: Řádka 100:
 
   
 
   
 
  Client connections:
 
  Client connections:
   --client-listen CLIENT_LISTEN  poslouchejte na hostiteli [host:]tcp_port[:udp_port] připojení od multilateration klientů.  
+
   --client-listen CLIENT_LISTEN  poslouchejte na hostiteli [host:]tcp_port[:udp_port] pripojeníi od multilateration klientu.  
                                   Měli byste mít alespoň jeden z nich!
+
                                   Meli byste mit alespon jeden z nich!
   --motd MOTD                    nastavit MOTD serveru odesílaný klientům.
+
   --motd MOTD                    zprava odeslana klientum (vychozi: prazdna).
 
   
 
   
 
  Output methods:
 
  Output methods:
   --write-csv WRITE_CSV          zapsat výsledky ve formátu CSV do lokálního souboru
+
   --write-csv WRITE_CSV          zapsat vysledky ve formatu CSV do lokalniho souboru
 
   --basestation-connect BASESTATION_CONNECT
 
   --basestation-connect BASESTATION_CONNECT
                                   připojit se k portu host:port a odeslat výsledky ve formátu Basestation.
+
                                   pripojit se k portu host:port a odeslat vysledky ve formatu Basestation.
 
   --basestation-listen BASESTATION_LISTEN
 
   --basestation-listen BASESTATION_LISTEN
                                   naslouchat na portu [host:] a odesílat výsledky ve formátu Basestation klientům, kteří se připojují.
+
                                   naslouchat na portu [host:] a odesilat vysledky ve formatu Basestation klientum, kteri se pripojuji.
 
   --filtered-basestation-connect FILTERED_BASESTATION_CONNECT
 
   --filtered-basestation-connect FILTERED_BASESTATION_CONNECT
                                   připojit se k portu host:port a odeslat výsledky ve formátu Basestation.
+
                                   pripojit se k portu host:port a odeslat vysledky ve formatu Basestation.
 
   --filtered-basestation-listen FILTERED_BASESTATION_LISTEN
 
   --filtered-basestation-listen FILTERED_BASESTATION_LISTEN
                                   naslouchat na portu [host:] a odesílat výsledky ve formátu Basestation klientům, kteří se připojují.
+
                                   naslouchat na portu [host:] a odesilat vysledky ve formatu Basestation klientum, kteri se pripojuji.
 
   
 
   
 
  Utility options:
 
  Utility options:
   --work-dir WORK_DIR            adresář pro výstup ladění/statistik a blacklist
+
   --work-dir WORK_DIR            adresar pro vystup ladeni/statistik a blacklist
   --check-leaks                  spouštět pravidelné kontroly úniku paměti (vyžaduje balíček objgraph).
+
   --check-leaks                  spoustet pravidelne kontroly uniku pameti (vyzaduje balicek objgraph).
 
   --dump-pseudorange DUMP_PSEUDORANGE
 
   --dump-pseudorange DUMP_PSEUDORANGE
                                   vypsat data pseudorashů ve formátu JSON do souboru
+
                                   vypsat data pseudorashu ve formatu JSON do souboru.
   --partition PARTITION          povolit dělení (n/počet)
+
   --partition PARTITION          rozdeleni, napr. 1/1(vychozi: zadne rozdeleni).
   --tag TAG                      nastavit prefix názvu procesu (vyžaduje modul setproctitle)
+
   --tag TAG                      prefix nazvu procesu (vychozi: mlat-server, vyžaduje modul setproctitle).
 
   --status-interval STATUS_INTERVAL
 
   --status-interval STATUS_INTERVAL
                                   interval protokolování stavu v sekundách, násobek 15, -1 pro vypnutí, výchozí hodnota 15
+
                                   interval protokolu stavu v sekundách (vice z 15; pouziti -1 zakazat). Vychozi: 15.
== Nastaveni ==
+
 
=== Stavajici ===
 
python3 /home/czadsb/mlat-server/mlat-server
 
  --client-listen 40147:40147
 
  --basestation-listen :31003
 
  --write-csv /home/czadsb/mlat-server/positions.csv
 
  --work-dir /home/czadsb/mlat-server
 
  --check-leaks
 
  --motd Ahoj, tohle je mlat-server czadsb.cz
 
 
== Lighttpd ==
 
== Lighttpd ==
  # prvne nainstalujeme WebServer. Doporu4uje se nginx, nebo lighttpd
+
Mlat server sám o sobě nepotřebuje žádný web server. Dokonce nemá ani žádné API pro vzdálenou správu či podobně.
  sudo apt install -y lighttpd
+
Pokud ale běží na samostatném serveru a chceme na jiném sledovat provozní stav jednotlivých přijmaču, potřebujeme zajistit
  sudo apt install -y lighttpd-modules-lua lua-luaossl
+
dostupnost souboru 'sync.json'. V tomto případě je pak je nějaký webserver doinstalovat.
 +
 
 +
  # prvne nainstalujeme WebServer. Doporučuje se lighttpd, nebo nginx.
 +
  sudo apt install -y lighttpd jq
 +
  sudo lighty-enable-mod alias
 +
 
 +
 
 +
Vytvoř soubor /etc/lighttpd/conf-available/89-mlat.conf:
 +
# Na4teme modul alias
 +
server.modules += ( "mod_alias" )
 +
 +
# Namapování URL na konkrétní soubor
 +
alias.url += (
 +
    "/mlatserver/sync.json" => "/run/mlat-server/sync.json"
 +
)
 +
 
 +
 
 +
sudo lighty-enable-mod alias
 +
sudo lighty-enable-mod setenv
 +
sudo systemctl restart lighttpd
  
DData ze ctou ze souboru 'sync.json'.
+
== Odkazy ==
 +
* [[ADS-B | Zpět na ADS-B ]]
 +
* [[ADS-B#CzADSB | Zpět seznam CzADSB ]]
 +
* [[CzADSB-Mlat_web | Instalace Web Mlat přehledu ]]
 +
* [[Raspberry#Projekty | Zpět na projekty Raspberry Pi]]

Aktuální verze z 11. 3. 2026, 14:55

Verze


Mapa:

Instalace

Příprava

sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-pip python3 python3-venv gcc
sudo chmod 777 /opt/
git clone https://github.com/adsblol/mlat-server.git /opt/mlat-server
# Provedeme pripadnou opravu zdroje
VENV=/opt/mlat-python-venv
sudo rm -rf $VENV
python3 -m venv $VENV
source $VENV/bin/activate
pip3 install -U pip
pip3 install numpy scipy pykalman python-graph uvloop ujson Cython setuptools
cd /opt/mlat-server
python3 setup.py build_ext --inplace
sudo chmod 755 /opt/

Po každé aktualizaci kódu znovu zkompilujte věci Cython:

VENV=/opt/mlat-python-venv
source $VENV/bin/activate
cd /opt/mlat-server
python3 setup.py build_ext --inplace

Starý, již neplatný

pip3 install numpy scipy pykalman python-graph-core uvloop ujson Cython setuptools==81.0.0

Opusteni VENV:

deactivate

Opravy

V novějších verzích Pythonu (striktně od verze 3.11, ale v 3.13 je to už definitivní) došlo ke změně ve funkci random.sample. V některých uložištích tento nový formát není zohledněn. Prosím zkontrolujme soubor /opt/mlat-server/mlat/tracker.py, řádky 321 a 326. Pokud tam je:

new_sync |= set(random.sample(acAvailable, k=min(len(acAvailable), addSome)))

přepíšeme na:

new_sync |= set(random.sample(list(acAvailable), k=min(len(acAvailable), addSome)))

User

Při instalaci se může stát, že se nevytvoří uživatel 'mlat-server' pod kterým služba běží. To můžeme zkontrolovat.

Ověření zda uživatel existuje

id mlat-server

Vytvoření systémového uživatele a nastavení skupiny

sudo useradd -r -s /usr/sbin/nologin -M mlat-server
grep mlat-server /etc/passwd

Nastavení vlastníka pro aplikaci a virtuální prostředí

sudo chown -R mlat-server:mlat-server /opt/mlat-server
sudo chown -R mlat-server:mlat-server /opt/mlat-python-venv

Pokud mlat-server potřebuje číst data ze složky lighttpd nebo naopak, může být užitečné přidat uživatele do skupiny www-data (volitelné)

sudo usermod -a -G www-data mlat-server


Servises

Nové

sudo cp /opt/mlat-server/systemd-service.example /usr/lib/systemd/system/mlat-server.service
sudo mcedit /usr/lib/systemd/system/mlat-server.service
ExecStart=/opt/mlat-python-venv/bin/python3 /opt/mlat-server/mlat-server \
   --client-listen 40147:40147 \
   --motd "Dekujem ze predavas mlat data na CzADSB" \
   --filtered-basestation-listen 31003 \
   --basestation-listen 31004 \
   --write-csv /run/mlat-server/positions.csv \
   --work-dir /run/mlat-server \
   --check-leaks \
   --dump-pseudorange /run/mlat-server/pseudorange.json
sudo systemctl daemon-reload
sudo systemctl enable mlat-server.service
sudo systemctl restart mlat-server.service

Původní

ExecStart=/opt/mlat-python-venv/bin/ python3 /home/czadsb/mlat-server/mlat-server 
   --client-listen 40147:40147
   --basestation-listen :31003
   --write-csv /home/czadsb/mlat-server/positions.csv
   --work-dir /home/czadsb/mlat-server
   --check-leaks
   --motd Ahoj, tohle je mlat-server czadsb.cz

Help

options:
 -h, --help                      zobrazit tuto zprávu s nápovědou a ukončit

Client connections:
 --client-listen CLIENT_LISTEN   poslouchejte na hostiteli [host:]tcp_port[:udp_port] pripojeníi od multilateration klientu. 
                                 Meli byste mit alespon jeden z nich!
 --motd MOTD                     zprava odeslana klientum (vychozi: prazdna).

Output methods:
 --write-csv WRITE_CSV           zapsat vysledky ve formatu CSV do lokalniho souboru
 --basestation-connect BASESTATION_CONNECT
                                 pripojit se k portu host:port a odeslat vysledky ve formatu Basestation.
 --basestation-listen BASESTATION_LISTEN
                                 naslouchat na portu [host:] a odesilat vysledky ve formatu Basestation klientum, kteri se pripojuji.
 --filtered-basestation-connect FILTERED_BASESTATION_CONNECT
                                 pripojit se k portu host:port a odeslat vysledky ve formatu Basestation.
 --filtered-basestation-listen FILTERED_BASESTATION_LISTEN
                                 naslouchat na portu [host:] a odesilat vysledky ve formatu Basestation klientum, kteri se pripojuji.

Utility options:
 --work-dir WORK_DIR             adresar pro vystup ladeni/statistik a blacklist
 --check-leaks                   spoustet pravidelne kontroly uniku pameti (vyzaduje balicek objgraph).
 --dump-pseudorange DUMP_PSEUDORANGE
                                 vypsat data pseudorashu ve formatu JSON do souboru.
 --partition PARTITION           rozdeleni, napr. 1/1(vychozi: zadne rozdeleni).
 --tag TAG                       prefix nazvu procesu (vychozi: mlat-server, vyžaduje modul setproctitle).
 --status-interval STATUS_INTERVAL
                                 interval protokolu stavu v sekundách (vice z 15; pouziti -1 zakazat). Vychozi: 15.

Lighttpd

Mlat server sám o sobě nepotřebuje žádný web server. Dokonce nemá ani žádné API pro vzdálenou správu či podobně. Pokud ale běží na samostatném serveru a chceme na jiném sledovat provozní stav jednotlivých přijmaču, potřebujeme zajistit dostupnost souboru 'sync.json'. V tomto případě je pak je nějaký webserver doinstalovat.

# prvne nainstalujeme WebServer. Doporučuje se lighttpd, nebo nginx.
sudo apt install -y lighttpd jq
sudo lighty-enable-mod alias


Vytvoř soubor /etc/lighttpd/conf-available/89-mlat.conf:

# Na4teme modul alias
server.modules += ( "mod_alias" )

# Namapování URL na konkrétní soubor
alias.url += (
    "/mlatserver/sync.json" => "/run/mlat-server/sync.json"
)


sudo lighty-enable-mod alias
sudo lighty-enable-mod setenv
sudo systemctl restart lighttpd

Odkazy