Инструменты и сервисы
Для настройки локального сервера Nightscout использовалось следующее программное обеспечение. Все инструменты бесплатны, за исключением операционной системы Windows Server.
- Windows Server 2016, 2019, или 2022
- Visual Studio Express 2015 для Windows Desktop
- MongoDB Community Server 4.4.25
- Python 2.7.11
- Git для Windows 2.42.0
- Node.js 16.20.2 x64
Чтобы начать работу над проектом, сначала необходимо установить Windows Server, затем сервер базы данных. Другие сторонние приложения будут установлены позже.
Установка Windows Server
1. Установите Windows Server 2016:
2. Измените имя рабочей станции на Nightscout и, при необходимости, присоедините её к домену, если он у вас есть:
3. Откройте Центр обновления Windows, нажмите "Дополнительные параметры" и установите флажок "Получать обновления для других продуктов Microsoft при обновлении Windows". Нажмите кнопку "Назад", а затем "Проверить наличие обновлений". Пока вы выполняете другие задачи, обновления Windows будут загружаться в фоновом режиме, что в конечном итоге сократит время их загрузки и установки позже.
4. Перезагрузите сервер
5. Установите Visual Studio Express 2015 для рабочего стола Windows, используя параметры по умолчанию.
Сервер баз данных MongoDB
В последней версии Mongo локальное размещение базы данных MongoDB гораздо более автоматизировано, чем в предыдущих версиях. Запустите процесс установки, оставив включенными все параметры по умолчанию, за исключением следующих изменений.
1. Выберите Полную установку в типе установки.
2. Когда появится экран настройки службы, убедитесь, что установлен флажок Установить MongoD как службу и что выбран параметр Запускать службу от имени пользователя сетевой службы.
3. Когда вам будет предложено установить Mongo Compass, инструмент с графическим интерфейсом базы данных, снимите флажок.
Как только Mongo установлен, сервис запускается автоматически.
Конфигурация базы данных
Настройка включает в себя создание базы данных Nightscout и присвоение ей учетных данных. Вам понадобится эта информация и некоторая информация, приведенная выше, для создания строки подключения, чтобы Nightscout знал, где найти базу данных.
1. Откройте новую командную строку администратора
2. Откройте клиент Mongo, выполнив C:\Program Files\MongoDB\Server\4.4\bin\mongo.exe
3. В появившемся окне > создайте базу данных Nightscout:
use Nightscout
4. Создайте имя пользователя и пароль для доступа к базе данных и разрешите учетной записи доступ на чтение/запись к базе данных (для простоты используйте имя пользователя и пароль в качестве учетных данных учетной записи):
db.createUser({user: "username", pwd: "password", roles:["readWrite"]})
Когда вы увидите сообщение об успешном добавлении пользователя, это будет означать, что установка и настройка сервиса MongoDB завершена.
Строка подключения
Теперь, когда сервис установлен и настроен, вам нужно будет указать строку подключения. Эта строка будет использоваться для настройки Nightscout, чтобы он знал, где находится база данных и как к ней подключиться. Строка подключения содержит имя пользователя, пароль, имя хоста или адрес, порт MongoDB и имя базы данных:
mongodb://:@:/
Строка подключения для Nightscout, работающего на том же хосте со всеми указанными выше настройками, будет выглядеть следующим образом:
mongodb://username:password@localhost:27017/Nightscout
Установка другого программного обеспечения
1. Установите Git
2. Установите Python, не забыв добавить Python в переменную окружения PATH:
3. Установите Node.js
4. Перезагрузите сервер
Обновления Windows
В этом выпуске Windows Server возможности центра обновления Windows существенно улучшились. Ожидайте, что вы загрузите пару накопительных обновлений и перезагрузитесь один раз для завершения установки. На всякий случай всегда проверяйте наличие дополнительных обновлений после каждой перезагрузки.
Когда вы закончите установку, вы увидите этот экран, на котором будут установлены все обновления Windows:
Обновления Windows теперь доставляются и устанавливаются автоматически. Это позволяет вам по-прежнему эффективно управлять системами, доступными через Интернет (читай: возможно, не создавать ботнеты), при этом задачи по техническому обслуживанию остаются на низком уровне. После установки обновлений Windows система перезагрузится, и процесс Nightscout запустится автоматически, как только вы это настроите позже.
Правила брандмауэра Windows
По умолчанию брандмауэр Windows разрешает вам подключаться к серверу Nightscout локально, но запрещает подключения к внешним хостам. Чтобы разрешить стандартный HTTP-трафик в системе, вам необходимо создать правило брандмауэра Windows.
1. Откройте брандмауэр Windows с расширенной защитой и нажмите "Входящие правила", затем "Новое правило"
2. Выберите "Порт" и нажмите "Далее".
3. Выберите "Определенные локальные порты" и введите 80, стандартный порт для HTTP-трафика, и нажмите "Далее"
4. Оставьте выбранным параметр "Разрешить подключение" и нажмите "Далее".
5. Установите флажки для всех трех доменов и нажмите кнопку Далее
6. Назовите правило "Разрешить вход по протоколу HTTP" и нажмите "Готово"
HTTP-трафик теперь будет пропускаться через брандмауэр и передаваться в Nightscout. Этот процесс не требуется выполнять для MongoDB, поскольку Nightscout собирается подключаться к Mongo через локальный порт с того же сервера. Если вам нужно получить доступ к Mongo из внешней системы, вы можете повторить описанный выше процесс для порта 27017.
Скачайте и запустите Nightscout
Теперь, когда операционная система и база данных установлены, вы готовы к клонированию и установке Nightscout.
Скачивание Nightscout
Запустите командную строку NodeJS от имени администратора. Создайте на своем сервере папку, в которую будет загружаться Nightscout. Я выбрал C:\Nightscout\. Клонируйте главный репозиторий Nightscout в этот каталог, обязательно соблюдая конечную точку в команде git:cd \
mkdir Nightscout
cd Nightscout
git clone https://github.com/nightscout/cgm-remote-monitor.git .
Git загрузит файлы Nightscout в каталог Nightscout.
Установка и настройка
Следующим шагом будет установка переменных среды на системном уровне, а не на уровне пользователя. Это необходимо, поскольку вы хотите, чтобы любой пользователь, особенно СИСТЕМНЫЙ, имел доступ к этим переменным при загрузке системы, но не вошел в систему.
1. Щелкните правой кнопкой мыши "Этот компьютер" на рабочем столе и выберите "Свойства"
2. Нажмите "Дополнительные системные настройки" на левой панели окна "Свойства системы"
3. Нажмите кнопку "Переменные среды"
4. Добавьте следующие системные переменные, введя имена и значения переменных в выделенное текстовое поле, нажав кнопку Создать для каждой переменной:
- PUMP_FIELDS определяет, какие поля вы хотите использовать в Pump pillbox, и включает в себя такие параметры, как уровень заряда батареи и резервуара;
- ENABLE явно указывает, какие функции следует включить для пользователя;
- Параметр API_SECRET должен быть настроен таким образом, чтобы устройство-загрузчик могло использовать REST API для добавления данных в Nightscout (прямая запись в MongoDB не поддерживается);
- MONGO - это строка подключения к базе данных, которая требуется Nightscout для получения ваших данных;
- ПОРТ - это порт, который система будет прослушивать, обычно 80 для HTTP, если вы собираетесь использовать обратный прокси-сервер перед Nightscout, или 443, если нет;
- INSECURE_USE_HTTP позволяет узлу использовать HTTP и не требовать HTTPS, что необходимо только в том случае, если вы планируете использовать обратный прокси-сервер перед Nightscout (подробности смотрите в разделах IIS).
PUMP_FIELDS = reservoir battery status
ENABLE = careportal iob cob openaps pump bwg rawbg basal
API_SECRET = YOUR_API_SECRET_HERE
MONGO = mongodb://username:password@localhost:27017/Nightscout
PORT = 443
INSECURE_USE_HTTP = true
Откройте приглашение командной строки NodeJS от имени администратора и перейдите в папку Nightscout, затем запустите процесс установки Node Package Manager (NPM):
npm install --msvs_version=2015
Как только процесс установки будет завершен, запустите сервер:
node server.js
При первом запуске Nightscout потребуется немного больше времени, чтобы подготовить базу данных, поскольку ее необходимо инициализировать. Когда вы увидите строку clear_alarm для всех клиентов, попробуйте подключиться к ней с помощью Internet Explorer, перейдя по ссылке http://localhost/. Если вы видите сайт Nightscout и перенаправлены в Редактор профилей, значит, настройка завершена. Закройте сервер Nightscout, нажав Ctrl+C, чтобы начать настройку его автоматического запуска при загрузке системы.
Запуск Nightscout при загрузке
Для запуска Nightscout при загрузке системы необходимо использовать планировщик заданий.
1. Откройте планировщик задач и нажмите кнопку Создать базовую задачу:
2. Назовите новую задачу Nightscout Server и нажмите кнопку Далее
3. Выберите "При запуске компьютера" в качестве триггера и нажмите "Далее"
4. Выберите "Запустить программу" в качестве действия для выполнения и нажмите "Далее".
5. Настройте задачу так, чтобы она запускалась в Node и в папке Nightscout, затем нажмите "Далее":
- Программа/скрипт: C:\Program Files\nodejs\node.exe
- Аргументы: server.js
- Начать с: C:\Nightscout\
6. Установите флажок "Открывать диалоговое окно свойств для этой задачи, когда я нажимаю кнопку Готово" и нажмите кнопку Готово
Если вы получите предупреждение о названии программы и аргументах, нажмите кнопку "Нет"
7. На вкладке Общие выберите "Запускать независимо от того, вошел пользователь в систему или нет".
8. На вкладке Триггер дважды щелкните по триггеру в списке и добавьте задержку, установив флажок "Отложить выполнение задачи" на 2 минуты, затем нажмите "ОК"
9. На вкладке "Условия" в разделе "Питание" снимите флажок "Запускать задачу, только если компьютер подключен к сети тока".
10. На вкладке "Настройки" проверьте все следующие параметры:
- Запустите задачу как можно скорее после пропущенного запланированного запуска
- Если задача не выполняется, перезапускайте ее каждый раз (по умолчанию - 1 минута).
Важно: Снимите флажок "Останавливать задачу, если она выполняется дольше", иначе ваша служба Nightscout будет останавливаться через три дня после каждой перезагрузки.
Если вам будет предложено ввести пароль администратора, сделайте это и нажмите кнопку ОК. Закройте планировщик заданий и перезагрузите сервер. Подождите не менее 2 минут с момента, когда вы сможете нажать Ctrl+Alt+Del для входа в систему, а затем попытайтесь подключиться к сервису.
Обратный прокси-сервер с IIS
Обычно для обеспечения доступа трафика из Интернета к сервису достаточно перенаправить порт 80 с вашего домашнего маршрутизатора на сервер Nightscout. В моем случае у меня уже есть веб-сервер IIS, доступный через Интернет, поэтому мне нужно было настроить обратный прокси-сервер. Создав новый веб-сайт на существующем сервере IIS и настроив перезапись URL-адреса для прокси-трафика на сервер Nightscout для определенного доменного имени, вы можете запустить более одного веб-сервера, доступного через один и тот же внешний порт. Все эти действия выполняются на существующем основном веб-сервере и не выполняются в системе Nightscout. Вам нужно будет загрузить и установить приложение Microsoft для маршрутизации запросов (ARR).
Создайте прокси-сайт
Настройка сайта, который будет передавать трафик через прокси, выполняется быстро:
1. Откройте IIS, щелкните правой кнопкой мыши элемент "Сайты" и выберите "Добавить веб-сайт...".
2. Назовите сайт Nightscout Proxy и выберите физический путь к сайту. Этот путь останется пустым. Хотя это и не показано ниже, имя хоста должно быть полным доменным именем, к которому вы ожидаете подключиться через Интернет (например, nightscout.domainname.com).:
Нажмите кнопку ОК и убедитесь, что веб-сайт успешно запущен.
Настройте обратный прокси-сервер для перезаписи URL-адреса
Модуль перезаписи URL-адресов будет действовать как обратный прокси-сервер, принимая входящий трафик с внешнего доменного имени (например, nightscout.domainname.com ), переписывая его на внутреннее имя целевого веб-сервера (например, nightscout.internal.local), а затем перенаправляя его на внутренний веб-сервер Nightscout. Когда сервер Nightscout возвращает данные, URL Rewrite обрабатывает трафик в обратном порядке, получая ответ от Nightscout, переписывая его в соответствии с внешним доменным именем и отправляя его в интернет-систему, которая отправила первоначальный запрос.
Поскольку маршрутизация запросов приложений не поддерживает сжатие на целевом хосте, в данном случае Nightscout, нам нужно будет ввести дополнительное правило, которое предписывает Nightscout не сжимать выходные данные. Трафик между веб-браузером и IIS, однако, будет сжиматься.
1. На сайте "NightscoutProxy" щелкните значок "Переписать URL", а затем нажмите "Просмотреть переменные сервера". Нажмите "Добавить", а затем введите HTTP_ACCEPT_ENCODING. Это позволит нам отключить сжатие между Nightscout и IIS позже. Нажмите кнопку ОК, а затем Вернуться к правилам.
2. Нажмите кнопку Добавить правило
3. Выберите Обратный прокси-сервер и нажмите кнопку ОК
4. В поле "Входящие правила" введите имя или IP-адрес внутреннего сервера Nightscout и, при необходимости, установите флажок "Разгрузка SSL". Установите флажок Правила исходящих сообщений, введите имя внутреннего сервера Nightscout в текстовое поле "От" (nightscout), затем введите имя внешнего домена в поле "Кому" (nightscout.domainname.com).
На этом этапе для большинства веб-серверов вы попытаетесь получить доступ к серверу Nightscout со смартфона через сотовое соединение для передачи данных, и это сработает. Выполнение этого сейчас приведет к ошибке, поскольку URLRewrite ненавидит сжатие, и его необходимо отключить на внешнем сервере IIS и в Nightscout.
Перезапись и сжатие URL-адресов
Сжатие данных между IIS и Nightscout необходимо отключить, поскольку URLRewrite его не поддерживает. Мы сделаем это, переписав заголовок HTTP_ACCEPT_ENCODING между IIS и Nightscout. Заголовок Accept-Encoding: request, передаваемый в Nightscout, будет иметь значение неподдерживаемого имени сжатия (x), что приведет к тому, что Node будет передавать свои данные вообще без какого-либо сжатия.
1. Перейдите на сайт "NightscoutProxy" и дважды щелкните значок перезаписи URL-адреса
2. Дважды щелкните ReverseProxyInboundRule1 в Правилах ввода
3. В разделе "Серверные переменные" нажмите кнопку "Добавить". Введите HTTP_ACCEPT_ENCODING в поле "Имя серверной переменной" и "x" в поле "Значение". Нажмите "ОК", чтобы добавить правило, а затем нажмите "Применить".
Как только это изменение будет внесено, вы сможете просматривать свой экземпляр Nightscout через обратный прокси-сервер IIS.
Вывод
Nightscout доступен как CGM в облаке, и этот сценарий очень просто настроить в Azure или Hiroku - отличный вариант, если у вас есть доступ только к ресурсам облачных вычислений. Люди, имеющие доступ к локальным серверам и предпочитающие осуществлять больший контроль над своими данными, могут использовать Windows Server для хранения своей информации внутри компании.