من از Docker برای میزبانی شخصی برنامههای گوناگونی استفاده میکنم؛ از مجموعه کامل ابزارهای PDF مانند Stirling PDF گرفته تا Nextcloud برای ذخیرهسازی ابری. Docker همچنین جایگزینی عالی برای ماشینهای مجازی متداول است. بااینحال، حس میکنم در میان این همه کانتینر باکیفیت Docker، هنوز حتی به لایههای زیرین هم نرسیدهام.
آخر هفته گذشته، حسابی سرگرم آزمایش چند کانتینر Docker شدم؛ کانتینرهایی که اگر تازه با Docker آشنا شدهاید و از آن در محیط خانگی استفاده میکنید، پیشنهاد میکنم همین آخر هفته امتحانشان کنید.
تیلاسکیل
شبکه خصوصی مش برای اتصال همه دستگاهها





Tailscale یک شبکه خصوصی مجازی مش مبتنی بر WireGuard است که امکان دسترسی به سرویسهای خودمیزبان را از هر مکانی فراهم میکند. من چند کانتینر Docker را در خانه اجرا میکردم، اما فقط هنگام اتصال به وایفای خانگی میتوانستم به آنها دسترسی داشته باشم. هدایت درگاه یکی از راهها بود، ولی هم خطر نسبتاً زیادی داشت و هم بیدلیل پیچیده بود.
کانتینر Docker مربوط به Tailscale این مشکل را بهآسانی برطرف میکند. پس از راهاندازی، به شبکه خصوصی tailnet شما میپیوندد و همه دستگاههای عضو آن را، فارغ از موقعیت فیزیکیشان، در دسترس قرار میدهد. حالا میتوانم از داخل یک کافه یا حتی با گوشی متصل به نقطه اتصال همراه، بدون تنظیم حتی یک قانون هدایت درگاه، به سرویسهای خودمیزبانم دسترسی داشته باشم.
این کانتینر با دیگر کانتینرهای Docker نیز بهخوبی هماهنگ میشود. با استفاده از network_mode: service:tailscale میتوانید هر کانتینری را به فضای نام شبکه Tailscale متصل کنید. بهاینترتیب، بهجای آنکه یک برنامه وب را روی درگاهی محلی در معرض دسترسی قرار دهید، میتوانید آن را با نام میزبانی مرتب و خوانا در Tailscale ارائه کنید؛ حتی اگر Tailscale Serve را فعال کنید، گواهی Let's Encrypt نیز در اختیارتان خواهد بود. طرح رایگان از حداکثر ۱۰۰ دستگاه پشتیبانی میکند که برای هر محیط خانگی بیش از اندازه کافی است.
ادگارد هوم
مسدودسازی سراسری تبلیغات و ردیابها از راه DNS

اگر تابهحال آرزو کردهاید بدون نصب جداگانه چیزی روی هر دستگاه، تبلیغات را در همه وسایل خانه مسدود کنید، AdGuard Home ارزش بررسی دارد. این سرور DNS رایگان و متنباز، تبلیغات و ردیابها را در سطح شبکه پالایش میکند. کافی است در تنظیمات DNS روتر، نشانی IP کانتینر را وارد کنید تا درخواستهای DNS همه دستگاههای شبکه، از گوشی گرفته تا تلویزیون هوشمند، پالایش شوند.
پیشتر از Pi-hole استفاده کرده بودم و عملکرد خوبی داشت، اما AdGuard Home چند قابلیت آماده دارد که Pi-hole بهطور پیشفرض ارائه نمیکند. مهمترین آنها برای من، پشتیبانی داخلی از DNS رمزگذاریشده است. در حالت عادی، درخواستهای DNS شما بهصورت متن ساده جابهجا میشوند؛ یعنی شرکت ارائهدهنده اینترنت میتواند همه دامنههایی را که جستوجو میکنید ببیند. AdGuard Home بهطور بومی از DNS-over-HTTPS (DoH) و DNS-over-TLS (DoT) پشتیبانی میکند تا این درخواستها بدون نیاز به ابزارهای اضافی خصوصی بمانند.
قابلیت کاربردی دیگر، امکان تنظیم جداگانه برای هر کارخواه است. میتوانید برای دستگاههای مختلف شبکه، قوانین پالایش متفاوتی تعیین کنید. برای نمونه، من روی تلویزیون اتاق نشیمن پالایش سختگیرانهتری اعمال کردهام، درحالیکه رایانه کاریام از مجموعه قوانین سبکتری بهره میبرد. AdGuard Home برای موضوعاتی مانند قمار و شبکههای اجتماعی نیز دستههای ازپیشتنظیمشدهای برای مسدودسازی دارد؛ بنابراین بدون درگیری با تکتک دامنهها، ابزار مناسبی برای نظارت والدین است.
پیپرلس-انجیایکس
دیجیتالیسازی و جستوجوی همه اسناد کاغذی

