From 3186be1e3e760262b024770ce1e6b5773ed564f6 Mon Sep 17 00:00:00 2001 From: 3252a8 <3252a8@proton.me> Date: Fri, 29 May 2026 15:33:09 +0300 Subject: [PATCH] docs: update deployment examples --- README.md | 2 +- deploy/examples/.gitignore | 1 + deploy/examples/README.md | 2 ++ deploy/examples/caddy/docker-compose.yml | 8 +++----- deploy/examples/newt/docker-compose.yml | 8 +++----- deploy/examples/nginx/docker-compose.yml | 8 +++----- deploy/examples/no-proxy/docker-compose.yml | 8 +++----- docs/features/webapp-themes.md | 7 ++++++- docs/getting-started/configuration.md | 4 ++-- docs/getting-started/deployment.md | 8 +++----- 10 files changed, 27 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 6a96d9a..a016e92 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ docker compose logs -f backend worker frontend Для каталога тарифов используется `TARIFFS_CONFIG_PATH` со значением по умолчанию `data/tariffs.json`. Пример формата лежит в [data/tariffs.example.json](data/tariffs.example.json), подробности - в [docs/features/tariffs.md](docs/features/tariffs.md). -Если в Docker Compose включаете bind mount `./data:/app/data`, заранее создайте каталог и отдайте его пользователю контейнера. Это нужно для сохранения `data/tariffs.json`, каталога тем `data/themes`, кеша логотипа Web App и animated emoji: +В compose-примерах `/app/data` монтируется из папки `./data` рядом с `docker-compose.yml`. Заранее создайте каталог и отдайте его пользователю контейнера. Это нужно для сохранения `data/tariffs.json`, каталога тем `data/themes`, кеша логотипа Web App и animated emoji: ```bash mkdir -p data/themes data/webapp-logo data/webapp-emoji diff --git a/deploy/examples/.gitignore b/deploy/examples/.gitignore index 7da0c9c..79c8e4a 100644 --- a/deploy/examples/.gitignore +++ b/deploy/examples/.gitignore @@ -1,4 +1,5 @@ **/.env +**/data/ nginx/ssl/* !nginx/ssl/README.md diff --git a/deploy/examples/README.md b/deploy/examples/README.md index 0ad8ca8..e3717fb 100644 --- a/deploy/examples/README.md +++ b/deploy/examples/README.md @@ -4,6 +4,8 @@ Эта папка хранит только рабочие compose-примеры и конфиги. Подробное описание не дублируется здесь, чтобы сайт документации и навигация из README использовали один источник. +Файлы приложения (`/app/data`: тарифы, темы, логотипы) монтируются из папки `data` рядом с выбранным `docker-compose.yml`. Для кастомных тем создайте `data/themes`. + | Папка | Документация | | --- | --- | | `caddy` | [Развертывание с Caddy](../../docs/getting-started/deployment.md#caddy-рекомендуемый-вариант) | diff --git a/deploy/examples/caddy/docker-compose.yml b/deploy/examples/caddy/docker-compose.yml index 711fea6..6321b0f 100644 --- a/deploy/examples/caddy/docker-compose.yml +++ b/deploy/examples/caddy/docker-compose.yml @@ -48,7 +48,7 @@ services: environment: <<: *app_environment volumes: - - shop-data:/app/data + - ./data:/app/data networks: - remnawave-shop depends_on: @@ -66,7 +66,7 @@ services: WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true} TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12} volumes: - - shop-data:/app/data + - ./data:/app/data - ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw} networks: - remnawave-shop @@ -91,7 +91,7 @@ services: environment: <<: *app_environment volumes: - - shop-data:/app/data + - ./data:/app/data - ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro networks: - remnawave-shop @@ -149,8 +149,6 @@ volumes: name: remnawave-minishop-db-data redis-data: name: remnawave-minishop-redis-data - shop-data: - name: remnawave-minishop-shop-data caddy-data: name: remnawave-minishop-caddy-data caddy-config: diff --git a/deploy/examples/newt/docker-compose.yml b/deploy/examples/newt/docker-compose.yml index 237d6ed..ad7c3d5 100644 --- a/deploy/examples/newt/docker-compose.yml +++ b/deploy/examples/newt/docker-compose.yml @@ -48,7 +48,7 @@ services: environment: <<: *app_environment volumes: - - shop-data:/app/data + - ./data:/app/data networks: - remnawave-shop depends_on: @@ -66,7 +66,7 @@ services: WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true} TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12} volumes: - - shop-data:/app/data + - ./data:/app/data - ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw} networks: - remnawave-shop @@ -91,7 +91,7 @@ services: environment: <<: *app_environment volumes: - - shop-data:/app/data + - ./data:/app/data - ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro networks: - remnawave-shop @@ -144,5 +144,3 @@ volumes: name: remnawave-minishop-db-data redis-data: name: remnawave-minishop-redis-data - shop-data: - name: remnawave-minishop-shop-data diff --git a/deploy/examples/nginx/docker-compose.yml b/deploy/examples/nginx/docker-compose.yml index 51c95fe..5a9f1d1 100644 --- a/deploy/examples/nginx/docker-compose.yml +++ b/deploy/examples/nginx/docker-compose.yml @@ -48,7 +48,7 @@ services: environment: <<: *app_environment volumes: - - shop-data:/app/data + - ./data:/app/data networks: - remnawave-shop depends_on: @@ -66,7 +66,7 @@ services: WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true} TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12} volumes: - - shop-data:/app/data + - ./data:/app/data - ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw} networks: - remnawave-shop @@ -91,7 +91,7 @@ services: environment: <<: *app_environment volumes: - - shop-data:/app/data + - ./data:/app/data - ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro networks: - remnawave-shop @@ -148,5 +148,3 @@ volumes: name: remnawave-minishop-db-data redis-data: name: remnawave-minishop-redis-data - shop-data: - name: remnawave-minishop-shop-data diff --git a/deploy/examples/no-proxy/docker-compose.yml b/deploy/examples/no-proxy/docker-compose.yml index e1847ab..3b27c1a 100644 --- a/deploy/examples/no-proxy/docker-compose.yml +++ b/deploy/examples/no-proxy/docker-compose.yml @@ -48,7 +48,7 @@ services: environment: <<: *app_environment volumes: - - shop-data:/app/data + - ./data:/app/data networks: - remnawave-shop depends_on: @@ -68,7 +68,7 @@ services: ports: - "${WEB_SERVER_BIND:-0.0.0.0:8080}:8080" volumes: - - shop-data:/app/data + - ./data:/app/data - ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw} networks: - remnawave-shop @@ -93,7 +93,7 @@ services: environment: <<: *app_environment volumes: - - shop-data:/app/data + - ./data:/app/data - ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro networks: - remnawave-shop @@ -132,5 +132,3 @@ volumes: name: remnawave-minishop-db-data redis-data: name: remnawave-minishop-redis-data - shop-data: - name: remnawave-minishop-shop-data diff --git a/docs/features/webapp-themes.md b/docs/features/webapp-themes.md index cc3cd57..4ee81c9 100644 --- a/docs/features/webapp-themes.md +++ b/docs/features/webapp-themes.md @@ -49,6 +49,8 @@ WEBAPP_DEFAULT_THEME= `WEBAPP_DEFAULT_THEME` опционален. Если он задан и совпадает с ключом темы, он переопределяет `default: true` в `theme.json`. Если переменная пустая, дефолт выбирается из дескрипторов тем. +В compose-примерах `data/themes` - это локальная папка рядом с выбранным `docker-compose.yml`; она монтируется в контейнер как `/app/data/themes`. Правки в `backend/bot/app/web/themes` попадают в прод только при сборке собственного образа; опубликованный образ их не видит. + Важно: `WEBAPP_PRIMARY_COLOR`, `WEBAPP_LOGO_URL`, `WEBAPP_LOGO_USE_EMOJI`, `WEBAPP_LOGO_EMOJI` и `WEBAPP_LOGO_EMOJI_FONT` больше не являются рабочим способом первичной настройки через `.env`. Эти значения редактируются в админке и сохраняются как overrides в базе. Тема при этом может использовать сохраненный primary color как fallback accent. ## Контракт `theme.json` @@ -266,7 +268,7 @@ CSS можно писать для пользовательской части 2. Создайте папку в `WEBAPP_THEMES_DIR`. - В Docker по умолчанию это `data/themes`. Если включен bind mount `./data:/app/data`, убедитесь, что контейнер может писать в `data`. + В Docker это `data/themes` рядом с выбранным `docker-compose.yml`, внутри контейнера путь будет `/app/data/themes`. Убедитесь, что контейнер может писать в `data`. ```bash mkdir -p data/themes/neon @@ -314,6 +316,8 @@ CSS можно писать для пользовательской части Начинайте с переопределения CSS-переменных на `.theme-key-neon.app-shell`, затем переходите к конкретным компонентам. Проверяйте минимум: главная, `/install`, публичная `/s/`, оплата, настройки, модалки, админский дашборд, таблица пользователей, редактор тарифов. + После ручного изменения CSS поднимите `assets_version` в `theme.json` или сделайте жесткую перезагрузку страницы: тема подключается с `?v=`, и браузер может держать старую версию. + 9. Добавьте ассеты при необходимости. Положите картинки в подпапку темы и ссылайтесь на них через `/webapp-theme-assets//...`. Не используйте относительные пути вроде `url("icons/x.png")`, если CSS может быть подключен с другого URL-уровня; явный `/webapp-theme-assets/neon/icons/x.png` надежнее. @@ -357,6 +361,7 @@ CSS можно писать для пользовательской части Если CSS не применился: - проверьте `css_file` и URL `/webapp-theme-css//`; +- если CSS уже был открыт в браузере, увеличьте `assets_version` в `theme.json` или очистите кеш; - убедитесь, что файл меньше 512 KiB; - начинайте селекторы с `.theme-key-`; - откройте `/home?theme_preview=` в новом окне, чтобы исключить сохраненный старый выбор. diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index a660c67..7d9280a 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -82,9 +82,9 @@ openssl rand -hex 32 ## Файловые данные -В штатном `docker-compose.yml` данные хранятся в named volume `shop-data`. Внутри него лежат тарифы, темы, логотипы и прочие файловые данные приложения. +В compose-примерах данные монтируются из локальной папки `./data` рядом с выбранным `docker-compose.yml`. Внутри нее лежат тарифы, темы, логотипы и прочие файловые данные приложения. -Если для локальной разработки включаете bind mount `./data:/app/data`, заранее создайте каталоги и отдайте их пользователю контейнера: +Перед первым запуском создайте каталоги и отдайте их пользователю контейнера: ```bash mkdir -p data/themes data/webapp-logo data/webapp-emoji data/tariffs diff --git a/docs/getting-started/deployment.md b/docs/getting-started/deployment.md index a8951c2..7d55e61 100644 --- a/docs/getting-started/deployment.md +++ b/docs/getting-started/deployment.md @@ -331,14 +331,12 @@ distributed lock; код подготовлен к нескольким репл - `postgres-data`; - `redis-data`; -- `shop-data`; В Caddy-варианте также используются `caddy-data` и `caddy-config`. -`shop-data` монтируется целиком в `/app/data`; внутри него лежат тарифы, темы, логотипы и прочие -файловые данные приложения. +Файлы приложения монтируются из локальной папки `./data` рядом с выбранным `docker-compose.yml` в +`/app/data`; внутри нее лежат тарифы, темы, логотипы и прочие файловые данные приложения. -Если вместо именованного volume включаете bind mount `./data:/app/data`, на сервере заранее дайте права -пользователю контейнера `10001`: +Перед первым запуском на сервере заранее дайте права пользователю контейнера `10001`: ```bash mkdir -p data/themes data/webapp-logo data/webapp-emoji data/tariffs