Introduction
Vous connaissez cette sensation ? Il est 23h, vous redémarrez votre serveur Proxmox pour vérifier que la nouvelle configuration fonctionne correctement, et là… c’est le drame. Perte d’accès SSH, interface web ne répond plus, et bien entendu, votre serveur coincé dans un coin de la pièce et aucune envie de sortir le combo écran-clavier pour aller debugger physiquement.
C’est là qu’intervient PiKVM. Ce projet open-source transforme un simple Raspberry Pi en un KVM over IP. Accès au BIOS et au terminal comme si vous étiez devant la machine… tout ça via un simple navigateur web.
Dans cet article, je vais décrire la façon dont j’ai mis en place PiKVM v2 (la dernière version DIY) sur un Raspberry Pi Zero 2 W. C’est compact, c’est efficace, et ça me sauvera la prochaine fois que mon serveur plantera au redémarrage. Plus besoin de déplacer un moniteur, un clavier et une souris. Je n’aurai qu’à accéder à mon serveur depuis mon navigateur. C’est parti pour le tuto !
1. KVM, qu’est-ce que c’est ?
Derrière cet acronyme (Keyboard Video Mouse) se cache un outil vital : un commutateur qui permet de contrôler plusieurs ordinateurs à partir d’un seul ensemble clavier/écran/souris. Le PiKVM va plus loin en déportant ces signaux sur le réseau (IP), d’où le terme KVM over IP.
Concrètement, votre Raspberry Pi “capture” le flux vidéo HDMI du serveur et simule un clavier/souris USB. Contrairement à une prise en main à distance classique (SSH, RDP, VNC), le PiKVM fonctionne même si le système d’exploitation du serveur est planté ou en plein boot du BIOS.
Des solutions tout-en-un existent, mais j’ai préféré construire mon propre KVM. J’aime bricoler et mettre les mains dans le cambouis, et j’ai une nette préférence pour les outils open source, abordables et que j’ai moi-même assemblés. Le PiKVM coche toutes ces cases, dont une qui m’était indispensable : le Wi-Fi, car l’emplacement de mon serveur ne me permet pas de brancher le KVM en Ethernet (sauf à tirer un câble de 15 mètres à travers tout mon salon !).
2. La liste de course
Pour la création d’un PiKVM DIY, voici ce qu’il vous faut :
- Un Raspberry Pi Zero 2 W
- Une carte microSD de classe 10 avec minimum 16 Go
- Un adaptateur HDMI vers CSI-2 : Ce petit module permet de capturer le flux vidéo HDMI du serveur et de l’envoyer vers le port CSI-2 du Raspberry Pi, car son seul port mini HDMI ne permet pas de capturer un flux vidéo (IN), mais uniquement de l’envoyer (OUT).
- Un câble CSI FPC : pour connecter l’adaptateur HDMI au Raspberry Pi (généralement fourni avec l’adaptateur)
- Plusieurs câbles : un HDMI, un USB-A vers micro USB et un micro-USB pour l’alimentation.
- Raspberry Pi Imager ou équivalent pour pouvoir flasher l’OS sur la carte microSD

3. Préparation de la carte SD
Commençons par l’installation de l’OS. Ne cherchez pas une image Raspberry Pi OS standard, PiKVM fournit une image Arch Linux pré-configurée aux petits oignons.
Première étape : Téléchargez l’image de PiKVM spécifique pour Raspberry Pi Zero 2 W : Download (Lien vers toutes les images).
Deuxième étape : Flasher l’OS sur la carte microSD à l’aide de Raspberry Pi Imager (RPi Imager). La documentation PiKVM explique pas à pas comment faire, mais je vous remets les étapes ci-dessous.
-
Téléchargez et installez la dernière version de RPi Imager
-
Branchez votre carte microSD à votre PC. Attention à ne pas avoir de données importantes sur la carte, car tout sera effacé durant le processus d’installation de PiKVM
-
Lancez RPi Imager et sélectionnez votre appareil Raspberry Pi (pour moi, c’est Raspberry Pi Zero 2 W)

- Dans la partie OS, cliquez sur “Utiliser image personnalisée” tout en bas de la liste des OS et sélectionnez l’image PiKVM (
*.imgou*.img.xz) que vous avez téléchargé à l’étape précédente.

- Pour le stockage, sélectionnez la carte microSD sur laquelle vous voulez installer PiKVM

- Vérifiez que tout est bon avant l’écriture sur la carte. Si tout est bon, vous pouvez cliquer sur “ÉCRIRE”

- Validez l’écriture sur la carte. Attention, comme affiché par RPi Imager, le processus effacera tout ce qu’il y a sur la carte microSD sans possibilité de restauration.

- Écriture de l’image en cours sur la carte. Vous pouvez en profiter pour aller prendre un café/thé et vous préparer à la suite.

