Raspbot — это легкий сервер REST API, разработанный для Raspberry Pi , а также клиентское веб-приложение, которое позволяет вам с легкостью управлять своим устройством.
Создан с использованием NodeJS и Express 4, Vue 2 и Webpack.
Raspbot все еще находится в стадии разработки .
Функции:
Посмотрите демо-версию здесь (войдите в систему, используя имя пользователя admin
и secret
пароль).
Необязательно (-иш):
Клонируйте этот репозиторий на Raspberry Pi:
$ git clone https://github.com/pkrll/Raspy
И запустите make install
в корневой папке проекта, чтобы установить и настроить сервер:
$ cd Raspy
$ make install
Папка dist
внутри ./raspbot
уже содержит последнюю сборку клиента. Запуск сервера будет использовать файлы оттуда. Вы также можете вручную собрать клиентское приложение, набрав make build
в корневой папке. Это может занять некоторое время, поэтому перекусите и дождитесь завершения процессов установки и сборки.
После установки всех зависимостей и настройки сервера вы можете запустить сервер с помощью make server
в корневой папке.
Однако для запуска сервера рекомендуется использовать диспетчер процессов.
Чтобы демонизировать приложение, вы можете использовать PM2
, который является менеджером процессов для приложений NodeJS. Если у вас еще нет PM2
, установите его:
$ sudo npm install -g pm2
Используйте make start
для запуска сервера в фоновом режиме. NODE_ENV
будет автоматически установлен на «производство» при использовании правила 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
Используйте 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
паролем. Обязательно измените это.
Параметры конфигурации можно найти в файле index.js
внутри каталога ./raspbot/config
:
Вариант | Описание |
---|---|
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» ниже).
Чтобы обслуживать 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
Следуйте инструкциям и дождитесь завершения.
Если вы используете конфигурации по умолчанию, теперь вы можете связать сертификат с символической ссылкой на папку config/.sslcert
в папке raspbot/raspbot
( ПРИМЕЧАНИЕ. Не забудьте изменить 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
в /etc/sudoers
с помощью sudo visudo
, где USERNAME
следует заменить именем пользователя, запускающего сервер. Обязательно добавьте его после всех предыдущих настроек для этого пользователя.
Raspbot был создан Ардаланом Самими . Значок робота был создан FontAwesome и распространяется по лицензии CC by 4.0.