Comment je lance mon blog sur un Raspberry Pi

Comme beaucoup de gens qui aiment bricoler avec la technologie, j’ai maintenant une petite mais croissante collection de boîtiers Raspberry Pi autour de ma maison. Je les ai utilisés pour divers projets : un bloqueur de publicités réseau PiHole, un serveur d’impression 3D OctoPi et un serveur Minecraft, entre autres.
Cependant, le projet le plus personnalisé que j’ai réalisé consiste à configurer un Raspberry Pi pour agir en tant que serveur Web pour héberger mon propre site de blog, mandclu.com. J’ai eu l’idée en faisant des recherches pour une interview que j’ai faite il y a quelques années.
Le projet a considérablement évolué depuis ses débuts, j’ai donc pensé qu’il serait intéressant de le partager.
Contents
Pourquoi exécuter mon propre serveur Web ?
J’ai commencé à créer des sites Web il y a un peu plus de deux décennies. J’utilisais alors diverses solutions d’hébergement, dont une instance Linode (presque) bare metal où je devais installer et configurer moi-même tous les logiciels.
J’ai récemment eu un petit compte dans une grande société d’hébergement que j’ai utilisé pour servir quelques projets personnels. Au fil du temps, j’ai constaté que je suis moins intéressé à utiliser mon temps pour des projets indépendants, donc le coût devenait plus difficile à justifier. En raison des mesures de sécurité intégrées à leur plate-forme d’hébergement, je me sentais également frustré d’être limité par les outils que je pouvais utiliser et comment je pouvais les utiliser.
En bref, je voulais gérer mon propre serveur car il serait gratuit, dans le sens de la liberté d’expression, de la bière gratuite et, comme je l’apprendrais bientôt, des chiots gratuits.
Est-ce que je recommanderais à chacun d’héberger son propre site Web ? Absolument pas. Ce fut un projet amusant et j’ai beaucoup appris en cours de route, mais si mon site Web était en panne pendant quelques heures (ou potentiellement plus) en raison d’une panne de courant ou de réseau local, je pourrais vivre avec ça.
Dans un article précédent, j’ai expliqué pourquoi j’avais choisi Drupal pour mon site. Bien que je pense que c’est une solution puissante et infiniment flexible, les étapes ci-dessous s’appliquent en grande partie à tout CMS ou framework de développement basé sur PHP que vous souhaitez héberger.
Un serveur web Raspberry Pi : Le voyage inaugural
J’ai acheté un Raspberry Pi 4 avec 4 Go de RAM pour le projet. J’avais vu une documentation selon laquelle la qualité de la carte MicroSD que vous utilisez avec un Pi fait une différence significative pour les performances, j’ai donc également essayé de trouver une carte décente. Tout compte fait, je me rapprochais probablement de 100 $ US, y compris un étui et un adaptateur secteur.
La première décision était quel système d’exploitation utiliser. CentOS semblait être le meilleur choix pour quelque chose exposé à Internet, alors j’ai décidé d’y aller. Il s’avère que CentOS présentait des différences marquées par rapport à toute autre version de Linux que j’ai utilisée, en particulier parce qu’il souhaitait réinitialiser les autorisations de tous les journaux du serveur à chaque redémarrage. J’ai finalement compris comment gérer cela avec élégance, mais cela a ajouté à l’aventure.
Ensuite, il était temps de configurer le Pi pour qu’il agisse en tant que serveur Web. Je connais des gens DevOps super intelligents qui préfèrent utiliser Nginx comme serveur Web pour leurs projets, mais je connais personnellement beaucoup mieux Apache. De plus, Drupal implémente certains contrôles de sécurité en utilisant .htaccess
fichiers, donc si vous utilisez Nginx, vous devrez gérer des restrictions équivalentes dans la configuration du serveur. Mais la vérité est que plus que toute autre chose, je voulais aller avec le diable que je connaissais.
Heureusement, une recherche rapide peut faire apparaître une variété de didacticiels sur la façon d’installer les parties restantes d’une pile LAMP sur CentOS (ou votre version préférée de Linux). Mieux encore, les gestionnaires de packages modernes comme Yum rendent le processus relativement indolore. Drupal a également quelques Exigences PHP de son propre chef, il y avait donc une étape supplémentaire pour s’assurer que je respectais ceux-ci. Enfin, j’aime utiliser APCu en tant que cache de données PHP natif pour aider à accélérer la livraison des sites PHP, je me suis donc assuré qu’il était installé et que l’extension PHP était activée.
En cherchant des réponses aux problèmes divers, je suis tombé sur un complément intéressant qui facilitait grandement la gestion du Pi en tant que serveur Web : Cockpit. Il fournit une interface graphique facile à utiliser pour voir l’état de la machine et de tous ses logiciels : comment elle fonctionne (ou si elle ne fonctionne pas). Vous pouvez voir quand des mises à jour sont disponibles et les exécuter, accéder aux journaux, etc. Il inclut même sa propre interface de ligne de commande, ce qui vous permet de gérer à peu près tout à partir d’une seule interface.
Installer Drupal sur Raspberry Pi
L’installation de Drupal lui-même est assez simple si vous connaissez le processus prévu. Si vous ne l’avez pas déjà fait, installer le gestionnaire de dépendance PHP Composer. Ensuite, vous pouvez installer Drupal en quelques étapes :
composer create-project drupal/recommended-project my_site_name_dir
Configurez votre serveur Web pour utiliser le répertoire Web dans cet emplacement d’installation (my_site_name_dir
dans l’exemple ci-dessus) comme racine du document pour un hôte virtuel (ou un bloc serveur dans Nginx).
Si vous essayez d’accéder à l’hôte virtuel, Drupal déclenche le reste du processus d’installation pour vous.
J’ai décidé de créer le site sur mon ordinateur portable, puis de pousser le code du site vers un dépôt Git sur GitLab, et de le tirer vers le serveur à partir de là, mais ce n’est pas strictement nécessaire si vous cherchez simplement à essayer Drupal sur votre Pi.
Faire passer le mot (du réseau)
J’avais maintenant mon Raspberry Pi fonctionnant comme un serveur Web et mon site Drupal fonctionnant bien dessus. Génial! Mais personne en dehors de mon réseau ne pouvait y accéder.
Je suis allé dans l’interface utilisateur Web de mon routeur et j’ai utilisé la redirection de port pour m’assurer que les requêtes Web entrantes (ports 80 et 443) seraient dirigées vers le Pi. Je l’ai fait en quelques minutes. Mais comment les gens trouveraient-ils le site ?
J’ai acheté un nom de domaine et mon bureau d’enregistrement disposait de son propre utilitaire pour le DNS dynamique, ce qui est très bien car l’un des inconvénients de l’utilisation de la connexion Internet de votre domicile est que les utilisateurs à domicile n’ont généralement pas d’adresse IP statique. Après avoir installé leur utilitaire et attendu la résolution de la configuration DNS, les utilisateurs pouvaient accéder à mon nouveau site Web à mandclu.com.
Bien sûr, le site devait également permettre des connexions sécurisées, j’ai donc également dû ajouter un certificat SSL. Auparavant, cela signifiait acheter un certificat qui aurait coûté plus cher que le Pi lui-même et le payer à nouveau chaque année lors du renouvellement. Heureusement, Chiffrez obtient un résultat similaire gratuitement. Vous pouvez même installer le certbot pour renouveler automatiquement le certificat.
Mon propre serveur Web Raspberry Pi
J’étais vraiment content du résultat. Était-ce aussi rapide qu’un hébergement coûteux de niveau entreprise ? Nan. Mais je pouvais héberger mon propre site gratuitement (ou, plus précisément, pour le coût de l’électricité pour alimenter le Pi), et j’avais toute liberté pour configurer le serveur comme je le souhaitais.
Il semblait que le site commençait à montrer des ralentissements occasionnels au fil du temps, mais il était assez rapide pour le peu de trafic que je recevais (presque aucun), donc il répondait à mes besoins.
J’ai aimé jouer avec le style du site et publier du contenu lorsque je me suis senti inspiré pour l’écrire. Et puis, le déménagement est venu.
J’ai déménagé fin 2020 (littéralement le dernier jour de l’année). L’un des inconvénients de l’hébergement de votre site Web à partir d’une boîte Pi dans votre salon est que le déménagement signifie que votre site Web tombe en panne pendant un certain temps. Dans mon cas, quelques semaines après la remise en ligne du site Web de mon projet pour animaux de compagnie, ce n’était pas une priorité majeure.
Finalement, j’ai connecté et rebranché mon serveur Web Pi et j’étais prêt à ajouter du nouveau contenu. J’ai été surpris de constater que le site fonctionnait sensiblement plus lentement que dans mon souvenir. Une grande chose à propos d’être un développeur Web est que vous vous faites des amis avec beaucoup de gens intelligents, alors j’ai contacté un ami qui a mentionné que les cartes MicroSD ralentissaient parfois avec le temps lors d’une utilisation régulière.
Accélérer mon serveur web
J’ai décidé qu’il était temps de reconstruire le serveur, j’ai donc apporté plusieurs modifications. Pour commencer, j’avais depuis acheté un Pi 4 de 8 Go à utiliser comme serveur Minecrafter, mais l’intérêt de mon fils pour le jeu avait diminué, alors j’ai décidé d’utiliser ce matériel pour la nouvelle version. Au lieu d’un MicroSD pour le stockage, j’ai acheté un SSD NVMe de faible capacité et un boîtier USB 3 pour celui-ci. Ces deux éléments coûtent probablement autant que ce que j’avais dépensé auparavant pour le Pi, la carte MicroSD, l’alimentation et le boîtier, mais le serveur fonctionne toujours très bien près d’un an plus tard.
Au lieu de simplement copier tout ce que j’avais précédemment installé, j’ai décidé de réinstaller le logiciel. Passer au Pi 4 de 8 Go signifiait que j’avais besoin d’un système d’exploitation 64 bits, ce qui signifiait que le serveur Ubuntu était ma meilleure option. Il y a plus d’options aujourd’hui, mais j’ai été vraiment satisfait d’Ubuntu, même s’il y avait une nouvelle courbe d’apprentissage. Certains répertoires sont à des endroits différents. J’ai dû m’habituer à Apt au lieu de Yum pour installer de nouveaux packages, etc. Mais le processus global était vraiment le même, avec quelques différences mineures dans les étapes elles-mêmes.
Un autre changement important que j’ai décidé d’apporter lors de la reconstruction a été d’ajouter Cloudflare en tant que réseau de diffusion de contenu (CDN) pour accélérer la livraison du site. Dans sa forme la plus élémentaire, un CDN accélère la livraison d’un site Web en conservant des versions en cache des fichiers du site à divers points de présence locaux (PoP) répartis dans le monde entier. Heureusement, Cloudflare a un forfait gratuitj’ai donc décidé de le mettre devant mon site Web hébergé par Pi.
Le résultat
La version mise à niveau du serveur Web Pi s’exécute rapidement. Genre, très rapide :
J’ai effectué des tests de vitesse sur de nombreux sites Web différents (certes, la plupart d’entre eux étaient Drupal), et ce sont quelques-uns des meilleurs scores que j’ai vus. Cela aide que le site soit simple de par sa conception. S’il y avait plus d’images sur le site, le score serait probablement un peu inférieur, en particulier pour les mobiles (où le test Lighthouse limite la bande passante pour simuler une connexion 4G lente).
Il convient également de souligner les scores d’accessibilité, sans aucun effort de ma part. Un autre avantage de l’exécution de mon site sur Drupal est de pouvoir s’appuyer sur un cadre déjà rigoureusement testé pour être facilement utilisé sur les lecteurs d’écran et d’autres technologies d’assistance.
Le seul travail que j’avais à faire pour atteindre le score des meilleures pratiques était d’installer et de configurer le logiciel gratuit Trousse de sécurité module.
Créez votre propre serveur Raspberry Pi
Si vous avez voulu essayer Drupal pour un projet Web personnel, et surtout si vous avez un Raspberry Pi supplémentaire qui prend la poussière, j’espère que vous essaierez de configurer votre propre serveur.