
خودمیزبانی (Self-hosting) معمولاً با چند سرویس ساده آغاز میشود و بهتدریج به چیدمانی پیچیده با بهترین سختافزار ممکن تبدیل میشود؛ روندی که برای تجربهای روانتر و پاسخگویی بهتر سیستم اجتنابناپذیر به نظر میرسد. با این حال، برخی پروژهها با گزینهای ارزانتر اما کارآمد هم به نتیجه میرسند. وقتی صحبت از پشته شبکه خانگی (Home Network Stack) میشود، ذهن به لپتاپی قدیمی، سوئیچهای شبکه یا حتی سرورهای سازمانی میرود؛ قطعاتی که بیتردید کارایی بالاتری ارائه میدهند.
اما یک کاربر کنجکاو تصمیم گرفت همه ابزارهای موردنیازش را روی یک رایانه تکبرد (SBC) به نام رزبری پای زیرو ۲ دبلیو (Raspberry Pi Zero 2 W) مستقر کند. نتیجه، دستگاهی است که همزمان نقش حلوفصلکننده DNS در سطح کل شبکه و مسدودکننده تبلیغات را ایفا میکند و چند ابزار پایش (Monitoring) را نیز در خود جای داده است.
انتخاب ابزارهای درست و سیستمعامل مناسب
به گفته این کاربر، از زمانی که سیستمعامل DietPi را نصب کرده، متقاعد کردن او برای مهاجرت به سیستمعامل دیگری برای رزبری پای دشوار شده است. او مجموعه گسترده ابزارها، بستههای نرمافزاری از پیش پیکربندیشده و ماهیت کممصرف این سیستمعامل را ستوده است. بر پایه این گزارش، DietPi میتواند با تنها حدود ۷۰ مگابایت حافظه اجرا شود که کمترین میزان در آزمونهای این کاربر بوده است؛ در مقایسه، Armbian و نسخه رسمی Raspberry Pi OS Lite هر دو به بیش از ۱۰۰ مگابایت حافظه برای اجرا نیاز داشتند.
برای آمادهسازی کارت حافظه، از ابزار رسمی Raspberry Pi Imager استفاده شد. این کاربر معمولاً شبکه بیسیم و سایر تنظیمات را از پیش پیکربندی میکند تا مستقیماً از طریق SSH به رایانه تکبرد دسترسی داشته باشد، اما این بار یک مبدل USB به اترنت (USB-to-Ethernet Adapter) نیز به رزبری پای زیرو ۲ دبلیو افزوده شد؛ زیرا اتصال پایدارتری فراهم میکند و برای پروژههای شبکهای گزینه بهتری است.
پشتهای متشکل از Pi-hole و Unbound
در گام بعد، پشتهای سبک از Pi-hole و Unbound ساخته شد. Pi-hole وظیفه مسدودسازی درخواستهای DNS را بر عهده دارد و Unbound بهعنوان حلوفصلکننده بازگشتی DNS (Recursive DNS Resolver) عمل میکند. با این ترکیب، دیگر نیازی به اتکا به گوگل یا سایر ارائهدهندگان DNS عمومی نیست. افزون بر این، Tailscale نیز بهعنوان افزودنی ارزشمند به این چیدمان اضافه شد، زیرا دسترسی از راه دور و پشتیبانی از HTTPS را ممکن میسازد. ابزارهای این پشته به پشتیبانی HTTPS نیازی ندارند، اما داشتن چنین گزینهای مغتنم است. Tailscale مستقیماً با یک فرمان curl نصب شد و سپس نوبت به راهاندازی داکر رسید.
همه ابزارها در قالب کانتینرهای داکر
نصب داکر (Docker) و داکر کامپوز (Docker Compose) به لطف ابزار نرمافزاری DietPi بدون دردسر انجام شد. پس از آمادهسازی داکر، Pi-hole و Unbound بهصورت کانتینر مستقر شدند. به گفته این کاربر، پیکربندی تمام تنظیمات شبکه برای متصل کردن Unbound و وادار کردن آن به پردازش درخواستهای DNS از سوی Pi-hole دشوار بود، اما پس از تکمیل، هر دو کانتینر با پورتال وب فعال Pi-hole در حال اجرا بودند.
همچنین تنظیمات DHCP روتر تغییر کرد و نشانی IP رزبری پای زیرو ۲ دبلیو بهعنوان سرور DNS تعیین شد. روتر درخواستهای DNS را به رایانه تکبرد میفرستد و کانتینر روی درگاه ۵۳ (Port 53) به آنها گوش میدهد. بیشتر کاربران تنها Pi-hole را مستقر میکنند و اجازه میدهند فیلتر و حلوفصل DNS را خودش انجام دهد، اما این کاربر از Unbound بهعنوان حلوفصلکننده استفاده میکند تا از ارائهدهندگان عمومی مانند گوگل بینیاز شود.
معمولاً چنین چیدمانی روی یک لپتاپ یا ماشین اختصاصی پیادهسازی میشود، اما این کاربر از عملکرد روان آن برای دستگاههای خانگیاش شگفتزده شده است. به گفته او، دور ماندن از تبلیغات و ردیابها (Trackers) در بیشتر صفحهها لذتبخش است و در صورت استفاده از افزونه مسدودکننده تبلیغات، تجربه کلی بسیار بهتر میشود. Pi-hole نمیتواند تبلیغات درون برنامههایی مانند یوتیوب را مسدود کند، اما به باور او این بهای ناچیزی است.
او یادآور میشود که در خانهاش دستگاههای زیادی درخواست پرسوجوی DNS ندارند؛ تنها رایانه ویندوزی و گوشی او به حلوفصلکننده DNS نیاز دارند و سایر گوشیها بیشتر میان برنامهها و مرورگرهای کماستفاده جابهجا میشوند. بنابراین بار سرور پایین است و در صورت وجود کاربران و دستگاههای متعدد، عملکرد ممکن است متفاوت باشد.
پایش سرور با Beszel و Glance
هرچند میتوان به پورتال وب Pi-hole دسترسی داشت، اما داشتن ابزار پایش جداگانه بهتر است. Prometheus و Grafana گزینههای رایجاند، اما این کاربر از Beszel استفاده میکند؛ زیرا رایانه تکبرد او توان محاسباتی اجرای ابزارهای سنگین پایش را ندارد و Beszel به منابع کمی نیاز دارد. این ابزار میتواند مصرف منابع سیستم را رصد کند و رابط گرافیکی مناسبی برای مشاهده همه چیز دارد. حتی میتوان آن را طوری پیکربندی کرد که هنگام رسیدن مصرف پردازنده یا سایر اجزا به حد مشخصی، هشدار (Alert) صادر کند.
در پایان، افزودن یک داشبورد، همه چیدمان را مرتب و منظم میکند. این کاربر دیگر نیازی ندارد مرتب پنجره SSH باز کند تا کانتینرهای داکر را بررسی کند یا داشبورد Pi-hole را بگشاید. Glance نیز مانند Beszel ابزاری سبک است و یک داشبورد ساده DNS در آن پیکربندی شده است. در سمت چپ، وضعیت همه کانتینرهای داکر در حال اجرا نمایش داده میشود؛ اگر کانتینری از کار افتاده باشد، بلافاصله قابل تشخیص است و میتوان از طریق SSH به رایانه تکبرد متصل شد.
در سمت راست، دو پنل بزرگ قرار دارد. Glance رابط وب Beszel را در یک iframe جای میدهد، دادهها را از عامل (Agent) دریافت و نمایش میدهد؛ بنابراین مصرف پردازنده، حافظه و فضای ذخیرهسازی همراه با جزئیات زمان فعالیت (Uptime) قابل مشاهده است. در زیر آن، ویجت Pi-hole قرار دارد که از طریق فهرست ویجتهای انجمن Glance در دسترس است و نمودارهای اصلی پرسوجوها، موارد مسدودشده و دامنههای پوششدادهشده را نشان میدهد. این داشبورد تعاملی نیست، اما کاربر قصد دارد نمایش کانتینرهای داکر را طوری تغییر دهد که به نشانیهای وب واقعی آنها هدایت شود.
رزبری پای زیرو ۲ دبلیو همچنان غافلگیر میکند
بیشتر پروژهها مانند سرور رسانه یا فضای ذخیرهسازی ابری محلی روی این رایانه تکبرد دچار مشکل میشوند، اما پشته شبکهای این کاربر بدون هیچ مشکلی کار میکند، تأخیر محسوسی ندارد و پاسخگو باقی میماند. او مدتی از این چیدمان استفاده کرده و بهجز زمان قطعی اتصال اینترنت، هیچ مشکلی در بارگذاری صفحهها ندیده است. اکنون همه درخواستهای DNS به رایانه تکبرد سپرده شده و به ارائهدهنده DNS عمومی ارسال نمیشود. این چیدمان بهسختی ۵۰ درصد حافظه و تنها ۱۰ درصد فضای ذخیرهسازی را مصرف میکند؛ بنابراین در صورت نیاز میتوان چند کانتینر سبک دیگر نیز به آن افزود.