Полезное 07.08.2023 1 758 0 Reuleaux

Перенос Nightscout на свой сервер VPS/VDS (Debian 9)

В закладки

Установка NightScout на Debian 9 'Stretch'


Данное руководство не претендует на полноту и использование best practices, предварительно необходимо установить Debian 9 (минимально: 1 ядро, 1Gb оперативной памяти, 10Gb HDD, лучше от 2Gb RAM), подключить его к интернету, обновить, пробросить HTTP, HTTPS, SSH при необходимости. Перенаправить А — запись доменна или поддомена на IP адрес сервера.

Все манипуляции проводились под пользователем root.

Использование данной иструкции подразумевает наличие навыков системного администрирования nix систем и владение необходимыми сетевыми технологиями.


Переходим для удобства в PuTTy (официальный сайт с загрузкой), вводим в поле "Host Name" IP адрес сервера и нажимаем "Open", далее вводим имя пользователя и пароль.

0. Установка дополнительных пакетов

apt-get install sudo
apt-get -y install curl
apt-get -y install mc #не обязательно

1. Разрешаем ssh для root если необходимо

cd /etc/ssh
nano sshd_config

Добавляем строку: PermitRootLogin yes

Сохраняем: нажимаем "Ctrl+x", далее "y", далее "Enter"

systemctl restart ssh

2. Установка Mongo

Cмотрим актуальный релиз mongo https://www.mongodb.com/download-center/community и при наличии более свежей версии меняем значения ниже

curl https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
nano /etc/apt/sources.list.d/mongodb-org-4.2.list

Добавляем строку

deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.2 main

Сохраняем: нажимаем "Ctrl+x", далее "y", далее "Enter"

apt-get update
apt-get -y install mongodb-org
systemctl enable mongod
systemctl start mongod

Создаем пользователя БД — имя и пароль свои

mongo
> use Nightscout
> db.createUser({user: "username", pwd: "password", roles:["readWrite"]})
> quit()

3. Импорт данных из Heroku или Azure

Экспорт из существующей БД на Mongo. Адрес, пользователь, пароль и порт берем из переменных среды на существующем heroku.com или azure.

mongoexport запускается из командной строки ОС

mongodump -h _some_adress_from_env.mlab.com --port _port_from_env_ -d _DB_name_from_env_  --username _user_from_env_ --password _password_from_env_
mongorestore -d Nightscout dump/_DB_name_from_env_

4. Установка Nightscout

apt-get -y install git

apt-get -y install curl software-properties-common
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
apt-get install -y nodejs

apt-get install -y gcc

apt-get install -y build-essential

Переходим в папку установки — может быть произвольной. В данном варианте /opt

cd /opt 
mkdir nightscout
cd nightscout
git clone https://github.com/nightscout/cgm-remote-monitor.git
cd cgm-remote-monitor
npm install --unsafe-perm

5. Переменные среды

Можно прописать в глобальных системных переменных nano /etc/environment либо создаем файлик nano start.sh

#!/bin/bash
export DISPLAY_UNITS="mg/dl"
export MONGO_CONNECTION="mongodb://username:password@localhost:27017/ИмяСозданнойБД" //данные из установки Mongo
export PORT=1337
export API_SECRET="Api_Secret_min_12_symbols" // задаем свой пароль к Nightscout
export PUMP_FIELDS="reservoir battery status"
export DEVICESTATUS_ADVANCED=true
export ENABLE="careportal basal cage sage boluscalc rawbg iob bwp bage mmconnect bridge openaps pump iob maker"
export TIME_FORMAT=24
export BASE_URL="YOURS_INTERNET_URL.RU"
export INSECURE_USE_HTTP=true

