×

📺 IPTV

B2C · Xtream · Reseller

IPTV kasutajate haldus

Arhiivi salvestuse kihtidele

Kolmetasandiline arhiivisüsteem 500+ samaaegsele kliendile. Seadistage menüüs Config > Storage > Storage Tiers. Igal astmel on sõltumatu elutsükkel, võimsusarvutus ja varukäitumine.

Kodeerija

Kirjuta puhver

2h kuum aken (NVMe või tmpfs)

→ peegel (pidev)

HDD RAID 5

50 TB, säilitusaeg 14 päeva

→ eellaadimine nõudmisel

Esituse vahemälu

1 TB sooja vahemälu, 500+ klienti

Kliendid

Peegel, mitte liiguta

Lõigud, mis on vanemad kui mirror_min_age_minutes, KOPEERITAKSE RAID-isse pidevalt. write_buffer hoiab 2h kuuma akna, nii et taaskerimise hiljutine esitus jääb kiirriistvara. Alles pärast evict_age_minutes (ja ainult kui kinnitatud peegleldud) kustutatakse lõigud write_bufferist. RAID-il on alati pikaajaline koopia — tunnikirjed pole.

Kiht

Eesmärk

Seaded

Kirjutuspuhver

Võtab segmente vastu 24/7, hoiab 2h kuuma akent kiireks hiljuti tagasikerimiseks, kaitseb RAID-i juhusliku IO eest. Seade võib olla füüsiline NVMe partitsioon (tootmine) või tmpfs (dev/test box ilma füüsilise NVMeta – vt tmpfs jaotist allpool).

device_path (plokiseade või 'tmpfs'), tmpfs_size_pct (10-50% MemAvailable kui tmpfs), mirror_min_age_minutes, evict_age_minutes, flush_threshold_percent (jõudsus flush trigger)

HDD RAID-arhiiv

Pikaajaline salvestusruum (vaikimisi 14 päeva). Saab pidevat koopiat kirjutuspuhvrist — järjestikused kirjutused, ilma tunnikirstuteta. Jätkab pärast algseadistust. RAID talub ühe ketta kadumist.

retention_days, raid_device, nginx_location, min_free_procent

Esituse vahemälu (valikuline)

Lugemispool vahemälu populaarsete failide jaoks, mis on vanemad kui 2 tundi (nt EPG järelejõudmine). Pärast populaarsusläve (3 tabamust / 5 min) täidetakse arhiivist nõudmisel. Seade võib olla NVMe või tmpfs.

prefetch_hours, max_sessions, eviction_policy (session/lru/fifo)

Võimsus arvutus

reaaliajal kirjutab × 2h = write_buffer hot akna suurus. Näide: 50 vooga × 8 Mbps × 2h ≈ 36 GB. Lisa ~30% juurdeandmine peegli mahajäämiste jaoks → ~50 GB write_buffer piisab 50 vooga jaoks. RAID suuruselt täis säilivuse: 50 × 8 Mbps × 14 päeva ≈ 6 TB.

Loeb (tasemeteadlik otsing)

Stream.dvr_file_path/2 katsetab write_buffer → playback_cache → arhiivi järjekorras. Lõik 2h kuuma aknas teenindatakse write_bufferist emakeele kiirusega, kuigi see on ka RAID-l. Nginx X-Accel-Redirect serveerib failid otse, minemata Phoenixi kaudu.

tmpfs virtuaalne ketas (dev/test)

Iga kiht võib kasutada RAM-iga toetatud tmpfs virtuaalset ketast füüsilise seadme asemel. Kasulik arenduskastitele, millel puudub varuosa NVMe, või efemeersetele testkeskkonnale. Salvestamisala juhtkondade seadme rippmenüü sisaldab 'tmpfs (virtuaalne ketas RAM-ist)' valikut, mis asendab seadme tee valija protsendiliuguriga.

Suurus % vaba RAM

