Raspbot は、 Raspberry Pi用に設計された軽量の REST API サーバーであり、デバイスを簡単に制御できるクライアント Web アプリケーションでもあります。
NodeJS と Express 4、Vue 2 と Webpack で構築されています。
Raspbot はまだ開発中です。
特徴:
ここでデモをチェックしてください (ユーザー名admin
とパスワードsecret
でサインインします)。
オプション(っぽい):
Raspberry Pi でこのリポジトリのクローンを作成します。
$ git clone https://github.com/pkrll/Raspy
そして、プロジェクトのルート フォルダーでmake install
実行して、サーバーをインストールしてセットアップします。
$ cd Raspy
$ make install
./raspbot
内のフォルダーdist
は、クライアントの最新ビルドがすでに含まれています。サーバーを実行すると、そこにあるファイルが使用されます。ルート フォルダーにmake build
と入力して、クライアント アプリを手動でビルドすることもできます。これにはしばらく時間がかかる場合があるので、軽食をとり、インストールとビルドのプロセスが完了するまで待ちます。
すべての依存関係をインストールし、サーバーをセットアップしたら、ルート フォルダーでmake server
を使用してサーバーを実行できます。
ただし、サーバーを実行するにはプロセス マネージャーを使用することをお勧めします。
アプリケーションをデーモン化するには、NodeJS アプリケーションのプロセス マネージャーであるPM2
使用できます。 PM2
まだインストールしていない場合は、インストールします。
$ sudo npm install -g pm2
make start
使用してサーバーをバックグラウンドで実行します。 start
ルールを使用すると、 NODE_ENV
は自動的に「production」に設定されます。
$ 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 | HTTPs に使用するポート (デフォルト: 5443 ) |
databasePath | ユーザー認証情報データベースへのパス (デフォルト: config/db.json ) |
httpsOpts.cert | SSL 証明書へのパス (デフォルト: config/.sslcert/fullchain.pem ) |
httpsOpts.key | SSL 証明書キーへのパス (デフォルト: config/.sslcert/privkey.pem ) |
注: httpsOpts
オプションは、HTTPs を有効にするときに使用されます (下記の「HTTPs の有効化」を参照)。
Raspbot をHTTPs
経由で提供するには、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 ライセンスに基づいてライセンスされています。