Fix Docker apply crash and add safe profile test flow

Remove invalid _mirror_manager from daemon.json that prevented Docker from starting. Add 2-minute test apply with auto-rollback, final apply confirmation, emergency-restore CLI/UI, and post-restart Docker health checks.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-10 20:20:10 +03:30
parent 1c9d647787
commit 63d0699cdd
20 changed files with 635 additions and 324 deletions
+21 -5
View File
@@ -71,7 +71,8 @@ GUIDES = {
</ul>
<h5>هشدار</h5>
<p>با restart Docker، containerها (از جمله Dokploy) چند ثانیه قطع می‌شوند. بهتر است در ساعات کم‌ترافیک apply کنید.</p>
<p>با restart Docker، containerها (از جمله Dokploy) چند ثانیه قطع می‌شوند. همیشه ابتدا «تست موقت» را بزنید.</p>
<p>فقط کلیدهای رسمی Docker در <code>daemon.json</code> نوشته می‌شوند — کلیدهای نامعتبر باعث crash شدن Docker نمی‌شوند.</p>
<h5>میرور پیش‌فرض</h5>
<ul>
@@ -131,6 +132,16 @@ GUIDES = {
<h5>پروفایل چیست؟</h5>
<p>مجموعه‌ای از میرورها برای DNS، APT، Docker، GitHub و... که با یک کلیک apply می‌شوند.</p>
<h5>اعمال امن (توصیه‌شده)</h5>
<ol>
<li><strong>تست موقت (۲ دقیقه):</strong> پروفایل اعمال می‌شود. اگر تأیید نکنید، خودکار rollback.</li>
<li>سرویس‌ها (Dokploy، mirror، deploy) را تست کنید.</li>
<li><strong>اعمال نهایی:</strong> از صفحه وضعیت تست، دکمه «نگه‌داشتن تغییرات» را بزنید.</li>
</ol>
<h5>بازگردانی فوری</h5>
<p>اگر دسترسی قطع شد: <code>mirror-manager emergency-restore</code> از SSH — یا دکمه «بازگردانی فوری» در بخش Restore.</p>
<h5>پروفایل‌های پیش‌فرض</h5>
<ul>
<li><strong>آروان کامل:</strong> Shecan + Arvan APT/Docker + GitClone</li>
@@ -139,7 +150,7 @@ GUIDES = {
</ul>
<h5>Rollback</h5>
<p>بعد از apply، پنجره زمانی (پیش‌فرض ۱۵ دقیقه) برای تست دارید. اگر تأیید نکنید، تنظیمات قبلی بازگردانده می‌شود.</p>
<p>تست موقت پیش‌فرض ۲ دقیقه است. اعمال نهایی بدون پنجره rollback — فقط بعد از تست موفق.</p>
""",
},
"settings": {
@@ -163,15 +174,20 @@ GUIDES = {
<h5>Backup اولیه</h5>
<p>در اولین اجرا، snapshot از تنظیمات فعلی سیستم گرفته می‌شود.</p>
<h5>بازگردانی فوری (Emergency)</h5>
<p>یک دستور / یک دکمه — برگشت به آخرین backup قبل از apply (DNS، APT، Docker، ...).</p>
<h5>بازگردانی</h5>
<ul>
<li><strong>emergency-restore:</strong> آخرین backup قبل از apply — سریع‌ترین راه</li>
<li><strong>تنظیمات اولیه:</strong> برگشت به وضعیت قبل از نصب Mirror Manager</li>
<li><strong>backup apply:</strong> برگشت به وضعیت قبل از آخرین apply</li>
<li><strong>backup apply:</strong> برگشت به backup مشخص</li>
</ul>
<h5>از SSH</h5>
<pre>mirror-manager restore --initial
mirror-manager restore --backup /path/to/backup
<pre>mirror-manager emergency-restore
mirror-manager restore --initial
mirror-manager restore --last
mirror-manager disable
mirror-manager enable</pre>
""",