Перенос Nightscout на MongoDB Atlas (нужно всем)

Если у вас есть Nightscout, вам это скоро понадобится.

Что произошло?

Nightscout хранит все данные (сахар, состояние устройств и т.д.) в базе данных mLab. Возможно, вы уже получили письмо с предупреждением, что адд-он mLab будет удален из Heroku 10 ноября 2020 г. До этого времени необходимо перенести вашу базу данных на новый сервер. Мы будем использовать для этого бесплатный MongoDB Atlas. Если этого не сделать, ваш Nightscout перестанет нормально работать 10 ноября.

При необходимости вы в любое время (до 10 ноября) сможете вернуть все в прежнее состояние (см. ниже).

Письмо от Heroku (иногда приходит в спам)
Письмо от Heroku (иногда приходит в спам)
Если я настраивал вам AndroidAPS или Nightscout и вы не меняли пароль от Heroku, вам не нужно ничего делать. При желании можете уточнить, перенес ли я базу данных, но я в любом случае перенесу ее до 10 ноября. Если вы поменяли пароль от Heroku, для переноса базы данных просто напишите новые почту/пароль.

Что вам понадобится

  • компьютер или смартфон;
  • почта и пароль от Heroku (адрес вида mycgm.herokuapp.com — это не логин, а ваш API_SECRET — это пароль от Nightscout, а не от Heroku; при необходимости вы можете восстановить пароль от Heroku здесь, введя почту, если забыли его);
  • 20 минут свободного времени.

Перенос базы данных

Для удобства ниже предложено использовать для MongoDB Atlas учетные данные Heroku, но вы можете ввести любые почту/пароль при желании.
  1. Зайдите сюда и введите почту и пароль от Heroku.
Перенос Nightscout на MongoDB Atlas (нужно всем), image #2

2. Откройте свое приложение Nigthscout, затем Settings — Reveal Config Vars.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #3
Перенос Nightscout на MongoDB Atlas (нужно всем), image #4

3. Найдите переменную MONGODB_URI, скопируйте ее значение. Откройте блокнот и вставьте это значение туда.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #5
Перенос Nightscout на MongoDB Atlas (нужно всем), image #6

Его структура будет такой:

mongodb://<user>:<password>@<host>:<port>/<database>

Позже вам понадобится <password>. В примере выше это lsfunevpls8302nf02ls0fn48d , то есть значение от символа : до @, не включая их.

4. Обязательно сохраните этот файл, т.к. он может понадобиться для восстановления прежнего состояния Nightscout, если вы сделаете что-то не так. Для сохранения нажмите Ctrl+S, выберите нужное место, имя файла и нажмите Сохранить.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #7

5. Откройте вкладку Resources и нажмите mLab MongoDB. После открытия mLab на новой вкладке перейдите к следующему шагу.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #8

6. Зайдите сюда и зарегистрируйтесь. Поле Your Company не заполняйте, дальше введите почту, ваше имя, фамилию (на английском) и пароль. (Для удобства можете использовать почту и пароль от Heroku.)

Перенос Nightscout на MongoDB Atlas (нужно всем), image #9

7. Подождите несколько секунд. Когда появится предложение создать кластер, нажмите Skip слева внизу. Затем нажмите шестеренку слева вверху.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #10
Перенос Nightscout на MongoDB Atlas (нужно всем), image #11

8. Внизу нажмите Connect to mLab, затем Authorize.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #12
Перенос Nightscout на MongoDB Atlas (нужно всем), image #13

9. Справа нажмите 3 точки — Configure Migration. Далее Create or Select Target Project.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #14
Перенос Nightscout на MongoDB Atlas (нужно всем), image #15

10. Выберите Project 0 и Confirm Project And Continue. На следующем шаге — Import Database Users And Continue.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #16
Перенос Nightscout на MongoDB Atlas (нужно всем), image #17

11. Поставьте галочку Allow all IP addresses… и нажмите Allow All And Continue.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #18

12. В поле Cluster выберите Create most equivalent new claster и нажмите внизу Confirm Target And Continue.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #19

13. Подождите несколько минут, пока создастся новый кластер. После этого кнопка Confirm Source and Target станет зеленой. Нажмите на нее.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #20

14. Нажмите Confirm And Continue, затем поставьте галочку I acknowledge… и нажмите Skip Test Run.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #21
Перенос Nightscout на MongoDB Atlas (нужно всем), image #22

15. Нажмите Confirm Connectivity, затем Confirm And Continue.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #23
Перенос Nightscout на MongoDB Atlas (нужно всем), image #24

