بازگشت به وبلاگ
اوت 19, 2026راهنماها

نحوه راه‌اندازی AdGuard Home روی VPS

AdGuard Home را روی Ubuntu نصب کنید، جادوگر اولین اجرا را تمام کنید، رابط وب را قفل کنید، DNS-over-HTTPS و DNS-over-TLS را فعال کنید، دستگاه‌ها را به resolver خودتان اشاره دهید و از اجرای سرور DNS باز که کل اینترنت بتواند از آن سوءاستفاده کند پرهیز کنید.

نحوه راه‌اندازی AdGuard Home روی VPS

AdGuard Home یک DNS sinkhole خودمیزبان و resolver به‌سبک بازگشتی با رابط وب است. می‌تواند تبلیغ، ردیاب و دامنه‌های بدافزار را برای هر دستگاهی که آن را به‌عنوان DNS استفاده می‌کند مسدود کند — گوشی، لپ‌تاپ، تلویزیون هوشمند و پروژه‌های VPS دیگر. برخلاف افزونهٔ مرورگر، حتی برای اپ‌هایی که فایل hosts را نادیده می‌گیرند کار می‌کند. اجرا روی VPS وقتی مفید است که همان فیلتر را در سفر بخواهید، یا نخواهید Raspberry Pi روی شبکهٔ خانگی داشته باشید.

پیش‌فرض خطرناکی که نباید عرضه کنید resolver باز است: اگر UDP/TCP 53 از کل اینترنت بدون کنترل دسترسی برسد، غریبه‌ها از VPS شما برای تقویت DNS استفاده می‌کنند و شکایت سوءاستفاده می‌گیرید. این راهنما AdGuard Home را روی Ubuntu نصب می‌کند، مگر عمداً DNS رمزشده را در معرض بگذارید DNS را به localhost یا رابط خصوصی WireGuard می‌بندد، داشبورد را روی HTTPS می‌گذارد و نشان می‌دهد لپ‌تاپ و گوشی چطور می‌توانند DNS-over-HTTPS (DoH) یا DNS-over-TLS (DoT) را بدون باز کردن پورت کلاسیک 53 به دنیا استفاده کنند.

AdGuard Home برای چه خوب است

مقایسهٔ معمول Pi-hole است. AdGuard Home یک باینری با رابط وب داخلی، فرانت‌اندهای DNS رمزشدهٔ اختیاری و تنظیمات به‌ازای کلاینت است. می‌توانید در Docker یا به‌عنوان سرویس systemd اجرا کنید. روی VPS از Hiddence با VPN خصوصی خوب جفت می‌شود: دستگاه‌ها به WireGuard می‌پیوندند، DNS را از تونل به VPS می‌فرستند و هرگز پورت 53 را عمومی نمی‌کنند.

  • مسدودسازی سراسری شبکه بدون نصب اپ روی هر دستگاه
  • DoH (443) و DoT (853) تا DNS روی Wi-Fi عمومی متن ساده نباشد
  • لاگ پرس‌وجو و آمار تا ببینید کدام دستگاه با کدام دامنه حرف می‌زند
  • upstream سفارشی (Quad9، Cloudflare یا Unbound خودتان)
  • جای پای کوچک — VPS یک‌گیگابایتی می‌تواند یک خانوار به‌علاوهٔ چند کلاینت اضافه را فیلتر کند

پیش‌نیازها

اگر گواهی قابل اعتماد برای DoH/DoT و داشبورد می‌خواهید به دامنه نیاز دارید. می‌توانید اول روی HTTP و IP سرور آزمایش کنید، اما همان‌طور رها نکنید. اگر systemd-resolved از قبل پورت 53 را روی Ubuntu گرفته، قبل از این‌که AdGuard Home به DNS وصل شود آن را آزاد می‌کنیم.

  • VPS با Ubuntu 22.04 یا 24.04 و root/sudo
  • 1 گیگابایت RAM برای استفادهٔ شخصی کافی است
  • دامنه یا زیردامنه (dns.example.com) با رکورد A به VPS
  • دسترسی SSH؛ WireGuard اختیاری اگر DNS فقط داخل تونل باشد

