> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/telegram-app/ustanovka-i-nastroika/ustanovka-prilozheniya/shag-1-nastroika-fastpanel.md).

# Шаг 1: Настройка FastPanel

На этом этапе вы выполните установку и настройку Telegram Mini App на вашем сервере через панель управления FastPanel. Точное соблюдение каждого шага обеспечит корректную интеграцию, надёжную работу и безопасность вашего приложения.

## Создание домена в панели FastPanel

В этом разделе вы узнаете, как правильно создать и настроить домен для вашего Telegram Mini App в панели управления FastPanel. Строгое следование каждому шагу обеспечит стабильную работу и правильную интеграцию приложения. Пожалуйста, выполняйте инструкцию внимательно и по порядку.

### Шаг 1. Авторизация в FastPanel <a href="#shag-1.-avtorizaciya-v-fastpanel" id="shag-1.-avtorizaciya-v-fastpanel"></a>

<figure><img src="https://docs.iexexchanger.com/~gitbook/image?url=https%3A%2F%2F1156649716-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FYuqSN6CIJoIeh8EPb0uE%252Fuploads%252Fux64QRL6hRbtXzO0Y3Za%252Fimage.png%3Falt%3Dmedia%26token%3Db2f62e65-fcda-40c8-9449-63d0ba28da6e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=aad795e&#x26;sv=2" alt="" width="563"><figcaption></figcaption></figure>

* Перейдите в панель управления **FastPanel** по адресу, предоставленному вашим хостингом (обычно выглядит так: **<https://ip\\_адрес:8888>** или аналогично).
* Введите свой логин и пароль и нажмите кнопку **«Войти»**.

### Шаг 2. Создание домена для Telegram Mini App

<figure><img src="https://docs.iexexchanger.com/~gitbook/image?url=https%3A%2F%2F1156649716-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FYuqSN6CIJoIeh8EPb0uE%252Fuploads%252F4h1sxfVi4He4HUa5Plry%252Fimage.png%3Falt%3Dmedia%26token%3Da452a860-1c13-4ecf-b656-bb20e40e7110&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=970697c6&#x26;sv=2" alt="" width="563"><figcaption></figcaption></figure>

1. В меню слева выберите раздел **«Сайты»**.
2. На странице сайтов нажмите кнопку **«Создать сайт»**.
3. В открывшемся окне выберите вариант **«Создать сайт вручную»** (подходит для большинства сайтов).

   <figure><img src="https://docs.iexexchanger.com/~gitbook/image?url=https%3A%2F%2F1156649716-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FYuqSN6CIJoIeh8EPb0uE%252Fuploads%252F8P1OlQ6H8cZ5uHrm8xLC%252Fimage.png%3Falt%3Dmedia%26token%3Dbb3c2875-c1f7-4ccf-a1de-587b34cedbfb&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=46bd1dc0&#x26;sv=2" alt="" width="563"><figcaption></figcaption></figure>
4. В открывшейся форме укажите следующие данные:

   * В поле **«Какой домен подключаем?»** введите адрес поддомена для вашего Telegram Mini App (например, tg.yourdomain.com или telegram.yourdomain.com).
   * В поле **«К какому IP-адресу?»** убедитесь, что указан корректный IP-адрес вашего сервера.
   * В поле **«DNS аккаунт»** оставьте значение по умолчанию (обычно указан ваш провайдер, например, FASTVPS).

   После заполнения полей проверьте правильность введённых данных и подтвердите создание поддомена.\ <br>

   <figure><img src="/files/GkP777UIxjAGky8KT3jf" alt="" width="563"><figcaption></figcaption></figure>
5. Нажмите кнопку **«Следующий шаг»**, чтобы перейти к настройке конфигураци

### Шаг 3. Конфигурация сайта <a href="#shag-3.-konfiguraciya-saita" id="shag-3.-konfiguraciya-saita"></a>

На этапе конфигурации FastPanel автоматически предложит стандартные настройки сайта, которые подходят в большинстве случаев.

<figure><img src="https://docs.iexexchanger.com/~gitbook/image?url=https%3A%2F%2F1156649716-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FYuqSN6CIJoIeh8EPb0uE%252Fuploads%252FDUUAF8FjGX1COPRmSXXe%252Fimage.png%3Falt%3Dmedia%26token%3D8da80f3c-ef85-4860-b42d-a932ec1a2486&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=def72201&#x26;sv=2" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}

### Важно <a href="#vazhno" id="vazhno"></a>

Пока оставьте эти настройки без изменений, сохранив значения по умолчанию. На следующих шагах инструкции мы подробно рассмотрим и настроим параметры, необходимые для корректной работы Telegram Mini App.
{% endhint %}

Нажмите кнопку **«Создать сайт»** и дождитесь завершения процедуры создания.

***

## Загрузка файлов Telegram Mini App в FastPanel

После успешного создания поддомена необходимо загрузить файлы приложения Telegram Mini App.&#x20;

