

Raspbot es un servidor API REST liviano, diseñado para Raspberry Pi , así como una aplicación web cliente que le permite controlar su dispositivo con facilidad.
Construido con NodeJS y Express 4 y Vue 2 y Webpack.
Raspbot es todavía un trabajo en progreso .
Características:
Vea una demostración aquí (inicie sesión con el nombre de usuario admin y la contraseña secret ).
Opcional (-más o menos):
Clona este repositorio en tu Raspberry Pi:
$ git clone https://github.com/pkrll/Raspy Y ejecute make install en la carpeta raíz del proyecto para instalar y configurar el servidor:
$ cd Raspy
$ make install La carpeta dist dentro de ./raspbot ya contiene la última versión del cliente. Al ejecutar el servidor se utilizarán los archivos allí. También puede crear manualmente la aplicación cliente escribiendo make build en la carpeta raíz. Esto puede llevar un tiempo, así que tome un refrigerio y espere a que finalicen los procesos de instalación y compilación.
Después de instalar todas las dependencias y configurar el servidor, puede ejecutar el servidor con make server en la carpeta raíz.
Sin embargo, se recomienda utilizar un administrador de procesos para ejecutar el servidor.
Para demonizar la aplicación, puede usar PM2 , que es un administrador de procesos para aplicaciones NodeJS. Si aún no tienes PM2 , instálalo:
$ sudo npm install -g pm2 Utilice make start para ejecutar el servidor en segundo plano. NODE_ENV se establecerá automáticamente en "producción" cuando se utilice la regla 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
Utilice make stop para detener el servidor.
Siga estos pasos para hacer que PM2 se ejecute al inicio.
make start (si aún no se está ejecutando).pm2 save .pm2 startup systemd y copie y pegue el comando producido por el script.Ejemplo
$ 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/USERPara obtener más información sobre cómo usar PM2, consulte la documentación oficial o esta guía de inicio rápido .
De forma predeterminada, Raspbot se ejecuta en el puerto 5000 y se puede acceder a él mediante http://ip-to-your-pi:5000 . El nombre de usuario predeterminado es admin con la contraseña secret . Asegúrate de cambiar esto.
Las opciones de configuración se pueden encontrar en el archivo index.js dentro del directorio ./raspbot/config :
| Opción | Descripción |
|---|---|
oauth.id | Clave Github OAuth para realizar solicitudes autenticadas al buscar actualizaciones (opcional) |
oauth.secret | Secreto de Github OAuth para realizar solicitudes autenticadas al buscar actualizaciones (opcional) |
port | El puerto del servidor ( predeterminado: 5000 ) |
httpsPort | El puerto a utilizar para HTTP ( predeterminado: 5443 ) |
databasePath | Ruta a la base de datos de credenciales de usuario ( predeterminada: config/db.json ) |
httpsOpts.cert | Ruta al certificado SSL ( predeterminado: config/.sslcert/fullchain.pem ) |
httpsOpts.key | Ruta a la clave del certificado SSL ( predeterminado: config/.sslcert/privkey.pem ) |
Nota: Las opciones httpsOpts se utilizan al habilitar HTTP (consulte Habilitación de HTTP a continuación).
Para servir Raspbot a través de HTTPs , debe colocar los archivos de su certificado SSL ( fullchain.pem y privkey.pem ) en la carpeta config/.sslcert .
A continuación se incluye una guía sobre cómo generar certificados utilizando Certbot y Let's encrypt. Para obtener más información, consulte este artículo.
Primero asegúrese de tener Certbot y Let's encrypt instalados, y los puertos 80 y 443 reenviados a 5000 y 5443 (o, si se anulan, los puertos personalizados que ha utilizado).
Navegue hasta la carpeta raspbot en el directorio del proyecto y ejecute el siguiente comando ( NOTA: recuerde cambiar example.com a su URL):
$ certbot certonly --webroot -w ./dist -d example.com --config-dir ~ /.certbot/config --logs-dir ~ /.certbot/logs --work-dir ~ /.certbot/workSigue las instrucciones y espera a que termine.
Si está utilizando las configuraciones predeterminadas, ahora puede vincular simbólicamente el certificado a la carpeta config/.sslcert en la carpeta raspbot/raspbot ( NOTA: recuerde cambiar example.com a su 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.pemReinicie el servidor.
Raspbot le permite apagar o reiniciar su dispositivo de forma remota y montar/desmontar dispositivos conectados a Raspberry Pi, pero para que estos comandos funcionen, el usuario que ejecuta el servidor debe tener permiso para ejecutar sudo /sbin/reboot y sudo /sbin/shutdown , ( definido en Makefile ), así como sudo mount y sudo umount .
Esto se puede hacer agregando la línea
USERNAME ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown,/bin/mount,/bin/umount a /etc/sudoers usando sudo visudo , donde USERNAME debe reemplazarse con el nombre de usuario del usuario que ejecuta el servidor. Asegúrese de agregarlo después de cualquier configuración previa para ese usuario.
Raspbot fue creado por Ardalan Samimi . El icono del robot fue creado por FontAwesome y tiene la licencia CC by 4.0.