گام ۱: پورت 53 را آزاد کنید و AdGuard Home را نصب کنید

Ubuntu Server اغلب systemd-resolved را به‌عنوان stub روی 127.0.0.53:53 اجرا می‌کند. AdGuard Home پورت 53 را روی رابط‌هایی که انتخاب می‌کنید می‌خواهد. نصب‌کننده می‌تواند این کار را بکند، اما صریح انجام دادنش از DNS نیمه‌خراب روی خود VPS جلوگیری می‌کند (سرور هنوز باید بسته‌ها را resolve کند).

bash
ssh root@YOUR_VPS_IP
apt update && apt -y upgrade
apt -y install curl ca-certificates

# See who owns port 53:
ss -tulpn | grep ':53'

# Typical Ubuntu fix: stop stub listener, point the OS at a temporary resolver
mkdir -p /etc/systemd/resolved.conf.d
cat >/etc/systemd/resolved.conf.d/adguardhome.conf <<'EOF'
[Resolve]
DNS=1.1.1.1
DNSStubListener=no
EOF
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl restart systemd-resolved

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

گام ۲: جادوگر اولین اجرا

نصب‌کننده URL چاپ می‌کند، معمولاً http://YOUR_IP:3000/. باز کنید، کاربر مدیر با رمز بلند بسازید و آدرس‌های شنود را انتخاب کنید. برای VPS عمومی راه‌اندازی اول امن این است: وب مدیر روی 127.0.0.1:3000 (جلوی آن Caddy می‌گذارید) یا بعد از TLS روی 80/443؛ شنود DNS روی 127.0.0.1:53 به‌علاوهٔ یک رابط VPN، نه روی 0.0.0.0:53. اگر واقعاً DNS به‌سبک LAN برای دوستان لازم دارید، DoH/DoT روی 443/853 با احراز هویت را ترجیح دهید، نه 53/udp باز.

سرورهای DNS بالادستی را که اعتماد دارید انتخاب کنید. خیلی‌ها از https://dns.quad9.net/dns-query یا Cloudflare استفاده می‌کنند. اگر failover سریع‌تر می‌خواهید درخواست موازی را روشن کنید. فهرست‌های فیلتر پیش‌فرض را روشن کنید، بعداً بیشتر اضافه کنید — فعال کردن پنجاه فهرست در روز اول وقتی سایتی می‌شکند اشکال‌زدایی را ناممکن می‌کند.

اگر از لپ‌تاپ پورت 3000 را باز نمی‌کنید از تونل SSH استفاده کنید: ssh -L 3000:127.0.0.1:3000 root@YOUR_VPS_IP و http://127.0.0.1:3000/ را باز کنید

گام ۳: پروکسی معکوس و HTTPS برای داشبورد

وقتی جادوگر تمام شد AdGuard Home معمولاً رابط را به پورت 80 می‌برد. اگر سایت هم میزبانی کنید با Caddy یا Nginx برخورد می‌کند. الگوی تمیز: وب AdGuard Home روی 127.0.0.1:8080، DNS روی 127.0.0.1:53، Caddy روی 443 برای هم داشبورد و هم DoH.

bash
# In AdGuard Home settings, bind the web UI to 127.0.0.1:8080
# Example Caddyfile:

dns.example.com {
    reverse_proxy 127.0.0.1:8080
}

# After Caddy is up:
curl -I https://dns.example.com

گام ۴: DNS-over-HTTPS و DNS-over-TLS را فعال کنید

در تنظیمات رمزنگاری، رمزنگاری را روشن کنید، نام سرور را dns.example.com بگذارید و AdGuard Home را به فایل‌های گواهی اشاره دهید — یا آن‌هایی که Caddy ذخیره می‌کند، یا گواهی‌هایی که اگر روی 443 گوش دهد خودش می‌گیرد. DoH معمولاً https://dns.example.com/dns-query است. DoT برابر dns.example.com:853 است. اگر Caddy از قبل 443 را دارد بگذارید Caddy، TLS را تمام کند و مسیر DoH را به پورت DoH سادهٔ HTTP در AdGuard Home پروکسی معکوس کند، یا بگذارید AdGuard Home روی 443 گوش دهد و داشبورد را روی زیردامنهٔ دیگر بگذارید.

قبل از عوض کردن همهٔ دستگاه‌ها با یک کلاینت تأیید کنید. روی لپ‌تاپ با curl مدرن:

bash
curl -H 'accept: application/dns-json' 'https://dns.example.com/dns-query?name=example.com&type=A'

# DoT test (kdig from knot-dnsutils, if installed):
# kdig @dns.example.com +tls-ca +tls-host=dns.example.com example.com

گام ۵: دستگاه‌های واقعی را به resolver خودتان اشاره دهید

Windows 11 و ساخت‌های تازهٔ Android می‌توانند قالب DoH استفاده کنند. iOS می‌تواند پروفایل پیکربندی یا کلاینت پشتیبان DoH استفاده کند. Firefox و Chromium هم URL سفارشی DoH را می‌پذیرند. برای روتر خانگی فقط اگر روتر DoT/DoH دارد DNS مربوط به WAN را تنظیم کنید؛ وگرنه WireGuard اجرا کنید و DNS را روی IP مربوط به VPN سرور بگذارید تا DNS کلاسیک هرگز از اینترنت رد نشود.

  • Android 9+: DNS خصوصی (DoT) → dns.example.com
  • Firefox: تنظیمات → شبکه → DNS روی HTTPS → URL سفارشی https://dns.example.com/dns-query
  • دستگاه‌های Apple: mobileconfig امضاشده یا اپی که DoH/DoT را پشتیبانی کند
  • VPS دیگر: resolv.conf یا systemd-resolved را روی IP مربوط به WireGuard این نمونهٔ AdGuard بگذارید
  • بدون رمزنگاری این IP سرور را روی شبکه‌های عمومی تصادفی به‌عنوان DNS نگذارید

گام ۶: فایروال — DNS بازگشتی باز را ببندید

این بخش از غافلگیری بد جلوگیری می‌کند. SSH، HTTPS و اختیاری 853/tcp برای DoT را اجازه دهید. از 0.0.0.0/0 به 53/udp اجازه ندهید مگر طراحی خیلی مشخص، محدود به نرخ و احراز هویت‌شده داشته باشید — و حتی آن‌وقت هم احتمالاً نباید.

bash
ufw allow OpenSSH
ufw allow 443/tcp comment 'dashboard + DoH'
ufw allow 853/tcp comment 'DoT'
# If DNS is only on WireGuard (example iface wg0, 10.8.0.1):
# ufw allow in on wg0 to any port 53 proto udp
ufw enable
ufw status verbose

# Confirm 53 is not public:
ss -tulpn | grep ':53'

فیلترها، فهرست مجاز و کلاینت‌ها

با فیلتر DNS پیش‌فرض AdGuard و یک فهرست بدافزار شروع کنید. وقتی سایتی بدرفتاری کرد لاگ پرس‌وجو را ببینید، بعد به‌جای خاموش کردن همهٔ مسدودسازی یک قاعدهٔ مجاز مشخص اضافه کنید. از نام کلاینت استفاده کنید (بر اساس IP یا ClientID در URL مربوط به DoH) تا فهرست سخت‌تر به تلویزیون هوشمند و سست‌تر به لپ‌تاپ کار اعمال شود. جست‌وجوی ایمن را فقط اگر واقعاً می‌خواهید روشن کنید — کسانی را که نتیجهٔ بازنویسی‌شدهٔ گوگل نخواسته‌اند غافلگیر می‌کند.

  • لاگ پرس‌وجو: دامنهٔ مسدود را پیدا کنید، اگر مثبت کاذب است به فهرست سفید ببرید
  • تنظیمات کلاینت: فهرست مسدود متفاوت به‌ازای دستگاه
  • کلاینت‌های غیرمجاز: بازه‌هایی را که مال شما نیست مسدود کنید
  • محدودیت نرخ: اگر بیش از چند کاربر در معرض گذاشتید روشن کنید