**Выполните следующие шаги:**

* В панели FastPanel перейдите на вкладку **«Сайты»** и выберите ваш ранее созданный поддомен (например, tg.yourdomain.com).
* Перейдите в раздел **«Файлы»**.
* В правом верхнем углу нажмите на кнопку **«Загрузить»** (значок ⬆️).
* Загрузите архив с файлами **iEXMiniApp** и распакуйте его непосредственно в текущей директории.

После выполнения загрузки и распаковки файлов вы можете перейти к следующему этапу настройки вашего Telegram Mini App.

***

## Настройка доменов и безопасности (CORS)

Для корректной работы Telegram Mini App и безопасного взаимодействия с вашим сервером (backend) важно правильно настроить параметр `CORS_ALLOWED_ORIGINS` в файле конфигурации **.env**:

**CORS Allowed Origins (CORS\_ALLOWED\_ORIGINS):**

Укажите домены и поддомены, которым разрешён доступ к API вашего backend-приложения. Обычно это ваш основной сайт, а также поддомены, используемые для Telegram Mini App.

К уже существующим доменам в файле **.env**, через запятую добавьте новый домен вашего Telegram Mini App:

```
CORS_ALLOWED_ORIGINS=https://ваш_домен,https://tg.ваш_домен
```

***

### Включение SSL-сертификатов (HTTPS) в FastPanel <a href="#vklyuchenie-ssl-sertifikatov-https-v-fastpanel" id="vklyuchenie-ssl-sertifikatov-https-v-fastpanel"></a>

Эта инструкция поможет вам быстро и правильно настроить SSL-сертификат для поддомена вашего Telegram Mini App в панели управления FastPanel. Это обеспечит безопасное и защищённое подключение пользователей к приложению через HTTPS.

### Шаг 1. Настройка SSL для основного домена <a href="#shag-1.-nastroika-ssl-dlya-osnovnogo-domena" id="shag-1.-nastroika-ssl-dlya-osnovnogo-domena"></a>

1. Войдите в панель управления FastPanel.
2. В левом меню перейдите во вкладку «Сайты» и выберите ваш поддомен (например, **tg.**<mark style="color:red;">**ваш\_домен**</mark>).
3. Найдите раздел **«SSL сертификаты»** и нажмите на него.

   <figure><img src="https://docs.iexexchanger.com/~gitbook/image?url=https%3A%2F%2F1156649716-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FYuqSN6CIJoIeh8EPb0uE%252Fuploads%252FZMbBdxnB3oW4pg1QAzwP%252Fimage.png%3Falt%3Dmedia%26token%3D5d39f4f0-b639-4a1e-bc7a-2488eba16d2d&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b31f7dc4&#x26;sv=2" alt=""><figcaption></figcaption></figure>
4. Нажмите кнопку **«Новый сертификат»** в верхнем правом углу.

   <figure><img src="https://docs.iexexchanger.com/~gitbook/image?url=https%3A%2F%2F1156649716-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FYuqSN6CIJoIeh8EPb0uE%252Fuploads%252FBvwowep3mRKDeIkjJnQn%252Fimage.png%3Falt%3Dmedia%26token%3Dff31e866-e353-45d6-9d98-fc86020bc362&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=54ed9b1b&#x26;sv=2" alt=""><figcaption></figcaption></figure>
5. В открывшемся окне выберите тип **«Самоподписанный»**.
6. Заполните форму:
   * **Email** — укажите свой почтовый адрес для получения уведомлений.
   * **Длина ключа** — выберите рекомендуемое значение **2048**.
   * **Основной домен** — автоматически указан ваш основной домен.
   * **Алиасы** — добавьте алиас для основного домена (например, `www.ваш_домен`).
   * **Срок действия** — установите рекомендуемый срок действия сертификата **365** дней.
7. Нажмите кнопку **«Сохранить»**.

***

## Настройка Nginx для Telegram Mini App (Frontend)

Эти настройки помогут обеспечить высокую производительность и правильную маршрутизацию запросов вашего Telegram Mini App, а также наладить стабильную работу frontend-компонентов с backend-сервером.

Перейдите в панель управления FastPanel → **«Сайты»** → выберите ваш поддомен Telegram Mini App (например, **tg.**<mark style="color:red;">**ваш\_домен**</mark>) → раздел **«Ручная настройка»** → вкладка **«Frontend».**

<figure><img src="/files/FfmR3ArEb8bnZXhJfGIM" alt="" width="563"><figcaption></figcaption></figure>

Выполните следующие шаги внимательно:

### **Шаг 1: Добавьте блок определения языка (map) за пределами блока server**

В самом начале конфигурационного файла (вне блока `server {}`), вставьте следующий код для настройки корректной обработки запросов вашего Telegram Mini App:

```
map $http_accept_language $accept_language {
    "~*ru" ru;
    "~*en" en;
    default ru;
}

map $cookie_lang $selected_lang {
    "~^(ru|en)$" $cookie_lang;
    default $accept_language;
}
```

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

<figure><img src="https://docs.iexexchanger.com/~gitbook/image?url=https%3A%2F%2F1156649716-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FYuqSN6CIJoIeh8EPb0uE%252Fuploads%252FUmKlayA4GlvpKEYt7YLO%252Fimage.png%3Falt%3Dmedia%26token%3D62451366-3687-4f06-a565-766d3be612f1&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=355c4789&#x26;sv=2" alt="" width="563"><figcaption></figcaption></figure>

### **Шаг 2: Добавьте проверку языка и перенаправление внутри блока server**

Найдите строку: `disable_symlinks if_not_owner from=$root_path;`

**Сразу после неё добавьте:**

Copy

```
add_header Vary "Accept-Language, Cookie";
```

Эти строки направляют пользователя на соответствующую языковую версию сайта по умолчанию (русский язык), если язык браузера не определён.

### **Шаг 3: Замените блок location / внутри блока server**

Если у вас уже есть блок `location /` внутри конфигурации nginx, его необходимо удалить и заменить новой конфигурацией, подходящей для Angular SSR (localhost:4001) и отдачи статики.

<mark style="color:red;">**Удалите старую конфигурацию:**</mark>

```
location / {
    proxy_pass http://127.0.0.1:81;
    proxy_redirect http://127.0.0.1:81/ /;
    include /etc/nginx/proxy_params;
}


 location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf|ico|7z|doc|docx|map|ogg|otf|pdf|tff|tif|txt|wav|webp|woff|woff2|xls|xlsx|xml)$ {
    try_files $uri $uri/ @fallback;
}

location @fallback {
    proxy_pass http://127.0.0.1:81;
    proxy_redirect http://127.0.0.1:81/ /;
    include /etc/nginx/proxy_params;
}
```

<mark style="color:green;">**Добавьте вместо этого:**</mark>

```
location = / {
    return 302 /$selected_lang/$is_args$args;
}

location ~ ^/(ru|en)$ {
    add_header Set-Cookie "lang=$1; Path=/; Max-Age=31536000; SameSite=Lax";
    return 302 /$1/$is_args$args;
}

location ~ ^/(ru|en)/ {
    proxy_pass http://localhost:4001;
    proxy_redirect http://localhost:4001/ /;
    include /etc/nginx/proxy_params;
    
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_buffering on;
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;
    proxy_read_timeout 60s;
    proxy_connect_timeout 10s;
    proxy_send_timeout 10s;
}

location / {
    return 302 /$selected_lang$request_uri$is_args$args;
}

location ^~ /images/ {
    alias /var/www/пользователь/data/www/app.ваш_домен/public/images/;
    expires 30d;
    add_header Cache-Control "public, max-age=2592000, immutable";
    autoindex off;
    access_log off;
}

location ^~ /exports/ {
    alias /var/www/пользователь/data/www/app.ваш_домен/public/static/exports/;
    autoindex off;
    access_log off;
}

location ^~ /static/ {
    alias /var/www/пользователь/data/www/app.ваш_домен/public/static/;
    autoindex off;
    access_log off;
}

location ^~ /storage/ {
    alias /var/www/пользователь/data/www/app.ваш_домен/public/storage/;
    expires 30d;
    add_header Cache-Control "public, max-age=2592000, immutable";
    autoindex off;
    access_log off;
}

location /apis {
    index index.php index.html index.htm;
    alias /var/www/пользователь/data/www/app.ваш_домен/public;

    # Laravel routing fallback
    try_files $uri $uri/ @apis;

    # Защита от скрытых файлов (.env, .htaccess и т.п.)
    location ~ /\.(?!well-known).* {
        deny all;
    }

    # PHP-обработка
    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass unix:/var/run/app.ваш_домен.sock;
    }
}

location @apis {
    rewrite ^/apis/(.*)$ /apis/index.php?/$1 last;
}
```

{% hint style="info" %}

### Важно! Обязательно замените все указания: <a href="#vazhno-obyazatelno-zamenite-vse-ukazaniya" id="vazhno-obyazatelno-zamenite-vse-ukazaniya"></a>

* /var/www/<mark style="color:red;">**польз**</mark>**ователь**/data/www/app.<mark style="color:red;">**ваш\_домен**</mark>
* /var/run/app.<mark style="color:red;">**ваш\_домен**</mark>.sock

Замените эти шаблонные пути на реальные директории, созданные автоматически при добавлении сайта в панели FastPanel.
{% endhint %}

[<br>](https://docs.iexexchanger.com/voprosy-i-otvety/infrastruktura/gde-naiti-put-k-proektu-i-imya-polzovatelya)


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.iexexchanger.com/telegram-app/ustanovka-i-nastroika/ustanovka-prilozheniya/shag-1-nastroika-fastpanel.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
