×

📺 IPTV

B2C · Xtream · Reseller

IPTV ρυθμίσεις

Επίπεδα αποθήκευσης

Σύστημα αρχείων τριών επιπέδων για 500+ πελάτες. Ρύθμιση: Config > Storage > Storage Tiers. Κάθε επίπεδο έχει ανεξάρτητο κύκλο ζωής.

Κώδικας

Διαμοίραση εγγραφής

2h hot παράθυρο (NVMe ή tmpfs)

- mirror (συνεχές)

HDD RAID 5

50 TB, 14 ημέρες

- prefetch κατ' απαίτηση

Διαχωριστής αναπαραγωγής

1 TB warm cache, 500+ πελάτες

Πελάτες

Αντιγραφή, όχι μετακίνηση

Τα segments παλαιότερα του mirror_min_age_minutes ΑΝΤΙΓΡΑΦΟΝΤΑΙ στο RAID. Το write_buffer 2h hot παράθυρο διατηρεί. Μόνο μετά από evict_age_minutes διαγράφονται. Το RAID έχει πάντα το long-tail copy.

Επίπεδο

Σκοπός

Ρυθμίσεις

Εγγραφή

Εγγραφή σκοπός.

Εγγραφή ρυθμίσεις.

Αρχείο

Αρχείο σκοπός.

Αρχείο ρυθμίσεις.

Cache

Cache cél.

Cache ρυθμίσεις.

Χωρητικότητα

live writes x 2h = write_buffer hot παράθυρο. Παράδειγμα: 50 streams x 8 Mbps x 2h ~ 36 GB. ~30%% ~ ~50 GB write_buffer αρκετό. RAID: 50 x 8 Mbps x 14 ημέρες ~ 6 TB.

Σημείωση ανάγνωσης

Το Stream.dvr_file_path/2 probes write_buffer -> playback_cache -> archive with order. A segment in the 2h hot window is served from write_buffer at native speeds. Το Nginx X-Accel-Redirect serves files directly.

tmpfs

tmpfs εισαγωγή.

Μέγεθος υπολογισμού

tmpfs μέγεθος υπολογισμός.

OOM προστασία

tmpfs OOM προστασία.

Επανεκκίνηση

tmpfs επανεκκίνηση.

Περιπτώσεις χρήσης

tmpfs χρήσης περιπτώσεις.

Συγχώνευση ηλικία

tmpfs συγχώνευση ηλικία.

Provisioning

Τα tiers ρυθμίζονται μία φορά μέσω Config > Storage > Storage Tiers και provisioned αυτόματα - δεν χρειάζεται χειροκίνητο mkfs/mount/fstab. Το StorageTier.ensure_all_provisioned/0 τρέχει σε κάθε boot και είναι idempotent.

Προεπιλεγμένη εκκίνηση

Την πρώτη εκκίνηση το σύστημα δημιουργεί αυτόματα ένα tmpfs-backed write tier με 30%% MemAvailable, mount point /mnt/nvme_write. Αυτό δίνει ένα λειτουργικό DVR pipeline. Ο διαχειριστής μπορεί αργότερα να εναλλάξει σε φυσικό NVMe.

Υγεία

Το Stream.archive_path/1 επιστρέφει το πρώτο υγιές tier - write_buffer αν είναι mounted+writable+free_pct πάνω από το safety floor, αλλιώς archive. Safety floor 20%% για tmpfs, 2%% για block devices.

Αλλαγή μεγέθους

Η αλλαγή του tmpfs_size_pct στο UI προκαλεί umount + remount με το νέο μέγεθος στο Save. Οι ενεργές DVR εγγραφές διακόπτονται briefly (< 1 s). Σύσταση: αλλάξτε το tmpfs μόνο όταν ο ρυθμός DVR εγγραφής είναι χαμηλός.

IPTV Base URL - βασική διεύθυνση για πρόσβαση στο IPTV API.

Πεδία πακέτων - καθορίζουν τους πόρους που περιλαμβάνονται.

IPTV Packages API - API διαχείρισης πακέτων IPTV.

IPTV Password Policy - πολιτική ασφαλείας κωδικών.

IPTV Reseller API - API για resellers.

Ρυθμίσεις

Πεδία χρήστη

Διαχείριση χρήστη

Διαχείριση Χρηστών IPTV

Βασικό URL — OSTV Player

Η εφαρμογή OSTV Player επιτρέπει στους χρήστες να αλλάξουν το βασικό URL του διακομιστή (διεύθυνση API). Αυτή η λειτουργία είναι διαθέσιμη μόνο σε χρήστες με πάροχο ρυθμισμένο σε root.

