mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-12-01 02:23:21 +00:00
Added nginx as an optional server.
Why? For the glory of satan of course... Also, many people tends to use their PIs for multiple purposes. As mail servers, webpage hosting etc. Usually in that cases nginx is used as far more powerful alternative to lighttpd, and fair more lighter than apache. This patch allows them to unleash the power of pi-hole without too much hacking. Also, I'm the one of those people, and needed it ;).
This commit is contained in:
parent
60bf14d4dd
commit
34ff9b309a
4 changed files with 183 additions and 56 deletions
23
advanced/nginx-pi-hole.conf
Normal file
23
advanced/nginx-pi-hole.conf
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
root /var/www/html;
|
||||||
|
|
||||||
|
error_page 404 /pihole/index.html;
|
||||||
|
|
||||||
|
location ~ ^/admin/ {
|
||||||
|
index index.php;
|
||||||
|
add_header X-Pi-hole "The Pi-hole Web interface is working!";
|
||||||
|
|
||||||
|
location ~ .php$ {
|
||||||
|
fastcgi_pass unix:/var/run/php5-fpm.sock;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
add_header X-Pi-hole "A black hole for Internet advertisements.";
|
||||||
|
}
|
||||||
|
}
|
|
@ -96,7 +96,12 @@ backupLegacyPihole(){
|
||||||
$SUDO mv /etc/dnsmasq.d/adList.conf /etc/pihole/original/adList.conf.$(date "+%Y-%m-%d")
|
$SUDO mv /etc/dnsmasq.d/adList.conf /etc/pihole/original/adList.conf.$(date "+%Y-%m-%d")
|
||||||
$SUDO mv /etc/dnsmasq.conf /etc/pihole/original/dnsmasq.conf.$(date "+%Y-%m-%d")
|
$SUDO mv /etc/dnsmasq.conf /etc/pihole/original/dnsmasq.conf.$(date "+%Y-%m-%d")
|
||||||
$SUDO mv /etc/resolv.conf /etc/pihole/original/resolv.conf.$(date "+%Y-%m-%d")
|
$SUDO mv /etc/resolv.conf /etc/pihole/original/resolv.conf.$(date "+%Y-%m-%d")
|
||||||
|
if [[ -f /etc/lighttpd/lighttpd.conf ]]; then
|
||||||
$SUDO mv /etc/lighttpd/lighttpd.conf /etc/pihole/original/lighttpd.conf.$(date "+%Y-%m-%d")
|
$SUDO mv /etc/lighttpd/lighttpd.conf /etc/pihole/original/lighttpd.conf.$(date "+%Y-%m-%d")
|
||||||
|
fi
|
||||||
|
if [[ -f /etc/nginx/conf.d/nginx-pi-hole.conf ]]; then
|
||||||
|
$SUDO mv /etc/nginx/conf.d/nginx-pi-hole.conf /etc/pihole/original/nginx-pi-hole.conf.$(date "+%Y-%m-%d")
|
||||||
|
fi
|
||||||
$SUDO mv /var/www/pihole/index.html /etc/pihole/original/index.html.$(date "+%Y-%m-%d")
|
$SUDO mv /var/www/pihole/index.html /etc/pihole/original/index.html.$(date "+%Y-%m-%d")
|
||||||
$SUDO mv /usr/local/bin/gravity.sh /etc/pihole/original/gravity.sh.$(date "+%Y-%m-%d")
|
$SUDO mv /usr/local/bin/gravity.sh /etc/pihole/original/gravity.sh.$(date "+%Y-%m-%d")
|
||||||
else
|
else
|
||||||
|
@ -144,6 +149,22 @@ chooseInterface(){
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chooseWebserver(){
|
||||||
|
webserversArray=()
|
||||||
|
webserversArray+=("lighttpd" "recommended if not sure, or building a standalone configuration" "ON")
|
||||||
|
webserversArray+=("nginx" "for advanced users building custom solutions" "OFF")
|
||||||
|
|
||||||
|
# Find out how many interfaces are available to choose from
|
||||||
|
chooseWebserverCmd=(whiptail --separate-output --radiolist "Choose a Webserver" $r $c 2)
|
||||||
|
chooseWebserverOptions=$("${chooseWebserverCmd[@]}" "${webserversArray[@]}" 2>&1 >/dev/tty)
|
||||||
|
|
||||||
|
for desiredWebserver in $chooseWebserverOptions
|
||||||
|
do
|
||||||
|
piholeWebserver=$desiredWebserver
|
||||||
|
echo "::: Using webserver: $piholeWebserver"
|
||||||
|
echo ${piholeWebserver} > /tmp/piholeWEB
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
use4andor6(){
|
use4andor6(){
|
||||||
# Let use select IPv4 and/or IPv6
|
# Let use select IPv4 and/or IPv6
|
||||||
|
@ -283,9 +304,15 @@ installConfigs(){
|
||||||
$SUDO echo ":::"
|
$SUDO echo ":::"
|
||||||
$SUDO echo -n "::: Installing configs..."
|
$SUDO echo -n "::: Installing configs..."
|
||||||
$SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
|
$SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
|
||||||
$SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
|
|
||||||
$SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf
|
$SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf
|
||||||
|
if [ $piholeWebserver == 'lighttpd' ]; then
|
||||||
|
$SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
|
||||||
$SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf
|
$SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf
|
||||||
|
fi
|
||||||
|
if [ $piholeWebserver == 'nginx' ]; then
|
||||||
|
$SUDO cp /etc/.pihole/advanced/nginx-pi-hole.conf /etc/nginx/conf.d/nginx-pi-hole.conf
|
||||||
|
$SUDO rm /etc/nginx/sites-enabled/default
|
||||||
|
fi
|
||||||
$SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf
|
$SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf
|
||||||
$SUDO echo " done."
|
$SUDO echo " done."
|
||||||
}
|
}
|
||||||
|
@ -294,7 +321,12 @@ stopServices(){
|
||||||
$SUDO echo ":::"
|
$SUDO echo ":::"
|
||||||
$SUDO echo -n "::: Stopping services..."
|
$SUDO echo -n "::: Stopping services..."
|
||||||
$SUDO service dnsmasq stop & spinner $! || true
|
$SUDO service dnsmasq stop & spinner $! || true
|
||||||
|
if [ $piholeWebserver == 'lighttpd' ]; then
|
||||||
$SUDO service lighttpd stop & spinner $! || true
|
$SUDO service lighttpd stop & spinner $! || true
|
||||||
|
fi
|
||||||
|
if [ $piholeWebserver == 'nginx' ]; then
|
||||||
|
$SUDO service nginx stop & spinner $! || true
|
||||||
|
fi
|
||||||
$SUDO echo " done."
|
$SUDO echo " done."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,7 +370,27 @@ checkForDependencies(){
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo "::: Checking dependencies:"
|
echo "::: Checking dependencies:"
|
||||||
|
|
||||||
dependencies=( dnsutils bc toilet figlet dnsmasq lighttpd php5-common php5-cgi php5 git curl unzip wget )
|
dependencies=( dnsutils bc toilet figlet dnsmasq git curl unzip wget )
|
||||||
|
if [ $piholeWebserver == 'lighttpd' ]; then
|
||||||
|
dependencies+=( lighttpd php5-cgi )
|
||||||
|
if [ $(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed") -eq 1 ]; then
|
||||||
|
echo -n "::: Lighttpd selected, but nginx found! Uninstalling...."
|
||||||
|
$SUDO apt-get -y -qq remove nginx > /dev/null & spinner $!
|
||||||
|
$SUDO apt-get -y -qq autoremove > /dev/null & spinner $!
|
||||||
|
echo " done!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ $piholeWebserver == 'nginx' ]; then
|
||||||
|
dependencies+=( nginx php5-fpm )
|
||||||
|
if [ $(dpkg-query -W -f='${Status}' lighttpd 2>/dev/null | grep -c "ok installed") -eq 1 ]; then
|
||||||
|
echo -n "::: Nginx selected, but lighttpd found! Uninstalling...."
|
||||||
|
$SUDO apt-get -y -qq remove lighttpd > /dev/null & spinner $!
|
||||||
|
$SUDO apt-get -y -qq autoremove > /dev/null & spinner $!
|
||||||
|
echo " done!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
dependencies+=( php5-common php5 )
|
||||||
|
|
||||||
for i in "${dependencies[@]}"
|
for i in "${dependencies[@]}"
|
||||||
do
|
do
|
||||||
:
|
:
|
||||||
|
@ -425,7 +477,12 @@ installPiholeWeb(){
|
||||||
$SUDO echo " Existing page detected, not overwriting"
|
$SUDO echo " Existing page detected, not overwriting"
|
||||||
else
|
else
|
||||||
$SUDO mkdir /var/www/html/pihole
|
$SUDO mkdir /var/www/html/pihole
|
||||||
|
if [ $piholeWebserver == 'lighttpd' ]; then
|
||||||
$SUDO mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig
|
$SUDO mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig
|
||||||
|
fi
|
||||||
|
if [ $piholeWebserver == 'nginx' ]; then
|
||||||
|
$SUDO mv /var/www/html/index.nginx-debian.html /var/www/html/index.nginx-debian.orig
|
||||||
|
fi
|
||||||
$SUDO cp /etc/.pihole/advanced/index.html /var/www/html/pihole/index.html
|
$SUDO cp /etc/.pihole/advanced/index.html /var/www/html/pihole/index.html
|
||||||
$SUDO echo " done!"
|
$SUDO echo " done!"
|
||||||
fi
|
fi
|
||||||
|
@ -462,7 +519,9 @@ installPihole(){
|
||||||
$SUDO chown www-data:www-data /var/www/html
|
$SUDO chown www-data:www-data /var/www/html
|
||||||
$SUDO chmod 775 /var/www/html
|
$SUDO chmod 775 /var/www/html
|
||||||
$SUDO usermod -a -G www-data pi
|
$SUDO usermod -a -G www-data pi
|
||||||
|
if [ $piholeWebserver == 'lighttpd' ]; then
|
||||||
$SUDO lighty-enable-mod fastcgi fastcgi-php > /dev/null
|
$SUDO lighty-enable-mod fastcgi fastcgi-php > /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
getGitFiles
|
getGitFiles
|
||||||
installScripts
|
installScripts
|
||||||
|
@ -494,6 +553,8 @@ welcomeDialogs
|
||||||
backupLegacyPihole
|
backupLegacyPihole
|
||||||
# Find interfaces and let the user choose one
|
# Find interfaces and let the user choose one
|
||||||
chooseInterface
|
chooseInterface
|
||||||
|
# Let the user decide which webserver they prefer
|
||||||
|
chooseWebserver
|
||||||
# Let the user decide if they want to block ads over IPv4 and/or IPv6
|
# Let the user decide if they want to block ads over IPv4 and/or IPv6
|
||||||
use4andor6
|
use4andor6
|
||||||
|
|
||||||
|
@ -505,4 +566,9 @@ $SUDO mv $tmpLog $instalLogLoc
|
||||||
|
|
||||||
displayFinalMessage
|
displayFinalMessage
|
||||||
$SUDO service dnsmasq start
|
$SUDO service dnsmasq start
|
||||||
$SUDO service lighttpd start
|
if [ $piholeWebserver == 'lighttpd' ]; then
|
||||||
|
$SUDO service lighttpd start
|
||||||
|
fi
|
||||||
|
if [ $piholeWebserver == 'nginx' ]; then
|
||||||
|
$SUDO service nginx start
|
||||||
|
fi
|
||||||
|
|
|
@ -25,15 +25,24 @@ fi
|
||||||
|
|
||||||
|
|
||||||
######### SCRIPT ###########
|
######### SCRIPT ###########
|
||||||
|
if [ $(dpkg-query -W -f='${Status}' lighttpd 2>/dev/null | grep -c "ok installed") -eq 1 ]; then
|
||||||
|
$SUDO apt-get -y remove --purge lighttpd php5-cli
|
||||||
|
fi
|
||||||
|
if [ $(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed") -eq 1 ]; then
|
||||||
|
$SUDO apt-get -y remove --purge nginx php5-fpm
|
||||||
|
fi
|
||||||
|
|
||||||
$SUDO apt-get -y remove --purge dnsutils bc toilet
|
$SUDO apt-get -y remove --purge dnsutils bc toilet
|
||||||
$SUDO apt-get -y remove --purge dnsmasq
|
$SUDO apt-get -y remove --purge dnsmasq
|
||||||
$SUDO apt-get -y remove --purge lighttpd php5-common php5-cgi php5
|
$SUDO apt-get -y remove --purge php5-common php5
|
||||||
|
$SUDO apt-get -y autoremove --purge
|
||||||
|
|
||||||
# Only web directories/files that are created by pihole should be removed.
|
# Only web directories/files that are created by pihole should be removed.
|
||||||
echo "Removing the Pi-hole Web server files..."
|
echo "Removing the Pi-hole Web server files..."
|
||||||
$SUDO rm -rf /var/www/html/admin
|
$SUDO rm -rf /var/www/html/admin
|
||||||
$SUDO rm -rf /var/www/html/pihole
|
$SUDO rm -rf /var/www/html/pihole
|
||||||
$SUDO rm /var/www/html/index.lighttpd.orig
|
$SUDO rm /var/www/html/index.lighttpd.orig
|
||||||
|
$SUDO rm /var/www/html/index.nginx-debian.orig
|
||||||
|
|
||||||
# If the web directory is empty after removing these files, then the parent html folder can be removed.
|
# If the web directory is empty after removing these files, then the parent html folder can be removed.
|
||||||
if [[ ! "$(ls -A /var/www/html)" ]]; then
|
if [[ ! "$(ls -A /var/www/html)" ]]; then
|
||||||
|
@ -63,6 +72,7 @@ fi
|
||||||
echo "Removing config files and scripts..."
|
echo "Removing config files and scripts..."
|
||||||
$SUDO rm /etc/dnsmasq.conf
|
$SUDO rm /etc/dnsmasq.conf
|
||||||
$SUDO rm -rf /etc/lighttpd/
|
$SUDO rm -rf /etc/lighttpd/
|
||||||
|
$SUDO rm -rf /etc/nginx/
|
||||||
$SUDO rm /var/log/pihole.log
|
$SUDO rm /var/log/pihole.log
|
||||||
$SUDO rm /usr/local/bin/gravity.sh
|
$SUDO rm /usr/local/bin/gravity.sh
|
||||||
$SUDO rm /usr/local/bin/chronometer.sh
|
$SUDO rm /usr/local/bin/chronometer.sh
|
||||||
|
|
28
block hulu ads/nginx-pi-hole.conf
Normal file
28
block hulu ads/nginx-pi-hole.conf
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
root /var/www/html;
|
||||||
|
|
||||||
|
error_page 404 /pihole/index.html;
|
||||||
|
|
||||||
|
location ~ ^/admin/ {
|
||||||
|
index index.php;
|
||||||
|
add_header X-Pi-hole "The Pi-hole Web interface is working!";
|
||||||
|
|
||||||
|
location ~ .php$ {
|
||||||
|
fastcgi_pass unix:/var/run/php5-fpm.sock;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
add_header X-Pi-hole "A black hole for Internet advertisements.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
server_name ads.hulu.com ads-v-darwin.hulu.com;
|
||||||
|
return 301 http://192.168.1.101:8200/MediaItems/19.mov;
|
||||||
|
}
|
Loading…
Reference in a new issue