Műszaki útmutató
Ez az oldal haladó felhasználóknak és integrátoroknak szól: hogyan épül fel a Tune, az API-ja és az üzemeltetési részletek. A mindennapi beállításokhoz lásd a Konfiguráció oldalt.
Architektúra
- Szerver: egyetlen program, a
tune-server, Rustban írva. Indexeli a könyvtárat, dekódolja a hangot, vezérli az eszközöket, és kiszolgálja a webes felületet, az API-t és a hangfolyamokat, mindezt egyetlen porton (alapértelmezetten 8888). - Webes felület: a szerver által kiszolgált Svelte-alkalmazás (a program melletti
web/mappa, vagy aTUNE_WEB_DIR). - Adatbázis: alapértelmezetten SQLite, opcionálisan PostgreSQL (lásd: Konfiguráció). A migrációk induláskor futnak le.
- Dekódolás: beépített dekóderek (Symphonia, valamint a Tune saját WavPack- és APE-dekóderei és a libopus). Az átmintavételezés sinc-interpolációt használ (rubato). A lejátszás nem megy át az ffmpegen; a közzétett buildekhez egy minimális ffmpeg tartozik, kizárólag az átalakító AAC-kódolásához.
- Felderítés: SSDP a DLNA/UPnP-hez, mDNS az AirPlay-hez és a Chromecasthoz, Squeezebox-felderítés az UDP 3483-on.
- A Tune a hálózaton UPnP-médiaszerverként is megjelenik (a könyvtára látható a DLNA-vezérlőalkalmazásokban), zónánként pedig UPnP-rendererként.
HTTP API
Minden útvonal a /api/v1 alatt található. Az útvonalak JSON-listája a GET /api/v1/system/api-docs címen érhető el (az API-dokumentáció hivatkozás a Beállítások › Rendszer › Névjegy alatt). A Tune nem biztosít OpenAPI-leírást.
| Útvonal | Cél |
|---|---|
GET /api/v1/system/health | A szerver állapota: ok vagy degraded (HTTP 200), error (HTTP 503) |
GET /api/v1/system/version | A szerver verziója |
GET /api/v1/system/stats | Statisztikák (a Docker-lemezkép állapotellenőrzése használja) |
POST /api/v1/system/scan, GET /api/v1/system/scan/status | Beolvasás indítása, az előrehaladás követése |
GET /api/v1/system/logs?lines=N | A legutóbbi naplósorok (alapértelmezetten 1000) |
GET /api/v1/system/diagnostics/bundle | Diagnosztikai archívum |
GET /api/v1/zones | A zónák listája |
GET /api/v1/zones/{id}/status | Egy zóna lejátszási állapota |
POST /api/v1/zones/{id}/play, /pause, /resume, /stop, /next, /previous, /seek, /volume | Lejátszásvezérlő parancsok |
GET /api/v1/zones/{id}/queue | Várólista |
GET /api/v1/search | Keresés a könyvtárban és a szolgáltatásokban |
GET /api/v1/library/albums, /artists, /tracks | Könyvtár |
A valós idejű események (lejátszás, várólista, beolvasás…) a /ws (vagy /api/v1/ws) címen lévő WebSocketen mennek át. A régi, v1 nélküli /api/scan útvonalak már nem léteznek.
Hitelesítés
A hitelesítés alapértelmezetten ki van kapcsolva, ami az API-t az egész helyi hálózat számára nyitva hagyja. Az API-n keresztül kapcsolható be (/api/v1/auth/config). A fiókok Tune-profilok, a jelszavakat Argon2-vel hashelik, a munkamenetek pedig 24 órás JWT-k. A hosszú életű API-tokent a POST /api/v1/auth/token állítja ki. Elfogadott fejlécek: Authorization: Bearer <token> és Authorization: ApiKey <key>. Bekapcsolt hitelesítés mellett is a /system/health és a /system/version nyilvános marad. A Tune nem szolgál ki HTTPS-t: ha szükséged van rá, tegyél elé fordított proxyt.
Squeezebox / LMS-kompatibilitás
- Beépített SlimProto-szerver a 3483-as porton (TCP és UDP, a
TUNE_SLIMPROTO_PORTváltozóval állítható), Squeezelite- és Squeezebox-lejátszókhoz. - LMS-kompatibilis szöveges parancsport a 9090-en (
TUNE_CLI_PORT), amely a következő szabad portra költözik, ha a 9090 foglalt.
Üzemeltetés
- .deb csomag: a program a
/opt/tune/mappában, az adatok a/var/lib/tune/mappában, a konfiguráció a/etc/default/tune-serverfájlban (frissítéseknél megmarad), atune-server.serviceegység atunefelhasználóként fut. Azapt purgesoha nem törli a/var/lib/tunemappát. - Docker:
renesenses/tunelemezkép (amd64, arm64). Nem roottunefelhasználóként fut (uid 1000),/dataés/musickötetekkel. Sem helyi hangkimeneteket, sem PostgreSQL-t nem tartalmaz. arm64-en az AirPlay 2 nem érhető el, és a Tune AirPlay 1-et használ. - Tune OS: Fedora-alapú. A program a
/opt/tunemappában, atuneszolgáltatás, az adatok a/opt/tune/datamappában, a 80-as port a 8888-ra irányítva, SSH bekapcsolva (a root-bejelentkezés tiltott). - Naplók: a
RUST_LOGmodulonkénti finom szűrést tesz lehetővé.
Lásd még
- Konfiguráció: változók, portok, helyek
- OAAT: a Tune protokollja
- Billentyűparancsok