# 🚀 FourSat Offline Deployment این دایرکتوری شامل scripts و مستندات برای deploy کردن سرویس‌های FourSat **بدون نیاز به اینترنت** است. ## ⚡ Quick Start ### گزینه 1: Setup خودکار (پیشنهادی) **روی ماشینی با Docker و اینترنت:** ```bash cd /home/masoud/Apps/project/FourSat/deployment ./setup-offline-complete.sh ``` این اسکریپت: - ✅ Images را pull می‌کند - ✅ Export می‌کند به `.tar` - ✅ به server transfer می‌کند - ✅ در containerd server import می‌کند - ✅ تمام! ### گزینه 2: Setup دستی اگر Docker روی این ماشین نیست، مستندات کامل را بخوانید: ```bash cat OFFLINE-SETUP-GUIDE.md ``` --- ## 📁 فایل‌های مهم ### 🎯 اسکریپت‌های اصلی - **`setup-offline-complete.sh`** ⭐ - Setup کامل خودکار (نیاز به Docker) - **`export-import-images.sh`** - Export/Import دستی images - **`OFFLINE-SETUP-GUIDE.md`** 📚 - راهنمای کامل قدم به قدم ### 📖 مستندات - **`README.md`** - این فایل - **`QUICK-REFERENCE.md`** - مرجع سریع commands - **`DEPLOYMENT-GUIDE.md`** - راهنمای deployment - **`SERVER-SETUP-GUIDE.md`** - تنظیمات server - **`CHANGES-SUMMARY.md`** - لیست تغییرات انجام شده - **`SETUP-INSTRUCTIONS.md`** - دستورالعمل‌های setup ### 🛠️ اسکریپت‌های کمکی - `pull-base-images.sh` - Pull کردن base images - `save-images.sh` - ذخیره images به tar - `load-images.sh` - بارگذاری images از tar - `cache-nuget-packages.sh` - Cache کردن NuGet packages - `build-all-offline.sh` - Build تمام سرویس‌ها offline - `cleanup.sh` - پاکسازی فایل‌های build - `test-services.sh` - تست سرویس‌های deploy شده - `k8s-deploy.sh` - Deploy به Kubernetes - `k8s-health-check.sh` - بررسی سلامت deployments - `quick-start.sh` - Setup تعاملی - `server-cache-images.sh` - Cache images روی server - `load-cached-images.sh` - بارگذاری cached images - `verify-cache.sh` - بررسی cache - `pull-images-to-node.sh` - Pull به Kubernetes node --- ## 🔍 چک‌لیست Setup - [ ] **Base images در containerd server** (روی node نه pod) - [ ] **Workflows بدون proxy** تنظیم شده‌اند - [ ] **DNS = "0.0.0.0"** برای جلوگیری از دسترسی به اینترنت - [ ] **DOCKER_BUILDKIT=0** برای استفاده از legacy builder - [ ] **Test یک workflow** برای اطمینان از کار کردن offline --- ## 🏗️ معماری Deployment ``` ┌─────────────────────────────────────────┐ │ Kubernetes Cluster (194.5.195.53) │ │ │ │ ┌───────────────────────────────────┐ │ │ │ Node (containerd) │ │ │ │ ├─ mcr.microsoft.com/dotnet/* │ │ │ │ └─ nginx:alpine │ │ │ └───────────────────────────────────┘ │ │ ▲ │ │ │ images available to pods │ │ │ │ │ ┌──────┴──────────────────────────┐ │ │ │ gitea-runner pod │ │ │ │ ├─ dind (Docker-in-Docker) │ │ │ │ └─ runner (Gitea Actions) │ │ │ └─────────────────────────────────┘ │ └─────────────────────────────────────────┘ ``` **کلید موفقیت**: Images باید در **containerd روی node** باشند، نه در pod! --- ## 🐛 عیب‌یابی ### ❌ Workflow هنوز download می‌کند؟ ```bash # بررسی images روی server ssh root@194.5.195.53 "ctr -n k8s.io images list | grep mcr.microsoft.com" ``` اگر خالی است، setup را دوباره اجرا کنید. ### ❌ Build با error می‌خورد؟ ```bash # بررسی logs workflow در Gitea # اگر "TLS handshake timeout" می‌بینید → DNS هنوز active است # اگر "image not found" می‌بینید → images در containerd نیستند ``` ### ❌ Import به containerd کار نمی‌کند? ```bash # مطمئن شوید namespace درست است ssh root@194.5.195.53 "ctr namespaces list" # باید k8s.io را ببینید # برای import همیشه از -n k8s.io استفاده کنید: ctr -n k8s.io images import /path/to/image.tar ``` --- ## 📞 Support مشکل دارید? مستندات کامل را بخوانید: ```bash # راهنمای کامل setup offline cat OFFLINE-SETUP-GUIDE.md # مرجع سریع commands cat QUICK-REFERENCE.md # راهنمای deployment cat DEPLOYMENT-GUIDE.md ``` --- ## ✨ ویژگی‌ها - ✅ **کاملاً Offline** - هیچ download در حین build - ✅ **خودکار** - یک اسکریپت برای setup کامل - ✅ **مستند شده** - راهنماهای جامع فارسی - ✅ **تست شده** - روی Kubernetes با k3s - ✅ **سریع** - build بدون تاخیر network --- **نوشته شده برای پروژه FourSat** 🛰️