Unable to install Pi-Hole

Hi all,

I'm a network engineer, however this is my first experience dealing with Raspberry PI's. I'm sort of at a loss, and hoping that I could get some guidance on how to proceed.

I just picked up a PI4 kit with the intention of using it as a Pi-Hole. Got everything connected, hooked up and visible on my network. Enabled VNC and SSH. no issue there.

Did some googling on how to setup and configure Pi-Hole. Here's the problem. I have the PI4 fully updated from what i can tell with Buster. (Desktop version).

I ran the following command

curl -sSL https://install.pi-hole.net | bash

the checks failed on Script called with non-root privileges.

So i then added

curl -sSL https://install.pi-hole.net | sudo bash

All the checks passed, however the automated installer did not load. I just got the $ Prompt.

So i then ran,

wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh

and got the same results.

Then I ran,
curl -sSL https://install.pi-hole.net | sudo bash -x

If it helps, here's the output.

pi@raspberrypi:~ $ curl -sSL https://install.pi-hole.net | sudo bash -x
+ set -e
++ cat
+ DNS_SERVERS='Google (ECS);8.8.8.8;8.8.4.4;2001:4860:4860:0:0:0:0:8888;2001:4860:4860:0:0:0:0:8844
OpenDNS (ECS);208.67.222.222;208.67.220.220;2620:119:35::35;2620:119:53::53
Level3;4.2.2.1;4.2.2.2;;
Comodo;8.26.56.26;8.20.247.20;;
DNS.WATCH;84.200.69.80;84.200.70.40;2001:1608:10:25:0:0:1c04:b12f;2001:1608:10:25:0:0:9249:d69b
Quad9 (filtered, DNSSEC);9.9.9.9;149.112.112.112;2620:fe::fe;2620:fe::9
Quad9 (unfiltered, no DNSSEC);9.9.9.10;149.112.112.10;2620:fe::10;2620:fe::fe:10
Quad9 (filtered + ECS);9.9.9.11;149.112.112.11;2620:fe::11;
Cloudflare;1.1.1.1;1.0.0.1;2606:4700:4700::1111;2606:4700:4700::1001'
+ installLogLoc=/etc/pihole/install.log
+ setupVars=/etc/pihole/setupVars.conf
+ lighttpdConfig=/etc/lighttpd/lighttpd.conf
+ coltable=/opt/pihole/COL_TABLE
+ webroot=/var/www/html
+ webInterfaceGitUrl=https://github.com/pi-hole/AdminLTE.git
+ webInterfaceDir=/var/www/html/admin
+ piholeGitUrl=https://github.com/pi-hole/pi-hole.git
+ PI_HOLE_LOCAL_REPO=/etc/.pihole
+ PI_HOLE_FILES=(chronometer list piholeDebug piholeLogFlush setupLCD update version gravity uninstall webpage)
+ PI_HOLE_INSTALL_DIR=/opt/pihole
+ PI_HOLE_CONFIG_DIR=/etc/pihole
+ PI_HOLE_BIN_DIR=/usr/local/bin
+ PI_HOLE_BLOCKPAGE_DIR=/var/www/html/pihole
+ useUpdateVars=false
+ adlistFile=/etc/pihole/adlists.list
+ IPV4_ADDRESS=
+ IPV6_ADDRESS=
+ QUERY_LOGGING=true
+ INSTALL_WEB_INTERFACE=true
+ PRIVACY_LEVEL=0
+ '[' -z root ']'
+ '[' -t 0 ']'
+ screen_size='24 80'
+ printf -v rows %d 24
+ printf -v columns %d 80
+ r=12
+ c=40
+ r=20
+ c=70
+ skipSpaceCheck=false
+ reconfigure=false
+ runUnattended=false
+ INSTALL_WEB_SERVER=true
+ [[ -f /opt/pihole/COL_TABLE ]]
+ COL_NC='\e[0m'
+ COL_LIGHT_GREEN='\e[1;32m'
+ COL_LIGHT_RED='\e[1;31m'
+ TICK='[\e[1;32m✓\e[0m]'
+ CROSS='[\e[1;31m✗\e[0m]'
+ INFO='[i]'
+ DONE='\e[1;32m done!\e[0m'
+ OVER='\r\033[K'
+ counter=0
+ [[ '' != true ]]
+ main
+ local 'str=Root user check'
+ printf '\n'

