Si vous utilisez un Raspberry Pi comme serveur domestique, il est probable que vos amis et votre famille accèdent également à ses services. De temps en temps, ils auront besoin d’exécuter des tâches de routine qui nécessitent un contrôle limité du serveur.
OliveTin est une application auto-hébergée à laquelle ils peuvent accéder via un navigateur web pour exécuter des commandes et des scripts prédéterminés que vous aurez définis.
Pourquoi utiliser OliveTin sur Raspberry Pi ?
Les ordinateurs monocartes de la série Raspberry Pi constituent d’excellents serveurs domestiques légers, et il est relativement facile d’installer un serveur web Raspberry Pi.
Outre l’hébergement de sites Web et de blogs, votre Raspberry Pi peut héberger des galeries de photos, des livres de cuisine et des suites bureautiques en ligne. Vous pouvez diffuser des films et des émissions sur votre téléviseur avec Jellyfin, ou héberger vous-même une bibliothèque de livres audio avec Audiobookshelf.
Le nombre d’utilisateurs n’est pas non plus limité, donc à moins que vous ne viviez seul, vous partagerez probablement l’accès aux services de votre Raspberry Pi avec d’autres membres de votre foyer.
Les serveurs, comme tout autre type d’ordinateur, nécessitent une maintenance occasionnelle. Vos utilisateurs peuvent avoir besoin de démarrer ou d’arrêter des services particuliers, de se connecter à un VPN, de sauvegarder des fichiers sur le Raspberry Pi ou de vérifier les problèmes de réseau.
Si votre famille et vos colocataires sont familiers avec la ligne de commande Linux, et que vous avez confiance en eux pour ne pas bousiller accidentellement ou délibérément votre système, vous pouvez envisager de leur donner leurs propres identifiants SSH ainsi que l’appartenance à un groupe sudo, afin qu’ils puissent effectuer ces tâches sans vous déranger.
C’est une proposition tentante mais dangereuse, et si quelque chose tourne mal, c’est vous qui devrez le réparer. Avec OliveTin, vous pouvez définir des commandes de routine que d’autres utilisateurs du serveur peuvent être amenés à exécuter régulièrement. Ils peuvent alors ouvrir un navigateur web et appuyer sur un bouton qui exécutera la commande sur votre Pi- sans jamais avoir besoin de toucher à la ligne de commande.
Comment installer OliveTin sur un Raspberry Pi
La façon la plus simple d’installer OliveTin est d’utiliser Docker Compose. Si vous n’avez pas encore installé Docker et Docker Compose sur votre Raspberry Pi, consultez notre guide essentiel sur l’installation de Docker et Docker Compose sous Linux.
Connectez-vous à votre serveur Raspberry Pi à l’aide de Secure Shell (SSH) :
ssh pi@your-local-pi-ip-address
Créez un nouveau répertoire pour OliveTin, et utilisez la commande cd pour y accéder :
mkdir olivetin && cd olivetin
Utilisez l’éditeur de texte nano pour créer un nouveau fichier Docker Compose :
nano docker-compose.yml
Copiez et collez ce qui suit :
version: "3.5"
services:
olivetin:
container_name: olivetin
image: jamesread/olivetin
user: root
volumes:
- ~/olivetin:/config
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "1337:1337"
restart: unless-stopped
networks:
web:
section:
external: true
Sauvegardez et quittez nano avec Ctrl + O puis Ctrl + X.
Avant de lancer OliveTin pour la première fois, vous devez créer un fichier de configuration. C’est là que vous définirez les commandes à exécuter par les utilisateurs. Pour l’instant, entrez :
touch config.yaml
Utiliser OliveTin pour donner à vos utilisateurs un contrôle limité sur le serveur
Dans votre terminal, entrez :
docker-compose up -d
Cette commande lancera Docker Compose en mode détaché. Docker Compose va télécharger les images pour OliveTin et mettre en place les conteneurs. Ce processus peut prendre un certain temps. Lorsque vous revenez à l’invite de commande, vérifiez que tout se déroule correctement avec :
docker-compose ps
Ouvrez un navigateur et accédez à votre-adresse-ip-locale:1337. Vous devriez voir une page web grise avec le pied de page OliveTin. Vous êtes maintenant prêt à définir les commandes pour vos utilisateurs.
De retour dans le terminal, utilisez nano pour éditer le fichier de configuration que vous avez créé plus tôt :
nano config.yaml
La syntaxe est simple, et vous pouvez définir le nom des services et les actions à effectuer de la même manière que dans l’exemple suivant :
actions:
- title: "Reboot server"
shell: reboot
- title: "Ping Netflix"
shell: ping netflix.com
- title: Restart Apache
icon: "🏁"
shell: sudo service apache2 restart
Le service title est le titre que les utilisateurs peuvent voir, tandis que la commande suivante shell : est la commande qui sera exécutée sur votre Raspberry Pi.
OliveTin supporte les icônes unicode, et vous pouvez spécifier le code HTML de ces icônes dans le champ icône . Vous pouvez également indiquer l’URL complète de l’image que vous souhaitez utiliser. Par exemple :
icon: '<img src = "https://www.makeuseof.com/public/build/images/muo-logo-full-colored-light.svg" width = "81px"/>'
Bien que notre configuration donne des exemples qui redémarrent le Raspberry Pi, redémarrent Apache, et font un ping sur Netflix, il n’y a vraiment aucune limite aux commandes que vous pouvez spécifier. Vous pouvez donner aux utilisateurs un bouton qui copiera les films d’un répertoire à l’autre, effacer et écraser rapidement certains répertoires, ou construire un kill-switch qui cryptera vos périphériques de stockage avec une clé aléatoire.
Lorsque vous êtes satisfait de votre configuration, enregistrez le fichier et quittez nano en appuyant sur Ctrl + O puis Ctrl + X.
Toute sortie stdout produite à la suite d’une pression sur un bouton est enregistrée. Vous pouvez voir les journaux en appuyant sur la touche Journaux en haut à droite. Avec OliveTin, vous pouvez également permettre aux utilisateurs de donner des commandes, appelées arguments, par l’intermédiaire de l’interface web, soit dans une zone de texte, soit à l’aide d’une liste déroulante.
En raison du danger associé au fait de laisser des utilisateurs inexpérimentés émettre des commandes arbitraires privilégiées directement sur votre serveur Raspberry Pi, vous pouvez restreindre le type d’argument qu’OliveTin acceptera.
Pour une référence rapide, les types sont :
Type | Valeurs acceptées |
---|---|
très_dangerous_raw_string | Comme son nom l’indique, l’utilisateur pourra saisir n’importe quel texte ou commande et le faire exécuter |
int | Tout nombre positif entier |
ascii | N’importe quel caractère ou nombre, mais pas d’espace ni de ponctuation. |
identifiant_ascii | Pour les DNS et similaires |
ascii_sentence | a-z , 0-9, avec espaces, |
url | Une adresse web |
Une définition de zone de texte dans votre config.yaml est formaté comme suit :
actions:
- title: Echo something to command line
icon: "⛔"
shell: echo {{ message }}
arguments:
- name: message
type: very_dangerous_raw_string
La zone de texte apparaîtra lorsque quelqu’un appuiera sur le bouton approprié et permettra à n’importe quel utilisateur de votre réseau local d’exécuter un code arbitraire par l’intermédiaire du navigateur. Ce n’est pas vraiment une bonne idée.
OliveTin permet aux utilisateurs d’effectuer facilement des tâches de base sur votre serveur Raspberry Pi
Le Raspberry Pi est la plateforme de serveur domestique idéale pour héberger des services destinés à votre famille, et OliveTin leur permet d’effectuer des tâches de maintenance simples sans vous déranger.
Il existe des milliers de projets auto-hébergés que vous pouvez exécuter sur le Raspberry Pi et qui profiteront à votre famille. Faites quelques recherches et découvrez les services pour lesquels vous payez et que vous pourriez héberger vous-même !