دليل عملي

‏Pi-hole v6 على VPS: حجب الإعلانات والمتتبعين على مستوى DNS

الأمان والمراقبة13 دقيقةً للقراءةعدد الخطوات: 8

‏إذا كنت تشغّل عشرات الخدمات على خادم VPS — ‏n8n و‏Nextcloud و‏Grafana وعدة واجهات برمجية — فكل واحدة منها تستمر في الاتصال بنطاقات التتبع والإعلانات. ‏Pi-hole v6، الصادر في فبراير 2025، يجلب إعادة كتابة معمارية كاملة: لا PHP ولا lighttpd، خادم ويب مدمج مباشرة في ثنائي FTL، وواجهة برمجية REST أصلية تبسّط التكامل في بيئة Docker. يأخذك هذا الدليل من الصفر إلى محلل DNS يعمل على خادم VPS، مؤمّن ضد الكشف العام.

المحتويات· ‏لماذا تستضيف محلل DNS خاص بك Pi-hole على VPS1/10
  1. 01‏لماذا تستضيف محلل DNS خاص بك Pi-hole على VPS
  2. 02‏ما يضيفه Pi-hole فعلياً لبيئة self-hosted
  3. 03‏مستجدات Pi-hole v6 — ما يتغيّر للمستضيفين الذاتيين
  4. 04متطلبات VPS قبل البدء
  5. 05‏نشر Pi-hole v6 باستخدام Docker Compose: الإجراء الكامل
  6. 06الإعداد بعد التثبيت
  7. 07‏Pi-hole v6 مقابل AdGuard Home — مقارنة 2026
  8. 08التصليب: القواعد التي لا يجب إهمالها
  9. 09استكشاف الأخطاء: المشاكل الشائعة
  10. 10‏دمج Pi-hole في منظومة أمانك

‏لماذا تستضيف محلل DNS خاص بك Pi-hole على VPS

‏محلل DNS ذاتي الاستضافة على VPS ليس حكراً على بيئات المختبرات المنزلية. حين تشغّل حاويات وخدمات متعددة على نفس الخادم، يصبح نقطة تحكم مركزية في الشبكة: كل استعلام DNS يمر عبر Pi-hole قبل الوصول إلى الإنترنت، مما يمنحك رؤية وتحكماً لا تتيحهما المحللات العامة.

‏الحجة لصالح VPS بدلاً من Raspberry Pi المحلي بسيطة. يعمل VPS 24 ساعة يومياً، ويمكن الوصول إليه من أي عقدة في شبكة Docker أو شبكة VPN الخاصة بك، ولا يعتمد على توافر شبكتك المنزلية. بالنسبة لمطور يدير خوادم متعددة أو يعمل في تنقل، هذا هو الموقع المنطقي.

‏ما يضيفه Pi-hole فعلياً لبيئة self-hosted

  • ‏حجب على مستوى الشبكة: كل استعلام نحو نطاقات الإعلانات أو التتبع أو البرمجيات الخبيثة يُحجب قبل إنشاء اتصال TCP — لجميع الحاويات على شبكة Docker، دون تعديل كل تطبيق على حدة.
  • ‏سجلات DNS مركزية: لوحة تحكم واحدة تعرض جميع استعلامات DNS من بنيتك التحتية، مما يسهّل تصحيح تطبيق يتصل بخدمة خارجية غير متوقعة.
  • ‏تقليل استهلاك النطاق الترددي: الاستعلامات المحجوبة لا تولّد أي استجابة شبكية. على VPS بحصة نطاق ترددي محدودة، هذا توفير ملموس للبيئات الثقيلة.
  • ‏خصوصية استعلامات DNS: بإقران Pi-hole مع Unbound كمحلل متكرر محلي، لا تمر استعلاماتك بعد الآن عبر محلل طرف ثالث — بل تستعلم خوادم DNS الرسمية مباشرة.
  • ‏تكامل مع بيئة self-hosted: يعمل Pi-hole كخادم DNS محلي لخدماتك، مما يتيح إنشاء إدخالات DNS مخصصة (grafana.myserver.local) دون تعديل /etc/hosts على كل آلة.
  • ‏قوائم حجب مجتمعية: نظام Pi-hole من أغنى البيئات في قوائم الحجب المُصانة — ‏Hagezi و‏oisd و‏Steven Black — تُحدَّث تلقائياً.
  • ‏ترقية v6 غير مقاطِعة: يحافظ Pi-hole v6 على التوافق مع عملاء v5؛ الترقية لا تقطع الخدمة.

