---
doc-schema-version: 1
read_when:
    - Вы размещаете OpenClaw для нескольких пользователей или организаций
    - Необходимо выбрать границу изоляции для рабочих нагрузок арендаторов
summary: Размещайте несколько доменов доверия арендаторов, выделяя для каждого арендатора отдельную изолированную ячейку OpenClaw Gateway
title: Мультитенантный хостинг
x-i18n:
    generated_at: "2026-07-16T16:24:46Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 383d32331b45d40db6fb4ff8242dd9a3cf8898a3ccab19f0372cd06bbd83fc05
    source_path: gateway/multi-tenant-hosting.md
    workflow: 16
---

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

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

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

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

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

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

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

Используйте отдельную ячейку для каждого тенанта, чтобы каждый домен доверия имел отдельный процесс Gateway, контейнер, дерево постоянного состояния и учётные данные Gateway. Это соответствует [модели безопасности Gateway](/ru/gateway/security): не размещайте взаимно недоверяющих пользователей в одном процессе 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](/ru/install/docker#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 в виртуальной машине](/ru/install/docker-vm-runtime).
3. **Отдельные машины для враждебных тенантов.** Не размещайте враждебных тенантов в одном процессе OpenClaw или под одним пользователем ОС. Если тенанты не доверяют одному оператору хоста или нуждаются в более строгой административной границе, используйте отдельные виртуальные машины или физические хосты с раздельным администрированием сред выполнения.

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

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

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

```bash
openclaw fleet create acme
```

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

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

```bash
openclaw fleet status acme
```

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

```bash
openclaw fleet upgrade acme
```

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

```bash
openclaw fleet rm acme --force
```

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

```bash
openclaw fleet rm acme --purge-data --force
```

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

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

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

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

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

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

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