mrkeyoor.com_
Fri 16 Oct 18:51 UTC
Self-Hostedevaluationupdated 16 Oct 2026

LibreTV review

LibreTV is a Chinese-first web app that searches video catalogs you supply and plays their streams in your browser. Its README and linked documentation are Chinese, with no English README in the repository. It brings compatible on-demand sources and live playlists into one player without supplying a video library of its own.

Verdict

LibreTV passed all 311 tests in our sandbox, but npm audit reported 19 vulnerabilities, including 2 critical, so I would assess those findings before public deployment. Consider it for a private browser player if you already have compatible sources and can work with Chinese documentation. Choose another project if shared watch history or a supplied media library is essential.

We ran it

Lab card: what happened when we ran LibreTVScreenshot of LibreTV (libretv.is-an.org)
Install✓ · 25s669 packages · 680 MB
Build✓ · 30s
Tests✓ · 6s311 passed · 0 failed of 311 (vitest)
Known vulns192 critical · 11 high · 6 moderate · 0 low (npm audit)
Repo146 files~20,691 lines of source · 1.3 MB · 2 CI workflows · Dockerfile

Answers from our run

Does LibreTV build from source?

Dependencies installed in 25 seconds (669 packages), and the build succeeded in 30 seconds. We cloned commit a24ad33 into a clean Debian container with 3 CPUs and no project-specific setup.

Do LibreTV's tests pass?

Yes: 311 of 311 passed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Does LibreTV have known vulnerabilities in its dependencies?

npm audit flagged 19 known advisories in the dependency tree, including 2 critical at the time of our run.

Who should not use LibreTV?

Households requiring automatic watch-history synchronization across devices: the README stores progress in each browser's IndexedDB.

What are the alternatives to LibreTV?

LunaTV, Jellyfin. LibreTV passed all 311 tests in our sandbox, but npm audit reported 19 vulnerabilities, including 2 critical, so I would assess those findings before public deployment.

Setup3/525-second install passes; HTTPS and usable sources still need setup
Docs3/5Detailed source and deployment limits, with no English README
Community4/518,202 stars, October push, and recent issue and PR activity
Maturity3/5311 tests pass; 2 critical and 11 high audit findings need assessment

Who it’s for

Self-hosters who already have compatible Apple CMS sources or M3U playlists and want a browser player.
Developers comfortable operating a password-protected Next.js service behind HTTPS.
Viewers happy to keep watch history on the current device and use Chinese documentation.

Who it’s NOT for

Households requiring automatic watch-history synchronization across devices: the README stores progress in each browser's IndexedDB.
TVBOX users who depend on Spider sources: the documented importer skips entries requiring TVBOX's execution engine, plus XML interfaces and multi-repository configurations.
Operators expecting remote HTTP access to work like localhost: the README's secure-cookie warning and issue 922 describe successful passwords followed by failed browser sessions without HTTPS.
English-only maintainers who need an English operating guide: the repository has one Chinese README and links to Chinese documentation.
Anyone shopping for an included film or live-channel catalog: the README requires you to supply external sources.

Setup reality

Our sandbox installed commit a24ad33 in 25 seconds: 669 packages and 680 MB on disk. The build passed in 30 seconds, and Vitest passed all 311 tests in 6 seconds with 0 failures. Npm audit reported 19 known vulnerabilities, including 2 critical, 11 high, and 6 moderate.

Set PASSWORD and supply compatible video catalog or live-playlist addresses. Docker Compose is the recommended route; the manual server uses port 8080. A normal remote deployment needs HTTPS, and multiple instances should share the documented PROXY_SECRET.

Production secure cookies can prevent login through a plain HTTP server address. History stays in browser IndexedDB, TVBOX Spider imports are unsupported, and private-network IPTV requires an explicit LIVE_ALLOW_PRIVATE setting. The supplied audit summary does not establish which findings are reachable at runtime.

LibreTV needs your own catalog and playlist addresses

Add a working video source before expecting LibreTV to find anything worth watching. This Chinese-first project searches external catalogs and plays their streams in your browser. Its README and linked documentation are Chinese, and the repository has no English README. The current application uses Next.js with TypeScript, combining same-title results so you can compare providers without opening separate websites. That is useful if you already maintain sources you trust.

The 1.3 MB checkout makes this look like a small addition to a home server, though our installed environment occupied 680 MB. What you get for that space is a web application with source management and a player, rather than a supplied film library. The README documents Apple CMS catalog interfaces and M3U live playlists. If your starting point is a folder of films you own, Jellyfin is a closer match.

What happened when we ran it

Our run installed LibreTV commit a24ad33 in 25 seconds, adding 669 packages and using 680 MB on disk. The build succeeded in 30 seconds. We ran it on October 16, 2026, in a fresh Debian sandbox using lab-node:22, with 3 CPUs and 8 GB of RAM. The container had no secrets or elevated privileges, so the successful build did not depend on production credentials.

