Getting started
Installation
Official releases
Download the archive with the binary file for your operating system from the latest stable release page. The full list of supported platforms as well as links to beta and edge (unstable) releases can be found on our platforms page.
To install AdGuard Home as a service, extract the archive, enter the AdGuardHome
directory, and run:
./AdGuardHome -s install
Notes
Users of Fedora Linux and its derivatives: install AdGuard Home in the
/usr/local/bin
directory. Failure to do so may cause issues with SELinux and permissions. See issue 765 and issue 3281.Users of macOS 10.15 Catalina and newer should place the AdGuard Home working directory inside the
/Applications
directory.
Docker and Snap
We also provide an official AdGuard Home docker image and an official Snap Store package for experienced users.
Other
Some other unofficial options include:
Home Assistant add-on maintained by @frenck.
OpenWrt LUCI app maintained by @kongfl888.
Arch Linux, Arch Linux ARM, and other Arch-based OSs, may build via the
adguardhome
package in the AUR maintained by @graysky2.Cloudron app maintained by @gramakri.
First start
First of all, check your firewall settings. To install and use AdGuard Home, the following ports and protocols must be available:
- 3000/TCP for the initial installation;
- 80/TCP for the web interface;
- 53/UDP for the DNS server.
You may need to open additional ports for protocols other than plain DNS, such as DNS-over-HTTPS.
DNS servers bind to port 53, which requires superuser privileges most of the time, see below. Therefore, on Unix systems, you will need to run it with sudo
or doas
in terminal:
sudo ./AdGuardHome
On Windows, run cmd.exe
or PowerShell with admin privileges and run AdGuardHome.exe
from there.
When you run AdGuard Home for the first time, it starts listening on 0.0.0.0:3000
and prompts you to open it in your browser:
AdGuard Home is available at the following addresses:
go to http://127.0.0.1:3000
go to http://[::1]:3000
[…]
There you will go through the initial configuration wizard.
See our article on running AdGuard Home securely for guidance on how to select the initial configuration that fits you best.
Running as a service
The next step would be to register AdGuard Home as a system service (aka daemon). To install AdGuard Home as a service, run:
sudo ./AdGuardHome -s install
On Windows, run cmd.exe
with admin privileges and run AdGuardHome.exe -s install
to register a Windows service.
Here are the other commands you might need to control the service:
AdGuardHome -s uninstall
: Uninstall the AdGuard Home service.AdGuardHome -s start
: Start the service.AdGuardHome -s stop
: Stop the service.AdGuardHome -s restart
: Restart the service.AdGuardHome -s status
: Show the current service status.
Logs
By default, the logs are written to stderr
when you run AdGuard Home in a terminal. If you run it as a service, the log output depends on the platform:
On macOS, the log is written to
/var/log/AdGuardHome.*.log
files.On other Unixes, the log is written to
syslog
orjournald
.On Windows, the log is written to the Windows event log.
You can change this behavior in the AdGuard Home configuration file.
Updating
When a new version is released, AdGuard Home’s UI shows a notification message and the Update now button. Click this button, and AdGuard Home will be automatically updated to the latest version. Your current AdGuard Home executable file is saved inside the backup
directory along with the current configuration file, so you can revert the changes, if necessary.
Manual update
In case the button isn’t shown or an automatic update has failed, you can update manually. We have a detailed guide on manual updates, but in short:
Download the new AdGuard Home package.
Extract it to a temporary directory.
Replace the old AdGuard Home executable file with the new one.
Restart AdGuard Home.
Docker, Home Assistant, and Snapcraft updates
Auto-updates for Docker, Hass.io/Home Assistant, and Snapcraft installations are disabled. Update the image instead.
Command-line update
To update AdGuard Home package without the need to use Web API run:
./AdGuardHome --update
Configuring devices
Router
This setup will automatically cover all devices connected to your home router, and you won’t need to configure each of them manually.
Open the preferences for your router. Usually, you can access it from your browser via a URL, such as http://192.168.0.1/ or http://192.168.1.1/. You may be prompted to enter a password. If you don’t remember it, you can often reset the password by pressing a button on the router itself, but be aware that if this procedure is chosen, you will probably lose the entire router configuration. If your router requires an app to set it up, please install the app on your phone or PC and use it to access the router’s settings.
Find the DHCP/DNS settings. Look for the DNS letters next to a field that allows two or three sets of numbers, each divided into four groups of one to three digits.
Enter your AdGuard Home server addresses there.
On some router types, a custom DNS server cannot be set up. In that case, setting up AdGuard Home as a DHCP server may help. Otherwise, you should consult your router manual to learn how to customize DNS servers on your specific router model.
Windows
Open Control Panel from the Start menu or Windows search.
Go to Network and Internet and then to Network and Sharing Center.
On the left side of the screen, find the Change adapter settings button and click it.
Select your active connection, right-click it and choose Properties.
Find Internet Protocol Version 4 (TCP/IPv4) (or, for IPv6, Internet Protocol Version 6 (TCP/IPv6)) in the list, select it, and then click Properties again.
Choose Use the following DNS server addresses and enter your AdGuard Home server addresses.
macOS
Click the Apple icon and go to System Preferences.
Click Network.
Select the first connection in your list and click Advanced.
Select the DNS tab and enter your AdGuard Home server addresses.
Android
Instructions for Android devices may differ depending on the OS version and the manufacturer.
From the Android menu home screen, tap Settings.
Tap Wi-Fi on the menu. The screen with all of the available networks will be displayed (it is impossible to set custom DNS for mobile connection).
Long press the network you’re connected to and tap Modify Network.
On some devices, you may need to check the box for Advanced to see more settings. To adjust your Android DNS settings, you will need to change the IP settings from DHCP to Static.
Change set DNS 1 and DNS 2 values to your AdGuard Home server addresses.
iOS
From the home screen, tap Settings.
Select Wi-Fi from the left menu (it is impossible to configure DNS for mobile networks).
Tap the name of the currently active network.
In the DNS field, enter your AdGuard Home server addresses.
Running without superuser
You can run AdGuard Home without superuser privileges, but you must either grant the binary a capability (on Linux) or instruct it to use a different port (all platforms).
Granting the necessary capabilities (Linux only)
Using this method requires the setcap
utility. You may need to install it using your Linux distribution’s package manager.
To allow AdGuard Home running on Linux to listen on port 53 without superuser privileges and bind its DNS servers to a particular interface, run:
sudo setcap 'CAP_NET_BIND_SERVICE=+eip CAP_NET_RAW=+eip' ./AdGuardHome
Then run ./AdGuardHome
as an unprivileged user.
Changing the DNS listen port
To configure AdGuard Home to listen on a port that does not require superuser privileges, stop AdGuard Home, open AdGuardHome.yaml
in your editor, and find these lines:
dns:
# …
port: 53
You can change the port to anything above 1024 to avoid requiring superuser privileges.
Limitations
Some file systems don’t support the mmap(2)
system call required by the statistics system. See also issue 1188.
You can resolve this issue:
either by supplying the
--work-dir DIRECTORY
arguments to theAdGuardHome
binary. This option will tell AGH to use another directory for all its files instead of the default./data
directory.or by creating symbolic links pointing to another file system that supports
mmap(2)
(e.g. tmpfs):ln -s ${YOUR_AGH_PATH}/data/stats.db /tmp/stats.db
ln -s ${YOUR_AGH_PATH}/data/sessions.db /tmp/sessions.db