Initial commit: StreamFlow IPTV platform

This commit is contained in:
aiulian25 2025-12-17 00:42:43 +00:00
commit 73a8ae9ffd
1240 changed files with 278451 additions and 0 deletions

234
DEPLOYMENT.md Normal file
View file

@ -0,0 +1,234 @@
# 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:
```bash
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:
```bash
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:
```yaml
#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`:
```bash
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:
```bash
# 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:
```bash
docker-compose up -d
```
This will:
1. Pull the latest StreamFlow IPTV image from Docker Hub
2. Create the necessary volumes for data persistence
3. Start the application
### Step 5: Access the Application
- Web Interface: http://localhost:12345
- Update Server: http://localhost:9000
### Step 6: Initial Setup
1. Navigate to http://localhost:12345
2. Create your admin account (first user)
3. Upload your M3U playlist files
4. Start streaming!
## Available Image Tags
- `ghcr.io/aiulian25/streamflow-iptv:latest` - Latest stable release
- `ghcr.io/aiulian25/streamflow-iptv:1.0.0` - Specific version
To use a specific version, update the docker-compose.yml:
```yaml
image: ghcr.io/aiulian25/streamflow-iptv:1.0.0
```
## Updating the Application
To update to the latest version:
```bash
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:
```yaml
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu, video]
```
## Data Persistence
All data is stored in Docker volumes:
- `streamflow-data` - Database, playlists, recordings
- `streamflow-logs` - Application logs
- `streamflow-uploads` - User uploads
To backup your data:
```bash
docker run --rm -v streamflow-data:/data -v $(pwd):/backup alpine tar czf /backup/streamflow-backup.tar.gz /data
```
To restore from backup:
```bash
docker run --rm -v streamflow-data:/data -v $(pwd):/backup alpine tar xzf /backup/streamflow-backup.tar.gz -C /
```
## Troubleshooting
### Check Container Logs
```bash
docker-compose logs -f streamflow
```
### Check Container Status
```bash
docker-compose ps
```
### Restart Container
```bash
docker-compose restart
```
### Remove and Recreate
```bash
docker-compose down
docker-compose up -d
```
## Security Considerations
1. **Change Default Secrets**: Always change JWT_SECRET and SESSION_SECRET in production
2. **Firewall Configuration**: Consider restricting port access to specific IP ranges
3. **HTTPS**: Use a reverse proxy (nginx, Traefik) with SSL certificates for production
4. **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