streamflow/scripts/README.md

298 lines
5.4 KiB
Markdown
Raw Normal View History

# 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