export ALARM_HIGH=on
export ALARM_LOW=on
export ALARM_TIMEAGO_URGENT=on
export ALARM_TIMEAGO_URGENT_MINS=30
export ALARM_TIMEAGO_WARN=on
export ALARM_TIMEAGO_WARN_MINS=15
export ALARM_TYPES=simple
export ALARM_URGENT_HIGH=on
export ALARM_URGENT_LOW=on
export AUTH_DEFAULT_ROLES=denied
export BG_HIGH=180
export BG_LOW=72
export BG_TARGET_BOTTOM=90
export BG_TARGET_TOP=162
export BRIDGE_MAX_COUNT=1
export BRIDGE_PASSWORD=
export BRIDGE_SERVER=EU
export BRIDGE_USER_NAME=
export CUSTOM_TITLE=MyTitle
export DISABLE=
export MONGO_COLLECTION=entries
export NIGHT_MODE=on
export OPENAPS_ENABLE_ALERTS=true
export OPENAPS_FIELDS='status-symbol status-label iob meal-assist rssi'
export OPENAPS_RETRO_FIELDS='status-symbol status-label iob meal-assist rssi'
export OPENAPS_URGENT=60
export OPENAPS_WARN=20
#export PAPERTRAIL_API_TOKEN=some_token
export PUMP_ENABLE_ALERTS=true
export PUMP_FIELDS='battery reservoir clock status'
export PUMP_RETRO_FIELDS='battery reservoir clock status'
export PUMP_URGENT_BATT_V=1.3
export PUMP_URGENT_CLOCK=30
export PUMP_URGENT_RES=10
export PUSHOVER=
export SHOW_FORECAST=openaps
export SHOW_PLUGINS='openaps pump iob sage cage careportal'
export SHOW_RAWBG=noise
export THEME=colors

node server.js     # start server

Сохраняем: нажимаем "Ctrl+x", далее "y", далее "Enter"

Запускаем Nightscout

chmod +x start.sh
./start.sh

После запуска ./start.sh через несколько минут в цикле должно появится

#reloading sandbox data

#all buckets are empty

#For the Basal plugin to function you need a treatment profile

#OpenAPS hasn’t reported a loop yet

#WS: running websocket.update

#delta calculation indicates no new data is present

#tick 2019-11-28T10:28:28.794Z

#Load Complete:

После чего можно пробовать зайти на http://ip_of_debian:1337 — должен открыться Ваш сайт NS и попросить ввести api_secert


6. Настраиваем автозапуск

nano /etc/systemd/system/nightscout.service

Вставляем строки

[Unit]
Description=Nightscout Service      
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/nightscout/cgm-remote-monitor
ExecStart=/opt/nightscout/cgm-remote-monitor/start.sh

[Install]
WantedBy=multi-user.target

Сохраняем: нажимаем "Ctrl+x", далее "y", далее "Enter"

Разрешаем автозапуск

systemctl daemon-reload
systemctl enable nightscout.service
systemctl start nightscout.service

Проверяем запущен ли сервис:

systemctl status nightscout.service

ВНИМАНИЕ! Дальнейшие шаги направлены только на прикрепление доменного имени к вашему серверу, НО это не обязательно.
Ваш сервер Nightscout уже настроен и работает, а так же доступен по адресу: http://ip_of_debian:1337
Этот адрес вы уже можете вбивать в программы для контроля сахара и всё будет работать. Если же вам хочется красивый и уникальный адрес, то выполняйте шаги далее.


7. Установка и настройка обратного прокси

apt-get install nginx
systemctl enable nginx

Конфигурируем ngnix

nano /etc/nginx/sites-available/default

Добавляем строки

server {
	listen 80;
	server_name YOURS_INTERNET_URL.RU;
	root /usr/share/nginx/html;
	location ~ /.well-known {
		allow all;
	}
} 
server {
	listen 443 ssl;
	server_name YOURS_INTERNET_URL.RU;
	root /usr/share/nginx/html;

	# ssl_certificate     /etc/letsencrypt/live/YOURS_INTERNET_URL.RU/fullchain.pem;
	# ssl_certificate_key /etc/letsencrypt/live/YOURS_INTERNET_URL.RU/privkey.pem;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_session_timeout 1d;
	ssl_session_cache shared:SSL:50m;
	ssl_stapling on;
	ssl_stapling_verify on;
	add_header Strict-Transport-Security max-age=15768000;
	resolver 8.8.8.8 8.8.4.4 valid=300s;

	location ~ /.well-known {
		allow all;
	}
	location / {
		proxy_pass http://127.0.0.1:1337;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection 'upgrade';
		proxy_set_header Host $host;
		proxy_cache_bypass $http_upgrade;
	}
}

