diff --git a/README.md b/README.md index 13a9e30..cb05f77 100644 --- a/README.md +++ b/README.md @@ -157,22 +157,56 @@ services: ### Вариант 2: Проксирование на frontend контейнер -Если хотите использовать готовый Docker контейнер с nginx внутри: +Если хотите использовать готовый Docker контейнер с nginx внутри. -**⚠️ Внимание:** Порт `80` в примерах - это **внутренний порт контейнера** (nginx внутри), не хост-порт! +**⚠️ Важно:** +- Порт `80` в примерах - это **внутренний порт контейнера** (nginx внутри), не хост-порт! +- Контейнеры должны быть в одной Docker сети для связи друг с другом +- Имена контейнеров используются как DNS внутри Docker сети + +#### A. Если у вас УЖЕ запущен Caddy/Nginx в Docker: + +**Шаг 1:** Узнайте имя Docker сети вашего Caddy/Nginx: + +```bash +# Посмотреть сети +docker network ls + +# Или узнать сеть конкретного контейнера +docker inspect <имя_caddy_контейнера> | grep NetworkMode +``` + +**Шаг 2:** Создайте docker-compose.yml для frontend: -docker-compose.yml: ```yaml services: cabinet-frontend: image: ghcr.io/bedolaga-dev/bedolaga-cabinet:latest container_name: cabinet_frontend restart: unless-stopped - # Не открываем порты на хосте, только для internal network + # НЕ открываем порты на хосте! Только внутри Docker сети networks: - bot_network + +networks: + bot_network: + external: true # Используем существующую сеть + name: remnawave-bedolaga-telegram-bot_bot_network # Пример для bedolaga bot ``` +**Важно:** Замените имя сети на вашу: +- Если у вас bot + caddy: используйте сеть бота (обычно `<название_проекта>_bot_network`) +- Если отдельный Caddy: узнайте через `docker network ls` +- Если используете Traefik: обычно `traefik` или `web` + +**Шаг 3:** Запустите frontend: + +```bash +docker compose up -d +``` + +**Шаг 4:** Добавьте в конфигурацию Caddy/Nginx: + Caddy проксирует на контейнер: ```caddyfile cabinet.yourdomain.com { @@ -189,7 +223,7 @@ cabinet.yourdomain.com { } ``` -Или Nginx: +Nginx (добавьте в существующий конфиг): ```nginx server { listen 443 ssl http2; @@ -218,6 +252,38 @@ server { } ``` +**Шаг 5:** Перезагрузите Caddy/Nginx: + +```bash +# Для Caddy +docker exec caddy reload --config /etc/caddy/Caddyfile + +# Для Nginx +docker exec nginx -s reload +``` + +#### B. Если Caddy/Nginx ещё НЕ запущен: + +docker-compose.yml: +```yaml +services: + cabinet-frontend: + image: ghcr.io/bedolaga-dev/bedolaga-cabinet:latest + container_name: cabinet_frontend + restart: unless-stopped + # Можно открыть порт для прямого доступа (для тестирования) + # ports: + # - "3000:80" + networks: + - web + +networks: + web: + driver: bridge +``` + +Затем настройте Caddy/Nginx в той же сети `web`. + ## Переменные окружения ### Build-time (используются при сборке) @@ -271,6 +337,30 @@ bedolaga-cabinet/ 2. Контейнеры находятся в одной Docker сети 3. Имя сервиса backend в прокси конфигурации правильное +**Проверка связности контейнеров:** + +```bash +# Проверить что frontend доступен из Caddy/Nginx контейнера +docker exec wget -qO- http://cabinet_frontend:80 + +# Проверить что backend доступен +docker exec wget -qO- http://backend_bot:8080/health + +# Проверить в какой сети находятся контейнеры +docker inspect cabinet_frontend | grep -A 10 Networks +docker inspect | grep -A 10 Networks +``` + +Если контейнеры в разных сетях, подключите их: + +```bash +# Подключить frontend к сети Caddy +docker network connect cabinet_frontend + +# ИЛИ подключить Caddy к сети frontend +docker network connect +``` + ### Telegram авторизация не работает 1. Проверьте `VITE_TELEGRAM_BOT_USERNAME` - должен быть без `@`