+ [[ 0 -eq 0 ]]
+ printf '  %b %s\n' '[\e[1;32m✓\e[0m]' 'Root user check'
  [✓] Root user check
+ show_ascii_berry
+ echo -e '
        \e[1;32m.;;,.
        .ccccc:,.
         :cccclll:.      ..,,
          :ccccclll.   ;ooodc
           '\''ccll:;ll .oooodc
             .;cll.;;looo:.
                 \e[1;31m.. '\'','\''.
                .'\'',,,,,,'\''.
              .'\'',,,,,,,,,,.
            .'\'',,,,,,,,,,,,....
          ....'\'''\'''\'',,,,,,,'\''.......
        .........  ....  .........
        ..........      ..........
        ..........      ..........
        .........  ....  .........
          ........,,,,,,,'\''......
            ....'\'',,,,,,,,,,,,.
               .'\'',,,,,,,,,'\''.
                .'\'',,,,,,'\''.
                  ..'\'''\'''\''.\e[0m
'

        .;;,.
        .ccccc:,.
         :cccclll:.      ..,,
          :ccccclll.   ;ooodc
           'ccll:;ll .oooodc
             .;cll.;;looo:.
                 .. ','.
                .',,,,,,'.
              .',,,,,,,,,,.
            .',,,,,,,,,,,,....
          ....''',,,,,,,'.......
        .........  ....  .........
        ..........      ..........
        ..........      ..........
        .........  ....  .........
          ........,,,,,,,'......
            ....',,,,,,,,,,,,.
               .',,,,,,,,,'.
                .',,,,,,'.
                  ..'''.

+ make_temporary_log
++ mktemp /tmp/pihole_temp.XXXXXX
+ TEMPLOG=/tmp/pihole_temp.9qfOfI
+ exec
+ rm /tmp/pihole_temp.9qfOfI
+ distro_check
+ is_command apt-get
+ local check_command=apt-get
+ command -v apt-get
+ PKG_MANAGER=apt-get
+ UPDATE_PKG_CACHE='apt-get update'
+ PKG_INSTALL=("${PKG_MANAGER}" -qq --no-install-recommends install)
+ PKG_COUNT='apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst || true'
+ APT_SOURCES=/etc/apt/sources.list
+ awk 'BEGIN{a=1;b=0}/bionic main/{a=0}/bionic.*universe/{b=1}END{exit a + b}' /etc/apt/sources.list
+ update_package_cache
+ local 'str=Update local cache of available packages'
+ printf '  %b %s...' '[i]' 'Update local cache of available packages'
  [i] Update local cache of available packages...+ eval 'apt-get update'
+ printf '%b  %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Update local cache of available packages'
  [✓] Update local cache of available packages
+ apt-cache show iproute2
+ iproute_pkg=iproute2
+ is_command php
+ local check_command=php
+ command -v php
+ [[ '' != true ]]
+ apt-cache show php
+ phpVer=php
+ apt-cache show php-sqlite3
+ phpSqlite=sqlite3
+ INSTALLER_DEPS=(dhcpcd5 git "${iproute_pkg}" whiptail dnsutils)
+ PIHOLE_DEPS=(cron curl iputils-ping lsof netcat psmisc sudo unzip wget idn2 sqlite3 libcap2-bin dns-root-data libcap2)
+ PIHOLE_WEB_DEPS=(lighttpd "${phpVer}-common" "${phpVer}-cgi" "${phpVer}-${phpSqlite}" "${phpVer}-xml" "${phpVer}-intl")
+ LIGHTTPD_USER=www-data
+ LIGHTTPD_GROUP=www-data
+ LIGHTTPD_CFG=lighttpd.conf.debian
+ [[ -f /etc/pihole/setupVars.conf ]]
+ [[ false == true ]]
+ verifyFreeDiskSpace
+ local 'str=Disk space check'
+ local required_free_kilobytes=51200
+ local existing_free_kilobytes
++ df -Pk
++ grep -m1 '\/$'
++ awk '{print $4}'
+ existing_free_kilobytes=55463840
+ [[ 55463840 =~ ^([0-9])+$ ]]
+ [[ 55463840 -lt 51200 ]]
+ printf '  %b %s\n' '[\e[1;32m✓\e[0m]' 'Disk space check'
  [✓] Disk space check
+ notify_package_updates_available
+ local 'str=Checking apt-get for upgraded packages'
+ printf '\n  %b %s...' '[i]' 'Checking apt-get for upgraded packages'

  [i] Checking apt-get for upgraded packages...++ eval 'apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst || true'
+++ apt-get -s -o Debug::NoLocking=true upgrade
+++ grep -c '^Inst'
+ updatesToInstall=75
++ uname -r
+ [[ -d /lib/modules/4.19.118-v7l+ ]]
+ [[ 75 -eq 0 ]]
+ printf '%b  %b %s... %s updates available\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Checking apt-get for upgraded packages' 75
  [✓] Checking apt-get for upgraded packages... 75 updates available
+ printf '  %b %bIt is recommended to update your OS after installing the Pi-hole!%b\n\n' '[i]' '\e[1;32m' '\e[0m'
  [i] It is recommended to update your OS after installing the Pi-hole!

+ install_dependent_packages dhcpcd5 git iproute2 whiptail dnsutils
+ counter=1
+ [[ 1 == 1 ]]
+ printf '  %b Installer Dependency checks...\n' '[i]'
  [i] Installer Dependency checks...
+ declare -a installArray
+ is_command apt-get
+ local check_command=apt-get
+ command -v apt-get
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' dhcpcd5
  [i] Checking for dhcpcd5...+ dpkg-query -W '-f=${Status}' dhcpcd5
+ grep 'ok installed'
+ printf '%b  %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' dhcpcd5
  [✓] Checking for dhcpcd5
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' git
  [i] Checking for git...+ dpkg-query -W '-f=${Status}' git
+ grep 'ok installed'
+ printf '%b  %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' git
  [✓] Checking for git
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' iproute2
  [i] Checking for iproute2...+ dpkg-query -W '-f=${Status}' iproute2
+ grep 'ok installed'
+ printf '%b  %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' iproute2
  [✓] Checking for iproute2
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' whiptail
  [i] Checking for whiptail...+ dpkg-query -W '-f=${Status}' whiptail
+ grep 'ok installed'
+ printf '%b  %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' whiptail
  [✓] Checking for whiptail
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' dnsutils
  [i] Checking for dnsutils...+ dpkg-query -W '-f=${Status}' dnsutils
+ grep 'ok installed'
+ printf '%b  %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' dnsutils
  [✓] Checking for dnsutils
+ [[ 0 -gt 0 ]]
+ printf '\n'

+ return 0
+ os_check
+ local remote_os_domain valid_os valid_version detected_os_pretty detected_os detected_version display_warning
+ remote_os_domain=versions.pi-hole.net
+ valid_os=false
+ valid_version=false
+ display_warning=true
++ grep PRETTY_NAME
++ cat /etc/os-release
++ cut -d = -f2-
++ tr -d '"'
+ detected_os_pretty='Raspbian GNU/Linux 10 (buster)'
+ detected_os=Raspbian
++ grep VERSION_ID
++ cat /etc/os-release
++ cut -d = -f2-
++ tr -d '"'
+ detected_version=10
+ IFS=' '
+ read -r -a supportedOS
++ dig +short -t txt versions.pi-hole.net
++ tr -d '"'

Any help would be greatly appreciated.

Thank again!

Can you try dig -t txt versions.pi-hole.net and show the output?

Dan, Thank you for the response.

Here's what i got.

pi@raspberrypi:~ $ dig -t txt versions.pi-hole.net

; <<>> DiG 9.11.5-P4-5.1+deb10u1-Raspbian <<>> -t txt versions.pi-hole.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 40815
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: c398f515711131ab (echoed)
;; QUESTION SECTION:
;versions.pi-hole.net. IN TXT

;; Query time: 0 msec
;; SERVER: 192.168.2.12#53(192.168.2.12)
;; WHEN: Sat Jul 25 14:29:22 CDT 2020
;; MSG SIZE rcvd: 61

pi@raspberrypi:~ $

Do you have any Active Directory DNS servers being used by the Raspberry Pi?

Yes, currently. Plan to change that once the Pi-Hole is up and running. Let me try changing DNS to google?

Sure, try dig -t txt versions.pi-hole.net @8.8.8.8 and then dig -t txt +nocookie versions.pi-hole.net @192.168.2.12

Ok, so i don't understand, but before I ran your suggestion, I updated DNS to google, tried the curl -sSL https://install.pi-hole.net | sudo bash again,

This time it looks like the automated installed started. When this completes i'll run your commands, so i can understand why it's not working.

If you changed /etc/resolv.conf to point to Google then the install should work, AD DNS doesn't like DNS cookies and will throw a FORMERR if any query uses them. There's another issue that found the same result.

Interesting. thank you for your help, however, the installer proceeded, checked all the options I wanted, then as it was continuing, got the following...

[i] Processing apt-get install(s) for: netcat idn2 sqlite3 dns-root-data lighttpd php-common php-cgi php-sqlite3 php-xml php-intl, please wait...

E: Failed to fetch http://mirror.sjc02.svwh.net/raspbian/raspbian/pool/main/libi/libidn2/idn2_2.0.5-1+deb10u1_armhf.deb Cannot initiate the connection to mirror.sjc02.svwh.net:80 (2606:c680:0:b:3830:34ff:fe66:6663). - connect (101: Network is unreachable) Could not connect to mirror.sjc02.svwh.net:80 (72.5.72.15), connection timed out
E: Failed to fetch http://mirror.sjc02.svwh.net/raspbian/raspbian/pool/main/p/php-defaults/php-cgi_7.3+69_all.deb Cannot initiate the connection to mirror.sjc02.svwh.net:80 (2606:c680:0:b:3830:34ff:fe66:6663). - connect (101: Network is unreachable)
E: Failed to fetch http://mirror.sjc02.svwh.net/raspbian/raspbian/pool/main/p/php-defaults/php-intl_7.3+69_all.deb Cannot initiate the connection to mirror.sjc02.svwh.net:80 (2606:c680:0:b:3830:34ff:fe66:6663). - connect (101: Network is unreachable)
E: Failed to fetch http://mirror.sjc02.svwh.net/raspbian/raspbian/pool/main/p/php-defaults/php-sqlite3_7.3+69_all.deb Cannot initiate the connection to mirror.sjc02.svwh.net:80 (2606:c680:0:b:3830:34ff:fe66:6663). - connect (101: Network is unreachable)
E: Failed to fetch http://mirror.sjc02.svwh.net/raspbian/raspbian/pool/main/p/php-defaults/php-xml_7.3+69_all.deb Cannot initiate the connection to mirror.sjc02.svwh.net:80 (2606:c680:0:b:3830:34ff:fe66:6663). - connect (101: Network is unreachable)
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

I reran the installer and looks to be proceeding.

Do you have IPv6 connectivity for the Raspberry Pi?

Edit: I see apt does try to fall back to IPv4. DNS resolution is working since you are getting an IP address for the domain name, probably a networking issue or a routing issue.

I was seeing reports of people having to run the installer twice, so i don't know. but I've now got it up and running. Thanks again for your guidance.

A post was split to a new topic: Unable to install Pihole v5.1

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.