Сохраняем: нажимаем "Ctrl+x", далее "y", далее "Enter"

8. Получение сертификата SSL

Не нужно тем, кто размещает Nightscout на VPS хостера и есть возможность получить сертификат через административную панель!

sudo apt-get install certbot
certbot certonly --webroot --agree-tos --email youmail@mail.com -w /usr/share/nginx/html/ -d YOURS_INTERNET_URL.RU 
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

В файл конфигурации ngnix:

nano /etc/nginx/sites-available/default

В секцию server добавляем строки

ssl_certificate     /etc/letsencrypt/live/YOURS_INTERNET_URL.RU/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/YOURS_INTERNET_URL.RU/privkey.pem;

Перезапуск nginx:

systemctl reload nginx
check startup nginx #проверка запуска ngnix
systemctl status nginx

NightScout доступен по адресу https://YOURS_INTERNET_URL.RU

Всё готово. Дополнительные (необязательные) настройки, а также инструкция по обновлению Nightscout — ниже.


Возможные ошибки и их решение

[BABEL] Note: The code generator has deoptimised the styling of "..." as it exceeds the max of 500KB.

Данная ошибка может возникнуть если у вас на сервере < 2Gb оперативной памяти.

Решение:

cd /opt/nightscout/cgm-remote-monitor
mkdir -p tmp/public
cd /opt/nightscout/cgm-remote-monitor/tmp/public
wget https://reuleaux.su/uploads/files/2023-08/public.zip
sudo apt install unzip
unzip public.zip
rm /opt/nightscout/cgm-remote-monitor/tmp/public/public.zip

Тем самым мы сами скачивем библиотеки, необходимые для работы сервиса Nightscout, в обход их генерации, в процессе которой и возникают ошибки.


Установка средств интеграции с гипервизором (не обязательно)

Hyper-V средства интеграции
nano /etc/initramfs-tools/modules

Добавляем строки

hv_vmbus
hv_storvsc
hv_blkvsc
hv_netvsc

Сохраняем: нажимаем "Ctrl+x", далее "y", далее "Enter"

sudo apt-get -y install hyperv-daemons
update-initramfs -u
reboot
Vmware средства интеграции
apt-get install -y open-vm-tools open-vm-tools-desktop
vmware-user-suid-wrapper
reboot

Перенаправление домена/поддомена на ip адрес сервера

Чтобы сервер был доступен по доменному имени, в панели управления хостинга в редакторе DNS зон необходимо создать запись. Добавьте новую запись со следующими параметрами:

  • Имя: YOURS_INTERNET_URL.RU. точка в конце обязательна!
  • Тип: A значение (IP/host.)
  • IP-адрес сервера: server ip

Обновление версии Nightscout

git reset --hard
git checkout master && git pull
sudo npm install --unsafe-perm
уникальные шаблоны и модули для dle
Комментарии (0)
Внешний аккумулятор (Power Bank) Romoss Sense 8+ 30000mAh
Обзор флагманской модели портативной зарядки 2018 года от компании Romoss. Одна из самых емких версий в линейке Sense на 30000мАч, с двумя стандартными выходами USB-A,
Обзор беспроводной игровой мыши E-3lue 6D Mazer II 2500 DPI Blue LED 2.4GHz
Отличная беспроводная игровая мышь, за каких то 25$, а мне удалось ее купить за $ в черную пятницу.
Прокомментировать

Коментарии проверяются, будьте корректны Вас читают взрослые и дети!

Название нашей планеты
Кликните на изображение чтобы обновить код, если он неразборчив