5519a9d93b6fbe6af28e46d9748ffb0611fca05d
Co-authored-by: Cursor <cursoragent@cursor.com>
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 پروژه روی سرور
git clone <repo-url> /opt/mirror-manager
cd /opt/mirror-manager
۲. تنظیم .env (فقط برای deploy دستی؛ در Dokploy از Environment UI استفاده کنید)
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
نصب روی Dokploy (خلاصه)
- Push به Gitea → Deploy از Dokploy
- Environment variables را در Dokploy تنظیم کنید
- رکورد A:
mirror.itistan.ir→ IP سرور - https://mirror.itistan.ir
نصب دستی (بدون Dokploy)
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 تنظیم کنید:
traefik.http.routers.mirror-itistan.rule=Host(`mirror.itistan.ir`)
۵. نصب CLI روی host
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
استفاده
- به https://mirror.itistan.ir بروید
- با
ADMIN_USERNAME/ADMIN_PASSWORDوارد شوید - در اولین ورود backup اولیه خودکار گرفته میشود
- یک پروفایل انتخاب و اعمال کنید
- در پنجره rollback تست کنید → تأیید یا rollback
CLI (از SSH)
# بازگردانی تنظیمات اولیه (قبل از نصب 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
توسعه محلی
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
Description
Languages
Python
69.3%
HTML
28.1%
Dockerfile
1.7%
Shell
0.6%
CSS
0.3%