1 minute(s) de lecture

webserver Cet article détaille comment monter un server web local sur un raspberry pi en moins de 5mn, avec Python et Flask. Ce serveur ne sera pas ouvert à l’extérieur, donc on va aller au plus simple niveau architecture: pas de reverse proxy, pas de serveur de réplication WYSIWIG et pas de serveur de base de données: tout va tenir sur un seul Raspberry pi. L’objectif est de pouvoir consulter depuis son smartphone ou un ordinateur connecté au même réseau local les services de ce serveur web.

Hardware

Un simple raspberry pi avec une connectivité wifi ou réseau est nécessaire. Dans mon cas je suis parti avec un Raspberry pi4 8Go dans un boîtier Argon One où le système est installé sur un SSD M.2 nvme de 128Go. Cette configuration me permet de bénéficier d’une solution fanless. Une sd card de 32Go est largement suffisante mais l’installation et le démarrage du système est beaucoup plus rapide avec un ssd M.2 nvme. J’ai utilisé l’OS LITE 64bit Raspberry pi OS car je n’ai pas besoin d’interface graphique.

Software

Structure

webserver

La structure du code minimale pour notre server web est la suivante:

  • Le programme principal demo.py à la racine.
  • Un dossier /static dans lequel figure le dossier /css avec les styles de nos pages.
  • Un dossier /templates dans lequel figurent les pages html du site.

Installation

webserver Tout le code démo est à récupérer sur mon Github, dans le dossier /demo

Déposez tous les fichiers du répertoire /demo en respectant bien la structure décrite ci-dessus.

Si vous n’utilisez pas d’environnement virtuel (venv), il faut installer la bibliothèque Flask.

pip install Flask

Sinon, il suffit d’installer les dépendances du requirements.txt:

pip install -r requirements.txt

Usage

pour démarrer le serveur WEB, rien de plus simple, il suffit d’exécuter le programme demo.py

python demo.py

Le site WEB est alors accessible en local sous l’adresse http://127.0.0.1:5000

webserver

Un bashtop montre que cette configuration n’occupe que 1Go de RAM et 12% de CPU (sachant que bashtop perturbe bien la mesure)

Cliquez pour agrandir l’image.