همیشه SSH را درِ ورودی سرورهای خانگیام میدانستم. هر وقت میخواستم وضعیت یک کانتینر Docker را بررسی کنم، گزارشهایش را بخوانم، فایلی در Compose را ویرایش کنم یا فقط چیزی را جابهجا کنم، نخست سراغ ترمینال میرفتم.
البته انجام هیچیک از این کارها با SSH چندان دشوار نیست، اما هر کار کوچکی مستلزم بهخاطر سپردن فرمانی دیگر یا نصب ابزار تازهای است.
پورتینر، دازل و فایلبراوزر کوانتوم کارهایی را که معمولاً با SSH انجام میدادم، به سه زبانهٔ مرورگر منتقل کردند. این سه در مجموع تنها ۲۸۳ MB از حافظهٔ سرور هومآپس من را مصرف کردند. وقتی چیزی طبق معمول خراب شود، همچنان به SSH نیاز خواهم داشت؛ اما دیگر کارهای ملالآور مدیریتی را در ترمینال انجام نمیدهم.
پورتینر
جایگزین نیمی از فرمانهای همیشگی Docker من شد





سرور هومآپس من یک ماشین مجازی Ubuntu با ۴ GB حافظه است. همین حالا نیز مجموعهای شلوغ از سرویسهای کانتینری، از جمله Homarr، Uptime Kuma، Glances و Dozzle را اجرا میکند و چند صفحهٔ سفارشی HTTP را نیز در دسترس میگذارد.
پیش از نصب Portainer، بررسی همهٔ این سرویسها معمولاً به معنای باز کردن SSH و اجرای دوبارهٔ همان فرمانهای خستهکنندهٔ Docker بود:
docker psto see what’s runningdocker statsto check memory and CPU usedocker inspectto jog my memory of ports, mounts, and restart policiesdocker restartwhen a service inevitably crashes and needs a restart
هیچیک از این فرمانها دشوار نیستند، اما اطلاعاتی پراکنده تحویل میدهند. Portainer همهٔ آنها را در یک صفحه گرد میآورد. فهرست کانتینرهایش وضعیت، ایمیج، استک و تاریخ ایجاد هر سرویس را نشان میدهد و پیشخوان محیط نیز خلاصهای از ایمیجها، والیومها، شبکهها و استکهایم ارائه میکند.
با کلیک روی هر کانتینر، جزئیات بیشتری از جمله پورتها، محلهای اتصال، دادههای مربوط به منابع، گزارشها و ابزارهای کنترل نمایش داده میشود.
برای آزمودن قابلیتهای Portainer، جزئیات کانتینر Homarr را باز کردم و سپس همانجا آن را از نو راه انداختم. به این ترتیب، روند قدیمی SSH ــ پیدا کردن نام دقیق کانتینر، اجرای فرمان راهاندازی مجدد و بررسی دوبارهٔ آن ــ کنار گذاشته شد.
Portainer بهدلیل اطلاعات گستردهای که از راه منوها، شمارندهها، عملیات و اشیا در دسترس میگذارد، بسیار پربارتر از docker ps است. البته برای سروری که فقط چند کانتینر دارد، احتمالاً کمی بیش از اندازه مفصل است.
اما برای سرور هومآپس من که ترکیبی از سرویسهای دائمی و موقت را اجرا میکند، جزئیات ریز Portainer کاملاً بهجا بود. این ابزار در یک نگاه حجم شگفتانگیزی از اطلاعات را نشان میداد؛ از جمله جزئیاتی که پیشتر برای دیدنشان باید بیش از آنچه ذهنم یاری میکرد، فرمان به خاطر میسپردم.
دازل
بررسی گزارش کانتینرها را تحملپذیر کرد

بررسی گزارشها نیز یکی دیگر از کارهایی بود که همیشه مرا به SSH بازمیگرداند. اگر سرویسی بدرفتاری میکرد، معمولاً کار را با docker logs container-name آغاز میکردم و سپس برای کنار گذاشتن خروجیهای قدیمی آن را با --tail، یا برای دنبال کردن لحظهای خطاها با -f دوباره اجرا میکردم.
البته این فرمانها بینقص کار میکنند؛ اما یک کانتینر پرمشغله میتواند آنقدر سریع ترمینال را پر کند که پیدا کردن اطلاعات معنادار دشوار شود. جابهجایی میان سرویسها نیز مستلزم متوقف کردن یک جریان، به خاطر آوردن نام کانتینر بعدی و آغاز دوبارهٔ کار از ابتدا بود.
Dozzle همهٔ این اطلاعات را در یک زبانهٔ مرورگر نگه میدارد. نوار کناری آن تمام کانتینرهای سرور هومآپس من را فهرست میکند و بخش اصلی، خروجی گزارشها را همراه با زمان ثبت هر رویداد، در قالب جریانی خوانا و آسان برای مرور نمایش میدهد.

