# دليل التثبيت والتشغيل على السيرفر
# WiFi Guardian - Server Deployment Guide

## 📋 المتطلبات الأساسية

### السيرفر
- Ubuntu 22.04 LTS أو أعلى
- 2 GB RAM على الأقل
- 20 GB مساحة تخزين
- معالج 2 Core
- اتصال إنترنت مستقر

### البرامج المطلوبة
- PHP 8.2+
- Composer
- MySQL 8.0+ أو MariaDB 10.6+
- Nginx أو Apache
- Git
- Certbot (للـ SSL)
- Node.js & npm (اختياري للـ assets)

---

## 🚀 الجزء الأول: تثبيت Backend على السيرفر

### 1. تحديث النظام وتثبيت المتطلبات

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

# تثبيت PHP 8.2 والإضافات المطلوبة
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install -y php8.2 php8.2-fpm php8.2-cli php8.2-common \
    php8.2-mysql php8.2-zip php8.2-gd php8.2-mbstring \
    php8.2-curl php8.2-xml php8.2-bcmath php8.2-sqlite3

# تثبيت Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

# تثبيت MySQL
sudo apt install -y mysql-server

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

# تثبيت Git
sudo apt install -y git

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

### 2. إعداد MySQL Database

```bash
# تشغيل MySQL secure installation
sudo mysql_secure_installation

# الدخول إلى MySQL
sudo mysql -u root -p

# إنشاء قاعدة البيانات والمستخدم
CREATE DATABASE wifi_guardian CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wifi_guardian_user'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON wifi_guardian.* TO 'wifi_guardian_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```

### 3. استنساخ المشروع وإعداده

```bash
# إنشاء مجلد المشاريع
sudo mkdir -p /var/www
cd /var/www

# استنساخ Backend
sudo git clone https://github.com/ahmed114745ed-bot/wifi-guardian-backend.git
cd wifi-guardian-backend

# تعيين الصلاحيات الصحيحة
sudo chown -R www-data:www-data /var/www/wifi-guardian-backend
sudo chmod -R 755 /var/www/wifi-guardian-backend
sudo chmod -R 775 /var/www/wifi-guardian-backend/storage
sudo chmod -R 775 /var/www/wifi-guardian-backend/bootstrap/cache

# تثبيت Dependencies
composer install --no-dev --optimize-autoloader

# إنشاء ملف .env
cp .env.example .env
```

### 4. تعديل ملف .env

```bash
sudo nano .env
```

**ضع هذه الإعدادات:**

```env
APP_NAME="WiFi Guardian API"
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_TIMEZONE=Africa/Cairo
APP_URL=https://api.yourdomain.com

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=error

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=wifi_guardian
DB_USERNAME=wifi_guardian_user
DB_PASSWORD=YOUR_STRONG_PASSWORD

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
SESSION_DRIVER=database
SESSION_LIFETIME=120

CACHE_STORE=database

# WhatsApp API Configuration
WHATSAPP_API_URL=https://dotsaap.site/api/send
WHATSAPP_API_KEY=your_actual_api_key_here

# Email Configuration (اختياري)
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@yourdomain.com
MAIL_FROM_NAME="${APP_NAME}"

# Security
SESSION_SECURE_COOKIE=true
SANCTUM_STATEFUL_DOMAINS=yourdomain.com
```

### 5. إعداد Laravel

```bash
# توليد APP_KEY
php artisan key:generate

# تشغيل Migrations
php artisan migrate --force

# تحسين Laravel للـ Production
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache

# إنشاء symbolic link للـ storage
php artisan storage:link
```

### 6. إعداد Nginx

```bash
# إنشاء ملف تكوين Nginx
sudo nano /etc/nginx/sites-available/wifi-guardian-api
```

**ضع هذا المحتوى:**

```nginx
server {
    listen 80;
    listen [::]:80;
    server_name api.yourdomain.com;
    root /var/www/wifi-guardian-backend/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_hide_header X-Powered-By;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

    # Security headers
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "no-referrer-when-downgrade" always;
}
```

**تفعيل الموقع:**

```bash
# إنشاء symbolic link
sudo ln -s /etc/nginx/sites-available/wifi-guardian-api /etc/nginx/sites-enabled/

# حذف الموقع الافتراضي
sudo rm /etc/nginx/sites-enabled/default

# اختبار تكوين Nginx
sudo nginx -t

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

### 7. تثبيت SSL Certificate (HTTPS)

```bash
# الحصول على SSL Certificate من Let's Encrypt
sudo certbot --nginx -d api.yourdomain.com

