CzADSB-Mlat server: Porovnání verzí
(→Příprava) |
|||
| (Není zobrazeno 30 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 ! | + | * 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/ | + | * 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/ | + | * 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 | ||
| − | |||
| − | * https://github.com/adsblol/mlat-server | ||
| Řá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 | ||
| − | rm -rf $VENV | + | sudo rm -rf $VENV |
python3 -m venv $VENV | python3 -m venv $VENV | ||
source $VENV/bin/activate | source $VENV/bin/activate | ||
| Řá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 | + | 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 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 == | == Help == | ||
| Řádka 60: | Řádka 100: | ||
Client connections: | Client connections: | ||
| − | --client-listen CLIENT_LISTEN poslouchejte na hostiteli [host:]tcp_port[:udp_port] | + | --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 | + | --motd MOTD zprava odeslana klientum (vychozi: prazdna). |
Output methods: | Output methods: | ||
| − | --write-csv WRITE_CSV zapsat | + | --write-csv WRITE_CSV zapsat vysledky ve formatu CSV do lokalniho souboru |
--basestation-connect BASESTATION_CONNECT | --basestation-connect BASESTATION_CONNECT | ||
| − | + | 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 | + | 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 | ||
| − | + | 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 | + | naslouchat na portu [host:] a odesilat vysledky ve formatu Basestation klientum, kteri se pripojuji. |
Utility options: | Utility options: | ||
| − | --work-dir WORK_DIR | + | --work-dir WORK_DIR adresar pro vystup ladeni/statistik a blacklist |
| − | --check-leaks | + | --check-leaks spoustet pravidelne kontroly uniku pameti (vyzaduje balicek objgraph). |
--dump-pseudorange DUMP_PSEUDORANGE | --dump-pseudorange DUMP_PSEUDORANGE | ||
| − | vypsat data | + | vypsat data pseudorashu ve formatu JSON do souboru. |
| − | --partition PARTITION | + | --partition PARTITION rozdeleni, napr. 1/1(vychozi: zadne rozdeleni). |
| − | --tag TAG | + | --tag TAG prefix nazvu procesu (vychozi: mlat-server, vyžaduje modul setproctitle). |
--status-interval STATUS_INTERVAL | --status-interval STATUS_INTERVAL | ||
| − | 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 == | ||
| + | * [[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
Obsah
Verze
- 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/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
- 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
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