# Mirror Manager پنل وب فارسی برای مدیریت DNS، میرور APT، Docker Registry، GitHub و pip/npm روی Ubuntu (فوکوس 24.04). ## قابلیت‌ها - CRUD میرورها و پروفایل‌ها - اعمال سراسری تنظیمات روی host (systemd-resolved، apt، docker، git) - تست latency و دسترسی میرورها - Backup خودکار (اولیه + قبل از هر apply) - Rollback با پنجره زمانی (پیش‌فرض ۱۵ دقیقه) - Auto-switch اختیاری per-category - راهنمای فارسی برای هر بخش - CLI برای SSH: restore، enable، disable - **بدون تغییر SSH یا فایروال** --- ## پیش‌نیاز - Ubuntu 18.04 / 22.04 / 24.04 (فوکوس noble) - Docker + Dokploy + Traefik - دسترسی root/privileged برای container --- ## نصب روی Dokploy ### ۱. Clone پروژه روی سرور ```bash git clone /opt/mirror-manager cd /opt/mirror-manager ``` ### ۲. تنظیم `.env` (فقط برای deploy دستی؛ در Dokploy از Environment UI استفاده کنید) ```bash cp .env.example .env nano .env ``` | متغیر | مقدار | |-------|-------| | `MIRROR_DOMAIN` | `mirror.itistan.ir` | | `SECRET_KEY` | رشته تصادفی ۳۲+ کاراکتر | | `ADMIN_PASSWORD` | رمز قوی | ### ۳. Repo Gitea ``` https://git.itistan.ir/mohammadian7/mirror ``` راهنمای کامل Dokploy: [deploy/DOKPLOY.md](deploy/DOKPLOY.md) --- ## نصب روی Dokploy (خلاصه) 1. Push به Gitea → Deploy از Dokploy 2. Environment variables را در Dokploy تنظیم کنید 3. رکورد A: `mirror.itistan.ir` → IP سرور 4. **https://mirror.itistan.ir** --- ## نصب دستی (بدون Dokploy) ```bash docker compose up -d --build ``` Volumeها: - `/etc` → `/host/etc` (برای apply) - `/var/lib/mirror-manager/data` → دیتابیس و backup ### ۴. Traefik / Dokploy در Dokploy یک Application از نوع Docker Compose بسازید یا labelهای Traefik را در `docker-compose.yml` تنظیم کنید: ```yaml traefik.http.routers.mirror-itistan.rule=Host(`mirror.itistan.ir`) ``` ### ۵. نصب CLI روی host ```bash chmod +x mirror-manager deploy/install-cli.sh sudo cp mirror-manager /usr/local/bin/mirror-manager # PYTHONPATH را در /usr/local/bin/mirror-manager-wrapper یا: echo 'export PYTHONPATH=/opt/mirror-manager' | sudo tee /etc/profile.d/mirror-manager.sh ``` --- ## استفاده 1. به **https://mirror.itistan.ir** بروید 2. با `ADMIN_USERNAME` / `ADMIN_PASSWORD` وارد شوید 3. در **اولین ورود** backup اولیه خودکار گرفته می‌شود 4. یک **پروفایل** انتخاب کنید → **تست موقت (۲ دقیقه)** بزنید 5. Dokploy و deploy را تست کنید → **اعمال نهایی** (نگه‌داشتن تغییرات) 6. اگر مشکل پیش آمد: `mirror-manager emergency-restore` از SSH --- ## CLI (از SSH) ```bash # بازگردانی فوری — آخرین backup قبل از apply (توصیه در emergency) mirror-manager emergency-restore # یا معادل: mirror-manager restore --last # بازگردانی تنظیمات اولیه (قبل از نصب Mirror Manager) mirror-manager restore --initial # بازگردانی یک backup مشخص mirror-manager restore --backup /var/lib/mirror-manager/data/backups/20250603_120000_before_apply_1 # غیرفعال / فعال container mirror-manager disable mirror-manager enable # وضعیت mirror-manager status ``` --- ## پروفایل‌های پیش‌فرض | پروفایل | محتوا | |---------|--------| | آروان کامل | Shecan + Arvan APT/Docker + GitClone | | 403 + Shatel | 403 DNS + Shatel APT + GHProxy | | حداقلی | Shecan + Arvan Docker | --- ## میرورهای seed ### DNS Shecan، 403.online، Begzar، Electro + fallback Cloudflare/Google ### APT Arvan، Shatel، Ubuntu Archive ### Docker Arvan Docker Registry ### GitHub GitClone، GHProxy --- ## نکات امنیتی - رمز admin را حتماً عوض کنید - `SECRET_KEY` تصادفی و طولانی - UI را فقط از طریق HTTPS (Traefik) در دسترس بگذارید - قبل از apply با **IP** به SSH وصل شوید (نه hostname) --- ## ساختار پروژه ``` app/ models.py # SQLite models services/ # apply, backup, test, dns, apt, docker, github routes/ # Flask blueprints templates/ # UI فارسی RTL guides.py # راهنمای هر بخش docker-compose.yml Dockerfile mirror-manager # CLI entry ``` --- ## توسعه محلی ```bash python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt set DISABLE_SCHEDULER=1 set HOST_ROOT= python run.py ``` --- ## License MIT