Raspbot é um servidor API REST leve, projetado para Raspberry Pi , bem como um aplicativo cliente da web que permite controlar seu dispositivo com facilidade.
Construído com NodeJS e Express 4 e Vue 2 e Webpack.
O Raspbot ainda é um trabalho em andamento .
Características:
Confira uma demonstração aqui (faça login com nome de usuário admin
e senha secret
).
Opcional (-ish):
Clone este repositório em seu Raspberry Pi:
$ git clone https://github.com/pkrll/Raspy
E execute make install
na pasta raiz do projeto para instalar e configurar o servidor:
$ cd Raspy
$ make install
A pasta dist
dentro de ./raspbot
já contém a versão mais recente do cliente. A execução do servidor usará os arquivos lá. Você também pode criar manualmente o aplicativo cliente digitando make build
na pasta raiz. Isso pode demorar um pouco, então faça um lanche e aguarde a conclusão dos processos de instalação e construção.
Depois de instalar todas as dependências e configurar o servidor, você pode executar o servidor com make server
na pasta raiz.
Porém, é recomendado usar um gerenciador de processos para executar o servidor.
Para daemonizar o aplicativo, você pode usar PM2
, que é um gerenciador de processos para aplicativos NodeJS. Se você ainda não possui PM2
, instale-o:
$ sudo npm install -g pm2
Use make start
para executar o servidor em segundo plano. O NODE_ENV
será automaticamente definido como "produção" ao usar a regra 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
Use make stop
para parar o servidor.
Siga estas etapas para executar PM2
na inicialização.
make start
(se ainda não estiver em execução).pm2 save
.pm2 startup systemd
e copie e cole o comando produzido pelo script.Exemplo
$ 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 obter mais informações sobre como usar o PM2, consulte a documentação oficial ou este guia de início rápido .
Por padrão, o Raspbot é executado na porta 5000 e pode ser acessado por http://ip-to-your-pi:5000
. O nome de usuário padrão é admin
com a senha secret
. Certifique-se de mudar isso.
As opções de configuração podem ser encontradas no arquivo index.js
dentro do diretório ./raspbot/config
:
Opção | Descrição |
---|---|
oauth.id | Chave Github OAuth para fazer solicitações autenticadas ao verificar atualizações (opcional) |
oauth.secret | Segredo Github OAuth para fazer solicitações autenticadas ao verificar atualizações (opcional) |
port | A porta do servidor ( padrão: 5000 ) |
httpsPort | A porta a ser usada para HTTPs ( padrão: 5443 ) |
databasePath | Caminho para o banco de dados de credenciais do usuário ( padrão: config/db.json ) |
httpsOpts.cert | Caminho para o certificado SSL ( padrão: config/.sslcert/fullchain.pem ) |
httpsOpts.key | Caminho para a chave do certificado SSL ( padrão: config/.sslcert/privkey.pem ) |
Observação: as opções httpsOpts
são usadas ao ativar HTTPs (consulte Habilitar HTTPs abaixo).
Para servir Raspbot por HTTPs
, você precisa colocar seus arquivos de certificado SSL ( fullchain.pem
e privkey.pem
) na pasta config/.sslcert
.
Abaixo segue um guia de como gerar certificados usando Certbot e Let's encrypt. Para obter mais informações, consulte este artigo.
Primeiro, certifique-se de ter o Certbot e o Let's encrypt instalados e as portas 80
e 443
encaminhadas para 5000
e 5443
(ou, se substituídas, as portas personalizadas que você usou).
Navegue até a pasta raspbot
no diretório do projeto e execute o seguinte comando ( NOTA: Lembre-se de alterar example.com para sua URL):
$ certbot certonly --webroot -w ./dist -d example.com --config-dir ~ /.certbot/config --logs-dir ~ /.certbot/logs --work-dir ~ /.certbot/work
Siga as instruções e espere terminar.
Se estiver usando as configurações padrão, agora você pode vincular simbolicamente o certificado à pasta config/.sslcert
na pasta raspbot/raspbot
( NOTA: Lembre-se de alterar example.com para seu 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 o servidor.
O Raspbot permite que você desligue ou reinicie remotamente seu dispositivo e monte/desmonte dispositivos conectados ao Raspberry Pi, mas para que esses comandos funcionem, o usuário que executa o servidor deve ter permissão para executar sudo /sbin/reboot
e sudo /sbin/shutdown
, ( definido no Makefile
), bem como sudo mount
e sudo umount
.
Isso pode ser feito adicionando a linha
USERNAME ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown,/bin/mount,/bin/umount
para /etc/sudoers
usando sudo visudo
, onde USERNAME
deve ser substituído pelo nome de usuário do usuário que executa o servidor. Certifique-se de adicioná-lo após quaisquer configurações anteriores para esse usuário.
Raspbot foi criado por Ardalan Samimi . O ícone do robô foi criado por FontAwesome e está licenciado sob a licença CC by 4.0.