IptvHub 1.2.0.4

IPTV Hub is a self-hosted Windows service that aggregates multiple upstream IPTV providers

<Still testing, most of it functional. Need to test the EPG support>

## 1. Overview

IPTV Hub is a self-hosted Windows service that aggregates multiple upstream IPTV providers — M3U playlists, Xtream Codes servers, Plex Media Server, Enigma2 receivers, and YouTube streams — and re-serves them as one or more unified, locally-hosted IPTV servers. Each server instance listens on its own port and exposes standard endpoints that any modern media player can connect to.

### Source types

IPTV Hub can pull content from six types of upstream sources, which can be mixed freely on any server:

| Source type | What it provides |
|---|---|
| **M3U Playlist** | Live channels from any standard `.m3u` or `.m3u8` URL. Supports an optional XMLTV EPG URL |
| **M3U Collection** | Multiple M3U playlist URLs merged into one source |
| **Xtream Codes** | Live channels, VOD movies, and TV series from a compatible provider's API |
| **Plex Media Server** | VOD movies and TV series (with full seasons, episodes, and per-episode thumbnails) from a local or remote Plex instance |
| **Enigma2** | Live channels from a satellite receiver running Enigma2, imported by bouquet |
| **YouTube** | Individual YouTube channels, live streams, or videos defined manually |

### Player endpoints

Each Hub server exposes three standard endpoint families that cover all major media players:

| Endpoint | Format | Compatible players |
|---|---|---|
| `/get.php` | M3U playlist | VLC, Kodi, any M3U-capable player |
| `/player_api.php`, `/panel_api.php` | Xtream Codes API | Tivimate, IPTV Smarters, GSE Smart IPTV, Kodi (IPTV Simple), and others |
| `/xmltv.php`, `/epg.xml` | XMLTV EPG | Any player that accepts an XMLTV URL |

The Xtream Codes API exposes all three content types: **live channels**, **VOD movies**, and **TV series** (with season and episode browsing).

### Content management

- **Automatic refresh** — each source is re-fetched on a configurable schedule (default 60 minutes). The server's content is updated without restarting.
- **Link scanning** — after each refresh, Hub optionally tests every live channel URL and marks channels as working or dead. The Dashboard shows the live/dead breakdown per source group.
- **Image proxy** — channel logos and VOD cover art are served through Hub and cached in the local database, so images appear even if the upstream URL changes or is temporarily unavailable.
- **Stream proxy / redirect** — streams can be relayed through Hub (useful for hiding upstream URLs or bypassing player redirect restrictions) or redirected directly to the upstream server (lower resource usage).

### Multi-server and access control

- **Multiple server instances** — run several Hub servers simultaneously, each on its own port, with a completely independent source set, channel list, and user database. This lets you expose different content packages to different devices or users.
- **Per-server user authentication** — each server has its own optional user list. If the list is empty, the server is open. Each user can have a maximum simultaneous connection limit.

### Management UI

A browser-based management interface (React SPA) provides:

- **Dashboard** — at-a-glance view of running server count, total sources, total channels, and service health. Shows every channel with its live/dead status, grouped by source.
- **Servers** — create, configure, start, stop, and refresh server instances. Edit source assignments, user lists, and stream settings.
- **Sources** — add and manage upstream providers. For Plex, browse and select individual libraries; for Enigma2, browse and select bouquets.
- **Logs** — view recent activity and locate log files on disk.

### Key capabilities summary

| Feature | Details |
|---|---|
| Source types | M3U, M3U Collection, Xtream Codes, Plex, Enigma2, YouTube |
| Multiple server instances | Each on its own port with independent content and user lists |
| M3U playlist endpoint | `/get.php` — compatible with VLC, Kodi, Tivimate, and others |
| Xtream Codes API | Full `player_api.php` / `panel_api.php` — live, VOD, and series |
| TV series support | Seasons, episodes, and per-episode thumbnails via Plex or Xtream Codes |
| XMLTV EPG | `/xmltv.php` and `/epg.xml` endpoints |
| Link scanning | Automatic working/dead status check per channel after each refresh |
| Image proxy | Logos and cover art cached locally, served from Hub |
| Stream proxy | Optional byte-relay through Hub; default is upstream redirect |
| Per-server user auth | Username, password, and max connection limit per user |
| Scheduled refresh | Configurable interval per source; no manual intervention needed |
| Windows Service | Runs in the background; survives reboots without login |


