Raspbot est un serveur API REST léger, conçu pour le Raspberry Pi , ainsi qu'une application Web client qui vous permet de contrôler facilement votre appareil.
Construit avec NodeJS & Express 4 et Vue 2 & Webpack.
Raspbot est toujours en chantier .
Caractéristiques:
Découvrez une démo ici (connectez-vous avec le nom d'utilisateur admin
et le mot de passe secret
).
Facultatif (-ish) :
Clonez ce dépôt sur votre Raspberry Pi :
$ git clone https://github.com/pkrll/Raspy
Et exécutez make install
dans le dossier racine du projet pour installer et configurer le serveur :
$ cd Raspy
$ make install
Le dossier dist
dans ./raspbot
contient déjà la dernière version du client. L'exécution du serveur utilisera les fichiers qui s'y trouvent. Vous pouvez également créer manuellement l'application client en tapant make build
dans le dossier racine. Cela peut prendre un certain temps, alors prenez une collation et attendez la fin des processus d'installation et de construction.
Après avoir installé toutes les dépendances et configuré le serveur, vous pouvez exécuter le serveur avec make server
dans le dossier racine.
Il est cependant recommandé d'utiliser un gestionnaire de processus pour exécuter le serveur.
Pour démoniser l'application, vous pouvez utiliser PM2
, qui est un gestionnaire de processus pour les applications NodeJS. Si vous n'avez pas déjà PM2
, installez-le :
$ sudo npm install -g pm2
Utilisez make start
pour exécuter le serveur en arrière-plan. Le NODE_ENV
sera automatiquement défini sur "production" lors de l'utilisation de la règle start
.
$ make start
[PM2] Applying action restartProcessId on app [server](ids: 0)
[PM2] [server](0) ✓
[PM2] Process successfully started
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬───────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼───────┼──────────┤
│ Raspbot │ 0 │ fork │ 13141 │ online │ 0 │ 0s │ 66% │ 13.9 MB │ pkrll │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴───────┴──────────┘
Use ` pm2 show < id | name > ` to get more details about an app
Utilisez make stop
pour arrêter le serveur.
Suivez ces étapes pour que PM2
s'exécute au démarrage.
make start
(si elle n'est pas déjà en cours d'exécution).pm2 save
.pm2 startup systemd
et copiez et collez la commande produite par le script.Exemple
$ make start
$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /home/pkrll/.pm2/dump.pm2
$ pm2 startup systemd
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH= $PATH :[...] startup systemd -u USER --hp /home/USER
$ sudo env PATH= $PATH :[...] startup systemd -u USER --hp /home/USER
Pour plus d'informations sur l'utilisation de PM2, consultez la documentation officielle ou ce guide de démarrage rapide .
Par défaut, Raspbot fonctionne sur le port 5000 et est accessible via http://ip-to-your-pi:5000
. Le nom d'utilisateur par défaut est admin
avec le mot de passe secret
. Assurez-vous de changer cela.
Les options de configuration se trouvent dans le fichier index.js
dans le répertoire ./raspbot/config
:
Option | Description |
---|---|
oauth.id | Clé Github OAuth pour effectuer des requêtes authentifiées lors de la vérification des mises à jour (facultatif) |
oauth.secret | Secret Github OAuth pour effectuer des requêtes authentifiées lors de la vérification des mises à jour (facultatif) |
port | Le port du serveur ( par défaut : 5000 ) |
httpsPort | Le port à utiliser pour les HTTP ( par défaut : 5443 ) |
databasePath | Chemin d'accès à la base de données des informations d'identification de l'utilisateur ( par défaut : config/db.json ) |
httpsOpts.cert | Chemin d'accès au certificat SSL ( par défaut : config/.sslcert/fullchain.pem ) |
httpsOpts.key | Chemin d'accès à la clé du certificat SSL ( par défaut : config/.sslcert/privkey.pem ) |
Remarque : Les options httpsOpts
sont utilisées lors de l'activation des HTTP (voir Activation des HTTP ci-dessous).
Pour servir Raspbot sur HTTPs
, vous devez placer vos fichiers de certificat SSL ( fullchain.pem
et privkey.pem
) dans le dossier config/.sslcert
.
Ci-dessous suit un guide sur la façon de générer des certificats à l'aide de Certbot et Let's encrypt. Pour plus d’informations, consultez cet article.
Assurez-vous d'abord que Certbot et Let's encrypt sont installés et que les ports 80
et 443
sont transférés vers 5000
et 5443
(ou, en cas de remplacement, les ports personnalisés que vous avez utilisés).
Accédez au dossier raspbot
dans le répertoire du projet et exécutez la commande suivante ( REMARQUE : n'oubliez pas de remplacer example.com par votre URL) :
$ certbot certonly --webroot -w ./dist -d example.com --config-dir ~ /.certbot/config --logs-dir ~ /.certbot/logs --work-dir ~ /.certbot/work
Suivez les instructions et attendez la fin.
Si vous utilisez les configurations par défaut, vous pouvez maintenant créer un lien symbolique entre le certificat et le dossier config/.sslcert
dans le dossier raspbot/raspbot
( REMARQUE : n'oubliez pas de remplacer example.com par votre URL) :
$ cd /path/to/raspbot
$ ln -s ~ /.certbot/config/live/example.com/fullchain.pem raspbot/config/.sslcert/fullchain.pem
$ ln -s ~ /.certbot/config/live/example.com/privkey.pem raspbot/config/.sslcert/privkey.pem
Redémarrez le serveur.
Raspbot vous permet d'arrêter ou de redémarrer à distance votre appareil et de monter/démonter les appareils connectés au Raspberry Pi, mais pour que ces commandes fonctionnent, l'utilisateur exécutant le serveur doit avoir l'autorisation d'exécuter sudo /sbin/reboot
et sudo /sbin/shutdown
, ( défini dans le Makefile
), ainsi que sudo mount
et sudo umount
.
Cela peut être fait en ajoutant la ligne
USERNAME ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown,/bin/mount,/bin/umount
vers /etc/sudoers
en utilisant sudo visudo
, où USERNAME
doit être remplacé par le nom d'utilisateur de l'utilisateur qui exécute le serveur. Assurez-vous de l'ajouter après toute configuration précédente pour cet utilisateur.
Raspbot a été créé par Ardalan Samimi . L'icône du robot a été créée par FontAwesome et est sous licence CC by 4.0.