Installation du kiosque
🎯 Objectif
→ Créer un environnement kiosque sécurisé, minimaliste et clonable, basé sur Debian + Openbox + OpenKiosk.
→
Utilisation visée : bornes de visioconférence, affichage municipal, postes en accès public.
→
À la fin : une image système prête à être clonée pour un déploiement rapide sur d’autres machines.
🛠️ Installation
Debian
- Télécharger Debian
- Choisir la catégorie « Petits CD ou clefs USB ».
Conseil pour la création du compte utilisateur :
Utilisez le login : kiosk pour simplifier les étapes.
(Si vous choisissez un autre nom, pensez à adapter toutes les commandes et configurations de la documentation en conséquence.)
Pendant l’installation choisir uniquement :
- Serveur SSH
- Utilitaires usuels du système
NeAttention : ne pas installer d’environnement graphique !
Connexion Réseau
Dans les exemples
cici-dessous,dessouspensez à adapter le nom de l’interface réseau!(icil’interfacelesestinterfacessont enp...
etwlp...
)
Connexion
filaire
Dans le cas d’une connexion filaire ajouter cela dans le fichier /etc/network/interfaces
:
auto enp0s31f6
allow-hotplug enp0s31f6
iface enp0s31f6 inet dhcp
metric 100
Puis pour activer l’interface :
ifup enp0s31f6
WiFi Installation(WPA de openbox
Personal)
Installer xorg et openbox:
apt install -y xorg openbox jq
Installation de OpenKiosk
Comme mentionné sur le site, installer OpenKiosk avec ces commandes (nous utiliserons wget car curl n’est pas installé par défaut sur Debian)
wget https://www.mozdevgroup.com/dropbox/okcd/115/release/OpenKiosk115.20.0-2025-02-16-x86_64.deb
apt install -y ./OpenKiosk115.20.0-2025-02-16-x86_64.deb
Pensez àvérifier sur le sitequ'OpenKiosk n’a pas été mis à jour, dansDans le cas d’unenouvelleconnexionversionWiFiveuillez(avecadaptersimplele nouveau nom du fichier dans les commandes
⚙️ Configuration
Désactiver le menu grub au démarrage du PC & les messages kernel au boot
Éditer le fichier /etc/default/grub et changer la valeurmot de GRUB_TIMEOUT à 0 puis GRUB_CMDLINE_LINUX_DEFAULT à "quiet loglevel=0"
Pour appliquer ce changement, exécuter la commande suivante :
update-grub
Configuration d’un auto-login
Éditer le fichier /etc/systemd/system/getty@tty1.service.d/override.conf avec :
systemctl edit getty@tty1.service
Rajouter ces trois lignes :
Attention il faut les rajouter à la 3ème ligne du fichier, il faut mettre ces lignes juste en dessous de la ligne n°2 !passe)
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux
Puis, pour activer ce changement au démarrage du PC :
systemctl enable getty@tty1.service
Création du script de configuration de premier lancement
Dans /root/.profile ajouter à la fin :
if [ ! -e /home/kiosk/firstTime.ok ]; then
python3 /home/kiosk/firstTime.py
sleep 2
reboot
fi
Puis créer un fichier /home/kiosk/firstTime.py :
firstTime.py
Ce script va démarrer seulement au premier lancement du pc pour permettre de configurer le hostname, le réseau et redémarrer
Création d’un service système pour récupérer les fichier de configuration au démarrage du PC
Pour ce faire, créer un fichierficher /etc/
systemd/system/kiosk.service :
kiosk.service
Pour exécuter ce service à chaque démarrage :
systemctl enable kiosk.service
Voici le script qui permet de récupérer les fichiers de configuration auprès du serveur, le mettre dans /home/kiosk/start.sh :
Ce script va récupérer avec
python3 /home/kiosk/getConfig.pyle fichier de configuration pour OpenKiosk, une Whitelist, un ficher de configuration système et un script qui sera exécuté à chaque démarrage du pc sur le serveur dont l’url est contenue dans la variable $DOMAIN_NAME, puis les placer dans
/usr/lib/OpenKiosk/
start.sh
Rendre ce script exécutable :
chmod +x /home/kiosk/start.sh
Puis créer le script python /home/kiosk/getConfig.py :
getConfig.py
Changez la variable
DOMAIN_NAMEsi nécessaire, les fichiers seront récupérés à la racine. Par exemple, pour un kiosk, les fichiers de configurations seront :
→
https://$DOMAIN_NAME/$HOSTNAME/config.cfg→
https://$DOMAIN_NAME/$HOSTNAME/filters.txt→
https://$DOMAIN_NAME/$HOSTNAME/config_system.json→
https://$DOMAIN_NAME/$HOSTNAME/boot_script.sh
Création d’un service système pour lancer openbox au démarrage du PC
Pour ce faire, créer un fichier /etc/systemd/system/kiosk-openbox.service :
kiosk-openbox.service
Pour exécuter ce service à chaque démarrage :
systemctl enable kiosk-openbox.service
Voici le script qui permet de lancer openbox au démarrage du pc, le mettre dans /home/kiosk/start-openbox.sh :
start-openbox.sh
Rendre ce script exécutable :
chmod +x /home/kiosk/start-openbox.sh
Ajouter l’utilisateur kiosk au groupe input :
usermod -a -G input kiosk
Configuration d’un autostart pour OpenKiosk
Créer un fichier autostart dans /home/kiosk/.config/openbox/ :
autostart
Les commandes
xset ...permettent de désactiver l’écran de veille (si besoin de laisser l’écran de veille, commenter ces 3 premières lignes)
La commande
xmodmap -e "keycode 64 ="permet de désactiver la touche ALT du clavier pour éviter toute tentative de raccourcis clavier
Mise en place d’une page par défaut pour OpenKiosk :
Créer un fichier /home/kiosk/default.html :
default.html
Dans le fichier /usr/lib/OpenKiosk/openkiosk.cfg ajouter à la fin :
pref("browser.startup.homepage", "file:///home/kiosk/default.html");
Mise en place du système audio :
Installer pulseaudio et pavucontrol (interface graphique pour gérer l’audio) :
apt install -y pulseaudio pavucontrol alsa-utils
Créer un dossier /home/kiosk/.config/pulsewpa_supplicant/wpa_supplicant.conf
mkdirnetwork={
/home/kiosk/.config/pulsessid="NOM_DU_WIFI"
psk="MOT_DE_PASSE_DU_WIFI"
}
Changer le propriétaire du dossier sur l’utilisateur kiosk
chown kiosk: /home/kiosk/.config/pulse
Supprimer le service pulseaudio qui se lance par défaut :
mv /etc/systemd/user/default.target.wants/pulseaudio.service /etc/systemd/user/default.target.wants/pulseaudio.service.old
mv /etc/systemd/user/sockets.target.wants/pulseaudio.socket /etc/systemd/user/sockets.target.wants/pulseaudio.socket.old
Création d’un service système dans /etc/systemd/system/pulseaudio.service :
pulseaudio.service
Pour exécuter ce service à chaque démarrage :
systemctl enable pulseaudio.service
Ajouter l’utilisateur kiosk et pulse aux groupes suivants :
usermod -a -G pulse-access kiosk
usermod -a -G pulse kiosk
usermod -a -G audio kiosk
usermod -a -G pulse-access pulse
usermod -a -G pulse pulse
usermod -a -G audio pulse
Désactivation des terminaux virtuels
En faisant la combinaison de touches "CTRL+ALT+F1 ~ F6, on peut accéder à plusieurs terminaux virtuels. Il faut les désactiver car sinon ça permettrait à l’utilisateur de sortir d’OpenKiosk
Créer un fichier /etc/X11/xorg.conf :
xorg.conf
Désactivation des raccourcis clavier sur openbox
Il y a de nombreux raccourcis clavier sur openbox qui pourraient permettre à l’utilisateur de sortir du navigateur, nous allons donc tous les désactiver.
Pour cela,ajouter dans le fichier /etc/
xdg/openbox/rc.xmlnetwork/interfaces, repérer les balises <keyboard> et </keyboard>, puis supprimer tous les commentaires se trouvant entre ces balises.
Un commentaire commence par
<!--et finit par
-->
Puis commenter toutes les lignes entre les deux balise <keyboard> et </keyboard>, pour cela rajouter editer les balises comme ceci : <!-- <keyboard> et </keyboard> -->.
Configuration d’une imprimante
Afin d’ajouter une nouvelle imprimante sur le kiosque, nous utiliserons cups, l’installer :
aptauto installwlp0s20f3
cupsiface wlp0s20f3 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
metric 200
Installez les pilotesde votre imprimante (consultez le site fabricantPuis pourrécupéreractiverles pilotes)
Exemple pour une imprimanteKyocera TASKalfa 5003i:Site pour les drivers(prendre « Linux Universal Driver (Phase 9.4) »)Puis extraire le .zip et installer le fichier .debEnfin, faites la commandel’interface :
lpadminifup-p Finance -E -v socket://10.35.35.22:9100 -m kyocera/Kyocera_TASKalfa_5003i.ppdwlp0s20f3
WiFi
Enterprise)
(Exemple uniquement pour l’imprimante dans le secteur Finance de laconnexion MairieWiFi d’Échirolles)avec authentification :
Créer
Uneun foisficher les pilotes installés sur la machine, faites cette commande pour ajouter l’imprimante :/etc/wpa_supplicant/wpa_supplicant.conf
lpadminnetwork={
-pssid="mon-ssid"
Nom_Imprimantekey_mgmt=WPA-EAP
-Eeap=PEAP
-videntity="LOGIN"
URI_Imprimantepassword="PASSWORD"
-mphase2="auth=MSCHAPV2"
PPD_File_Name}
L’option -m à commerépertoire courantcelui-ci :
/usr/share/cups/model/Un exemple d’option -m :
-m something/test.ppdFera référence au fichier :
/usr/share/cups/model/something/test.ppd
Ensuite désactiver la auto-détection d’imprimante réseau :Dansdans le fichier /etc/
cups/cupsd.conf changez :
Browsing yesenBrowsing NoBrowseLocalProtocols dnssdenBrowseLocalProtocols none
Puis faite :
systemctl disable cups-browsed
Puis mettre l’imprimante ajoutée précédemment en imprimante par défaut avec :
lpadmin -d Nom_Imprimante
Bien sûr, changer
Nom_Imprimantepar le nom donné à votre imprimante…
Redémarrage automatique à 2h
Ensuite, nous allons mettre en place un redémarrage automatique des kiosques à 2h pour qu’ils puissent refaire une requête sur le serveur de config, cela peut servir pour récupérer son IP dans les logs du serveur.
crontab -e
Puis ajouter à la fin :
0 2 * * * /sbin/reboot
Mise à jour automatique
Pour faire des mises à jour automatique nous allons utiliser unattended-upgrades
apt install -y unattended-upgrades
Editer le fichier /etc/apt/apt.conf.d/50unattended-upgrades et décommenter ces deux lignes :
"origin=Debian,codename=${distro_codename}-updates";
"origin=Debian,codename=${distro_codename}-proposed-updates";
Puis dans le même fichier décommenter ces deux lignes et changer les valeurs comme ceci :
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "01:00";
Et pour finir décommenter cette ligne et mettre la valeur sur
:truenetwork/interfaces
Unattended-Upgrade::SyslogEnableauto "true";wlp0s20f3
iface wlp0s20f3 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
metric 200
activer
Les logs se trouve ici
/var/log/unattended-upgrades
Activer unattended-upgradesl’interface :
cpifup /usr/share/unattended-upgrades/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgradeswlp0s20f3
Editer le fichier /etc/apt/apt.conf.d/20auto-upgrades :
20auto-upgrades
Par défaut les mise à jour se déclenche vers 6h du matin, on va le changer :
systemctl edit apt-daily-upgrade.timer
Ajouter ça à la troisième ligne :
[Timer]
OnCalendar=
OnCalendar=01:30
RandomizedDelaySec=0
Changer la valeur après le deuxième
OnCalendarà l’heure souhaitée pourl’installationdes mises à jour
Appliquer les changements :
systemctl restart apt-daily-upgrade.timer
Nous allon faire pareil pour le téléchargement des paquetes qui se fait par défaut à 6h :
systemctl edit apt-daily.timer
Ajouter ça à la troisième ligne :
[Timer]
OnCalendar=
OnCalendar=01:00
RandomizedDelaySec=0
Changer la valeur après le deuxième
OnCalendarà l’heure souhaitée pourle téléchargementdes mises à jour
Appliquer les changements :
systemctl restart apt-daily.timer
Changer la langue d’affichage d’OpenKiosk
Lancer openbox (le faire en utilisateur kisok) :
startx
Aller dans les paramètre d’OpenKiosk (Shift + F1) (mdp par défaut admin)→ General → Language → English (US) → Search for more languages… → Select to add language → Français → Add → Ok
Mise en place de MeshAgent & GLPI
Uniquement pour la mairie d’échirolles
Dans le fichier /root/.profile ajouter bash /root/meshdownload.sh entre la ligne python3 ... et le sleep 2 :
.profile
Pour l’installation de GLPI, il faut récupérer ce fichier et le mettre manuellement dans /root
glpi-agent-1.10-linux-installer.pl
Puis créer dans /root/agent.cfg :
server=https://glpiprod.echirolles.fr/front/inventory.php
no-ssl-check = 0
Créer un fichier /root/inventory.sh :
inventory.sh
Le rendre exécutable :
chmod +x /root/inventory.sh
Et écrire votre secret de MeshAgent dans un fichier /root/meshsecret
Une fois les fichiers de configuration mis en place sur le server (voir juste dessous) faite un reboot :
reboot
Il ne reste plus qu’à créer une image de la solution mise en place sur un serveur FOG, par exemple, afin de déployer super rapidement des kiosques à l’avenir
🌐 Serveur web
La solution de kiosque repose sur un système centralisé de fichiers de configuration. Ces fichiers doivent être hébergés sur un serveur web accessible par tous les kiosques déployés.
Un serveur web accessible en HTTPS est donc nécessaire, avec un accès SSH permettant de créer et modifier les fichiers de configuration directement sur le serveur.