Connectivité locale : Lancer le Wake On Lan directement depuis votre site web interne

Connectivité locale : Lancer le Wake On Lan directement depuis votre site web interne

26/01/2024 3 Par Pierre-Albert
Temps de lecture : 4 minutes

Ma femme a un iMac de 2012 et ne peut plus jouer à des jeux récents en utilisant Bootcamp.
Je lui ai mis en place un PC de jeux que j’ai installé dans le garage et sur lequel elle se connecte avec Parsec.
Tout fonctionne à merveille sauf qu’il faut à chaque utilisation aller dans le garage (gelé en hiver, étouffant l’été) afin d’allumer le PC de jeux.
Comme tout ce que je tente d’automatiser, le WakeOnLan (WOL) semblait le plus approprié. Mais hors de question de faire taper une ligne de commande à ma femme à chaque fois qu’elle voudra jouer.
Ayant un site web local regroupant des raccourcis afin d’accéder à nos applications locales, je me suis demandé si c’était possible de lancer le WOL depuis cette page web local.

WakeOnLan (WOL) – Qu’est ce que c’est ?

Le WakeOnLan, ou Réveil sur le réseau en français, est un standard des réseaux Ethernet qui permet à un ordinateur éteint d’être démarré à distance. (Définition de Wikipedia).

Pour mieux expliquer, vous avez un PC qui est éteint et un équipement (PC, smartphone, assistant vocal…) qui va pouvoir allumer ce PC éteint à distance. Enfin à distance sur votre réseau domestique. Il est possible aussi de démarrer un PC depuis Internet et ça s’appelle le WakeOnWan (WOW).

Afin d’allumer ce PC (On dit aussi le réveiller), un paquet magique (Si, si, ça s’appelle vraiment comme ça 😀 ) ou magic packet est envoyé sur l’ensemble du réseau à la recherche de l’adresse physique de la machine. Cette adresse physique est aussi appelée adresse MAC et prend la forme de chiffre et lettre (ex : 5E:FF:56:A2:AF:15).
Il est possible d’envoyer ce paquet magique soit en saisissant une ligne de commande, soit en utilisant un logiciel/application.

Comment le configurer sur son PC ?

Je ne vais pas vous faire un tuto sur comment configurer un WOL. Il en existe des tonnes sur internet, voici quelques sites. Même si certains sont datés, le principe reste le même :

Et même des vidéos youtube :

Ok, le PC démarre en WOL

Maintenant que le PC démarre en WOL, il est temps que je configure sur mon serveur web local un bouton pour que ma femme puisse le lancer. Car pour le moment à part des boutons pointant vers des raccourcis et une page Wiki (Qui est une simple page HTML avec un texte), on ne peut pas lancer le WOL.

Il est beau mon site, non ? 🙂

C’est là que la magie du PHP entre en jeu. Nous allons pouvoir exécuter une commande sur le serveur linux hébergeant le site web. Pour rappel, le site web est hébergé en local chez moi.
La commande pour lancer un WOL sur Ubuntu est la suivante (Testée et approuvée) :

wakeonlan XX:XX:XX:XX:XX:XX

Le but est de pouvoir faire exécuter cette commande lorsque ma femme clique sur un bouton sur le site web.
Pour cela, je crée une page web nommé wol.php dans laquelle je vais renseigner le code suivant :

<?php 
exec ("wakeonlan XX:XX:XX:XX:XX:XX"); 
?>

Maintenant, je vais devoir ajouter sur la page web un bouton pointant vers cette page PHP et l’ouvrir dans un nouvel onglet. Et c’est le code suivant qui va le permettre :

<form method="POST" action="wol.php" target="_blank">
<center><input type="submit" value="Lancer PC jeux"></center>
Et hop un bouton en plus.

Comme je ne veux pas que ce nouvel onglet reste ouvert, j’ai ajouté le code suivant dans wol.php à la suite de la commande qui lance le WOL :

echo "<script language='javascript'>window.close()</script>";

Ayant mis cette page comme écran d’accueil sur le navigateur internet Google Chrome de ma femme, il lui suffit d’ouvrir un nouvel onglet et de cliquer sur le bouton pour voir apparaître quelques secondes/minutes plus tard son PC de jeu dans Parsec.
Il faut utiliser Google Chrome car avec Firefox ou Safari, il faudra ajouter du code supplémentaire.

Conclusion

Une fonctionnalité très pratique mais un peu longue à mettre en place.
En effet, plusieurs contraintes rencontrées :

  • J’ai dû farfouiller dans le bios car ce n’était pas la même présentation que dans les tutos.
  • J’ai dû aussi faire des tests du code PHP, des allez-retour entre le bureau et le garage pour voir si ça marchait.
  • J’avais l’erreur « Les instructions de traitement xml ne sont pas géré en html » et j’ai passé plusieurs minutes avant de me rendre compte que PHP n’était pas installé sur mon serveur web (Seulement APACHE, donc seulement du HTML/CSS).
  • Et pour finir, je ne pouvais pas faire mes tests lorsque ma femme jouait 🙂

Bref, quelque chose de simple à mettre en place quand on y pense mais qui m’a demandé bien… 5H en tout pour que ça fonctionne. Mais maintenant c’est 20 secondes d’économisées à chaque démarrage du PC de jeu 😆