This page covers the most common issues encountered when deploying Pi-hole on Ubuntu with this toolset, along with diagnostic commands and fixes drawn from the known behavior ofDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/damianiglesias/pihole-ubuntu-deploy/llms.txt
Use this file to discover all available pages before exploring further.
deploy.sh.
Common Issues
"No Internet connection detected" error during install
"No Internet connection detected" error during install
Cause: The VM’s network adapter is not configured for external network access. Fix:
deploy.sh pings 8.8.8.8 during Step 1 (Network Prep) and exits with a fatal error if there is no response.The exact check in the script:- In VirtualBox or VMware, open the VM’s network settings and switch the adapter to Bridged or NAT
- Start the VM and verify internet access before running the script:
- If the ping succeeds, re-run the script:
sudo ./deploy.sh
A Host-Only adapter alone has no route to the internet. You must add a second NAT adapter if you want to install via Host-Only networking.
Pi-hole installation failed (curl pipe to bash)
Pi-hole installation failed (curl pipe to bash)
Cause: Either Fix:
apt-get update failed in Step 2, or DNS was not resolving install.pi-hole.net when the curl command ran in Step 3. The script exits with an error if command -v pihole returns nothing after the install:-
Check that
/etc/resolv.confcontains Google’s nameserver:Expected output:nameserver 8.8.8.8 -
If the file is missing or wrong, manually set it:
-
Verify DNS resolution:
-
Re-run the installer:
Port 53 already in use
Port 53 already in use
Cause: If Then verify the port is free:Restart Pi-hole’s DNS service:
systemd-resolved is still running and holding port 53. deploy.sh stops and disables it during Step 1, but if the script failed before completing that step, or if systemd-resolved was restarted manually, the port will remain occupied.Diagnose:systemd-resolved appears in the output, it is still using port 53.Fix:Unbound not resolving (DNS failures after enabling)
Unbound not resolving (DNS failures after enabling)
Cause: Unbound is an experimental feature in Check Unbound logs for errors:
deploy.sh v4.1 and is known to not work correctly in the bash script deployment. This is a documented issue — the author is working on a fix for a future version.Symptoms: DNS queries time out or fail; websites do not load after enabling Unbound in Step 4.5.Fix (disable Unbound as upstream in Pi-hole):- Open the Pi-hole web admin:
http://<pi-hole-ip>/admin - Go to Settings → DNS
- Uncheck Custom 1 (
127.0.0.1#5335) - Check a standard upstream provider (e.g., Google —
8.8.8.8) - Save settings
The Ansible/Docker deployment method does not have this issue — Unbound runs correctly as a container using the
mvance/unbound image, which is pre-configured and isolated from the host OS.Can't access Pi-hole web admin
Can't access Pi-hole web admin
Cause: UFW is blocking port 80, or you are using the wrong IP address to access the admin panel.Fix:
-
Ensure UFW allows port 80:
-
Find the correct Pi-hole IP address:
-
Access the admin panel at:
-
Check UFW rules to confirm port 80 is open:
Forgot Pi-hole admin password
Forgot Pi-hole admin password
Cause: The password set during Step 4 of You will be prompted to type and confirm the new password.Fix — set password directly:Replace
deploy.sh was forgotten or not recorded.Fix — interactive prompt:newpassword with your desired password. The change takes effect immediately — no restart required.Static IP configuration not working
Static IP configuration not working
Cause: The Netplan file at Check available network interfaces:Test Netplan configuration before applying:This applies the config temporarily and reverts automatically after 120 seconds if you do not confirm — useful for avoiding a locked-out situation.Check the generated Netplan file:Verify the interface name, IP address, and gateway are all correct.
/etc/netplan/99-pihole-static.yaml has incorrect permissions (must be 0600), or the wrong interface name was entered during Step 6 of deploy.sh.Fix — correct file permissions:SSH locked out after enabling UFW
SSH locked out after enabling UFW
Cause: UFW was enabled without port 22 being allowed first. This should not happen with Verify SSH is now accessible:
deploy.sh (which allows port 22 before enabling UFW), but it can occur if UFW is manually reset or re-enabled.Fix (requires console or VNC access to the VM):Connect to the machine via VirtualBox/VMware console (not SSH), then:Log2Ram not active after install
Log2Ram not active after install
Cause: Log2Ram does not start immediately after installation — it activates on the next system reboot. This is by design: Log2Ram mounts After reboot, verify Log2Ram is active:You should see
/var/log to a RAM tmpfs on boot.Fix:active (running) and a log entry confirming it has mounted the log directory to RAM.DNS Manager entries not syncing
DNS Manager entries not syncing
Cause: The
run_dns_sync.sh launcher script contains incorrect credentials or URL. deploy.sh pre-populates PIHOLE_PASSWORD from the password entered during Step 4, but if the password was changed after installation, or if the URL is wrong, the sync will fail.Fix:-
Open the launcher script:
-
Verify and update these two lines:
-
Save and run the sync:
-
DNS entries are defined in:
Format:
IP Domain(one entry per line, lines starting with#are comments)