لماذا عارض سجلّات Docker قائم على المتصفح
سير عمل Docker CLI المعياري — docker ps، ثم docker logs -f <container> — مناسب لحاوية واحدة على خادم واحد. لكنه ينهار في اللحظة التي تشغّل فيها عدة حاويات، أو تحتاج إلى ربط السجلّات عبر الخدمات، أو تريد منح زميل رؤية بوضع القراءة فقط دون مفتاح SSH. يحلّ Dozzle هذه الثلاث جميعاً: علامة تبويب واحدة في المتصفح تُظهر كل حاوية على المضيف، تنقر لتتابع أياً منها، ويرشّح البحث في الزمن الحقيقي البثّ دون مغادرة الصفحة. ولأن Dozzle يقرأ مقبس Docker فقط ولا يكتب أبداً على القرص، فليس هناك ما يُصان، ولا قاعدة بيانات للنسخ الاحتياطي، ولا تكلفة تخزين.
ما الذي يمنحك إياه Dozzle
- بثّ السجلّات الحيّ عبر WebSocket — دون استقصاء، ودون تأخير، ومتابعة فورية لأي حاوية.
- بحث بالنص الكامل وترشيح بالتعابير النمطية مباشرة في بثّ السجلّات، لكل حاوية.
- عرض مقسّم متعدّد الحاويات — ثبّت عدة حاويات جنباً إلى جنب لربط الأحداث في الزمن الحقيقي.
- وصول إلى مقبس Docker بوضع القراءة فقط — لا يستطيع Dozzle تشغيل أي حاوية أو إيقافها أو تعديلها.
- أقل من 10 MB من الذاكرة في وضع الخمول — عبء ضئيل، آمن للإضافة إلى أي خادم VPS جارٍ.
- وضع وكيل اختياري متعدّد المضيفات — محور Dozzle واحد يجمّع السجلّات من عدة مضيفات Docker.
- دعم مدمج للمصادقة الأساسية وOIDC لتقييد الوصول على المستخدمين المصرّح لهم.
المتطلبات
خادم VPS بنظام Ubuntu 22.04 (أو Debian 12) مع تثبيت Docker مسبقاً. يحتاج Dozzle إلى أقل من 10 MB من الذاكرة ولا يحتاج إلى أي مساحة قرص — فهو عديم الحالة تماماً. لا يلزم اسم نطاق بشكل صارم: يمكن الوصول إلى Dozzle على المنفذ 8080 عبر عنوان IP الخاص بخادمك. إذا أردت HTTPS ونطاقاً فرعياً مخصّصاً (logs.yourdomain.com)، فضَع وكيلاً عكسياً Caddy أو Nginx أمامه.
انشر Dozzle على خادم VPS الخاص بك
اسحب Dozzle وشغّله
اتصل عبر SSH وشغّل أمر Docker واحداً: docker run -d --restart=always -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock:ro --name dozzle amir20/dozzle:latest. تُحمّل الراية :ro المقبس بوضع القراءة فقط — يستطيع Dozzle قراءة السجلّات فحسب، لا التحكم في الحاويات. حجم الصورة نحو 20 MB عند السحب الأول. يبدأ Dozzle فوراً دون أي تهيئة أولية.
افتح وحدة تحكم السجلّات
انتقل إلى http://<your-server-ip>:8080. يُدرج الشريط الجانبي الأيسر كل حاوية قيد التشغيل بالاسم. انقر أي حاوية لبدء متابعة سجلّاتها حيّاً. استخدم شريط البحث في الأعلى للترشيح بكلمة مفتاحية أو الصِق تعبيراً نمطياً للترشيح المتقدم.
فعّل المصادقة
افتراضياً، يكون Dozzle مفتوحاً لأي شخص يستطيع الوصول إلى المنفذ 8080. أضِف المصادقة الأساسية بتمرير متغيّرات البيئة: --env DOZZLE_USERNAME=admin --env DOZZLE_PASSWORD=<strong-password>. لعمليات النشر ضمن فريق، هيّئ OIDC بإنشاء ملف تهيئة dozzle.yml وتحميله عند /data/config.yaml داخل الحاوية. كحدّ أدنى، قيّد المنفذ 8080 على عنوان IP الخاص بك: ufw allow from <your-ip> to any port 8080.
اختياري: HTTPS عبر Caddy
لتقديم Dozzle عبر HTTPS عند logs.yourdomain.com، ثبّت Caddy (apt install caddy) وأنشئ /etc/caddy/Caddyfile بالمحتوى: logs.yourdomain.com { reverse_proxy localhost:8080 }. شغّل systemctl reload caddy ويُصدِر Caddy تلقائياً شهادة Let's Encrypt. وجّه سجل DNS من نوع A لـ logs.yourdomain.com إلى عنوان IP الخاص بخادم VPS أولاً.
اختياري: وكلاء متعدّدو المضيفات
لمراقبة الحاويات على عدة خوادم، شغّل Dozzle في وضع الوكيل على كل مضيف بعيد: docker run -d --restart=always -p 7007:7007 -v /var/run/docker.sock:/var/run/docker.sock:ro --name dozzle-agent amir20/dozzle:latest agent. على نسخة Dozzle الرئيسية، أضِف --env DOZZLE_REMOTE_AGENT=<agent-ip>:7007 لكل مضيف بعيد. تظهر جميع المضيفات بعدها كعُقد منفصلة في الشريط الجانبي الأيسر.
أول تسجيل دخول
يفتح Dozzle مباشرةً على سجلات حاوياتكم، دون أي بيانات دخول. اعتبروا هذا العنوان سرياً واحموه قبل مشاركته.
اقرِن Dozzle بـ Beszel لرؤية كاملة للحاويات
يُظهر لك Dozzle *ما* الذي تطبعه الحاوية. ويُظهر Beszel *مقدار* ما تستهلكه من CPU وذاكرة وقرص، مع رسوم بيانية تاريخية وتنبيهات. انشر كليهما على خادم VPS نفسه — Dozzle لتصحيح السجلّات الحيّ، وBeszel لمراقبة اتجاهات الموارد — فتحصل على منظومة مراقبة كاملة ومُستضافة ذاتياً للحاويات بأقل من 60 MB من الذاكرة إجمالاً.