Install on Ubuntu 18.03.3 Failed

Expected Behaviour:

Pi-hole is installed on Ubuntu 18.04.3 and runs successfully

Actual Behaviour:

Install terminates and pihole command is unrecognized.

Attempting to install Pihole to run together with Wireguard VPN on Digital Ocean 18.04.3 server. Server is currently configured to run a WordPress blog deployed using EasyEngine4.

Any advice as to why the install fails would be greatly appreciated.

Debug Token:

Verbose output from Pihole installer is provided below:

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

+ regexFile=/etc/pihole/regex.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'

+ binary=tbd

+ 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.VNu4pg

+ exec

+ rm /tmp/pihole_temp.VNu4pg

+ 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} --yes --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

+ apt-get install --dry-run iproute2

+ iproute_pkg=iproute2

+ is_command php

+ local check_command=php

+ command -v php

++ php

+ printf ' %b Existing PHP installation detected : PHP version %s\n' '[i]' 7.2.27-1+ubuntu18.04.1+deb.sury.org+1

[i] Existing PHP installation detected : PHP version 7.2.27-1+ubuntu18.04.1+deb.sury.org+1

++ php

+ printf -v phpInsMajor %d 7

++ php

+ printf -v phpInsMinor %d 2

+ '[' 7 -ge 7 ']'

+ phpInsNewer=true

+ [[ true != true ]]

+ phpVer=php7.2

+ apt-get install --dry-run php7.2-sqlite3

+ phpSqlite=sqlite3

+ INSTALLER_DEPS=(apt-utils dialog debconf dhcpcd5 git ${iproute_pkg} whiptail)

+ PIHOLE_DEPS=(cron curl dnsutils iputils-ping lsof netcat psmisc sudo unzip wget idn2 sqlite3 libcap2-bin dns-root-data resolvconf libcap2)

+ PIHOLE_WEB_DEPS=(lighttpd ${phpVer}-common ${phpVer}-cgi ${phpVer}-${phpSqlite})

+ 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

++ awk '{print $4}'

++ grep -m1 '\/$'

++ df -Pk

+ existing_free_kilobytes=14197724

+ [[ 14197724 =~ ^([0-9])+$ ]]

+ [[ 14197724 -lt 51200 ]]

+ printf ' %b %s\n' '[\e[1;32m✓\e[0m]' 'Disk space check'

[ **✓** ] Disk space check

+ 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

+ 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'

+++ grep -c '^Inst'

+++ apt-get -s -o Debug::NoLocking=true upgrade

+++ true

+ updatesToInstall=0

++ uname -r

+ [[ -d /lib/modules/4.15.0-52-generic ]]

+ [[ 0 -eq 0 ]]

+ printf '%b %b %s... up to date!\n\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Checking apt-get for upgraded packages'

[ **✓** ] Checking apt-get for upgraded packages... up to date!

+ install_dependent_packages apt-utils dialog debconf dhcpcd5 git iproute2 whiptail

+ counter=1

+ [[ 1 == 1 ]]

+ printf ' %b Installer Dependency checks...\n' '[i]'

[i] Installer Dependency checks...

+ declare -a installArray

+ is_command debconf-apt-progress

+ local check_command=debconf-apt-progress

+ command -v debconf-apt-progress

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' apt-utils

[i] Checking for apt-utils...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' apt-utils

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' apt-utils

[ **✓** ] Checking for apt-utils

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' dialog

[i] Checking for dialog...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' dialog

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' dialog

[ **✓** ] Checking for dialog

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' debconf

[i] Checking for debconf...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' debconf

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' debconf

[ **✓** ] Checking for debconf

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' dhcpcd5

[i] Checking for dhcpcd5...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' dhcpcd5

+ 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...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' git

+ 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...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' iproute2

+ 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...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' whiptail

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' whiptail

[ **✓** ] Checking for whiptail

+ [[ 0 -gt 0 ]]

+ printf '\n'

+ return 0

+ checkSelinux

+ is_command getenforce

+ local check_command=getenforce

+ command -v getenforce

+ [[ false == false ]]

+ welcomeDialogs

+ whiptail --msgbox --backtitle Welcome --title 'Pi-hole automated installer' '\n\nThis installer will transform your device into a network-wide ad blocker!' 20 70

