Table des matières

Un microserveur basse consommation pour héberger un site web

0 - But

L'idée est de démontrer qu'il est possible d'héberger un site web à bas coût et basse consommation énergétique (directe), éventuellement hors grille énergétique (solaire ou batterie) et hors réseau Internet (accès wifi)

Est-il pour autant ecolowtech ?

1 - Matériel

2 - Installer et configurer le système d'exploitation

touch /boot/ssh
USER=pi
PASSWORD=raspberry
SALT=lalabomedia
NAME=$(eval openssl passwd -6 -salt $SALT -stdin <<< $PASSWORD)
echo $USER':'$NAME | tee /boot/userconf.txt
echo 'country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
	ssid="Nom du wifi"
	psk="Mot de passe du wifi"
	key_mgmt=WPA-PSK
}' | tee /boot/wpa_supplicant.conf

3 - Trouver son Raspberry

Il s'agit de retrouver l'IP de son Raspberry sur le réseau auquel on l'a connecté. Pour cela, soit :

OU

sudo nmap -sn 192.168.0.0/24

Si nmap n'est pas installé, tapez la commande suivante :

sudo apt install nmap

Vous devriez avoir un appareil intitulé “Raspberry Pi Foundation”, retenez son IP. Parfois le nom n'apparait pas. Cherchez alors un autre appareil probablement intitulé “Unknown”

4 - Se connecter à son Raspberry

Nous allons nous connecter en SSH au Raspberry, avec dans un terminal la commande suivante :

ssh pi@IP_QUE_VOUS_AVEZ_TROUVE

Vous êtes désormais connecté au Raspberry !

5 - Générer un wifi depuis le Raspberry Pi

WIFINAME='CourtCircuit'
sudo apt install hostapd
echo 'interface=wlan0
driver=nl80211
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=0
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
ssid='$WIFINAME | sudo tee -a /etc/hostapd/hostapd.conf
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl restart hostapd
echo 'interface wlan0
static ip_address=192.168.0.254/24' | sudo tee -a /etc/dhcpcd.conf

6 - Réorienter n'importe quelle URL vers le Raspberry Pi

sudo apt install dnsmasq
echo 'interface=wlan0
dhcp-range=192.168.0.1,192.168.0.253,255.255.255.0,24h
cache-size=0
address=/#/192.168.0.254' | sudo tee -a /etc/dnsmasq.conf
sudo systemctl unmask dnsmasq
sudo systemctl enable dnsmasq
sudo systemctl restart dnsmasq

7 - Installer un serveur web HTTP léger

sudo apt install lighttpd
sudo mv /var/www/html/index.lighttpd.html /var/www/html/index.html

A vous de copier le contenu de votre site web dans /var/www/html

8 - Optimiser la consommation du Raspberry Pi

On obtient une consommation totale de 50mA à 5V, soit 0,25W

sudo sed -i 's/vc4-kms-v3d/vc4-fkms-v3d driver/' /boot/config.txt
echo '@reboot /usr/bin/tvservice -o' | sudo tee -a /etc/crontab
echo 'dtparam=act_led_trigger=none
dtparam=act_led_activelow=on' | sudo tee -a /boot/config.txt

9 - Et voualà !

Il suffit de se connecter au wifi généré, et d'aller sur n'importe quelle URL qui redirigera sur le site hébergé par le Raspberry Pi.

1000 - One shot script - Avant branchement

Aller sur la carte SD dans /boot/

#!/bin/bash
# SSH activation BEFORE FIRST BOOT !!!!!!!!!
touch ssh
# SSH credentials
USER=pi
PASSWORD=raspberry
SALT=lalabomedia
NAME=$(eval openssl passwd -6 -salt $SALT -stdin <<< $PASSWORD)
echo $USER':'$NAME | tee userconf.txt
# Wifi connection
WIFISSID='MonWifi'
WIFIPASSWORD='MonMotDePasseWifi'
echo 'country=FR # Your 2-digit country code
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev # Include this line for Stretch
network={
    ssid="'$WIFISSID'"
    psk="'$WIFIPASSWORD'"
    key_mgmt=WPA-PSK
}' | tee wpa_supplicant.conf

2000 - One shot script - Une fois connecté en SSH

#!/bin/bash
WIFINAME='CourtCircuit'
sudo apt install hostapd dnsmasq lighttpd
echo 'interface=wlan0
driver=nl80211
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=0
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
ssid='$WIFINAME | sudo tee -a /etc/hostapd/hostapd.conf
echo 'interface wlan0
static ip_address=192.168.0.254/24' | sudo tee -a /etc/dhcpcd.conf
echo 'interface=wlan0
dhcp-range=192.168.0.1,192.168.0.253,255.255.255.0,24h
# pas de cache
cache-size=0 
# on indique via dnsmasq que toutes les requêtes vont vers l'ip locale
address=/#/192.168.0.254' | sudo tee -a /etc/dnsmasq.conf
sudo mv /var/www/html/index.lighttpd.html /var/www/html/index.html
sudo systemctl unmask hostapd dnsmasq
sudo systemctl enable hostapd dnsmasq
sudo systemctl restart hostapd dnsmasq
sudo sed -i 's/vc4-kms-v3d/vc4-fkms-v3d driver/' /boot/config.txt
echo '@reboot /usr/bin/tvservice -o' | sudo tee -a /etc/crontab
echo 'dtparam=act_led_trigger=none
dtparam=act_led_activelow=on' | sudo tee -a /boot/config.txt
# Put content in /var/www/html/