Transformer un Raspberry Pi pour le développement web local

Transformer un Raspberry Pi pour le développement web local

Publié le

Un Raspberry Pi peut devenir un excellent serveur de développement : discret, peu énergivore, accessible par tout le réseau local et suffisamment puissant pour héberger WordPress, Symfony/Laravel, du Node.js ou des services Docker. Ce guide explique comment faire (installation, configuration, bonnes pratiques) et pourquoi c’est utile par rapport à un serveur local sur votre ordinateur.

Résumé rapide (plan d’action)

  1. Préparer un Raspberry Pi 4/5 (4 Go RAM mini) avec Raspberry Pi OS ou autre choix.
  2. Activer SSH, définir un hostname, mettre à jour le système.
  3. Fixer une IP locale (DHCP réservé ou IP statique).
  4. Installer la stack LEMP (Nginx+PHP-FPM+MariaDB) ou LAMP (Apache+PHP).
  5. Créer des vhosts (domaines .test) et activer HTTPS local.
  6. Coder depuis votre PC via SSH/VS Code, Git et (facultatif) Docker.
  7. Sécuriser (clé SSH, pare-feu, mises à jour) et optimiser (OPcache, SSD).

Pré-requis matériels & OS

Il s'agit ici uniquement de recommandations visant des performances supérieures, il est tout à fait possible de créer son serveur, même avec une configuration minimum. 

  • Raspberry Pi 4 ou 5 (4 Go RAM minimum recommandé).
  • Alimentation + Ethernet (plus stable que le Wi-Fi pour un serveur).
  • Stockage : idéalement un SSD USB (plus rapide et durable qu’une carte microSD).
  • Un ordinateur pour flasher l’OS et se connecter en SSH.

Installer Raspberry Pi OS (64-bits) & activer SSH

  1. Flashez Raspberry Pi OS avec Raspberry Pi Imager.
  2. Dans les options, définissez user/pass, le hostname (ex. pi-dev) et activez SSH.
  3. Démarrez le Pi, puis connectez-vous : ssh user@pi-dev.local ou via son IP.
# Mise à jour
sudo apt update && sudo apt full-upgrade -y
sudo reboot

IP fixe ou réservation DHCP

Le plus simple : réservez l’adresse IP du Pi depuis votre routeur (DHCP). À défaut, IP statique :

sudo nano /etc/dhcpcd.conf

interface eth0
static ip_address=192.168.1.50/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

Choisir sa stack : LEMP (Nginx) ou LAMP (Apache)

Les deux fonctionnent très bien. Nginx est léger et performant, Apache est très répandu et simple à moduler. Ci-dessous, les deux chemins (ne prenez qu’un seul).

Option A - LEMP (Nginx + PHP-FPM + MariaDB)

sudo apt install -y nginx mariadb-server
sudo apt install -y php-fpm php-cli php-mysql php-xml php-mbstring php-gd php-curl php-zip php-intl

Vérifiez que PHP-FPM tourne : systemctl status php*-fpm. Créez un server block :

sudo nano /etc/nginx/sites-available/monprojet.test
server {
  listen 80;
  server_name monprojet.test;
  root /var/www/monprojet/public;

  index index.php index.html;
  location / {
    try_files $uri /index.php?$query_string;
  }

  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php-fpm.sock;
  }

  location ~* \.(png|jpg|jpeg|gif|svg|css|js|woff2?)$ {
    access_log off; expires max;
  }
}
sudo ln -s /etc/nginx/sites-available/monprojet.test /etc/nginx/sites-enabled/
sudo mkdir -p /var/www/monprojet/public
sudo chown -R $USER:www-data /var/www/monprojet
sudo nginx -t && sudo systemctl reload nginx

Option B - LAMP (Apache + PHP)

sudo apt install -y apache2 mariadb-server
sudo apt install -y libapache2-mod-fcgid php-fpm php-cli php-mysql php-xml php-mbstring php-gd php-curl php-zip php-intl
sudo a2enmod proxy_fcgi setenvif rewrite
sudo a2enconf php*-fpm

VirtualHost :

sudo nano /etc/apache2/sites-available/monprojet.test.conf
<VirtualHost *:80>
  ServerName monprojet.test
  DocumentRoot /var/www/monprojet/public

  <Directory /var/www/monprojet/public>
    AllowOverride All
    Require all granted
  </Directory>

  ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/run/php/php-fpm.sock|fcgi://localhost/var/www/monprojet/public/"
  ErrorLog ${APACHE_LOG_DIR}/monprojet_error.log
  CustomLog ${APACHE_LOG_DIR}/monprojet_access.log combined