+ whiptail --msgbox --backtitle Plea --title 'Free and open source' '\n\nThe Pi-hole is free, but powered by your donations: http://pi-hole.net/donate' 20 70

+ whiptail --msgbox --backtitle 'Initiating network interface' --title 'Static IP Needed' '\n\nThe Pi-hole is a SERVER so it needs a STATIC IP ADDRESS to function properly.

In the next section, you can choose to use your current network settings (DHCP) or to manually edit them.' 20 70

+ mkdir -p /etc/pihole/

+ get_available_interfaces

++ cut -d@ -f1

++ cut -d: -f1

++ awk '{print $2}'

++ grep -v lo

++ ip --oneline link show up

+ availableInterfaces='eth0

docker0

br-a17dfab80a0a

br-db00d9d6957e

br-62fed25c7186

vethaed9fa4

veth1e55a2b

vethc4436e5

vethe30d1c5

veth50c3d85

veth0f7d512

vethb0db17b

vethac2f10c

vethec3ba08

veth16698eb

vethbb9e1bf

wg0'

+ chooseInterface

+ interfacesArray=()

+ local interfacesArray

+ local interfaceCount

+ local chooseInterfaceCmd

+ local chooseInterfaceOptions

+ local firstLoop=1

++ wc -l

+ interfaceCount=17

+ [[ 17 -eq 1 ]]

+ read -r line

+ mode=OFF

+ [[ 1 -eq 1 ]]

+ firstLoop=0

+ mode=ON

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ mode=OFF

+ [[ 0 -eq 1 ]]

+ interfacesArray+=("${line}" "available" "${mode}")

+ read -r line

+ chooseInterfaceCmd=(whiptail --separate-output --radiolist "Choose An Interface (press space to select)" ${r} ${c} ${interfaceCount})

++ whiptail --separate-output --radiolist 'Choose An Interface (press space to select)' 20 70 17 eth0 available ON docker0 available OFF br-a17dfab80a0a available OFF br-db00d9d6957e available OFF br-62fed25c7186 available OFF vethaed9fa4 available OFF veth1e55a2b available OFF vethc4436e5 available OFF vethe30d1c5 available OFF veth50c3d85 available OFF veth0f7d512 available OFF vethb0db17b available OFF vethac2f10c available OFF vethec3ba08 available OFF veth16698eb available OFF vethbb9e1bf available OFF wg0 available OFF

+ chooseInterfaceOptions=wg0

+ for desiredInterface in ${chooseInterfaceOptions}

+ PIHOLE_INTERFACE=wg0

+ printf ' %b Using interface: %s\n' '[i]' wg0

[i] Using interface: wg0

+ setDNS

+ local DNSSettingsCorrect

+ DNSChooseOptions=()

+ local DNSServerCount=0

+ OIFS='

'

+ IFS='

'

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='Google (ECS)'

+ DNSChooseOptions[DNSServerCount]='Google (ECS)'

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='OpenDNS (ECS)'

+ DNSChooseOptions[DNSServerCount]='OpenDNS (ECS)'

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName=Level3

+ DNSChooseOptions[DNSServerCount]=Level3

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName=Comodo

+ DNSChooseOptions[DNSServerCount]=Comodo

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName=DNS.WATCH

+ DNSChooseOptions[DNSServerCount]=DNS.WATCH

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='Quad9 (filtered, DNSSEC)'

+ DNSChooseOptions[DNSServerCount]='Quad9 (filtered, DNSSEC)'

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='Quad9 (unfiltered, no DNSSEC)'

+ DNSChooseOptions[DNSServerCount]='Quad9 (unfiltered, no DNSSEC)'

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='Quad9 (filtered + ECS)'

+ DNSChooseOptions[DNSServerCount]='Quad9 (filtered + ECS)'

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName=Cloudflare

+ DNSChooseOptions[DNSServerCount]=Cloudflare

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=Custom

+ (( DNSServerCount=DNSServerCount+1 ))

+ DNSChooseOptions[DNSServerCount]=

+ IFS='

'

++ whiptail --separate-output --menu 'Select Upstream DNS Provider. To use your own, select Custom.' 20 70 7 'Google (ECS)' '' 'OpenDNS (ECS)' '' Level3 '' Comodo '' DNS.WATCH '' 'Quad9 (filtered, DNSSEC)' '' 'Quad9 (unfiltered, no DNSSEC)' '' 'Quad9 (filtered + ECS)' '' Cloudflare '' Custom ''

+ DNSchoices=Cloudflare

+ printf ' %b Using ' '[i]'

[i] Using + [[ Cloudflare == \C\u\s\t\o\m ]]

+ OIFS='

'

+ IFS='

'

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='Google (ECS)'

+ [[ Cloudflare == \G\o\o\g\l\e\ \(\E\C\S\) ]]

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='OpenDNS (ECS)'

+ [[ Cloudflare == \O\p\e\n\D\N\S\ \(\E\C\S\) ]]

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName=Level3

+ [[ Cloudflare == \L\e\v\e\l\3 ]]

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName=Comodo

+ [[ Cloudflare == \C\o\m\o\d\o ]]

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName=DNS.WATCH

+ [[ Cloudflare == \D\N\S\.\W\A\T\C\H ]]

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='Quad9 (filtered, DNSSEC)'

+ [[ Cloudflare == \Q\u\a\d\9\ \(\f\i\l\t\e\r\e\d\,\ \D\N\S\S\E\C\) ]]

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='Quad9 (unfiltered, no DNSSEC)'

+ [[ Cloudflare == \Q\u\a\d\9\ \(\u\n\f\i\l\t\e\r\e\d\,\ \n\o\ \D\N\S\S\E\C\) ]]

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName='Quad9 (filtered + ECS)'

+ [[ Cloudflare == \Q\u\a\d\9\ \(\f\i\l\t\e\r\e\d\ \+\ \E\C\S\) ]]

+ for DNSServer in ${DNS_SERVERS}

++ cut '-d;' -f1

+ DNSName=Cloudflare

+ [[ Cloudflare == \C\l\o\u\d\f\l\a\r\e ]]

+ printf '%s\n' Cloudflare

Cloudflare

++ cut '-d;' -f2

+ PIHOLE_DNS_1=1.1.1.1

++ cut '-d;' -f3

+ PIHOLE_DNS_2=1.0.0.1

+ break

+ IFS='

'

+ chooseBlocklists

+ [[ -f /etc/pihole/adlists.list ]]

+ mv /etc/pihole/adlists.list /etc/pihole/adlists.list.old

+ cmd=(whiptail --separate-output --checklist "Pi-hole relies on third party lists in order to block ads.\\n\\nYou can use the suggestions below, and/or add your own after installation\\n\\nTo deselect any list, use the arrow keys and spacebar" "${r}" "${c}" 6)

+ options=(StevenBlack "StevenBlack's Unified Hosts List" on MalwareDom "MalwareDomains" on Cameleon "Cameleon" on DisconTrack "Disconnect.me Tracking" on DisconAd "Disconnect.me Ads" on HostsFile "Hosts-file.net Ads" on)

++ whiptail --separate-output --checklist 'Pi-hole relies on third party lists in order to block ads.\n\nYou can use the suggestions below, and/or add your own after installation\n\nTo deselect any list, use the arrow keys and spacebar' 20 70 6 StevenBlack 'StevenBlack'\''s Unified Hosts List' on MalwareDom MalwareDomains on Cameleon Cameleon on DisconTrack 'Disconnect.me Tracking' on DisconAd 'Disconnect.me Ads' on HostsFile 'Hosts-file.net Ads' on

+ choices='StevenBlack

MalwareDom

Cameleon

DisconTrack

DisconAd

HostsFile'

+ for choice in ${choices}

+ appendToListsFile StevenBlack

+ case $1 in

+ echo https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

+ for choice in ${choices}

+ appendToListsFile MalwareDom

+ case $1 in

+ echo https://mirror1.malwaredomains.com/files/justdomains

+ for choice in ${choices}

+ appendToListsFile Cameleon

+ case $1 in

+ echo http://sysctl.org/cameleon/hosts

+ for choice in ${choices}

+ appendToListsFile DisconTrack

+ case $1 in

+ echo https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt

+ for choice in ${choices}

+ appendToListsFile DisconAd

+ case $1 in

+ echo https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt

+ for choice in ${choices}

+ appendToListsFile HostsFile

+ case $1 in

+ echo https://hosts-file.net/ad_servers.txt

+ use4andor6

+ local useIPv4

+ local useIPv6

+ cmd=(whiptail --separate-output --checklist "Select Protocols (press space to select)" ${r} ${c} 2)

+ options=(IPv4 "Block ads over IPv4" on IPv6 "Block ads over IPv6" on)

++ whiptail --separate-output --checklist 'Select Protocols (press space to select)' 20 70 2 IPv4 'Block ads over IPv4' on IPv6 'Block ads over IPv6' on

+ choices=IPv4

+ for choice in ${choices}

+ case ${choice} in

+ useIPv4=true

+ [[ -n true ]]

+ find_IPv4_information

+ local route

+ local IPv4bare

++ ip route get 8.8.8.8

+ route='8.8.8.8 via 134.209.208.1 dev eth0 src 134.209.220.62 uid 0

cache '

++ printf 134.209.220.62 uid 0 cache

+ printf -v IPv4bare 134.209.220.62

++ printf 134.209.208.1 dev eth0 src 134.209.220.62 uid 0 cache

+ printf -v IPv4gw 134.209.208.1

+ valid_ip 134.209.220.62

+ local ip=134.209.220.62

+ local stat=1

+ [[ 134.209.220.62 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]

+ OIFS='

'

+ IFS=.

+ ip=(${ip})

+ IFS='

'

+ [[ 134 -le 255 ]]

+ [[ 209 -le 255 ]]

+ [[ 220 -le 255 ]]

+ [[ 62 -le 255 ]]

+ stat=0

+ return 0

++ awk 'END {print}'

++ awk '{print $4}'

++ grep 134.209.220.62/

++ ip -oneline -family inet address show

+ IPV4_ADDRESS=134.209.220.62/20

+ getStaticIPv4Settings

+ local ipSettingsCorrect

+ whiptail --backtitle 'Calibrating network interface' --title 'Static IP Address' --yesno 'Do you want to use your current network settings as a static address?

IP address: 134.209.220.62/20

Gateway: 134.209.208.1' 20 70

+ whiptail --msgbox --backtitle 'IP information' --title 'FYI: IP Conflict' 'It is possible your router could still try to assign this IP to a device, which would cause a conflict. But in most cases the router is smart enough to not do that.

If you are worried, either manually set the address, or modify the DHCP reservation pool so it does not include the IP you want.

It is also possible to use a DHCP reservation, but if you are going to do that, you might as well set a static address.' 20 70

+ setStaticIPv4

+ local IFCFG_FILE

+ local CONNECTION_NAME

+ [[ -r /etc/sysconfig/network/ifcfg-wg0 ]]

+ [[ -f /etc/dhcpcd.conf ]]

+ setDHCPCD

+ grep -q 134.209.220.62/20 /etc/dhcpcd.conf

+ printf ' %b Static IP already configured\n' '[i]'

[i] Static IP already configured

+ return 0

+ [[ -n '' ]]

+ printf ' %b IPv4 address: %s\n' '[i]' 134.209.220.62/20

[i] IPv4 address: 134.209.220.62/20

+ printf ' %b IPv6 address: %s\n' '[i]' ''

[i] IPv6 address:

+ [[ ! -n true ]]

+ setAdminFlag

+ local WebToggleCommand

+ local WebChooseOptions

+ local WebChoices

+ WebToggleCommand=(whiptail --separate-output --radiolist "Do you wish to install the web admin interface?" ${r} ${c} 6)

+ WebChooseOptions=("On (Recommended)" "" on Off "" off)

++ whiptail --separate-output --radiolist 'Do you wish to install the web admin interface?' 20 70 6 'On (Recommended)' '' on Off '' off

+ WebChoices='On (Recommended)'

+ case ${WebChoices} in

+ printf ' %b Web Interface On\n' '[i]'

[i] Web Interface On

+ INSTALL_WEB_INTERFACE=true

+ [[ true == true ]]

+ WebToggleCommand=(whiptail --separate-output --radiolist "Do you wish to install the web server (lighttpd)?\\n\\nNB: If you disable this, and, do not have an existing webserver installed, the web interface will not function." "${r}" "${c}" 6)

+ WebChooseOptions=("On (Recommended)" "" on Off "" off)

++ whiptail --separate-output --radiolist 'Do you wish to install the web server (lighttpd)?\n\nNB: If you disable this, and, do not have an existing webserver installed, the web interface will not function.' 20 70 6 'On (Recommended)' '' on Off '' off

+ WebChoices='On (Recommended)'

+ case ${WebChoices} in

+ printf ' %b Web Server On\n' '[i]'

[i] Web Server On

+ INSTALL_WEB_SERVER=true

+ setLogging

+ local LogToggleCommand

+ local LogChooseOptions

+ local LogChoices

+ LogToggleCommand=(whiptail --separate-output --radiolist "Do you want to log queries?" "${r}" "${c}" 6)

+ LogChooseOptions=("On (Recommended)" "" on Off "" off)

++ whiptail --separate-output --radiolist 'Do you want to log queries?' 20 70 6 'On (Recommended)' '' on Off '' off

+ LogChoices='On (Recommended)'

+ case ${LogChoices} in

+ printf ' %b Logging On.\n' '[i]'

[i] Logging On.

+ QUERY_LOGGING=true

+ setPrivacyLevel

+ local LevelCommand

+ local LevelOptions

+ LevelCommand=(whiptail --separate-output --radiolist "Select a privacy mode for FTL. https://docs.pi-hole.net/ftldns/privacylevels/" "${r}" "${c}" 6)

+ LevelOptions=("0" "Show everything" on "1" "Hide domains" off "2" "Hide domains and clients" off "3" "Anonymous mode" off "4" "Disabled statistics" off)

++ whiptail --separate-output --radiolist 'Select a privacy mode for FTL. https://docs.pi-hole.net/ftldns/privacylevels/' 20 70 6 0 'Show everything' on 1 'Hide domains' off 2 'Hide domains and clients' off 3 'Anonymous mode' off 4 'Disabled statistics' off

+ PRIVACY_LEVEL=0

+ printf ' %b Privacy level %d' '[i]' 0

[i] Privacy level 0+ clone_or_update_repos

+ [[ false == true ]]

+ getGitFiles /etc/.pihole https://github.com/pi-hole/pi-hole.git

+ local directory=/etc/.pihole

+ local remoteRepo=https://github.com/pi-hole/pi-hole.git

+ local 'str=Check for existing repository in /etc/.pihole'

+ printf ' %b %s...' '[i]' 'Check for existing repository in /etc/.pihole'

[i] Check for existing repository in /etc/.pihole...+ is_repo /etc/.pihole

+ local directory=/etc/.pihole

+ local curdir

+ local rc

+ curdir=/root

+ [[ -d /etc/.pihole ]]

+ cd /etc/.pihole

+ git status --short

+ cd /root

+ return 0

+ printf '%b %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Check for existing repository in /etc/.pihole'

[ **✓** ] Check for existing repository in /etc/.pihole

+ update_repo /etc/.pihole

+ local directory=/etc/.pihole

+ local curdir

+ local 'str=Update repo in /etc/.pihole'

+ curdir=/root

+ cd /etc/.pihole

+ printf ' %b %s...' '[i]' 'Update repo in /etc/.pihole'

[i] Update repo in /etc/.pihole...+ git stash --all --quiet

+ git clean --quiet --force -d

+ git pull --quiet

+ printf '%b %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Update repo in /etc/.pihole'

[ **✓** ] Update repo in /etc/.pihole

+ cd /root

+ return 0

+ echo ''

+ return 0

+ [[ true == true ]]

+ getGitFiles /var/www/html/admin https://github.com/pi-hole/AdminLTE.git

+ local directory=/var/www/html/admin

+ local remoteRepo=https://github.com/pi-hole/AdminLTE.git

+ local 'str=Check for existing repository in /var/www/html/admin'

+ printf ' %b %s...' '[i]' 'Check for existing repository in /var/www/html/admin'

[i] Check for existing repository in /var/www/html/admin...+ is_repo /var/www/html/admin

+ local directory=/var/www/html/admin

+ local curdir

+ local rc

+ curdir=/root

+ [[ -d /var/www/html/admin ]]

+ cd /var/www/html/admin

+ git status --short

+ cd /root

+ return 0

+ printf '%b %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Check for existing repository in /var/www/html/admin'

[ **✓** ] Check for existing repository in /var/www/html/admin

+ update_repo /var/www/html/admin

+ local directory=/var/www/html/admin

+ local curdir

+ local 'str=Update repo in /var/www/html/admin'

+ curdir=/root

+ cd /var/www/html/admin

+ printf ' %b %s...' '[i]' 'Update repo in /var/www/html/admin'

[i] Update repo in /var/www/html/admin...+ git stash --all --quiet

+ git clean --quiet --force -d

+ git pull --quiet

+ printf '%b %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Update repo in /var/www/html/admin'

[ **✓** ] Update repo in /var/www/html/admin

+ cd /root

+ return 0

+ echo ''

+ return 0

+ dep_install_list=("${PIHOLE_DEPS[@]}")

+ local dep_install_list

+ [[ true == true ]]

+ dep_install_list+=("${PIHOLE_WEB_DEPS[@]}")

+ install_dependent_packages cron curl dnsutils iputils-ping lsof netcat psmisc sudo unzip wget idn2 sqlite3 libcap2-bin dns-root-data resolvconf libcap2 lighttpd php7.2-common php7.2-cgi php7.2-sqlite3

+ counter=2

+ [[ 2 == 1 ]]

+ printf ' %b Main Dependency checks...\n' '[i]'

[i] Main Dependency checks...

+ declare -a installArray

+ is_command debconf-apt-progress

+ local check_command=debconf-apt-progress

+ command -v debconf-apt-progress

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' cron

[i] Checking for cron...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' cron

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' cron

[ **✓** ] Checking for cron

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' curl

[i] Checking for curl...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' curl

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' curl

[ **✓** ] Checking for curl

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' dnsutils

[i] Checking for dnsutils...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' dnsutils

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' dnsutils

[ **✓** ] Checking for dnsutils

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' iputils-ping

[i] Checking for iputils-ping...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' iputils-ping

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' iputils-ping

[ **✓** ] Checking for iputils-ping

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' lsof

[i] Checking for lsof...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' lsof

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' lsof

[ **✓** ] Checking for lsof

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' netcat

[i] Checking for netcat...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' netcat

+ echo -e '\r\033[K [i] Checking for netcat (will be installed)'

[i] Checking for netcat (will be installed)

+ installArray+=("${i}")

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' psmisc

[i] Checking for psmisc...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' psmisc

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' psmisc

[ **✓** ] Checking for psmisc

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' sudo

[i] Checking for sudo...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' sudo

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' sudo

[ **✓** ] Checking for sudo

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' unzip

[i] Checking for unzip...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' unzip

+ echo -e '\r\033[K [i] Checking for unzip (will be installed)'

[i] Checking for unzip (will be installed)

+ installArray+=("${i}")

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' wget

[i] Checking for wget...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' wget

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' wget

[ **✓** ] Checking for wget

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' idn2

[i] Checking for idn2...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' idn2

+ echo -e '\r\033[K [i] Checking for idn2 (will be installed)'

[i] Checking for idn2 (will be installed)

+ installArray+=("${i}")

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' sqlite3

[i] Checking for sqlite3...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' sqlite3

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' sqlite3

[ **✓** ] Checking for sqlite3

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' libcap2-bin

[i] Checking for libcap2-bin...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' libcap2-bin

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' libcap2-bin

[ **✓** ] Checking for libcap2-bin

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' dns-root-data

[i] Checking for dns-root-data...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' dns-root-data

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' dns-root-data

[ **✓** ] Checking for dns-root-data

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' resolvconf

[i] Checking for resolvconf...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' resolvconf

+ echo -e '\r\033[K [i] Checking for resolvconf (will be installed)'

[i] Checking for resolvconf (will be installed)

+ installArray+=("${i}")

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' libcap2

[i] Checking for libcap2...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' libcap2

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' libcap2

[ **✓** ] Checking for libcap2

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' lighttpd

[i] Checking for lighttpd...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' lighttpd

+ echo -e '\r\033[K [i] Checking for lighttpd (will be installed)'

[i] Checking for lighttpd (will be installed)

+ installArray+=("${i}")

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' php7.2-common

[i] Checking for php7.2-common...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' php7.2-common

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' php7.2-common

[ **✓** ] Checking for php7.2-common

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' php7.2-cgi

[i] Checking for php7.2-cgi...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' php7.2-cgi

+ echo -e '\r\033[K [i] Checking for php7.2-cgi (will be installed)'

[i] Checking for php7.2-cgi (will be installed)

+ installArray+=("${i}")

+ for i in "$@"

+ printf ' %b Checking for %s...' '[i]' php7.2-sqlite3

[i] Checking for php7.2-sqlite3...+ grep 'ok installed'

+ dpkg-query -W '-f=${Status}' php7.2-sqlite3

+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' php7.2-sqlite3

[ **✓** ] Checking for php7.2-sqlite3

+ [[ 6 -gt 0 ]]

+ test_dpkg_lock

+ i=0

+ fuser /var/lib/dpkg/lock

+ return 0

+ debconf-apt-progress -- apt-get --yes --no-install-recommends install netcat unzip idn2 resolvconf lighttpd php7.2-cgi

What does that command output when you enter it directly?

That's not going to work well with Pi-hole on the same droplet.

Output is:

apt-get --yes --no-install-recommends install netcat unzip idn2 resolvconf lighttpd php7.2-cgi

Reading package lists... Done

Building dependency tree

Reading state information... Done

Some packages could not be installed. This may mean that you have

requested an impossible situation or if you are using the unstable

distribution that some required packages have not yet been created

or been moved out of Incoming.

The following information may help to resolve the situation:

The following packages have unmet dependencies:

libssl1.1 : Breaks: lighttpd (< 1.4.49-2) but 1.4.45-1ubuntu3.18.04 is to be installed

E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Can you clarify this? Not going to work well as in "you can't do this" or "this can be done but isn't a recommended configuration"?

You may be able to install Pi-hole without the web based admin interface. But running a DNS server on the same droplet as WordPress is not something I would attempt.

Because of security issues? Or because the load on the server is likely to be too much?

Sorry for all the follow-up questions but I'm really just trying to get an idea as to why running a WP blog on the same server as Pi-hole is a bad idea.

Which VPN did you plan to use to keep Pi-hole from being a publicly accessible DNS server?

You'll have to configure two separate web servers and make sure that people going to the WP site don't get your Pi-hole admin page. And secure the Pi-hole DNS so that it's not an open DNS server that is used to attack others. And you'd have to figure out what dependencies the WP install script set up, making sure the Pi-hole install script doesn't damage that. It's very possible that running our install script would damage the WP install and break everything.

Was planning on using Wireguard which I have successfully installed and configured on the Ubuntu server.

How are you going to deploy Wireguard to prevent your droplet becoming an open resolver ?
As you might know or not, no support here for open resolvers!
But if its locked down properly, I know a solution that might work.

And I agree with @DanSchaper, running your DNS for private matters on the same droplet as a public facing web server is not a good idea.


Sigh, it isnt my day.
Wireguard is A Ok.

Check what libssl1.1 version conflicts you have right now when trying to install lighttpd:

sudo apt install lighttpd

You can check libssl1.1 versions available with below (Version table):

pi@noads:~ $ apt policy libssl1.1
libssl1.1:
  Installed: 1.1.0l-1~deb9u1
  Candidate: 1.1.0l-1~deb9u1
  Version table:
 *** 1.1.0l-1~deb9u1 500
        500 http://raspbian.raspberrypi.org/raspbian stretch/main armhf Packages
        100 /var/lib/dpkg/status

And switch to a particular version like so:

sudo apt install libssl1.1=1.1.0l-1~deb9u1

And try install lighttpd again:

sudo apt install lighttpd

Just a giant screaming warning. Installing lighttpd is going to conflict with apache2 and will prevent WP from functioning.

Thanks for the warning - sounds like it wouldn't be a good idea to override the conflict with libssl1.1. Guess I'll just have to figure out another means of removing those annoying ads while using a VPN.

If you install Pi-hole without web daemon (is question during install), lighttpd wont get installed and you dont have the libssl1.1 conflict.

I have a pi-hole running on a raspberry pi within my local network (192.168.10.251). How would I configure Wireguard to use this to resolve DNS requests. When I specify this IP as the DNS within the Wireguard app I get zero network connectivity.

I dont have Wireguard or wouldnt know how to setup but ...
make sure Pi-hole is accepting queries on all interfaces including Wireguards wg0 interface:

image

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