Vitest passed all 311 tests in 6 seconds, with 0 failures. The checkout contained 146 files and about 20,691 source lines. Our scan found 2 CI workflow files, a Dockerfile, and a Compose file, but no tests directory. The passing suite is the useful result here: a directory-name check alone would miss it. These measurements establish that this revision installed, built, and completed its available suite in our environment.

Npm audit reported 19 known vulnerabilities: 2 critical, 11 high, and 6 moderate. The supplied results do not identify the affected packages or show whether vulnerable code is reachable through the running application. Treat that as unresolved work before public exposure. The sandbox results also contain no playback latency, stream reliability, or video-quality measurements, so a green suite cannot tell you whether your chosen provider will work tonight.

HTTPS is part of getting login to work

The README's manual route sets PASSWORD for the build and server, which listens on port 8080. Docker Compose is the recommended deployment path. A production host also needs HTTPS: the deployment warning says browsers can discard the secure session cookie when you visit a plain HTTP server address. Issue 922 describes that exact correct-password-but-no-login experience. A successful password response can therefore leave a newcomer stuck outside the app.

The 30-second build is only the measured preparation step. You still need a domain and TLS configuration for a normal remote deployment, plus usable source addresses. PROXY_SECRET is documented for session and proxy signing, with an explicit recommendation for multiple instances. None of that calls for a paid streaming API credential in the basic setup. It does call for someone comfortable checking proxy headers and cookies when login behaves differently behind a reverse proxy.

TVBOX Spider sources are skipped during import

TVBOX import accepts supported catalog interfaces and live playlists, but skips Spider entries that require TVBOX's own execution engine. XML interfaces and multi-repository configurations also fall outside the documented import path. That makes an existing TVBOX subscription a compatibility question, rather than a promise that every entry will appear. Check the import report against the sources you need before choosing LibreTV as your household's player.

All 311 tests passing leaves that compatibility question open. The README describes automatic source health tracking and temporary disabling after repeated failures, which helps manage unreliable providers without repairing them. It also warns that edits to subscribed sources can be overwritten on synchronization. If you need persistent local exceptions, change the hosted source list or manage the source directly. Otherwise, a routine refresh can undo the adjustment that made a particular stream usable.

Watch history stays on the current device

Playback progress and history live in the browser's IndexedDB, according to the usage instructions. Configuration import and export provide a migration path, but the documented local storage should not be read as account-based synchronization between a phone and television. LibreTV suits someone happy to resume within one browser. For shared history across devices, LunaTV documents server storage through Kvrocks, Redis, or Upstash and is worth comparing directly.

The player supports automatic episode continuation and changing providers while retaining the episode position. Live television gets a separate browsing page, optional XMLTV programme information, and a streaming proxy. Private-network IPTV addresses are blocked by default under the documented SSRF protections, with LIVE_ALLOW_PRIVATE available for self-hosted internal sources. That is a specific configuration tradeoff for home networks. Our 19 audit findings remain a separate concern from the presence of those application controls.

October issue activity argues against calling it abandoned

GitHub reported 18,202 stars and 5 open issues and PRs on October 16, 2026. The last push was October 2, while issue 931 received an October 15 question about Cloudflare deployment. An open contribution also proposed source-quality detection. These are signs of continuing attention, though a proposed feature is not a shipped feature. The latest-release endpoint returned no published release, so the package version and documented image tags are more useful deployment references than a release announcement.

I would consider LibreTV for a private browser player when its source formats already match your collection and Chinese documentation is manageable. Its successful build and 311 passing tests give a developer a credible starting point. Public deployment deserves another decision after the critical and high audit findings have been assessed. If automatic history across devices is essential, compare LunaTV first; if you're serving media files you control, start with Jellyfin.

Alternatives

ProjectWhat it isPick it when
LunaTV gh↗A video aggregation player with server storage and watch-progress synchronization across devices.pick this instead when shared history through Kvrocks, Redis, or Upstash matters more than keeping data in one browser.
Jellyfin gh↗A media server that manages your own media and streams it to client apps.pick this instead when you want to serve a library of files you control rather than search external video catalogs.

What people are saying

  1. [github-trending] LibreSpark/LibreTV

Sources

  1. LibreTV README at measured commit a24ad33
  2. LibreTV repository and current activity
  3. Issue 922: HTTPS and login cookies
  4. Issue 931: Cloudflare deployment question
  5. LunaTV README
  6. Jellyfin README

More self-hosted reviews

Qwen3.8-Flash-Next-Single-DGX-Spark-TensorFold · invisible_dots · unifi-toolkit · ps5-payload-manager · DiPlay · AIHOT · the whole board →