آموزش نصب Pi-hole

https://negarnovin.com/docs/how-to-deploy-pi-hole-dns-sinkhole-service/ · آخرین به‌روزرسانی: · نویسنده: نگارنوین · سایت: نگارنوین · 8 دقیقه مطالعه

📌 خلاصه (TL;DR)

آموزش نصب Pi-hole How to Deploy Pi-hole – DNS Sinkhole Service Pi-hole یک برنامه مسدودکننده تبلیغات و ردیاب اینترنتی در سطح شبکه لینوکس است

📊 حقایق کلیدی

URLhttps://negarnovin.com/docs/how-to-deploy-pi-hole-dns-sinkhole-service/
تاریخ انتشار2026-02-17
آخرین به‌روزرسانی2026-07-29
نویسندهنگارنوین
ناشرنگارنوین
زبانفارسی (fa-IR)
تعداد کلمات1581
نوع صفحهبرگه

📄 محتوای کامل

نحوه نصب سرویس Pi-hole – DNS Sinkhole برای فعال کردن سرویس امن DNS sinkhole، Pi-hole را با Docker Compose و Traefik راه‌اندازی کنید.

Pi-hole یک برنامه مسدودکننده تبلیغات و ردیاب اینترنتی در سطح شبکه لینوکس است که به عنوان یک گودال DNS عمل می‌کند. با مسدود کردن تبلیغات در سطح DNS، از رسیدن محتوای ناخواسته به دستگاه‌های کلاینت جلوگیری می‌کند، پهنای باند را ذخیره می‌کند و حریم خصوصی را در کل شبکه بهبود می‌بخشد – از جمله دستگاه‌هایی که از افزونه‌های مرورگر پشتیبانی نمی‌کنند، مانند تلویزیون‌های هوشمند و برنامه‌های تلفن همراه.

سرور مجازی کانادا

این مقاله نحوه استقرار Pi-hole را در اوبونتو ۲۴.۰۴ با استفاده از Docker Compose نشان می‌دهد. این پشته از Traefik برای ارائه یک رابط HTTPS امن برای داشبورد مدیریت استفاده می‌کند، در حالی که سرویس DNS برای ارائه درخواست‌های کلاینت به پورت‌های استاندارد گوش می‌دهد.

پیش نیازها

قبل از شروع:

  • به عنوان یک کاربر غیر ریشه با امتیازات sudo به یک سرور اوبونتو ۲۴.۰۴ دسترسی داشته باشید.
  • داکر و داکر کامپوز را نصب کنید.
  • یک نام دامنه، مانند pihole.example.com, را طوری پیکربندی کنید که به آدرس IP عمومی سرور شما اشاره کند.

آزادسازی پورت ۵۳

سرورهای DNS با استفاده از پورت ۵۳ ارتباط برقرار می‌کنند. به طور پیش‌فرض، اوبونتو ۲۴.۰۴ سرویس DNS داخلی خود به نام systemd-resolved را روی این پورت اجرا می‌کند. شما باید این سرویس داخلی را غیرفعال کنید تا Pi-hole بتواند کنترل پورت ۵۳ را در دست بگیرد.

  1. سرویس systemd-resolvedرا متوقف کنید. consoleCopy
    $ sudo systemctl stop systemd-resolved
  2. سرویس را غیرفعال کنید تا هنگام راه‌اندازی مجدد، دوباره شروع نشود. consoleCopy
    $ sudo systemctl disable systemd-resolved
  3. فایل پیکربندی DNS موجود را حذف کنید. consoleCopy
    $ sudo rm /etc/resolv.conf
  4. برای اطمینان از اینکه خود سرور همچنان می‌تواند برای دانلود به‌روزرسانی‌ها به اینترنت متصل شود، باید سرور را طوری پیکربندی کنید که از یک ارائه‌دهنده DNS عمومی استفاده کند. یک فایل پیکربندی DNS جدید ایجاد کنید. consoleCopy
    $ echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf

    این پیکربندی به سرور شما می‌گوید که درخواست‌های DNS خود را به 1.1.1.1,یک سرور DNS عمومی ارائه شده توسط Cloudflare، ارسال کند.

تنظیم ساختار دایرکتوری و متغیرهای محیطی

Pi-hole برای پیکربندی و داده‌ها به پوشه‌های دائمی، همراه با متغیرهای محیطی که دامنه و سایر تنظیمات شما را مشخص می‌کنند، نیاز دارد. این بخش هم ساختار دایرکتوری و هم فایل .env را آماده می‌کند.

  1. دایرکتوری‌های مورد نیاز برای Pi-hole را ایجاد کنید. consoleCopy
    $ mkdir -p ~/pihole/{etc-pihole,etc-dnsmasq.d,letsencrypt}
    • etc-pihole – پیکربندی اصلی Pi-hole، شامل پایگاه‌های داده، گزارش‌های پرس‌وجو و لیست‌های مسدود شده را ذخیره می‌کند.
    • etc-dnsmasq.d –قوانین DNS و شبکه سفارشی را ذخیره می‌کند.
    • letsencrypt –گواهی‌های TLS تولید شده توسط Traefik را ذخیره می‌کند.
  2. به دایرکتوری پروژه بروید. consoleCopy
    $ cd ~/pihole
  3. یک فایل با نام .env. ایجاد کنید.. consoleCopy
    $ nano .env
  4. متن زیر را اضافه کنید. به جای pihole.example.comدامنه واقعی خود، به جای [email protected] آدرس ایمیل خود و به جای UTC منطقه زمانی خود را قرار دهید. iniCopy
    DOMAIN=pihole.example.com
    [email protected]
    TZ=UTC

    فایل را ذخیره کنید و ببندید.

