×

📺 IPTV

B2C · Xtream · Reseller

IPTV Urus Pengguna

Peringkat Storan Arkib

Sistem arkib tiga peringkat untuk 500+ pelanggan serentak.

Pengekod

Tulis Penampan

Tetingkap panas 2j (NVMe atau tmpfs)

→ cermin (berterusan)

HDD RAID 5

50 TB, pengekalan 14 hari

→ prefetch atas permintaan

Cache Main balik

1 TB cache hangat, 500+ pelanggan

Pelanggan

Cermin, bukan bergerak

Segmen yang lebih lama daripada mirror_min_age_minutes disalin ke RAID secara berterusan.

Peringkat

Tujuan

tetapan

Tulis Penampan

Menerima segmen 24/7, memegang tetingkap panas 2j untuk main balik gulung semula yang pantas, melindungi RAID daripada IO rawak.

laluan_peranti (sekat peranti atau 'tmpfs'), tmpfs_size_pct (10-50% MemAvailable apabila tmpfs), mirror_min_age_minutes, evict_age_minutes, flush_threshold_percent (force flush trigger)

Arkib HDD RAID

Storan ekor panjang untuk pengekalan penuh (lalai 14 hari).

hari_pengekalan, peranti_serbuan, lokasi_nginx, peratus_percuma_min

Cache Main semula (pilihan)

Cache sisi baca untuk fail popular lebih lama daripada 2j (cth. EPG catch-up).

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

Kiraan kapasiti

tulis langsung × 2j = saiz tetingkap panas write_buffer.

Bacaan (pencarian sedar peringkat)

Stream.dvr_file_path/2 probe write_buffer → playback_cache → arkib mengikut urutan.

tmpfs Cakera Maya (dev/test)

Setiap peringkat boleh menggunakan cakera maya tmpfs yang disokong RAM dan bukannya peranti blok fizikal.

Saiz dalam % RAM percuma

Peruntukan ditentukan sebagai peratusan MemAvailable (dari /proc/meminfo) — langkah 10, nilai sah 10/20/30/40/50.

pengawal keselamatan OOM

Jika sasaran yang dikira akan melebihi 60% daripada MemAvailable semasa, pelekapan ditolak dan peringkat kekal di luar talian (Stream.archive_path jatuh ke peringkat sihat seterusnya).

But semula kegigihan

tmpfs hidup dalam RAM — sebarang kandungan penimbal dalam penerbangan HILANG apabila hos but semula.

Bila hendak menggunakan tmpfs

Gunakan tmpfs untuk write_buffer apabila: (a) dev/test box tidak mempunyai NVMe ganti tetapi anda masih mahu saluran paip DVR penuh berjalan untuk ujian integrasi, (b) pengendali ingin mengesahkan kelakuan cermin + arkib tanpa membeli NVMe di hadapan, (c) ujian sementara di mana loss-on-reboot boleh diterima.

Siram lebih cepat untuk tmpfs

Apabila peringkat tulis ialah tmpfs, StorageTierFlush menggunakan lalai yang lebih ketat — mirror_min_age 2 min, evict_age 15 min (vs 5 min / 120 min untuk NVMe fizikal).

Peringkat Auto-Peruntukan & Keselamatan

Tier dikonfigurasikan sekali melalui Config > Storage > Storage Tiers dan diperuntukkan secara automatik — tiada pengeditan mkfs/mount/fstab manual pada hos.

Benih but lalai

Pada but pertama (tiada peringkat tulis dalam DB), sistem mencipta secara automatik peringkat tulis yang disokong tmpfs dengan 30% peruntukan MemAvailable, titik lekap /mnt/nvme_write.

Kesihatan & failover

Stream.archive_path/1 mengembalikan peringkat 'sihat' pertama — write_buffer jika dipasang+pct+bebas_tulis di atas tingkat keselamatan, jika tidak, akan kembali ke arkib (mod terdegradasi).

Perubahan saiz hidup

Menukar tmpfs_size_pct dalam UI mencetuskan umount + remount dengan saiz baharu pada Save.

URL asas — Pemain OSTV

Medan Pakej

API Pakej

Dasar Kata Laluan

API Penjual Semula

tetapan

Medan Pengguna

Pengurusan Pengguna

IPTV Urus Pengguna

URL asas — Pemain OSTV

Aplikasi Pemain OSTV membolehkan pengguna menukar URL pangkalan pelayan (alamat API).

Sebab: Menukar URL asas hanya bertujuan untuk pentadbir/pengguna root supaya mereka boleh bertukar antara pelayan (cth. pengeluaran lwn. ujian).

Medan Pengguna

API Pakej

Mengembalikan senarai semua pakej aktif dengan harga dan tempoh pengebilan.

Senarai pengguna pengurusan (penjual semula / pembekal).

Mengembalikan baki kredit untuk pengguna pengurusan tertentu.

Medan Pakej

API Penjual Semula

API untuk penjual semula/penyedia.

Dasar Kata Laluan

Kata laluan diperlukan semasa membuat pelanggan.

Minimum 8 aksara

Sekurang-kurangnya 1 huruf besar (A-Z)

