Aller au contenu
Sophién Felkaoui
Portrait de Sophién Felkaoui

Sophién Felkaoui

Ingénieur systèmes et réseaux

J'administre des serveurs Linux et des réseaux d'entreprise depuis 2022. Le reste du temps, je construis des sites et des outils — de la machine nue jusqu'à la page qui s'affiche. Ce qui suit est fait à la main, sans framework ni dépendance : j'aime savoir exactement ce que tourne sur mes serveurs.

  • Haute-Garonne
  • Debian, nginx, PHP
  • HTML, CSS, JavaScript, PHP

Réalisations

Ce que j'ai construit

Un site public, un outil de gestion et le serveur qui les héberge. Pour chacun, ce qui a demandé une décision plutôt qu'une liste de technologies.

Page d'accueil de pizzsandburgs.fr : un coucher de soleil néon, le titre « Les burgers les plus énormes XXL » et le logo du restaurant.
L'accueil
La carte du site : neuf burgers en fiches, chacun avec son illustration et ses trois prix.
La carte, illustrée

pizzsandburgs.fr En ligne

Site vitrine et commande à emporter · restaurant à Champlan (91)

Une page unique pour un restaurant de burgers : la carte, les horaires, l'accès, et depuis peu la possibilité de composer sa commande. Direction artistique demandée par le restaurant : l'esprit d'un jeu vidéo des années quatre-vingt-dix, néons et coucher de soleil.

  • Les 22 burgers sont dessinés, pas photographiés. Un script PHP lit la liste d'ingrédients de chaque recette et empile les couches — pain, steak, cheddar, cornichon — dans l'ordre d'un vrai burger. Modifier une recette et relancer le script suffit à redessiner le bon visuel.
  • La commande se termine dans WhatsApp. Le client choisit sa taille, retire ce qu'il ne veut pas, ajoute ses suppléments et son heure de retrait ; le site prépare le message et l'ouvre dans son WhatsApp. Aucun serveur, aucun compte, aucun paiement en ligne — et rien à sécuriser qui n'existe pas.
  • Le panier ne recopie aucun prix. Il lit la carte affichée sur la page. Un prix corrigé dans le HTML est aussitôt le bon dans la commande : les deux ne peuvent pas diverger.
  • Aucun cookie, aucun traceur, aucune police chargée ailleurs. Rien ne part vers un tiers au chargement, donc rien à déclarer ni bandeau à afficher.
  • Sans JavaScript, le site reste entier. La carte se lit, les horaires s'affichent, le numéro de téléphone prend le relais de la commande.

HTML · CSS · JavaScript sans dépendance · PHP pour la génération des illustrations SVG · hébergement mutualisé OVH · déploiement SFTP par script

Un devis vu par son destinataire : en-tête, coordonnées, lignes chiffrées, remise et total à payer.
Un devis, vu par le client
Le suivi d'un ticket : frise d'avancement, fil des échanges, et le coût calculé sur le temps passé.
Le suivi d'un ticket

Application de gestion Privé

Projet personnel · devis, factures, tickets

Une application écrite pour apprendre en construisant plutôt qu'en suivant un cours : fiches, documents et suivi d'incidents, en PHP sans framework et sur une base SQLite. Elle m'a surtout servi à traiter les problèmes qu'on ne rencontre qu'en allant au bout.

  • Les PDF sont rendus par Chromium sans interface, à partir de la vue d'impression — aucune bibliothèque PHP de mise en page. Le navigateur rendant la main avant d'avoir fini d'écrire, le programme attend un fichier stable, non vide et commençant par l'en-tête PDF avant de continuer.
  • Un client IMAP écrit en PHP pur. L'extension imap a disparu de PHP 8.4 ; plutôt que de rester sur une version ancienne, j'ai écrit le dialogue avec le serveur. Un message reçu d'un contact connu devient un ticket.
  • Les documents se partagent par lien à jeton, sans compte ni mot de passe pour le destinataire.
  • Le temps passé se facture, les notes internes non. La règle est écrite une seule fois, dans le code qui ajoute un message à un ticket — pas dans chaque page qui affiche un total. C'est ce qui garantit que le montant vu par le client et celui de la facture ne peuvent pas différer.
  • Un diagnostic vérifie toute la chaîne — base, courriel, rendu PDF, droits des fichiers — et se lance sous l'utilisateur du serveur web, pour tester les vrais droits et non ceux de l'administrateur.

PHP 8.4 sans framework · SQLite · Chromium sans interface · IMAP et SMTP · migrations versionnées
Captures prises sur un jeu de données de démonstration.

Le serveur qui héberge tout ça Privé

VPS Debian administré de bout en bout

Une machine nue chez un hébergeur, montée puis durcie à la main : c'est la partie qui rejoint mon métier. Tout est écrit dans des scripts, pas dans une suite de commandes tapées un soir et oubliées ensuite.

  • Installation et durcissement en deux scripts relançables. Accès SSH par clé uniquement, sur un port qui n'est pas celui par défaut ; mot de passe et connexion directe en administrateur désactivés ; pare-feu et bannissement automatique.
  • nginx et PHP-FPM, TLS par Let's Encrypt, renouvellement automatique, en-têtes de sécurité et durées de cache définis dans des fragments communs à tous les sites.
  • Un site tant qu'il n'est pas prêt reste fermé. Le site vitrine est protégé par mot de passe et marqué « ne pas indexer » : publier un site professionnel aux mentions légales incomplètes serait une infraction, pas un détail de calendrier.
  • Déploiement en une commande, et une empreinte de fichier dans l'adresse des feuilles de style : personne ne garde une ancienne version en cache après une mise à jour.

Debian · nginx · PHP-FPM · certbot · SSH par clé · pare-feu et fail2ban · msmtp

Méthode

Comment je travaille

Ma façon de travailler, en trois points — sur un serveur comme sur une application.

Rien n'est livré sans avoir été vérifié

Un changement n'est pas terminé parce qu'il fonctionne à l'écran : il l'est quand il a été éprouvé sur les cas qui posent problème, puis contrôlé une fois en production — et pas seulement sur le poste où il a été écrit.

Si quelque chose n'a pas pu être testé, je le signale. C'est une information utile pour celui qui décide, pas un aveu.

Ce que je fais deux fois, je l'écris

Installation d'un serveur, durcissement, mise en production : tout tient dans des scripts relançables, jamais dans une suite de commandes tapées un soir et oubliées ensuite.

L'infrastructure est ainsi documentée par construction, reproductible à l'identique, et quelqu'un d'autre peut reprendre la main sans dépendre de moi.

Le moins de pièces, et fermé par défaut

Chaque composant ajouté est une mise à jour à suivre et une porte de plus. J'installe le strict nécessaire, je n'ouvre que ce qui doit l'être, et ce qui n'est pas prêt reste inaccessible.

Un système simple se comprend, se répare, se transmet — et vieillit nettement mieux qu'un système complet.

Contact

Me joindre

Une question sur l'une de ces réalisations, ou simplement l'envie d'échanger sur un sujet technique ? Le courriel est le plus simple.

contact@sfe-consulting.fr