Eraldamine määratakse MemAvailable protsendiga (alates /proc/meminfo) — samm 10, kehtivad väärtused 10/20/30/40/50. Kõva korrus 10% (kinnitamine lükab tagasi allpool). Kõva lagi 50%. Vaikimisi 30%. 100 GB MemAvailable arvutil: 10% = 10 GB, 30% = 30 GB, 50% = 50 GB. Suurust arvutatakse ümber ja ümber paigaldatakse reaalajas, kui liugur liigub ja salvestatakse.

OOM turvakate

Kui arvutatud sihtmärk ületaks 60% praegusest MemAvailable, paigaldamine keeldub ja kiht jääb ühenduseta (Stream.archive_path kukkub järgmisele terve kihile). Takistab agressiivset seadistust BEAM OOM kaudu. Kaitse jookseb käivitumisel ja iga UI salvestuse ajal.

Algseadistuse püsivus

tmpfs elab RAM-is — mis tahes lennu ajal puhvrisisu läheb hosti taaskäivitamisel KAOTAMA. Ettevalmistuse ajal kirjutatud fstab-kirje ühendab tühjad tmpf-failid järgmisel alglaadimisel automaatselt uuesti, kuid vanu segmente ei tagastata. Peegeldamine arhiivimisel jätkub tavaliselt kõige puhul, mis oli juba enne taaskäivitamist peegeldatud – ainult viimane peegeldamata aken (tavaliselt < mirror_min_age_minutes väärt) läheb kaotsi. Tootmiseks kasutage füüsilist NVMe seadet; tmpfs on mõeldud dev/test asenduseks.

Millal kasutada tmpfs

Kasutage tmpfs write_buffer jaoks kui: (a) dev/test kasti pole varuosa NVMe, kuid soovite siiski täielikku DVR torujuhtme käitamist integreerimise testimiseks, (b) operaator soovib kinnitada peegli + arhiivi käitumist ilma NVMe ette otsima, (c) efemeerse testimise, kus kadu-algseadistuse korral on aktsepteeritav. Ärge kasutage tmpfs tootmises — RAM on volatiilne ja mitmed suurusjärgud kallim kui NVMe säilivuse GB kohta.

Kiirem loputus tmpfs-i jaoks

Kui kirjutuskiht on tmpfs, kasutab StorageTierFlush tihedamaid vaikimisi — mirror_min_age 2 min, evict_age 15 min (vs 5 min / 120 min füüsilises NVMe). RAM on kallim kui disk nii et valtsitud kuum aken hoitakse väiksem. Alistage env vars MIRROR_MIN_AGE_MINUTES / EVICT_AGE_MINUTES vajadusel.

Taseme automaatne varustamine ja ohutus

Tasemed konfigureeritakse üks kord menüüs Config > Storage > Storage Tiers ja luuakse automaatselt – hostis pole käsitsi mkfs/mount/fstab redigeerimist. StorageTier.ensure_all_provisioned/0 käivitub igal SystemInitializeri alglaadimisel ja on idempotentne: juba ühendatud tasemed jäetakse vahele, puuduvad seadmed on no-ops, tmpfs-tasemed ühendatakse pärast taaskäivitamist puhtalt uuesti.

Vaikimisi alglaadimise seeme

Esimese käivituse ajal (DB-s puudub kirjutuskiht), süsteem loob automaatselt tmpfs-toetatud kirjutuskihi 30% MemAvailable eraldamisega, paigaldamise punkt /mnt/nvme_write. See annab töötava DVR torujuhtme otse-ees iga vara piisava RAM-iga. Operaator võib hiljem seadet füüsilise NVMe-ga vahetada ilma muude kihtide seadistused kaotamata.

Tervis ja failover

Stream.archive_path/1 tagastab esimese 'terve' kihi — write_buffer kui paigaldatud+kirjutav+free_pct turvalisuslae kohal, muidu langeb arvhiiv (halvenema režiim). Turvalisuse korrus 20% tmpfs (RAM-range), 2% plokkseadmete jaoks. tier_health lõpp-punkt paljastab per-kiht paigaldatud/kirjutav/free_pct jälgimiseks.

