Raspbot ist ein leichter REST-API-Server, der für den Raspberry Pi entwickelt wurde, sowie eine Client-Webanwendung, mit der Sie Ihr Gerät ganz einfach steuern können.
Gebaut mit NodeJS & Express 4 und Vue 2 & Webpack.
Raspbot ist noch in Arbeit .
Merkmale:
Sehen Sie sich hier eine Demo an (melden Sie sich mit dem Benutzernamen admin
und dem Passwort „ secret
an).
Optional(-ish):
Klonen Sie dieses Repository auf Ihrem Raspberry Pi:
$ git clone https://github.com/pkrll/Raspy
Und führen Sie make install
im Stammordner des Projekts aus, um den Server zu installieren und einzurichten:
$ cd Raspy
$ make install
Der Ordner dist
in ./raspbot
enthält bereits den neuesten Build des Clients. Wenn Sie den Server ausführen, werden die dortigen Dateien verwendet. Sie können die Client-App auch manuell erstellen, indem Sie make build
im Stammordner eingeben. Dies kann eine Weile dauern. Schnappen Sie sich also einen Snack und warten Sie, bis die Installations- und Build-Prozesse abgeschlossen sind.
Nachdem Sie alle Abhängigkeiten installiert und den Server eingerichtet haben, können Sie den Server mit make server
im Stammordner ausführen.
Es wird jedoch empfohlen, zum Betrieb des Servers einen Prozessmanager zu verwenden.
Um die Anwendung zu dämonisieren, können Sie PM2
verwenden, einen Prozessmanager für NodeJS-Anwendungen. Wenn Sie PM2
noch nicht haben, installieren Sie es:
$ sudo npm install -g pm2
Verwenden Sie make start
um den Server im Hintergrund auszuführen. Der NODE_ENV
wird bei Verwendung der start
automatisch auf „Produktion“ gesetzt.
$ 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
Verwenden Sie make stop
um den Server zu stoppen.
Befolgen Sie diese Schritte, damit PM2
beim Start ausgeführt wird.
make start
(sofern sie nicht bereits läuft).pm2 save
.pm2 startup systemd
aus und kopieren Sie den vom Skript erzeugten Befehl und fügen Sie ihn ein.Beispiel
$ 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
Weitere Informationen zur Verwendung von PM2 finden Sie in der offiziellen Dokumentation oder in dieser Schnellstartanleitung .
Standardmäßig läuft Raspbot auf Port 5000 und kann über http://ip-to-your-pi:5000
aufgerufen werden. Der Standardbenutzername ist admin
mit dem Passwort secret
. Ändern Sie dies unbedingt.
Die Konfigurationsoptionen finden Sie in der Datei index.js
im Verzeichnis ./raspbot/config
:
Option | Beschreibung |
---|---|
oauth.id | Github-OAuth-Schlüssel für authentifizierte Anfragen bei der Suche nach Updates (optional) |
oauth.secret | Github OAuth-Geheimnis für authentifizierte Anfragen bei der Suche nach Updates (optional) |
port | Der Server-Port ( Standard: 5000 ) |
httpsPort | Der für HTTPs zu verwendende Port ( Standard: 5443 ) |
databasePath | Pfad zur Datenbank mit Benutzeranmeldeinformationen ( Standard: config/db.json ) |
httpsOpts.cert | Pfad zum SSL-Zertifikat ( Standard: config/.sslcert/fullchain.pem ) |
httpsOpts.key | Pfad zum SSL-Zertifikatschlüssel ( Standard: config/.sslcert/privkey.pem ) |
Hinweis: Die httpsOpts
-Optionen werden beim Aktivieren von HTTPs verwendet (siehe unten „HTTPs aktivieren“).
Um Raspbot über HTTPs
bereitzustellen, müssen Sie Ihre SSL-Zertifikatdateien ( fullchain.pem
und privkey.pem
) im Ordner config/.sslcert
ablegen.
Nachfolgend finden Sie eine Anleitung zum Generieren von Zertifikaten mit Certbot und Let's Encrypt. Weitere Informationen finden Sie in diesem Artikel.
Stellen Sie zunächst sicher, dass Sie Certbot und Let's Encrypt installiert haben und die Ports 80
und 443
an 5000
und 5443
weitergeleitet werden (oder, falls überschrieben, die von Ihnen verwendeten benutzerdefinierten Ports).
Navigieren Sie zum Ordner raspbot
im Projektverzeichnis und führen Sie den folgenden Befehl aus ( HINWEIS: Denken Sie daran, example.com in Ihre URL zu ändern):
$ certbot certonly --webroot -w ./dist -d example.com --config-dir ~ /.certbot/config --logs-dir ~ /.certbot/logs --work-dir ~ /.certbot/work
Befolgen Sie die Anweisungen und warten Sie, bis der Vorgang abgeschlossen ist.
Wenn Sie die Standardkonfigurationen verwenden, können Sie das Zertifikat jetzt mit dem Ordner config/.sslcert
im Ordner raspbot/raspbot
verknüpfen ( HINWEIS: Denken Sie daran, example.com in Ihre URL zu ändern):
$ 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
Starten Sie den Server neu.
Mit Raspbot können Sie Ihr Gerät aus der Ferne herunterfahren oder neu starten und mit dem Raspberry Pi verbundene Geräte ein-/aushängen. Damit diese Befehle funktionieren, muss der Benutzer, der den Server ausführt, jedoch über die Berechtigung zum Ausführen von sudo /sbin/reboot
und sudo /sbin/shutdown
verfügen ( im Makefile
definiert), sowie sudo mount
und sudo umount
.
Dies kann durch Hinzufügen der Zeile erfolgen
USERNAME ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown,/bin/mount,/bin/umount
zu /etc/sudoers
mit sudo visudo
, wobei USERNAME
durch den Benutzernamen des Benutzers ersetzt werden sollte, der den Server ausführt. Stellen Sie sicher, dass Sie es nach allen vorherigen Konfigurationen für diesen Benutzer hinzufügen.
Raspbot wurde von Ardalan Samimi erstellt. Das Robotersymbol wurde von FontAwesome erstellt und steht unter der CC by 4.0-Lizenz.