Запуск Playground локально через Docker
Запускайте Playground локально, когда нужно проверить собственный API Client, права доступа вашей учётной записи и реальные устройства. Публикуемый образ включает и веб-интерфейс, и бэкенд-сервис, поэтому Go, Node.js или копия исходного кода не требуются.
Если вы хотите только ознакомиться с процессом, начните с онлайн-Playground.
Предварительные требования
- Установлен Docker.
- У вас есть API Client с его
clientIdиclientSecret. - У API Client есть как минимум
device:read; управление и конфигурация требуют дополнительных прав доступа. - Свободен локальный порт
8090.
Полные правила см. в Области авторизации (на английском).
Защитите тестовые учётные данные
Используйте выделенную тестовую учётную запись и тестовые устройства вместо продакшн-учётных данных. Предоставляйте только права доступа, необходимые для текущей проверки, и не давайте device:manage, если управление устройствами не требуется.
1. Создание файла окружения
Создайте пустую папку и добавьте файл .env:
WLTE_BASE_URL=https://openapi.svnwi.com
WLTE_CLIENT_ID=replace-with-your-clientId
WLTE_CLIENT_SECRET=replace-with-your-clientSecret
WLTE_WS_ENABLED=trueОграничьте доступ к файлу:
chmod 600 .envНе коммитьте .env в Git и не размещайте clientSecret в коде браузера, мобильном приложении или публичных логах.
2. Загрузка и запуск последнего образа
docker pull wlte/wlte-openapi-playground:latest
docker run -d \
--name wlte-openapi-playground \
--env-file .env \
-p 127.0.0.1:8090:8090 \
wlte/wlte-openapi-playground:latestПорт привязан к loopback-интерфейсу хоста и не открыт напрямую в локальную сеть или интернет.
3. Проверка процесса
docker ps --filter name=wlte-openapi-playground
docker logs --tail=100 wlte-openapi-playground
curl --fail http://127.0.0.1:8090/healthzПосле успешной проверки работоспособности откройте:
4. Проверка вашей интеграции
- Убедитесь, что список устройств соответствует устройствам, доступным учётной записи.
- Откройте устройство и убедитесь, что панели его периферии соответствуют его возможностям.
- Поочерёдно выберите HTTP и WebSocket, выполните одно обновление состояния в реальном времени с каждым транспортом.
- Используйте только тестовые устройства для операций с реле или RS-485.
- Сравните запросы, ответы и сообщения событий в Protocol Inspector.
Если интерфейс сообщает об ошибке прав доступа, обновите API Client в разделе API Keys, затем перезапустите контейнер с обновлёнными учётными данными.
Дополнительная настройка
У этих параметров есть значения по умолчанию, добавлять их в .env нужно только если вы хотите настроить тайм-ауты, буферы событий или логирование:
| Переменная окружения | По умолчанию | Назначение |
|---|---|---|
WLTE_REQUEST_TIMEOUT | 15s | Тайм-аут запросов REST API |
PLAYGROUND_WS_EVENT_BUFFER | 256 | Размер буфера событий WebSocket |
PLAYGROUND_WS_EVENT_HISTORY | 200 | События, сохраняемые страницей |
PLAYGROUND_WS_PING_INTERVAL | 20s | Интервал Ping для WebSocket |
PLAYGROUND_TRAFFIC_HISTORY | 200 | Сообщения, сохраняемые Protocol Inspector |
PLAYGROUND_LOG_FORMAT | json | Формат логов |
PLAYGROUND_LOG_LEVEL | info | Уровень логирования |
Остановка и удаление контейнера
docker rm -f wlte-openapi-playgroundСборка из исходного кода
Собирайте из Dockerfile только когда нужно проверить неопубликованный код или изменить сам Playground:
docker build \
--build-arg VERSION=local \
-t wlte-openapi-playground:local \
.
docker run -d \
--name wlte-openapi-playground \
--env-file .env \
-p 127.0.0.1:8090:8090 \
wlte-openapi-playground:localDockerfile собирает приложение на Vue, встраивает его в сервис на Go и запускает один процесс без прав root в финальном образе. .env никогда не копируется внутрь образа.
Решение проблем
Страница не открывается
Убедитесь, что контейнер запущен и .env не задаёт PLAYGROUND_LISTEN_ADDR=127.0.0.1:8090. Внутри контейнера процесс должен слушать 0.0.0.0:8090; публикуемый образ уже использует это значение по умолчанию.
Список устройств пуст
Убедитесь, что у API Client есть device:read и его учётная запись имеет доступ к устройствам. Продолжите с Частые сбои.
Можно ли открыть это публично?
Playground не предоставляет вход для оператора. Добавьте HTTPS, аутентификацию или контроль доступа к сети перед тем, как делиться им, и используйте выделенные тестовые учётные данные с ограниченными правами доступа.
