Перенос Nightscout на MongoDB Atlas (нужно всем)
Если у вас есть Nightscout, вам это скоро понадобится.
Что произошло?
Nightscout хранит все данные (сахар, состояние устройств и т.д.) в базе данных mLab. Возможно, вы уже получили письмо с предупреждением, что адд-он mLab будет удален из Heroku 10 ноября 2020 г. До этого времени необходимо перенести вашу базу данных на новый сервер. Мы будем использовать для этого бесплатный MongoDB Atlas. Если этого не сделать, ваш Nightscout перестанет нормально работать 10 ноября.
При необходимости вы в любое время (до 10 ноября) сможете вернуть все в прежнее состояние (см. ниже).
Если я настраивал вам AndroidAPS или Nightscout и вы не меняли пароль от Heroku, вам не нужно ничего делать. При желании можете уточнить, перенес ли я базу данных, но я в любом случае перенесу ее до 10 ноября. Если вы поменяли пароль от Heroku, для переноса базы данных просто напишите новые почту/пароль.
Что вам понадобится
- компьютер или смартфон;
- почта и пароль от Heroku (адрес вида mycgm.herokuapp.com — это не логин, а ваш API_SECRET — это пароль от Nightscout, а не от Heroku; при необходимости вы можете восстановить пароль от Heroku здесь, введя почту, если забыли его);
- 20 минут свободного времени.
Перенос базы данных
Для удобства ниже предложено использовать для MongoDB Atlas учетные данные Heroku, но вы можете ввести любые почту/пароль при желании.
- Зайдите сюда и введите почту и пароль от Heroku.
2. Откройте свое приложение Nigthscout, затем Settings — Reveal Config Vars.
3. Найдите переменную MONGODB_URI, скопируйте ее значение. Откройте блокнот и вставьте это значение туда.
Его структура будет такой:
mongodb://<user>:<password>@<host>:<port>/<database>
Позже вам понадобится <password>. В примере выше это lsfunevpls8302nf02ls0fn48d , то есть значение от символа : до @, не включая их.
4. Обязательно сохраните этот файл, т.к. он может понадобиться для восстановления прежнего состояния Nightscout, если вы сделаете что-то не так. Для сохранения нажмите Ctrl+S, выберите нужное место, имя файла и нажмите Сохранить.
5. Откройте вкладку Resources и нажмите mLab MongoDB. После открытия mLab на новой вкладке перейдите к следующему шагу.
6. Зайдите сюда и зарегистрируйтесь. Поле Your Company не заполняйте, дальше введите почту, ваше имя, фамилию (на английском) и пароль. (Для удобства можете использовать почту и пароль от Heroku.)
7. Подождите несколько секунд. Когда появится предложение создать кластер, нажмите Skip слева внизу. Затем нажмите шестеренку слева вверху.
8. Внизу нажмите Connect to mLab, затем Authorize.
9. Справа нажмите 3 точки — Configure Migration. Далее Create or Select Target Project.
10. Выберите Project 0 и Confirm Project And Continue. На следующем шаге — Import Database Users And Continue.
11. Поставьте галочку Allow all IP addresses… и нажмите Allow All And Continue.
12. В поле Cluster выберите Create most equivalent new claster и нажмите внизу Confirm Target And Continue.
13. Подождите несколько минут, пока создастся новый кластер. После этого кнопка Confirm Source and Target станет зеленой. Нажмите на нее.
14. Нажмите Confirm And Continue, затем поставьте галочку I acknowledge… и нажмите Skip Test Run.
15. Нажмите Confirm Connectivity, затем Confirm And Continue.
16. Нажмите Confirm And Continue еще раз.
17. Вернитесь на Heroku, зайдите в свое приложение Nightscout, затем Settings. Внизу включите Maintenance Mode. Это приостановит работу Nightscout, чтобы провести перенос базы данных.
18. Вернитесь в MongoDB. Поставьте галочку I understand… и нажмите Begin Migration. Подождите несколько минут.
19. Когда процесс Migrate завершится и кнопка Start Using Atlas станет зеленой, прокрутите вверх и нажмите на логотип MongoDB Atlas, затем Project0 — 3 точки — Command Line Tools.
20. Нажмите Connect Instructions — Connect your application.
21. Выберите версию 2.2.12, затем нажмите Copy.
22. Вставьте скопированную ссылку в блокнот. Замените <password> паролем из пункта 3.
Прокрутите вправо и замените <dbname> именем пользователя, которое написано перед паролем (напр. heroku_1234567).
Ниже — пример строки из п. 3 и итоговой строки после замены <password> и <dbname>. password находится между : и @, а dbname — между / и ?
После замены полностью выделите и скопируйте получившуюся строку, начинающуюся с 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!
24. Прокрутите вниз и отключите Maintenance mode. После этого в течение нескольких минут Nigthscout заработает.
25. Когда вы убедитесь, что все правильно работает и Nightscout показывает новые значения сахара, вы можете удалить адд-он mLab с Heroku.
Зайдите в Heroku, откройте вкладку Resources, нажмите две стрелки справа от mLab MongoDB, затем Delete Add-on и введите имя своего приложения Nightscout (будет показано в скобках).
Устранение неполадок
Если по какой-то причине у вас перестал работать 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
