Compare commits
31 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
7116634739 | ||
|
36492f4857 | ||
|
3a887af513 | ||
|
68a9b88b58 | ||
|
3c801e5b91 | ||
|
dee8ce587d | ||
|
4c24186911 | ||
|
af360a1a20 | ||
|
b5406240c6 | ||
|
46d7bfecdb | ||
|
a734927591 | ||
|
255706e173 | ||
|
b2fbf46e60 | ||
|
e37495d80b | ||
|
beb6b950f7 | ||
|
2d1c0be24e | ||
|
9941651b3c | ||
|
31fda124f3 | ||
|
b7f6498a5c | ||
|
282da1c2b6 | ||
|
8e6ec6ef0c | ||
|
704b3ee673 | ||
|
c18a1c3eca | ||
|
4e1870197e | ||
|
3bf61cce95 | ||
|
68889b0544 | ||
|
8a90a47fc2 | ||
|
c93c4cc5e6 | ||
|
06cba7defd | ||
|
8b76bbe51d | ||
|
aa1d3a4c2e |
8
CONTRIBUTING.md
Normal file
8
CONTRIBUTING.md
Normal file
@@ -0,0 +1,8 @@
|
||||
This is a basic checklist for now, We will update it in the future.
|
||||
|
||||
* Fork the repo and create your new branch based on the `development` branch.
|
||||
* Commit Unix line endings
|
||||
* If you want, try to keep to the theme of black holes/gravity. This can add some fun to your submission.
|
||||
* Submit Pull Requests to the development branch only.
|
||||
* Before Submitting your Pull Request, merge `development` with your new branch and fix any conflicts. (Make sure you don't break anything in development!)
|
||||
* Be patient. We will review all submitted pull requests, but our focus is on stability.. please don't be offended if we reject your PR, or it appears we're doing nothing with it! We'll get around to it..
|
10
README.md
10
README.md
@@ -1,11 +1,18 @@
|
||||
# Automated Install
|
||||
##### Designed For Raspberry Pi B, B+, 2, and Zero (with an Ethernet adapter)
|
||||
##### Designed For Raspberry Pi A+, B, B+, 2, and Zero (with an Ethernet adapter)
|
||||
|
||||
1. Install Raspbian
|
||||
2. Run the command below
|
||||
|
||||
### ```curl -L install.pi-hole.net | bash```
|
||||
|
||||
#### Alternative Semi-Automated install ####
|
||||
```
|
||||
wget -O basic-install.sh install.pi-hole.net
|
||||
chmod +x basic-install.sh
|
||||
./basic-install.sh
|
||||
```
|
||||
|
||||
Once installed, [configure your router to have **DHCP clients use the Pi as their DNS server**](http://pi-hole.net/faq/can-i-set-the-pi-hole-to-be-the-dns-server-at-my-router-so-i-dont-have-to-change-settings-for-my-devices/) and then any device that connects to your network will have ads blocked without any further configuration. Alternatively, you can manually set each device to [use the Raspberry Pi as its DNS server](http://pi-hole.net/faq/how-do-i-use-the-pi-hole-as-my-dns-server/).
|
||||
|
||||
## Pi-hole Is Free, But Powered By Your Donations
|
||||
@@ -17,6 +24,7 @@ Once installed, [configure your router to have **DHCP clients use the Pi as thei
|
||||
[](https://vimeo.com/135965232)
|
||||
|
||||
## Pi-hole Projects
|
||||
- [x86 Docker container that runs Pi-hole](https://hub.docker.com/r/diginc/pi-hole/)
|
||||
- [Pi-hole Chrome extension](https://chrome.google.com/webstore/detail/pi-hole-list-editor/hlnoeoejkllgkjbnnnhfolapllcnaglh) ([open source](https://github.com/packtloss/pihole-extension))
|
||||
- [Go Bananas for CHiP-hole ad blocking](https://www.hackster.io/jacobsalmela/chip-hole-network-wide-ad-blocker-98e037)
|
||||
- [Sky-Hole](http://dlaa.me/blog/post/skyhole)
|
||||
|
@@ -6,3 +6,12 @@ http://pgl.yoyo.org/adservers/serverlist.php?
|
||||
http://someonewhocares.org/hosts/hosts
|
||||
http://winhelp2002.mvps.org/hosts.txt
|
||||
http://mirror1.malwaredomains.com/files/justdomains
|
||||
http://securemecca.com/Downloads/hosts.txt
|
||||
https://hosts.neocities.org/
|
||||
http://sysctl.org/cameleon/hosts
|
||||
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
|
||||
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
|
||||
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
|
||||
http://optimate.dl.sourceforge.net/project/adzhosts/HOSTS.txt
|
||||
https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt
|
||||
|
||||
|
@@ -51,9 +51,13 @@ function CalcblockedToday(){
|
||||
|
||||
function CalcPercentBlockedToday(){
|
||||
if [ "$queriesToday" != "Err." ] && [ "$blockedToday" != "Err." ]; then
|
||||
#scale 2 rounds the number down, so we'll do scale 4 and then trim the last 2 zeros
|
||||
percentBlockedToday=$(echo "scale=4; $blockedToday/$queriesToday*100" | bc)
|
||||
percentBlockedToday=$(sed 's/.\{2\}$//' <<< "$percentBlockedToday")
|
||||
if [ "$queriesToday" != 0 ]; then #Fixes divide by zero error :)
|
||||
#scale 2 rounds the number down, so we'll do scale 4 and then trim the last 2 zeros
|
||||
percentBlockedToday=$(echo "scale=4; $blockedToday/$queriesToday*100" | bc)
|
||||
percentBlockedToday=$(sed 's/.\{2\}$//' <<< "$percentBlockedToday")
|
||||
else
|
||||
percentBlockedToday=0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
@@ -115,6 +115,20 @@ welcomeDialogs() {
|
||||
In the next section, you can choose to use your current network settings (DHCP) or to manually edit them." $r $c
|
||||
}
|
||||
|
||||
|
||||
verifyFreeDiskSpace() {
|
||||
# 25MB is the minimum space needed (20MB install + 5MB one day of logs.)
|
||||
requiredFreeBytes=25600
|
||||
|
||||
existingFreeBytes=`df -lkP / | awk '{print $4}' | tail -1`
|
||||
|
||||
if [[ $existingFreeBytes -lt $requiredFreeBytes ]]; then
|
||||
whiptail --msgbox --backtitle "Insufficient Disk Space" --title "Insufficient Disk Space" "\nYour system appears to be low on disk space. pi-hole recomends a minimum of $requiredFreeBytes Bytes.\nYou only have $existingFreeBytes Free.\n\nIf this is a new install you may need to expand your disk.\n\nTry running:\n 'sudo raspi-config'\nChoose the 'expand file system option'\n\nAfter rebooting, run this installation again.\n\ncurl -L install.pi-hole.net | bash\n" $r $c
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
chooseInterface() {
|
||||
# Turn the available interfaces into an array so it can be used with a whiptail dialog
|
||||
interfacesArray=()
|
||||
@@ -148,6 +162,12 @@ chooseInterface() {
|
||||
|
||||
}
|
||||
|
||||
cleanupIPv6() {
|
||||
# Removes IPv6 indicator file if we are not using IPv6
|
||||
if [ -f "/etc/pihole/.useIPv6" ] && [ ! $useIPv6 ]; then
|
||||
rm /etc/pihole/.useIPv6
|
||||
fi
|
||||
}
|
||||
|
||||
use4andor6() {
|
||||
# Let use select IPv4 and/or IPv6
|
||||
@@ -187,6 +207,7 @@ use4andor6() {
|
||||
echo "::: Exiting"
|
||||
exit 1
|
||||
fi
|
||||
cleanupIPv6
|
||||
else
|
||||
echo "::: Cancel selected. Exiting..."
|
||||
exit 1
|
||||
@@ -303,35 +324,40 @@ setDNS(){
|
||||
}
|
||||
|
||||
versionCheckDNSmasq(){
|
||||
# Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory
|
||||
dnsFile1="/etc/dnsmasq.conf"
|
||||
dnsFile2="/etc/dnsmasq.conf.orig"
|
||||
dnsSearch="addn-hosts=/etc/pihole/gravity.list"
|
||||
|
||||
# Check if /etc/dnsmasq.conf exists
|
||||
if [ -d "/etc/dnsmasq.conf" ]; then
|
||||
# If true, Check dnsmasq.conf for pihole magic
|
||||
if grep -q $dnsSearch $dnsFile1; then
|
||||
# If true, Check dnsmasq.conf.orig for pihole magic
|
||||
if grep -q $dnsSearch $dnsFile2; then
|
||||
# If true, use advanced/dnsmasq.conf.original
|
||||
$SUDO mv -f /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
|
||||
$SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf
|
||||
else
|
||||
# If false, mv original file back
|
||||
$SUDO mv -f /etc/dnsmasq.conf.orig /etc/dnsmasq.conf
|
||||
fi
|
||||
# If false, This is a fresh install
|
||||
fi
|
||||
else
|
||||
# If false, use advanced/dnsmasq.conf.original
|
||||
$SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf
|
||||
fi
|
||||
|
||||
$SUDO cp /etc/.pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf
|
||||
$SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.d/01-pihole.conf
|
||||
$SUDO sed -i "s/@DNS1@/$piholeDNS1/" /etc/dnsmasq.d/01-pihole.conf
|
||||
$SUDO sed -i "s/@DNS2@/$piholeDNS2/" /etc/dnsmasq.d/01-pihole.conf
|
||||
# Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory
|
||||
dnsFile1="/etc/dnsmasq.conf"
|
||||
dnsFile2="/etc/dnsmasq.conf.orig"
|
||||
dnsSearch="addn-hosts=/etc/pihole/gravity.list"
|
||||
|
||||
defaultFile="/etc/.pihole/advanced/dnsmasq.conf.original"
|
||||
newFileToInstall="/etc/.pihole/advanced/01-pihole.conf"
|
||||
newFileFinalLocation="/etc/dnsmasq.d/01-pihole.conf"
|
||||
|
||||
if [ -f $dnsFile1 ]; then
|
||||
echo -n "::: Existing dnsmasq.conf found..."
|
||||
if grep -q $dnsSearch $dnsFile1; then
|
||||
echo " it is from a previous pi-hole install."
|
||||
echo -n "::: Backing up dnsmasq.conf to dnsmasq.conf.orig..."
|
||||
$SUDO mv -f $dnsFile1 $dnsFile2
|
||||
echo " done."
|
||||
echo -n "::: Restoring default dnsmasq.conf..."
|
||||
$SUDO cp $defaultFile $dnsFile1
|
||||
echo " done."
|
||||
else
|
||||
echo " it is not a pi-hole file, leaving alone!"
|
||||
fi
|
||||
else
|
||||
echo -n "::: No dnsmasq.conf found.. restoring default dnsmasq.conf..."
|
||||
$SUDO cp $defaultFile $dnsFile1
|
||||
echo " done."
|
||||
fi
|
||||
|
||||
echo -n "::: Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf..."
|
||||
$SUDO cp $newFileToInstall $newFileFinalLocation
|
||||
echo " done."
|
||||
$SUDO sed -i "s/@INT@/$piholeInterface/" $newFileFinalLocation
|
||||
$SUDO sed -i "s/@DNS1@/$piholeDNS1/" $newFileFinalLocation
|
||||
$SUDO sed -i "s/@DNS2@/$piholeDNS2/" $newFileFinalLocation
|
||||
}
|
||||
|
||||
installScripts() {
|
||||
@@ -351,11 +377,10 @@ installScripts() {
|
||||
installConfigs() {
|
||||
# Install the configs from /etc/.pihole to their various locations
|
||||
$SUDO echo ":::"
|
||||
$SUDO echo -n "::: Installing configs..."
|
||||
$SUDO echo "::: Installing configs..."
|
||||
versionCheckDNSmasq
|
||||
$SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
|
||||
$SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf
|
||||
$SUDO echo " done."
|
||||
}
|
||||
|
||||
stopServices() {
|
||||
@@ -389,7 +414,7 @@ checkForDependencies() {
|
||||
fi
|
||||
echo ":::"
|
||||
echo -n "::: Checking apt-get for upgraded packages...."
|
||||
updatesToInstall=$(sudo apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst)
|
||||
updatesToInstall=$($SUDO apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst)
|
||||
echo " done!"
|
||||
echo ":::"
|
||||
if [[ $updatesToInstall -eq "0" ]]; then
|
||||
@@ -553,6 +578,9 @@ The install log is in /etc/pihole." $r $c
|
||||
$SUDO mkdir -p /etc/pihole/
|
||||
welcomeDialogs
|
||||
|
||||
# Verify there is enough disk space for the install
|
||||
verifyFreeDiskSpace
|
||||
|
||||
# Just back up the original Pi-hole right away since it won't take long and it gets it out of the way
|
||||
backupLegacyPihole
|
||||
# Find interfaces and let the user choose one
|
||||
@@ -571,6 +599,18 @@ $SUDO mv $tmpLog $instalLogLoc
|
||||
|
||||
displayFinalMessage
|
||||
|
||||
echo -n "::: Restarting services..."
|
||||
# Start services
|
||||
$SUDO service dnsmasq start
|
||||
$SUDO service lighttpd start
|
||||
echo " done."
|
||||
|
||||
echo ":::"
|
||||
echo "::: Installation Complete! Configure your devices to use the Pi-hole as their DNS server using:"
|
||||
echo "::: $IPv4addr"
|
||||
echo "::: $piholeIPv6"
|
||||
echo ":::"
|
||||
echo "::: If you set a new IP address, you should restart the Pi."
|
||||
echo "::: "
|
||||
echo "::: The install log is located at: /etc/pihole/install.log"
|
||||
|
||||
|
@@ -38,6 +38,6 @@ include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
|
||||
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
|
||||
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
|
||||
|
||||
$HTTP["host"] =~ "ads.hulu.com|ads-v-darwin.hulu.com" {
|
||||
$HTTP["host"] =~ "ads.hulu.com|ads-v-darwin.hulu.com|ads-e-darwin.hulu.com" {
|
||||
url.redirect = ( ".*" => "http://192.168.1.101:8200/MediaItems/19.mov")
|
||||
}
|
||||
|
@@ -31,6 +31,8 @@ piholeIPv6file=/etc/pihole/.useIPv6
|
||||
|
||||
adListFile=/etc/pihole/adlists.list
|
||||
adListDefault=/etc/pihole/adlists.default
|
||||
whitelistScript=/usr/local/bin/whitelist.sh
|
||||
blacklistScript=/usr/local/bin/blacklist.sh
|
||||
|
||||
if [[ -f $piholeIPfile ]];then
|
||||
# If the file exists, it means it was exported from the installation script and we should use that value instead of detecting it in this script
|
||||
@@ -198,7 +200,7 @@ function gravity_spinup() {
|
||||
# Default is a simple request
|
||||
*) cmd_ext=""
|
||||
esac
|
||||
gravity_transport $url $cmd_ext $agent
|
||||
gravity_transport "$url" "$cmd_ext" "$agent"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -220,7 +222,7 @@ function gravity_Schwarzchild() {
|
||||
function gravity_Blacklist(){
|
||||
# Append blacklist entries if they exist
|
||||
echo -n "::: Running blacklist script to update HOSTS file...."
|
||||
blacklist.sh -f -nr -q > /dev/null & spinner $!
|
||||
$blacklistScript -f -nr -q > /dev/null & spinner $!
|
||||
|
||||
numBlacklisted=$(wc -l < "/etc/pihole/blacklist.txt")
|
||||
plural=; [[ "$numBlacklisted" != "1" ]] && plural=s
|
||||
@@ -245,7 +247,7 @@ function gravity_Whitelist() {
|
||||
echo " done!"
|
||||
|
||||
echo -n "::: Running whitelist script to update HOSTS file...."
|
||||
whitelist.sh -f -nr -q ${urls[@]} > /dev/null & spinner $!
|
||||
$whitelistScript -f -nr -q ${urls[@]} > /dev/null & spinner $!
|
||||
|
||||
numWhitelisted=$(wc -l < "/etc/pihole/whitelist.txt")
|
||||
plural=; [[ "$numWhitelisted" != "1" ]] && plural=s
|
||||
|
Reference in New Issue
Block a user