Initial commit

This commit is contained in:
2026-06-03 17:33:19 +03:30
commit 9608342428
48 changed files with 3562 additions and 0 deletions
+192
View File
@@ -0,0 +1,192 @@
# 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 <repo-url> /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. در پنجره rollback تست کنید → **تأیید** یا **rollback**
---
## CLI (از SSH)
```bash
# بازگردانی تنظیمات اولیه (قبل از نصب 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