نصب با Docker Compose

یک فایل Docker Compose طرحی است که به Docker می‌گوید چگونه سرویس‌های شما را اجرا کند. این فایل تعریف می‌کند که از کدام نرم‌افزار (Pi-hole و Traefik) استفاده کند و چگونه باید با یکدیگر ارتباط برقرار کنند. Traefik مسیریابی HTTPS را برای داشبورد وب مدیریت می‌کند، در حالی که Pi-hole ترافیک DNS را مدیریت می‌کند.

  1. کاربر خود را به گروه docker اضافه کنید. consoleCopy
    $ sudo usermod -aG docker $USER
  2. عضویت گروه خود را به‌روزرسانی کنید. consoleCopy
    $ newgrp docker
  3. فایل docker-compose.yml را ایجاد کنید. consoleCopy
    $ nano docker-compose.yml
  4. محتوای زیر را در فایل قرار دهید: yamlCopy
    services:
      traefik:
        image: traefik:latest
        container_name: traefik
        restart: unless-stopped
        environment:
          DOCKER_API_VERSION: "1.44"
        command:
          - "--providers.docker=true"
          - "--providers.docker.exposedbydefault=false"
          - "--providers.docker.network=traefik-public"
          - "--entrypoints.web.address=:80"
          - "--entrypoints.websecure.address=:443"
          - "--entrypoints.web.http.redirections.entrypoint.to=websecure"
          - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
          - "--certificatesresolvers.le.acme.httpchallenge=true"
          - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
          - "--certificatesresolvers.le.acme.email=${LETSENCRYPT_EMAIL}"
          - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
          - ./letsencrypt:/letsencrypt
    
      pihole:
        image: pihole/pihole:latest
        container_name: pihole
        restart: unless-stopped
        environment:
          TZ: ${TZ}
        volumes:
          - ./etc-pihole:/etc/pihole
          - ./etc-dnsmasq.d:/etc/dnsmasq.d
        ports:
          - "53:53/tcp"
          - "53:53/udp"
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.pihole.rule=Host(`${DOMAIN}`)"
          - "traefik.http.routers.pihole.entrypoints=websecure"
          - "traefik.http.routers.pihole.tls=true"
          - "traefik.http.routers.pihole.tls.certresolver=le"
          - "traefik.http.services.pihole.loadbalancer.server.port=80"

    فایل را ذخیره کنید و ببندید.

    این پیکربندی Docker Compose، Pi-hole را در پشت Traefik مستقر می‌کند و دسترسی امن HTTPS به داشبورد وب را امکان‌پذیر می‌سازد و در عین حال پورت‌های DNS را مستقیماً برای مسدود کردن تبلیغات در سراسر شبکه در معرض نمایش قرار می‌دهد. هر سرویس در این استقرار عملکرد خاصی دارد:

    pihole service

    • کانتینر را با استفاده از ایمیج رسمی pihole/pihole اجرا می‌کند.
    • پورت‌های 53/tcp و 53/udp را در معرض دید قرار می‌دهد تا دستگاه‌های موجود در شبکه شما بتوانند از Pi-hole به عنوان سرور DNS خود استفاده کنند.
    • پیکربندی پایدار را در دایرکتوری‌های ./etc-pihole و ./etc-dnsmasq.d ذخیره می‌کند تا تنظیمات را در هنگام راه‌اندازی مجدد کانتینر حفظ کند.
    • تنظیمات منطقه زمانی را از فایل .env به ارث می‌برد.
    • شامل برچسب‌های Traefik است که ترافیک HTTPS را برای دامنه Pi-hole شما (${DOMAIN}) به رابط کاربری وب کانتینر روی پورت ۸۰ هدایت می‌کند.
    • عملکرد DNS را از مسیریابی HTTPS جدا نگه می‌دارد—DNS از Traefik عبور می‌کند در حالی که داشبورد از Traefik برای دسترسی ایمن استفاده می‌کند.

    traefik service

    • تمام ترافیک وب را مدیریت می‌کند و پورت‌های ۸۰ و ۴۴۳ را روی میزبان در معرض دید قرار می‌دهد.
    • به طور خودکار گواهی‌های TLS را با استفاده از Let’s Encrypt از طریق چالش ACME HTTP-۰۱ تهیه و تمدید می‌کند.
    • از برچسب‌های داکر برای مسیریابی درخواست‌های HTTPS به کانتینر Pi-hole استفاده می‌کند.
    • گواهی‌ها را به‌طور مداوم در دایرکتوری ./letsencrypt ذخیره می‌کند.
    • با کانتینرهای backend از طریق شبکه مشترک traefik-public ارتباط برقرار می‌کند.
    • نمایش خودکار کانتینرها را غیرفعال می‌کند (exposedbydefault=false),و تضمین می‌کند که فقط کانتینرهای دارای برچسب عمومی هستند.
  5. سرویس‌ها را شروع کنید. consoleCopy
    $ docker compose up -d
  6. بررسی کنید که آیا کانتینرها در حال کار هستند یا خیر. consoleCopy
    $ docker compose ps
    نکته

    برای اطلاعات بیشتر در مورد مدیریت پشته Docker Compose، به مقاله نحوه استفاده از Docker Compose مراجعه کنید.