کشویی پر از رسید، قبض و نامه دارم که همیشه به خودم میگویم روزی مرتبشان خواهم کرد. Paperless-ngx دقیقاً همان راهکاری بود که برای ساماندادن این آشفتگی کاغذی نیاز داشتم. این سامانه متنباز مدیریت اسناد، روی مدارک پویششده یا بارگذاریشده تشخیص نوری نویسهها یا OCR انجام میدهد و آنها را به متن قابل جستوجو تبدیل میکند.
راهاندازی این سامانه به سه کانتینر نیاز دارد: خود Paperless-ngx، یک پایگاه داده PostgreSQL و Redis برای صفبندی کارهای پسزمینه. شاید زیاد به نظر برسد، اما پس از پیکربندی پرونده Docker Compose، کانتینرها همه کارها را هماهنگ با یکدیگر انجام میدهند. کافی است رسید پویششدهای را در پوشه consume بیندازید تا Paperless آن را بردارد، OCR را اجرا کند و سند را بایگانی کند. همچنین میتوانید اسناد را مستقیماً از راه رابط وب بارگذاری کنید.
همچنین میتوانید پوشه consume را بهصورت یک درایو شبکه نگاشت کنید تا هر دستگاهی در شبکه ــ یا از راه Tailscale، اگر آن را راهاندازی کرده باشید ــ بتواند فایلها را مستقیماً از مدیر فایل به Paperless بفرستد.
آپتایم کوما
پایشگر وضعیت خودمیزبان برای همه سرویسها





وقتی چند کانتینر Docker در حال اجرا دارید، پرسش بعدی این است: از کجا بفهمم یکی از آنها از کار افتاده است؟ پاسخ، Uptime Kuma است. این ابزار سرویسهای شما را زیر نظر میگیرد و بهمحض آنکه یکی از آنها دیگر پاسخ ندهد، آگاهتان میکند.
راهاندازی آن یکی از سادهترین استقرارهای Docker بود که تاکنون انجام دادهام: تنها یک کانتینر و یک فایل Compose کافی است تا سرویس روی درگاه ۳۰۰۱ در دسترس قرار بگیرد. نکته کلیدی، سوار کردن سوکت Docker بهعنوان یک volume است؛ کاری که به Uptime Kuma امکان میدهد کانتینرهای دیگر را با نامشان شناسایی و پایش کند. بنابراین لازم نیست نشانیهای IP و درگاههای همهچیز را دنبال کنید؛ کافی است نام کانتینر را وارد کنید تا پایش آن آغاز شود.
هر پایشگر تنظیمی برای تعداد تلاشهای مجدد دارد که از هشدارهای اشتباه بر اثر اختلالهای کوتاهمدت جلوگیری میکند. برای سرویسهای داخلی و حیاتی، مانند ابر خصوصی و دیگر کانتینرهای Docker که شخصاً روی یک رایانه رومیزی قدیمی میزبانی میکنم، آن را روی ۰ میگذارم؛ برای سرویسهای عمومی نیز که ممکن است گهگاه در یک بررسی پاسخ ندهند، مقدار ۲-۳ را برمیگزینم. اعلانها را میتوان از راه سرویسهای گوناگونی فرستاد. من آنها را بهصورت اعلان فشاری روی گوشیام دریافت میکنم تا اگر چیزی از کار افتاد، ظرف چند دقیقه باخبر شوم.
البته باید در نظر داشت که خود Uptime Kuma یک نقطه شکست واحد است. اگر دستگاهی که این سرویس روی آن اجرا میشود از کار بیفتد، درباره از کار افتادن دیگر سرویسهای همان دستگاه نیز هشداری دریافت نخواهید کرد. برای یک سامانه خانگی، این سازشی منطقی است؛ اما برای هر سرویس حیاتی در محیط عملیاتی، به نمونه دومی نیاز دارید که در جای دیگری اجرا شود.
سینکتینگ
همگامسازی همتابههمتای فایلها، بینیاز از فضای ابری

