Ринго 2.4 переходит на собственную очередь для работы с Apple MDM, отказываясь от стороннего сервиса MicroMDM. Чтобы избежать повторного enroll всех управляемых устройств, Ринго автоматически перенесёт данные токенов push-уведомлений и приватный ключ Apple Push Notification service (APNs)-сертификата из MicroMDM в PostgreSQL во время первого запуска новой версии.
Инструкция предназначена для обновления до актуальной минорной версии 2.4.4. Базовый релиз 2.4 недоступен для загрузки. Инструкция описывает процесс перехода с версии 2.3.5.
Если вы используете версию Ринго 2.4.x или более позднюю, для обновления в рамках ветки 2.4 воспользуйтесь инструкцией, приведённой в конце статьи.
Перед началом обновления создайте:
Необходимо ограничить доступ управляемых устройств к системе: измените настройки reverse-proxy (если применимо) или временно заблокируйте входящие подключения на порт 443 через Firewall. Это очень важно, так как после процесса миграции БД будет выполнен необратимый процесс обновления Enroll-профилей на устройствах.
Остановите все запущенные контейнеры:
docker stop $(docker ps -aq)
Откройте файл /etc/ringo/docker-compose.yml и внесите два изменения.
Найдите строку:
image: cr.yandex/crpsam2fr3938ne18jd0/ringo:2.3.5
Замените её на:
image: cr.yandex/crpsam2fr3938ne18jd0/ringo:[тег версии]
В секцию services → backend → volumes добавьте строку:
- vol-deploy-micromdm:/var/db/micromdm
Это откроет контейнеру backend доступ к файлу базы данных micromdm для выполнения миграции.
Перейдите в директорию /etc/ringo:
cd /etc/ringo
Запустите Docker-контейнеры:
docker compose up -d
При первом запуске Ринго автоматически перенесёт данные из БД micromdm в PostgreSQL.
Выполните команду для просмотра логов контейнера:
docker logs roll-deploy-backend -n 50 -f
Ожидаемый вывод после успешной миграции:
MicroMDM migration success! Migrated N device(s)
Где N — количество перенесённых устройств.
Отключите запрещающие правила Firewall или откатите настройки reverse-proxy, чтобы управляемые устройства вновь могли связаться с сервером Ринго.
Пропустите этот шаг, если сервер Ринго имеет прямой доступ в интернет.
Бэкенд Ringo версии 2.4.1 умеет отправлять запросы к Apple через корпоративный HTTP CONNECT-прокси. Настройка состоит из одной переменной окружения APPLE_PROXY_URL и действует только на два адреса:
api.push.apple.com — отправка push-уведомлений APNS (HTTP/2 с взаимной TLS-аутентификацией)itunes.apple.com — поиск приложений в App StoreЕсли переменная не задана, бэкенд отправляет запросы к Apple напрямую, как и раньше.
environment:
APPLE_PROXY_URL: http://<адрес>:<порт>
- name: APPLE_PROXY_URL
value: "http://<адрес>:<порт>"
После внесения изменений пересоздайте контейнер, чтобы применить конфигурацию.
| Сценарий | Пример |
|---|---|
| HTTP-прокси, без аутентификации | http://proxy.company.local:3128 |
| HTTPS-прокси (TLS до прокси-сервера) | https://proxy.company.local:3129 |
| Базовая аутентификация | http://логин:пароль@proxy.company.local:3128 |
После добавления переменной бэкенд необходимо перезапустить.
бэкенд
│
├─ api.push.apple.com ──── CONNECT ────► прокси ────► Apple (APNS)
├─ itunes.apple.com ────── CONNECT ────► прокси ────► Apple (поиск приложений)
│
├─ SCEP (/scep, /scep-proxy) ──────────► напрямую
├─ база данных (PostgreSQL) ────────────► напрямую
├─ веб-интерфейс, API, агенты ──────────► напрямую
└─ всё остальное ───────────────────────► напрямую
Прокси применяется только к адресам Apple. Остальной сетевой трафик бэкенда не затрагивается.
HTTPS_PROXY и HTTP_PROXY — не влияют на доступ к Apple. Переносить эти переменные из MicroMDM в бэкенд не требуется.NO_PROXY — не нужен, потому что прокси включается не глобально, а только для Apple.APPLE_PROXY_URL.Поддерживается:
Не поддерживается:
APPLE_PROXY_URL в настройках бэкенда.CONNECT itunes.apple.com:443 → 200
CONNECT api.push.apple.com:443 → 200
Если корпоративный прокси не используется, переменную APPLE_PROXY_URL задавать не нужно — бэкенд будет работать напрямую.
| Сообщение в логах бэкенда | Причина |
|---|---|
Apple proxy CONNECT ... failed: HTTP/1.1 407 |
Прокси требует аутентификацию, или неверны логин и пароль |
Apple proxy connection to proxy:port failed |
Не удалось подключиться к прокси-серверу — проверьте адрес и порт |
Apple proxy TLS connection to api.push.apple.com failed |
Не удалось установить TLS-соединение с Apple через прокси-туннель |
Apple proxy TLS ... did not negotiate HTTP/2 |
Apple требует HTTP/2, но прокси или сеть не пропускают этот протокол |
Убедитесь, что управление устройствами работает корректно:
После успешной миграции и проверки работы MDM удалите из .env и docker-compose.yml все артефакты, относящиеся к micromdm.
Перед удалением сохраните резервные копии текущих
.envиdocker-compose.yml. При необходимости диагностики это позволит быстро вернуть прежнюю конфигурацию.
В файле /etc/ringo/.env удалите переменную:
MICROMDM_SECRET=...
Удалите зависимость backend от micromdm. В секции services → backend → depends_on удалите строку - micromdm:
depends_on:
- micromdm
Если в
depends_onесть другие сервисы (например,db), удалите только строку- micromdm. Сам блокdepends_onне трогайте.
Удалите переменные окружения micromdm. Из секции services → backend → environment удалите:
MICROMDM_HOST: http://micromdm:8080
MICROMDM_SECRET: ${MICROMDM_SECRET}
Удалите временный volume. Из секции services → backend → volumes удалите строку, добавленную для миграции:
- vol-deploy-micromdm:/var/db/micromdm
Удалите сервис micromdm. Полностью удалите следующий блок из секции services:
micromdm:
image: ghcr.io/micromdm/micromdm:v1.11.0
container_name: roll-deploy-micromdm
environment:
MICROMDM_SERVER_URL: ${PUBLIC_URL}
MICROMDM_API_KEY: ${MICROMDM_SECRET}
MICROMDM_WEBHOOK_URL: http://backend:5000/mdm/webhook
MICROMDM_TLS: false
volumes:
- vol-deploy-micromdm:/var/db/micromdm
Удалите volume micromdm. Из секции volumes удалите:
vol-deploy-micromdm:
docker compose config
Если предыдущая команда завершилась без ошибок, запустите контейнеры:
docker compose up -d
Проверьте статус контейнеров:
docker ps -a
Убедитесь, что контейнер backend запущен и MDM-команды продолжают выполняться корректно.
Остановите контейнер:
docker stop roll-deploy-micromdm
Удалите контейнер:
docker rm roll-deploy-micromdm
Используйте данный раздел документации только в том случае, если вы используете версию Ринго 2.4.x или более позднюю в рамках ветки 2.4.
Перед началом обновления создайте:
Откройте файл /etc/ringo/docker-compose.yml и внесите изменения.
Найдите строку:
image: cr.yandex/crpsam2fr3938ne18jd0/ringo:2.4.x
Замените её на:
image: cr.yandex/crpsam2fr3938ne18jd0/ringo:[тег версии]
Загрузите последние образы из Docker Registry, указанные в docker-compose.yml:
docker compose pull
Перезапустите сервис backend, пересобрав его и не трогая зависимости:
docker compose up --force-recreate --no-deps --build -d backend