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
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,23 @@ This project follows [Semantic Versioning](https://semver.org/).

---

## v4.4.0 - 2026-02-05

### Added
- (Windows Powershell Install Script) Better validation checks in Windows Powershell install script. Added Ensure-AppFiles Function (NEW)
- Added *BETA* Unraid .xml for testing

### Changed
- (Windows Powershell Install Script) Enhanced Upgrade-PipAndInstallReqs Function, Ensure-Service Function, Do-Install Function

### Fixed
- (Windows Powershell Install Script) Fixed update code bug from v.4.3.0, Fixed Syntax Errors, Update-RetroIPTVGuide Function, Ensure-Choco Function - Broken Chocolatey Detection
- Docker - Add persistant directories for:
/app/users.db → symlink to /app/config/users.db
/app/tuners.db → symlink to /app/config/tuners.db

---

## v4.3.0 - 2025-11-14

### Added
Expand Down
4 changes: 2 additions & 2 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Installation Guide

**Version:** v4.3.0
**Last Updated:** 2025-11-14
**Version:** v4.4.0
**Last Updated:** 2026-02-05

---

Expand Down
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 📺 RetroIPTVGuide v4.3.0
# 📺 RetroIPTVGuide v4.4.0

<p align="center">
<a href="https://github.com/thehack904/RetroIPTVGuide">
<img src="https://img.shields.io/badge/version-v4.3.0-blue?style=for-the-badge" alt="Version">
<img src="https://img.shields.io/badge/version-vv4.4.0-blue?style=for-the-badge" alt="Version">
</a>
<a href="https://github.com/thehack904/RetroIPTVGuide/pkgs/container/retroiptvguide">
<img src="https://img.shields.io/badge/GHCR-ghcr.io/thehack904/retroiptvguide-green?style=for-the-badge&logo=docker" alt="GHCR">
Expand Down Expand Up @@ -62,6 +62,9 @@ docker run -d -p 5000:5000 ghcr.io/thehack904/retroiptvguide:latest
- Tag: `latest`
- Exposes port `5000`.

### 🧩 Unraid (Docker) — **BETA / Manual Install Only**
See docker/unraid/ for RetroIPTVGuide.xml / README-unraid.md for installation instructions

### 🐧 Linux
```bash
curl -sSL https://raw.githubusercontent.com/thehack904/RetroIPTVGuide/main/retroiptv_linux.sh | sudo bash -s install --agree --yes
Expand All @@ -75,8 +78,8 @@ curl -sSL https://raw.githubusercontent.com/thehack904/RetroIPTVGuide/main/retro
### 🪟 Windows (PowerShell)
```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force
Invoke-WebRequest https://raw.githubusercontent.com/thehack904/RetroIPTVGuide/main/retroiptv_windows.ps1 -OutFile retroiptv_windows.ps1
.\retroiptv_windows.ps1 install
Invoke-WebRequest https://raw.githubusercontent.com/thehack904/RetroIPTVGuide/main/retroiptv_windows.bat -OutFile retroiptv_windows.bat
.\retroiptv_windows.bat install
```

## 🌐 Access
Expand Down
7 changes: 5 additions & 2 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This document tracks **planned upgrades** and ideas for improving the IPTV Flask
These are **not yet implemented**, partially implemented, or completed in previous releases.

---
# Current Version: **v4.3.0 (2025-11-14)**
# Current Version: **v4.4.0 (2026-02-05)**

## 🔮 Feature Upgrades

Expand Down Expand Up @@ -117,4 +117,7 @@ These are **not yet implemented**, partially implemented, or completed in previo
- [ ] Casting Support (Chromecast)
- [ ] Resize Pop Out Video
- [ ] Resize video on page
- [ ] Auto load Channel from Guide / Hidden Channel / Sizzle Reels
- [ ] Auto load Channel from Guide / Hidden Channel / Sizzle Reels
- [ ] Adjustable scrolling speed of the Guide
- [ ] Output IPTV stream from built guide for re-broadcast as a channel
- [x] Unraid Template - in *BETA*
4 changes: 2 additions & 2 deletions app.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# app.py — merged version (features from both sources)
APP_VERSION = "v4.3.0"
APP_RELEASE_DATE = "2025-11-14"
APP_VERSION = "v4.4.0"
APP_RELEASE_DATE = "2026-02-05"

from flask import Flask, render_template, request, redirect, url_for, flash, session, jsonify, abort
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
Expand Down
5 changes: 3 additions & 2 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
version: "3.9"

services:
retroiptvguide:
container_name: retroiptvguide
Expand All @@ -13,6 +11,9 @@ services:
- ./config:/app/config
- ./logs:/app/logs
- ./data:/app/data
- ./entrypoint_fixdb.sh:/entrypoint_fixdb.sh:ro
entrypoint: ["sh", "/entrypoint_fixdb.sh"]
command: ["python", "app.py"]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5000"]
interval: 30s
Expand Down
23 changes: 23 additions & 0 deletions docker/entrypoint_fixdb.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/sh
set -eu

mkdir -p /app/config /app/logs /app/data

# One-time migration: if legacy DBs exist in /app, move into persisted config dir
for f in users.db tuners.db; do
if [ -f "/app/$f" ] && [ ! -f "/app/config/$f" ]; then
mv "/app/$f" "/app/config/$f"
fi
done

# Force the app's relative DB paths to resolve into /app/config
for f in users.db tuners.db; do
# If a real file already exists and isn't a symlink, leave it (migration above should prevent this)
if [ -e "/app/$f" ] && [ ! -L "/app/$f" ]; then
continue
fi
ln -sf "/app/config/$f" "/app/$f"
done

exec "$@"

44 changes: 44 additions & 0 deletions docker/unraid/README-unraid.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# RetroIPTVGuide – Unraid Template *BETA*

This repository contains the Unraid Docker template for **RetroIPTVGuide**.

## What this is
An Unraid-compatible XML template that pre-populates:
- Docker image (`ghcr.io/thehack904/retroiptvguide:latest`)
- WebUI port mapping
- Persistent volume mappings (`/app/config`, `/app/logs`, `/app/data`)
- Common environment variables (TZ, etc.)

#### BETA Limitations
- Not indexed by **Community Applications**
- Template fields and defaults may change
- Limited Unraid-specific testing to date
- No migration guarantees between template revisions during beta

## Install methods

### Method 1: Manual install (works immediately)
Use this method if you do **not** use Community Applications, or you want to test quickly.

1. In Unraid, go to **Docker** → **Add Container**
2. Click **Template** (or **Add Container** UI option) and locate the **Template URL** field
3. Paste the raw XML URL for this template:

`https://raw.githubusercontent.com/thehack904/retroiptvguide-unraid/main/templates/RetroIPTVGuide.xml`

4. Apply / install
5. Review port mappings and storage paths.
6. **IMPORTANT:** Set a secure value for `SECRET_KEY` before starting the container.
7. Start the container.


Notes:
- Feedback from Unraid users is welcome and will help promote this install method out of BETA.
- Updates to the XML are not automatically “pushed” into existing installs; users typically re-apply changes manually.

### Method 2: Community Applications - Currently under development

## Support
- Project: https://github.com/thehack904/retroiptvguide
- Issues: https://github.com/thehack904/retroiptvguide/issues

34 changes: 34 additions & 0 deletions docker/unraid/RetroIPTVGuide.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<Container version="2">
<Name>RetroIPTVGuide</Name>
<Repository>ghcr.io/thehack904/retroiptvguide:latest</Repository>
<Registry>https://ghcr.io</Registry>
<Network>bridge</Network>
<MyIP/>
<Shell>bash</Shell>
<Privileged>false</Privileged>
<Support>https://github.com/thehack904/retroiptvguide</Support>
<Project>https://github.com/thehack904/retroiptvguide</Project>
<Overview>RetroIPTVGuide is an IPTV guide management system that provides a web interface for managing and viewing TV guides.</Overview>
<Category>MediaApp:Video MediaServer:Video</Category>
<WebUI>http://[IP]:[PORT:5000]/</WebUI>
<TemplateURL/>
<Icon>https://raw.githubusercontent.com/Squidly271/community.applications/master/source/community.applications/usr/local/emhttp/plugins/community.applications/images/question.png</Icon>
<PostArgs/>
<CPUset/>
<DateInstalled></DateInstalled>
<DonateText/>
<DonateLink/>
<Requires/>
<Config Name="Web UI Port" Target="5000" Default="5000" Mode="tcp" Description="Port for RetroIPTVGuide web interface" Type="Port" Display="always" Required="true" Mask="false">5000</Config>
<Config Name="Config Path" Target="/app/config" Default="/mnt/user/appdata/retroiptvguide/config" Mode="rw" Description="Container Path: /app/config" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/retroiptvguide/config</Config>
<Config Name="Logs Path" Target="/app/logs" Default="/mnt/user/appdata/retroiptvguide/logs" Mode="rw" Description="Container Path: /app/logs" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/retroiptvguide/logs</Config>
<Config Name="Data Path" Target="/app/data" Default="/mnt/user/appdata/retroiptvguide/data" Mode="rw" Description="Container Path: /app/data" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/retroiptvguide/data</Config>
<Config Name="Timezone" Target="TZ" Default="America/Chicago" Mode="" Description="Set your timezone (e.g., America/Chicago, America/New_York, Europe/London)" Type="Variable" Display="always" Required="false" Mask="false">America/Chicago</Config>
<Config Name="Flask Environment" Target="FLASK_ENV" Default="production" Mode="" Description="Flask environment mode" Type="Variable" Display="advanced" Required="false" Mask="false">production</Config>
<Config Name="Python Unbuffered" Target="PYTHONUNBUFFERED" Default="1" Mode="" Description="Force Python to run unbuffered" Type="Variable" Display="advanced" Required="false" Mask="false">1</Config>
<Config Name="Secret Key" Target="SECRET_KEY" Default="" Mode="" Description="IMPORTANT: Change this to a secure random string for security" Type="Variable" Display="always" Required="true" Mask="true">change_me_securely</Config>
<Config Name="Database File" Target="DATABASE_FILE" Default="retroiptv.db" Mode="" Description="Database filename" Type="Variable" Display="advanced" Required="false" Mask="false">retroiptv.db</Config>
<Config Name="Log File" Target="LOG_FILE" Default="retroiptv.log" Mode="" Description="Log filename" Type="Variable" Display="advanced" Required="false" Mask="false">retroiptv.log</Config>
<Config Name="Flask Port" Target="FLASK_PORT" Default="5000" Mode="" Description="Internal Flask port (should match the container port)" Type="Variable" Display="advanced" Required="false" Mask="false">5000</Config>
</Container>
2 changes: 1 addition & 1 deletion retroiptv_linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# License: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)

set -euo pipefail
VERSION="4.3.0"
VERSION="4.4.0"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
LOGFILE="retroiptv_${TIMESTAMP}.log"
exec > >(tee -a "$LOGFILE") 2>&1
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="4.3.0"
VERSION="4.4.0"
# 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 retroiptv_windows.bat
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ mode con: cols=160 lines=50

REM ============================================================
REM RetroIPTVGuide Windows Unified Installer / Uninstaller
REM Version: v4.3.0
REM Version: v4.4.0
REM License: Creative Commons BY-NC-SA 4.0
REM ============================================================

Expand Down Expand Up @@ -31,7 +31,7 @@ if /i "%choice%"=="Y" (

:continue
setlocal
set "VERSION=4.3.0"
set "VERSION=4.4.0"
set "REPO_URL=https://github.com/thehack904/RetroIPTVGuide.git"
set "ZIP_URL=https://github.com/thehack904/RetroIPTVGuide/archive/refs/heads/main.zip"
set "INSTALL_DIR=%~dp0RetroIPTVGuide"
Expand Down
Loading