- Une fois l’écriture terminée, vous pouvez retirer la carte microSD du PC, car elle a été éjectée automatiquement par RPi Imager. S’il y a eu une erreur durant l’écriture, recommencez le processus. Et si ça persiste, ça vient peut-être de la carte microSD, donc tentez avec une autre.

4. Configuration “Headless” : Le fichier pikvm.txt
Cette étape de configuration est cruciale, car elle va permettre de configurer votre PiKVM au premier démarrage (notamment le Wi-Fi, puisque le Raspberry Pi Zero 2 W n’a pas de port Ethernet et doit donc forcément utiliser le Wi-Fi). Toutes les configurations à appliquer doivent être écrites dans un fichier nommé pikvm.txt situé à la racine de la carte SD. Voici les étapes pour modifier ce fichier suivant la documentation :
-
Branchez la carte microSD sur le PC et rendez-vous à la racine du montage de la carte pour y trouver le fichier
pikvm.txtqu’il faudra modifier. Si PiKVM n’a encore jamais été démarré, le fichier ne contiendra queFIRST_BOOT=1. Ne supprimez surtout pas cette ligne. Elle est indispensable pour que le système s’auto-installe correctement au premier démarrage. -
Éditez les lignes suivantes pour configurer votre Wi-Fi :
FIRST_BOOT=1 # Ne pas toucher à cette ligne
WIFI_ESSID='votre_nom_wifi' # SSID (nom de votre Wi-Fi)
WIFI_PASSWD='votre_mot_de_passe' # Mot de passe
# Autres options non obligatoires
SSH_PORT=54322 # Port SSH pour se connecter au PiKVM (par défaut à 22)
WIFI_WPA23=1 # Permet de se connecter à des réseaux mix WPA2/WP3
WIFI_HIDDEN=1 # Permet de se connecter à un Wi-Fi masqué
# Pour configurer une adresse IP statique (DHCP par défaut) :
WIFI_ADDR=192.168.0.100/24 # Adresse IP du PiKVM
WIFI_GW=192.168.0.1 # Passerelle
WIFI_DNS=8.8.8.8 # DNS
Important : les backslahes dans le mot de passe doivent être échappés (\\ au lieu de \)
Si besoin de plus d’options ou de plus de détails, se référer à la documentation officielle de PiKVM.
- Sauvegardez vos modifications
Une fois le fichier pikvm.txt modifié, sauvegardez vos modifications, puis éjectez la carte microSD de votre PC et insérez-la dans le Raspberry Pi Zero 2 W.
Attention, quelques informations importantes :
- le Raspberry Pi Zero 2 W ne supporte pas le Wi-Fi 5GHz
- le WPA3 est mal supporté, voire pas supporté par le Raspberry Pi Zero 2 W
5. Branchement et premier démarrage
Les branchements
Il est temps de donner vie à la bête. Pour cela, procédez aux branchements :
- Connectez le câble CSI FPC entre l’adaptateur HDMI et le Raspberry Pi.

-
Insérez la carte microSD dans le Raspberry Pi
-
Branchez le câble USB (Data) entre le port micro-USB du Raspberry Pi (celui noté
USB) et un port USB de votre serveur. C’est ce câble qui simulera le clavier et la souris.
⚠️ Attention ! Un point crucial avant de continuer. Comme l’indique la documentation officielle, le Raspberry Pi Zero 2 W partage sa ligne électrique entre ses deux ports micro-USB. Si vous branchez le Pi au secteur ET au serveur normalement, vous allez injecter du courant dans la carte mère de votre serveur (Backpowering). Cela peut endommager votre serveur.
Ma solution “système D” : Pour créer un câble “Data-only” sans rien couper, j’ai simplement placé un minuscule morceau de scotch sur le pin 5V (celui tout à droite) de la prise USB-A. Ainsi, seules les données passent, et mon serveur est protégé ! Pour tester que ça fonctionne, j’ai uniquement branché le câble entre le port micro-USB noté USB et mon serveur. Si le Raspberry Pi ne s’allume pas, c’est que ça fonctionne.

- Branchez le câble d’alimentation au port micro-USB du Raspberry Pi (celui noté
PWR IN)

- Enfin, branchez le câble HDMI entre votre serveur et l’adaptateur.

Accès à l’interface
Laissez au PiKVM quelques minutes pour son premier démarrage. Une fois prêt, trouvez son adresse IP sur votre réseau ou utilisez l’adresse IP configurée dans pikvm.txt et connectez-vous via votre navigateur :
https://<IP_DE_VOTRE_PI>
Note : si vous utilisez un pare-feu dans votre installation, assurez-vous que les ports nécessaires sont ouverts (HTTP, HTTPS, SSH).
Les identifiants par défaut sont :
- Username :
admin - Password :
admin - 2FA code : désactivé par défaut

