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

# Мультитенантный хостинг

# Мультитенантный хостинг

Стандартная модель безопасности OpenClaw предусматривает одну границу доверия оператора на каждый Gateway, а не изоляцию недоверяющих друг другу тенантов внутри одного общего Gateway. Поэтому для размещения пользователей или организаций, не имеющих общей границы доверия, необходимо запускать отдельный полноценный экземпляр OpenClaw для каждого тенанта.

`openclaw fleet` называет каждый изолированный экземпляр **ячейкой**. Ячейка — это полноценный Gateway в защищённом контейнере с собственным состоянием, учётными данными, рабочим пространством, аккаунтами каналов, токеном и портом хоста, доступным только через loopback-интерфейс.

Fleet является **экспериментальной** функцией: её команды, флаги и профиль контейнера могут изменяться между выпусками без периода устаревания.

Fleet тестируется на хостах Linux и macOS. Хосты Windows в настоящее время не тестировались.

## Почему каждому тенанту нужна ячейка

Аутентифицированный оператор внутри одного Gateway выполняет доверенную роль в плоскости управления. Идентификаторы сеансов определяют маршрутизацию; они не авторизуют одного тенанта по отношению к другому. Песочница агента может снизить последствия обработки недоверенного содержимого и выполнения инструментов, но не превращает общий Gateway в границу авторизации между тенантами.