پیشتر از Nextcloud برای ساخت یک فضای ذخیرهسازی ابری شخصی استفاده کردهام و پس از پیکربندی، بهخوبی کار میکند. اما برای همگامسازی ساده فایلها میان دو دستگاه، بیش از اندازه سنگین و پیچیده است. Syncthing پوشهها را مستقیماً و بهصورت همتابههمتا میان دستگاهها همگام نگه میدارد، بیآنکه سرویس ابری واسطهای در میان باشد.
اجرای آن در Docker منطقی است، زیرا هم جدا از بقیه سامانه میماند و هم میتوان آن را بهآسانی میان سختافزارهای گوناگون جابهجا کرد. من آن را با نگاره Docker ارائهشده از سوی linuxserver.io روی دو دستگاه اجرا کردهام. هر کانتینر به یک پوشه پیکربندی و یک پوشه «فایلهای من» اشاره میکند که از میزبان روی آن سوار شدهاند. رابط وب روی درگاه ۸۳۸۴ بارگذاری میشود؛ در آنجا با ردوبدل کردن شناسه دستگاهها، آنها را به یکدیگر پیوند میدهید و سپس پوشههای مشخصی را میانشان به اشتراک میگذارید.
همگامسازی واقعاً دوسویه است و هیچ کارساز مرکزیای وجود ندارد که تصمیم بگیرد کدام نگارش «درست» است. این روش همتابههمتا همچنین باعث میشود فایلهایتان هرگز از کارساز شخص ثالثی عبور نکنند؛ مزیتی مهم برای حریم خصوصی در مقایسه با سرویسهای همگامسازی ابری.
اگر قصد راهاندازی آن را دارید، در برخی سامانههای NAS باید مطمئن شوید کاربر کانتینر به پوشه اشتراکی دسترسی کامل دارد. نادیده گرفتن این مرحله به خطاهای «دسترسی مجاز نیست» میانجامد؛ خطاهایی که هنگام راهاندازی اولیه ممکن است بهآسانی از چشم دور بمانند.
خودمیزبانی؛ دنیایی که ارزش غرق شدن دارد
تقریباً همه این کانتینرهای Docker راهحلی برای مشکلاتی ارائه میدهند که از آغاز مسیر خودمیزبانی با آنها روبهرو بودهام. راهاندازی برخی از آنها آسان است، اما نصب بعضی دیگر کمی دانش فنی میخواهد. AdGuard Home، Syncthing و Tailscale احتمالاً سه پیشنهاد نخست من هستند، زیرا در هر سامانه خانگی به کار میآیند؛ وقتی هم چند مورد از آنها را به راه انداختید، Uptime Kuma جایگاه طبیعی خود را پیدا خواهد کرد.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Tashreef Shareef است. مشاهده مقاله اصلی