Et voilà ! PiKVM est installé, félicitations ! Vous pouvez dès à présent voir la page d’accueil qui comporte trois gros boutons :
- KVM : pour accéder à votre serveur
- Terminal : pour accéder au terminal du PiKVM et modifier les configurations
- Logout : pour se déconnecter

Note : Si la page ne charge pas, vérifiez que votre navigateur est autorisé à accéder au réseau local. Certains navigateurs bloquent ce paramètre par défaut.
Accès au serveur
Pour accéder au serveur à distance, il suffit de cliquer sur le bouton KVM de la page d’accueil. Vous serez alors redirigé sur la page KVM qui vous donnera accès à votre serveur comme si vous étiez directement dessus.

Note : Si rien ne s’affiche à l’écran, c’est peut-être à cause du mode d’affichage vidéo. Essayez un autre mode en cliquant sur le bouton “System” en haut à droite et en choisissant un des trois Video mode :

Pour plus d’informations sur les différentes configurations possibles, se référer à la documentation.
Accès au terminal du PiKVM
En cliquant sur le bouton “Terminal” de la page d’accueil, vous aurez accès à un terminal Linux pour pouvoir faire toutes les configurations nécessaires. C’est notamment dans ce terminal que vous pourrez sécuriser votre PiKVM en changeant les mots de passe par défaut et en activant la double authentification (2FA).

6. Sécurisation du PiKVM
Maintenant que vous avez accès à l’interface graphique, il est impératif de changer les accès par défaut. Votre PiKVM a un contrôle total sur votre serveur. S’il n’est pas sécurisé, c’est une porte grande ouverte sur votre infrastructure.
Le système PiKVM est basé sur Arch Linux et fonctionne par défaut en mode lecture seule (Read-Only). Pour toute modification, il faudra passer en mode lecture/écriture (Read-Write).
Changement des mots de passe
Pour changer les mots de passe du superuser Linux et de l’interface graphique, il faut être l’utilisateur root et passer en mode lecture/écriture. Ci-dessous les étapes à suivre d’après la documentation.
- Changement vers utilisateur root avec la commande
su -:
[kvmd-webterm@pikvm ~]$ su -
Password:
[root@pikvm ~]#
Le mot de passe par défaut du compte root est root.
- Passage en mode lecture/écriture avec la commande
rw:
[root@pikvm ~]# rw
+ mount -o remount,rw /
+ mount -o remount,rw /boot
+ set +x
=== PiKVM is in Read-Write mode ===
- Changement du mot de passe root :
[root@pikvm ~]# passwd root
Le mot de passe doit être saisi deux fois pour confirmation. Si vous voyez le message passwd: password updated successfully, c’est que le mot de passe a bien été modifié.
- Changement du mot de passe de l’interface graphique :
[root@pikvm ~]# kvmd-htpasswd set admin
Comme pour le mot de passe root, il faut saisir le mot de passe deux fois pour confirmation.
- Une fois les modifications terminées, il faut repasser en lecture seule avec la commande
ro:
[root@pikvm ~]# ro
- Quitter le mode root en faisant Ctrl+D ou en tapant
exit
[root@pikvm ~]# exit
logout
[kvmd-webterm@pikvm ~]$
Activation de la Double Authentification (2FA)
C’est une couche de sécurité indispensable. PiKVM facilite énormément la mise en place du TOTP (compatible avec toutes les applications OTP comme Proton Authenticator ou 2FAS). Pour configurer la double authentification, rien de plus simple (toujours en mode root) en suivant la documentation :
[root@pikvm ~]# rw
[root@pikvm ~]# kvmd-totp init
[root@pikvm ~]# ro
Une fois la commande kvmd-totp init lancée, elle affichera un QR code que vous pourrez scanner avec votre application OTP.
Attention ! Vérifiez bien que le NTP est correctement configuré et que l’heure est bonne. Vous pouvez vérifier ça avec la commande timedatectl :
[root@pikvm ~]# timedatectl
Local time: Sun 2026-04-12 21:47:33 CEST
Universal time: Sun 2026-04-12 19:47:33 UTC
RTC time: n/a
Time zone: Europe/Paris (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
La Time zone n’a pas d’importance, mais vérifiez que Local time est bon, sinon rendez-vous au chapitre suivant pour configurer le NTP.
Si besoin d’afficher à nouveau le QR code, utilisez la commande kvmd-totp show.
Si besoin de supprimer le 2FA, utilisez la commande kvmd-totp del.
⚠️ Attention : Ne jamais exposer PiKVM directement sur Internet !
PiKVM donne un accès total au serveur, y compris au BIOS. Si vous devez y accéder depuis l’extérieur du réseau local, utilisez obligatoirement :
- Un VPN comme WireGuard, OpenVPN, ou Tailscale.
- Ou un reverse proxy (Nginx, Caddy, Traefik) avec une authentification forte (ex : authentification basique + 2FA) et un certificat TLS (comme Let’s Encrypt).
Évitez les redirections de port simples sur votre box Internet, car elles exposent PiKVM à des attaques par force brute ou à des exploits.
7. Configuration NTP (via chrony) et mises à jour
Maintenant que la sécurité est en place, attardons-nous sur la synchronisation temporelle. Une horloge bien synchronisée est indispensable pour deux raisons : garantir le bon fonctionnement du 2FA (un décalage de quelques secondes suffit à invalider les codes TOTP), et pouvoir mesurer précisément la latence WebRTC entre le PiKVM et votre navigateur. Cette mesure repose sur la comparaison des horloges des deux machines, qui doivent donc être synchronisées. Suivant la documentation officielle sur la latence, nous allons utiliser chrony.
Mise à jour et installation de chrony
Avant d’installer quoi que ce soit, commençons par mettre à jour la base de données des paquets et le système.
[root@pikvm ~]# rw
[root@pikvm ~]# pacman -Syy
Ensuite, on installe chrony :
[root@pikvm ~]# pacman -S chrony
Avant de démarrer chrony, il est possible de modifier sa configuration pour, par exemple, utiliser d’autres serveurs NTP. C’est ce que j’ai fait afin d’utiliser mon serveur NTP local interne à mon homelab. Je synchronise ainsi tous mes serveurs ensemble.
Le fichier de configuration de chrony se trouve à /etc/chrony.conf :
# /etc/chrony.conf
# Welcome to the chrony configuration file.
# Utilisez uniquement le serveur NTP local - A MODIFIER
server 192.168.0.10 iburst
# Fichier pour stocker les informations de dérive de l'horloge
driftfile /var/lib/chrony/chrony.drift
# Répertoire pour sauvegarder les clés NTS (si utilisé)
ntsdumpdir /var/lib/chrony
# Évitez les ajustements brutaux de l'horloge
maxupdateskew 100.0
# Synchronisez l'horloge matérielle (RTC) avec l'horloge système
rtcsync
# Corrigé immédiat si l'écart est > 1 seconde (uniquement lors des 3 premières mises à jour)
makestep 1 3
# Utilisez les informations de décalage TAI-UTC depuis la base de données du fuseau horaire
leapsectz right/UTC
# Répertoire pour les logs (optionnel, décommentez si nécessaire)
logdir /var/log/chrony
# log tracking measurements statistics
Dans la configuration chrony ci-dessus, j’écris en dur l’IP de mon serveur NTP (server 192.168.0.10 iburst). Il faudra bien évidemment le modifier en fonction de votre serveur NTP, ou garder la configuration par défaut.
Je recommande également de mettre à jour le timezone :
[root@pikvm ~]# timedatectl set-timezone Europe/Paris
Enfin on arrête l’ancien service NTP et on active chrony :
[root@pikvm ~]# systemctl stop systemd-timesyncd
[root@pikvm ~]# systemctl start chronyd
[root@pikvm ~]# systemctl enable chronyd
Une fois terminé, on verrouille le système et on redémarre pour valider que tout se lance correctement au boot :
[root@pikvm ~]# ro
[root@pikvm ~]# reboot
Pour maintenir PiKVM sécurisé et performant, pensez à mettre à jour régulièrement le système et les paquets avec la commande pacman -Syu (en root en mode rw).
8. Conclusion
Félicitations ! Vous avez transformé un petit Raspberry Pi Zero 2 W en un outil d’administration professionnel.
Pour une cinquantaine d’euros, vous venez de vous offrir :
- Un accès au BIOS à distance
- Une console clavier/souris accessible partout sur votre réseau
- La paix intérieure à chaque crash de votre serveur physique
C’est un investissement en temps que vous ne regretterez pas la prochaine fois que votre serveur Proxmox décidera de faire des siennes un dimanche soir. Plus besoin d’aller chercher le clavier et un moniteur (ou l’écran de la télé), tout se passe désormais dans votre navigateur !
Et après ?
Si vous voulez aller encore plus loin, sachez que PiKVM permet aussi de gérer l’alimentation physique de votre serveur (Allumage/Reset) via les pins GPIO, ou même de surveiller les températures. Mais pour aujourd’hui, vous avez déjà l’essentiel pour reprendre le contrôle.
La prochaine étape, faire un joli boîtier à mon PiKVM quand j’arriverai à me procurer une imprimante 3D, car pour l’instant, c’est un peu en bazar au-dessus de mon serveur.
Merci d’avoir lu cet article, et n’hésitez pas à me faire un retour si vous avez des questions ou des suggestions pour l’améliorer !