Raspbot은 Raspberry Pi 용으로 설계된 경량 REST API 서버이자 장치를 쉽게 제어할 수 있는 클라이언트 웹 애플리케이션입니다.
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
사용하여 서버를 실행할 수 있습니다.
하지만 프로세스 관리자를 사용하여 서버를 실행하는 것이 좋습니다.
애플리케이션을 데몬화하려면 NodeJS 애플리케이션의 프로세스 관리자인 PM2
사용할 수 있습니다. 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 ) |
참고: httpsOpts
옵션은 HTTP를 활성화할 때 사용됩니다(아래 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 4.0 라이선스에 따라 라이선스가 부여됩니다.