# تجديد تلقائي للـ SSL
sudo certbot renew --dry-run
```

### 8. إعداد Cron Jobs (للمهام المجدولة)

```bash
# فتح crontab
sudo crontab -e

# إضافة هذا السطر
* * * * * cd /var/www/wifi-guardian-backend && php artisan schedule:run >> /dev/null 2>&1
```

### 9. إعداد Queue Worker (للمهام الخلفية)

```bash
# إنشاء Systemd Service
sudo nano /etc/systemd/system/wifi-guardian-worker.service
```

**ضع هذا المحتوى:**

```ini
[Unit]
Description=WiFi Guardian Queue Worker
After=network.target

[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/wifi-guardian-backend/artisan queue:work --sleep=3 --tries=3 --max-time=3600

[Install]
WantedBy=multi-user.target
```

**تفعيل وتشغيل:**

```bash
sudo systemctl enable wifi-guardian-worker
sudo systemctl start wifi-guardian-worker
sudo systemctl status wifi-guardian-worker
```

### 10. اختبار Backend API

```bash
# اختبار محلي
curl http://localhost/api/auth/register

# اختبار من الخارج
curl https://api.yourdomain.com/api/auth/register
```

**يجب أن ترى رسالة مثل:**
```json
{"message":"The phone field is required when email is not present."}
```

---

## 📱 الجزء الثاني: بناء Flutter APK للتوزيع

### 1. تحديث Backend URL في Flutter

```bash
cd /media/leader/par1/Doc/pro/wifi-guardian-fullstack/frontend

# تعديل ملف API Client
nano lib/services/api/wifi_guardian_api_client.dart
```

**غيّر الـ baseUrl:**

```dart
static const String baseUrl = 'https://api.yourdomain.com/api';
```

### 2. بناء APK للإنتاج

```bash
# Clean قبل البناء
flutter clean
flutter pub get

# بناء Release APK
flutter build apk --release

# أو بناء App Bundle للـ Play Store
flutter build appbundle --release
```

**موقع الـ APK:**
```
build/app/outputs/flutter-apk/app-release.apk
```

### 3. توزيع الـ APK

#### الطريقة الأولى: رفع على السيرفر للتحميل

```bash
# نسخ APK للسيرفر
scp build/app/outputs/flutter-apk/app-release.apk user@yourserver:/var/www/html/downloads/

# على السيرفر: إنشاء صفحة تحميل
sudo nano /var/www/html/index.html
```

**HTML بسيط:**
```html
<!DOCTYPE html>
<html>
<head>
    <title>WiFi Guardian Download</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            padding: 50px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
        }
        .download-btn {
            display: inline-block;
            padding: 15px 30px;
            background: white;
            color: #667eea;
            text-decoration: none;
            border-radius: 10px;
            font-weight: bold;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <h1>📱 WiFi Guardian</h1>
    <p>تطبيق مراقبة استهلاك الإنترنت العائلي</p>
    <a href="downloads/app-release.apk" class="download-btn">
        تحميل التطبيق (Android)
    </a>
    <p style="margin-top: 30px; font-size: 12px;">
        الإصدار 1.0.0 | آخر تحديث: 2026-05-13
    </p>
</body>
</html>
```

#### الطريقة الثانية: Google Play Store

1. إنشاء حساب Google Play Developer ($25)
2. رفع App Bundle:
```bash
flutter build appbundle --release
```
3. الملف في: `build/app/outputs/bundle/release/app-release.aab`
4. رفعه على Play Console

#### الطريقة الثالثة: Firebase App Distribution

```bash
# تثبيت Firebase CLI
npm install -g firebase-tools

# تسجيل الدخول
firebase login

# رفع APK
firebase appdistribution:distribute build/app/outputs/flutter-apk/app-release.apk \
    --app YOUR_FIREBASE_APP_ID \
    --groups testers
```

---

## 🔒 الأمان والحماية

### 1. تفعيل Firewall

```bash
# تثبيت UFW
sudo apt install -y ufw

# السماح بـ SSH, HTTP, HTTPS
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'

# تفعيل Firewall
sudo ufw enable
sudo ufw status
```

### 2. تأمين MySQL

```bash
# منع الاتصال الخارجي بـ MySQL
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

# تأكد من وجود:
bind-address = 127.0.0.1

# إعادة تشغيل MySQL
sudo systemctl restart mysql
```

### 3. Fail2Ban (حماية من Brute Force)

```bash
# تثبيت Fail2Ban
sudo apt install -y fail2ban

# إنشاء تكوين مخصص
sudo nano /etc/fail2ban/jail.local
```

**ضع:**
```ini
[nginx-http-auth]
enabled = true

[nginx-noscript]
enabled = true

[nginx-badbots]
enabled = true
```

```bash
# تشغيل Fail2Ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
```

---

## 📊 المراقبة والصيانة

### 1. مراقبة Logs

```bash
# Laravel Logs
tail -f /var/www/wifi-guardian-backend/storage/logs/laravel.log

# Nginx Error Logs
tail -f /var/log/nginx/error.log

# Nginx Access Logs
tail -f /var/log/nginx/access.log

# Queue Worker Logs
sudo journalctl -u wifi-guardian-worker -f
```

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

```bash
cd /var/www/wifi-guardian-backend

# Pull آخر التحديثات
sudo git pull origin main

# تحديث Dependencies
composer install --no-dev --optimize-autoloader

# تشغيل Migrations الجديدة
php artisan migrate --force

# إعادة بناء Cache
php artisan config:cache
php artisan route:cache
php artisan view:cache

# إعادة تشغيل Queue Worker
sudo systemctl restart wifi-guardian-worker
```

### 3. Backup قاعدة البيانات

```bash
# إنشاء Backup يدوي
mysqldump -u wifi_guardian_user -p wifi_guardian > backup-$(date +%Y%m%d).sql

# Backup تلقائي يومي
sudo nano /etc/cron.daily/mysql-backup
```

**ضع:**
```bash
#!/bin/bash
mysqldump -u wifi_guardian_user -pYOUR_PASSWORD wifi_guardian > /var/backups/mysql/wifi_guardian-$(date +%Y%m%d).sql
find /var/backups/mysql/ -type f -mtime +7 -delete
```

```bash
sudo chmod +x /etc/cron.daily/mysql-backup
sudo mkdir -p /var/backups/mysql
```

---

## 🌐 DNS Configuration

### على مزود الـ Domain (Namecheap, GoDaddy, etc):

```
Type    Name    Value               TTL
A       api     YOUR_SERVER_IP      3600
```

انتظر 5-60 دقيقة حتى ينتشر DNS.

**اختبار:**
```bash
ping api.yourdomain.com
```

---

## ✅ Checklist النهائي

### Backend
- [ ] PHP 8.2+ مثبت
- [ ] Composer مثبت
- [ ] MySQL/MariaDB يعمل
- [ ] Nginx يعمل
- [ ] SSL Certificate مثبت
- [ ] .env مُعد بشكل صحيح
- [ ] Migrations تمت بنجاح
- [ ] Queue Worker يعمل
- [ ] Cron Jobs مُفعّلة
- [ ] Firewall مُفعّل
- [ ] Backup تلقائي مُعد

### Frontend
- [ ] baseUrl محدث للـ Production
- [ ] APK مبني بنجاح
- [ ] تم اختبار APK على جهاز حقيقي
- [ ] Permissions تعمل بشكل صحيح

### Testing
- [ ] تسجيل حساب جديد يعمل
- [ ] تسجيل دخول يعمل
- [ ] QR Code يعمل
- [ ] Device Registration يعمل
- [ ] Usage Logging يعمل
- [ ] Family Features تعمل

---

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

### خطأ 500 Internal Server Error

```bash
# تحقق من logs
tail -f /var/www/wifi-guardian-backend/storage/logs/laravel.log

# تحقق من الصلاحيات
sudo chown -R www-data:www-data /var/www/wifi-guardian-backend
sudo chmod -R 775 storage bootstrap/cache
```

### خطأ "Connection Refused" من Flutter App

```bash
# تأكد من Nginx يعمل
sudo systemctl status nginx

# تأكد من Firewall يسمح بـ HTTPS
sudo ufw status

# اختبر API مباشرة
curl https://api.yourdomain.com/api/auth/register
```

### خطأ Database Connection

```bash
# تأكد من MySQL يعمل
sudo systemctl status mysql

# اختبر الاتصال
mysql -u wifi_guardian_user -p wifi_guardian
```

---

## 📞 الدعم

للمساعدة:
- GitHub Issues: افتح issue في المشروع
- Email: your-email@example.com

---

**تم إعداد هذا الدليل بواسطة Claude Sonnet 4.5** 🤖
