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/USER
Para 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/work
Sigue 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.pem
Reinicie 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.