297 lines
5.4 KiB
Markdown
297 lines
5.4 KiB
Markdown
# StreamFlow Scripts
|
|
|
|
Utility scripts for managing the StreamFlow IPTV application.
|
|
|
|
## Available Scripts
|
|
|
|
### test-vpn.sh
|
|
Tests VPN connection and checks for IP/DNS leaks.
|
|
|
|
**Usage:**
|
|
```bash
|
|
# From inside the container
|
|
docker exec -it streamflow bash
|
|
./scripts/test-vpn.sh
|
|
|
|
# Or directly from host
|
|
docker exec -it streamflow /app/scripts/test-vpn.sh
|
|
```
|
|
|
|
**What it checks:**
|
|
- VPN interface (tun0) status
|
|
- Routing table configuration
|
|
- DNS server configuration
|
|
- Public IP address
|
|
- IP geolocation information
|
|
- OpenVPN process status
|
|
- Firewall rules
|
|
|
|
**Example output:**
|
|
```
|
|
=========================================
|
|
VPN Connection Test
|
|
=========================================
|
|
|
|
1. Checking VPN Interface (tun0)...
|
|
✓ VPN interface (tun0) is UP
|
|
IP: 10.2.0.2/32
|
|
|
|
2. Checking Routing Table...
|
|
default via 10.2.0.1 dev tun0
|
|
✓ Traffic is routed through VPN
|
|
|
|
3. Checking DNS Configuration...
|
|
DNS Servers: 10.2.0.1 10.2.0.2
|
|
✓ Using VPN DNS servers
|
|
|
|
4. Checking Public IP Address...
|
|
Public IP: 185.159.x.x
|
|
Location: Amsterdam, NL
|
|
ISP: AS62371 ProtonVPN AG
|
|
✓ IP appears to be from VPN provider
|
|
|
|
5. Checking OpenVPN Process...
|
|
✓ OpenVPN process is running
|
|
PID: 1234
|
|
|
|
6. Checking Firewall Rules...
|
|
✓ VPN firewall rules are active (3 rules)
|
|
|
|
=========================================
|
|
Summary
|
|
=========================================
|
|
✓ VPN appears to be working correctly!
|
|
```
|
|
|
|
---
|
|
|
|
### start.sh
|
|
Starts the StreamFlow application using Docker Compose.
|
|
|
|
**Usage:**
|
|
```bash
|
|
./scripts/start.sh
|
|
```
|
|
|
|
**What it does:**
|
|
- Checks if Docker is running
|
|
- Builds Docker images if needed
|
|
- Starts all containers in detached mode
|
|
- Shows container status
|
|
- Displays access URL
|
|
|
|
**Options:**
|
|
```bash
|
|
./scripts/start.sh --build # Force rebuild images
|
|
./scripts/start.sh --logs # Show logs after starting
|
|
```
|
|
|
|
---
|
|
|
|
### stop.sh
|
|
Stops the StreamFlow application and removes containers.
|
|
|
|
**Usage:**
|
|
```bash
|
|
./scripts/stop.sh
|
|
```
|
|
|
|
**What it does:**
|
|
- Stops all running containers
|
|
- Removes containers
|
|
- Preserves volumes (data persistence)
|
|
- Shows final status
|
|
|
|
**Options:**
|
|
```bash
|
|
./scripts/stop.sh --volumes # Also remove volumes (WARNING: deletes data)
|
|
```
|
|
|
|
---
|
|
|
|
## Creating New Scripts
|
|
|
|
When adding new scripts to this directory:
|
|
|
|
1. **Make it executable:**
|
|
```bash
|
|
chmod +x scripts/your-script.sh
|
|
```
|
|
|
|
2. **Use proper shebang:**
|
|
```bash
|
|
#!/bin/bash
|
|
```
|
|
|
|
3. **Add error handling:**
|
|
```bash
|
|
set -e # Exit on error
|
|
```
|
|
|
|
4. **Document the script:**
|
|
- Add comments explaining what it does
|
|
- Update this README with usage instructions
|
|
|
|
5. **Test thoroughly:**
|
|
- Test on a clean environment
|
|
- Handle edge cases
|
|
- Provide helpful error messages
|
|
|
|
---
|
|
|
|
## Common Script Patterns
|
|
|
|
### Docker Commands
|
|
```bash
|
|
# Start in development mode with logs
|
|
docker-compose up
|
|
|
|
# Start in production (detached)
|
|
docker-compose up -d
|
|
|
|
# View logs
|
|
docker-compose logs -f
|
|
|
|
# Rebuild and start
|
|
docker-compose up -d --build
|
|
|
|
# Stop containers
|
|
docker-compose down
|
|
|
|
# Stop and remove volumes
|
|
docker-compose down -v
|
|
```
|
|
|
|
### Development Scripts
|
|
```bash
|
|
# Install dependencies
|
|
cd backend && npm install
|
|
cd frontend && npm install
|
|
|
|
# Run in development mode
|
|
cd backend && npm run dev
|
|
cd frontend && npm run dev
|
|
|
|
# Run tests
|
|
npm test
|
|
|
|
# Lint code
|
|
npm run lint
|
|
```
|
|
|
|
### Maintenance Scripts
|
|
```bash
|
|
# Clean Docker system
|
|
docker system prune -a
|
|
|
|
# View container logs
|
|
docker logs streamflow-app
|
|
|
|
# Execute command in container
|
|
docker exec -it streamflow-app sh
|
|
|
|
# Database backup
|
|
docker exec streamflow-app sqlite3 /app/data/streamflow.db .dump > backup.sql
|
|
```
|
|
|
|
---
|
|
|
|
## Script Guidelines
|
|
|
|
### Best Practices
|
|
|
|
1. **Always use absolute paths or relative from project root:**
|
|
```bash
|
|
cd "$(dirname "$0")/.." || exit
|
|
```
|
|
|
|
2. **Check prerequisites:**
|
|
```bash
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "Docker is not installed"
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
3. **Provide feedback:**
|
|
```bash
|
|
echo "Starting application..."
|
|
# command here
|
|
echo "✓ Application started successfully"
|
|
```
|
|
|
|
4. **Handle errors gracefully:**
|
|
```bash
|
|
if ! docker-compose up -d; then
|
|
echo "Failed to start application"
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
5. **Use colors for output (optional):**
|
|
```bash
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
NC='\033[0m' # No Color
|
|
echo -e "${GREEN}Success!${NC}"
|
|
```
|
|
|
|
---
|
|
|
|
## Future Scripts (Ideas)
|
|
|
|
Potential scripts that could be added:
|
|
|
|
- `backup.sh` - Backup database and uploads
|
|
- `restore.sh` - Restore from backup
|
|
- `update.sh` - Pull latest changes and rebuild
|
|
- `logs.sh` - View application logs with options
|
|
- `clean.sh` - Clean up unused Docker resources
|
|
- `test.sh` - Run test suite
|
|
- `deploy.sh` - Deploy to production server
|
|
- `health-check.sh` - Check application health
|
|
- `db-migrate.sh` - Run database migrations
|
|
- `generate-icons.sh` - Generate PWA icons from source
|
|
|
|
---
|
|
|
|
## Debugging Scripts
|
|
|
|
If a script fails:
|
|
|
|
1. **Check permissions:**
|
|
```bash
|
|
ls -la scripts/
|
|
chmod +x scripts/script-name.sh
|
|
```
|
|
|
|
2. **Run with verbose output:**
|
|
```bash
|
|
bash -x scripts/script-name.sh
|
|
```
|
|
|
|
3. **Check Docker status:**
|
|
```bash
|
|
docker ps
|
|
docker-compose ps
|
|
```
|
|
|
|
4. **View logs:**
|
|
```bash
|
|
docker-compose logs
|
|
```
|
|
|
|
---
|
|
|
|
## Platform Compatibility
|
|
|
|
All scripts should be compatible with:
|
|
- Linux (Ubuntu, Debian, Fedora, Arch)
|
|
- macOS
|
|
- Windows (via Git Bash or WSL)
|
|
|
|
For Windows native support, consider creating `.bat` or `.ps1` versions.
|
|
|
|
---
|
|
|
|
**Last Updated:** December 10, 2025
|