> ## Documentation Index
> Fetch the complete documentation index at: https://docs.remnashop.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Установка

> Краткое руководство по установке Remnashop

> [!WARNING]
>
> Перед началом ознакомьтесь со страницей [требований](https://docs.remnashop.dev/install/requirements)

***

## Установка Docker

Установите `Docker`, если он ещё не установлен.

> **Установка Docker**
>
> ```text theme={"dark"}
> sudo curl -fsSL https://get.docker.com | sh
> ```

***

## Варианты установки

Выберите способ установки в зависимости от вашей конфигурации:

**Бот и панель размещены на одном сервере**

Используйте этот способ, если бот будет работать на том же сервере, что и панель Remnawave. Бот подключается к Remnawave через внутреннюю Docker-сеть.

#### Шаг 1: Создание директории проекта

```bash Создание директории проекта theme={"dark"}
mkdir /opt/remnashop && cd /opt/remnashop
```

#### Шаг 2: Загрузка необходимых файлов

Загрузите файл `docker-compose.yml` и `.env`, выполнив следующие команды:

```bash Получение файла .env theme={"dark"}
curl -o .env https://raw.githubusercontent.com/snoups/remnashop/refs/heads/main/.env.example
```

```bash Получение файла docker-compose.yml (бот и панель на одном сервере) theme={"dark"}
curl -o docker-compose.yml https://raw.githubusercontent.com/snoups/remnashop/refs/heads/main/docker-compose.prod.internal.yml
```

#### Шаг 3: Генерация секретов

Сгенерируйте секретные ключи, выполнив следующие команды:

```bash Генерация секретных ключей theme={"dark"}
sed -i "s|^APP_CRYPT_KEY=.*|APP_CRYPT_KEY=$(openssl rand -base64 32 | tr -d '\n')|" .env && sed -i "s|^BOT_SECRET_TOKEN=.*|BOT_SECRET_TOKEN=$(openssl rand -hex 64 | tr -d '\n')|" .env
```

```bash Генерация паролей theme={"dark"}
sed -i "s|^DATABASE_PASSWORD=.*|DATABASE_PASSWORD=$(openssl rand -hex 24 | tr -d '\n')|" .env && sed -i "s|^REDIS_PASSWORD=.*|REDIS_PASSWORD=$(openssl rand -hex 24 | tr -d '\n')|" .env
```

#### Шаг 4: Настройка файла .env

> [!TIP]
>
> Дополнительную информацию о переменных окружения можно найти на странице [Переменные окружения](https://remnashop.mintlify.app/install/environment-variables).

Откройте файл `.env`:

```bash Редактирование файла .env theme={"dark"}
cd /opt/remnashop && nano .env
```

```bash Содержимое файла .env theme={"dark"}
# Домен, через который ваш бот доступен публично.
# Используется для получения вебхуков от сервисов (например, Telegram, платёжные системы).
# !!! ВНИМАНИЕ: Указывайте домен БЕЗ HTTP/HTTPS и БЕЗ завершающего слеша.
APP_DOMAIN=change_me

# Ключ шифрования для защиты конфиденциальных данных (например, платёжных токенов) в базе данных.
# !!! КРИТИЧЕСКИ ВАЖНО: Никогда не передавайте этот токен третьим лицам.
APP_CRYPT_KEY=change_me # УЖЕ ДОЛЖЕН БЫТЬ ЗАДАН В 3 ШАГЕ

# Токен Telegram Bot API. Получите его на https://t.me/BotFather/
# !!! КРИТИЧЕСКИ ВАЖНО: Никогда не передавайте этот токен третьим лицам. Он даёт полный контроль над вашим ботом.
BOT_TOKEN=change_me

# Секретный токен для верификации вебхуков. Гарантирует, что запросы вебхука поступают от Telegram.
BOT_SECRET_TOKEN=change_me # УЖЕ ДОЛЖЕН БЫТЬ ЗАДАН В 3 ШАГЕ

# Telegram ID владельца бота. Предоставляет расширенные права.
BOT_OWNER_ID=change_me

# Telegram username аккаунта поддержки, используемый для deep-link (без @).
BOT_SUPPORT_USERNAME=change_me

# Управляет поведением кнопки "подключить":
# - пусто или false  -> открывает страницу подписки в браузере
# - true             -> открывает страницу подписки в WebApp
# - URL (например, https://example.com/) -> открывает указанный URL в WebApp
BOT_MINI_APP=false

# Хост или имя Docker-сервиса для подключения к API Remnawave.
REMNAWAVE_HOST=remnawave

# API-токен для аутентификации в сервисе Remnawave.
REMNAWAVE_TOKEN=change_me

# Секретный токен для верификации входящих вебхуков от Remnawave.
# В панели Remnawave соответствует переменной WEBHOOK_SECRET_HEADER (env).
REMNAWAVE_WEBHOOK_SECRET=change_me

# Пароль от базы данных.
DATABASE_PASSWORD=change_me # УЖЕ ДОЛЖЕН БЫТЬ ЗАДАН В 3 ШАГЕ
```

> [!TIP]
>
> `REMNAWAVE_HOST=remnawave` использует имя контейнера из Docker-сети Remnawave.

> [!TIP]
>
> В переменной `REMNAWAVE_TOKEN` должен быть установлен API-токен панели. Создать токен можно в "Настройки Remnawave" → "API Токены".

> [!WARNING]
>
> `REMNAWAVE_WEBHOOK_SECRET` должен совпадать со значением `WEBHOOK_SECRET_HEADER` из `.env` панели.

> [!WARNING]
>
> Если вы используете Remnawave Reverse-Proxy от eGames, добавьте cookie для авторизации. Пример: `REMNAWAVE_COOKIE=rEmnaprx=aBCDefgh1`. Как получить cookie: [инструкция](https://wiki.egam.es/ru/troubleshooting/common-issues/#%D1%83%D1%82%D0%B5%D1%80%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9-cookie-%D0%BF%D1%83%D1%82%D0%B8-%D0%BA-%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D0%B8).

#### Шаг 5: Настройка вебхука от панели к боту

> [!CAUTION]
>
> Этот шаг критически важен для корректной работы бота.

Откройте файл `.env` панели Remnawave:

```bash Редактирование файла .env панели theme={"dark"}
cd /opt/remnawave && nano .env
```

Задайте `WEBHOOK_ENABLED=true` и установите `WEBHOOK_URL` на ваш реальный домен бота:

```bash Содержимое файла .env панели theme={"dark"}
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://bot.domain.com/api/v1/remnawave
```

> [!WARNING]
>
> Замените `bot.domain.com` на ваш реальный домен.

Найдите переменную `WEBHOOK_SECRET_HEADER` в этом же файле и скопируйте её значение:

```bash Содержимое файла .env панели theme={"dark"}
WEBHOOK_SECRET_HEADER=ey1234567890qwertyuiopasdfghjklzxcvbnm
```

> [!TIP]
>
> Значение `ey1234567890qwertyuiopasdfghjklzxcvbnm` приведено в качестве примера.

Перезапустите контейнер панели Remnawave для применения изменений:

```bash Перезапуск контейнера Remnawave theme={"dark"}
cd /opt/remnawave && docker compose up -d
```

Вернитесь к файлу `.env` бота и вставьте скопированное значение в `REMNAWAVE_WEBHOOK_SECRET`:

```bash Редактирование файла .env Remnashop theme={"dark"}
cd /opt/remnashop && nano .env
```

```bash Содержимое файла .env Remnashop theme={"dark"}
REMNAWAVE_WEBHOOK_SECRET=ey1234567890qwertyuiopasdfghjklzxcvbnm
```

> [!WARNING]
>
> `REMNAWAVE_WEBHOOK_SECRET` должен совпадать со значением `WEBHOOK_SECRET_HEADER` из файла `.env панели`.

#### Шаг 6: Запуск бота

```bash Запуск контейнеров theme={"dark"}
docker compose up -d && docker compose logs -f -t
```

> [!TIP]
>
> Если всё настроено правильно, бот отправит приветственное сообщение.

> [!CAUTION]
>
> **ВНИМАНИЕ!**
>
> Для корректной работы Remnashop необходим обратный прокси.
>
> Не открывайте сервисы в публичный интернет напрямую. Используйте только 127.0.0.1 для сервисов Remnashop.

Теперь вы можете перейти к установке обратного прокси.

> **[Установка обратного прокси](https://docs.remnashop.dev/docs/ru/reverse-proxies.md)**
>
> Установка и настройка обратного прокси

**Бот и панель размещены на разных серверах**

Используйте этот способ, если бот будет работать на другом сервере, отличном от панели Remnawave. Бот подключается к Remnawave через внешний HTTPS URL.

#### Шаг 1: Создание директории проекта

```bash Создание директории проекта theme={"dark"}
mkdir /opt/remnashop && cd /opt/remnashop
```

#### Шаг 2: Загрузка необходимых файлов

Загрузите файл `docker-compose.yml` и `.env`, выполнив следующие команды:

```bash Получение файла .env theme={"dark"}
curl -o .env https://raw.githubusercontent.com/snoups/remnashop/refs/heads/main/.env.example
```

```bash Получение файла docker-compose.yml (бот и панель на разных серверах) theme={"dark"}
curl -o docker-compose.yml https://raw.githubusercontent.com/snoups/remnashop/refs/heads/main/docker-compose.prod.external.yml
```

#### Шаг 3: Генерация секретов

Сгенерируйте секретные ключи, выполнив следующие команды:

```bash Генерация секретных ключей theme={"dark"}
sed -i "s|^APP_CRYPT_KEY=.*|APP_CRYPT_KEY=$(openssl rand -base64 32 | tr -d '\n')|" .env && sed -i "s|^BOT_SECRET_TOKEN=.*|BOT_SECRET_TOKEN=$(openssl rand -hex 64 | tr -d '\n')|" .env
```

```bash Генерация паролей theme={"dark"}
sed -i "s|^DATABASE_PASSWORD=.*|DATABASE_PASSWORD=$(openssl rand -hex 24 | tr -d '\n')|" .env && sed -i "s|^REDIS_PASSWORD=.*|REDIS_PASSWORD=$(openssl rand -hex 24 | tr -d '\n')|" .env
```

#### Шаг 4: Настройка файла .env

> [!TIP]
>
> Дополнительную информацию о переменных окружения можно найти на странице [Переменные окружения](https://remnashop.mintlify.app/install/environment-variables).

Откройте файл `.env`:

```bash Редактирование файла .env theme={"dark"}
cd /opt/remnashop && nano .env
```

```bash Содержимое файла .env theme={"dark"}
# Домен, через который ваш бот доступен публично.
# Используется для получения вебхуков от сервисов (например, Telegram, платёжные системы).
# !!! ВНИМАНИЕ: Указывайте домен БЕЗ HTTP/HTTPS и БЕЗ завершающего слеша.
APP_DOMAIN=change_me

# Ключ шифрования для защиты конфиденциальных данных (например, платёжных токенов) в базе данных.
# !!! КРИТИЧЕСКИ ВАЖНО: Никогда не передавайте этот токен третьим лицам.
APP_CRYPT_KEY=change_me # УЖЕ ДОЛЖЕН БЫТЬ ЗАДАН В 3 ШАГЕ

# Токен Telegram Bot API. Получите его на https://t.me/BotFather/
# !!! КРИТИЧЕСКИ ВАЖНО: Никогда не передавайте этот токен третьим лицам. Он даёт полный контроль над вашим ботом.
BOT_TOKEN=change_me

# Секретный токен для верификации вебхуков. Гарантирует, что запросы вебхука поступают от Telegram.
BOT_SECRET_TOKEN=change_me # УЖЕ ДОЛЖЕН БЫТЬ ЗАДАН В 3 ШАГЕ

# Telegram ID владельца бота. Предоставляет расширенные права.
BOT_OWNER_ID=change_me

# Telegram username аккаунта поддержки, используемый для deep-link (без @).
BOT_SUPPORT_USERNAME=change_me

# Управляет поведением кнопки "подключить":
# - пусто или false  -> открывает страницу подписки в браузере
# - true             -> открывает страницу подписки в WebApp
# - URL (например, https://example.com/) -> открывает указанный URL в WebApp
BOT_MINI_APP=false

# Хост или домен панели Remnawave для подключения через внешний HTTPS.
# !!! Укажите домен БЕЗ HTTP/HTTPS и БЕЗ завершающего слеша.
REMNAWAVE_HOST=panel.domain.com

# API-токен для аутентификации в сервисе Remnawave.
REMNAWAVE_TOKEN=change_me

# Секретный токен для верификации входящих вебхуков от Remnawave.
# В панели Remnawave соответствует переменной WEBHOOK_SECRET_HEADER (env).
REMNAWAVE_WEBHOOK_SECRET=change_me

# Пароль от базы данных.
DATABASE_PASSWORD=change_me # УЖЕ ДОЛЖЕН БЫТЬ ЗАДАН В 3 ШАГЕ
```

> [!TIP]
>
> В переменной `REMNAWAVE_HOST` укажите домен вашей панели Remnawave. Пример: `REMNAWAVE_HOST=panel.domain.com`

> [!TIP]
>
> В переменной `REMNAWAVE_TOKEN` должен быть установлен API-токен панели. Создать токен можно в "Настройки Remnawave" → "API Токены".

> [!WARNING]
>
> `REMNAWAVE_WEBHOOK_SECRET` должен совпадать со значением `WEBHOOK_SECRET_HEADER` из `.env` панели.

> [!WARNING]
>
> Если вы используете Remnawave Reverse-Proxy от eGames, добавьте cookie для авторизации. Пример: `REMNAWAVE_COOKIE=rEmnaprx=aBCDefgh1`. Как получить cookie: [инструкция](https://wiki.egam.es/ru/troubleshooting/common-issues/#%D1%83%D1%82%D0%B5%D1%80%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9-cookie-%D0%BF%D1%83%D1%82%D0%B8-%D0%BA-%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D0%B8).

#### Шаг 5: Настройка вебхука от панели к боту

> [!CAUTION]
>
> Этот шаг критически важен для корректной работы бота.

Откройте файл `.env` панели Remnawave:

```bash Редактирование файла .env панели theme={"dark"}
cd /opt/remnawave && nano .env
```

Задайте `WEBHOOK_ENABLED=true` и установите `WEBHOOK_URL` на ваш реальный домен бота:

```bash Содержимое файла .env панели theme={"dark"}
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://bot.domain.com/api/v1/remnawave
```

> [!WARNING]
>
> Замените `bot.domain.com` на ваш реальный домен.

Найдите переменную `WEBHOOK_SECRET_HEADER` в этом же файле и скопируйте её значение:

```bash Содержимое файла .env панели theme={"dark"}
WEBHOOK_SECRET_HEADER=ey1234567890qwertyuiopasdfghjklzxcvbnm
```

> [!TIP]
>
> Значение `ey1234567890qwertyuiopasdfghjklzxcvbnm` приведено в качестве примера.

Перезапустите контейнер панели Remnawave для применения изменений:

```bash Перезапуск контейнера Remnawave theme={"dark"}
cd /opt/remnawave && docker compose up -d
```

Вернитесь к файлу `.env` бота и вставьте скопированное значение в `REMNAWAVE_WEBHOOK_SECRET`:

```bash Редактирование файла .env Remnashop theme={"dark"}
cd /opt/remnashop && nano .env
```

```bash Содержимое файла .env Remnashop theme={"dark"}
REMNAWAVE_WEBHOOK_SECRET=ey1234567890qwertyuiopasdfghjklzxcvbnm
```

> [!WARNING]
>
> `REMNAWAVE_WEBHOOK_SECRET` должен совпадать со значением `WEBHOOK_SECRET_HEADER` из файла `.env панели`.

#### Шаг 6: Запуск бота

```bash Запуск контейнеров theme={"dark"}
docker compose up -d && docker compose logs -f -t
```

> [!TIP]
>
> Если всё настроено правильно, бот отправит приветственное сообщение.

> [!CAUTION]
>
> **ВНИМАНИЕ!**
>
> Для корректной работы Remnashop необходим обратный прокси.
>
> Не открывайте сервисы в публичный интернет напрямую. Используйте только 127.0.0.1 для сервисов Remnashop.

Теперь вы можете перейти к установке обратного прокси.

> **[Установка обратного прокси](https://docs.remnashop.dev/docs/ru/reverse-proxies.md)**
>
> Установка и настройка обратного прокси


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.