diff --git a/CHANGELOG.md b/CHANGELOG.md index c8a64c4..30a0bda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,27 @@ This project follows [Semantic Versioning](https://semver.org/). - Planned: log filtering and pagination. --- + +## [v3.2.0] - 2025-10-11 +### Added +- **Containerization & TrueNAS Deployment Support** + - Added official Dockerfile and `docker-compose.yml` for cross‑platform container deployments. + - Added **TrueNAS SCALE App chart** with persistent volume mapping (`/config`, `/logs`, `/data`). + - Added GitHub Actions workflow for automatic GHCR image builds. + - Docker image published at: + `ghcr.io/thehack904/retroiptvguide:latest` +- Integrated automatic build‑and‑push pipeline using GitHub Actions and GHCR_PAT authentication. +- Added healthcheck and restart policies in Docker configuration. + +### Changed +- Documentation updated for container installation (Docker/TrueNAS) as the new primary method. +- Legacy Python and system installers moved to “manual install” section. + +### Fixed +- Corrected GHCR tag formatting for TrueNAS (eliminated `:latest:latest` errors). +- Fixed workflow permissions with explicit `packages: write` and PAT authentication. +--- + ## v3.1.0 - 2025-10-09 ### Added - New **RetroIPTVGuide Raspberry Pi headless installer** (`retroiptv_rpi.sh`) diff --git a/INSTALL.md b/INSTALL.md index 354c971..a9fa63a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,11 +1,11 @@ # Installation Guide -**Version:** v3.1.0 -**Last Updated:** 2025-10-09 +**Version:** v3.2.0 +**Last Updated:** 2025-10-11 ## Requirements - Python 3.10+ (Linux) / Python 3.12+ (Windows) -- **Linux (Debian/Ubuntu with systemd)**, **Windows 10/11**, or **Raspberry Pi 3 / 4 / 5 (Headless OS)** +- **Linux (Debian/Ubuntu with systemd)**, **Windows 10/11**, or **Raspberry Pi 3 / 4 / 5 (Headless OS) / Docker** - Administrative privileges: - **Linux/WSL/Raspberry Pi:** run install/uninstall with `sudo` - **Windows:** run from an Administrator **PowerShell** session @@ -18,19 +18,10 @@ Clone the repository and run the installer. Choose the command based on your OS. ### Linux / WSL -#### Option 1: One-liner (quick setup) +#### One-liner ```bash git clone https://github.com/thehack904/RetroIPTVGuide.git && cd RetroIPTVGuide && sudo chmod +x install.sh && sudo ./install.sh ``` -or - -#### Option 2: Multi-line (step-by-step) -```bash -git clone https://github.com/thehack904/RetroIPTVGuide.git -cd RetroIPTVGuide -sudo chmod +x install.sh -sudo ./install.sh -``` **What the installer does (Linux/WSL):** - Detects Linux/WSL environment @@ -96,6 +87,22 @@ curl -sSL https://raw.githubusercontent.com/thehack904/RetroIPTVGuide/refs/heads --- +## 🚀 Containerized Deployment + +RetroIPTVGuide v3.2.0 introduces **official Docker and TrueNAS SCALE App support**, allowing one‑click installation and persistent storage. + +### 🧱 Docker (Generic Linux / macOS / Windows) + +#### Using Docker Compose + +```bash +git clone https://github.com/thehack904/RetroIPTVGuide.git +cd RetroIPTVGuide +docker compose up -d +``` + +--- + ## Access Once installed, open your browser: @@ -112,8 +119,6 @@ Default login: **admin / strongpassword123** ## 🔄 Updating ### Linux / WSL - -#### Quick update (one-liner) ```bash sudo -u iptv bash -H -c "cd /home/iptv/iptv-server && git fetch --all && git reset --hard origin/main" && sudo systemctl daemon-reload && sudo systemctl restart iptv-server.service ``` @@ -127,20 +132,12 @@ sudo -u iptv bash -H -c "cd /home/iptv/iptv-server && git fetch --all && git res ```powershell git fetch --all ; git reset --hard origin/main ; Restart-Service RetroIPTVGuide ``` -or -#### Step-by-step -```powershell -git fetch --all -git reset --hard origin/main -Restart-Service RetroIPTVGuide +#### Docker +```bash +docker compose pull && docker compose up -d ``` -This will: -- Fetch the latest code from GitHub -- Reset your repo to the latest `windows` branch -- Restart the RetroIPTVGuide service (installed via NSSM) - --- ## Uninstallation @@ -161,6 +158,11 @@ From an Administrator PowerShell prompt: .\uninstall_windows.ps1 ``` +#### Uninstalling +```bash +docker compose down -v +``` + **Each uninstaller stops its service, removes environment files, and cleans logs.** ⚠️ To completely remove the project, manually delete the project folder after uninstalling. --- diff --git a/README.md b/README.md index 64a028e..48ee4e3 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # RetroIPTVGuide -![Version](https://img.shields.io/badge/version-v3.1.0-blue) +![Version](https://img.shields.io/badge/version-v3.2.0-blue) RetroIPTVGuide is an IPTV Web Interface inspired by 90s/2000s cable TV guides. It is designed to work with [ErsatzTV](https://ersatztv.org/) [(GitRepo)](https://github.com/ErsatzTV/ErsatzTV/tree/main) but supports any `.m3u`, `.m3u8`, and `.xml` IPTV source. +Now includes **Docker and TrueNAS SCALE deployment support** for easy installation and persistence. ⚠️ **Note:** This is still a BETA release. It is not recommended for direct Internet/public-facing deployments. @@ -14,17 +15,30 @@ It is designed to work with [ErsatzTV](https://ersatztv.org/) [(GitRepo)](https: --- -## ✨ Features (v3.1.0) +## 🚀 Containerized Deployment (v3.2.0) -### 🆕 Raspberry Pi Headless Support -- Full **Raspberry Pi installer (`retroiptv_rpi.sh`)** added. -- Detects Pi 3 / 4 / 5 hardware and automatically sets GPU memory (128MB / 256MB). -- Installs to `/home/iptv/iptv-server` using system user `iptv`. -- Configures Python virtual environment and creates a systemd service `retroiptvguide`. -- Logs everything to `/var/log/retroiptvguide/install-TIMESTAMP.log`. -- Supports `--yes` (skip confirmations) and `--agree` (auto-accept license). -- Post-install check verifies Flask service on port 5000. -- Optional reboot prompt applies GPU memory changes. +### 🐳 Docker +```bash +docker pull ghcr.io/thehack904/retroiptvguide:latest +docker run -d -p 5000:5000 ghcr.io/thehack904/retroiptvguide:latest +``` +Access the web interface at: +`http://:5000` + +### 🧩 TrueNAS SCALE App +- Upload the provided `retroiptvguide-3.2.0.zip` chart. +- Repository: `ghcr.io/thehack904/retroiptvguide` +- Tag: `latest` +- Exposes port `5000`. + +--- + +## ✨ Features (v3.2.0) + +- Official **Docker / TrueNAS** support with persistent volumes. +- Automatic build/publish to **GHCR** via GitHub Actions. +- Same RetroIPTVGuide web interface and EPG features from v3.1.x. +- Backward compatible with Linux, Windows, and Raspberry Pi installs. --- @@ -87,6 +101,7 @@ It is designed to work with [ErsatzTV](https://ersatztv.org/) [(GitRepo)](https: | Version | Date | Key Features | |----------|------|---------------| +| **v3.2.0** | 2025-10-11 | Containerized Deployment / TrueNAS Scale App installer | | **v3.1.0** | 2025-10-09 | Raspberry Pi installer, verified GPU setup, improved HTTP service check | | **v3.0.1** | 2025-10-07 | EPG fallback system, tuner refresh fix, login redesign | | **v3.0.0** | 2025-10-03 | Windows installer/uninstaller, cross-platform setup, unified UI | @@ -108,7 +123,7 @@ RetroIPTVGuide is compatible with all modern browsers: ## 💻 Tested Devices & Operating Systems - **Ubuntu 24.04 (desktop/server)** -- **TrueNAS SCALE (Docker/Podman)** +- **TrueNAS SCALE (Docker)** - **Windows 10 / 11** - **Raspberry Pi 3B+ / 4 / 5 (Raspberry Pi OS Bookworm)** - **macOS Monterey / Ventura** @@ -121,7 +136,7 @@ RetroIPTVGuide is compatible with all modern browsers: - Debian-based Linux (Ubuntu, Pop!\_OS, Mint) - Windows 10/11 (via PowerShell + NSSM) - Raspberry Pi 3 / 4 / 5 (Headless OS, `retroiptv_rpi.sh`) -- macOS (manual install or future installer support) +- Docker (Generic Linux / macOS / Windows) --- @@ -172,8 +187,8 @@ See [ROADMAP.md](ROADMAP.md) for full details. - **Repo:** [RetroIPTVGuide](https://github.com/thehack904/RetroIPTVGuide) - **Maintainer:** J.H. - **License:** [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](https://creativecommons.org/licenses/by-nc-sa/4.0/) -- **Version:** v3.1.0 -- **Release Date:** 2025-10-09 +- **Version:** v3.2.0 +- **Release Date:** 2025-10-11 --- diff --git a/ROADMAP.md b/ROADMAP.md index 383886a..30bdda8 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -88,9 +88,9 @@ These are **not yet implemented**, but provide a development path for future rel --- ## 📅 Priority Suggestions -- Short term: finalize Pi installer documentation and verify GPU/swap checks (v3.1.x). -- Medium term: `.m3u8` tuner support and DB-based logs (v3.2.x). -- Long term: full HTTPS and container deployment. +- Short term: finalize Docker image testing across TrueNAS and generic Linux. +- Medium term: implement `.m3u8` tuner and DB log storage (v3.3.x). +- Long term: HTTPS support and mobile UI redesign. --- @@ -106,6 +106,12 @@ These are **not yet implemented**, but provide a development path for future rel - Ensure logs and services are properly separated between modes. --- +## ✅ Completed (v3.2.0) +- [x] **Containerization & TrueNAS Deployment Support** + - Dockerfile and docker‑compose finalized for GHCR. + - TrueNAS SCALE App chart added for persistent deployment. + - CI/CD publishing pipeline via GitHub Actions and GHCR_PAT. + - Updated documentation (INSTALL, README, CHANGELOG). ## ✅ Completed (v3.1.0) - [x] **Raspberry Pi headless installer completed** (`retroiptv_rpi.sh`). diff --git a/app.py b/app.py index 48e36ea..be63923 100644 --- a/app.py +++ b/app.py @@ -1,5 +1,5 @@ -APP_VERSION = "v3.1.0" -APP_RELEASE_DATE = "2025-09-26" +APP_VERSION = "v3.2.0" +APP_RELEASE_DATE = "2025-10-11" from flask import Flask, render_template, request, redirect, url_for, flash from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user diff --git a/install.sh b/install.sh index 0197951..178ea1f 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -VERSION="3.1.0" # RetroIPTVGuide installer version +VERSION="3.2.0" # RetroIPTVGuide installer version # RetroIPTVGuide Debian/Ubuntu Installer # License: CC BY-NC-SA 4.0 TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") diff --git a/install_windows.ps1 b/install_windows.ps1 index 5e1d837..e1941b4 100644 --- a/install_windows.ps1 +++ b/install_windows.ps1 @@ -1,4 +1,4 @@ -$VERSION = "3.1.0" +$VERSION = "3.2.0" <# RetroIPTVGuide Windows Installer Clean version with only prerequisite checks and service setup diff --git a/retroiptv_rpi.sh b/retroiptv_rpi.sh index 8419932..16c8150 100644 --- a/retroiptv_rpi.sh +++ b/retroiptv_rpi.sh @@ -1,5 +1,5 @@ #!/bin/bash -VERSION="3.1.0" # RetroIPTVGuide Raspberry Pi installer version +VERSION="3.2.0" # RetroIPTVGuide Raspberry Pi installer version # RetroIPTVGuide Raspberry Pi Installer (Headless, Pi3/4/5) # Installs to /home/iptv/iptv-server for consistency with Debian/Windows # Logs to /var/log/retroiptvguide/install-YYYYMMDD-HHMMSS.log diff --git a/uninstall.sh b/uninstall.sh index 4532900..c89c69e 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -1,4 +1,4 @@ -VERSION="3.1.0" +VERSION="3.2.0" #!/usr/bin/env bash # RetroIPTVGuide uninstall script # Run with sudo on Linux; run from Administrator shell on Windows @@ -33,7 +33,7 @@ if [[ "$ENVIRONMENT" == "LINUX" || "$ENVIRONMENT" == "WSL" ]]; then exit 1 fi elif [[ "$ENVIRONMENT" == "GITBASH" ]]; then - # Git Bash doesn’t expose EUID reliably, just warn the user + # Git Bash doesn’t expose EUID reliably, just warn the user echo "NOTE: On Windows, ensure Git Bash is running with Administrator privileges." fi diff --git a/uninstall_windows.ps1 b/uninstall_windows.ps1 index 9b97334..8971eb7 100644 --- a/uninstall_windows.ps1 +++ b/uninstall_windows.ps1 @@ -1,4 +1,4 @@ -$VERSION = "3.1.0" +$VERSION = "3.2.0" # RetroIPTVGuide Windows Uninstaller # ==================================