Passer au contenu principal

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

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 ! (ici l’interfaceles estinterfaces sont enp... et wlp...)

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

Site 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 site qu'OpenKiosk n’a pas été mis à jour, dansDans le cas d’une nouvelleconnexion versionWiFi veuillez(avec adaptersimple le 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.py le 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_NAME si 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"
}

Puis


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 pilotes de votre imprimante (consultez le site fabricantPuis pour récupéreractiver les pilotes)

Exemple pour une imprimante Kyocera TASKalfa 5003i :
Site pour les drivers (prendre « Linux Universal Driver (Phase 9.4) »)
Puis extraire le .zip et installer le fichier .deb
Enfin, faites la commandel’interface :

lpadminifup -p Finance -E -v socket://10.35.35.22:9100 -m kyocera/Kyocera_TASKalfa_5003i.ppdwlp0s20f3

WiFi
(WPA

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}

Puis


ajouter

L’option -m à comme répertoire courant celui-ci : /usr/share/cups/model/
Un exemple d’option -m : -m something/test.ppd
Fera 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 yes en Browsing No
  • BrowseLocalProtocols dnssd en BrowseLocalProtocols 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_Imprimante par 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

Puis


pour
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 pour l’installation des 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 pour le téléchargement des 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

🎉 Et voilà, vous avez fini ! 🎉

🌐 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.

Références / Documentation