Используйте отдельную ячейку для каждого тенанта, чтобы каждый домен доверия имел отдельный процесс Gateway, контейнер, дерево постоянного состояния и учётные данные Gateway. Это соответствует [модели безопасности Gateway](https://docs2.openclaw.ai/ru/gateway/security.md): не размещайте взаимно недоверяющих пользователей в одном процессе OpenClaw или под одним пользователем ОС.

## Архитектура

Fleet CLI — это работающий на хосте диспетчер жизненного цикла. Он регистрирует ячейки в базе данных состояния OpenClaw и поручает локальной среде выполнения Docker или Podman создавать, проверять, запускать, останавливать, заменять и удалять их контейнеры. Удалённые конечные точки среды выполнения не поддерживаются, поскольку пути привязки Fleet и loopback-URL относятся к локальному хосту. Fleet не проксирует сообщения тенантов и не добавляет между ячейками общий путь передачи данных на уровне приложения.

Каждая ячейка запускает официальный образ `ghcr.io/openclaw/openclaw` в собственной пользовательской мостовой сети. Раздельные мосты предотвращают прямой обмен трафиком между IP-адресами контейнеров разных ячеек, сохраняя исходящий доступ через NAT для провайдеров и каналов. По умолчанию исходящий трафик не ограничен. Ячейки Podman могут использовать `--network internal`, чтобы блокировать исходящий трафик, сохраняя опубликованный loopback-порт Gateway. Внутренние сети Docker нарушают работу этого опубликованного порта, поэтому Fleet отклоняет такую комбинацию; вместо этого применяйте политику исходящего трафика Docker с помощью правил межсетевого экрана хоста, например цепочки `DOCKER-USER`. Gateway ячейки прослушивает порт `18789` внутри контейнера, а среда выполнения публикует его на хосте только по адресу `127.0.0.1:<allocated-port>`. Если требуется удалённый доступ, оператор может разместить перед этой loopback-конечной точкой одобренный обратный прокси-сервер, туннель SSH или tailnet.

Постоянное состояние Gateway берётся из `<state-dir>/fleet/cells/<tenant>/` и монтируется в `/home/node/.openclaw`. Ключи шифрования профилей аутентификации берутся из отдельного пути хоста `<state-dir>/fleet/auth-profile-secrets/<tenant>/` и монтируются в `/home/node/.config/openclaw` в соответствии с официальной [схемой постоянного хранения Docker](https://docs2.openclaw.ai/ru/install/docker.md#storage-and-persistence). Ключ не вложен в обычную точку монтирования состояния. Аккаунты каналов каждого тенанта обслуживаются внутри владеющей ими ячейки; Fleet не предоставляет общий аккаунт канала или маршрутизатор входящих сообщений.

Официальный образ по умолчанию использует непривилегированного пользователя `node` с UID 1000. Fleet применяет совместимые с хостом сопоставления пользователей, чтобы закрытые привязанные тома оставались доступными для записи: Podman использует `keep-id`, Docker в привилегированном режиме использует идентификатор запустившего его непривилегированного пользователя, а Docker в непривилегированном режиме сопоставляет пользователя root контейнера с непривилегированным пользователем демона. Когда на хосте активен SELinux, Docker и Podman применяют закрытую перемаркировку `:Z`. Профиль контейнера не использует привилегированные функции хоста и поддерживает непривилегированный режим, однако работа без привилегий — это выбор и предварительное требование среды выполнения хоста, а не функция, которую Fleet включает автоматически.

## Граница доверия

Мультитенантность защищает тенантов друг от друга. Оператор Fleet и хост являются доверенными для каждого тенанта. Защита от скомпрометированного хоста не является целью.

Это означает, что администратор хоста может проверять конфигурацию и окружение контейнеров, читать смонтированные данные ячеек, заменять образы или входить в контейнеры. Токены Gateway и значения, переданные через `--env`, видны администратору при проверке Docker или Podman. Поэтому используйте соответствующие средства защиты хоста, политику административного доступа, мониторинг, резервное копирование и одобренный менеджер секретов.

Базовая конфигурация предотвращает случайное открытие сетевого доступа по маске и устраняет распространённые механизмы повышения привилегий контейнера, но не делает недоверенный хост безопасным.

## Уровни изоляции

Выберите границу, соответствующую размещаемым тенантам:

1. **Базовый защищённый контейнер.** Fleet удаляет все возможности Linux, включает `no-new-privileges`, применяет ограничения PID, памяти, CPU и, при необходимости, дискового пространства записываемого слоя, использует отдельные постоянные точки монтирования и сети для каждой ячейки и публикует порт только на loopback-интерфейсе хоста. Мостовая сеть не ограничивает исходящий трафик; если ячейка не должна инициировать исходящие подключения, используйте `--network internal` в Podman или политику межсетевого экрана хоста для Docker. Это профиль по умолчанию для тенантов, доверяющих оператору и хосту.
2. **Усиленная изоляция контейнеров или виртуальных машин.** Для рабочих нагрузок повышенного риска настройте Docker или Podman на использование более строгой среды изоляции OCI, например gVisor или Kata Containers, либо размещайте ячейки в микровиртуальных машинах. Это настройка среды выполнения или инфраструктуры; параметр Fleet `--runtime docker|podman` выбирает CLI контейнеров, а не серверную часть изоляции OCI. См. документацию Docker об [альтернативных средах выполнения контейнеров](https://docs.docker.com/engine/daemon/alternative-runtimes/) и [руководство по среде выполнения Docker в виртуальной машине](https://docs2.openclaw.ai/ru/install/docker-vm-runtime.md).
3. **Отдельные машины для враждебных тенантов.** Не размещайте враждебных тенантов в одном процессе OpenClaw или под одним пользователем ОС. Если тенанты не доверяют одному оператору хоста или нуждаются в более строгой административной границе, используйте отдельные виртуальные машины или физические хосты с раздельным администрированием сред выполнения.

Ни один уровень этой схемы не изменяет модель доверия приложения OpenClaw: один Gateway по-прежнему представляет один доверенный домен оператора.

## Быстрый старт

Создайте ячейку. Команда выводит сгенерированный токен Gateway только один раз, поэтому немедленно сохраните его:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw fleet create acme
```

Откройте указанный URL `http://127.0.0.1:<port>` на хосте Fleet, пройдите аутентификацию с токеном этого тенанта и настройте учётные данные провайдеров и аккаунты каналов внутри ячейки.

Проверьте состояние контейнера и работоспособность Gateway:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw fleet status acme
```

Выполните обновление, сохранив порт хоста, смонтированные данные, профиль ресурсов, заданное пользователем окружение и токен Gateway:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw fleet upgrade acme
```

Удалите контейнер и запись реестра, сохранив данные тенанта:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw fleet rm acme --force
```

Чтобы также удалить постоянные данные тенанта, добавьте `--purge-data`. Для очистки требуется `--force`; эта операция необратима и перед удалением чего-либо проверяет, что разрешённый путь находится в допустимых границах:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw fleet rm acme --purge-data --force
```

Все команды и параметры приведены в [справочнике CLI `openclaw fleet`](https://docs2.openclaw.ai/ru/cli/fleet).

## Текущая область применения

Fleet не предоставляет следующие возможности:

* Общие аккаунты каналов или общий маршрутизатор входящего трафика
* Облегчённые процессы хоста для отдельных тенантов вместо полноценных экземпляров OpenClaw
* Удалённые хосты ячеек, управляемые одним диспетчером
* Портал самообслуживания тенантов, система биллинга или пользовательский интерфейс делегированного администрирования

Для этих возможностей необходимы явные контракты идентификации, маршрутизации, авторизации и доменов отказа. Не пытайтесь имитировать их, совместно используя один Gateway или его учётные данные для нескольких тенантов. Fleet — это диспетчер жизненного цикла для одного хоста; для парков на нескольких машинах с управлением на основе идентификации требуется отдельный уровень плоскости управления.

## Связанные материалы

* [`openclaw fleet`](https://docs2.openclaw.ai/ru/cli/fleet)
* [Безопасность Gateway](https://docs2.openclaw.ai/ru/gateway/security.md)
* [Несколько экземпляров Gateway](https://docs2.openclaw.ai/ru/gateway/multiple-gateways.md)
* [Docker](https://docs2.openclaw.ai/ru/install/docker.md)
* [Podman](https://docs2.openclaw.ai/ru/install/podman.md)