Reaalajas suuruse muutmine

Tmpfs_size_pct muutmine kasutajaliideses käivitab umount + remount uue suurusega on Save. Aktiivsed DVR kirjutised on lühidalt paused (montaaž üleminek < 1 s). Soovitus: muutke tmpfs suurust ainult siis, kui DVR kirjutamise määr on madal, ja kaaluge vooga pärast taaskäivitamist, et veenduda, et nad uue paigaldamise korralikult üles korjavad.

Base URL — OSTV mängija

Paketi väljad

Pakettide API

Parooli poliitika

Edasimüüja API

Seadistused

Kasutajaväljad

Kasutajate haldamine

IPTV kasutajate haldamine

Baas-URL — OSTV mängija

OSTV mängija rakendus võimaldab kasutajatel muuta serveri baas-URL-i (API aadress). See funktsioon on saadaval ainult kasutajatele, kelle pakkuja on root.

Põhjus: baas-URL-i muutmine on mõeldud ainult administraatoritele/root-kasutajatele, et nad saaksid vahetada servereid. Tavakasutajatel on fikseeritud baas-URL.

Kasutajaväljad

Pakettide API

Tagastab kõigi aktiivsete pakettide loendi hindade ja arveldusperioodidega.

Hallatavate kasutajate loend (edasimüüjad / pakkujad).

Tagastab konkreetse hallatava kasutaja krediidisaldo.

Paketi väljad

Edasimüüja API

API edasimüüjatele/pakkujatele. Autorisatsioon: Authorization: Bearer mtk_... Edasimüüja näeb ainult oma kliente (owner_id).

Paroolipoliitika

Parool on kohustuslik abonendi loomisel. Reeglid:

Vähemalt 8 märki

Vähemalt 1 suurtäht (A-Z)

