tomspark wrote:
That last line is the whole story: failed to bind host port 0.0.0.0:53/tcp: address already in use — Pi-hole can't start because something else on the host already owns port 53. On the box run sudo ss -lptn 'sport = :53' and paste what it shows. On a WSL2/Ubuntu setup it's almost always systemd-resolved's stub listener sitting on 53. SparkBox's installer frees 53 automatically on a normal install, but if Pi-hole got toggled on later via the dashboard that guard doesn't re-run, which fits what you're seeing. Also worth noting you're on v1.6.115 — several Pi-hole fixes shipped through v1.6.121 (listening mode, the admin password), so run sparkbox self-update to v1.6.122 before retrying. Paste the ss output and I'll give you the one-liner to free 53 for your case.
tomspark wrote:
Thanks, that confirms it — and it's not anything you did. Something Ubuntu runs for its own DNS is already sitting on the exact port Pi-hole needs, so Pi-hole can't grab it. This is a known gap when Pi-hole gets switched on after the first SparkBox install. The cleanest fix is to re-run the official install command — it automatically clears whatever's holding that port and updates you from 1.6.115 to the current 1.6.122 at the same time. Paste this on the box: curl -sSL https://get.sparkbox.app/install.sh | sudo bash You'll know it worked when it finishes without the red "address already in use" line and Pi-hole shows as started. If it stops partway, copy what it printed and I'll take it from there.