# Деплой ## Docker Образ собирается из репозитория. Внутри контейнера приложение слушает порт **8080** и ожидает, что каталог данных смонтирован в `/map` (база и изображения гридов). Пример запуска: ```bash docker run -v /srv/hnh-map:/map -p 80:8080 andyleap/hnh-auto-mapper:v-4 ``` Или с переменными: ```bash docker run -v /srv/hnh-map:/map -p 8080:8080 \ -e HNHMAP_PORT=8080 \ -e HNHMAP_BOOTSTRAP_PASSWORD=your-secure-password \ andyleap/hnh-auto-mapper:v-4 ``` Рекомендуется после первой настройки убрать или не передавать `HNHMAP_BOOTSTRAP_PASSWORD`. ## OAuth (Google) Для входа через Google OAuth: 1. Создайте проект в [Google Cloud Console](https://console.cloud.google.com/). 2. Включите «Google+ API» / «Google Identity» и создайте OAuth 2.0 Client ID (тип «Web application»). 3. В настройках клиента добавьте Authorized redirect URI: `https://your-domain.com/map/api/oauth/google/callback` (замените на ваш домен). 4. Задайте переменные окружения: - `HNHMAP_OAUTH_GOOGLE_CLIENT_ID` — Client ID - `HNHMAP_OAUTH_GOOGLE_CLIENT_SECRET` — Client Secret - `HNHMAP_BASE_URL` — полный URL приложения (например `https://map.example.com`) для формирования redirect_uri. Если не задан, берётся из `Host` и `X-Forwarded-*` заголовков. ## Reverse proxy Разместите сервис за nginx, Traefik, Caddy и т.п. на нужном домене. Проксируйте весь трафик на порт 8080 контейнера (или тот порт, на котором слушает приложение). Приложение отдаёт SPA по корню `/` (/, /login, /profile, /admin и т.д.), API — по `/map/api/`, SSE — `/map/updates`, тайлы — `/map/grids/`. ## Обновление и бэкапы - При обновлении образа сохраняйте volume с `/map`: в нём лежат `grids.db` и каталоги с тайлами. - Регулярно делайте бэкапы каталога данных (и при необходимости экспорт через админку «Export»).