| # 🌐 راهنمای استقرار (Deployment Guide) | |
| این فایل شامل دستورالعمل کامل برای استقرار داشبورد کریپتو در پلتفرمهای مختلف است. | |
| --- | |
| ## 📋 فهرست | |
| 1. [Hugging Face Spaces](#1-hugging-face-spaces) | |
| 2. [Railway.app](#2-railwayapp) | |
| 3. [Render.com](#3-rendercom) | |
| 4. [Oracle Cloud (رایگان)](#4-oracle-cloud-رایگان) | |
| 5. [Vercel](#5-vercel) | |
| 6. [Docker (محلی)](#6-docker-محلی) | |
| 7. [VPS / سرور اختصاصی](#7-vps--سرور-اختصاصی) | |
| --- | |
| ## 1. Hugging Face Spaces | |
| ### 🎯 مزایا | |
| - ✅ رایگان | |
| - ✅ راهاندازی سریع | |
| - ✅ URL عمومی | |
| - ✅ مناسب برای demo | |
| ### 📝 مراحل استقرار | |
| #### روش 1: استفاده از Docker (توصیه میشود) | |
| 1. **ایجاد Space جدید** | |
| - به [huggingface.co/spaces](https://huggingface.co/spaces) بروید | |
| - روی "Create new Space" کلیک کنید | |
| - نام Space را وارد کنید | |
| - SDK را روی **Docker** تنظیم کنید | |
| 2. **آپلود فایلها** | |
| ```bash | |
| git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE | |
| cd YOUR_SPACE | |
| # کپی فایلهای پروژه | |
| cp -r crypto_dashboard/* . | |
| git add . | |
| git commit -m "Initial commit" | |
| git push | |
| ``` | |
| 3. **تنظیم Port** | |
| در فایل `Dockerfile` مطمئن شوید که port 7860 استفاده میشود: | |
| ```dockerfile | |
| CMD ["python", "app.py"] | |
| ``` | |
| #### روش 2: بدون Docker | |
| 1. ایجاد فایل `app.py` در روت | |
| 2. ایجاد پوشه `templates/` و قرار دادن `index.html` | |
| 3. ایجاد `requirements.txt` | |
| 4. Push به repository | |
| ### ⚙️ تنظیمات | |
| در تب Settings: | |
| - **Hardware**: CPU basic (رایگان) | |
| - **Port**: 7860 | |
| - **Sleep Time**: 48 hours (برای free tier) | |
| ### 🔗 نتیجه | |
| Space شما در آدرس زیر در دسترس خواهد بود: | |
| ``` | |
| https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE | |
| ``` | |
| --- | |
| ## 2. Railway.app | |
| ### 🎯 مزایا | |
| - ✅ Free tier سخاوتمندانه ($5 credit/month) | |
| - ✅ Deploy خودکار از Git | |
| - ✅ Custom domain رایگان | |
| - ✅ Logs و Monitoring | |
| ### 📝 مراحل استقرار | |
| 1. **ثبت نام** | |
| - به [railway.app](https://railway.app) بروید | |
| - Sign up با GitHub | |
| 2. **Deploy از GitHub** | |
| ```bash | |
| # Push پروژه به GitHub | |
| git init | |
| git add . | |
| git commit -m "Initial commit" | |
| git push origin main | |
| ``` | |
| 3. **ایجاد Project در Railway** | |
| - New Project | |
| - Deploy from GitHub repo | |
| - انتخاب repository | |
| 4. **تنظیمات (اختیاری)** | |
| ```bash | |
| # متغیرهای محیطی | |
| PORT=7860 | |
| HOST=0.0.0.0 | |
| ``` | |
| 5. **Deploy** | |
| - Railway به صورت خودکار deploy میکند | |
| - URL عمومی دریافت میکنید | |
| ### 💰 هزینه | |
| - Free tier: $5 credit/month (کافی برای این پروژه) | |
| - پس از اتمام: $5-10/month | |
| --- | |
| ## 3. Render.com | |
| ### 🎯 مزایا | |
| - ✅ Free tier | |
| - ✅ راهاندازی ساده | |
| - ✅ SSL رایگان | |
| - ✅ Auto-deploy | |
| ### 📝 مراحل استقرار | |
| 1. **ثبت نام** | |
| - [render.com](https://render.com) | |
| 2. **New Web Service** | |
| - Connect GitHub repository | |
| - یا Manual Deploy | |
| 3. **تنظیمات** | |
| ```yaml | |
| Name: crypto-dashboard | |
| Environment: Python 3 | |
| Build Command: pip install -r requirements.txt | |
| Start Command: python app.py | |
| ``` | |
| 4. **Environment Variables** | |
| ``` | |
| PORT=7860 | |
| ``` | |
| 5. **Deploy** | |
| - Create Web Service | |
| ### ⚠️ نکته | |
| Free tier ممکن است پس از مدتی inactive شود (sleep mode) | |
| --- | |
| ## 4. Oracle Cloud (رایگان) | |
| ### 🎯 مزایا | |
| - ✅ رایگان برای همیشه | |
| - ✅ 2 VM instances | |
| - ✅ 1GB RAM هر کدام | |
| - ✅ 100GB storage | |
| ### 📝 مراحل استقرار | |
| 1. **ثبت نام در Oracle Cloud** | |
| - [cloud.oracle.com](https://cloud.oracle.com) | |
| - نیاز به کارت اعتباری (شارژ نمیشود) | |
| 2. **ایجاد VM Instance** | |
| - Compute > Instances > Create Instance | |
| - Shape: VM.Standard.E2.1.Micro (Free) | |
| - Image: Ubuntu 22.04 | |
| 3. **نصب Python** | |
| ```bash | |
| ssh ubuntu@YOUR_VM_IP | |
| sudo apt update | |
| sudo apt install python3 python3-pip -y | |
| ``` | |
| 4. **Deploy پروژه** | |
| ```bash | |
| # آپلود فایلها | |
| scp -r crypto_dashboard ubuntu@YOUR_VM_IP:~/ | |
| # SSH به سرور | |
| ssh ubuntu@YOUR_VM_IP | |
| cd crypto_dashboard | |
| pip3 install -r requirements.txt | |
| # اجرا | |
| python3 app.py | |
| ``` | |
| 5. **نصب به عنوان Service** | |
| ```bash | |
| sudo nano /etc/systemd/system/crypto-dashboard.service | |
| ``` | |
| محتوا: | |
| ```ini | |
| [Unit] | |
| Description=Crypto Dashboard | |
| After=network.target | |
| [Service] | |
| User=ubuntu | |
| WorkingDirectory=/home/ubuntu/crypto_dashboard | |
| ExecStart=/usr/bin/python3 /home/ubuntu/crypto_dashboard/app.py | |
| Restart=always | |
| [Install] | |
| WantedBy=multi-user.target | |
| ``` | |
| فعالسازی: | |
| ```bash | |
| sudo systemctl enable crypto-dashboard | |
| sudo systemctl start crypto-dashboard | |
| ``` | |
| 6. **باز کردن Port** | |
| - Networking > Virtual Cloud Networks | |
| - Security Lists > Add Ingress Rule | |
| - Port: 7860 | |
| ### 🔗 دسترسی | |
| ``` | |
| http://YOUR_VM_IP:7860 | |
| ``` | |
| --- | |
| ## 5. Vercel | |
| ### 🎯 مزایا | |
| - ✅ رایگان | |
| - ✅ سریع | |
| - ✅ Custom domain | |
| ### ⚠️ محدودیت | |
| Vercel برای Serverless Functions طراحی شده، برای FastAPI نیاز به تنظیمات اضافی دارد. | |
| ### 📝 نیاز به: | |
| 1. ایجاد `vercel.json` | |
| 2. استفاده از `@vercel/python` | |
| 3. تبدیل به Serverless Functions | |
| **توصیه**: برای این پروژه از Railway یا Render استفاده کنید. | |
| --- | |
| ## 6. Docker (محلی) | |
| ### 📝 مراحل | |
| 1. **Build Image** | |
| ```bash | |
| docker build -t crypto-dashboard . | |
| ``` | |
| 2. **Run Container** | |
| ```bash | |
| docker run -p 7860:7860 crypto-dashboard | |
| ``` | |
| 3. **با Docker Compose** | |
| ایجاد `docker-compose.yml`: | |
| ```yaml | |
| version: '3.8' | |
| services: | |
| crypto-dashboard: | |
| build: . | |
| ports: | |
| - "7860:7860" | |
| restart: always | |
| ``` | |
| اجرا: | |
| ```bash | |
| docker-compose up -d | |
| ``` | |
| --- | |
| ## 7. VPS / سرور اختصاصی | |
| ### 📝 مراحل (Ubuntu/Debian) | |
| 1. **نصب Dependencies** | |
| ```bash | |
| sudo apt update | |
| sudo apt install python3 python3-pip nginx -y | |
| ``` | |
| 2. **آپلود پروژه** | |
| ```bash | |
| cd /opt | |
| sudo git clone YOUR_REPO | |
| cd crypto_dashboard | |
| sudo pip3 install -r requirements.txt | |
| ``` | |
| 3. **ایجاد Systemd Service** | |
| ```bash | |
| sudo nano /etc/systemd/system/crypto-dashboard.service | |
| ``` | |
| محتوا: | |
| ```ini | |
| [Unit] | |
| Description=Crypto Dashboard API | |
| After=network.target | |
| [Service] | |
| Type=simple | |
| User=www-data | |
| WorkingDirectory=/opt/crypto_dashboard | |
| ExecStart=/usr/bin/python3 /opt/crypto_dashboard/app.py | |
| Restart=always | |
| [Install] | |
| WantedBy=multi-user.target | |
| ``` | |
| 4. **تنظیم Nginx (اختیاری)** | |
| ```nginx | |
| server { | |
| listen 80; | |
| server_name yourdomain.com; | |
| location / { | |
| proxy_pass http://127.0.0.1:7860; | |
| proxy_set_header Host $host; | |
| proxy_set_header X-Real-IP $remote_addr; | |
| } | |
| } | |
| ``` | |
| 5. **فعالسازی** | |
| ```bash | |
| sudo systemctl enable crypto-dashboard | |
| sudo systemctl start crypto-dashboard | |
| sudo systemctl enable nginx | |
| sudo systemctl restart nginx | |
| ``` | |
| --- | |
| ## 📊 مقایسه پلتفرمها | |
| | پلتفرم | رایگان | راحتی | سرعت | Custom Domain | مناسب برای | | |
| |--------|--------|-------|------|---------------|-----------| | |
| | **Hugging Face** | ✅ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ❌ | Demo, Testing | | |
| | **Railway** | 💵 Limited | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ✅ | Production | | |
| | **Render** | ✅ Limited | ⭐⭐⭐⭐ | ⭐⭐⭐ | ✅ | Production | | |
| | **Oracle Cloud** | ✅ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ✅ | Production | | |
| | **VPS** | 💵 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ✅ | Production | | |
| --- | |
| ## 🎯 توصیه بر اساس نیاز | |
| ### برای Demo و Testing | |
| → **Hugging Face Spaces** 🏆 | |
| ### برای Production با بودجه کم | |
| → **Oracle Cloud** (رایگان) یا **Render.com** | |
| ### برای Production حرفهای | |
| → **Railway.app** یا **VPS** | |
| ### برای Maximum Performance | |
| → **VPS اختصاصی** با Nginx | |
| --- | |
| ## 🔧 نکات عمومی | |
| ### SSL Certificate (HTTPS) | |
| ```bash | |
| # با Certbot (Let's Encrypt) | |
| sudo apt install certbot python3-certbot-nginx | |
| sudo certbot --nginx -d yourdomain.com | |
| ``` | |
| ### Monitoring | |
| ```bash | |
| # لاگها | |
| sudo journalctl -u crypto-dashboard -f | |
| # وضعیت سرویس | |
| sudo systemctl status crypto-dashboard | |
| ``` | |
| ### Updates | |
| ```bash | |
| cd crypto_dashboard | |
| git pull | |
| sudo systemctl restart crypto-dashboard | |
| ``` | |
| --- | |
| ## ❓ سوالات متداول | |
| **Q: چرا پس از deploy سایت کار نمیکند؟** | |
| A: Port را چک کنید (باید 7860 باشد) و Logs را بررسی کنید | |
| **Q: چگونه Custom Domain اضافه کنم؟** | |
| A: در Settings پلتفرم خود، Custom Domain را تنظیم کنید | |
| **Q: چرا سرعت کند است؟** | |
| A: Cache را فعال کنید و CDN استفاده کنید | |
| **Q: چگونه Database اضافه کنم؟** | |
| A: SQLite (محلی) یا PostgreSQL (cloud) را اضافه کنید | |
| --- | |
| ## 📞 پشتیبانی | |
| اگر در استقرار مشکل دارید: | |
| 1. Logs را بررسی کنید | |
| 2. Port و Firewall را چک کنید | |
| 3. Dependencies را دوباره نصب کنید | |
| 4. Issue باز کنید | |
| **موفق باشید! 🚀** | |