‏مستجدات Pi-hole v6 — ما يتغيّر للمستضيفين الذاتيين

‏أُعلن عن Pi-hole v6 في 18 فبراير 2025 على pi-hole.net. هذه إعادة كتابة جوهرية، لا تحديث تدريجي.

‏إزالة PHP و lighttpd. اعتمدت الإصدارة 5 على lighttpd كخادم ويب و PHP لواجهة الإدارة. في v6، يدمج الثنائي pihole-FTL مباشرة خادم ويب مبنياً على Lua. النتيجة: صورة Docker أخف، ولا توجد تبعيات منفصلة للإدارة، وسطح الهجوم أصغر.

‏واجهة برمجية REST أصلية جديدة. واجهة v6 موثّقة ومُصوَّرة. تكشف الإحصائيات وإدارة القوائم والإعداد مباشرة من http://<ip>/api/. في بيئة Docker Compose، يتيح ذلك أتمتة إدارة Pi-hole من سكريبت أو من n8n دون حلول بديلة.

‏متغيرات البيئة FTLCONF_*. تغيّر مخطط الإعداد. المتغير WEBPASSWORD من v5 أُستبدل بـ FTLCONF_webserver_api_password. جميع خيارات إعداد FTL الآن مكشوفة عبر متغيرات FTLCONF_<قسم>_<مفتاح>، مما يجعل docker-compose.yml مكتفياً بذاته وقابلاً للقراءة.

‏وضع Basic / Expert. تميّز واجهة v6 بين الإعدادات الأساسية (الوضع البسيط) والخيارات المتقدمة (وضع الخبير). لنشر VPS، يتيح وضع الخبير التحكم في واجهة الاستماع DNS وإعدادات الأمان.

‏Antigravity (قوائح ترخيص بالاشتراك). على غرار Gravity لقوائم الحجب، يتيح Antigravity الاشتراك في قوائم ترخيص يصونها المجتمع — مفيد لتجنب النتائج الإيجابية الكاذبة على النطاقات الشرعية.

‏منذ إطلاق v6 في فبراير 2025، تبعته عدة تحديثات: ‏FTL v6.5 في فبراير 2026، ‏FTL v6.6 في أبريل 2026، ‏FTL v6.6.1 في أبريل 2026 مع إصلاحات أمنية. صورة Docker الرسمية مُوسومة بـ 2026.06.0 لأحدث إصدار يونيو 2026.

متطلبات VPS قبل البدء

‏Pi-hole v6 مصمَّم ليكون خفيفاً. المتطلبات أدنى بكثير من متطلبات نظام SIEM أو بيئة مراقبة.

‏الحد الأدنى الموصى به من الموارد:
- ‏512 ميجابايت RAM كافٍ للاستخدام المعتدل (بضع حاويات، أقل من 10000 طلب/ساعة). خطط لـ 1 جيجابايت للاستخدام المكثف أو عند تفعيل سجل الاستعلامات الموسّع.
- ‏1 vCPU يكفي. ‏Pi-hole FTL عملية واحدة وكفء.
- ‏4 جيجابايت من القرص كحد أدنى للصورة وقواعد بيانات الاستعلامات.
- ‏صلاحية root على VPS لإدارة Docker وإعداد الشبكة.

‏المنافذ الشبكية:
- ‏53/UDP و53/TCP: منفذ DNS. لا تكشفه للعموم — هذه أهم قاعدة في هذا الدليل.
- ‏80/TCP و443/TCP: واجهة الإدارة، يجب كشفها فقط خلف وكيل عكسي مع المصادقة.

