> For the complete documentation index, see [llms.txt](https://vitrina-blogerov.gitbook.io/bloggers-showcase/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vitrina-blogerov.gitbook.io/bloggers-showcase/arkhitektura/peremennye-okruzheniya.md).

# Переменные окружения

Переменные окружения хранят базовую конфигурацию языковой версии: домен, язык, путь публикации, подключение к базе, секреты и токен Telegram-бота.

{% hint style="warning" %}
Файл `.env` содержит секреты. Его нельзя публиковать, отправлять в чат, добавлять в публичный репозиторий или прикладывать к тикетам без очистки.
{% endhint %}

### Где находится `.env`

У каждой языковой версии свой файл:

```
/opt/bloggers_platform/apps/ru/.env
/opt/bloggers_platform/apps/en/.env
/opt/bloggers_platform/apps/zh/.env
/opt/bloggers_platform/apps/ar/.env
```

### Главные переменные

| Переменная           | Назначение                                      |
| -------------------- | ----------------------------------------------- |
| `DOMAIN`             | Домен платформы.                                |
| `APP_LANGUAGE`       | Код языковой версии.                            |
| `PROJECT_NAME`       | Имя Docker Compose проекта.                     |
| `PUBLIC_BASE_PATH`   | Публичный путь версии, например `/bloggers/ru`. |
| `DATABASE_URL`       | Подключение backend и bot к PostgreSQL.         |
| `SECRET_KEY`         | Секрет JWT.                                     |
| `TELEGRAM_BOT_TOKEN` | Токен Telegram-бота.                            |
| `DB_USER`            | Пользователь PostgreSQL.                        |
| `DB_PASSWORD`        | Пароль PostgreSQL.                              |
| `DB_NAME`            | Имя базы данных.                                |

### Как переменные используются

```mermaid
flowchart TB
    ENV[".env"] --> Backend["backend"]
    ENV --> Bot["bot"]
    ENV --> DB["db"]
    Backend --> A["JWT, API, mini app URL"]
    Bot --> B["Telegram token, public URL"]
    DB --> C["PostgreSQL user/password/db"]
```

### Что можно менять через админку

{% tabs %}
{% tab title="Telegram bot token" %}
Токен можно менять через web-админку. Перед сохранением backend проверяет, что Telegram принимает новый токен и может настроить mini app button.
{% endtab %}

{% tab title="JWT lifetime" %}
Время жизни админ-сессии можно менять через настройки.
{% endtab %}

{% tab title="Channel ID" %}
ID Telegram-канала задается для публикаций в канал.
{% endtab %}
{% endtabs %}

### Что лучше не менять вручную

<details>

<summary>`DATABASE_URL`, `DB_USER`, `DB_PASSWORD`, `DB_NAME`</summary>

Эти значения связаны с PostgreSQL-контейнером. Ошибка в них приведет к тому, что backend и bot не смогут подключиться к базе.

</details>

<details>

<summary>`SECRET_KEY`</summary>

Этот ключ используется для JWT-токенов админки. При смене ключа старые сессии станут недействительными.

</details>

<details>

<summary>`PUBLIC_BASE_PATH`</summary>

Этот путь должен совпадать с маршрутом Caddy и URL mini app. Если изменить его вручную, можно сломать ссылки, assets и кнопку Telegram.

</details>

### Пример

```env
DOMAIN=example.com
APP_LANGUAGE=ru
PROJECT_NAME=bloggers_ru
PUBLIC_BASE_PATH=/bloggers/ru
DEBUG=False
ENABLE_DOCS=False
DATABASE_URL=postgresql+asyncpg://blogger_admin:password@db:5432/bloggers_db
SECRET_KEY=random_secret
TELEGRAM_BOT_TOKEN=123456:ABCDEF
BOT_PROXY=
DB_USER=blogger_admin
DB_PASSWORD=password
DB_NAME=bloggers_db
```

{% hint style="info" %}
После изменения `.env` вручную обычно нужен перезапуск сервисов соответствующей языковой версии.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://vitrina-blogerov.gitbook.io/bloggers-showcase/arkhitektura/peremennye-okruzheniya.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
