5.6 KiB
StreamFlow IPTV - Deployment Guide
Quick Deployment
StreamFlow IPTV is available as a pre-built Docker image on Docker Hub, making deployment quick and easy.
Prerequisites
- Docker and Docker Compose installed on your system
- Docker Hub account (for accessing the private image)
Step 1: Login to GitHub Container Registry
Before pulling the private image, you need to authenticate with GitHub Container Registry:
echo YOUR_GITHUB_TOKEN | docker login ghcr.io -u YOUR_GITHUB_USERNAME --password-stdin
Replace YOUR_GITHUB_TOKEN with a Personal Access Token from GitHub (Settings → Developer settings → Personal access tokens) with read:packages scope.
Step 2: Download the docker-compose.yml
Download the docker-compose.yml file from the repository:
curl -O https://raw.githubusercontent.com/yourusername/streamflow-iptv/main/docker-compose.yml
Or manually create a docker-compose.yml file with the following content:
#version: '3.8'
services:
streamflow:
image: ghcr.io/aiulian25/streamflow-iptv:latest
container_name: streamflow
restart: unless-stopped
ports:
- "0.0.0.0:12345:12345"
- "0.0.0.0:9000:9000"
environment:
- NODE_ENV=production
- PORT=12345
- DB_PATH=/app/data/streamflow.db
- JWT_SECRET=${JWT_SECRET:-change_this_in_production}
- SESSION_SECRET=${SESSION_SECRET:-change_this_in_production}
- DISABLE_SIGNUPS=true
- MAX_RECORDING_SIZE=100GB
- ENABLE_GPU=${ENABLE_GPU:-false}
volumes:
- streamflow-data:/app/data
- streamflow-logs:/app/logs
- streamflow-uploads:/app/uploads
devices:
- /dev/dri:/dev/dri # Intel Quick Sync / VAAPI
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
privileged: true # Required for VPN operations
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.all.disable_ipv6=0
read_only: false
tmpfs:
- /tmp:size=1G,mode=1777
networks:
- streamflow-network
healthcheck:
test: ["CMD", "node", "backend/healthcheck.js"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
streamflow-data:
driver: local
streamflow-logs:
driver: local
streamflow-uploads:
driver: local
networks:
streamflow-network:
driver: bridge
Step 3: Configure Environment Variables (Recommended)
Create a .env file in the same directory as docker-compose.yml:
JWT_SECRET=your_secure_random_string_here
SESSION_SECRET=your_secure_random_string_here
ENABLE_GPU=false
Important Security Note: Change the JWT_SECRET and SESSION_SECRET to secure random strings in production!
Generate secure secrets:
# Generate JWT_SECRET
echo "JWT_SECRET=$(openssl rand -base64 32)" >> .env
# Generate SESSION_SECRET
echo "SESSION_SECRET=$(openssl rand -base64 32)" >> .env
Step 4: Deploy
Start the application:
docker-compose up -d
This will:
- Pull the latest StreamFlow IPTV image from Docker Hub
- Create the necessary volumes for data persistence
- Start the application
Step 5: Access the Application
- Web Interface: http://localhost:12345
- Update Server: http://localhost:9000
Step 6: Initial Setup
- Navigate to http://localhost:12345
- Create your admin account (first user)
- Upload your M3U playlist files
- Start streaming!
Available Image Tags
ghcr.io/aiulian25/streamflow-iptv:latest- Latest stable releaseghcr.io/aiulian25/streamflow-iptv:1.0.0- Specific version
To use a specific version, update the docker-compose.yml:
image: ghcr.io/aiulian25/streamflow-iptv:1.0.0
Updating the Application
To update to the latest version:
docker-compose pull
docker-compose up -d
This will pull the latest image and restart the container with the new version.
GPU Acceleration
Intel Quick Sync (Default)
The default configuration includes Intel Quick Sync support. Make sure your system has /dev/dri devices available.
NVIDIA GPU
To enable NVIDIA GPU acceleration, uncomment the following section in docker-compose.yml:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu, video]
Data Persistence
All data is stored in Docker volumes:
streamflow-data- Database, playlists, recordingsstreamflow-logs- Application logsstreamflow-uploads- User uploads
To backup your data:
docker run --rm -v streamflow-data:/data -v $(pwd):/backup alpine tar czf /backup/streamflow-backup.tar.gz /data
To restore from backup:
docker run --rm -v streamflow-data:/data -v $(pwd):/backup alpine tar xzf /backup/streamflow-backup.tar.gz -C /
Troubleshooting
Check Container Logs
docker-compose logs -f streamflow
Check Container Status
docker-compose ps
Restart Container
docker-compose restart
Remove and Recreate
docker-compose down
docker-compose up -d
Security Considerations
- Change Default Secrets: Always change JWT_SECRET and SESSION_SECRET in production
- Firewall Configuration: Consider restricting port access to specific IP ranges
- HTTPS: Use a reverse proxy (nginx, Traefik) with SSL certificates for production
- Regular Updates: Keep the Docker image updated with
docker-compose pull
Support
For issues or questions, please:
- Check the logs:
docker-compose logs -f - Review the documentation in the
docs/directory - Open an issue on GitHub
License
Proprietary - See LICENSE file for details