چطور کابوس تایپ کردن IP و پورتهای هوملب را برای همیشه حل کردم؟

تا حالا شده برای باز کردن ابزارهایی مثل Jellyfin یا Home Assistant توی شبکه خونیتون، مجبور بشید یک آدرس IP طولانی به همراه یک پورت عجیب و غریب مثل 192.168.0.x:8097 رو دستی وارد کنید؟ قشنگ مثل یک شکنجه قرون وسطاییه، مگه نه؟ تازه اگر مودم ریست بشه یا کابلتونو جابجا کنید، همه چیز بههم میریزه و Bookmarkهاتون از کار میفتن. اما توی این مقاله میخوام بهتون بگم چطور توی یک آخر هفته تونستم این کلاف سردرگم رو با استفاده از ابزارهای خفن باز کنم و حالا خیلی شیک فقط با تایپ کردن jellyfin.internal کارم رو راه بندازم.
نگاهی به وضعیت هوملب من: قبل و بعد از پاکسازی
قبل از این پاکسازی، شبکه من یک شلوغپلوغی به تمام عیار بود. یک مودم اصلی، یک روتر TP-Link که شبکه هوملب رو میچرخوند و کلی دستگاه که هر کدوم برای خودشون یک IP پویا میگرفتن. دستگاههایی مثل ZimaBoard که ۲۴ ساعته روشنن و کارهای سنگین انجام میدن، در کنار ZimaCube که برای هوش مصنوعی استفاده میکنم و برای قبض برق هم که شده اکثر اوقات خاموشه.
nn

nn

اما حالا چی؟ آدرس تمام دستگاههای اصلی رو ثابت کردم، روی ZimaBoard سرویس DNS و یک reverse proxy راه انداختم و برای هر سرویس یک اسم باحال و مشخص گذاشتم.
ایده اصلی در یک نگاه: استفاده از AdGuard و Nginx Proxy Manager
کل این جادو روی دوتا ابزار سوار میشه: اولی AdGuard Home که نقش سرور DNS شبکه رو داره و اسمهایی مثل jellyfin.internal رو به IP تبدیل میکنه. دومی Nginx Proxy Manager که چک میکنه ببینه چه نامی رو خواستید و درخواست رو هدایت میکنه به پورت درست و حسابی خودش، چون AdGuard به تنهایی نمیتونه با پورتها کار کنه.
ترکیب این دوتا ابزار یعنی اینکه هر سرویس جدیدی که بیارید بالا، فقط یک تنظیم DNS تو AdGuard میخواد و یک هاست پروکسی تو Nginx؛ تمام!
گام اول: دادن IP ثابت به دستگاههای اصلی
کل این تشکیلات روی این چرخ میچرخه که IPها تغییر نکنن. اگر IP سرور DNS عوض بشه، کل هوملب میپکه! پس اول رفتم سراغ تنظیم DHCP reservation روی روتر TP-Link خودم. اگر هم خواستید توی لینوکس آدرس MAC رو پیدا کنید، کافیه توی Terminal این دستور رو بزنید:
ip link show
با این کار خیالتون راحت میشه که هیچ گوشی یا لپتاپی قرار نیست بیاد روی IPهای رزرو شده شما چادر بزنه.
گام دوم: نصب AdGuard Home روی دستگاه همیشه روشن
چون AdGuard باید همیشه سر پا باشه، اون رو روی ZimaBoard نصب کردم که ۲۴ ساعته روشنه. توی ZimaOS نسخه Host رو نصب کردم تا مستقیماً به پورت ۵۳ بچسبه و IP واقعی کلاینتها رو ببینه. موقع نصب، دستور wget ارور داد، پس با خیال راحت از curl استفاده کردم:
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/bigbeartechworld/big-bear-scripts/master/generate-adguard-home-config/run.sh)"
حواتون باشه که آوردن sudo تو این دستور اجباریه؛ وگرنه اسکریپت بدون اینکه بفهمید خطا میده.
گام سوم: معرفی AdGuard به کل شبکه
حالا باید به روتر بفهمیم که از این به بعد DNS پیشفرض ما کیه. تو تنظیمات روتر، DNS اولیه رو گذاشتم روی IP مربوط به ZimaBoard یعنی 192.168.0.4 و از 1.1.1.1 به عنوان پشتیبان استفاده کردم تا اگر سِروِر خوابید، اینترنت قطع نشه.
گام چهارم: ساختن نامهای داخلی با DNS rewrites
اینجا جاییه که اسمها زنده میشن. توی AdGuard از بخش DNS rewrites میتونید یک دامنه سفارشی مثل jellyfin.internal رو به IP مورد نظرتون وصل کنید. چرا دامنه .internal؟ چون توسط ICANN رسماً برای شبکههای خصوصی رزرو شده و هیچوقت با وبسایتهای واقعی تداخل پیدا نمیکنه.
گام پنجم: مدیریت پورتها با Nginx Proxy Manager
چون DNS پورتها رو نمیفهমে، ما به یک reverse proxy نیاز داریم تا درخواستها رو از پورت ۸۰ بگیره و بفرسته به پورت اصلی برنامهها. با نصب Nginx Proxy Manager (NPM) روی ZimaBoard، خیلی راحت از طریق یک رابط وب زیبا، دامنهها رو به پورتهای اصلی مثل 8097 وصل کردم و کلاً کار با پورتهای سخت و طاقتفرسا رو بوسیدم گذاشتم کنار!