Vähemalt 1 erimärk (!@#$%^&* jne)

Kehtib nii UI-le kui ka API-le. Uuendamisel on parool valikuline, kuid kui esitatud, peab vastama reeglitele.

Seadistused

Kihi automaatne ettevalmistamine ja turvalisus

Mahtuvuse + failisüsteemi automaatne tuvastamine: kui vaba NVMe valitakse rippmenüüst, loetakse mahtuvus (GB) lsblk -bn -o SIZE käsust.

Kihi loputusmehhanism — pidev peegeldamine

StorageTierFlush GenServer töötab iga 60 sekundi tagant. Selle asemel, et oodata tunni kataloogi 'vananemist' ja liigutada 5 GB puhanguna, tilgutab segmente RAID-ile pidevalt.

Miks pidev peegeldamine on parem kui 'oota 60 min, liiguta partiina': (1) RAID-i koormus on ühtlane; (2) enamik kuumadest andmetest on juba RAID-il; (3) kustutamine on faili kaupa kontrollitud.

Poolelioleva segmendi ohutus: peegeldamine valib ainult failid, mis on vanemad kui MIRROR_MIN_AGE_MINUTES (find -mmin +5).

Paigalduse kohane häälestus (.env)

500–1000

Suuruse reegel:

DVR eelvaate kalender

DVR eelvaate vahekaart näitab serveris renderdatud kalendrit, mis toob esile ainult need päevad, millel on kettale salvestisi.

Salvestistega päevad on klõpsatavad (sinine) — klõpsamine täidab kuupäeva sisestusvälja selle päevaga 00:00; kasutaja valib seejärel tunni.

Rakendatud failis Stream.available_dvr_days/1 via find -mindepth 4 -maxdepth 4 -type d igal kihi ühenduspunktil.

B2C Player API

Ülevaade

B2C (Business-to-Consumer) API pakub lõppkasutajate mängijarakendustele autentimist ja voojuurdepääsu. Kasutajad autentivad end kasutajanime/parooliga ja saavad järgnevate päringute jaoks tähtajalise autentimisloa.

Autentimine

Autentida kasutajat ja hankige auth_token järgnevaid API kutse jaoks.

Meetod

Lõpp-punkt

Taotluse keha

Parameeter

Tüüp

Nõutav

Kirjeldus

Jah

Kasutaja sisselogimise nimi

Kasutaja parool

Näidis taotlus

Vastuse väljad

Eduka vastus (200)

Krüpteeritud autentimise märgis järgnevatele API kutsele

Märgise aegumise kuupäev/kellaaeg ISO 8601 formaadis

Näidis edukuse vastus

Vastus viga (403)

Vea kirjelduse sõnum

HTTP olekukood

Vea vastuse näide

Kasutajateave

Hangige teavet autenditud kasutaja kohta auth token kasutades.

Vastuse väljad

Autenditud kasutaja kasutajanimi

Serveri sõnum (tühi kui pole)

Autentimise olek (1 = autenditud)

Konto olek: Aktiivne, keelatud, keelatud, Katse

Konto aegumiskuupäev (null, kui see on piiramatu)

Praeguste aktiivsete ühenduste arv

Konto loomise kuupäev ISO 8601 formaadis

Maksimaalne lubatud samaaegsete ühenduste arv

Lubatud väljundvoovormingute loend

Kasutaja omaniku/edasimüüja pakkuja nimi (null kui pole)

Pakkuja logo pildi URL (null kui pole)

Pakkuja ahendamise logo kujutise URL 208 x 208 (null, kui seda pole)

Praegune serveriaeg ISO 8601 formaadis

Näidis taotlus

Kategooriad

Hangige kategooriaid filtreeritud tüübi järgi. Saadaolevad tüübid: live (vooge), vod (filmid), seeria.

Kategooria tüüp: otse-, vod või sari

Kategooria ID stringina

Kategooria kuvanimetus

Emakaategooriae ID (0 kui juur)

MD5 sisu räsi vahemälu kehtetuks tunnistamiseks

Näidis taotlus

VOD üksikasjad

Hangige üksikasjalik teave konkreetse VOD üksuse kohta, sealhulgas metaandmed ja voodu lingid.

VOD voo ID (UUID)

Infoobjekti väljad

Kaanepildi URL

TMDB identifikaator

Taustadekoratsiooni pildi URL

Žanri string

Süžee / kirjeldus

Osanäitlejad

Hindamisväärtus (0–10)

Direktori nimi

Väljalaske kuupäev

Kestus sekundites

Kestus vormindatud stringina

Kategooria ID-de massiiv

1 kui täiskasvanud sisu, 0 muidu

VOD-objektiväljad

VOD voo ID

VOD pealkiri

Lisatud kuupäev (ISO 8601)

Voo lingi URL

Video/heli kodeki metaandmed

Seeria üksikasjad

Hangige seeria teave täielike hooaja ja episoodide nimekirjadega, mis on koondatud hooaja numbri järgi.

Seeria ID (UUID)

Seasons Array Fields

Hooaja number

Hooaja kuvanimi

Hooaja episoodide arv

Hooaja eetrikuupäev

Hooaja ülevaade / kirjeldus

Hooaja kaanepildi URL

Episoodid objekt

Kaart hooaja numbri stringiga. Iga väärtus on episoodi objektide massiiv.

Episoodi objektiväljad

Episoodi ID

TMDB episoodi ID

Episoodi number hooaja sees

Episoodi pealkiri

Lisamise kuupäev (ISO 8601)

Hooaja number

Episoodi infobjekt (sama struktuur kui VOD info)

Voo lingi URL

Video/heli kodeki metaandmed

Märkmed

Tokeni aegumine sõltub kasutaja rollist: admin = 365 päeva, muu = 30 päeva|Keelatud kontod ei saa autentida (tagastab 403)|Iga edukas sisselogimine värskendab kasutaja viimase sisselogimise ajatemplit|Tokenid on krüptitud ja sisaldavad kasutajatunnust, kasutajanime, rolli ja aegumist

Edukas vastus (200)

Auth token saadi /auth lõpp-punktist