🛠 Serveur web léger et partage de fichiers (NAS) sur bus USB partagé
Objectifs
Exploiter le B+ en serveur discret : site web statique ou applicatif léger avec lighttpd, et partage de fichiers Samba, en gardant en tête la contrainte architecturale du Model B+ — Ethernet et ports USB branchés sur la même puce LAN9514 derrière un unique bus USB 2.0 de 480 Mbit/s. C'est le serveur web qui libère le bus pour le disque, et non l'inverse.
Matériel
- Raspberry Pi Model B+ (512 Mo de RAM) sous Raspberry Pi OS legacy 32 bits
- microSD classe 10 pour le système ; disque ou clé USB alimenté de préférence
- Câble Ethernet, session SSH ouverte (tuto réseau)
Code complet
# Serveur web ultra-léger (pensé pour 512 Mo de RAM)
sudo apt install -y lighttpd
echo "<h1>Model B+ en ligne</h1>" | sudo tee /var/www/html/index.html
sudo systemctl enable --now lighttpd
# Partage d'un disque USB en Samba
sudo apt install -y samba
printf '[données]\n path = /mnt/usb\n browseable = yes\n writable = yes\n' | sudo tee -a /etc/samba/smb.conf
sudo mkdir -p /mnt/usb && sudo mount /dev/sda1 /mnt/usb
sudo smbpasswd -a pi && sudo systemctl restart smbd
# Mesurer la réalité du bus partagé (depuis un autre poste)
iperf3 -c 192.168.1.42 # plafond pratique ~10-15 Mo/s
lsusb -t # le LAN9514 porte Ethernet + tous les ports USB
Vérification attendue
Depuis un navigateur du réseau local, http://192.168.1.42 affiche la page ; le partage \\192.168.1.42\données se monte depuis un PC. iperf3 confirme le plafond réaliste de 10-15 Mo/s : c'est le bus, pas le réseau. lsusb -t montre le hub LAN9514 au-dessus du contrôleur USB unique.
Erreurs fréquentes
- Attendre des débits « gigabit » : l'Ethernet est 10/100 et de toute façon bridé par le bus USB 2.0 partagé avec le disque — transférer et servir en simultané divise la bande passante.
- Installer Apache + PHP complet : 512 Mo de RAM, dont une partie prise par le GPU ; lighttpd ou nginx tiennent en quelques dizaines de Mo.
- Disque USB non alimenté : le B+ ne fournit pas assez de courant sur ses ports, le disque se déconnecte et corrompt les écritures.
- Samba exposé sur Internet : la legacy image n'est plus patchée ; NAS = réseau local uniquement, ou tunnel SSH.
- Logs et bases de données sur la microSD : l'usure tue les cartes ; mettre les écritures intensives sur le disque USB.
Autres tutoriels pour cette carte
- Allumer une LED depuis la GPIO 17 avec libgpiod
- Lire un bouton et afficher les appuis dans la console
- Premier script Python : faire clignoter la LED
- Variation d'intensité d'une LED avec le PWM matériel (GPIO18)
- Interroger un capteur I2C (BME280) sur le bus du 40 broches
- Mettre le B+ en réseau par Ethernet et piloter en SSH
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython