Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`)
Expand Down
54 changes: 28 additions & 26 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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
```
Expand All @@ -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
Expand All @@ -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.
---
Expand Down
45 changes: 30 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -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://<server-ip>: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.

---

Expand Down Expand Up @@ -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 |
Expand All @@ -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**
Expand All @@ -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)

---

Expand Down Expand Up @@ -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

---

Expand Down
12 changes: 9 additions & 3 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

---

Expand All @@ -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`).
Expand Down
4 changes: 2 additions & 2 deletions app.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion install.sh
Original file line number Diff line number Diff line change
@@ -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")
Expand Down
2 changes: 1 addition & 1 deletion install_windows.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
$VERSION = "3.1.0"
$VERSION = "3.2.0"
<#
RetroIPTVGuide Windows Installer
Clean version with only prerequisite checks and service setup
Expand Down
2 changes: 1 addition & 1 deletion retroiptv_rpi.sh
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions uninstall.sh
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion uninstall_windows.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
$VERSION = "3.1.0"
$VERSION = "3.2.0"
# RetroIPTVGuide Windows Uninstaller
# ==================================

Expand Down