Uptime Kuma в Docker на Synology запускался, UI открывался, но любые проверки (Google, 8.8.8.8, DNS) падали.
curl, ping, getent внутри контейнера не работали, несмотря на корректный DNS.
В итоге всё заработало — но неочевидным способом.
Ниже — наш реальный путь с ошибками и финальным рабочим решением.
Симптомы проблемы
• curl -I https://google.com → Could not resolve host
• ping 8.8.8.8 → 100% packet loss
• Мониторы в Uptime Kuma → timeout exceeded
• DNS в контейнере прописан (8.8.8.8 / 8.8.4.4)
• На самом NAS интернет есть
Bash:
cat /etc/resolv.conf
INI:
nameserver 8.8.8.8
nameserver 8.8.4.4
Bash:
getent hosts google.com
Bash:
ping -c 2 8.8.8.8
Bash:
curl -I https://google.com
➡ DNS есть, но маршрутизации нет.
Что НЕ помогло
• Добавление DNS= в переменные среды
• --privileged / повышенные права
• iptables MASQUERADE вручную
• Пересоздание bridge-сети
• Отключение системного прокси DSM
• Перезапуск Container Manager
• Принудительный ip_forward=1
• --privileged / повышенные права
• iptables MASQUERADE вручную
• Пересоздание bridge-сети
• Отключение системного прокси DSM
• Перезапуск Container Manager
• Принудительный ip_forward=1
Ключевая причина
Container Manager на Synology иногда ломает NAT/DNS для bridge-сети,
особенно если:
• есть Web Station / Reverse Proxy
• несколько docker-сетей
• ранее использовалась сеть host
• контейнеры мигрировали/дублировались
В результате:
- контейнер видит DNS,
- но пакеты не выходят за пределы bridge.
РАБОЧЕЕ РЕШЕНИЕ (100%)
✔ Шаг 1. Оставляем сеть контейнера bridge
Это важно.
НЕ host, а именно bridge.
✔ Шаг 2. Подключаем Uptime Kuma через Reverse Proxy DSM
В DSM:
Панель управления → Веб-портал → Обратный прокси
Настройки:
Источник
Makefile:
Протокол: HTTP
Имя хоста: uk.nucleo.synology.me
Порт: 80
Makefile:
Протокол: HTTP
Имя хоста: localhost
Порт: 3001
✔ Шаг 3. WebSocket (ОБЯЗАТЕЛЬНО)
В настройках обратного прокси → Пользовательский заголовок:
HTTP:
Upgrade: $http_upgrade
Connection: $connection_upgrade
Cannot connect to the socket server (xhr poll error)
✔ Шаг 4. Переменные среды контейнера
Оставляем ТОЛЬКО:
INI:
UPTIME_KUMA_IS_CONTAINER=1
Makefile:
DNS=
PATH=
NODE_VERSION=
YARN_VERSION=
✔ Шаг 5. Проверяем
Открываем:
Код:
http://uk.nucleo.synology.me/
Код:
http://uk.nucleo.synology.me/dashboard/2
А можно ли оставить сеть host?
Технически — да. Практически — не стоит.host:
- проще
− небезопасно
− конфликтует с портами DSM
− ломает WebSocket
− плохо масштабируется
Bridge + Reverse Proxy — самый стабильный вариант на Synology.
Итог
✔ Проблема не в Uptime Kuma
✔ Не в DNS
✔ Не в iptables
✔ А в реализации Docker networking в Synology DSM
Reverse Proxy решает проблему полностью.