How I Set Up My Own AdGuard Home Server on Oracle Cloud (Step-by-Step with My Experience)
I’ve always wanted a clean, ad-free browsing experience across all my devices—not just on a browser with an extension. I wanted something at the network level that would block ads, trackers, and inappropriate content for my family.
That’s when I decided to set up AdGuard Home on an Oracle Cloud Free Tier VM. It turned out to be a fun weekend project, and in this article, I’ll walk you through exactly how I did it.

Why I Chose AdGuard Home
AdGuard Home is a powerful DNS-based ad blocker. Instead of blocking ads after they load, it stops them before they even reach your device. That means faster browsing, fewer distractions, and safer access for kids. Plus, I get full control over what to block or allow.
Step 1: Setting Up the Server on Oracle Cloud
Since Oracle offers a Free Tier VM, it was a perfect choice. I launched a VM with:
- Shape:
VM.Standard.E2.1.Micro1 OCPU & 1GB Memory. - OS: Ubuntu Minimal
This lightweight machine is more than enough for a personal DNS server. I also made sure to open the necessary ports in the Oracle firewall:
- 53 (DNS)
- 853 (HTTPS DNS)
- 80 (HTTP)
- 443 (HTTPS)
- 3000 (AdGuard setup UI)
Step 2: Installing AdGuard Home
AdGuard’s installation is refreshingly simple. I followed their official guide and ran this single command via SSH:
curl -s -S -L https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz | tar -xz
cd AdGuardHome
./AdGuardHome -s install
Within minutes, AdGuard Home was installed as a service. I accessed the setup UI at:
http://<server-ip>:3000
From there, the web interface guided me through the initial configuration.
Step 3: Adding HTTPS with Let’s Encrypt
Since I wanted to use Android’s Private DNS feature, HTTPS was mandatory. I installed Certbot and generated a free SSL certificate:
sudo apt update && sudo apt install certbot -y
sudo certbot certonly --standalone -d mydomain.com
Then, in AdGuard’s Encryption Settings, I pointed it to:
- Certificate:
/etc/letsencrypt/live/mydomain.com/fullchain.pem - Key:
/etc/letsencrypt/live/mydomain.com/privkey.pem
Now my DNS queries were securely encrypted over TLS.
Step 4: Importing Blocklists
This was the fun part. AdGuard allows you to load blocklists to filter ads and bad domains. From the dashboard, I added:
- AdGuard’s Default Blocklist
- OISD Full
Right away, ads stopped loading across my devices, and inappropriate sites were filtered out.
Step 5: Restricting Access
I didn’t want random people on the internet using my DNS server. To avoid that, I restricted it to a list of allowed client IPs. That way, only my devices could make queries.
Step 6: Connecting My Devices
Finally, I put the server to work:
- Home Wi-Fi Router: I set my Oracle VM IP as the DNS, so every connected device automatically benefits.
- Android Phone: I enabled Private DNS and pointed it to my domain name with TLS enabled.
Everything worked smoothly—ads vanished, browsing felt faster, and I had full control.
What’s Next (Dynamic IP Updates)
Since my ISP assigns a dynamic IP, my setup needs a way to keep the DNS record updated whenever my home IP changes. I solved this using Tasker + Termux automation on Android, which you can read here.
Final Thoughts
Setting up AdGuard Home on Oracle Cloud was easier than I thought. In just a few steps, I now have:
- A free DNS server running 24/7
- Encrypted DNS over TLS for security
- Network-wide ad-blocking for all devices
- Peace of mind knowing my family browses safer
For anyone looking to block ads and unwanted content across their home network, I can’t recommend this enough.