MQL5-Google-Onedrive/docs/Cloud_Deployment_Guide.md

316 lines
6.5 KiB
Markdown
Raw Permalink Normal View History

# Cloud Deployment Guide
This guide explains how to deploy the MQL5 Trading Automation system to various cloud platforms.
> **⚠️ Important:** These deployment methods run the **automation system** (Python scripts) or a headless MT5 instance. They do **not** enable custom indicators or EAs on the **Exness Web Terminal**. For charting and manual trading with custom tools, you must use the **Exness MetaTrader 5 Desktop Application**.
## Supported Platforms
- **Render.com** - Simple web service deployment
- **Railway.app** - Container-based deployment
- **Fly.io** - Global edge deployment
- **Docker** - Container deployment (any platform)
- **Heroku** - Legacy support (via Docker)
## Prerequisites
- GitHub repository pushed and accessible
- Account on chosen cloud platform
- Python 3.8+ support on platform
## Platform-Specific Deployment
### 1. Render.com Deployment
**Configuration File:** `render.yaml`
**Steps:**
1. **Push to GitHub:**
```bash
git push origin main
```
2. **Create Render Service:**
- Go to https://render.com
- Click "New +" → "Web Service"
- Connect your GitHub repository
- Render will auto-detect `render.yaml`
3. **Configure Environment Variables** (if needed):
- `PYTHONUNBUFFERED=1`
- `TZ=UTC` (or your timezone)
4. **Deploy:**
- Click "Create Web Service"
- Render will build and deploy automatically
**Manual Deploy Script:**
```bash
python scripts/deploy_cloud.py render
```
### 2. Railway.app Deployment
**Configuration File:** `railway.json`
**Steps:**
1. **Install Railway CLI:**
```bash
npm i -g @railway/cli
```
2. **Login:**
```bash
railway login
```
3. **Initialize Project:**
```bash
railway init
```
4. **Deploy:**
```bash
railway up
```
**Or use Railway Dashboard:**
- Go to https://railway.app
- Create new project
- Connect GitHub repository
- Railway will auto-detect `railway.json`
**Manual Deploy Script:**
```bash
python scripts/deploy_cloud.py railway
```
### 3. Fly.io Deployment
**Configuration File:** `fly.toml`
**Steps:**
1. **Install Fly CLI:**
```bash
# Windows (PowerShell)
powershell -Command "iwr https://fly.io/install.ps1 -useb | iex"
# macOS/Linux
curl -L https://fly.io/install.sh | sh
```
2. **Login:**
```bash
fly auth login
```
3. **Launch App:**
```bash
fly launch
```
4. **Deploy:**
```bash
fly deploy
```
**Manual Deploy Script:**
```bash
python scripts/deploy_cloud.py flyio
```
### 4. Docker Deployment
**Configuration Files:** `Dockerfile`, `docker-compose.yml`
**Local Docker Build:**
```bash
# Build image
docker build -t mql5-automation .
# Run container
docker run -d --name mql5-automation \
-v $(pwd)/config:/app/config \
-v $(pwd)/logs:/app/logs \
mql5-automation
# Or use docker-compose
docker-compose up -d
```
**Deploy to Cloud with Docker:**
Any platform that supports Docker:
- **AWS ECS/Fargate**
- **Google Cloud Run**
- **Azure Container Instances**
- **DigitalOcean App Platform**
- **Vercel** (with Docker support)
**Manual Deploy Script:**
```bash
python scripts/deploy_cloud.py docker --build
```
### 5. Heroku Deployment
**Using Docker:**
1. **Create `heroku.yml`:**
```yaml
build:
docker:
web: Dockerfile
```
2. **Deploy:**
```bash
heroku container:push web
heroku container:release web
```
## Configuration
### Environment Variables
All platforms support these environment variables:
```bash
PYTHONUNBUFFERED=1 # Python output buffering
TZ=UTC # Timezone
LOG_LEVEL=INFO # Logging level
MAX_RETRIES=3 # Component retry count
```
### Volume Mounts
For persistent storage (logs, config):
- **Render:** Use Render Disk (paid plans)
- **Railway:** Use Railway Volumes
- **Fly.io:** Use Fly Volumes
- **Docker:** Use bind mounts or volumes
## Monitoring
### Health Checks
All platforms support health checks:
- **Render:** Configured in `render.yaml`
- **Railway:** Automatic
- **Fly.io:** Configured in `fly.toml`
- **Docker:** Use `docker-compose.yml` healthcheck
### Logs
Access logs on each platform:
- **Render:** Dashboard → Logs tab
- **Railway:** Dashboard → Deployments → View Logs
- **Fly.io:** `fly logs`
- **Docker:** `docker logs mql5-automation`
## Continuous Deployment
### GitHub Actions Integration
All platforms support automatic deployment on push:
1. **Render:** Enable "Auto-Deploy" in settings
2. **Railway:** Enable "Auto Deploy" in project settings
3. **Fly.io:** Use GitHub Actions workflow (see below)
### GitHub Actions Workflow
Create `.github/workflows/deploy-cloud.yml`:
```yaml
name: Deploy to Cloud
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to Render
uses: johnletey/railway-deploy@master
env:
RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
```
## Cost Considerations
### Free Tiers
- **Render:** Free tier available (limited hours)
- **Railway:** $5 credit/month
- **Fly.io:** Free tier with limits
- **Docker:** Free on self-hosted
### Paid Plans
- **Render:** $7/month for always-on
- **Railway:** Pay-as-you-go
- **Fly.io:** Pay-as-you-go
- **Docker:** Varies by platform
## Troubleshooting
### Common Issues
**1. Build Failures:**
- Check Python version compatibility
- Verify all dependencies in `requirements.txt`
- Review build logs
**2. Runtime Errors:**
- Check environment variables
- Verify file permissions
- Review application logs
**3. Connection Issues:**
- Verify network configuration
- Check firewall rules
- Review platform-specific networking docs
### Getting Help
- **Render:** https://render.com/docs
- **Railway:** https://docs.railway.app
- **Fly.io:** https://fly.io/docs
- **Docker:** https://docs.docker.com
## Quick Deploy Commands
```bash
# Setup all platform configs
python scripts/deploy_cloud.py all
# Deploy to specific platform
python scripts/deploy_cloud.py render
python scripts/deploy_cloud.py railway
python scripts/deploy_cloud.py flyio
python scripts/deploy_cloud.py docker --build
```
## Next Steps
After deployment:
1. **Monitor Logs:** Check platform dashboard for logs
2. **Test Functionality:** Verify automation is running
3. **Set Up Alerts:** Configure notifications for failures
4. **Scale if Needed:** Adjust resources based on usage
## Support
For deployment issues:
- Email: Lengkundee01.org@domain.com
- GitHub Issues: https://github.com/A6-9V/MQL5-Google-Onedrive/issues
- WhatsApp: [Agent community](https://chat.whatsapp.com/DYemXrBnMD63K55bjUMKYF)