Initial commit: StreamFlow IPTV platform
This commit is contained in:
commit
73a8ae9ffd
1240 changed files with 278451 additions and 0 deletions
234
DEPLOYMENT.md
Normal file
234
DEPLOYMENT.md
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue