The AdGuard Home Raspberry Pi setup comes down to four things: flash Raspberry Pi OS Lite (64-bit), run AdGuard’s official install script, finish the setup wizard on port 3000, and point your router’s DNS at the Pi. As of October 2026, the script installs AdGuard Home v0.107.79 (the current stable release), and current Raspberry Pi OS (based on Debian Trixie) already has everything it needs.
Older versions of this guide used a download that stopped getting new releases years ago, so the commands below are new. I recorded the video below in 2020, and most of it still holds, but use the install commands in this article and ignore the wizard’s static IP panel.
AdGuard Home Raspberry Pi Requirements
AdGuard Home publishes Linux builds for 64-bit ARM, ARMv7, ARMv6 and ARMv5, so it runs on just about every Raspberry Pi. If you’re planning an AdGuard Raspberry Pi setup, the operating system image matters more than the board.
- A Raspberry Pi 5, 4, 3 or Zero 2 W running Raspberry Pi OS Lite (64-bit). A DNS server doesn’t need a desktop, so pick Lite, under Raspberry Pi OS (other) in Imager.
- A Pi 1, Pi 2, original Pi Zero or Zero W runs Raspberry Pi OS Lite (32-bit) only, and the install script picks the matching ARMv6 or ARMv7 build for you.
- SSH access. In Raspberry Pi Imager’s Customisation step, create your user on the User page and turn on Enable SSH on the Remote access page. There’s no default
piuser anymore (Raspberry Pi removed it in 2022), and this is how to set up the Raspberry Pi headless if you haven’t done it before. - An IP address that doesn’t change. Create a DHCP reservation for the Pi on your router. Every device will send its DNS lookups to that address, so if it changes, nothing on your network resolves.
The Lite image already ships curl and wget, and nothing on it listens on port 53, so there’s nothing else to install first. The exception is another DNS server on the same Pi. If you already run Pi-hole on it, give AdGuard Home its own Pi (or install Pi-hole on a Raspberry Pi and stay with it).
If you’re still deciding between the two, it’s really user specific (I said so in 2020 and I’d still say it today), and the AdGuard Home vs. Pi-hole comparison covers where they differ.
How to Install AdGuard Home on a Raspberry Pi
The quickest way to install AdGuard Home on Raspberry Pi OS is the install script from the official AdGuard Home GitHub page. It reads uname -m to pick the right build (64-bit Raspberry Pi OS gets arm64), downloads the current stable release, installs it to /opt/AdGuardHome and registers it as a service.
1. SSH into your Raspberry Pi with the username you created in Imager, substituting your Pi’s IP address.
ssh [USERNAME]@[PI_IP_ADDRESS]
2. Run the install script below. It re-runs itself with sudo if it needs to, and the -v at the end only turns on verbose output.
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
3. When the script finishes, AdGuard Home is running and waiting for its first-time setup on port 3000.
Installing AdGuard Home Manually
If you don’t want to pipe a script into your shell, the manual install is four commands. Run uname -m first and swap arm64 in the first two lines for the build it names: arm64 for aarch64, armv7 for armv7l, armv6 for armv6l.
wget https://static.adtidy.org/adguardhome/release/AdGuardHome_linux_arm64.tar.gz
tar -f AdGuardHome_linux_arm64.tar.gz -x -v -z
cd AdGuardHome
sudo ./AdGuardHome -s install
This installs AdGuard Home in the folder you extracted it to (~/AdGuardHome if you ran these from your home folder), so use that path wherever this article says /opt/AdGuardHome. Do not use the AdGuardHome_linux_arm.tar.gz file from older guides. It hasn’t changed since 2023 and still installs v0.102.0, a 2020 release.
AdGuard Home Raspberry Pi Setup Wizard
The setup wizard has five steps, and it’s where you pick AdGuard Home’s ports and create your account.
1. Open a browser on any computer on your network, go to your Pi’s IP address on port 3000, and select Get Started.
http://[PI_IP_ADDRESS]:3000

2. Under Admin Web Interface, set Listen interface to All interfaces (or your Pi’s IP address) and leave Port on 80. Do the same under DNS server, leave its port on 53, and select Next.

At the bottom of that page is a Static IP Address panel, and on current Raspberry Pi OS you can ignore whatever it shows. When I recorded the video in 2020, it offered to set one even with a DHCP reservation in place, and the reservation made it unnecessary then too. AdGuard Home sets a static address by editing /etc/dhcpcd.conf, and Raspberry Pi OS replaced dhcpcd with NetworkManager in Bookworm, so the router reservation is what actually keeps the address from changing.
3. On Authentication, enter a Username, a Password and Confirm password, then select Next. This is the account you’ll sign in with, since AdGuard Home has no default one.

4. Configure your devices shows how to point your router and individual devices at AdGuard Home. Router DNS is covered in its own section below, so select Next.

5. On the Congratulations! screen, select Open Dashboard and sign in with the account you just created.

From now on the web interface is on port 80, so the Pi’s IP address on its own is enough:
http://[PI_IP_ADDRESS]
If the wizard reports that port 53 is already in use, another DNS server (like Pi-hole) is already running on the Pi, so remove it or give AdGuard Home its own Pi.
AdGuard Home Default Login
There’s no AdGuard Home default login. The only account is the one you created on the wizard’s Authentication step. If you’ve forgotten the password, you reset it by putting a new password hash in /opt/AdGuardHome/AdGuardHome.yaml (the install script’s location).
1. Install htpasswd, which isn’t included in Raspberry Pi OS Lite.
sudo apt-get install apache2-utils
2. Generate a hash for the new password, substituting your username and the password you want. It prints USERNAME:HASH, and you need the part after the colon.
htpasswd -B -C 10 -n -b [USERNAME] [NEW_PASSWORD]
3. Stop AdGuard Home. It overwrites the file while it’s running, so an edit made now would be lost.
sudo /opt/AdGuardHome/AdGuardHome -s stop
4. Open the configuration file, find your username under users:, replace the value after password: with the hash, and save the file (CTRL + O, Enter, then CTRL + X).
sudo nano /opt/AdGuardHome/AdGuardHome.yaml
5. Start AdGuard Home again and sign in with the new password.
sudo /opt/AdGuardHome/AdGuardHome -s start
Point Your Router’s DNS at AdGuard Home
Pointing your router’s DNS at the Pi is the easiest way to put every device on AdGuard Home. When I made the video in 2020, that’s what I normally did, because anything connected to the router automatically uses it as its DNS server. It’s still what I’d tell you to do, and it covers phones, TVs and laptops without installing anything on them.
1. Sign in to your router (often at http://192.168.0.1 or http://192.168.1.1) and open its DHCP or DNS settings.
2. Replace the DNS server with your Pi’s IP address and save. Devices pick up the change when they next renew their address, so reconnecting one is the quickest way to test it.
Every router puts this somewhere different. In the 2020 screenshot below, the second address is a second AdGuard Home server on a Synology NAS, so DNS keeps working if one goes down (here’s how to install AdGuard Home on a Synology NAS). If you only have the Pi, enter its address on its own.

Some routers won’t let you set a custom DNS server at all. In that case, AdGuard Home can be your DHCP server instead (Settings, then DHCP settings), with the router’s DHCP server turned off so only one hands out addresses. Set a static IP address on the Pi first with sudo nmtui (AdGuard Home may still warn that it can’t detect one).
If you only want certain devices to use AdGuard Home, set the DNS server on each one instead: Windows, Mac or your Linux distribution’s network settings.
Check That AdGuard Home Is Blocking Ads
From another computer on your network, look up a known ad domain against the Pi’s IP address:
nslookup doubleclick.net [PI_IP_ADDRESS]
A blocked domain comes back as 0.0.0.0 (or NXDOMAIN) instead of a real address, and the lookup shows up as blocked in the Query Log. To test from the Pi itself, run sudo apt install dnsutils first, then the same command.

AdGuard Home Raspberry Pi Settings
Most settings are personal preference, but these are worth checking right after installation.
Settings > DNS settings holds your Upstream DNS servers. As of v0.107.79, the default is Quad9 over DNS-over-HTTPS (https://dns10.quad9.net/dns-query), so the lookups AdGuard Home sends out are already encrypted, with no certificate needed on the Pi.

Filters > DNS blocklists is where you add more lists, and Filters > Blocked services blocks a whole service at once.

Filters > DNS rewrites is the one I’d look at next. Internal DNS lets you type a name like jellyfin.home instead of an IP address, and Pi-hole and AdGuard Home both handle it in the same place. Select Add DNS rewrite, enter jellyfin.home as the domain and your server’s IP address as the answer, save, then browse to http://jellyfin.home:8096.

Security changes all the time, so treat these settings as a starting point, not a guarantee.
How to Update AdGuard Home on a Raspberry Pi
AdGuard Home updates itself. When a new version comes out, the web interface shows an Update now button, which replaces the program and keeps a backup of the old one. To check on demand, use the refresh icon beside the version number at the bottom of the page (tooltip Check for updates now), not the Check for updates button under DNS blocklists, which only refreshes your lists.
From the command line, run the built-in updater from the install folder:
cd /opt/AdGuardHome
sudo ./AdGuardHome --update
Do not re-run the install script to update. Without a flag it refuses, and with -r it deletes the whole /opt/AdGuardHome folder, configuration included. Treat -r as a clean reinstall that starts over, and back up AdGuardHome.yaml first.
Updating an Install from the Old Archive
If you followed an older version of this article, you’re on the old _arm archive (v0.102.0 today), and its built-in updater can’t find a newer build. Run uname -m first, and if it doesn’t print aarch64, swap arm64 in the wget and tar lines for armv7 (armv7l) or armv6 (armv6l). The commands assume you extracted the old one in your home folder.
mkdir -p ~/agh-new ~/agh-backup
wget https://static.adtidy.org/adguardhome/release/AdGuardHome_linux_arm64.tar.gz
tar -f AdGuardHome_linux_arm64.tar.gz -x -v -z -C ~/agh-new
cd ~/AdGuardHome
sudo ./AdGuardHome -s stop
sudo cp -r AdGuardHome AdGuardHome.yaml data ~/agh-backup/
sudo cp ~/agh-new/AdGuardHome/AdGuardHome ./AdGuardHome
sudo ./AdGuardHome -s start
From then on, the built-in updater above works, run from ~/AdGuardHome instead of /opt/AdGuardHome. After any update, run the nslookup test from earlier to confirm AdGuard Home is still blocking.
