Installation d'un PiHole custom
Installations
Raspbian
J'ai simplement pris la dernière image de Raspbian sans les application additionnelles.
Installation de l'écran TFT 2.8" d'Adafruit
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/adafruit-pitft.sh
chmod +x adafruit-pitft.sh
sudo ./adafruit-pitft.sh
Installation du service PiHole
curl -sSL https://install.pi-hole.net | bash
Configurations
Modifier le nom d'hôte
Attention à bien effectuer cette modification dans le fichier /etc/hostname
et dans sa correspondance sous /etc/hosts
Lancer Chromium au démarrage
J'ai préparé un Chromium avec la page admin du pihole en onglet par défaut au démarrage, puis spécifié un zoom de 110% par défaut.
Pour démarrer directement sur cette page, il suffit de rajouter un fichier .desktop
en créant un fichier comme dans l'exemple de .config/autostart/pihole.desktop
:
[Desktop Entry]
Type=Application
Exec=chromium-browser --start-fullscreen
Enlever le curseur de la souris
C'est en allant modifier le desktop manager (/etc/lightdm/lightdm.conf
) qu'on pourra effectuer modifier la section [Seat*]
xserver-command = X -nocursor
Action des boutons
J'ai écris un petit script pour éteindre le raspberry avec le premier bouton ou aussi activer/désactiver le rétro éclairage du PiTFT.
#!/usr/bin/python3
# standard
import time
import subprocess
from functools import partial
# third-party
import RPi.GPIO as GPIO
class Button:
def __init__(self, num, action=None):
self.active = False
self.num = num
if action:
self.action = partial(action, self)
# Setup the specified GPIO button
GPIO.setup(num, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def check(self):
if not(GPIO.input(self.num)) and not self.active:
self.active = True
self.action()
if GPIO.input(self.num) and self.active:
self.active = False
def action(self):
print("Button " + str(self.num) + " pressed")
def bl_action(self):
if getattr(self, "bl", False):
subprocess.call(["gpio", "-g", "pwm", "18", "0"])
self.bl = False
else:
subprocess.call(["gpio", "-g", "pwm", "18", "511"])
self.bl = True
def main():
# Init GPIO buttons context
GPIO.setmode(GPIO.BCM)
# Init GPIO screen
subprocess.call(["gpio", "-g", "mode", "18", "pwm"])
# Init vars
bl = False
b27 = Button(27, lambda self: subprocess.call(["sudo", "poweroff"]))
b23 = Button(23)
b22 = Button(22)
b17 = Button(17, bl_action)
# Listen actions
while True:
# First button poweroff the Pi
b27.check()
# Second button do ... nothing
b23.check()
# Third button do ... nothing
b22.check()
# Fourth button toggle screen backlight
b17.check()
# Wait for 100ms to reduce resource consumption
time.sleep(0.1)
if __name__ == "__main__":
main()
Puis rapidement créé un script dans systemd pour le lancer au démarrage et le garder actif en arrière plan.
[Unit]
Description=TFT Screen Control
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /home/pi/pitft
[Install]
WantedBy=multi-user.target
Autres documentations intéressantes
Simuler un F11 sur Chromium
http://paulsrandomcontent.blogspot.com/2013/10/for-project-i-wanted-to-send-key.html
L'IPv6 n'est pas configuré
Il est possible que raspbian n'ait pas activé l'IPv6 par défaut dans votre installation pour cela il vous suffira de lancer la commande suivante:
sudo modprobe ipv6
Si vous deviez activer l'IPv6 après coup, il sera nécessaire d'inscrire l'adresse dans dans le fichier de configuration /etc/pihole/setupVars.conf
Améliorer le blockage
Le site firebog.net référence plusieurs listes de noms de domaine à blacklister en plus de celles fournies de base par le pi-hole.