diff --git a/INSTALL.md b/INSTALL.md index a9fa63a..f3efd07 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -97,10 +97,21 @@ RetroIPTVGuide v3.2.0 introduces **official Docker and TrueNAS SCALE App support ```bash git clone https://github.com/thehack904/RetroIPTVGuide.git -cd RetroIPTVGuide +cd RetroIPTVGuide/docker +cp .env.example .env docker compose up -d ``` + +## 🐳 Quick Docker Run + +The fastest way to launch **RetroIPTVGuide v3.2.0**: + +```bash +docker pull ghcr.io/thehack904/retroiptvguide:latest +docker run -d --name retroiptvguide -p 5000:5000 -e TZ=America/Chicago -e SECRET_KEY=$(openssl rand -hex 32) -v $(pwd)/config:/app/config -v $(pwd)/logs:/app/logs -v $(pwd)/data:/app/data ghcr.io/thehack904/retroiptvguide:latest +``` + --- ## Access diff --git a/README.md b/README.md index 48ee4e3..9422c3f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,30 @@ # RetroIPTVGuide -![Version](https://img.shields.io/badge/version-v3.2.0-blue) +

+ + Version + + + GHCR + + + Build Status + + + License + +

+ + +--- + +## πŸ“¦ Image Information + +| Registry | Image | Architectures | Updated | +|-----------|--------|----------------|----------| +| **GitHub Container Registry** | `ghcr.io/thehack904/retroiptvguide:latest` | amd64 / arm64 | Automatically via CI/CD | + +--- 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. @@ -14,7 +38,6 @@ Now includes **Docker and TrueNAS SCALE deployment support** for easy installati - [License](LICENSE) --- - ## πŸš€ Containerized Deployment (v3.2.0) ### 🐳 Docker diff --git a/docker/.env.example b/docker/.env.example new file mode 100644 index 0000000..6513382 --- /dev/null +++ b/docker/.env.example @@ -0,0 +1,18 @@ +# ============================================ +# RetroIPTVGuide Environment Configuration +# ============================================ + +# System Settings +TZ=America/Chicago +FLASK_ENV=production +PYTHONUNBUFFERED=1 + +# Security +SECRET_KEY=change_me_securely + +# Files / Logs +DATABASE_FILE=retroiptv.db +LOG_FILE=retroiptv.log + +# Internal Flask Port +FLASK_PORT=5000 diff --git a/docker/README_DOCKER.md b/docker/README_DOCKER.md new file mode 100644 index 0000000..37b7f6c --- /dev/null +++ b/docker/README_DOCKER.md @@ -0,0 +1,112 @@ +# 🐳 RetroIPTVGuide Docker Deployment + +This folder contains everything you need to deploy **RetroIPTVGuide** via Docker or Docker Compose. + +--- + +## πŸš€ Quick Start + +### 1️⃣ Clone the repository and navigate into the Docker directory +```bash +git clone https://github.com/thehack904/RetroIPTVGuide.git +cd RetroIPTVGuide/docker +``` + +### 2️⃣ Create a `.env` file from the example +```bash +cp .env.example .env +``` +Edit `.env` to set your timezone and secret key. + +### 3️⃣ Launch the container +```bash +docker compose up -d +``` + +### 4️⃣ Access the web interface +``` +http://:5000 +``` + +--- + +## πŸ”„ Updating +```bash +docker compose pull && docker compose up -d +``` + +--- + +## 🧹 Uninstalling +```bash +docker compose down -v +``` +This stops and removes the container, volumes, and network. + +--- + +## 🧱 Directory Layout +``` +docker/ +β”œβ”€β”€ docker-compose.yml +β”œβ”€β”€ .env.example +β”œβ”€β”€ config/ β†’ Persistent configuration files +β”œβ”€β”€ data/ β†’ SQLite database files +└── logs/ β†’ Application logs +``` +Docker automatically creates these directories on first run if they don’t exist. + +--- + +## 🧠 Notes +- The container image supports both **amd64** and **arm64** (e.g. Raspberry Pi). +- Default exposed port: **5000** +- Default image: `ghcr.io/thehack904/retroiptvguide:latest` +- Restart policy: `unless-stopped` +- Logs, configs, and data persist between updates. + +--- + +## 🧩 Example Commands + +View logs: +```bash +docker compose logs -f +``` + +Restart the container: +```bash +docker compose restart +``` + +Stop the container: +```bash +docker compose down +``` + +--- + +## 🧰 Customization + +You can override settings directly in the `.env` file: + +| Variable | Description | Example | +|-----------|--------------|----------| +| `TZ` | Timezone | `America/New_York` | +| `FLASK_ENV` | Flask environment | `production` | +| `SECRET_KEY` | Random secure key | `openssl rand -hex 32` | +| `DATABASE_FILE` | SQLite DB filename | `retroiptv.db` | +| `LOG_FILE` | Log file name | `retroiptv.log` | + +--- + +## 🧭 Compatibility + +βœ… Docker Desktop (Windows/macOS) +βœ… Linux (Ubuntu, Debian, Arch, etc.) +βœ… TrueNAS SCALE (Compose Stack or App) +βœ… Raspberry Pi (ARM builds supported) + +--- + +Β© 2025 RetroIPTVGuide β€” Licensed under CC BY-NC-SA 4.0 diff --git a/docker/config/.gitkeep b/docker/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker/data/.gitkeep b/docker/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..7c36f82 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.9" + +services: + retroiptvguide: + container_name: retroiptvguide + image: ghcr.io/thehack904/retroiptvguide:latest + restart: unless-stopped + ports: + - "5000:5000" + env_file: + - .env + volumes: + - ./config:/app/config + - ./logs:/app/logs + - ./data:/app/data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:5000"] + interval: 30s + timeout: 5s + retries: 3 diff --git a/docker/logs/.gitkeep b/docker/logs/.gitkeep new file mode 100644 index 0000000..e69de29