16. Нажмите Confirm And Continue еще раз.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #25

17. Вернитесь на Heroku, зайдите в свое приложение Nightscout, затем Settings. Внизу включите Maintenance Mode. Это приостановит работу Nightscout, чтобы провести перенос базы данных.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #26
Перенос Nightscout на MongoDB Atlas (нужно всем), image #27
Перенос Nightscout на MongoDB Atlas (нужно всем), image #28
Перенос Nightscout на MongoDB Atlas (нужно всем), image #29

18. Вернитесь в MongoDB. Поставьте галочку I understand… и нажмите Begin Migration. Подождите несколько минут.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #30

19. Когда процесс Migrate завершится и кнопка Start Using Atlas станет зеленой, прокрутите вверх и нажмите на логотип MongoDB Atlas, затем Project0 — 3 точки — Command Line Tools.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #31
Перенос Nightscout на MongoDB Atlas (нужно всем), image #32
Перенос Nightscout на MongoDB Atlas (нужно всем), image #33

20. Нажмите Connect Instructions — Connect your application.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #34
Перенос Nightscout на MongoDB Atlas (нужно всем), image #35

21. Выберите версию 2.2.12, затем нажмите Copy.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #36
Перенос Nightscout на MongoDB Atlas (нужно всем), image #37

22. Вставьте скопированную ссылку в блокнот. Замените <password> паролем из пункта 3.

Прокрутите вправо и замените <dbname> именем пользователя, которое написано перед паролем (напр. heroku_1234567).

Ниже — пример строки из п. 3 и итоговой строки после замены <password> и <dbname>. password находится между : и @, а dbname — между / и ?

Перенос Nightscout на MongoDB Atlas (нужно всем), image #38
Перенос Nightscout на MongoDB Atlas (нужно всем), image #39

После замены полностью выделите и скопируйте получившуюся строку, начинающуюся с mongodb+srv:// и заканчивающуюся на w=majority.

Пример правильной строки: mongodb://heroku_1234567:lsfunevpls8302nf02ls0fn48d@heroku-1234567-shard-00-00.meash.mongodb.net:27017,heroku-1234567-shard-00-01.meash.mongodb.net:27017,heroku-1234567-shard-00-02.meash.mongodb.net:27017/heroku_1234567?ssl=true&replicaSet=atlas-t2d36u-shard-0&authSource=admin&retryWrites=true&w=majority

23. Зайдите в Heroku, удалите значение переменной MONGODB_URI и вставьте на его место эту строку, нажмите Save changes. Перед этим убедитесь, что вы сохранили файл со старой строкой mLab, выполнив пункт 4!

Перенос Nightscout на MongoDB Atlas (нужно всем), image #40
Перенос Nightscout на MongoDB Atlas (нужно всем), image #41
Перенос Nightscout на MongoDB Atlas (нужно всем), image #42

24. Прокрутите вниз и отключите Maintenance mode. После этого в течение нескольких минут Nigthscout заработает.

Перенос Nightscout на MongoDB Atlas (нужно всем), image #43

25. Когда вы убедитесь, что все правильно работает и Nightscout показывает новые значения сахара, вы можете удалить адд-он mLab с Heroku.

Зайдите в Heroku, откройте вкладку Resources, нажмите две стрелки справа от mLab MongoDB, затем Delete Add-on и введите имя своего приложения Nightscout (будет показано в скобках).

Перенос Nightscout на MongoDB Atlas (нужно всем), image #44
Перенос Nightscout на MongoDB Atlas (нужно всем), image #45

Устранение неполадок

Если по какой-то причине у вас перестал работать Nightscout или он перестал обновлять данные, до удаления адд-она mLab вы можете восстановить прежнее состояние, заменив значение переменной MONGODB_URI на старое, сохраненное в файле блокнота. Это не отменит того, что 10 ноября 2020 г. адд-он удалится автоматически, поэтому вам все равно придется перенести базу данных.

Если устройство, выгружающее сахар в Nightscout, использует не API_SECRET, а MongoDB URI, его нужно изменить и на этом устройстве (либо изменить способ загрузки на REST API с использованием API_SECRET), т.к. вы поменяли базу данных MongoDB. В большинстве случаев используется API_SECRET, так что вам, скорее всего, не нужно ничего делать.

Если вы затрудняетесь выполнить какой-то пункт инструкции, напишите в чат https://t.me/xdrip_dexcom_libre или мне https://vk.me/pikernot

Источники

https://www.youtube.com/watch?v=CpuiFW7fwZ0

https://t.me/my_openaps/59065

18223 views·49 shares