Uptime Kuma + Synology Container Manager: почему контейнер «не видит интернет» и как мы это починили

admin

Anabolic Gontarski
Команда форума
Администрация
Доверенный
Новичок
ChatGPT Image 25 дек. 2025 г., 11_54_26.png


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

💥 Ключевая причина​


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
Без этого Uptime Kuma будет писать:

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

🎉 Мониторы начинают отвечать, DNS и HTTPS работают.

❓ А можно ли оставить сеть host?​

Технически — да. Практически — не стоит.
host:
  • проще
    − небезопасно
    − конфликтует с портами DSM
    − ломает WebSocket
    − плохо масштабируется

Bridge + Reverse Proxy — самый стабильный вариант на Synology.

🧩 Итог​


✔ Проблема не в Uptime Kuma
✔ Не в DNS
✔ Не в iptables
✔ А в реализации Docker networking в Synology DSM

Reverse Proxy решает проблему полностью.
 
Назад
Сверху