Установка через Docker (внешний Caddy)
В этом варианте контейнер приложения NocoBase и контейнер Caddy запускаются отдельно. Можно начать с Установка через Docker (встроенный Nginx), а затем переключить точку входа на внешний контейнер Caddy.
Когда использовать этот вариант
- Вы хотите разнести NocoBase и веб-сервер по разным контейнерам
- Вы хотите упростить настройку обратного прокси и HTTPS с помощью Caddy
- Вы хотите публиковать во внешнюю сеть только контейнер прокси
Пример docker-compose.yml
Если вам нужен образ full, замените latest-no-nginx на latest-full-no-nginx.
Проброс 13000:80 нужен только для удобного локального тестирования, чтобы не занимать стандартные порты хоста напрямую. В production обычно не оставляют 13000:80; вместо этого внешний контейнер Caddy напрямую публикует порты хоста 80 и 443.
Ключевые моменты
NOCOBASE_EXTRACT_CLIENT_ASSETS=trueизвлекает клиентские ресурсы и генерирует конфигурацию проксиNOCOBASE_PROXY_PROVIDER=caddyуказывает, что нужно сгенерировать конфигурацию CaddyNOCOBASE_PROXY_UPSTREAM_HOST=appпозволяет контейнеру Caddy обращаться к сервисуappчерез сеть Compose./storageнужно смонтировать и вapp, и вcaddy, чтобы они могли совместно использовать конфигурацию прокси, статические ресурсы и загруженные файлы- Контейнер
caddyдолжен дождаться созданияnocobase.caddy, а затем с помощьюln -sfсв язать его с/etc/caddy/Caddyfile - Созданная конфигурация передаёт в NocoBase как маршрут
/files/в пределахAPP_PUBLIC_PATH, так и корневой маршрут/files/, обеспечивая авторизованный предпросмотр и скачивание файлов - На хост нужно публиковать только порт контейнера Caddy. Для тестирования можно начать с
13000:80; в production обычно напрямую публикуют порты хоста80и443, а сервисуappне нужно публиковать порт на хост
Если используется локальный Caddy на хосте
Если ваш Caddy установлен прямо на хосте, а не работает в Docker-контейнере, лучше использовать отдельный docker-compose.yml. В этом варианте сервис app должен публиковать порт на хост, а переменные прокси должны быть заданы с точки зрения хоста.
Можно использовать такой docker-compose.yml:
В этом варианте:
NOCOBASE_PROXY_STORAGE_PATHдолжен быть абсолютным путём к каталогуstorageна хостеNOCOBASE_PROXY_UPSTREAM_HOSTдолжен быть127.0.0.1- Сервис
appдолжен сохранитьports, чтобы локальный Caddy мог обращаться к приложению через127.0.0.1:13000
После запуска контейнера app дождитесь генерации файла конфигурации, а затем создайте ссылку на него в локальном пути конфигурации Caddy:
Если ваш локальный Caddy не использует /etc/caddy/Caddyfile, замените путь ссылки на свой путь конфигурации. Обычно безопаснее оставлять nocobase.caddy как основной входной файл, а не копировать его содержимое вручную.
Если вы управляете Caddy самостоятельно и не используете созданную конфигурацию, убедитесь, что /files/* и соответствующий маршрут в пределах APP_PUBLIC_PATH передаются в NocoBase до правил резервной страницы SPA. Полный пример см. в разделе Обратный прокси Caddy.
Связанные ссылки
- Установка через Docker (встроенный Nginx) — Начните с одноконтейнерного варианта
- Прокси статических ресурсов Caddy — Подробнее о сгенерированной конфигурации Caddy

