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
This commit is contained in:
427
DOCKER_QUICK_START.md
Normal file
427
DOCKER_QUICK_START.md
Normal file
@@ -0,0 +1,427 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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](https://myaccount.google.com/apppasswords))
|
||||
|
||||
---
|
||||
|
||||
### 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:
|
||||
|
||||
```env
|
||||
# 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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# All services
|
||||
docker-compose restart
|
||||
|
||||
# Specific service
|
||||
docker-compose restart php
|
||||
```
|
||||
|
||||
### Stop Platform
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### Stop and Remove Data
|
||||
```bash
|
||||
docker-compose down -v
|
||||
```
|
||||
|
||||
### Database Access
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# Check if database is running
|
||||
docker-compose ps
|
||||
|
||||
# Restart database
|
||||
docker-compose restart db
|
||||
|
||||
# Check database logs
|
||||
docker-compose logs db
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Settings Not Loading
|
||||
|
||||
```bash
|
||||
# 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`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
caddy:
|
||||
ports:
|
||||
- "8084:80" # Change 8083 to 8084
|
||||
- "443:443"
|
||||
```
|
||||
|
||||
Then restart:
|
||||
```bash
|
||||
docker-compose down
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Permission Errors
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
```bash
|
||||
docker-compose logs php | grep -i mail
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Production Deployment
|
||||
|
||||
### 1. Update Environment
|
||||
|
||||
Create `.env.production`:
|
||||
|
||||
```env
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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`:
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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](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](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.
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user