Raspbot 是一个轻量级 REST API 服务器,专为Raspberry Pi设计,也是一个客户端 Web 应用程序,可让您轻松控制您的设备。
使用 NodeJS 和 Express 4 以及 Vue 2 和 Webpack 构建。
Raspbot 仍在进行中。
特征:
在此处查看演示(使用用户名admin
和密码secret
登录)。
可选(-ish):
在您的 Raspberry Pi 上克隆此存储库:
$ git clone https://github.com/pkrll/Raspy
并在项目根文件夹中运行make install
来安装和设置服务器:
$ cd Raspy
$ make install
./raspbot
内的文件夹dist
已包含客户端的最新版本。运行服务器将使用那里的文件。您还可以通过在根文件夹中键入make build
来手动构建客户端应用程序。这可能需要一段时间,因此请吃点零食,等待安装和构建过程完成。
安装所有依赖项并设置服务器后,您可以在根文件夹中使用make server
运行服务器。
不过,建议使用进程管理器来运行服务器。
要守护应用程序,您可以使用PM2
,它是 NodeJS 应用程序的进程管理器。如果您还没有PM2
,请安装它:
$ sudo npm install -g pm2
使用make start
在后台运行服务器。使用start
规则时, NODE_ENV
将自动设置为“生产”。
$ 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
使用make stop
停止服务器。
按照以下步骤使PM2
在启动时运行。
make start
启动应用程序(如果尚未运行)。pm2 save
保存当前进程列表。pm2 startup systemd
并复制并粘贴脚本生成的命令。例子
$ 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
有关如何使用 PM2 的更多信息,请查看官方文档或本快速入门指南。
默认情况下,Raspbot 运行在端口 5000 上,可以通过http://ip-to-your-pi:5000
访问。默认用户名是admin
,密码secret
。请务必更改此设置。
配置选项可以在./raspbot/config
目录中的文件index.js
中找到:
选项 | 描述 |
---|---|
oauth.id | Github OAuth 密钥,用于在检查更新时发出经过身份验证的请求(可选) |
oauth.secret | 用于在检查更新时发出经过身份验证的请求的 Github OAuth 密钥(可选) |
port | 服务器端口(默认:5000 ) |
httpsPort | 用于 HTTP 的端口(默认值:5443 ) |
databasePath | 用户凭据数据库的路径(默认值:config/db.json ) |
httpsOpts.cert | SSL 证书的路径(默认:config/.sslcert/fullchain.pem ) |
httpsOpts.key | SSL 证书密钥的路径(默认值:config/.sslcert/privkey.pem ) |
注意:启用 HTTP 时使用httpsOpts
选项(请参阅下面的启用 HTTP)。
要通过HTTPs
为 Raspbot 提供服务,您需要将 SSL 证书文件( fullchain.pem
和privkey.pem
)放在文件夹config/.sslcert
中。
下面是有关如何使用 Certbot 和 Let's encrypt 生成证书的指南。有关更多信息,请参阅这篇文章。
首先确保您安装了 Certbot 和Let's encrypt ,并将端口80
和443
转发到5000
和5443
(或者,如果被覆盖,则转发到您使用的自定义端口)。
导航到项目目录中的raspbot
文件夹并运行以下命令(注意:记住将example.com更改为您的 URL):
$ certbot certonly --webroot -w ./dist -d example.com --config-dir ~ /.certbot/config --logs-dir ~ /.certbot/logs --work-dir ~ /.certbot/work
按照说明进行操作,然后等待其完成。
如果您使用默认配置,现在可以将证书符号链接到文件夹raspbot/raspbot
中的文件夹config/.sslcert
(注意:请记住将example.com更改为您的 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
重新启动服务器。
Raspbot 使您能够远程关闭或重新启动设备以及安装/卸载连接到 Raspberry Pi 的设备,但要使这些命令起作用,运行服务器的用户必须有权执行sudo /sbin/reboot
和sudo /sbin/shutdown
,(在Makefile
中定义),以及sudo mount
和sudo umount
。
这可以通过添加行来完成
USERNAME ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown,/bin/mount,/bin/umount
使用sudo visudo
到/etc/sudoers
,其中USERNAME
应替换为运行服务器的用户的用户名。确保在该用户之前的任何配置之后添加它。
Raspbot 由Ardalan Samimi创建。机器人图标由 FontAwesome 创建,并根据 CC by 4.0 许可证获得许可。