> 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/learn/server-domeny-i-infrastruktura/overview/installation-and-access/sites-and-users.md).

# Сайты и пользователи FASTPANEL

iEXExchanger состоит как минимум из клиентского сайта и серверной части. Создавайте их как отдельные сайты FASTPANEL с разными системными владельцами. Это отделяет файлы и процессы и не даёт клиентскому приложению изменять серверную часть.

## План сайтов

| Сайт       | Домен           | Тип работы                               |
| ---------- | --------------- | ---------------------------------------- |
| Клиентский | `ваш_домен`     | Node.js SSR за Nginx и статические файлы |
| Серверный  | `app.ваш_домен` | PHP-приложение с публичным каталогом     |

Технический домен самой FASTPANEL создаётся отдельно и не используется как домен iEXExchanger.

## Создание серверного сайта

1. В FASTPANEL нажмите **«Создать сайт»** (Create site).
2. Укажите `app.ваш_домен` без протокола и пути.
3. Создайте отдельного владельца сайта.
4. Выберите PHP как backend.
5. Не создавайте MySQL, если проект использует PostgreSQL.
6. Завершите мастер и сохраните выданные данные в менеджер секретов.
7. В настройках сайта выберите требуемую проектом версию PHP.
8. Укажите публичный каталог приложения как document root.
9. Выпустите сертификат после готовности DNS.

FASTPANEL рекомендует отдельного пользователя для каждого сайта; типы backend и шаги мастера описаны в [официальной инструкции](https://kb.fastpanel.direct/sites/how-to-create-a-website/).

Пошаговый вариант интерфейса на сервере Timeweb Cloud находится в статье [«Размещение сайта на сервере с Fastpanel»](https://timeweb.cloud/docs/control-panels/fastpanel/site-hosting-in-fastpanel). Используйте её для навигации по панели, но сохраняйте описанное выше разделение клиентского и серверного сайтов iEXExchanger.

## Создание клиентского сайта

1. Создайте второй сайт для `ваш_домен` с другим владельцем.
2. Не подключайте его к базе серверной части.
3. Разместите собранные статические файлы в каталоге клиента.
4. Запустите SSR-процесс от владельца клиентского сайта через PM2.
5. Настройте Nginx для передачи динамических запросов во внутренний SSR-процесс.
6. Добавьте только подтверждённые прокси-пути к серверной части.
7. Проверьте статические файлы, главную страницу и страницу заявки.

Внутренний порт SSR слушает loopback-интерфейс и не открывается в сетевом экране. Публичный запрос принимает Nginx по HTTPS.

## Владелец и права файлов

Команды приложения выполняйте от владельца соответствующего сайта. Перед выполнением проверьте пользователя и каталог:

```bash
whoami
pwd
```

Composer, Artisan, npm и PM2 нельзя запускать от root в каталоге сайта. Иначе появляются файлы с неправильным владельцем, а последующее обновление завершается ошибками доступа.

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

## Доступ подрядчика

В карточке сайта откройте **«Доступ к управлению»** (Access to management), укажите email подрядчика и разрешите только нужные области: файлы, база, планировщик или FTP. Не выдавайте ему главную учётную запись FASTPANEL.

По окончании работ удалите дополнительный доступ, SSH-ключ и временные токены. Официальный порядок ограниченного доступа описан в [справке FASTPANEL](https://kb.fastpanel.direct/sites/how-to-grant-access-for-a-developer-to-one-site/).

## Проверка разделения

1. Владелец клиентского сайта не может читать файл окружения серверной части.
2. Владелец серверного сайта не управляет PM2 другого пользователя без административного действия.
3. Web-процесс пишет только в предусмотренные каталоги приложения.
4. Оба домена имеют отдельные корректные настройки и журналы.
5. Удаление тестового сайта не затрагивает рабочую базу или каталог.

Не связывайте рабочую базу с временным сайтом в FASTPANEL: при удалении связанного сайта панель может предложить удалить и связанные ресурсы.


---

# 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/learn/server-domeny-i-infrastruktura/overview/installation-and-access/sites-and-users.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.
