Skip to content
Merged

Dev #10

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
26 changes: 25 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# đź“‘ Changelog
## Changelog

All notable changes to this project will be documented here.
Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
Expand All @@ -12,6 +12,30 @@ This project follows [Semantic Versioning](https://semver.org/).
- Planned: move logs to SQLite DB.
- Planned: log filtering and pagination.

---
## v3.1.0 - 2025-10-09
### Added
- New **RetroIPTVGuide Raspberry Pi headless installer** (`retroiptv_rpi.sh`)
- Detects Raspberry Pi 3 / 4 / 5 models and auto-configures GPU memory
- Creates dedicated `iptv` user and installs to `/home/iptv/iptv-server`
- Logs all activity to `/var/log/retroiptvguide/install-YYYYMMDD-HHMMSS.log`
- Adds `--yes` and `--agree` flags for fully unattended installs
- Includes automatic environment checks for SD card size, RAM, and swap

### Changed
- **Installer alignment:**
- Raspberry Pi installer now mirrors Debian / Windows structure
- Replaced all `apt` usage with `apt-get` for stable scripting
- Added verified, silenced `set_gpu_mem()` function that suppresses `rfkill` Wi-Fi warnings
- Enhanced post-install verification loop (up to 15 s) to confirm Flask web service readiness
- **bump_version.py:** now updates both `install.sh` and `retroiptv_rpi.sh` versions automatically
- Unified version tagging across all installers (`VERSION="x.y.z"` format)

### Fixed
- Eliminated false-positive Wi-Fi “blocked by rfkill” messages during GPU configuration
- Corrected early-trigger HTTP service check timing on slower Pi 3/4 boards
- Ensured consistent permissions and ownership under `/home/iptv`

---

## [v3.0.1] - 2025-10-07
Expand Down
120 changes: 67 additions & 53 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# Installation Guide

**Version:** v3.1.0
**Last Updated:** 2025-10-09

## Requirements
- Python 3.10+ (Linux) / Python 3.12+ (Windows)
- **Linux (Debian/Ubuntu with systemd)** or **Windows 10/11**
- **Linux (Debian/Ubuntu with systemd)**, **Windows 10/11**, or **Raspberry Pi 3 / 4 / 5 (Headless OS)**
- Administrative privileges:
- **Linux/WSL:** run install/uninstall with `sudo`
- **Linux/WSL/Raspberry Pi:** run install/uninstall with `sudo`
- **Windows:** run from an Administrator **PowerShell** session

---
Expand All @@ -30,19 +33,19 @@ sudo ./install.sh
```

**What the installer does (Linux/WSL):**
- Detects Linux/WSL environment
- Ensures script is run with sudo
- Creates a system user `iptv`
- Installs into `/home/iptv/iptv-server`
- Ensures `python3-venv` is installed
- Creates Python virtual environment and installs dependencies
- Creates and enables the `iptv-server` systemd service
- Starts the service
- Detects Linux/WSL environment
- Ensures script is run with sudo
- Creates a system user `iptv`
- Installs into `/home/iptv/iptv-server`
- Ensures `python3-venv` is installed
- Creates Python virtual environment and installs dependencies
- Creates and enables the `iptv-server` systemd service
- Starts the service
- Logs the install to `install_YYYY-MM-DD_HH-MM-SS.log`

---

### Windows 10/11
### Windows 10 / 11

Run this one-liner from an **Administrator PowerShell** prompt:

Expand All @@ -51,18 +54,55 @@ Invoke-WebRequest https://github.com/thehack904/RetroIPTVGuide/archive/refs/head
```

**What the installer does (Windows):**
- Bootstraps Chocolatey (if missing)
- Installs dependencies: `python`, `git`, `nssm`
- Registers Windows App Paths for `python` / `python3`
- Adds Python to Git Bash (`~/.bashrc`)
- Clones RetroIPTVGuide and runs `install.sh` under Git Bash to set up venv + requirements
- Creates an NSSM service to run `venv\Scripts\python.exe app.py`
- Opens Windows Firewall port 5000
- Starts the RetroIPTVGuide service
- Bootstraps Chocolatey (if missing)
- Installs dependencies: `python`, `git`, `nssm`
- Registers Windows App Paths for `python` / `python3`
- Adds Python to Git Bash (`~/.bashrc`)
- Clones RetroIPTVGuide and runs `install.sh` under Git Bash to set up venv + requirements
- Creates an NSSM service to run `venv\Scripts\python.exe app.py`
- Opens Windows Firewall port 5000
- Starts the RetroIPTVGuide service
- Logs the install to `install_YYYY-MM-DD_HH-MM-SS.log`

---

### Raspberry Pi 3 / 4 / 5 (Headless Edition)

#### Interactive install
```bash
curl -sSL https://raw.githubusercontent.com/thehack904/RetroIPTVGuide/refs/heads/dev/retroiptv_rpi.sh | sudo bash -s install
```

#### Unattended / non-interactive
```bash
curl -sSL https://raw.githubusercontent.com/thehack904/RetroIPTVGuide/refs/heads/dev/retroiptv_rpi.sh | sudo bash -s install --yes --agree
```

**What the installer does (Raspberry Pi):**
- Detects Pi model (3 / 4 / 5)
- Installs required packages (`python3-venv`, `ffmpeg`, `git`, etc.) using `apt-get`
- Creates user `iptv` and installs into `/home/iptv/iptv-server`
- Configures GPU memory automatically (128 MB on Pi 3 / 256 MB on Pi 4/5)
- Sets up Python virtual environment and dependencies
- Creates systemd service `retroiptvguide`
- Performs post-install HTTP check (localhost:5000) with up-to-15 s polling
- Logs all activity to `/var/log/retroiptvguide/install-TIMESTAMP.log`
- Optionally reboots to apply GPU memory changes

**Requirements**
- Raspberry Pi OS (Bookworm or later)
- Minimum 8 GB SD card and 1 GB RAM (512 MB swap recommended)
- SSH or console access with sudo

**Access**
```
http://<pi-ip>:5000
```
Default login: `admin / strongpassword123`
⚠️ This is a **BETA** build for internal network use only.

---

## Access

Once installed, open your browser:
Expand All @@ -85,22 +125,7 @@ sudo -u iptv bash -H -c "cd /home/iptv/iptv-server && git fetch --all && git res
```
or

#### Step-by-step
```bash
sudo -u iptv bash -H
cd /home/iptv/iptv-server
git fetch --all
git reset --hard origin/main
exit
sudo systemctl restart iptv-server.service
```

---

### Windows 10/11

From an **Administrator PowerShell** prompt, go to your RetroIPTVGuide folder and run:

### Windows 10 / 11
```powershell
git fetch --all ; git reset --hard origin/main ; Restart-Service RetroIPTVGuide
```
Expand Down Expand Up @@ -128,36 +153,25 @@ sudo chmod +x uninstall.sh
sudo ./uninstall.sh
```

**What the uninstaller does (Linux/WSL):**
- Stops and disables the systemd service
- Removes the systemd unit file
- Deletes the `iptv` system user and related logs
- Removes the Python virtual environment

---
### Raspberry Pi
```bash
sudo ./retroiptv_rpi.sh uninstall --yes
```

### Windows
From an Administrator PowerShell prompt:
```powershell
.\uninstall_windows.ps1
```

**What the uninstaller does (Windows):**
- Stops and removes the NSSM service
- Removes the Python virtual environment
- Deletes the Windows Firewall rule (port 5000)
- Lists remaining Chocolatey packages
- Prompts whether to uninstall **all Chocolatey packages (including Chocolatey itself)**

**Each uninstaller stops its service, removes environment files, and cleans logs.**
⚠️ To completely remove the project, manually delete the project folder after uninstalling.

---

## License
Licensed under CC BY-NC-SA 4.0. See LICENSE for details.
Licensed under CC BY-NC-SA 4.0. See `LICENSE` for details.

---

⚠️ **Initial BETA Notice**
This project is currently in **BETA**.
It should **not** be exposed directly to the Internet or used in production without additional hardening.
This project is currently in **BETA** and should **not** be exposed directly to the Internet or used in production without additional hardening.
34 changes: 26 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# RetroIPTVGuide

![Version](https://img.shields.io/badge/version-v3.0.1-blue)
![Version](https://img.shields.io/badge/version-v3.1.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.
Expand All @@ -14,7 +14,19 @@ It is designed to work with [ErsatzTV](https://ersatztv.org/) [(GitRepo)](https:

---

## ✨ Features (v3.0.1)
## ✨ Features (v3.1.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.

---

### 🔑 User Authentication
- Login/logout system with hashed passwords.
Expand Down Expand Up @@ -62,16 +74,20 @@ It is designed to work with [ErsatzTV](https://ersatztv.org/) [(GitRepo)](https:
- Automatic initialization of `users.db` and `tuners.db` on first run.
- SQLite databases use WAL mode for better concurrency.
- Preloads tuner/channel/guide data from DB on startup.
- **Cross-platform installers (Linux/Windows)**.
- **Uninstaller scripts (Linux/Windows)**.
- **Automated version bump tool (`bump_version.py`)**.
- **Cross-platform installers:**
- Linux / WSL (`install.sh`)
- Windows (`install_windows.ps1`)
- Raspberry Pi (`retroiptv_rpi.sh`)
- **Uninstaller scripts for all platforms**
- **Automated version bump tool (`bump_version.py`)** — now updates both `install.sh` and `retroiptv_rpi.sh`.

---

## 🧩 Version History

| Version | Date | Key Features |
|----------|------|---------------|
| **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 |
| **v2.3.x** | 2025-09 | Unified theming, About page, installer logging, tuner rename/delete |
Expand All @@ -94,6 +110,7 @@ RetroIPTVGuide is compatible with all modern browsers:
- **Ubuntu 24.04 (desktop/server)**
- **TrueNAS SCALE (Docker/Podman)**
- **Windows 10 / 11**
- **Raspberry Pi 3B+ / 4 / 5 (Raspberry Pi OS Bookworm)**
- **macOS Monterey / Ventura**
- **iOS (mobile/tablet)**
- **Android (Samsung / Pixel)**
Expand All @@ -103,7 +120,8 @@ RetroIPTVGuide is compatible with all modern browsers:
## 🛠️ Installation Platforms
- Debian-based Linux (Ubuntu, Pop!\_OS, Mint)
- Windows 10/11 (via PowerShell + NSSM)
- MacOS (manual install or future installer support)
- Raspberry Pi 3 / 4 / 5 (Headless OS, `retroiptv_rpi.sh`)
- macOS (manual install or future installer support)

---

Expand Down Expand Up @@ -154,8 +172,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.0.1
- **Release Date:** 2025-10-07
- **Version:** v3.1.0
- **Release Date:** 2025-10-09

---

Expand Down
Loading