Files
easystream-main/DOCKER_QUICK_START.md
SamiAhmed7777 0b7e2d0a5b feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
2025-10-21 00:39:45 -07:00

8.1 KiB

EasyStream - Docker Quick Start

Get your video platform running in under 5 minutes!


Prerequisites

  • Docker installed
  • Docker Compose installed
  • 2GB free disk space

Installation

Step 1: Start the Platform

docker-compose up -d --build

This starts all required services:

  • db - MariaDB database
  • php - PHP-FPM 8.2 application server
  • caddy - Web server with automatic HTTPS
  • srs - Live streaming server (RTMP/HLS)
  • cron - Background jobs
  • abr - Adaptive bitrate transcoding

Step 2: Initialize Database (single SQL file)

Run this once after first launch:

docker exec -i easystream-db mysql -u easystream -peasystream easystream < __install/easystream.sql

This loads the full schema and default settings in one pass.


Step 3: Access Your Platform

Default Admin Login:

  • Username: admin
  • Password: admin123

First Steps After Installation

1. Configure Basic Settings

Go to: http://localhost:8083/admin_settings.php

General Tab:

  • Set your site name
  • Update admin email
  • Configure main URL (if not localhost)

Modules Tab:

  • Enable/disable features you want (videos, live, blogs, etc.)

Branding Tab:

  • Set your brand colors
  • Upload logo and favicon

2. Set Up Email (Optional)

Email Tab:

  • Configure SMTP settings for transactional emails
  • Test with providers like SendGrid, Mailgun, or Gmail

Example for Gmail:

  • Host: smtp.gmail.com
  • Port: 587
  • Encryption: TLS
  • Username: Your Gmail address
  • Password: App-specific password (Create here)

3. Configure Payments (Optional)

Payments Tab:

For PayPal:

  • Add PayPal email
  • Add Client ID and Secret
  • Toggle test mode (disable for production)

For Stripe:

  • Enable Stripe
  • Add Publishable Key
  • Add Secret Key
  • Add Webhook Secret

4. Set Up Creator Payouts (Optional)

Payouts Tab:

  • Enable creator payout system
  • Set revenue share percentage (e.g., 70% to creators)
  • Set minimum payout amount
  • Choose payout schedule (monthly recommended)

Environment Variables

Create .env file to override defaults:

# Database
DB_HOST=db
DB_NAME=easystream
DB_USER=easystream
DB_PASS=easystream

# Application
MAIN_URL=http://localhost:8083
DEBUG_MODE=0

# Email (optional - can also configure via admin panel)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password

Common Commands

View Logs

# All services
docker-compose logs -f

# Specific service
docker-compose logs -f php
docker-compose logs -f caddy
docker-compose logs -f db

Restart Services

# All services
docker-compose restart

# Specific service
docker-compose restart php

Stop Platform

docker-compose down

Stop and Remove Data

docker-compose down -v

Database Access

# MySQL shell
docker exec -it easystream-db mysql -u easystream -peasystream easystream

# Run SQL file
docker exec -i easystream-db mysql -u easystream -peasystream easystream < file.sql

File Structure

easystream/
├── docker-compose.yml          # Container orchestration
├── Caddyfile                   # Web server config
├── __install/                  # Installation scripts
│   └── install_settings_system.sql  # Settings installation
├── admin/                      # Admin panel
│   └── admin_settings.php      # Settings UI
├── f_core/                     # Core framework
│   ├── f_classes/              # PHP classes
│   └── config.*.php            # Configuration files
├── f_data/                     # Runtime data (auto-created)
│   ├── logs/                   # Application logs
│   └── cache/                  # Cache files
└── SETTINGS_GUIDE.md           # Complete settings documentation

Live Streaming

Start Streaming

Push RTMP stream to:

rtmp://localhost:1935/live/YOUR_STREAM_KEY

View HLS stream at:

http://localhost:8083/hls/live/YOUR_STREAM_KEY/index.m3u8

OBS Studio Setup

  1. Open OBS Studio
  2. Settings → Stream
  3. Service: Custom
  4. Server: rtmp://localhost:1935/live
  5. Stream Key: YOUR_STREAM_KEY
  6. Click "Start Streaming"

Troubleshooting

Database Connection Errors

# Check if database is running
docker-compose ps

# Restart database
docker-compose restart db

# Check database logs
docker-compose logs db

Settings Not Loading

# Re-run settings installation
docker exec -i easystream-db mysql -u easystream -peasystream easystream < __install/easystream.sql

# Check if settings exist
docker exec -it easystream-db mysql -u easystream -peasystream -e "SELECT COUNT(*) FROM easystream.db_settings;"

Port Already in Use

If port 8083 is already in use, edit docker-compose.yml:

services:
  caddy:
    ports:
      - "8084:80"  # Change 8083 to 8084
      - "443:443"

Then restart:

docker-compose down
docker-compose up -d

Permission Errors

# Fix data directory permissions
sudo chown -R $(whoami):$(whoami) f_data/

# Or make writable by all (less secure)
chmod -R 777 f_data/

Email Not Sending

  1. Check SMTP settings in admin panel
  2. Test credentials with a mail client
  3. Check firewall allows port 587/465
  4. Review application logs:
    docker-compose logs php | grep -i mail
    

Production Deployment

1. Update Environment

Create .env.production:

DB_HOST=db
DB_NAME=easystream
DB_USER=easystream
DB_PASS=STRONG_PASSWORD_HERE

MAIN_URL=https://yourdomain.com
DEBUG_MODE=0

2. Configure Domain

Edit Caddyfile:

yourdomain.com {
    root * /var/www/html
    php_fastcgi php:9000
    file_server
    encode gzip
}

3. SSL/HTTPS

Caddy automatically handles HTTPS with Let's Encrypt. Just point your domain to your server's IP.

4. Security Checklist

  • Change default admin password
  • Disable debug mode
  • Use strong database password
  • Enable HTTPS
  • Configure firewall
  • Set up regular backups
  • Review security settings in admin panel

5. Backups

# Backup database
docker exec easystream-db mysqldump -u easystream -peasystream easystream > backup_$(date +%Y%m%d).sql

# Backup settings to JSON
# (from admin panel: Settings → Export)

# Backup uploaded files
tar -czf uploads_backup.tar.gz f_data/

Performance Tips

1. Enable Redis Caching

Settings automatically use Redis when available for 10-100x faster performance.

Add to docker-compose.yml:

services:
  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data

volumes:
  redis_data:

2. Enable OPcache

Already enabled in the Docker PHP image for optimal performance.

3. Database Optimization

# Check database size
docker exec -it easystream-db mysql -u easystream -peasystream -e "
  SELECT table_schema AS 'Database',
         ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
  FROM information_schema.tables
  WHERE table_schema = 'easystream'
  GROUP BY table_schema;"

# Optimize tables
docker exec -it easystream-db mysqlcheck -u easystream -peasystream --optimize easystream

Next Steps

  1. Read Full Documentation: SETTINGS_GUIDE.md
  2. Configure Your Platform: Use the admin settings panel
  3. Upload Content: Start creating videos, streams, or blogs
  4. Invite Users: Share your platform URL
  5. Monitor Performance: Check logs and system status regularly

Support

  • Documentation: See SETTINGS_GUIDE.md for complete settings reference
  • Logs: Check f_data/logs/ for error logs
  • Admin Panel: Use log viewer at /admin/log_viewer.php

License

EasyStream Proprietary License Agreement Copyright (c) 2025 Sami Ahmed. All rights reserved.