docs: update deployment examples
This commit is contained in:
@@ -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).
|
Для каталога тарифов используется `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
|
```bash
|
||||||
mkdir -p data/themes data/webapp-logo data/webapp-emoji
|
mkdir -p data/themes data/webapp-logo data/webapp-emoji
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
**/.env
|
**/.env
|
||||||
|
**/data/
|
||||||
nginx/ssl/*
|
nginx/ssl/*
|
||||||
!nginx/ssl/README.md
|
!nginx/ssl/README.md
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
Эта папка хранит только рабочие compose-примеры и конфиги. Подробное описание не дублируется здесь, чтобы сайт документации и навигация из README использовали один источник.
|
Эта папка хранит только рабочие compose-примеры и конфиги. Подробное описание не дублируется здесь, чтобы сайт документации и навигация из README использовали один источник.
|
||||||
|
|
||||||
|
Файлы приложения (`/app/data`: тарифы, темы, логотипы) монтируются из папки `data` рядом с выбранным `docker-compose.yml`. Для кастомных тем создайте `data/themes`.
|
||||||
|
|
||||||
| Папка | Документация |
|
| Папка | Документация |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `caddy` | [Развертывание с Caddy](../../docs/getting-started/deployment.md#caddy-рекомендуемый-вариант) |
|
| `caddy` | [Развертывание с Caddy](../../docs/getting-started/deployment.md#caddy-рекомендуемый-вариант) |
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *app_environment
|
<<: *app_environment
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -66,7 +66,7 @@ services:
|
|||||||
WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true}
|
WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true}
|
||||||
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12}
|
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12}
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw}
|
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw}
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
@@ -91,7 +91,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *app_environment
|
<<: *app_environment
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro
|
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
@@ -149,8 +149,6 @@ volumes:
|
|||||||
name: remnawave-minishop-db-data
|
name: remnawave-minishop-db-data
|
||||||
redis-data:
|
redis-data:
|
||||||
name: remnawave-minishop-redis-data
|
name: remnawave-minishop-redis-data
|
||||||
shop-data:
|
|
||||||
name: remnawave-minishop-shop-data
|
|
||||||
caddy-data:
|
caddy-data:
|
||||||
name: remnawave-minishop-caddy-data
|
name: remnawave-minishop-caddy-data
|
||||||
caddy-config:
|
caddy-config:
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *app_environment
|
<<: *app_environment
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -66,7 +66,7 @@ services:
|
|||||||
WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true}
|
WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true}
|
||||||
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12}
|
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12}
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw}
|
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw}
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
@@ -91,7 +91,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *app_environment
|
<<: *app_environment
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro
|
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
@@ -144,5 +144,3 @@ volumes:
|
|||||||
name: remnawave-minishop-db-data
|
name: remnawave-minishop-db-data
|
||||||
redis-data:
|
redis-data:
|
||||||
name: remnawave-minishop-redis-data
|
name: remnawave-minishop-redis-data
|
||||||
shop-data:
|
|
||||||
name: remnawave-minishop-shop-data
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *app_environment
|
<<: *app_environment
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -66,7 +66,7 @@ services:
|
|||||||
WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true}
|
WEBAPP_ENABLED: ${WEBAPP_ENABLED:-true}
|
||||||
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12}
|
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.1,::1,172.16.0.0/12}
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw}
|
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw}
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
@@ -91,7 +91,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *app_environment
|
<<: *app_environment
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro
|
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
@@ -148,5 +148,3 @@ volumes:
|
|||||||
name: remnawave-minishop-db-data
|
name: remnawave-minishop-db-data
|
||||||
redis-data:
|
redis-data:
|
||||||
name: remnawave-minishop-redis-data
|
name: remnawave-minishop-redis-data
|
||||||
shop-data:
|
|
||||||
name: remnawave-minishop-shop-data
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *app_environment
|
<<: *app_environment
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -68,7 +68,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "${WEB_SERVER_BIND:-0.0.0.0:8080}:8080"
|
- "${WEB_SERVER_BIND:-0.0.0.0:8080}:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw}
|
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw}
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
@@ -93,7 +93,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *app_environment
|
<<: *app_environment
|
||||||
volumes:
|
volumes:
|
||||||
- shop-data:/app/data
|
- ./data:/app/data
|
||||||
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro
|
- ${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:ro
|
||||||
networks:
|
networks:
|
||||||
- remnawave-shop
|
- remnawave-shop
|
||||||
@@ -132,5 +132,3 @@ volumes:
|
|||||||
name: remnawave-minishop-db-data
|
name: remnawave-minishop-db-data
|
||||||
redis-data:
|
redis-data:
|
||||||
name: remnawave-minishop-redis-data
|
name: remnawave-minishop-redis-data
|
||||||
shop-data:
|
|
||||||
name: remnawave-minishop-shop-data
|
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ WEBAPP_DEFAULT_THEME=
|
|||||||
|
|
||||||
`WEBAPP_DEFAULT_THEME` опционален. Если он задан и совпадает с ключом темы, он переопределяет `default: true` в `theme.json`. Если переменная пустая, дефолт выбирается из дескрипторов тем.
|
`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.
|
Важно: `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`
|
## Контракт `theme.json`
|
||||||
@@ -266,7 +268,7 @@ CSS можно писать для пользовательской части
|
|||||||
|
|
||||||
2. Создайте папку в `WEBAPP_THEMES_DIR`.
|
2. Создайте папку в `WEBAPP_THEMES_DIR`.
|
||||||
|
|
||||||
В Docker по умолчанию это `data/themes`. Если включен bind mount `./data:/app/data`, убедитесь, что контейнер может писать в `data`.
|
В Docker это `data/themes` рядом с выбранным `docker-compose.yml`, внутри контейнера путь будет `/app/data/themes`. Убедитесь, что контейнер может писать в `data`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir -p data/themes/neon
|
mkdir -p data/themes/neon
|
||||||
@@ -314,6 +316,8 @@ CSS можно писать для пользовательской части
|
|||||||
|
|
||||||
Начинайте с переопределения CSS-переменных на `.theme-key-neon.app-shell`, затем переходите к конкретным компонентам. Проверяйте минимум: главная, `/install`, публичная `/s/<token>`, оплата, настройки, модалки, админский дашборд, таблица пользователей, редактор тарифов.
|
Начинайте с переопределения CSS-переменных на `.theme-key-neon.app-shell`, затем переходите к конкретным компонентам. Проверяйте минимум: главная, `/install`, публичная `/s/<token>`, оплата, настройки, модалки, админский дашборд, таблица пользователей, редактор тарифов.
|
||||||
|
|
||||||
|
После ручного изменения CSS поднимите `assets_version` в `theme.json` или сделайте жесткую перезагрузку страницы: тема подключается с `?v=<assets_version>`, и браузер может держать старую версию.
|
||||||
|
|
||||||
9. Добавьте ассеты при необходимости.
|
9. Добавьте ассеты при необходимости.
|
||||||
|
|
||||||
Положите картинки в подпапку темы и ссылайтесь на них через `/webapp-theme-assets/<key>/...`. Не используйте относительные пути вроде `url("icons/x.png")`, если CSS может быть подключен с другого URL-уровня; явный `/webapp-theme-assets/neon/icons/x.png` надежнее.
|
Положите картинки в подпапку темы и ссылайтесь на них через `/webapp-theme-assets/<key>/...`. Не используйте относительные пути вроде `url("icons/x.png")`, если CSS может быть подключен с другого URL-уровня; явный `/webapp-theme-assets/neon/icons/x.png` надежнее.
|
||||||
@@ -357,6 +361,7 @@ CSS можно писать для пользовательской части
|
|||||||
Если CSS не применился:
|
Если CSS не применился:
|
||||||
|
|
||||||
- проверьте `css_file` и URL `/webapp-theme-css/<key>/<css_file>`;
|
- проверьте `css_file` и URL `/webapp-theme-css/<key>/<css_file>`;
|
||||||
|
- если CSS уже был открыт в браузере, увеличьте `assets_version` в `theme.json` или очистите кеш;
|
||||||
- убедитесь, что файл меньше 512 KiB;
|
- убедитесь, что файл меньше 512 KiB;
|
||||||
- начинайте селекторы с `.theme-key-<key>`;
|
- начинайте селекторы с `.theme-key-<key>`;
|
||||||
- откройте `/home?theme_preview=<key>` в новом окне, чтобы исключить сохраненный старый выбор.
|
- откройте `/home?theme_preview=<key>` в новом окне, чтобы исключить сохраненный старый выбор.
|
||||||
|
|||||||
@@ -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
|
```bash
|
||||||
mkdir -p data/themes data/webapp-logo data/webapp-emoji data/tariffs
|
mkdir -p data/themes data/webapp-logo data/webapp-emoji data/tariffs
|
||||||
|
|||||||
@@ -331,14 +331,12 @@ distributed lock; код подготовлен к нескольким репл
|
|||||||
|
|
||||||
- `postgres-data`;
|
- `postgres-data`;
|
||||||
- `redis-data`;
|
- `redis-data`;
|
||||||
- `shop-data`;
|
|
||||||
В Caddy-варианте также используются `caddy-data` и `caddy-config`.
|
В Caddy-варианте также используются `caddy-data` и `caddy-config`.
|
||||||
|
|
||||||
`shop-data` монтируется целиком в `/app/data`; внутри него лежат тарифы, темы, логотипы и прочие
|
Файлы приложения монтируются из локальной папки `./data` рядом с выбранным `docker-compose.yml` в
|
||||||
файловые данные приложения.
|
`/app/data`; внутри нее лежат тарифы, темы, логотипы и прочие файловые данные приложения.
|
||||||
|
|
||||||
Если вместо именованного volume включаете bind mount `./data:/app/data`, на сервере заранее дайте права
|
Перед первым запуском на сервере заранее дайте права пользователю контейнера `10001`:
|
||||||
пользователю контейнера `10001`:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir -p data/themes data/webapp-logo data/webapp-emoji data/tariffs
|
mkdir -p data/themes data/webapp-logo data/webapp-emoji data/tariffs
|
||||||
|
|||||||
Reference in New Issue
Block a user