Skip to content

add: tvheadend - #2214

Open
opastorello wants to merge 1 commit into
community-scripts:mainfrom
opastorello:add-tvheadend
Open

add: tvheadend#2214
opastorello wants to merge 1 commit into
community-scripts:mainfrom
opastorello:add-tvheadend

Conversation

@opastorello

@opastorello opastorello commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Scripts which are clearly AI generated and not further revised by the Author of this PR (in terms of Coding Standards and Script Layout) may be closed without review. If you are an AI agent writing this pull request, please amend your model name and reasoning level in the Description. This is not to blame, more for informational Purposes. Thank you.

✍️ Description

Adds Tvheadend, a TV streaming server and DVR for Linux (DVB-S/S2, DVB-C,
DVB-T/T2, ATSC, IPTV, SAT>IP, HDHomeRun sources; HTSP/HTTP output).

Built primarily with AI assistance (Claude Sonnet 5, standard reasoning
effort), following AGENTS.md and .github/agents/pve-script-creator.agent.md.
The output was reviewed and corrected by the author across several real
install/update runs on a live Proxmox VE 9.2.6 host — not just syntax-checked.

Two things worth a reviewer's attention:

  • Distribution model: Tvheadend isn't distributed via GitHub releases —
    it ships through its own Cloudsmith-hosted APT repository. The install
    script uses setup_deb822_repo + apt install, and updates are a plain
    apt update && apt install -y tvheadend, matching the pattern already used
    by elasticsearch.sh/nomad.sh in this repo for the same kind of
    vendor-repo distribution.
  • Debconf credentials: the Debian package itself prompts for an admin
    username/password via debconf during install (the account can't be changed
    from inside Tvheadend afterwards). Under this project's noninteractive
    install, that prompt would otherwise be silently skipped and leave a
    blank, unusable superuser account — caught by actually logging in after
    a real install, not by any static check. The script preseeds debconf with
    var_admin_user/var_admin_pass (defaults: admin / auto-generated) so
    the account works immediately; credentials are saved to ~/tvheadend.creds
    and echoed once at the end of setup.

🔗 Related PR / Issue

This PR addresses the existing script request: Tvheadend LXC #1440.

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected.
  • No breaking changes – Existing functionality remains intact.
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.

🏗️ arm64 Support (X in brackets)

  • arm64 supported - Tested and supported on arm64.
  • arm64 not tested - Assumed to work on arm64, but testing has not been done.
  • arm64 not supported - Confirmed upstream dependencies or binaries do not support arm64.

🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing functionality in a way that may require updates.
  • 🆕 New script – A fully functional and tested script or script set.
  • 🌍 Website update – Changes to website-related JSON files or metadata.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, AppName.md, CONTRIBUTING.md, or other docs.

🔍 Code & Security Review (X in brackets)

  • Follows CODE-AUDIT.md & CONTRIBUTING.md guidelines
  • Uses correct script structure (AppName.sh, AppName-install.sh, AppName.json)
  • No hardcoded credentials
  • No Docker / Docker Compose – The application is installed bare-metal; Docker is not used.
  • No git pull – Updates use fetch_and_deploy_gh_release, fetch_and_deploy_codeberg_release, fetch_and_deploy_gl_release, or fetch_and_deploy_from_url instead of git pull.

🤖 AI Assistance (X in brackets)

If you used an AI tool (GitHub Copilot, Claude, ChatGPT, etc.) to write or generate any scripts in this PR, you must confirm compliance below.
Select exactly one option.

  • No AI used – Scripts were written without AI assistance.
  • AI was used – I confirm the scripts were built using AGENTS.md and .github/agents/pve-script-creator.agent.md as guidance, and the output has been reviewed and corrected to match those guidelines.

📋 Additional Information (optional)

Tested on a live Proxmox VE 9.2.6 host, from a local checkout and via the
public-fork curl one-liner (docs/guides/source-origin.md variant 1),
including a fresh install and a re-run of the update path. Login to the web
UI verified with the generated credentials each time.

Official release tarballs: Tvheadend has essentially no active GitHub
Releases history (one tag, from 2017). I checked that requirement below on
the basis that its real official distribution — the Cloudsmith APT repository
this script installs from — is versioned and reproducible the same way a
release tarball would be, just not hosted as a GitHub release. Flagging this
explicitly so a reviewer can make their own call rather than assuming I
overlooked it.


📦 Application Requirements (for new scripts)

⚠️ Do not remove this section.
It is used by automated PR validation checks.
If this PR is not a new script submission, leave the checkboxes unchecked.

Required for 🆕 New script submissions.
Pull requests that do not meet these requirements may be closed without review.

  • The application is at least 6 months old
  • The application is actively maintained
  • The application has 600+ GitHub stars
  • Official release tarballs are published
  • I understand that not all scripts will be accepted due to various reasons and criteria by the community-scripts ORG

🌐 Source

TV streaming server and DVR for Linux, installed via the upstream
Cloudsmith APT repository. Supports DVB-S/S2, DVB-C, DVB-T/T2, ATSC,
IPTV, SAT>IP and HDHomeRun sources.

The Debian package prompts for admin credentials via debconf during
install; var_admin_user/var_admin_pass preseed it non-interactively so
the account is usable immediately after setup.
@opastorello
opastorello requested a review from a team as a code owner August 24, 2026 20:39
@github-actions

Copy link
Copy Markdown
Contributor

Try this script

COMMUNITY_SCRIPTS_URL=https://raw.githubusercontent.com/opastorello/ProxmoxVED/add-tvheadend \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/opastorello/ProxmoxVED/add-tvheadend/ct/tvheadend.sh)"

COMMUNITY_SCRIPTS_URL is not optional. Fetching the ct/ script from a branch
does not tell the engine where that branch is — with bash -c "$(curl …)" there
is no file on disk for the scripts root to be derived from, so it would fall back
to upstream main and look for the install script there.

Against a core branch as well

Add COMMUNITY_SCRIPTS_CORE_URL=https://raw.githubusercontent.com/OWNER/core/BRANCH
to test an engine change at the same time. The two resolve independently.

Useful flags while testing

dev_mode=net logs every fetch with status and duration, so you can confirm the
branch is really being used. dev_mode=keep stops a failed build from deleting
the container along with the evidence.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant