# راهنمای انتقال امن امکانات Space به یک Space جدید (بدون خراب شدن) این راهنما برای انتقال امکانات Space در حال اجرا: `Really-amin/Datasourceforcryptocurrency` به یک Space جدید نوشته شده است؛ به‌طوری که مثل Space قبلی (`Datasourceforcryptocurrency-2`) به حالت Paused/Crash نرود. مرجع Space اصلی: [Datasourceforcryptocurrency](https://huggingface.co/spaces/Really-amin/Datasourceforcryptocurrency) --- ## اصول طلایی (برای اینکه خراب نشود) - **Runtime را تغییر ندهید**: اگر Space اصلی Docker است، Space جدید هم **Docker** باشد. - **پورت را ثابت نگه دارید**: در HF Spaces پورت استاندارد **7860** است. - **Entry-point را دستکاری نکنید**: اگر Dockerfile با `uvicorn hf_unified_server:app` بالا می‌آید، همان را نگه دارید. - **اول Space جدید را استیجینگ کنید**: تا وقتی `/api/health` و صفحه اصلی OK نیست، Space جدید را عمومی نکنید. --- ## روش ۱ (پیشنهادی و کم‌ریسک): Duplicate Space 1) داخل صفحه Space اصلی بروید: - [Datasourceforcryptocurrency](https://huggingface.co/spaces/Really-amin/Datasourceforcryptocurrency) 2) گزینه **Duplicate Space** را بزنید (اگر در UI نمایش داده شود). 3) در تنظیمات Duplicate: - **SDK/Runtime = Docker** - Visibility طبق نیاز (Private برای تست بهتر است) 4) صبر کنید تا Build کامل شود. 5) بعد از بالا آمدن: - `https://.hf.space/api/health` باید 200 برگرداند. - `https://.hf.space/docs` باید باز شود (اگر docs فعال است). مزیت: دقیقاً همان سورس و تنظیمات را کپی می‌کند و ریسک «خراب شدن در انتقال» حداقل می‌شود. --- ## روش ۲: انتقال با Git (اگر Duplicate در دسترس نبود) ### A) ساخت Space جدید - یک Space جدید بسازید و **Docker** را انتخاب کنید. ### B) انتقال سورس - سورس Space اصلی را به Space جدید Push کنید (بدون تغییرات اولیه). - بعد از Push، اجازه دهید Build انجام شود. ### C) چک‌های ضروری بعد از Deploy - `GET /api/health` → وضعیت online - `GET /docs` → نمایش Swagger - تست چند endpoint سبک مثل: - `GET /api/market/top` - `GET /api/news?limit=5` --- ## چرا Space قبلی ممکن است Paused شده باشد؟ رایج‌ترین علت‌ها در Docker Spaces: - **Build fail** به دلیل نسخه‌های نامشخص/ناسازگار dependency‌ها - **OOM / کمبود RAM** (خصوصاً با پکیج‌های سنگین مثل `torch`) - **Port mismatch** (مثلاً اپ روی 8000 بالا آمده ولی HF انتظار 7860 دارد) - **Healthcheck fail** (اگر healthcheck تعریف شده و endpoint پاسخ ندهد) --- ## اگر خواستید بعد از انتقال امکانات جدید اضافه کنید قاعده امن: - هر تغییر را در یک commit کوچک انجام دهید. - بعد از هر commit: - Build logs را نگاه کنید - `/api/health` را تست کنید - فقط سپس تغییر بعدی را انجام دهید