‏المتطلبات البرمجية:
- ‏Docker Engine 24.0+ وDocker Compose v2 (الأمر docker compose بدون شرطة).
- نظام التشغيل: ‏Debian 12 أو Ubuntu 22.04/24.04 LTS.

‏فحص مسبق — المنفذ 53:
‏في إصدارات Debian/Ubuntu الحديثة، يستمع systemd-resolved على المنفذ 53. هذا السبب الأول للفشل عند أول تشغيل لـ Pi-hole. تحقق وعطّل عند الحاجة:

ss -tlunp | grep ':53'
systemctl disable --now systemd-resolved

‏إن عطّلت systemd-resolved، تأكد من أن /etc/resolv.conf يشير إلى محلل يعمل أثناء النشر:

echo 'nameserver 1.1.1.1' > /etc/resolv.conf

‏نشر Pi-hole v6 باستخدام Docker Compose: الإجراء الكامل

  1. تجهيز الخادم وتثبيت Docker

    ‏حدّث النظام وثبّت Docker Engine من المستودع الرسمي:

    apt-get update && apt-get upgrade -y
    curl -fsSL https://get.docker.com | sh
    docker --version && docker compose version

    ‏فعّل Docker عند التشغيل وتحقق من أن Docker Compose v2 يستجيب (الأمر docker compose بدون شرطة):

    systemctl enable --now docker
  2. إنشاء هيكل الدلائل

    ‏أنشئ دليلاً مخصصاً وأحجاماً ثابتة لإعداد Pi-hole وقواعد بياناته:

    mkdir -p /opt/pihole/etc-pihole
    cd /opt/pihole

    ‏تُحافظ هذه الدلائل على إعداد FTL وقوائم Gravity وسجل الاستعلامات. بدونها تبدأ إعادة إنشاء كل حاوية من الصفر.

  3. ‏كتابة docker-compose.yml لـ Pi-hole v6

    ‏أنشئ /opt/pihole/docker-compose.yml بالإعداد التالي. لاحظ استخدام FTLCONF_webserver_api_password (متغير v6) وFTLCONF_dns_listeningMode للتوافق مع شبكة Docker bridge:

    services:
      pihole:
        container_name: pihole
        image: pihole/pihole:2026.06.0
        ports:
          - "127.0.0.1:53:53/tcp"
          - "127.0.0.1:53:53/udp"
          - "127.0.0.1:8080:80/tcp"
        environment:
          TZ: 'Europe/Paris'
          FTLCONF_webserver_api_password: 'غيّر-كلمة-المرور-هذه'
          FTLCONF_dns_listeningMode: 'ALL'
          FTLCONF_dns_upstreams: '1.1.1.1;8.8.8.8'
        volumes:
          - './etc-pihole:/etc/pihole'
        cap_add:
          - SYS_NICE
        restart: unless-stopped

    ‏النقطة الحرجة: 127.0.0.1:53 يربط منفذ DNS بواجهة loopback للمضيف فقط. المحلل قابل للوصول من الخادم نفسه ومن الشبكة الداخلية لـ Docker، لكن ليس من الإنترنت.

  4. ‏تشغيل Pi-hole والتحقق من حالته

    ‏شغّل الحاوية في الخلفية وتحقق من أنها في حالة healthy:

    docker compose up -d
    docker compose ps
    docker compose logs pihole | tail -30

    ‏في أول تشغيل، يُنزّل Pi-hole قوائم Gravity (بضع ثوانٍ). واجهة الويب متاحة على http://127.0.0.1:8080/admin من الخادم نفسه. إن رأيت Pi-hole blocking is enabled، فالنشر يعمل بنجاح.

  5. ‏إعداد DNS على الشبكة الداخلية لـ Docker

    ‏لكي تستخدم حاوياتك Pi-hole كمحلل DNS، عرّف dns في كل خدمة من بيئات Docker Compose الأخرى، أو اضبط خادم Docker عالمياً.

    ‏الخيار أ — لكل خدمة (مُوصى به للبيئات القائمة):

    services:
      my-app:
        image: my-image
        dns:
          - 172.17.0.1

    ‏172.17.0.1 هو IP بوابة شبكة Docker bridge الافتراضية، التي تقابل واجهة المضيف حيث يستمع Pi-hole.

    ‏الخيار ب — خادم Docker عالمي (/etc/docker/daemon.json):

    {
      "dns": ["172.17.0.1", "1.1.1.1"]
    }

    ‏أعد تشغيل Docker بعد التعديل: systemctl restart docker. المحلل الثاني 1.1.1.1 احتياط إن توقف Pi-hole.

  6. ‏عرض لوحة التحكم عبر وكيل عكسي HTTPS

    ‏لا تكشف لوحة تحكم Pi-hole مباشرة على المنفذ 80 العام. استخدم nginx كوكيل عكسي مع شهادة Let's Encrypt:

    server {
        listen 443 ssl;
        server_name pihole.your-domain.com;
    
        ssl_certificate /etc/letsencrypt/live/pihole.your-domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/pihole.your-domain.com/privkey.pem;
    
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    ‏احصل على الشهادة بـ Certbot: certbot --nginx -d pihole.your-domain.com. مصادقة Pi-hole (كلمة المرور في FTLCONF_webserver_api_password) تبقى البوابة الوحيدة.

  7. تأمين المحلل ضد الكشف العام

    ‏محلل DNS مفتوح على الإنترنت هو ناقل لتضخيم DDoS ويمكن لأي شخص استخدامه. تحقق من أن المنفذ 53 لا يمكن الوصول إليه من الخارج.

    ‏التحقق من جهاز بعيد:

    nmap -sU -p 53 <IP_خادم_VPS_الخاص_بك>

    ‏يجب أن يكون المنفذ filtered أو closed. إن كان open، فمحللك عام.

    ‏إغلاق المنفذ 53 بـ ufw:

    ufw deny 53/udp
    ufw deny 53/tcp
    ufw allow from 172.16.0.0/12 to any port 53

    ‏قاعدة allow from 172.16.0.0/12 تسمح لشبكات Docker الداخلية مع حجب حركة المرور الخارجية.

  8. إضافة قوائم الحجب وتفعيل التحديث التلقائي

    ‏واجهة Pi-hole v6 > Lists تتيح إضافة قوائم بعنوان URL. القوائم الموصى بها بعد التثبيت:

    - ‏Hagezi Multi Pro: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.txt
    - ‏oisd Big: https://big.oisd.nl/
    - ‏Steven Black Unified: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

    ‏بعد الإضافة، شغّل تحديث Gravity:

    docker exec pihole pihole -g

    ‏لأتمتة التحديث الأسبوعي، أضف إدخالاً في cron على المضيف:

    0 3 * * 0 docker exec pihole pihole -g >> /var/log/pihole-gravity.log 2>&1

الإعداد بعد التثبيت

‏بمجرد تشغيل Pi-hole وتوجيه خدماتك إليه، بعض التعديلات تزيد الفائدة اليومية.

‏DNS مخصص للخدمات الداخلية. في Pi-hole > Local DNS، يمكنك إنشاء سجلات A تحل الأسماء المحلية: grafana.local ← 127.0.0.1، n8n.local ← 127.0.0.1. هذا يحل محل تعديل /etc/hosts على كل آلة.

‏ضبط مستوى التسجيل. يحتفظ Pi-hole افتراضياً بـ 24 ساعة من سجل الاستعلامات. لتمديده إلى 7 أيام أو تقليصه لحد استهلاك القرص: في Settings > System، عدّل خيار Query log. على VPS بتخزين محدود، تعطيل السجلات التفصيلية (مع الاحتفاظ بالإحصائيات) خيار قابل للتطبيق.

‏لوحة التحكم والإحصائيات. تعرض لوحة v6 في الوقت الفعلي: نسبة الاستعلامات المحجوبة، والنطاقات الأكثر طلباً، والعملاء الأكثر نشاطاً. هذه البيانات مفيدة لتحديد حاوية تُجري طلبات غير معتادة.

‏الترخيص للنتائج الإيجابية الكاذبة. بعض قوائح الحجب صارمة وتحجب نطاقات مشروعة. ‏Pi-hole > Domains > Allow يتيح إضافة استثناءات دون المساس بالقوائم.

‏Pi-hole v6 مقابل AdGuard Home — مقارنة 2026

مرّر الجدول أفقيًا

‏المعيار‏Pi-hole v6‏AdGuard Home
‏المعمارية‏ثنائي FTL مع خادم ويب Lua مدمج — لا PHP ولا lighttpd منذ v6 (فبراير 2025)‏ثنائي Go واحد، متعدد المنصات (Linux و Windows و macOS و OpenWrt و FreeBSD)
‏DNS مشفّر (DoH/DoT/DoQ)‏غير مدمج — يتطلب حاوية Unbound أو cloudflared منفصلة لـ DoH/DoT‏مدمج أصلياً — DoH و DoT و DoQ متاحة دون إعداد إضافي
‏بصمة الذاكرة‏70-150 ميجابايت في الاستخدام الطبيعي، حسب حجم الاستعلامات والسجل المُفعَّل‏50-100 ميجابايت؛ أخف قليلاً في الإعدادات البسيطة
‏المجتمع والقوائم‏أغنى نظام بيئي: مئات القوائم المتوافقة (تنسيق hosts وadblock)، منتديات نشطة، توثيق موسّع‏متوافق مع قوائح تنسيق adblock (uBlock Origin)؛ نظام بيئي ناشئ
‏API والأتمتة‏واجهة برمجية REST أصلية موثّقة في v6؛ إدارة كاملة عبر متغيرات `FTLCONF_*`‏واجهة برمجية REST متاحة؛ إعداد عبر ملف YAML أو واجهة الويب
‏قواعد لكل عميل‏تصفية لكل عميل (IP أو اسم الشبكة)، دون قواعد مدمجة دقيقة لكل جهاز‏قواعد مدمجة لكل عميل وكل مجموعة، مع أدوات رقابة أبوية

التصليب: القواعد التي لا يجب إهمالها

‏لا تكشف المنفذ 53 للعموم أبداً. هذا هو الخطر الرئيسي لمحلل DNS على VPS. منفذ 53 مفتوح يتيح لأي شخص استخدام خادمك كمحلل — وربما كناقل تضخيم DNS في هجوم DDoS. افحص بانتظام بـ nmap -sU -p 53 <IP_VPS> من الخارج.

‏غيّر كلمة المرور الافتراضية. يجب أن يحتوي FTLCONF_webserver_api_password على كلمة مرور قوية. إن أهملته، يولّد Pi-hole كلمة مرور عشوائية ويعرضها في السجلات — مناسب للاختبار، غير مقبول في الإنتاج.

‏حدّث الصورة بانتظام. تضمنت إصدارات Pi-hole v6 في 2026 إصلاحات أمنية (ثغرة رفع صلاحيات محلية في أبريل 2026، تصحيحات XSS في واجهة الويب). أضف فحصاً دورياً:

docker compose pull && docker compose up -d

‏لا DHCP في الإنتاج على VPS. ميزة DHCP في Pi-hole مصممة للشبكات المحلية. على VPS لا فائدة منها، وتفعيلها بالخطأ (cap_add: NET_ADMIN) قد يُنشئ تعارضات شبكية مع بنية المضيف التحتية.

استكشاف الأخطاء: المشاكل الشائعة

‏إليك المشاكل الأكثر شيوعاً عند نشر Pi-hole v6 على VPS، مع الأسباب الدقيقة والحلول.

‏1. المنفذ 53 مستخدم بالفعل — bind: address already in use
‏السبب: systemd-resolved يستمع على 127.0.0.53:53. افحص بـ ss -tlunp | grep ':53'. الحل: عطّل systemd-resolved (systemctl disable --now systemd-resolved) واستبدل /etc/resolv.conf بملف ثابت يشير إلى 1.1.1.1 خلال النشر.

‏2. استعلامات DNS من الحاويات لا تمر بـ Pi-hole
‏السبب: الحاويات تستخدم المحلل الافتراضي لـ Docker (127.0.0.11)، ليس Pi-hole. افحص من حاوية: docker exec <حاوية> cat /etc/resolv.conf. إن أظهر 127.0.0.11، لم يُعدَّ خيار dns: في Compose أو في /etc/docker/daemon.json.

‏3. لوحة التحكم غير قابلة للوصول بعد التشغيل
‏سبب شائع: المنفذ 8080 مرتبط بـ 127.0.0.1 (غير قابل للوصول من الخارج) لكن الوكيل العكسي لم يُعدَّ بعد. افحص محلياً: curl http://127.0.0.1:8080/admin/. إن استجاب، المشكلة في الوكيل العكسي أو شهادة TLS.

‏4. FTLCONF_webserver_api_password يُتجاهل بعد إعادة إنشاء الحاوية
‏السبب: يخزّن Pi-hole الإعداد في /etc/pihole/pihole.toml. إن وُجد هذا الملف في حجم ./etc-pihole بكلمة مرور قديمة، لا يتجاوزه متغير البيئة. الحل: حذف ملف pihole.toml (فقدان الإعداد)، أو تغيير كلمة المرور من واجهة الويب.

‏5. فشل تحديث Gravity — Could not access the internet
‏السبب: حاوية Pi-hole لا تستطيع حل عناوين URL للقوائم، غالباً لأن FTLCONF_dns_upstreams غير مُعدَّ أو لأن الحاوية نفسها تستخدم Pi-hole كمحللها (حلقة). تأكد من أن FTLCONF_dns_upstreams يشير إلى محلل خارجي (1.1.1.1;8.8.8.8) في Compose.

‏دمج Pi-hole في منظومة أمانك

‏Pi-hole طبقة تصفية DNS، ليس نظام كشف عن اختراق. نطاقه دقيق: يعمل على استعلامات أسماء النطاقات قبل إنشاء الاتصال. هو مُكمِّل للأدوات الأخرى، ليس بديلاً عنها.

‏بإقرانه مع ‏Wazuh أو ‏CrowdSec، يتولى Pi-hole التصفية الوقائية بينما تحلل الأدوات الأخرى السلوك الشبكي والنظامي في الوقت الفعلي. حاوية مخترقة تتصل بنطاق قيادة وتحكم معروف ستُحجب بـ Pi-hole — وغياب استجابة DNS قد يُطلق تنبيهاً في Wazuh إن أعددت مراقبة سجلات Pi-hole.

‏بإقرانه مع ‏NetBird أو ‏WireGuard، يصبح Pi-hole محلل DNS لمجمل شبكة VPN الخاصة بك. كل جهاز متصل بالشبكة يستفيد من التصفية، بما في ذلك من محطة عمل بعيدة.

‏لاستضافة Pi-hole على VPS بصلاحية root كاملة وIPv4 مخصص وDocker مثبّتاً مسبقاً، راجع عروض VPS من ServOrbit. يعمل Pi-hole v6 بارتياح على خطة الدخول — الموارد المستهلكة متواضعة وتترك مساحة لباقي بيئتك.

‏مقالات ذات صلة: تحديثات الأمان التلقائية على VPS Debian/Ubuntu، شبكة VPN mesh بدون منافذ مفتوحة مع NetBird، Wazuh SIEM مفتوح المصدر على VPS.

‏خادم VPS لـ Pi-hole وبيئتك المستضافة ذاتياً

‏صلاحية root، IPv4 مخصص، Docker مثبّت مسبقاً. يعمل Pi-hole v6 بارتياح على خطة الدخول ويترك مساحة لباقي بنيتك التحتية.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة