- 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
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
- Main Site: http://localhost:8083
- Admin Panel: http://localhost:8083/admin_login.php
- Settings: http://localhost:8083/admin_settings.php
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
- Open OBS Studio
- Settings → Stream
- Service:
Custom - Server:
rtmp://localhost:1935/live - Stream Key:
YOUR_STREAM_KEY - 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
- Check SMTP settings in admin panel
- Test credentials with a mail client
- Check firewall allows port 587/465
- 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
- Read Full Documentation: SETTINGS_GUIDE.md
- Configure Your Platform: Use the admin settings panel
- Upload Content: Start creating videos, streams, or blogs
- Invite Users: Share your platform URL
- 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.