Λόγος: Η αλλαγή του βασικού URL προορίζεται μόνο για διαχειριστές/root χρήστες ώστε να εναλλάσσουν διακομιστές (π.χ. παραγωγή vs. δοκιμή). Οι κανονικοί χρήστες έχουν σταθερό βασικό URL και δεν μπορούν να το αλλάξουν.

Πεδία χρήστη

Διαχείριση IPTV - διαχείριση περιεχομένου, χρηστών και πακέτων IPTV.

Επιστρέφει λίστα όλων των ενεργών πακέτων με τιμές και περιόδους χρέωσης.

Λίστα χρηστών διαχείρισης (μεταπωλητές / πάροχοι).

Επιστρέφει υπόλοιπο πίστωσης για συγκεκριμένο χρήστη διαχείρισης.

Πεδία πακέτου

Προσθήκη νέων χρηστών IPTV.

API για μεταπωλητές/παρόχους. Εξουσιοδότηση: Authorization: Bearer mtk_... (token από Manage Users). Ο μεταπωλητής βλέπει μόνο τους δικούς του πελάτες (owner_id).

Πολιτική κωδικού πρόσβασης

Ο κωδικός πρόσβασης απαιτείται κατά τη δημιουργία συνδρομητή. Κανόνες:

Τουλάχιστον 8 χαρακτήρες

Τουλάχιστον 1 κεφαλαίο γράμμα (A-Z)

