AdguardTeam / AdguardTeam/AdGuardHome
AdGuard Home Installer on Raspberry Pi Allows Installation Into /tmp
- Langage dominant
- TypeScript
- Étoiles
- 36.9k
- Forks
- 2.5k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### Prerequisites
- [x] I have checked the [Wiki](https://github.com/AdguardTeam/AdGuardHome/wiki) and [Discussions](https://github.com/AdguardTeam/AdGuardHome/discussions/categories/q-a) and found no answer
- [x] I have searched other issues and found no duplicates
- [x] I want to report a bug and not [ask a question or ask for help](https://github.com/AdguardTeam/AdGuardHome/discussions/categories/q-a)
- [x] I have set up AdGuard Home correctly and [configured clients to use it](https://github.com/AdguardTeam/AdGuardHome/wiki/Clients). (Use the [Discussions](https://github.com/AdguardTeam/AdGuardHome/discussions/categories/q-a) for help with installing and configuring clients.)
### Platform (OS and CPU architecture)
Custom (please mention in the description)
### Installation
GitHub releases or script from README
### Setup
On one machine
### AdGuard Home version
v0.107.77
### Action
I debugged and corrected this with the help of CoPilot and it generated this summary for me. It's all entered into the Action block rather tan broken across the multiple fields - hope that's OK.
**AdGuard Home Installer on Raspberry Pi Allows Installation Into /tmp, Producing a Non Persistent, Non Functional Systemd Service**
**Environment**
• Device: Raspberry Pi 4
• OS: Raspberry Pi OS Lite (Debian 12 / Bookworm, 64 bit)
• AdGuard Home Version: Latest release (June 2026)
• Install Method: AdGuardHome -s install from extracted tarball
**Summary**
The AdGuard Home installer successfully completes when run from a temporary filesystem (/tmp), but the resulting installation is:
• non persistent
• non functional
• unable to start via systemd
• missing configuration directories
• silently broken after reboot
The installer does not warn the user that /tmp is an invalid installation location, and the systemd service is created pointing to paths that disappear on reboot. Additionally, the installer does not detect or warn about missing IPv6 Router Advertisement capability, which results in IPv6 DNS failures unless the user manually deploys an external RA daemon.
**What Happened**
1. Installer placed AdGuard Home into /tmp
The tarball was extracted in /tmp, and the installer was run from there:
/tmp/AdGuardHome/AdGuardHome -s install
The installer:
• created a systemd service
• reported success
• started the service (temporarily)
But because /tmp is a volatile tmpfs, the entire installation vanished on reboot.
Symptoms
• systemctl status AdGuardHome → service failed
• service pointed to non existent paths
• config file missing
• working directory missing
• binary missing
• logs missing
This left the system in a broken state with no clear error message.
2. Systemd service silently failed
The generated service file referenced:
/tmp/AdGuardHome/AdGuardHome
/tmp/AdGuardHome/AdGuardHome.yaml
After reboot, these paths no longer existed.
Systemd reported:
• “file not found”
• “permission denied”
• “failed to start AdGuard Home”
But the installer did not warn about the invalid installation path.
3. Manual execution of the binary failed
Running:
/home/pimaster/AdGuardHome/AdGuardHome
produced:
• missing config file
• missing working directory
• permission errors
This confirmed the installation was incomplete and non persistent.
4. IPv6 Related Installer Shortcomings
AdGuard Home relies on IPv6 DNS, but the installer:
• does not check whether the host is advertising IPv6 prefixes
• does not warn when IPv6 DNS will fail due to missing Router Advertisements
• does not detect that the router (Telus NH20A) cannot advertise custom DNS
• does not provide guidance for IPv6 only or dual stack environments
As a result, IPv6 DNS queries failed until we manually deployed a separate RA daemon (dnsmasq) to advertise a ULA prefix and the Pi’s IPv6 DNS address. This is a common scenario on ISP locked routers, and the installer should detect or warn about it.
**What We Had To Do To Fix It**
1. Remove the broken systemd service
sudo systemctl stop AdGuardHome
sudo systemctl disable AdGuardHome
sudo rm /etc/systemd/system/AdGuardHome.service
sudo systemctl daemon-reload
2. Delete the incomplete installation
rm -rf /tmp/AdGuardHome
rm -rf ~/AdGuardHome
3. Reinstall from a persistent directory
mkdir ~/adguard
cd ~/adguard
tar -xvf AdGuardHome_linux_arm64.tar.gz
sudo ./AdGuardHome/AdGuardHome -s install
This produced a correct, persistent installation.
5. Required Configuration File Fixes
The installer created an incomplete or incorrect config directory structure. We had to manually correct:
AdGuardHome.yaml paths
The service expected:
/opt/AdGuardHome/AdGuardHome.yaml
But the installer placed it elsewhere. We had to manually move or recreate the directory structure so that:
/opt/AdGuardHome/
AdGuardHome
AdGuardHome.yaml
data/
work/
existed and matched the systemd service’s expectations.
Permissions
We had to ensure:
sudo chown -R adguard:adguard /opt/AdGuardHome
so the service could read/write logs and config.
6. IPv6 Fixes Required Outside AdGuard Home
Because the router could not advertise custom DNS or ULA prefixes, IPv6 DNS failed until we manually deployed:
dnsmasq RA configuration
port=0
interface=eth0
interface=wlan0
enable-ra
dhcp-range=fd00:1:1::,fd00:1:1::ffff,ra-only
dhcp-option=option6:dns-server,[fd00:1:1::10]
This allowed all LAN devices to:
• auto configure ULAs
• route IPv6 correctly
• reach AdGuard Home via IPv6
AdGuard Home itself does not provide RA capability, but the installer should warn when IPv6 DNS will not function without it.
**Recommendations for the AdGuard Team**
1. Block installation from /tmp or any tmpfs
If $PWD is a volatile filesystem, the installer should:
• refuse to install
• or warn explicitly
• or prompt for a safe installation directory
This would prevent the entire failure.
2. Validate systemd service startup
After installation, the script should:
• verify the service starts
• verify the binary path exists
• verify the config directory exists
• report errors clearly
3. Validate IPv6 environment
The installer should detect:
• missing Router Advertisements
• missing IPv6 DNS reachability
• routers that cannot advertise custom DNS
• lack of ULA prefix
And warn the user that IPv6 DNS will not function without external RA support.
4. Improve documentation
Documentation should include:
• recommended installation paths
• warnings about /tmp
• IPv6 requirements
• troubleshooting steps for systemd failures
Closing Notes
Once installed outside /tmp and with proper IPv6 RA support, AdGuard Home works flawlessly on Raspberry Pi. The issues encountered were entirely due to the installer allowing installation into a volatile directory and not validating IPv6 prerequisites. A few small improvements to the installer would prevent this class of failure entirely.
### Expected result
See details above
### Actual result
See details above
### Additional information and/or screenshots
See details above
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.