🌐 راهنمای استقرار (Deployment Guide)
این فایل شامل دستورالعمل کامل برای استقرار داشبورد کریپتو در پلتفرمهای مختلف است.
📋 فهرست
- Hugging Face Spaces
- Railway.app
- Render.com
- Oracle Cloud (رایگان)
- Vercel
- Docker (محلی)
- VPS / سرور اختصاصی
1. Hugging Face Spaces
🎯 مزایا
- ✅ رایگان
- ✅ راهاندازی سریع
- ✅ URL عمومی
- ✅ مناسب برای demo
📝 مراحل استقرار
روش 1: استفاده از Docker (توصیه میشود)
ایجاد Space جدید
- به huggingface.co/spaces بروید
- روی "Create new Space" کلیک کنید
- نام Space را وارد کنید
- SDK را روی Docker تنظیم کنید
آپلود فایلها
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تنظیم Port در فایل
Dockerfileمطمئن شوید که port 7860 استفاده میشود:CMD ["python", "app.py"]
روش 2: بدون Docker
- ایجاد فایل
app.pyدر روت - ایجاد پوشه
templates/و قرار دادنindex.html - ایجاد
requirements.txt - 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
📝 مراحل استقرار
ثبت نام
- به railway.app بروید
- Sign up با GitHub
Deploy از GitHub
# Push پروژه به GitHub git init git add . git commit -m "Initial commit" git push origin mainایجاد Project در Railway
- New Project
- Deploy from GitHub repo
- انتخاب repository
تنظیمات (اختیاری)
# متغیرهای محیطی PORT=7860 HOST=0.0.0.0Deploy
- Railway به صورت خودکار deploy میکند
- URL عمومی دریافت میکنید
💰 هزینه
- Free tier: $5 credit/month (کافی برای این پروژه)
- پس از اتمام: $5-10/month
3. Render.com
🎯 مزایا
- ✅ Free tier
- ✅ راهاندازی ساده
- ✅ SSL رایگان
- ✅ Auto-deploy
📝 مراحل استقرار
ثبت نام
New Web Service
- Connect GitHub repository
- یا Manual Deploy
تنظیمات
Name: crypto-dashboard Environment: Python 3 Build Command: pip install -r requirements.txt Start Command: python app.pyEnvironment Variables
PORT=7860Deploy
- Create Web Service
⚠️ نکته
Free tier ممکن است پس از مدتی inactive شود (sleep mode)
4. Oracle Cloud (رایگان)
🎯 مزایا
- ✅ رایگان برای همیشه
- ✅ 2 VM instances
- ✅ 1GB RAM هر کدام
- ✅ 100GB storage
📝 مراحل استقرار
ثبت نام در Oracle Cloud
- cloud.oracle.com
- نیاز به کارت اعتباری (شارژ نمیشود)
ایجاد VM Instance
- Compute > Instances > Create Instance
- Shape: VM.Standard.E2.1.Micro (Free)
- Image: Ubuntu 22.04
نصب Python
ssh ubuntu@YOUR_VM_IP sudo apt update sudo apt install python3 python3-pip -yDeploy پروژه
# آپلود فایلها 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نصب به عنوان Service
sudo nano /etc/systemd/system/crypto-dashboard.serviceمحتوا:
[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فعالسازی:
sudo systemctl enable crypto-dashboard sudo systemctl start crypto-dashboardباز کردن 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 نیاز به تنظیمات اضافی دارد.
📝 نیاز به:
- ایجاد
vercel.json - استفاده از
@vercel/python - تبدیل به Serverless Functions
توصیه: برای این پروژه از Railway یا Render استفاده کنید.
6. Docker (محلی)
📝 مراحل
Build Image
docker build -t crypto-dashboard .Run Container
docker run -p 7860:7860 crypto-dashboardبا Docker Compose
ایجاد
docker-compose.yml:version: '3.8' services: crypto-dashboard: build: . ports: - "7860:7860" restart: alwaysاجرا:
docker-compose up -d
7. VPS / سرور اختصاصی
📝 مراحل (Ubuntu/Debian)
نصب Dependencies
sudo apt update sudo apt install python3 python3-pip nginx -yآپلود پروژه
cd /opt sudo git clone YOUR_REPO cd crypto_dashboard sudo pip3 install -r requirements.txtایجاد Systemd Service
sudo nano /etc/systemd/system/crypto-dashboard.serviceمحتوا:
[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تنظیم 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; } }فعالسازی
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)
# با Certbot (Let's Encrypt)
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
Monitoring
# لاگها
sudo journalctl -u crypto-dashboard -f
# وضعیت سرویس
sudo systemctl status crypto-dashboard
Updates
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) را اضافه کنید
📞 پشتیبانی
اگر در استقرار مشکل دارید:
- Logs را بررسی کنید
- Port و Firewall را چک کنید
- Dependencies را دوباره نصب کنید
- Issue باز کنید
موفق باشید! 🚀