پیکربندی اولیه

پی-هول معمولاً در شبکه‌های خانگی نصب می‌شود که فقط به رابط‌های محلی گوش می‌دهد. برای استفاده از آن در فضای ابری، باید تنظیمات آن را تغییر دهید تا ترافیک شما را بپذیرد. باید تنظیمات امنیتی را طوری پیکربندی کنید که اتصالات خودتان را مجاز کند.

  1. با اجرای دستور زیر، رمز عبور ادمین را تنظیم کنید. consoleCopy
    $ docker compose exec pihole pihole setpassword

    وقتی از شما خواسته شد، یک رمز عبور قوی وارد کنید.

  2. مرورگر وب خود را باز کنید و دامنه Pi-hole خود، مانند https://pihole.example.com/admin. را باز کنید. از رمز عبوری که تنظیم کرده‌اید استفاده کنید.
    آموزش نصب Pi-hole
  3. پیکربندی Pi-hole برای پذیرش ترافیک از شبکه‌های غیر محلی (اینترنت):
    1. در منوی سمت چپ روی Settings کلیک کنید.
    2. روی تب DNS در بالا کلیک کنید.
    3. برای رفتن به تنظیمات پیشرفته، دکمه‌ی Basic را تغییر وضعیت دهید.
    4. در بخش Interface Settings، گزینه Permit all origins را انتخاب کنید.
    5. روی دکمه ذSave & Apply کلیک کنید..
    اخطار

    فایروال خود را طوری پیکربندی کنید که اجازه دهد ترافیک از طریق پورت ۵۳ از IP کلاینت شما عبور کند. از آنجا که گزینه “اجازه به همه مبداها” را انتخاب کرده‌اید، سرور شما از نظر فنی در کل اینترنت قابل دسترسی است.

آزمایش

قبل از پیکربندی دستگاه‌های خود برای استفاده از Pi-hole، تأیید کنید که سرور به درستی کار می‌کند و از موقعیت مکانی شما قابل دسترسی است.

  1. این دستور را از رایانه محلی خود اجرا کنید تا رکوردهای DNS یک دامنه تبلیغاتی شناخته شده flurry.com را جستجو کنید. SERVER_IP را با آدرس IP عمومی سرور خود جایگزین کنید. consoleCopy
    $ dig @SERVER_IP flurry.com

    اگر بخش پاسخ عدد 0.0.0.0را برگرداند، Pi-hole با موفقیت دامنه‌های تبلیغاتی را در شبکه شما مسدود می‌کند.

  2. این دستور را اجرا کنید تا تأیید کنید که وب‌سایت‌های عادی هنوز به درستی نمایش داده می‌شوند. consoleCopy
    $ dig @SERVER_IP negarnovin.com

    شما باید رکوردهای دامنه A مربوط به negarnovin.com را در خروجی ببینید.

نتیجه‌ گیری

شما با موفقیت Pi-hole را روی اوبونتو ۲۴.۰۴ با یک داشبورد امن HTTPS مستقر کرده‌اید. اکنون می‌توانید لیست‌های مسدودسازی اضافی را در بخش Adlists داشبورد پیکربندی کنید تا سطح حفاظت خود را سفارشی کنید. برای اطلاعات بیشتر، به مستندات Pi-hole مراجعه کنید.

🖼️ تصاویر

🏷️ کلمات کلیدی

آموزش نصب Pi-hole، نحوه نصب سرویس Pi-hole – DNS Sinkhole، پیش نیازها، آزادسازی پورت 53، خرید آموزش نصب Pi-hole، قیمت آموزش نصب Pi-hole، بهترین آموزش نصب Pi-hole

🧩 JSON-LD

{"@context":"https://schema.org","@type":"WebPage","headline":"آموزش نصب Pi-hole","url":"https://negarnovin.com/docs/how-to-deploy-pi-hole-dns-sinkhole-service/","datePublished":"2026-02-17T13:00:45+03:30","dateModified":"2026-07-29T12:38:58+03:30","author":{"@type":"Person","name":"نگارنوین"},"publisher":{"@type":"Organization","name":"نگارنوین"},"inLanguage":"fa-IR","description":"آموزش نصب Pi-hole How to Deploy Pi-hole – DNS Sinkhole Service Pi-hole یک برنامه مسدودکننده تبلیغات و ردیاب اینترنتی در سطح شبکه لینوکس است"}