Решено: почему в Odoo на Synology «ломается» вёрстка и как это исправить
Многие пользователи при установке Odoo через Docker на Synology сталкиваются с тем, что страница управления базами данных или страница логина выглядит как «текст на белом фоне» без CSS-стилей. В консоли браузера при этом видны ошибки 500 (Internal Server Error) для всех статических файлов.

В этой статье мы разберем пошаговый путь отладки — от простых прав доступа до поиска конфликтов в модулях.
1. Проблема: «Голый» HTML и ошибка 500
Симптомы:
Интерфейс Odoo отображается некорректно (нет стилей).
Прямой доступ по IP (например, http://192.168.x.x:8069) работает частично, но менеджер баз данных полностью «развален».
В консоли разработчика (F12) десятки ошибок 500 при попытке загрузить bootstrap.css, web.assets_common.js и т.д.

2. Шаг 1: Правильное монтирование данных
Часто Docker-контейнер хранит данные во внутренних скрытых томах. Для стабильной работы и управления файлами (кэшем стилей) лучше вынести их в обычную папку на Synology.
Что сделать: В файле compose.yaml замените системные тома на прямые пути к папкам вашего NAS:
YAML
services:
web:
image: odoo:18.0
volumes:
- /volume1/docker/odoo/data:/var/lib/odoo # Папка для сессий и стилей
- /volume1/docker/odoo/addons:/mnt/extra-addons # Ваши модули
- /volume1/docker/odoo/config:/etc/odoo # Файл odoo.confЕсли база уже была создана во внутреннем томе, её нужно предварительно скопировать через SSH командой sudo docker cp.
sudo docker cp odoo-web-1:/var/lib/odoo/. /volume1/docker/odoo/data/3. Шаг 2: Битва с правами доступа (Synology + Docker)
Odoo должна иметь возможность записывать файлы в папку data, чтобы генерировать CSS-кэш.
Настройка через File Station:
ПКМ на папку data → Свойства → Разрешения.
Дайте группе Everyone права на «Чтение и Запись».
Важно: Установите галочку «Применить к данной папке, подпапкам и файлам».
Настройка через SSH (самый надежный метод):
Внутри Docker пользователь Odoo обычно имеет UID 101. Если владельцем файлов в папке data является root, Odoo не сможет создать стили. Выполните в терминале:
sudo chown -R 101:101 /volume1/docker/odoo/data4. Шаг 3: Конфигурация odoo.conf и Proxy Mode
Если вы заходите в Odoo по прямому локальному IP, а не через домен с HTTPS, настройка proxy_mode может блокировать загрузку стилей.
Что проверить в odoo.conf:
Если заходите через IP:8069: установите proxy_mode = False.
Если заходите через Reverse Proxy (например, через Synology Application Portal): установите proxy_mode = True.
5. Шаг 4: Главная ловушка Odoo 18 — версии модулей
Это самая неочевидная причина ошибки 500. В версии 18.0 Odoo ввела строгую проверку манифестов. Если в папку addons попал модуль от версии 17.0, менеджер баз данных «упадет» при сканировании списка.
Как найти виновника: Загляните в журнал (лог) контейнера. Если вы видите ошибку: ValueError: Invalid version '17.0.1.0.1'. Modules should have a version in format 18.0.x.y
Решение:
Найдите в папке addons модуль, на который ругается система (например, l10n_ru).
Либо удалите его, если он несовместим.
Либо откройте файл manifest.py внутри этого модуля и вручную исправьте версию на 18.0.1.0.1.
6. Итоговый чек-лист после исправлений
После выполнения всех шагов:
Перезапустите проект в Container Manager.
Очистите кэш браузера (Ctrl + F5).
Если на странице логина вёрстка есть, а в менеджере БД нет — проверьте еще раз лог на наличие ошибок ValueError: Invalid version.
Результат: Odoo получает доступ к файловой системе, корректно считывает манифесты модулей и успешно отдает CSS-стили браузеру.
