-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
This guide covers installing EXStreamTV on various platforms.
- Requirements
- macOS Installation
- Linux Installation
- Windows Installation
- Docker Installation
- From Source
- AI Configuration
- Verifying Installation
- Troubleshooting
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 2 cores | 4+ cores |
| RAM | 2 GB | 4+ GB |
| Storage | 500 MB | 2+ GB |
| Network | 10 Mbps | 100+ Mbps |
- Python: 3.10 or higher
- FFmpeg: 5.0+ with hardware acceleration support
- pip: Latest version recommended
For hardware transcoding:
- macOS: VideoToolbox (built-in on Apple Silicon/Intel Macs)
- NVIDIA: CUDA 11.0+, NVENC-capable GPU
- Intel: QSV-capable CPU (6th gen+)
- AMD: AMF-capable GPU
- Linux: VAAPI drivers
For AI features:
- Cloud AI: Free API key from Groq, SambaNova, or OpenRouter
- Local AI: Ollama with 4GB+ RAM (8GB+ recommended)
The easiest way to install on macOS:
# Clone the repository
git clone https://github.com/roto31/EXStreamTV.git
cd EXStreamTV
# Run the installer
./scripts/install_macos.shThe installer will:
- Check/install Homebrew
- Check/install Python 3.10+
- Check/install FFmpeg with VideoToolbox
- Create a virtual environment
- Install Python dependencies
- Initialize the database
- Optionally install Ollama for local AI
# Install Python (if needed)
brew install python@3.11
# Install FFmpeg with hardware acceleration
brew install ffmpeg
# Clone repository
git clone https://github.com/roto31/EXStreamTV.git
cd EXStreamTV
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Initialize database
python -m exstreamtv.database initBuild and install the native macOS menu bar app:
cd EXStreamTVApp
swift build -c release
cp -r .build/release/EXStreamTVApp.app /Applications/On first launch, the app guides you through:
- Dependency verification
- AI provider setup (cloud or local)
- Server configuration
- Media source connections
- First channel creation
See Onboarding Guide for details.
# Update packages
sudo apt update && sudo apt upgrade -y
# Install Python
sudo apt install python3 python3-pip python3-venv -y
# Install FFmpeg with hardware support
sudo apt install ffmpeg -y
# For NVIDIA GPU support
sudo apt install nvidia-cuda-toolkit -y
# For Intel QSV support
sudo apt install intel-media-va-driver-non-free -y
# Clone repository
git clone https://github.com/roto31/EXStreamTV.git
cd EXStreamTV
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt# Install Python
sudo dnf install python3 python3-pip -y
# Install FFmpeg (enable RPM Fusion first)
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm -y
sudo dnf install ffmpeg -y
# Clone and install
git clone https://github.com/roto31/EXStreamTV.git
cd EXStreamTV
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtCreate a systemd service:
sudo nano /etc/systemd/system/exstreamtv.serviceAdd the following content:
[Unit]
Description=EXStreamTV IPTV Streaming Server
After=network.target
[Service]
Type=simple
User=exstreamtv
WorkingDirectory=/opt/EXStreamTV
ExecStart=/opt/EXStreamTV/venv/bin/python -m exstreamtv
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetEnable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable exstreamtv
sudo systemctl start exstreamtv# Install Python (if needed) - using winget
winget install Python.Python.3.11
# Install FFmpeg
winget install Gyan.FFmpeg
# Clone repository
git clone https://github.com/roto31/EXStreamTV.git
cd EXStreamTV
# Create virtual environment
python -m venv venv
.\venv\Scripts\Activate.ps1
# Install dependencies
pip install -r requirements.txtUse NSSM (Non-Sucking Service Manager):
# Install NSSM
winget install NSSM.NSSM
# Install as service
nssm install EXStreamTV "C:\EXStreamTV\venv\Scripts\python.exe" "-m exstreamtv"
nssm set EXStreamTV AppDirectory "C:\EXStreamTV"
nssm start EXStreamTV# Clone repository
git clone https://github.com/roto31/EXStreamTV.git
cd EXStreamTV/containers/docker
# Configure environment (optional - for AI)
cp env.example .env
# Edit .env to add your GROQ_API_KEY
# Start the container
docker-compose up -d# Pull the image
docker pull exstreamtv/exstreamtv:latest
# Run the container
docker run -d \
--name exstreamtv \
-p 8411:8411 \
-v exstreamtv_data:/app/data \
-v /path/to/media:/media:ro \
exstreamtv/exstreamtv:latestFor NVIDIA GPU acceleration:
version: '3.8'
services:
exstreamtv:
image: exstreamtv/exstreamtv:latest
ports:
- "8411:8411"
environment:
- GROQ_API_KEY=${GROQ_API_KEY} # For cloud AI
volumes:
- exstreamtv_data:/app/data
- /path/to/media:/media:ro
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
volumes:
exstreamtv_data:To include Ollama for local AI:
docker-compose --profile ai-local up -dThis starts an Ollama container alongside EXStreamTV.
# Clone repository
git clone https://github.com/roto31/EXStreamTV.git
cd EXStreamTV
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # or .\venv\Scripts\Activate.ps1 on Windows
# Install in development mode
pip install -e ".[dev]"
# Or install all dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt# Build the package
python -m build
# Install the built package
pip install dist/exstreamtv-*.whlEXStreamTV uses AI for channel creation, troubleshooting, and log analysis. Choose from cloud or local providers.
- Get a free API key from console.groq.com
- Set the environment variable:
export GROQ_API_KEY="gsk_your_key_here"- Or add to
config.yaml:
ai_agent:
enabled: true
provider_type: "cloud"
cloud:
provider: "groq"
api_key: "gsk_your_key_here"- Install Ollama:
brew install ollama
ollama serve # Start the service- Download a model (based on your RAM):
# 4GB RAM
ollama pull phi4-mini:3.8b-q4
# 8GB RAM
ollama pull qwen2.5:7b
# 16GB+ RAM
ollama pull qwen2.5:14b- Configure in
config.yaml:
ai_agent:
enabled: true
provider_type: "local"
local:
model: "auto" # Auto-selects based on RAMFor detailed AI configuration, see AI Setup Guide.
# Activate virtual environment
source venv/bin/activate
# Verify imports
python -c "import exstreamtv; print(exstreamtv.__version__)"# Verify FFmpeg installation
ffmpeg -version
# Check for hardware encoders
ffmpeg -encoders | grep -E "(h264|hevc)_(nvenc|qsv|videotoolbox|vaapi)"# Start EXStreamTV
python -m exstreamtv
# Or use the start script
./start.shOpen your browser and navigate to:
http://localhost:8411
You should see the EXStreamTV dashboard.
# Check what's using port 8411
lsof -i :8411 # macOS/Linux
netstat -ano | findstr :8411 # Windows
# Use a different port
EXSTREAMTV_PORT=9000 python -m exstreamtv# Check permissions
ls -la /path/to/media
# Fix permissions (Linux/macOS)
sudo chown -R $USER:$USER /path/to/media
chmod -R 755 /path/to/media# Add FFmpeg to PATH
export PATH="/usr/local/bin:$PATH"
# Or specify path in config
echo "ffmpeg_path: /usr/local/bin/ffmpeg" >> config.yaml# Reset the database
rm -rf data/exstreamtv.db
python -m exstreamtv.database init- Check the FAQ
- Search GitHub Issues
- Join our Discord community
After installation:
- Quick Start Guide - Get your first channel running
- AI Setup Guide - Configure AI-assisted features
- macOS App Guide - Use the menu bar app
- Configure Hardware Transcoding - Enable GPU acceleration
- Add Local Media - Connect your media libraries
Last Revised: 2026-03-20
Getting Started
Guides
- AI-Setup
- Channel-Creation-Guide
- Local-Media
- Hardware-Transcoding
- macOS-App-Guide
- Navigation-Guide
- Streaming-Stability
- Advanced-Scheduling
Reference
- API-Reference
- System-Design
- Architecture-Diagrams
- Pattern-Refactor-Sources
- ADR-Channel-Manager-Database
- EXStreamTV-UI-Architecture
- Architecture
- Streaming-Internals
- HDHomeRun-Emulation
- Metadata-And-XMLTV
- AI-Agent-And-Containment
- Restart-Safety-Model
- Observability
- Troubleshooting
- Log-Interpretation
- Tunarr-DizqueTV-Integration
- Distribution
- Build-Progress
Operations
Changelog & Migration