فارسی
بکاپ و بازگردانی
بکاپ تنها چیزی را نگه میدارد که دوباره ساخته نمیشود: کلیدهای خصوصی اینترفیسها و اطلاعات ورود همهی مشتریها. اگر اینها از دست بروند، باید برای همهی مشتریها فایل تازه صادر کنید. باینری، پکیجها و گواهی همه جایگزینشدنیاند؛ این یکی نه. با آرشیو بکاپ مثل یک فایل رمز رفتار کنید.
داخلش چیست
یک فایل .tar.gz که اینها را دارد:
wui.db: یک نسخهی سازگار از دیتابیس SQLite که باVACUUM INTOگرفته میشود، نه کپی خامی که ممکن است وسط نوشتن گرفته شود. فقط در بکاپ پنلهایی هست که SQLite دارند. اگر این نسخه گرفته نشود، فایل زندهی دیتابیس به جایش در آرشیو گذاشته نمیشود، چون ممکن است تغییراتی را که هنوز در write-ahead log هستند نداشته باشد؛ در این حالت دامپ زیر دیتابیس را با خود میبرد. بکاپی که هیچکدام از این دو را نداشته باشد نوشته نمیشود و خطایش گزارش میشود.wui-export.json: همهی جدولها به شکل JSON، که از روی اسکیما نوشته میشوند. این فایل در هر بکاپی هست، با هر موتوری. همین نسخه است که بین موتورها و نسخهها جابهجا میشود: ستونی که پنل جدیدتر اضافه کرده روی مقدار پیشفرضش میماند و ستونی که حذف کرده نادیده گرفته میشود.- بقیهی محتوای
/var/lib/wui، مثل PKI و فایلهای سرور OpenVPN و پروفایلهای ساختهشده. خود بکاپها، فایلهای جانبی WAL در SQLite، بازگردانیای که منتظر اعمال است، بهروزرسانیای که منتظر ابزار بهروزرسانی است، وkeys/در آرشیو نمیآیند.
هیچ چیزی در بکاپ، پنلی را که از آن گرفته شده باز نمیکند. کلیدی که نشستها با آن امضا میشوند و رمز بکاپ در /var/lib/wui/keys/ هستند، که نه در بکاپ میرود و نه با بازگردانی عوض میشود. پیش از 3.0 کلید نشست در دیتابیس بود، پس با یک بکاپ میشد بهعنوان مالک وارد پنلش شد. نسخهی 3.0 این کلید را از دیتابیس بیرون میبرد و کلید تازهای میسازد؛ پس هر بکاپی که قبلاً گرفته شده کلیدی دارد که چیزی را باز نمیکند. بعد از بهروزرسانی، همه یک بار دوباره وارد میشوند.
رمزنگاری
در تنظیمات ← پشتیبانگیری یک رمز بکاپ بگذارید تا هر آرشیوی که از آن به بعد گرفته شود با آن رمزنگاری شود. چنین آرشیوی نام ….tar.gz.enc میگیرد، بدون رمز خوانده نمیشود، و اگر ناقص یا دستکاری شده باشد کامل رد میشود. رمز در /var/lib/wui/keys/backup.password نگه داشته میشود؛ نه در دیتابیس و نه در هیچ بکاپی. آرشیوهایی که پیشتر گرفته شدهاند همانطور که بودند میمانند.
- رمز را جای دیگری هم یادداشت کنید. آرشیو رمزنگاریشده فقط جایی بازگردانی میشود که همان رمز تنظیم شده باشد. روی سرور تازه، اول رمز را بگذارید و بعد آرشیو را آپلود کنید.
- بدون رمز، آرشیوها
.tar.gzسادهاند. اگر ربات تلگرام آنها را بفرستد، تا وقتی رمزی گذاشته نشده، هشدارهای امنیتی پنل و توضیح هر آرشیو در چت این را یادآوری میکنند. - قالب رمزنگاری AES-256-GCM است، در تکههای ۶۴ کیلوبایتی که هر کدام به جایگاهش و به آخرین بودن یا نبودنش گره خورده. کلید با scrypt (N=2¹⁵، r=8، p=1) از رمز و یک salt تصادفی برای هر آرشیو ساخته میشود.
دو بکاپی که در یک ثانیه گرفته شوند، مثلاً یک بکاپ دستی کنار یک بکاپ زمانبندیشده، یا کپی ایمنی بازگردانی کنار هر کدام، نامهای جدا میگیرند (…-2.tar.gz) و روی هم نوشته نمیشوند.
گرفتن بکاپ
| کجا | چطور |
|---|---|
| پنل | نمای کلی ← بکاپ و بازگردانی ← دانلود بکاپ؛ یا تنظیمات ← پشتیبانگیری ← همین حالا پشتیبان بگیر، یا دانلود هر کدام از آرشیوهای فهرست. |
| زمانبندی | تنظیمات ← پشتیبانگیری: هر چند وقت پشتیبان گرفته شود و نگهداری. در /var/backups/wui نوشته میشود. |
| ترمینال | منوی w-ui backup و گزینهی 1، یا wui backup create با محیط پنل، که منو خودش فراهم میکند. |
| تلگرام | خودکار، در زمانی که در تنظیمات ← ربات تلگرام ← بکاپ تعیین شده (ربات تلگرام)؛ یا همان لحظه، با دکمهی بکاپ ربات. |
| حذف نصب | پیش از حذف هر چیزی، یک کپی آخر در /root/wui-last-copy-<date>.tar.gz نوشته میشود. |
بازگردانی
بازگردانی هیچوقت روی دادههای زنده باز نمیشود. آرشیو سر تا ته بررسی میشود، اول از وضعیت فعلی یک کپی گرفته میشود، و فایلها کنار پوشهی داده آماده میشوند. راهاندازی بعدی پنل آنها را اعمال میکند، چون تنها لحظهای است که هیچ چیز دیتابیس را باز ندارد.
- از پنل: نمای کلی ← بکاپ و بازگردانی ← انتخاب فایل؛ یا تنظیمات ← پشتیبانگیری ← بازگردانی روی یکی از آرشیوهای فهرست، یا آپلود آرشیو برای آرشیوی از سرور دیگر. پنل خودش ریاستارت میشود و صفحه وقتی پنل برگشت دوباره بار میشود، نه بعد از چند ثانیهی حدسی.
- از ترمینال: منوی
w-ui backupو گزینهی 2، و مسیر فایل را بدهید. یاwui backup restore FILEرا اجرا کنید و بعدsystemctl restart wui.
راه رسیدن به همین پنل هیچوقت عوض نمیشود. پورت، مسیر آدرس، دامنه، فایلهای گواهی، پراکسیهای مورد اعتماد و شنوندهی جداگانهی سرویس سابسکریپشن از همین سرور نگه داشته میشوند، هر چه آرشیو بگوید. قبلاً اینها همراه آرشیو برمیگشتند. در آن حالت آرشیوی از سرور دیگر، یا از همین سرور پیش از عوض شدن پورت یا مسیر، پنل را روی پورتی میبرد که فایروال هرگز باز نکرده بود، زیر مسیری که کسی نداشت؛ یا با مسیر گواهیای که روی این سرور وجود ندارد، اصلاً نمیگذاشت پنل بالا بیاید.
مشتریها، کلیدها و حسابها از آرشیو میآیند: بعد از بازگردانی با مدیر داخل آرشیو وارد میشوید.
بهطور پیشفرض، آدرسهای خود این سرور، یعنی آدرسی که تونلها به مشتریها میگویند به آن وصل شوند، به جای آدرسهای آرشیو نگه داشته میشوند. دلیل معمول بازگردانی روی سرور دیگر این است که سرور اول از دست رفته، و آدرسش هم با آن. برای کلون کردن یک سرور روی سرور دیگر با آدرسهای آرشیو، در خط فرمان از --move-addresses استفاده کنید، یا در پنل آدرسهای همین سرور حفظ شود را خاموش کنید.
بین موتورها و نسخهها
| بکاپ از | بازگردانی در | چه میشود |
|---|---|---|
| SQLite | SQLite | فایل دیتابیس سر جایش برمیگردد: یک کپی دقیق. |
| SQLite | PostgreSQL | دامپ JSON در PostgreSQL بار میشود؛ شناسهها حفظ میشوند و sequenceها از آنها جلوتر برده میشوند. |
| PostgreSQL | PostgreSQL | دامپ JSON بار میشود. |
| PostgreSQL | SQLite | دامپ JSON در یک فایل SQLite تازه بار میشود. |
| W-UI قدیمیتر | W-UI جدیدتر | اول اسکیما بهروز میشود و بعد دادهها در آن قرار میگیرند. |
| W-UI جدیدتر | W-UI قدیمیتر | وقتی قالب دامپ از چیزی که پنل میفهمد جدیدتر باشد، با پیامی روشن رد میشود. اول پنل را بهروز کنید. |
پس انتخاب دیتابیس موقع نصب نهایی نیست. با SQLite نصب کنید، و وقتی تعداد مشتریها زیاد شد، بکاپ بگیرید، نصبکننده را با --db postgres دوباره اجرا کنید و بکاپ را بازگردانی کنید.
جای فایلها
| مسیر | چیست |
|---|---|
/var/backups/wui/ | بکاپهای زمانبندیشده و بکاپهای خود پنل، با سقف نگهداری. بیرون از پوشهی داده است تا بازگردانی رویشان ننویسد و حذف نصب آنها را نگه دارد. |
/var/lib/wui/.restore-pending/ | بازگردانی آمادهشده، که در راهاندازی بعدی اعمال و حذف میشود. |
/var/lib/wui/.restore-import.json | دامپی که منتظر بار شدن است، برای بازگردانی بین موتورها. بعد از بار شدن حذف میشود و اگر بار نشود، با پسوند .failed نگه داشته میشود. |
/root/wui-last-copy-*.tar.gz | کپیای که حذف نصب باقی میگذارد. |
