Files
mirror/app/guides.py
T
2026-06-03 17:33:19 +03:30

188 lines
7.4 KiB
Python

GUIDES = {
"dns": {
"title": "راهنمای DNS",
"summary": "تنظیم DNS از طریق systemd-resolved",
"content": """
<h5>DNS چیست؟</h5>
<p>DNS آدرس دامنه‌ها (مثل github.com) را به IP تبدیل می‌کند. در ایران برای دسترسی به سرویس‌های فیلترشده از DNSهای داخلی استفاده می‌شود.</p>
<h5>چه کاری انجام می‌دهد؟</h5>
<ul>
<li>یک فایل drop-in در <code>/etc/systemd/resolved.conf.d/mirror-manager.conf</code> ایجاد می‌کند</li>
<li>سرویس <code>systemd-resolved</code> را restart می‌کند</li>
<li>فایل SSH دست‌نخورده می‌ماند</li>
</ul>
<h5>DNSهای پیش‌فرض</h5>
<ul>
<li><strong>Shecan:</strong> 178.22.122.100, 185.51.200.2</li>
<li><strong>403.online:</strong> 10.202.10.202, 10.202.10.102</li>
<li><strong>Begzar:</strong> 185.55.226.26, 185.55.227.27</li>
</ul>
<h5>نکات مهم</h5>
<ul>
<li>اگر با IP به SSH وصل می‌شوید، تغییر DNS معمولاً SSH را قطع نمی‌کند</li>
<li>قبل از apply، backup خودکار گرفته می‌شود</li>
<li>پنجره rollback به شما اجازه تست می‌دهد</li>
</ul>
""",
},
"apt": {
"title": "راهنمای APT",
"summary": "تنظیم مخزن Ubuntu برای apt update/install",
"content": """
<h5>APT چیست؟</h5>
<p>مدیر بسته Ubuntu. برای نصب و آپدیت پکیج‌های سیستم از مخزن (mirror) استفاده می‌کند.</p>
<h5>چه کاری انجام می‌دهد؟</h5>
<ul>
<li>فایل <code>/etc/apt/sources.list</code> را با میرور انتخابی جایگزین می‌کند</li>
<li>codename سیستم (noble/jammy/bionic) را خودکار تشخیص می‌دهد</li>
<li>دستور <code>apt-get update</code> را برای تست اجرا می‌کند</li>
</ul>
<h5>میرورهای پیش‌فرض</h5>
<ul>
<li><strong>Arvan:</strong> mirror.arvancloud.ir/ubuntu</li>
<li><strong>Shatel:</strong> mirror.shatel.ir/ubuntu</li>
</ul>
<h5>نسخه‌های Ubuntu</h5>
<ul>
<li>24.04 → noble (فوکوس اصلی)</li>
<li>22.04 → jammy</li>
<li>18.04 → bionic</li>
</ul>
""",
},
"docker": {
"title": "راهنمای Docker Registry",
"summary": "تنظیم registry-mirrors برای pull ایمیج",
"content": """
<h5>Registry Mirror چیست؟</h5>
<p>وقتی <code>docker pull</code> می‌زنید، درخواست از mirror ایرانی عبور می‌کند و سرعت بیشتر و قطعی کمتر می‌شود.</p>
<h5>چه کاری انجام می‌دهد؟</h5>
<ul>
<li>فایل <code>/etc/docker/daemon.json</code> را ویرایش می‌کند</li>
<li>کلید <code>registry-mirrors</code> را تنظیم می‌کند</li>
<li>سرویس Docker را restart می‌کند</li>
</ul>
<h5>هشدار</h5>
<p>با restart Docker، containerها (از جمله Dokploy) چند ثانیه قطع می‌شوند. بهتر است در ساعات کم‌ترافیک apply کنید.</p>
<h5>میرور پیش‌فرض</h5>
<ul>
<li><strong>Arvan:</strong> docker.arvancloud.ir</li>
</ul>
""",
},
"github": {
"title": "راهنمای GitHub",
"summary": "تنظیم git برای clone/pull از GitHub",
"content": """
<h5>مشکل GitHub</h5>
<p>معمولاً <code>git pull</code> و <code>git clone</code> از GitHub کند یا timeout می‌شود.</p>
<h5>چه کاری انجام می‌دهد؟</h5>
<ul>
<li>در <code>~/.gitconfig</code> یک rule از نوع <code>insteadOf</code> اضافه می‌کند</li>
<li>آدرس github.com به mirror انتخابی redirect می‌شود</li>
<li>SSH clone (git@github.com) هم به HTTPS mirror تبدیل می‌شود</li>
</ul>
<h5>تست</h5>
<p>بعد از apply، دستور <code>git ls-remote</code> روی repo نمونه اجرا می‌شود.</p>
<h5>میرورهای پیش‌فرض</h5>
<ul>
<li><strong>GitClone:</strong> gitclone.com/github.com</li>
<li><strong>GHProxy:</strong> mirror.ghproxy.com</li>
</ul>
""",
},
"pip": {
"title": "راهنمای pip",
"summary": "تنظیم index-url برای pip install",
"content": """
<h5>pip چیست؟</h5>
<p>مدیر بسته Python. فایل <code>/etc/pip.conf</code> برای تنظیم سراسری استفاده می‌شود.</p>
<h5>میرور پیش‌فرض</h5>
<ul>
<li><strong>Arvan PyPI:</strong> mirror.arvancloud.ir/pypi/simple</li>
</ul>
""",
},
"npm": {
"title": "راهنمای npm",
"summary": "تنظیم registry برای npm install",
"content": """
<h5>npm چیست؟</h5>
<p>مدیر بسته Node.js. فایل <code>/root/.npmrc</code> برای تنظیم registry سراسری استفاده می‌شود.</p>
""",
},
"profiles": {
"title": "راهنمای پروفایل‌ها",
"summary": "ترکیب چند تنظیم در یک کلیک",
"content": """
<h5>پروفایل چیست؟</h5>
<p>مجموعه‌ای از میرورها برای DNS، APT، Docker، GitHub و... که با یک کلیک apply می‌شوند.</p>
<h5>پروفایل‌های پیش‌فرض</h5>
<ul>
<li><strong>آروان کامل:</strong> Shecan + Arvan APT/Docker + GitClone</li>
<li><strong>403 + Shatel:</strong> DNS 403 + Shatel APT</li>
<li><strong>حداقلی:</strong> فقط DNS + Docker</li>
</ul>
<h5>Rollback</h5>
<p>بعد از apply، پنجره زمانی (پیش‌فرض ۱۵ دقیقه) برای تست دارید. اگر تأیید نکنید، تنظیمات قبلی بازگردانده می‌شود.</p>
""",
},
"settings": {
"title": "راهنمای تنظیمات",
"summary": "Auto-switch و rollback",
"content": """
<h5>Auto-switch</h5>
<p>اگر فعال باشد، برنامه به صورت دوره‌ای میرور فعال هر بخش را تست می‌کند. در صورت fail، به بهترین میرور جایگزین switch می‌کند.</p>
<h5>Rollback خودکار</h5>
<p>بعد از apply، تا پایان پنجره زمانی می‌توانید تأیید کنید. در غیر این صورت backup قبلی restore می‌شود.</p>
<h5>محدودیت switch</h5>
<p>حداکثر تعداد switch خودکار در روز قابل تنظیم است (پیش‌فرض: ۳).</p>
""",
},
"restore": {
"title": "راهنمای بازگردانی",
"summary": "Restore backup اولیه یا backupهای قبلی",
"content": """
<h5>Backup اولیه</h5>
<p>در اولین اجرا، snapshot از تنظیمات فعلی سیستم گرفته می‌شود.</p>
<h5>بازگردانی</h5>
<ul>
<li><strong>تنظیمات اولیه:</strong> برگشت به وضعیت قبل از نصب Mirror Manager</li>
<li><strong>backup apply:</strong> برگشت به وضعیت قبل از آخرین apply</li>
</ul>
<h5>از SSH</h5>
<pre>mirror-manager restore --initial
mirror-manager restore --backup /path/to/backup
mirror-manager disable
mirror-manager enable</pre>
""",
},
"dashboard": {
"title": "راهنمای داشبورد",
"summary": "نمای کلی وضعیت سیستم",
"content": """
<h5>داشبورد</h5>
<p>وضعیت فعلی DNS، APT، Docker و GitHub را نشان می‌دهد. آخرین apply و rollback pending هم نمایش داده می‌شود.</p>
""",
},
}