Как стать автором
Поиск
Написать публикацию
Обновить

Перенос Nightscout на свой сервер

Наверное, у кого диабет, все пользуются Nightscout. Но он требует сервера! Джино, Beget... Но на одноплатнике Raspberry Pi делали серваки для сайтов! Но пока не было Nightscout для Raspberry Pi... Ну ладно, начинаем!

Обновляем Ubuntu:

sudo apt update -y
sudo apt dist-upgrade -y

Создаём виртуальный файл подкачки:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show

Устанавливаем дополнительные пакеты которые нам пригодятся при сборке след программ:

sudo apt install build-essential checkinstall libssl-dev

Ставим пакет Node.js

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - &&\
sudo apt-get install -y nodejs

Установка и настройка базы данных MongoDB

sudo apt-get install gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
systemctl start mongod.service
systemctl status mongod.service

Добавляем в MongoDB пароль для админа (пароль делаем свой не копируйте пароль в целях безопасности!!!)

mongosh
use admin
db.createUser({user:"admin",pwd:"nightscoutServer",roles:[{role:'userAdminAnyDatabase',db:'admin'}, "readWriteAnyDatabase"]})
exit

Ставим защиту на MongoDB, открываем текстовый файл (можете выбрать свой редактор)

sudo vim /etc/mongod.conf

Ищем параметр security , рядом с которым удаляем решетку и добавляем параметр authorization, должно получиться так:

security:
   authorization: enabled

Перезапуском базу данных

sudo systemctl restart mongod

Логинимся в Базу данных и создаем новую базу данных для нашего NightScout (пароль делаем свой не копируйте пароль в целях безопасности!!!)

use nightscout
db.createUser({user:"nightscout",pwd:"nightscoutServer",roles:[{role:'readWrite',db:'nightscout'}]})
db.createCollection("entries")
exit

Установка и настройка базы данных NightScout

git clone https://github.com/nightscout/cgm-remote-monitor.git

cd cgm-remote-monitor

export NODE_OPTIONS=--max-old-space-size=8192

npm install

Создаём конфиг-файл my.env

nano my.env

Вставляем код (API_SECRET делаем свой не копируйте пароль в целях безопасности!!!)

MONGODB_URI=mongodb://nightscout:nightscoutServer@127.0.0.1:27017/nightscout
BASE_URL=http://127.0.0.1:1337
API_SECRET=12345678!!!nibbl
MONGODB_COLLECTION=entries
DISPLAY_UNITS=mmol
ENABLE=careportal%20basal%20dbsize%20rawbg%20iob%20maker%20cob%20bwp%20cage%20iage%20sage%20boluscalc%20pushover%20treatmentnotify%20loop%20pump%20profile%20food%20openaps%20bage%20alexa%20override%20speech%20cors
THEME=colors
TIME_FORMAT=24

MONGODB_URI – путь к нашей базе данных (обязательно сделайте свой уникальный пароль)

API_SECRET – секретный пароль к нашей базе данных (обязательно сделайте свой уникальный пароль)

Создаем файл запуска скрипта start.sh

(eval $(cat my.env | sed 's/^/export /') && PORT=1337 node server.js)

Делаем его исполняемым

chmod +x start.sh

Данный пункт очень важный. Сейчас мы будем запускать фоновый режим в котором запустим наш скрипт start.sh

screen

Теперь нажимаем Enter и вводим команду

./start.sh

Теперь надо аккуратно выйти из этого фонового режима, для этого нажимаем комбинацию клавиш "Ctrl + A" и "Ctrl + D"

Прикрепление доменного имени к серверу NightScout

Устанавливаем WEB сервер nginx через который мы и будем следить за нашими показателями.

sudo apt install nginx -y

Создаем конфигурационный файл

sudo nano /etc/nginx/sites-available/nightscout

Копируем настройки в наш конфигурационный файл

server {
    listen 80;
server_name vashdomen.ru;

location / {
    proxy_pass http:<span class="comment" style="background: transparent; margin: 0px; padding: 0px; outline: none; border: 0px; box-sizing: border-box; color: rgb(127, 159, 127);">//127.0.0.1:1337;</span>
    proxy_http_version <span class="number" style="background: transparent; margin: 0px; padding: 0px; outline: none; border: 0px; box-sizing: border-box; color: rgb(140, 208, 211);">1.1</span>;
    proxy_set_header Upgrade <span class="variable" style="background: transparent; margin: 0px; padding: 0px; outline: none; border: 0px; box-sizing: border-box; color: rgb(239, 220, 188);">$http_upgrade</span>;
    proxy_set_header Connection <span class="string" style="background: transparent; margin: 0px; padding: 0px; outline: none; border: 0px; box-sizing: border-box; color: rgb(204, 147, 147);">'upgrade'</span>;
    proxy_set_header Host <span class="variable" style="background: transparent; margin: 0px; padding: 0px; outline: none; border: 0px; box-sizing: border-box; color: rgb(239, 220, 188);">$host</span>;
    proxy_cache_bypass <span class="variable" style="background: transparent; margin: 0px; padding: 0px; outline: none; border: 0px; box-sizing: border-box; color: rgb(239, 220, 188);">$http_upgrade</span>;
    proxy_set_header X-Forwarded-Proto https;
}

}

vashdomen.ru – тут вписываем название вашего домена

Активируем нашу конфигурацию

sudo ln -s /etc/nginx/sites-available/nightscout /etc/nginx/sites-enabled

Проверяем на ошибки наш конфигурационный файл

sudo nginx -t

Перезапускаем сервер nginx для того чтобы заработал наш конфигурационный файл

sudo systemctl restart nginx

Заходим на наш сайт. Все!

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.