جابهجایی از Portainer به Dozzle بهخوبی نشان میدهد که این ابزار در عمل چگونه کار میکند. پس از آنکه کانتینر پیشخوان Homarr را در Portainer از نو راه انداختم، آن را در Dozzle باز کردم و خروجی راهاندازی را دیدم. یک کانتینر عملیات را انجام داده بود و دیگری بررسی نتیجهٔ آن را بسیار آسان میکرد.
Dozzle وظیفهای بسیار مشخص و محدود دارد، اما گزارشهایش را بههیچوجه نمیتوان ابتدایی دانست. جزئیات آنها برای عیبیابی کاملاً کافی است و هر زمان که پای انتخاب در میان باشد، از دنبال کردن خروجی در یک نشست SSH بهترند.
فایلبراوزر کوانتوم
از نانو و SCP بهتر عمل میکند

کارهای کوچک SSH برایم از همه ناخوشایندترند؛ کارهایی مانند یافتن پروژهٔ درست Docker با cd و ls، باز کردن فایل Compose در nano یا بارگذاری فایل با scp. فایلبراوزر کوانتوم کاری کرد که این پوشهها بیشتر شبیه فایلهای معمولی روی میزکارم باشند.
در نمای پوشهها، services را باز کردم، فایل موجود docker-compose.yml را برگزیدم و محتوایش را در ویرایشگر داخلی خواندم. برای انجام همین کار در ترمینال، باید مسیر را به خاطر میسپردم، فایل را با nano باز میکردم و مراقب میبودم تورفتگیهای YAML را ناخواسته بههم نزنم.

آزمایش بارگذاری از این هم سادهتر بود. در ویندوز یک یادداشت نگهداری ساختم و آن را مستقیماً از مرورگر در services بارگذاری کردم. برای کارهای محلی و روزمره در آزمایشگاه خانگی، این روش از کپی امن (SCP) و دردسرهای نوشتن مسیرهایش بهتر بود. از کارخواههای انتقال فایل مانند WinSCP هم آسانتر به نظر میرسید، چون از پیش نشست احرازشدهای داشتم.

البته یک کاستی آشکار وجود دارد، هرچند برای کاربردهای آزمایشگاه خانگی چندان مهم نیست. اتصال مستقیم HTTP من دادههای بارگذاریشده را رمزگذاری نمیکرد، درحالیکه SCP از دادههای در حال انتقال روی SSH محافظت میکرد. به همین دلیل، پیش از استفاده از Quantum در شبکهای نامطمئن، آن را پشت HTTPS یا Tailscale قرار میدهم.
فقط پوشههایی را سوار کنید که رابط وب به آنها نیاز دارد. من /home/home-labs/docker را در اختیارش گذاشتم، نه کل سامانهٔ فایل میزبان را.
SSH is still my emergency exit
آسانی کار، این پیشخوانها را بیخطر نمیکند

این همه آسودگی، یک کاستی امنیتی بزرگ نیز به همراه دارد. Portainer و Dozzle هر دو از راه /var/run/docker.sock. با Docker ارتباط برقرار میکنند این سوکت آنقدر اختیار دارد که بتواند کل میزبان Docker را کنترل کند؛ بنابراین، دسترسیدادن یک برنامهٔ وب به آن موضوع کماهمیتی نیست.
FileBrowser Quantum نیز میتواند با مشکلات امنیتی روبهرو شود، زیرا در هر پوشهای که درون آن سوار کنم توان نوشتن دارد.
بااینحال، چون همهٔ این رابطها در شبکهٔ خانگی مورداعتمادم قرار دارند، با احراز هویت محافظت میشوند و Tailscale نیز برای دسترسی از راه دور آماده است، نگرانی چندانی ندارم. با وجود این، هرگز درگاههای خام HTTP آنها را در معرض اینترنت قرار نمیدهم.
این ابزارها همچنین هنگام از کار افتادن لایهٔ زیرین کاری از پیش نمیبرند. هنوز برای کارهای زیر به SSH نیاز دارم:
- تعمیر یا راهاندازی دوبارهٔ خود سرویس پسزمینهٔ Docker
- رفع مشکلات مالکیت و مجوزهای دسترسی
- تغییر قواعد UFW یا شبکه
- انجام نگهداری و بهروزرسانیهای Linux
این پیشخوانها بههیچوجه جای دانش مدیریت سامانه را نمیگیرند؛ تنها وقتی سرور سالم است، کارهای خستهکننده و غیرضروری ترمینال را کنار میزنند. هر اختلالی، از قطع برق گرفته تا پیکربندی نادرست، باعث میشود دوباره بهعنوان راهحل پشتیبان سراغ SSH بروم.
بنابراین، هرچند هنگام بروز مشکل همچنان به SSH اعتماد میکنم، دیگر برای هر بررسی کوچک و روزمره آن را باز نمیکنم.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Gregory Gibson است. مشاهده مقاله اصلی