ویرگول
ورودثبت نام
محمدرضا ملاصالحی
محمدرضا ملاصالحیمهندسی کامپیوتر دانشگاه علامه طباطبایی ، عاشق کامپیوتر ، برنامه نویس ، دواپس ، اصرار بر متن باز
محمدرضا ملاصالحی
محمدرضا ملاصالحی
خواندن ۳ دقیقه·۶ ماه پیش

هوم‌لب – گام اول: آماده‌سازی و استانداردسازی زیرساخت

بعد از مدت زیاد تصمیم گرفتم که بلاخره راجب هوم لب خونه به صورت جزئی توضیح بدم و کمک کنم شما هم گام به گام با من ستاپ کنید و باهم یادبگیریم چطور بهترین استفاده رو از سخت افزار در دسترس بکنیم. برای اطلاعت بیشتر میتونید پست قبلی که من نوشتم رو هم مطالعه کنید.

سخت افزار مورد نیاز نیاز نیست یک سیستم پیچیده یا یک سرور باشد، شما با داشتن یک لپ تاپ ساده و قدیمی هم میتوانید شروع کنید. فقط کافی است سخت افزار اختصاصی برای این موضوع داشته باشید.

مجازی ساز

برای اجرای سیستم‌های مختلف روی دستگاه‌تان—چه یک لپ‌تاپ ساده باشد و چه یک سرور بزرگ—به یک مجازی‌ساز نیاز دارید. یکی از گزینه‌هایی که در پست قبلی هم گفتم Proxmox است که بر پایه‌ی لینوکس و با QEMU کار می‌کند. گزینه‌ی رایج دیگر در بازار کار ESXi است (که نسخه‌های کرک‌شده‌ی آن در ایران فراگیر است). من بیش از ۶ سال است که از Proxmox هم در هوم‌لب و هم در محیط پروداکشن استفاده می‌کنم و مشکلی ندیده‌ام.

همچنین برای دیسک هم من یک NAS جداگانه دارم و پراکس ماکس قابلیت اتصال به استوریج خارجی هم با NFS هم با SMB را داراست و به راحتی متصل میشود، بهترین استفاده ی آن برای نگه داری از بکاپ های شما میتواند باشد.

Terra Master F2-223
Terra Master F2-223
strage in proxmox
strage in proxmox

قالب‌ها و راه‌اندازی سریع سیستم‌عامل

برای جلوگیری از وقت‌گیر شدن نصب هر سیستم‌عامل، کافی است از تمپلیت‌های Proxmox به‌همراه Cloud-Init استفاده کنید. با این ترکیب، یک بار تمپلیت می‌سازید و بعد هر بار فقط مقادیر Cloud-Init را عوض می‌کنید و ماشین مجازی جدیدتان آماده است.

تمپلیت های ماشین مجازی
تمپلیت های ماشین مجازی
Cloud-init یه ماشین ستاپ شده
Cloud-init یه ماشین ستاپ شده

با تغییر مقادیر Cloud-Init، به‌سادگی می‌توانید VMهای جدید را ستاپ کنید.

مدیریت پکیج و کانتینر

در هوم‌لب معمولاً نیاز نیست خودتان زیرساخت آینه‌ی پکیج‌ها را نگه دارید، چون اغلب آن‌ها روی اینترنت در دسترس‌اند. اما در ایران به‌خاطر تحریم و فیلترینگ، دسترسی مستقیم همیشه ممکن نیست و مجبورید از پروکسی استفاده کنید. ستاپ خودکار پروکسی با Ansible کار سختی نیست، ولی من ترجیح می‌دهم کنترل کامل داشته باشم و در صورت نیاز حتی زیرساخت را بدون اینترنت بالا بیاورم.

پنل نکسوز
پنل نکسوز

به همین دلیل از Nexus Repository استفاده کرده‌ام. Nexus می‌تواند پکیج‌ها و ایمیج‌ها را از منابع اصلی (مثل Docker Hub و …) پروکسی و کش کند.

پکیج منیجر APT در حال استفاده از نکسوز
پکیج منیجر APT در حال استفاده از نکسوز
استفاده از رجیستری نکسوز برای داکر
استفاده از رجیستری نکسوز برای داکر

این کار علاوه بر دورزدن تحریم/فیلترینگ، کمک می‌کند در صورت کندی یا قطعی اینترنت، ایمیج‌ها و پکیج‌های پرتکرار به‌صورت لوکال کش باشند.

سرور صدور گواهی (CA)

برای داشتن دامنه‌های مختلف در زیرساخت، و این‌که مجبور نباشید برای تک‌تک دامنه‌ها سلف‌ساین صادر کنید، به یک سرور CA نیاز دارید. همه‌ی دامنه‌های من زیرمجموعه‌ی homelab.local هستند که یک دامنه‌ی فرضی و خارج از اینترنت است. به همین خاطر Root CA شما به‌صورت پیش‌فرض روی دستگاه‌ها مورد اعتماد نیست و باید گواهی آن را روی کلاینت‌ها اضافه کنید. مزیت داشتن CA اختصاصی این است که فقط یک گواهی ریشه را به دستگاه‌ها می‌دهید و بقیه‌ی زیر‌دامنه‌ها به‌طور خودکار معتبر می‌شوند.

من برای سادگی از CFSSL (ابزار شرکت Cloudflare) استفاده می‌کنم. با یک درخواست HTTP می‌توانم گواهی موردنیاز هر سرویس را بگیرم و تمدیدشان هم آسان است.

نمونه‌ی درخواست گواهی با CFSSL
نمونه‌ی درخواست گواهی با CFSSL

سرور DNS

برای مدیریت راحت دامنه‌های داخلی، یک DNS سرور لازم دارید. هر سرویسی می‌تواند باشد، اما به‌نظر من Pi-hole با تنظیمات پیش‌فرض مناسب و کاربری ساده انتخاب خوبی است. راه‌اندازی آن راحت است و تنظیمات کاربردی زیادی هم دارد.

نمونه تنظیم DNS
نمونه تنظیم DNS

نتیجه‌ی نهایی

بعد از انجام مراحل بالا، می‌توانید هر اپلیکیشن یا زیرساخت دیگری را که نیاز دارید به‌راحتی ستاپ کنید:

  • ارتباط بین سرویس‌ها با TLS ایمن می‌شود.

  • برای پنل‌ها و سرویس‌ها دامنه‌های داخلی تعریف می‌کنید و TLS فعال دارید.

  • ایمیج‌ها و پکیج‌ها را از Nexus می‌گیرید و از کش لوکال بهره می‌برید.

در نهایت، هرچند هسته‌ی کار و زیرساخت اصولی باید خودکار و مبتنی بر IaC باشد، اما همیشه قبل از اتوماسیون، بهتر است یک‌بار زیرساخت را دستی راه‌اندازی و مستندسازی کنید تا همه‌چیز دقیق و شفاف باشد.

زیرساختvirtualization
۵
۰
محمدرضا ملاصالحی
محمدرضا ملاصالحی
مهندسی کامپیوتر دانشگاه علامه طباطبایی ، عاشق کامپیوتر ، برنامه نویس ، دواپس ، اصرار بر متن باز
شاید از این پست‌ها خوشتان بیاید