عیب‌یابی

اگر خود VPS نتواند apt update کند هنگام آزاد کردن پورت 53، DNS محلی را شکسته‌اید — همان‌طور که بالا آمده resolver ایستا در resolved.conf بگذارید. اگر دستگاه‌ها «اینترنت دارند» اما تبلیغ هنوز بار می‌شود، DNS شما را دور می‌زنند (resolver سخت‌کد، DoH در مرورگر، یا اپی با DNS خودش). اگر داشبورد خالی است به نمونهٔ اشتباه نگاه می‌کنید یا بعد از این‌که جادوگر رابط را جابه‌جا کرد هنوز به پورت 3000 می‌زنید.

  • شکست apt: /etc/resolv.conf و systemd-resolved را بررسی کنید
  • پورت 53 در حال استفاده: ss -tulpn، شنوندهٔ stub را خاموش کنید
  • خطاهای گواهی DoH: نام میزبان باید با SAN گواهی جور باشد
  • تبلیغ هنوز دیده می‌شود: DoH مرورگر به ارائه‌دهندهٔ دیگر سیستم‌عامل را override می‌کند
  • RAM بالا: لاگ پرس‌وجو + فهرست فیلتر زیاد — فهرست‌ها را کوتاه کنید و نگهداری لاگ را کم کنید

چک‌لیست امنیت

رابط وب پنل مدیریت است. رمز یکتا، فقط HTTPS، و URL را منتشر نکنید. AdGuard Home را به‌روز نگه دارید؛ هم اسکریپت نصب هم رابط مسیر به‌روزرسانی دارند. اگر فقط دستگاه‌های شما باید DoH استفاده کنند 443 را محدود کنید — احراز هویت پایهٔ HTTP روی مسیر DoH یا دسترسی فقط از WireGuard خیلی امن‌تر از resolver باز معروف است.

  • بدون 53/udp عمومی
  • HTTPS روی داشبورد
  • رمز قوی مدیر، ذخیره‌شده در مدیر رمز
  • برای دستگاه‌های خانواده WireGuard + DNS داخلی را ترجیح دهید
  • AdGuardHome.yaml را از سرور بیرون پشتیبان بگیرید

نکات

  • قبل از هر ارتقا از /opt/AdGuardHome/AdGuardHome.yaml پشتیبان بگیرید
  • زیردامنهٔ اختصاصی استفاده کنید؛ با CMS نامرتبط شریک نشوید
  • اگر از قبل Caddy دارید بگذارید 443 مال Caddy باشد و AdGuard Home روی localhost بماند
  • URL مربوط به DoH را برای دستگاه‌ها مستند کنید — فراموش می‌کنید
  • با راهنماهای سخت‌کردن SSH و فایروال جفت کنید تا VPS فقط «امن DNS» نباشد

AdGuard Home روی VPS سرراست است: پورت 53 را محلی آزاد کنید، نصب‌کننده را اجرا کنید، جادوگر را با رمز قوی مدیر تمام کنید، رابط را روی HTTPS بگذارید، DoH/DoT را روشن کنید و DNS کلاسیک را از اینترنت عمومی دور نگه دارید. دستگاه‌ها را به نقطهٔ رمزشده یا IP مربوط به VPN اشاره دهید، با مجموعهٔ کوچک فیلتر شروع کنید و وقتی چیزی شکست از لاگ پرس‌وجو استفاده کنید. این resolver خصوصی است که واقعاً کنترل می‌کنید — نه DNS باز عمومی که VPS شما را در پایگاه‌های سوءاستفاده فهرست کند.