</VirtualHost>
sudo a2ensite monprojet.test.conf
sudo mkdir -p /var/www/monprojet/public
sudo chown -R $USER:www-data /var/www/monprojet
sudo systemctl reload apache2

Base de données (MariaDB)

sudo mysql_secure_installation
sudo mysql -e "CREATE DATABASE devdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'devuser'@'localhost' IDENTIFIED BY 'motdepasseFort!';"
sudo mysql -e "GRANT ALL PRIVILEGES ON devdb.* TO 'devuser'@'localhost'; FLUSH PRIVILEGES;"

Domaines de développement & HTTPS local

Afin d'avoir une adresse facilement lisible, surtout si vous travaillez sur de nombreux projets.

Utiliser des domaines .test

Ajoutez sur chaque machine cliente (votre PC, smartphone, tablette) une ligne dans le fichier hosts pour pointer vers le Pi :

# Sur macOS / Linux : /etc/hosts
# Sur Windows : C:\Windows\System32\drivers\etc\hosts
192.168.1.50   monprojet.test

HTTPS local

Pour des tests réalistes (cookies, service workers), utilisez des certificats locaux. Deux approches :

  • mkcert (recommandé) : génère une autorité locale de confiance et des certificats valides pour vos navigateurs en LAN.
  • Auto-signé : suffisant mais affiche un avertissement navigateur.

Exemple avec mkcert installé sur votre PC, puis copie des certs vers le Pi :

mkcert monprojet.test
scp monprojet.test.pem user@192.168.1.50:/etc/ssl/certs/
scp monprojet.test-key.pem user@192.168.1.50:/etc/ssl/private/

Ajoutez la section listen 443 ssl; et les chemins ssl_certificate/ssl_certificate_key dans votre vhost Nginx/Apache, puis rechargez le service.

Développer confortablement depuis votre ordinateur

Ici VS Code pour sa simplicité d'installation sur la plupart des OS, il est également assez léger, bien que certains puristes préféreront probablement Neovim pour ce type de projet. 

VS Code Remote-SSH

  1. Installez l’extension “Remote - SSH”.
  2. Ouvrez un dossier du Pi (/var/www/monprojet) directement dans VS Code.
  3. Bénéficiez de l’autocomplétion, du terminal distant et du débogage.

Git & déploiement

# Sur le Pi
sudo apt install -y git
cd /var/www/monprojet
git init

Bon pattern : développer sur votre PC, pousser sur un dépôt privé, puis git pull sur le Pi.

Outils pratiques

  • Adminer (fichier unique PHP) pour gérer SQL.
  • Mailpit/MailHog pour intercepter les e-mails de dev.
  • Node.js via nvm si vous avez un front à builder.

Option Docker (multi-projets, isolation facile)

Docker tourne relativement bien sur les Raspberry 4 et plus, il peut s'avérer particulièrement utile si l'on à besoin de plusieurs versions de PHP, pour la mise à jour de version PHP par exemple.

sudo apt install -y docker.io docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker

Exemple minimal docker-compose.yml (Nginx + PHP-FPM + MariaDB). Les images officielles sont multi-arch (ARM64 OK) :

services:
  php:
    image: php:8.3-fpm
    volumes:
      - ./app:/var/www/html
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./app:/var/www/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
  db:
    image: mariadb:11
    environment:
      - MARIADB_ROOT_PASSWORD=secret
      - MARIADB_DATABASE=devdb

Sécurité & maintenance

Le serveur se trouvant sur le réseau local, il est important de ne pas négliger la sécurité de ce dernier.

  • SSH par clé : désactivez l’authentification par mot de passe (sshd_config).
  • Mises à jour : sudo apt update && sudo apt upgrade réguliers.
  • UFW (pare-feu simple) : n’ouvrez que 22/80/443 sur le LAN.
  • Backups : Git pour le code, dumps SQL planifiés pour les bases.
  • Logs : évitez d’écrire sans fin sur la carte SD (préférez un SSD ; tournez/compressez les logs).

Optimisations PHP (OPcache)

; /etc/php/*/fpm/php.ini (extraits)
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000

Les atouts du développement web sur Raspberry Pi

Transformer un Raspberry Pi en serveur de développement web local offre un environnement réaliste, accessible par tous les appareils du réseau et toujours disponible, tout en consommant très peu d’énergie. C’est un parfait complément à votre machine de développement : gardez les tâches lourdes sur l’ordinateur, et confiez au Pi l’hébergement, les tests réseau, la démonstration et l’intégration continue légère. Avec les bonnes pratiques ci-dessus (vhosts, HTTPS local, OPcache, sécurité, SSD), vous obtenez une plateforme de dev fiable, pérenne et agréable à utiliser chaque jour.