# دليل نشر SMTP API Service على easy-orders.co.uk

## 🎯 نظرة عامة

هذا الدليل يشرح خطوات نشر مشروع SMTP API Service على النطاق:
- **الموقع**: https://easy-orders.co.uk
- **API**: https://easy-orders.co.uk/api/v1
- **Docs**: https://easy-orders.co.uk/docs

---

## 📋 المتطلبات

### 1. سيرفر VPS
- **نظام**: Ubuntu 20.04/22.04 LTS
- **المواصفات**: 1GB RAM, 1 vCPU, 10GB SSD
- **IP ثابت**: مطلوب لربط النطاق

### 2. نطاق (Domain)
- النطاق: `easy-orders.co.uk`
- يجب أن يشير A Record إلى IP السيرفر

---

## 🚀 طريقة النشر السريعة (موصى بها)

### الخطوة 1: تحضير السيرفر

```bash
# تسجيل الدخول للسيرفر
ssh root@YOUR_SERVER_IP

# تحديث النظام
apt update && apt upgrade -y
```

### الخطوة 2: نسخ ملفات المشروع

```bash
# من جهازك المحلي، انسخ الملفات
scp -r smtp-api-service root@YOUR_SERVER_IP:/opt/

# أو استخدم git
ssh root@YOUR_SERVER_IP
cd /opt
git clone https://github.com/yourusername/smtp-api-service.git
```

### الخطوة 3: تشغيل سكريبت التثبيت

```bash
# ادخل للسيرفر
ssh root@YOUR_SERVER_IP

# انتقل لمجلد المشروع
cd /opt/smtp-api-service

# اجعل السكريبت قابل للتنفيذ
chmod +x install-easy-orders.sh

# شغل السكريبت
./install-easy-orders.sh
```

**السكريبت سيفعل تلقائياً:**
- ✅ تحديث النظام
- ✅ تثبيت Python, Nginx, Certbot
- ✅ إعداد Backend
- ✅ إعداد Frontend
- ✅ إعداد Nginx
- ✅ الحصول على SSL
- ✅ إنشاء خدمة systemd
- ✅ إعداد جدار الحماية

---

## 🔧 طريقة النشر اليدوي

### 1. تثبيت المتطلبات

```bash
# تحديث النظام
apt update && apt upgrade -y

# تثبيت Python
apt install -y python3 python3-pip python3-venv

# تثبيت Nginx
apt install -y nginx

# تثبيت Certbot للـ SSL
apt install -y certbot python3-certbot-nginx
```

### 2. إعداد Backend

```bash
# انتقل لمجلد Backend
cd /opt/smtp-api-service/backend

# إنشاء بيئة افتراضية
python3 -m venv venv
source venv/bin/activate

# تثبيت المتطلبات
pip install -r requirements.txt

# التحقق من ملف .env
cat .env
```

### 3. إعداد Nginx

```bash
# نسخ إعداد Nginx
cp /opt/smtp-api-service/nginx/easy-orders.conf /etc/nginx/sites-available/

# تفعيل الإعداد
ln -sf /etc/nginx/sites-available/easy-orders.conf /etc/nginx/sites-enabled/

# حذف الإعداد الافتراضي
rm -f /etc/nginx/sites-enabled/default

# التحقق من الإعداد
nginx -t

# إعادة تشغيل Nginx
systemctl restart nginx
```

### 4. نسخ Frontend

```bash
# نسخ ملفات Frontend
mkdir -p /var/www/easy-orders
cp /opt/smtp-api-service/frontend/index.html /var/www/easy-orders/
```

### 5. الحصول على SSL

```bash
# الحصول على شهادة SSL
certbot --nginx -d easy-orders.co.uk -d www.easy-orders.co.uk

# اختر إعادة التوجيه من HTTP إلى HTTPS
```

### 6. إنشاء خدمة systemd

```bash
# إنشاء ملف الخدمة
cat > /etc/systemd/system/smtp-api.service << 'EOF'
[Unit]
Description=SMTP API Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/smtp-api-service/backend
Environment="PATH=/opt/smtp-api-service/backend/venv/bin"
ExecStart=/opt/smtp-api-service/backend/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000 --workers 4
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# تفعيل وتشغيل الخدمة
systemctl daemon-reload
systemctl enable smtp-api
systemctl start smtp-api
```

### 7. إعداد جدار الحماية

```bash
# تفعيل UFW
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
```

---

## 🐳 طريقة النشر بـ Docker

### 1. تثبيت Docker

```bash
# تثبيت Docker
curl -fsSL https://get.docker.com | sh

# تثبيت Docker Compose
apt install -y docker-compose
```

### 2. نسخ ملفات المشروع

```bash
cd /opt
git clone https://github.com/yourusername/smtp-api-service.git
cd smtp-api-service
```

### 3. تشغيل المشروع

```bash
# بناء وتشغيل
docker-compose up -d --build

# عرض السجلات
docker-compose logs -f
```

### 4. الحصول على SSL

```bash
# الحصول على شهادة
docker-compose run --rm certbot certonly --webroot -w /var/www/certbot -d easy-orders.co.uk

# إعادة تشغيل Nginx
docker-compose restart nginx
```

---

## ✅ التحقق من النشر

### اختبار الموقع

```bash
# اختبار Frontend
curl https://easy-orders.co.uk

# اختبار API
curl https://easy-orders.co.uk/api/v1/

# اختبار Health
curl https://easy-orders.co.uk/health
```

### عرض السجلات

```bash
# سجلات Backend
journalctl -u smtp-api -f

# سجلات Nginx
tail -f /var/log/nginx/easy-orders-error.log
```

---

## 🔒 إعدادات الأمان

### 1. تغيير SECRET_KEY

```bash
# توليد مفتاح عشوائي
openssl rand -base64 32

# تعديل ملف .env
nano /opt/smtp-api-service/backend/.env
```

### 2. إنشاء مستخدم غير root (موصى به)

```bash
# إنشاء مستخدم
useradd -m -s /bin/bash smtpapi

# إعطاء صلاحيات
chown -R smtpapi:smtpapi /opt/smtp-api-service

# تعديل خدمة systemd
sed -i 's/User=root/User=smtpapi/' /etc/systemd/system/smtp-api.service
systemctl daemon-reload
systemctl restart smtp-api
```

---

## 📊 أوامر الصيانة

### إعادة تشغيل الخدمة

```bash
sudo systemctl restart smtp-api
```

### عرض الحالة

```bash
sudo systemctl status smtp-api
```

### نسخ احتياطي

```bash
# نسخ قاعدة البيانات
cp /opt/smtp-api-service/backend/data/smtp_api.db /backup/smtp_api_$(date +%Y%m%d).db
```

### تحديث المشروع

```bash
cd /opt/smtp-api-service
git pull
sudo systemctl restart smtp-api
```

---

## 🆌 استكشاف الأخطاء

### المشكلة: 502 Bad Gateway

```bash
# التحقق من تشغيل Backend
sudo systemctl status smtp-api

# إعادة تشغيل
sudo systemctl restart smtp-api
```

### المشكلة: SSL غير شغال

```bash
# تجديد الشهادة
sudo certbot renew

# إعادة إنشاء
sudo certbot --nginx -d easy-orders.co.uk
```

### المشكلة: CORS Error

تأكد من إعدادات CORS في `main.py`:
```python
allow_origins=["https://easy-orders.co.uk"]
```

---

## 📞 دعم

للمساعدة، راجع:
- سجلات الأخطاء: `sudo journalctl -u smtp-api -f`
- ملفات المشروع: `/opt/smtp-api-service/`
- توثيق API: https://easy-orders.co.uk/docs