UserGuide_IptvHub.txt

QuickStartGuide.txt

  • Version 1.2.0.4

    ## What's New

    ### Operations Workspace and Navigation (Phase 1)

    Operations workflows are now easier to discover and manage from a unified workspace.

    - Added a dedicated Operations area in the app navigation.
    - Improved operations discoverability with explicit workspace routing and layout integration.
    - Expanded operational UI surfaces to support incident and automation-focused workflows.

    ### Security Workspace and Role-Aware Access (Phase 2)

    Access control is now enforced through richer auth payloads and permission-aware UI behavior.

    - Expanded authentication state payloads with role and permission metadata.
    - Added permission-based guards for routes and protected UI actions.
    - Updated Security workspace behavior to align with role-based workflows.
    - Improved notification and operator context handling for restricted actions.

    ### Channel Automation Policy Engine (Phase 3)

    Operators can now run and monitor channel policy automation with explainable decisions.

    - Added a settings-driven channel automation policy service for auto-inhibit and auto-recover decisions.
    - Added a hosted background worker for periodic policy evaluation.
    - Added operations API endpoints for automation snapshot retrieval and manual run-now execution.
    - Added automation decision telemetry and incident timeline integration for explainability.
    - Added Operations dashboard controls for policy thresholds, cadence, candidates, and recent automation incidents.

    ### Custom Playlist Reliability Hardening

    Custom playlist add flows are now more resilient under repeated or concurrent actions.

    - Added duplicate-safe handling for add-to-playlist operations.
    - Hardened the backend add path with per-playlist locking to reduce race conditions.
    - Added a defensive de-duplication pass for managed playlist entries.
    - Preserved the existing naming model by avoiding forced override-name writes during add.

    ### Playlist Modal Error Handling and Cache Consistency

    Playlist add workflows now provide clearer recovery behavior and keep list/detail views in sync.

    - Added explicit error messaging and retry support in the single-channel add-to-playlist modal.
    - Improved bulk add resiliency so multi-channel add runs continue processing after individual failures.
    - Added progress and completion summaries for bulk add operations.
    - Added retry support for failed bulk add items.
    - Invalidated both playlist-list and playlist-detail query caches after updates.

    ### Playlist Manager Column Alignment

    Expanded playlist rows and headers now use a shared column layout.

    - Unified header and row grid definitions to prevent drift.
    - Added the Stream URL header to match the displayed row data.
    - Improved accessibility on playlist expansion controls.

    ### Channels Page VLC Playback Updates

    Channel playback launch behavior now better matches the working VLC flow used elsewhere in the product.

    - Added `vlc://` launch support from the Channels page play action.
    - Prefer direct source URLs when they are usable absolute HTTP(S) addresses.
    - Fall back to the managed stream proxy URL when the stored source URL is not directly launchable.
    - Reduced silent failure cases when launching VLC from channel rows.

    ### Channels Page Bulk Test Action

    Operators can now test multiple selected channels directly from the Channels page.

    - Added a `Test selected` action alongside the existing selected-row actions.
    - Reused the existing per-channel test workflow for bulk runs.
    - Added bounded-concurrency execution to avoid overloading the page with simultaneous requests.

    - Added bulk test progress and summary feedback while preserving per-row test badges.

    ### Channel Test Request Guardrails

    Channel testing behavior now fails more predictably when requests stall.

    - Added a client-side timeout for channel test requests.
    - Prevented indefinite spinner behavior on stuck test calls.



    UserGuide_IptvHub.txt

  • Version 1.2.0.3

    This is a bug fix. found a critical bug after I released last version. This fixes it. Authentication was too strict.


    :head banger:

  • Version 1.2.0.2

    ## What's New

    I mainly focused on bug fixes and work flow improvements for this version.

    ### M3U Validator (New)

    A dedicated M3U Validator workflow is available for pre-deployment stream quality checks.

    - Create validator sessions from uploaded playlist files or remote playlist URLs.
    - Run stream tests with optional screenshot capture and header validation.
    - Poll live progress and review per-stream status, latency, HTTP status, and error details.
    - Compare two completed runs to identify changed streams.
    - Export a filtered M3U containing only working streams.
    - Cancel an in-progress run from the UI when needed.

    ### M3U Editor - Batch and Test Workflow Performance

    Batch edit and stream test flows no longer trigger repeated playlist invalidation/refetch cycles per updated row.

    - Added a silent per-row update path used by batch and test loops.
    - Deferred invalidation to a single refresh after batch completion.
    - Reduced UI churn during larger selected-row operations.

    ### M3U Editor - Single-Row Clear Semantics

    Single-row edit now supports explicit field clearing for nullable values.

    - Clearing fields like logo URL, geo-lock, TVG ID, or source stream URL now persists as cleared values.
    - Batch edit behavior is unchanged: blank fields still mean “no change”.
    - Updated editor helper text to make this behavior explicit.

    ### M3U Editor - Safe Reorder Behavior While Filtered

    Reordering is now blocked while an entry filter is active to prevent non-obvious global-order changes.

    - Drag reorder handler ignores reorder operations during filtered view.
    - Drag handles are visually disabled while filtered.
    - Added explicit UI messaging instructing operators to clear filters before reordering.



    UserGuide_IptvHub.txt

  • Version 1.2.0.1

    # IPTV Hub — Release Notes v1.2.0.1

    **Release date:** 2026-06-07

    ---

    A Factory Reset can help if app has been running a while.


    Improved SD EPG Feed handling, to make less likely you will hit the max download per day.

    Cleaned up VOD/Shows Manager


    ## What's New

    ### Local Folder — Root-Level Episode Detection

    The Local Folder scanner now detects TV episode files that sit directly in the library root (not yet inside a show folder) and groups them into `TvSeries` entries automatically.

    - Files whose names contain a `SxxExx` or `Season N Episode M` pattern are identified as episodes. The show name is extracted from the filename prefix before the pattern (handles both dot-separated filenames such as `Show.Name.S01E01.mkv` and space-separated ones such as `Show Name S01E01.mkv`).
    - Episodes from the same show are grouped into a single series with correctly numbered seasons and episodes.
    - Files with no episode pattern continue to be scanned as VOD movies as before.
    - Combined with the **Organize** feature in the VOD / Shows Manager, root-level episodes can be previewed and moved into Plex-standard `ShowName/Season 01/ShowName - S01E01.mkv` folder structure in one click, after which a rescan picks them up as fully structured series.

    ### VOD / Shows Manager — Organize: Root-Level Series Support

    The **Organize Files** preview now correctly handles all three local-library layouts:

    | Layout | Example | Behaviour |
    |---|---|---|
    | Structured | `Library/ShowName/Season 01/ep.mkv` | Target path rooted at grandparent of `Season N` folder |
    | Flat show folder | `Library/ShowName/ep.mkv` | Target path rooted at parent of show folder |
    | Root-level (new) | `Library/ep.mkv` | Target path rooted at the library directory itself |

    Previously, the path-calculation logic walked a fixed number of levels up from the first episode, which produced incorrect target paths for root-level files.

    ### User Guide — Use Cases Section

    A new **Section 22 — Use Cases** has been added to the User Guide covering twelve practical scenarios:

    1. Single provider → Tivimate with EPG
    2. Combining multiple providers into one channel list
    3. Kids server with parental PIN and category filtering
    4. HDHomeRun OTA tuner with SchedulesDirect EPG
    5. Local movie and TV library with TMDB enrichment
    6. Travel / remote-access setup using stream proxy
    7. DVR series recording from the EPG timeline
    8. Plex VOD and series alongside live channels
    9. Time-shifting / catch-up buffer
    10. Multi-tenant servers per household with per-user stream limits
    11. Free-to-air channels using the built-in source browser
    12. Configuration migration to a new PC




    UserGuide_IptvHub.txt

  • Version 1.2.0.0

    # IPTV Hub — Release Notes v1.2.0.0 - Making some progress, but still a lot to go.

    **Release date:** 2026-06-07

    Issues:

    Using Custom Playlist is still a problem.

    This is a first pass at Local VOD files - not working the way I want.

    ---

    ## What's New

    ### Local Folder Source

    A new **Local Folder** source type lets you serve local media files directly from the Hub without any external IPTV provider.

    - Point a source at a folder on the server machine and all media files (`.mkv`, `.mp4`, `.avi`, `.mov`, `.m4v`, `.ts`, `.wmv`, `.flv`, `.webm`, `.mpg`, `.mpeg`) are automatically catalogued.
    - The scanner classifies top-level sub-folders as **TV series** (when they contain `Season N` sub-directories or `SxxExx`-named files) or **VOD categories** (all other sub-folders).
    - Files placed directly in the root of the folder are listed as VOD movies using the source name as their category.
    - Per-source toggles control whether VOD scanning, series scanning, or both are enabled.
    - Streams are served directly from disk with correct MIME types; no transcoding is required.
    - TMDB enrichment runs on local files the same as for any other source — posters, ratings, and metadata are fetched automatically after each scan when a TMDB API key is configured.

    ### VOD / Shows Manager

    A new **VOD / Shows Manager** page (Utilities → VOD / Shows) provides a catalogue view of all movies and TV series loaded across all sources on a server.

    - **Movies tab** — lists all VOD entries with poster thumbnail (from TMDB), title, category, release year, duration, rating, format, and source.
    - **TV Series tab** — lists all series with poster thumbnail, title, category, season/episode counts, and source.
    - **Source filter** — narrow to a single source's content.
    - **Local files only** — show only entries served from local disk.
    - **Search** — live filter across title and category.
    - **Stats bar** — shows total movie and series counts with local-file breakdowns.
    - **Rescan Files** — triggers an immediate server refresh and polls until scanning is complete, then automatically refreshes the page data.
    - Local-file entries are flagged with a drive icon for quick identification.

    ### DVR Recording Counts Toward MaxConcurrentStreams

    Recordings started by the DVR scheduling engine now acquire a concurrent-stream slot from the source's `MaxConcurrentStreams` budget, the same as live playback. This prevents a burst of scheduled recordings from exceeding the agreed cap with a provider.

    ### Multi-Image EPG Support (XMLTV)

    EPG programmes can now carry multiple artwork entries instead of a single legacy icon.

    - Ingestion merges programme images by `src` (case-insensitive) and preserves compatibility with existing `IconUrl` behavior.
    - XMLTV writers emit repeated `<icon>` entries when multiple images are available.
    - Optional `width` / `height` attributes are emitted when present in source metadata.

    This improves player compatibility with richer artwork feeds while remaining backward-compatible with older clients.

    ### EPG DB Viewer Image Enhancements

    The Utilities EPG DB Viewer now returns additive image metadata and uses it in the UI:

    - Added `images` (`src`, `width`, `height`) and `iconUrls` in API payloads.
    - Existing `iconUrl` is still preserved for compatibility.
    - Viewer can display a thumbnail strip when multiple images are present.

    ### Live M3U Metadata Hardening

    Live playlist generation was hardened for mixed-source environments:

    - Duplicate `tvg-id` values across sources are scoped to avoid player cache bleed.
    - Schedules Direct logo fallback is now limited to HDHomeRun channels.
    - Logo URLs include deterministic cache-busting tokens so players re-fetch updated logos.

    ---

    ## Reliability and Maintenance

    ### Rescan Poll Race Condition Fixed

    The VOD / Shows Manager rescan now uses a two-phase poll: first waits for `isLoading` to flip `true` (scan started), then waits for it to flip back `false` (scan complete). Previously the poll could complete before the background scan even started, causing the page to display stale data.

    ### EPG Metadata Pruning Workflow

    Improved cleanup tooling for stale EPG metadata enables safer maintenance runs and helps keep management data tidy.

    ### Runtime and Refresh Robustness

    Recent runtime verification and refresh-path hardening work was consolidated in this release to reduce stale-data behavior and improve operational consistency.



    UserGuide_IptvHub.txt


    If you want to know the inner workings

    DeveloperGuide_IptvHub.txt

  • Version 1.1.3

    **Release date:** 2026-06-02

    ---

    ## What's New - Open to suggestions for more features, still testing different use cases.

    ### XZ-Compressed EPG Feed Support

    XMLTV EPG feeds delivered as `.xz` (LZMA) compressed files are now fully supported.

    Previously only `.gz` (gzip) feeds were decompressed automatically; `.xz` URLs were rejected or returned corrupt data. This release adds transparent LZMA decompression in both the live EPG ingestion pipeline and the **Test Feed** validation endpoint.

    The most common source of `.xz` EPG data is [Rytec EPG](http://www.xmltvepg.nl/) — a widely-used European satellite and IPTV programme guide — whose feeds are exclusively LZMA-compressed.

    ### Rytec EPG Sources Added to Browse Free Sources (EPG)

    The **Browse free sources** picker on the EPG Manager page has been expanded with two new Rytec EPG groups:

    | Group | Feeds |
    |---|---|
    | **Rytec EPG · General** | IPTV/Streaming channels, News channels, Miscellaneous |
    | **Rytec EPG · Europe** | ~30 country and regional feeds including UK (FreeSat, Sky, Sports), France (TNT, Mixte, Sport), Germany, Austria, Switzerland, Netherlands, Belgium (Flemish & Wallonie), Italy (main, Sky, Sport), Portugal, Scandinavia (Sweden, Norway, Denmark, Finland), Greece, Romania, Bulgaria, and the former-Yugoslav countries |

    All Rytec URLs use `.xz` feeds and are now correctly decompressed on test and on scheduled ingestion.

    ### Extended Browse Free Sources (M3U)

    The **Browse free sources** picker on the Sources page has been significantly expanded. In addition to the existing per-country streams, three new groups are available:

    #### iptv-org · Categories
    22 genre-based playlists aggregated from iptv-org, including News (933 ch), Sports (324 ch), Entertainment (604 ch), Music (643 ch), Movies (347 ch), Series (129 ch), Kids (207 ch), Documentary (106 ch), Education (228 ch), Religious (712 ch), Business, Lifestyle, Culture, Animation, Comedy, Travel, Cooking, Legislative, Science, and Outdoor.

    #### iptv-org · Regions
    17 multi-country region playlists: Europe, Americas, North America, Latin America, Asia-Pacific, Southeast Asia, South Asia, Middle East & North Africa, Arab World, Gulf Cooperation Council, Africa, Sub-Saharan Africa, Nordics, Balkans, Oceania, Central Asia, and Worldwide.

    #### iptv-org · Languages
    34 language-filtered playlists covering all major broadcast languages with 50 or more channels, including English (2,125 ch), Spanish (1,628 ch), Russian (398 ch), Arabic (342 ch), Hindi (342 ch), French (415 ch), Portuguese (262 ch), German (277 ch), Turkish (207 ch), Persian (215 ch), Italian (270 ch), Chinese (225 ch), Indonesian (191 ch), and many more.


    UserGuide_IptvHub.txt

    StreamProxy.txt

    QuickStartGuide.txt

  • Version 1.1.2



    ## What's New

    ### Configurable EPG Cache TTL (per server)

    The XMLTV EPG response is now cached with a configurable time-to-live instead of a hard-coded interval.

    A new **EPG cache (minutes)** field is available in the server edit dialog. The value controls how long the in-memory XMLTV payload is reused before being rebuilt from the database on the next request.

    | Value | Behaviour |
    |---|---|
    | `0` | Cache disabled — every EPG request rebuilds the XML from the database |
    | `1``N` | Cache held for that many minutes (default **5**) |

    A cache hit also returns an `ETag` header so clients that support conditional HTTP (`If-None-Match`) receive a `304 Not Modified` instead of retransmitting the full XML. The `Last-Modified` header is set to the timestamp of the cached build.

    ### Channel-Scoped EPG Merge

    Previously, ingesting a new EPG feed replaced the entire programme table for the server. Any programme data from a different feed that had not been re-downloaded in the same refresh cycle was silently discarded.

    EPG programmes are now merged on a **per-channel** basis:

    - When a feed download completes, only the channels present in that batch are updated in the database.
    - Programmes for all other channels — whether sourced from embedded M3U EPG, Schedules Direct, or a separate XMLTV feed — are left untouched.
    - Within the affected channels, incoming entries are deduplicated against existing ones by `(channelId, startUtc)` before writing.
    - Stale entries older than 2 hours at the time of the merge are pruned for the updated channels only.

    This eliminates the EPG data loss that occurred when two feeds with disjoint channel sets were refreshed at different intervals.

    ### Schedules Direct Callsign Alias Elimination

    When Schedules Direct (SD) EPG programmes are ingested, they are now stored **only** under the numeric station ID (e.g. `10212`) rather than being duplicated under the channel's callsign (e.g. `KABC`). Storing programmes under both identifiers caused doubled entries in the EPG for affected channels.

    At query time, a callsign → station ID lookup is built from the SD station metadata already present in the management database. Channels whose `tvg-id` attribute is a callsign are transparently resolved to the correct station ID when the XMLTV feed is generated and when the Xtream API `get_short_epg` / `get_simple_data_table` actions are served. The correct local `tvg-id` is still emitted in the output so player EPG matching continues to work without any changes on the client side.

    ---


    UserGuide_IptvHub.txt


    TAR file for Synology is available on GitHub. https://github.com/tracker9135…eases/tag/IptvHubSynology

  • Version 1.1.1

    # IPTV Hub — Release Notes v1.1.1


    **Release date:** 2026-05-29


    ---


    ## What's New


    ### HDHomeRun Source Type


    IPTV Hub now supports HDHomeRun network tuner devices as a native source type.


    - Select **HDHomeRun** when adding or editing a source

    - Enter the device base URL (e.g. `http://192.168.1.100`)

    - Channels are fetched from the device's `/lineup.json` endpoint

    - Channel names are automatically prefixed with the guide number (e.g. `05.1 WEWS-HD`, `10.2 MeTV`) and zero-padded so they sort correctly

    - Use the **Test** button in the Sources page to verify connectivity before saving


    ### SAT>IP Source Type


    SAT>IP network tuner devices (Octopus Net, HDHomeRun ATSC3, Telestar, etc.) are now supported as a native source type.


    - Select **SAT>IP** when adding or editing a source

    - Enter the device base URL (e.g. `http://192.168.1.101`)

    - IPTV Hub attempts to auto-detect the channel list by probing well-known paths (`/channellist.m3u`, `/playlist.m3u`, `/channels.m3u`, etc.), or you can specify a custom **Channel List Path**

    - Device description is read from `/desc.xml` (UPnP) — the friendly name and SAT>IP capabilities are shown in the test result

    - RTSP stream URLs are automatically rewritten to HTTP for compatibility


    ---


    ## Bug Fixes

    A lot of bugs fixed


    If there is a interest in Synology NAS version of this app, let me know. This is the version I use. Once this app is stable, I'll post the source and install packages on GitHub



    UserGuide_IptvHub.txt

  • Version 1.1.0

    This is more a alpha version than beta, so be careful. This is mainly so users can see the direction it is taking.


    A lot of updates, and still needs a lot of testing. The EPG somewhat works, so beware. I am using with Enigma2 receiver and some M3U Playlists. Then using TiviMate to connect to IptvHub.


    The EPGImport Support is where I am doing most of my testing. It still needs work.


    SchedulesDirect support is still being tested as well.


    I have a version that runs on Synology NAS or Docker also. Trying to figure out how to release .


    UserGuide_IptvHub.txt

  • Version 1.0.2

    # IPTV Hub — Release Notes v1.0.2

    **Release date:** 2026-05-21

    ---

    ## What's New

    ### Configuration Backup and Restore

    A new **Settings** page has been added to the management UI (sidebar → Settings). It provides a one-click export/import of the entire IPTV Hub configuration:

    - **Export** — downloads a portable `iptvhub-backup-<timestamp>.json` file containing all server configurations, source definitions, and channel overrides. Use this to back up your setup before upgrades or to migrate between machines.
    - **Restore** — upload a previously exported JSON file to completely replace the current configuration. A confirmation prompt is shown before the overwrite is applied. Running servers are not automatically restarted; restart the service or click **Start** on each server to pick up the restored configuration.

    The backup/restore API is also accessible directly:

    ```
    GET http://localhost:5000/api/backup → downloads JSON archive
    POST http://localhost:5000/api/backup/restore → restores from JSON body
    ```

    ### Push Notifications (SSE toasts + webhooks)

    IPTV Hub can now alert you when something goes wrong, without you needing to check the dashboard.

    **In-browser toast notifications:**

    The management UI subscribes to a Server-Sent Events (SSE) stream at `GET /api/events`. Toast messages appear automatically in the browser when:
    - A server refresh completes or fails
    - A channel scan finishes with degraded results

    Toasts fade out after 5 seconds but can be dismissed manually.

    **Webhook notifications (per server):**

    Each server can optionally send an HTTP POST to an external URL when notable events occur. Configure in the **Servers** edit dialog:

    | Field | Description |
    |---|---|
    | **Webhook URL** | URL to receive POST notifications (must be `http://` or `https://`) |
    | **Notify on refresh failure** | Send a webhook when a scheduled provider refresh fails |
    | **Notify on scan degrade threshold** | Send a webhook when a scan pass reports this many or more dead channels (0 = disabled) |

    The webhook payload is a JSON object:

    ```json
    {
      "event": "refresh_failed" | "scan_degraded",
      "serverId": "...",
      "serverName": "...",
      "detail": "...",
      "timestamp": "2026-05-21T12:00:00Z"
    }
    ```

    ### Server-side Catchup Buffer

    When **Stream Proxy** is enabled on a server, you can now also enable a **Catchup Buffer** to support time-shift playback without any upstream provider support.

    | Setting | Description |
    |---|---|
    | **Enable Catchup Buffer** | Toggles the ring-buffer recording for all live channels on this server |
    | **Buffer duration (minutes)** | How many minutes of history to retain (default 60) |

    When active, each live channel is recorded to a local HLS ring buffer using **ffmpeg** (must be on the system `PATH`). Players can then use the standard `/timeshift/` endpoint to seek backward in time within the retained window.

    > **Requirements:** `EnableStreamProxy` must be enabled on the server. `ffmpeg` must be installed and available on `PATH`.

    > **Note:** The catchup buffer consumes significant disk space and CPU. Size accordingly — roughly 500 MB per channel per hour at typical IPTV bitrates.

    ### Channel count badges in Sources list

    Each source card on the **Sources** page now displays a badge showing the number of live channels currently loaded from that source across all running servers. The count refreshes automatically every 30 seconds.



    UserGuide_IptvHub.txt

    Synology Installation Guide Coming....

  • Major update coming later today. Finishing testing EPG updates and Proxy features. Testing looks good so far.



    Since v1.0.2, the key new features are:

    1. Deterministic fallback tvg-id generation
    • When an upstream channel has no tvg-id, IPTV Hub now auto-generates a stable synthetic ID from channel metadata, so EPG mapping still works without editing source M3U files.
    1. Per-source Stream Proxy override
    • Stream behavior can now be set per source with:
    • Inherit (use server default)
    • Force On (always proxy)
    • Force Off (always redirect)
    • This applies to live, VOD, and series paths.
    1. Stronger source-level control and refresh behavior
    • Deleting a source now unlinks it from linked servers and queues refresh.
    • If a server has no enabled linked sources, content collections are cleared to prevent stale playlists.
    1. Expanded source UX capabilities
    • Source configuration now includes stream proxy mode in the Sources UI.
    • Source cards display the selected proxy mode for quick visibility.
    1. Improved Enigma2 compatibility and handling
    • Better Enigma2 URL/service-reference handling and stream authority credential behavior for more consistent playback/import reliability.
    1. More resilient channel health scanning
    • Scan/test logic now has better HEAD-to-GET fallback behavior and TCP reachability fallback.
    • Unknown scan outcomes are persisted distinctly (not forced to dead/alive), reducing false negatives.
    1. Stream failover reliability improvements
    • In proxy mode, if upstream proxying fails for a candidate stream, the system can fall back to redirect instead of hard-failing.


    Also testing a Docker version that can run on Synology NAS(AMD)