بعد از مدت زیاد تصمیم گرفتم که بلاخره راجب هوم لب خونه به صورت جزئی توضیح بدم و کمک کنم شما هم گام به گام با من ستاپ کنید و باهم یادبگیریم چطور بهترین استفاده رو از سخت افزار در دسترس بکنیم. برای اطلاعت بیشتر میتونید پست قبلی که من نوشتم رو هم مطالعه کنید.
سخت افزار مورد نیاز نیاز نیست یک سیستم پیچیده یا یک سرور باشد، شما با داشتن یک لپ تاپ ساده و قدیمی هم میتوانید شروع کنید. فقط کافی است سخت افزار اختصاصی برای این موضوع داشته باشید.
برای اجرای سیستمهای مختلف روی دستگاهتان—چه یک لپتاپ ساده باشد و چه یک سرور بزرگ—به یک مجازیساز نیاز دارید. یکی از گزینههایی که در پست قبلی هم گفتم Proxmox است که بر پایهی لینوکس و با QEMU کار میکند. گزینهی رایج دیگر در بازار کار ESXi است (که نسخههای کرکشدهی آن در ایران فراگیر است). من بیش از ۶ سال است که از Proxmox هم در هوملب و هم در محیط پروداکشن استفاده میکنم و مشکلی ندیدهام.
همچنین برای دیسک هم من یک NAS جداگانه دارم و پراکس ماکس قابلیت اتصال به استوریج خارجی هم با NFS هم با SMB را داراست و به راحتی متصل میشود، بهترین استفاده ی آن برای نگه داری از بکاپ های شما میتواند باشد.


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


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

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


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

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

بعد از انجام مراحل بالا، میتوانید هر اپلیکیشن یا زیرساخت دیگری را که نیاز دارید بهراحتی ستاپ کنید:
ارتباط بین سرویسها با TLS ایمن میشود.
برای پنلها و سرویسها دامنههای داخلی تعریف میکنید و TLS فعال دارید.
ایمیجها و پکیجها را از Nexus میگیرید و از کش لوکال بهره میبرید.
در نهایت، هرچند هستهی کار و زیرساخت اصولی باید خودکار و مبتنی بر IaC باشد، اما همیشه قبل از اتوماسیون، بهتر است یکبار زیرساخت را دستی راهاندازی و مستندسازی کنید تا همهچیز دقیق و شفاف باشد.