Τουλάχιστον 1 ειδικός χαρακτήρας (!@#$%^&* κ.λπ.)

Ισχύει για UI και API. Κατά την ενημέρωση, ο κωδικός είναι προαιρετικός, αλλά αν παρέχεται πρέπει να πληροί τους κανόνες.

Ρυθμίσεις

Αυτόματη παροχή & ασφάλεια επιπέδου

Αυτόματη ανίχνευση χωρητικότητας + συστήματος αρχείων: όταν επιλέγεται ελεύθερο NVMe από το αναπτυσσόμενο μενού, η χωρητικότητα (GB) διαβάζεται από lsblk -bn -o SIZE και το τρέχον FS από blkid (με εναλλακτική ολόκληρου δίσκου). Η φόρμα εμφανίζει τις τιμές ως μόνο για ανάγνωση — χωρίς χειροκίνητη καταχώρηση, χωρίς σφάλματα.

Μηχανισμός εκκένωσης επιπέδου — Συνεχής αντιγραφή

Το StorageTierFlush GenServer εκτελείται κάθε 60 δευτερόλεπτα. Αντί να περιμένει έναν κατάλογο ώρας να «παλιώσει» και να τον μετακινεί ως εκρηκτική μεταφορά 5GB, μεταφέρει σταδιακά τμήματα στο RAID συνεχώς διατηρώντας ένα hot window 2 ωρών στο NVMe για γρήγορη αναπαραγωγή «πρόσφατης επιστροφής». Οι δύο φάσεις είναι αποσυζευγμένες — η αντιγραφή και η διαγραφή είναι ξεχωριστές, επαληθευμένες λειτουργίες.

Γιατί η συνεχής αντιγραφή υπερτερεί της «αναμονής 60 λεπτών, μαζική μετακίνηση»: (1) Το φορτίο RAID είναι ομοιόμορφο — χωρίς εκρήξεις 5GB στα όρια ωρών, μόνο σταδιακή ροή τμημάτων 7MB· (2) Τα περισσότερα hot δεδομένα βρίσκονται ήδη στο RAID — η ανάκτηση από καταστροφή χάνει μόνο τα τελευταία λίγα λεπτά· (3) Η εκκένωση επαληθεύεται ανά αρχείο — αποτυχία μερικής αντιγραφής ανιχνεύεται πριν από την απώλεια δεδομένων NVMe.

Ασφάλεια εν εξελίξει τμημάτων: η αντιγραφή επιλέγει μόνο αρχεία παλαιότερα από MIRROR_MIN_AGE_MINUTES μέσω find -mmin +5. Ένα αρχείο τμήματος που εξακολουθεί να γράφεται από το FFmpeg δεν θα εμφανιστεί στη λίστα — καμία πιθανότητα μεταφοράς μερικής εγγραφής.

Ρύθμιση ανά ανάπτυξη (.env)

Περιεχόμενο IPTV - διαχείριση βίντεο περιεχομένου IPTV.

Κανόνας διαστασιολόγησης:

Ημερολόγιο προεπισκόπησης DVR

Η καρτέλα DVR Preview εμφανίζει ένα ημερολόγιο αποδοσμένο από τον διακομιστή που αναδεικνύει μόνο τις ημέρες για τις οποίες υπάρχουν εγγραφές στο δίσκο. Η σάρωση εκτελείται σε όλα τα επίπεδα (write_buffer + read_cache + archive + legacy) ώστε ένα τμήμα που μόλις μεταφέρθηκε από NVMe σε RAID να παραμένει ορατό χωρίς καθυστέρηση.

Οι ημέρες με εγγραφές είναι κλικάρισμες (μπλε) — το κλικ συμπληρώνει εκ των προτέρων την είσοδο ημερομηνίας/ώρας με εκείνη την ημέρα στις 00:00· ο χρήστης επιλέγει στη συνέχεια την ώρα. Ημέρες χωρίς εγγραφή εμφανίζονται αμυδρά και δεν είναι ενεργές.

Υλοποιημένο στο Stream.available_dvr_days/1 μέσω find -mindepth 4 -maxdepth 4 -type d σε κάθε σημείο montage επιπέδου· αποεπανάληψη σε επίπεδα (μια ημέρα εμφανίζεται μία φορά ακόμα και αν έχει τμήματα σε πολλά επίπεδα κατά τη διάρκεια ενός παραθύρου εκκένωσης).

Τίτλος

Επισκόπηση

Γενική επισκόπηση του B2C API.

Ταυτοποίηση

Περιγραφή ταυτοποίησης

Μέθοδος

Τελικό σημείο

Σώμα αιτήματος

Παράμετρος

Τύπος

Απαιτούμενο

Περιγραφή

Ναί

Περιγραφή ονόματος χρήστη

Περιγραφή κωδικού πρόσβασης

Παράδειγμα αιτήματος

Πεδία απόκρισης

Επιτυχής απόκριση

Περιγραφή token ταυτοποίησης

Περιγραφή λήξης

Παράδειγμα επιτυχίας

Απόκριση σφάλματος

Περιγραφή μηνύματος σφάλματος

Περιγραφή κωδικού σφάλματος

Παράδειγμα σφάλματος

Πληροφορίες χρήστη

Περιγραφή πληροφοριών χρήστη

Πεδία πληροφοριών χρήστη

Περιγραφή ονόματος χρήστη

Περιγραφή μηνύματος

Περιγραφή ταυτοποίησης

Περιγραφή κατάστασης

Περιγραφή λήξης

Περιγραφή ενεργών συνδέσεων

Περιγραφή δημιουργίας

Περιγραφή μέγιστων συνδέσεων

Περιγραφή μορφών

Περιγραφή ονόματος παρόχου

Περιγραφή λογότυπου παρόχου

Περιγραφή συρρίκνωσης λογότυπου παρόχου

Περιγραφή τρέχουσας ώρας

Παράδειγμα πληροφοριών χρήστη

Κατηγορίες

Περιγραφή κατηγοριών

Περιγραφή τύπου κατηγορίας

Περιγραφή ID κατηγορίας

Περιγραφή ονόματος κατηγορίας

Περιγραφή γονικής κατηγορίας

Περιγραφή cache κατηγοριών

Παράδειγμα κατηγοριών

Λεπτομέρειες VOD

Περιγραφή λεπτομερειών VOD

Περιγραφή ID λεπτομερειών VOD

VOD τίτλος

Εικόνα VOD

VOD TMDB ID

Πληροφορίες φόντου

VOD_genre

Πλοκή VOD

Πληροφορίες καστ

Αξιολόγηση VOD

Πληροφορίες σκηνοθέτη

Ημερομηνία κυκλοφορίας VOD

Διάρκεια VOD (δευτερόλεπτα)

Διάρκεια VOD (λεπτά)

Κατηγορίες VOD

Ενηλίκων περιεχόμενο

VOD stream τίτλος

ID ροής VOD

VOD όνομα

VOD προστέθηκε

Συνδέσμοι VOD

Μεταδεδομένα VOD

Λεπτομέρειες σειράς

Περιγραφή λεπτομερειών σειράς

Περιγραφή ID λεπτομερειών σειράς

Εποχές

Αριθμός εποχής

Όνομα εποχής

Αριθμός επεισοδίων εποχής

Ημερομηνία πρεμιέρας εποχής

Επισκόπηση εποχής

Κάλυμμα εποχής

Επεισόδια

Περιγραφή επεισοδίων

Πεδεία επεισοδίου

Επεισόδιο ID

Επεισόδιο TMDB ID

Αριθμός επεισοδίου

Τίτλος επεισοδίου

Επεισόδιο προστέθηκε

Εποδεί επεισοδίου

Πληροφορίες επεισοδίου

Συνδέσμοι επεισοδίου

Μεταδεδομένα επεισοδίου

Σημειώσεις

Σημειώσεις

Απόκριση πληροφοριών χρήστη

Περιγραφή token πληροφοριών χρήστη