Sekurang-kurangnya 1 aksara khas (!@#$%^&* dsb.)

Berlaku pada UI dan API.

tetapan

Peringkat Auto-Peruntukan & Keselamatan

Pengesanan automatik sistem fail kapasiti +: apabila NVMe percuma dipilih daripada menu lungsur, kapasiti (GB) dibaca daripada lsblk -bn -o SIZE dan FS semasa daripada blkid (dengan sandaran keseluruhan cakera).

Mekanisme Flush Peringkat — Cermin Berterusan

StorageTierFlush GenServer berjalan setiap 60-an.

Mengapa cermin berterusan berdegup "tunggu 60minit, bergerak kelompok": (1) Muatan RAID adalah sekata — tiada pecahan 5GB pada sempadan jam, hanya menitis segmen 7MB;

Keselamatan segmen yang sedang berjalan: cermin hanya memilih fail yang lebih lama daripada MIRROR_MIN_AGE_MINUTES melalui find -mmin +5.

Penalaan Per-deployment (.env)

500–1000

Peraturan saiz:

Kalendar Pratonton DVR

Tab Pratonton DVR menunjukkan kalendar yang diberikan pelayan yang menyerlahkan hanya hari yang rakaman wujud pada cakera.

Hari dengan rakaman boleh diklik (biru) — mengklik praisi input tarikh tarikh dengan hari itu pada 00:00;

Dilaksanakan dalam Stream.available_dvr_days/1 melalui find -mindepth 4 -maxdepth 4 -type d pada setiap tier mount;

API Pemain B2C

Gambaran keseluruhan

API B2C (Business-to-Consumer) menyediakan pengesahan dan akses strim untuk aplikasi pemain pengguna akhir.

Pengesahan

Sahkan pengguna dan dapatkan auth_token untuk panggilan API berikutnya.

Kaedah

Titik akhir

Badan Permintaan

Parameter

taip

Diperlukan

Penerangan

ya

Nama log masuk pengguna

Kata laluan pengguna

Contoh Permintaan

Medan Respons

Respons Kejayaan (200)

Token pengesahan yang disulitkan untuk panggilan API berikutnya

Tarikh/masa tamat tempoh token dalam format ISO 8601

Contoh Respons Kejayaan

Respons Ralat (403)

Mesej penerangan ralat

Kod status HTTP

Contoh Jawapan Ralat

Maklumat Pengguna

Dapatkan maklumat tentang pengguna yang disahkan menggunakan token pengesahan.

Medan Respons

Nama pengguna pengguna yang disahkan

Mesej pelayan (kosong jika tiada)

Status pengesahan (1 = disahkan)

Status akaun: Aktif, Diharamkan, Kurang Upaya, Percubaan

Tarikh tamat akaun (batal jika tidak terhad)

Bilangan sambungan aktif semasa

Tarikh penciptaan akaun dalam format ISO 8601

Sambungan serentak maksimum yang dibenarkan

Senarai format aliran keluaran yang dibenarkan

Nama pembekal pemilik/penjual semula pengguna (batal jika tiada)

URL imej logo pembekal (tiada jika tiada)

URL imej logo pembekal runtuh 208x208 (tiada jika tiada)

Masa pelayan semasa dalam format ISO 8601

Contoh Permintaan

Kategori

Dapatkan semula kategori yang ditapis mengikut jenis.

Jenis kategori: langsung, vod atau siri

ID Kategori sebagai rentetan

Nama paparan kategori

ID kategori induk (0 jika akar)

Cincang kandungan MD5 untuk ketidaksahihan cache

Contoh Permintaan

Butiran VOD

Dapatkan maklumat terperinci untuk item VOD tertentu, termasuk metadata dan pautan strim.

ID aliran VOD (UUID)

Medan Objek Maklumat

URL imej muka depan

pengecam TMDB

URL imej tirai latar

Rentetan genre

Plot / huraian

Ahli pelakon

Nilai penilaian (0-10)

Nama pengarah

Tarikh keluaran

Tempoh dalam beberapa saat

Tempoh sebagai rentetan yang diformatkan

Tatasusunan ID kategori

1 jika kandungan dewasa, 0 sebaliknya

Medan Objek VOD

ID aliran VOD

Tajuk VOD

Tarikh ditambah (ISO 8601)

URL pautan strim

Metadata codec video/audio

Perincian Siri

Dapatkan maklumat siri dengan penyenaraian musim dan episod penuh, dikumpulkan mengikut nombor musim.

ID Siri (UUID)

Medan Susunan Musim

Nombor musim

Nama paparan musim

Bilangan episod dalam musim

Tarikh siaran musim ini

Gambaran keseluruhan / penerangan musim

URL imej muka depan musim

Objek Episod

Peta dikunci oleh rentetan nombor musim.

Medan Objek Episod

ID episod

ID episod TMDB

Nombor episod dalam musim

Tajuk episod

Tarikh ditambah (ISO 8601)

Nombor musim

Objek maklumat episod (struktur yang sama seperti maklumat VOD)

URL pautan strim

Metadata codec video/audio

Nota

Tamat tempoh token bergantung pada peranan pengguna: admin = 365 hari, lain = 30 hari|Akaun yang dilumpuhkan tidak dapat mengesahkan (mengembalikan 403)|Setiap log masuk yang berjaya mengemas kini cap masa log masuk terakhir pengguna|Token disulitkan dan mengandungi user_id, nama pengguna, peranan dan tamat tempoh

Respons Kejayaan (200)

Token pengesahan diperoleh daripada titik akhir /auth