---
read_when:
    - چندین دامنهٔ اعتمادِ مستأجران را روی یک دستگاه میزبانی می‌کنید
    - باید سلول‌های ناوگان را ایجاد، بازرسی، ارتقا یا حذف کنید
summary: مرجع CLI برای فراهم‌سازی و مدیریت سلول‌های ایزوله OpenClaw به‌ازای هر مستأجر
title: ناوگان
x-i18n:
    generated_at: "2026-07-16T16:30:59Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: be589500e4715541f175caf0d5135a96baee4874e64c60c8b6f188ff1f70bc9f
    source_path: cli/fleet.md
    workflow: 16
---

# `openclaw fleet`

`openclaw fleet` نمونه‌های کامل OpenClaw را که **سلول** نامیده می‌شوند مدیریت می‌کند. هر سلول Gateway، وضعیت، اطلاعات احراز هویت، حساب‌های کانال، کانتینر و درگاه میزبان مختص به خود را دارد که فقط از طریق loopback قابل دسترسی است. برای هر مرز اعتماد مستأجر از یک سلول استفاده کنید؛ از یک Gateway مشترک به‌عنوان مرز چندمستأجری متخاصم استفاده نکنید.

Fleet **آزمایشی** است. نام فرمان‌ها، پرچم‌ها، قالب‌های خروجی و پروفایل کانتینر ممکن است بدون دوره منسوخ‌سازی بین نسخه‌ها تغییر کنند.

Fleet از Docker و Podman پشتیبانی می‌کند. ایمیج پیش‌فرض `ghcr.io/openclaw/openclaw:latest` است.

Fleet روی میزبان‌های Linux و macOS آزمایش شده است. میزبان‌های Windows در حال حاضر آزمایش نشده‌اند.

## شروع سریع

```bash
openclaw fleet create acme
openclaw fleet status acme
openclaw fleet list
```

`fleet create` توکن Gateway تولیدشده را یک‌بار همراه با URL سلول چاپ می‌کند. توکن را فوراً ذخیره کنید، سپس حساب‌های کانال هر مستأجر را درون سلول همان مستأجر پیکربندی کنید.

## شناسه‌های مستأجر

شناسه‌های مستأجر باید با این الگو مطابقت داشته باشند:

```text
^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$
```

این الگو 1 تا 40 حرف کوچک، رقم و خط تیره داخلی را مجاز می‌داند. شناسه باید با حرف یا رقم شروع و تمام شود. حروف بزرگ، زیرخط‌ها، اسلش‌ها، نقطه‌ها، فاصله‌های خالی و رشته‌های پیمایش مسیر مانند `../acme` رد می‌شوند.

شناسه بخشی از نام کانتینر می‌شود: `openclaw-cell-<tenant>`.

## `fleet create`

یک سلول ایجاد و آن را راه‌اندازی کنید:

```bash
openclaw fleet create acme
```

یک سلول Podman را روی درگاهی ثابت، بدون راه‌اندازی آن، ایجاد کنید:

```bash
openclaw fleet create acme \
  --runtime podman \
  --port 19125 \
  --no-start
```

با تکرار `--env` متغیرهای محیطی مختص مستأجر را ارسال کنید:

```bash
openclaw fleet create acme \
  --env TZ=America/Los_Angeles \
  --env OPENCLAW_DISABLE_BONJOUR=1
```

کلیدهای محیطی از حروف، ارقام و زیرخط‌ها استفاده می‌کنند و نمی‌توانند با رقم شروع شوند. مقادیر باید تک‌خطی باشند، زیرا Fleet آن‌ها را از طریق یک فایل محیطی محافظت‌شده زمان اجرا منتقل می‌کند. Fleet تلاش برای بازنویسی متغیرهای مدیریت‌شده مسیر کانتینر و توکن Gateway را که در بخش [چیدمان فضای ذخیره‌سازی و کانتینر](#storage-and-container-layout) فهرست شده‌اند، رد می‌کند.

### گزینه‌های ایجاد

| گزینه                    | پیش‌فرض                               | توضیحات                                                                                    |
| ------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `--image <ref>`           | `ghcr.io/openclaw/openclaw:latest`    | ایمیج کانتینر برای سلول.                                                                  |
| `--runtime <runtime>`     | `docker`                              | CLI کانتینر: `docker` یا `podman`.                                                           |
| `--port <number>`         | تخصیص خودکار از `19100`  | درگاه میزبان loopback. درگاهی که صریحاً انتخاب می‌شود نباید متعلق به سلول ثبت‌شده دیگری باشد.    |
| `--memory <value>`        | `2g`                                  | محدودیت حافظه کانتینر با نگارش Docker/Podman.                                                |
| `--cpus <value>`          | `2`                                   | محدودیت CPU کانتینر.                                                                           |
| `--disk <size>`           | هیچ‌کدام                                  | وقتی زیرساخت ذخیره‌سازی از سهمیه پشتیبانی می‌کند، لایه قابل‌نوشتن کانتینر را محدود می‌کند.                     |
| `--network <mode>`        | `bridge`                              | حالت شبکه خروجی: `bridge` یا `internal`.                                                 |
| `--pids-limit <number>`   | `512`                                 | حداکثر تعداد فرایندها در کانتینر.                                                  |
| `--env <KEY=VALUE>`       | هیچ‌کدام                                  | یک متغیر محیطی را به سلول ارسال می‌کند. برای چند مقدار تکرار کنید.                          |
| `--gateway-token <value>` | توکن شانزده‌شانزدهی تصادفی 32 نویسه‌ای | به‌جای تولید توکن Gateway، از توکن ارائه‌شده استفاده می‌کند. به [مدیریت توکن](#token-handling) مراجعه کنید. |
| `--no-start`              | سلول راه‌اندازی می‌شود                           | کانتینر را بدون راه‌اندازی آن ایجاد می‌کند.                                                      |
| `--json`                  | خروجی خوانا برای انسان                 | خروجی قابل‌خواندن برای ماشین را چاپ می‌کند.                                                                 |

تخصیص خودکار نخستین درگاه استفاده‌نشده رجیستری در `19100` یا بالاتر از آن را انتخاب می‌کند. Fleet شناسه‌های مستأجر تکراری و درگاه‌های صریحی را که از قبل به سلول دیگری اختصاص یافته‌اند رد می‌کند.

ارجاع‌های ایمیج به‌صورت یک آرگومان زمان اجرای کانتینر منتقل می‌شوند. ارجاع‌های خالی و مقادیری که با `-` آغاز می‌شوند رد می‌شوند تا ایمیج نتواند به‌عنوان گزینه Docker یا Podman تفسیر شود.

نقطه پایانی انتخاب‌شده Docker یا Podman باید محلی باشد. Fleet پیش از رزرو درگاه یا ایجاد وضعیت محلی، contextهای راه‌دور Docker، نقطه‌های پایانی `DOCKER_HOST` و سرویس‌های راه‌دور Podman را رد می‌کند. میزبان‌های راه‌دور سلول پشتیبانی نمی‌شوند.

هنگامی که Fleet سلول جدیدی را راه‌اندازی می‌کند، عملیات ایجاد حداکثر حدود یک دقیقه منتظر می‌ماند تا Gateway آن به `/healthz` پاسخ دهد. اگر سلول سالم نشود، Fleet کانتینر و ردیف رجیستری آن را برای `fleet status`، `fleet logs` یا حذف صریح دست‌نخورده باقی می‌گذارد. `--no-start` این مرحله بررسی سلامت را رد می‌کند. توکن Gateway تولیدشده سلول جدید ناسالم از بین نمی‌رود — در محیط کانتینر (`docker|podman inspect`) باقی می‌ماند و چون سلول هنوز هیچ ترافیکی را سرویس‌دهی نکرده است، اجرای `fleet rm --force` و سپس ایجاد مجدد همیشه جایگزینی امن است.

### سنجاق‌کردن بر اساس digest

عملیات ایجاد و ارتقا ارجاع‌های ایمیج سنجاق‌شده با digest، مانند `--image ghcr.io/openclaw/openclaw@sha256:<digest>`، را می‌پذیرند. Fleet ارجاع ایمیج را بدون تغییر به Docker یا Podman منتقل می‌کند؛ در نتیجه اپراتور می‌تواند به‌جای یک tag متغیر، سلول را روی بایت‌های تغییرناپذیر ایمیج نگه دارد.

نتیجه ایجاد شامل شناسه مستأجر، نام کانتینر، درگاه میزبان، توکن Gateway و URL محلی است. حتی در خروجی JSON نیز نتیجه را حاوی اطلاعات محرمانه در نظر بگیرید، زیرا توکن را در بر دارد.

### محدودیت‌های دیسک

`--disk` فقط لایه قابل‌نوشتن کانتینر را محدود می‌کند. دایرکتوری‌های وضعیت و احراز هویت مختص هر مستأجر که با bind mount متصل شده‌اند، همچنان فضای ذخیره‌سازی میزبان هستند؛ اگر این دایرکتوری‌ها نیز به محدودیت سخت نیاز دارند، از سهمیه‌های پروژه سیستم فایل میزبان استفاده کنید.

| زیرساخت زمان اجرا/ذخیره‌سازی | پشتیبانی از `--disk`                                                             |
| ----------------------- | ---------------------------------------------------------------------------- |
| Docker overlay2 روی XFS  | به گزینه mount ‏`pquota` در XFS نیاز دارد.                                      |
| Docker btrfs یا zfs     | توسط درایور ذخیره‌سازی پشتیبانی می‌شود.                                             |
| Podman overlay          | به فضای ذخیره‌سازی پشتیبان XFS نیاز دارد.                                                |
| سایر زیرساخت‌ها          | ایجاد کانتینر با خطای daemon و راهنمای زیرساخت Fleet ناموفق می‌شود. |

### سیاست خروجی شبکه

| حالت       | Docker                                                                                                | Podman                                                                              |
| ---------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `bridge`   | پشتیبانی می‌شود؛ خروجی شبکه به‌طور پیش‌فرض نامحدود است.                                                | پشتیبانی می‌شود؛ خروجی شبکه به‌طور پیش‌فرض نامحدود است.                              |
| `internal` | رد می‌شود، زیرا Docker درگاه منتشرشده loopback مربوط به Gateway را در شبکه داخلی حفظ نمی‌کند. | پشتیبانی می‌شود؛ Gateway روی loopback همچنان منتشر می‌ماند، درحالی‌که خروجی شبکه مسدود است. |

برای Docker، حالت bridge را حفظ و سیاست خروجی را با قواعد فایروال میزبان مانند زنجیره `DOCKER-USER` اعمال کنید.

## `fleet list`

سلول‌ها را به‌ترتیب شناسه مستأجر فهرست کنید:

```bash
openclaw fleet list
openclaw fleet ls
openclaw fleet list --json
```

جدول شامل موارد زیر است:

| ستون    | معنا                                                                                                                                                                                                                                                                               |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tenant`  | شناسه مستأجر.                                                                                                                                                                                                                                                                            |
| `state`   | وضعیت زنده کانتینر از بازرسی Docker یا Podman. `unknown` یعنی زمان اجرا دردسترس نبوده است، یا کانتینری با نام سلول وجود دارد اما برچسب‌های مالکیت Fleet آن با رکورد رجیستری مطابقت ندارند (نشانه‌ای از تداخل یا دست‌کاری — پیش از هر اقدامی آن را به‌صورت دستی بررسی کنید). |
| `port`    | درگاه میزبان loopback که به Gateway سلول نگاشت شده است.                                                                                                                                                                                                                                        |
| `image`   | ایمیج ثبت‌شده کانتینر.                                                                                                                                                                                                                                                             |
| `created` | زمان ایجاد سلول.                                                                                                                                                                                                                                                                   |

وقتی Docker یا Podman دردسترس نباشد، ردیف‌های رجیستری همچنان قابل‌مشاهده می‌مانند؛ فقط وضعیت زنده به `unknown` تبدیل می‌شود.

## `fleet status`

یک سلول را بررسی کنید:

```bash
openclaw fleet status acme
openclaw fleet status acme --json
```

وضعیت، ردیف رجیستری Fleet، بازرسی زنده کانتینر و یک درخواست کوتاه با بیشترین تلاش ممکن به نشانی زیر را ترکیب می‌کند:

```text
http://127.0.0.1:<host-port>/healthz
```

نتیجه سلامت `ok`، `failed` یا `skipped` است. `/healthz` زنده‌بودن Gateway را اثبات می‌کند، نه آمادگی کامل همه کانال‌ها یا Pluginهای پیکربندی‌شده را. هنگامی که هیچ نقطه پایانی محلی قابل‌استفاده‌ای برای بررسی وجود نداشته باشد، کاوش انجام نمی‌شود.

## `fleet logs`

گزارش‌های کانتینر یک سلول را مستقیماً به ترمینال جریانی کنید:

```bash
openclaw fleet logs acme
openclaw fleet logs acme --follow
openclaw fleet logs acme --tail 200
openclaw fleet logs acme --since 10m
```

Fleet پیش از خواندن هر گزارشی، برچسب‌های مالکیت کانتینر ثبت‌شده را بررسی می‌کند؛ بنابراین کانتینر خارجی‌ای را که از نام مورد انتظار سلول استفاده می‌کند رد می‌کند. جریان به شناسه همان کانتینر بازرسی‌شده سنجاق می‌شود، در نتیجه جایگزینی هم‌زمان نمی‌تواند آن را به نسل جدیدتری هدایت کند. برای پایان‌دادن به `--follow` کلیدهای Ctrl-C را فشار دهید؛ این توقف اپراتور به‌عنوان شکست فرمان در نظر گرفته نمی‌شود. خروجی گزارش از یک فیلتر حذف اطلاعات حساس عبور می‌کند که توکن فعلی Gateway سلول را پیش از رسیدن هر چیزی به ترمینال با `<redacted>` جایگزین می‌کند.

`fleet logs` حالت `--json` ندارد، زیرا گزارش‌های کانتینر یک جریان خام stdout/stderr هستند. برای اسکریپت‌ها، خروجی را با `--tail` محدود کنید و از تغییر مسیر یا pipelineهای معمول shell استفاده کنید.

## `fleet start`، `fleet stop` و `fleet restart`

یک سلول موجود را با زمان‌اجرای ثبت‌شده آن کنترل کنید:

```bash
openclaw fleet start acme
openclaw fleet stop acme
openclaw fleet restart acme
```

این فرمان‌ها روی نام کانتینر ثبت‌شده عمل می‌کنند. اگر مستأجر ناشناخته باشد یا زمان‌اجرای ثبت‌شده نتواند عملیات را انجام دهد، فرمان‌ها با شکست مواجه می‌شوند.

## `fleet upgrade`

ایمیج ثبت‌شده را دوباره دریافت و کانتینر سلول را جایگزین کنید:

```bash
openclaw fleet upgrade acme
```

سلول را به ایمیج دیگری منتقل کنید:

```bash
openclaw fleet upgrade acme --image ghcr.io/openclaw/openclaw:<version>
```

ارتقا ایمیج هدف را دریافت می‌کند، کانتینر موجود و شبکه مختص هر سلول را بررسی می‌کند، کانتینر را متوقف و حذف می‌کند و سپس آن را دوباره می‌سازد و راه‌اندازی می‌کند. جایگزین همان پورت میزبان، دایرکتوری‌های داده، شبکه پل مختص هر سلول، پروفایل زمان‌اجرا، محدودیت‌های منابع، سیاست راه‌اندازی مجدد، محیط مدیریت‌شده توسط Fleet و مقادیری را که در ابتدا با `--env` ارائه شده‌اند حفظ می‌کند. وضعیت مانت‌شده پس از جایگزینی کانتینر باقی می‌ماند؛ محیط پیش‌فرض ایمیج ممکن است با ایمیج هدف تغییر کند.

جایگزین تنها پس از آن نهایی می‌شود که Gateway آن روی پورت لوپ‌بک سلول به `/healthz` پاسخ دهد؛ این رفتار با قرارداد سلامت مورد استفاده فایل رسمی compose مطابقت دارد. جایگزینی که خارج شود، وارد چرخه خرابی شود یا ظرف حدود یک دقیقه سالم نشود، حذف و کانتینر قبلی بازیابی می‌شود تا یک ایمیج معیوب سلول سالم را از کار نیندازد.

توکن Gateway عمداً در رجیستری Fleet ذخیره نمی‌شود. Fleet پیش از حذف کانتینر قدیمی، محیط آن را می‌خواند و `OPENCLAW_GATEWAY_TOKEN` را به جایگزین منتقل می‌کند. اگر توکن در هیچ محل دیگری تحت کنترل شما وجود ندارد، پیش از ارتقا کانتینر قدیمی را به‌صورت دستی حذف نکنید.

## `fleet backup` و `fleet restore`

از یک سلول متوقف‌شده پشتیبان بگیرید:

```bash
openclaw fleet stop acme
openclaw fleet backup acme --out ./acme.tgz
```

آن بایگانی را در سلول ثبت‌شده بازیابی کنید:

```bash
openclaw fleet restore acme --from ./acme.tgz
```

این فرمان‌ها به امتیازات اپراتور میزبان نیاز دارند. بایگانی‌ها شامل وضعیت مستأجر و اسرار احراز هویت هستند، با حالت `0600` ایجاد می‌شوند و باید مانند اطلاعات اصالت‌سنجی نگهداری شوند. پشتیبان‌گیری سلول در حال اجرا را نمی‌پذیرد تا وضعیت SQLite به‌طور سازگار ثبت شود. بازیابی، مگر آنکه `--force` ارائه شود، سلول در حال اجرا را نمی‌پذیرد؛ فقط وضعیت همان مستأجر را جایگزین می‌کند، توکن Gateway را می‌چرخاند و توکن جدید را یک‌بار نمایش می‌دهد. Fleet هر بار از یک مستأجر پشتیبان می‌گیرد؛ پشتیبان‌گیری از همه مستأجران، عملیات جداگانه‌ای برای اپراتور است.

بازیابی به یک کانتینر متوقف‌شده موجود نیاز دارد، زیرا پروفایل زمان‌اجرای بررسی‌شده آن، محدودیت‌های جایگزین، نگاشت کاربر، منشأ محیط و ایمیج را فراهم می‌کند. اگر کانتینر ثبت‌شده خارج از این فرایند حذف شده است، ابتدا `fleet rm <tenant> --force` را بدون `--purge-data` اجرا کنید، سلول را با ایمیج موردنظر و `--no-start` دوباره بسازید و سپس بازیابی را دوباره امتحان کنید. حذف نخست، هر دو دایرکتوری داده مستأجر را دست‌نخورده نگه می‌دارد.

هر دو فرمان `--max-bytes <bytes>` را برای محدود کردن داده فایل بایگانی‌شده یا استخراج‌شده می‌پذیرند و هر دو همان بودجه ثابت یک‌میلیونی برای بخش‌های مسیر بایگانی را اعمال می‌کنند تا بمب‌های بایگانی صرفاً حاوی فراداده نتوانند inodeهای میزبان را تمام کنند و هر نسخه پشتیبان پذیرفته‌شده قابل بازیابی باقی بماند. پشتیبان‌گیری `--out <path>` را می‌پذیرد و هر دو فرمان از `--json` پشتیبانی می‌کنند.

بایگانی‌ها فقط شامل فایل‌ها و دایرکتوری‌های معمولی هستند. پشتیبان‌گیری هرگز پیوندهای نمادین، پیوندهای سخت، سوکت‌ها یا گره‌های دستگاه را دنبال یا ذخیره نمی‌کند؛ تعداد موارد نادیده‌گرفته‌شده در نتیجه گزارش می‌شود. بازیابی بایگانی‌های دارای هر نوع ورودی دیگر را رد می‌کند. درخت‌های پیوند نمادین قابل بازسازی، مانند `node_modules` فضای کاری، باید پس از بازیابی درون سلول دوباره نصب شوند.

## `fleet doctor`

بدون تغییر وضعیت زمان‌اجرا یا سیستم فایل، همه سلول‌ها یا یک مستأجر را ممیزی کنید:

```bash
openclaw fleet doctor
openclaw fleet doctor acme --json
```

Doctor محلی‌بودن زمان‌اجرا، برچسب‌های مالکیت، سلامت، سخت‌سازی، محدودیت‌های منابع، اتصال پورت لوپ‌بک، وجود توکن، مالکیت شبکه و حالت خروجی شبکه، و مجوزهای دایرکتوری خصوصی وضعیت را بررسی می‌کند. هشدارها سلول‌های متوقف‌شده یا تفاوت‌های مالکیت را توصیف می‌کنند؛ هر یافته ناموفق، کد خروج فرایند را غیرصفر می‌کند.

## `fleet rm`

یک سلول متوقف‌شده را با حفظ داده‌های مستأجر از زمان‌اجرا و رجیستری حذف کنید:

```bash
openclaw fleet rm acme
```

کانتینر در حال اجرا به `--force` نیاز دارد:

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

داده‌های سلول را نیز برای همیشه حذف کنید:

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

Fleet پیش از حذف شبکه پل اختصاصی سلول، کانتینر آن را حذف می‌کند. `--purge-data` به `--force` نیاز دارد. Fleet پیش از حذف بازگشتی، هر دو ریشه متعلق به Fleet و هر دو دایرکتوری مختص مستأجر را تفکیک می‌کند. هر هدف باید دقیقاً برگ مورد انتظار مستأجر، کاملاً داخل ریشه خود و نه یک پیوند نمادین باشد. این بررسی‌های محدوده مانع می‌شوند که مسیر خراب رجیستری یا پیوند نمادین بین‌مستأجری، حذف را به محل دیگری هدایت کند.

اگر دایرکتوری دقیق و مورد انتظار مستأجر از قبل وجود نداشته باشد، پاک‌سازی قابل تکرار است. این امکان می‌دهد فراخوانی بعدی پس از خرابی جزئی سیستم فایل، پاک‌سازی را بدون کاهش سخت‌گیری بررسی مسیر برای دایرکتوری‌هایی که هنوز وجود دارند تکمیل کند.

## چیدمان فضای ذخیره‌سازی و کانتینر

وضعیت سلول و کلیدهای رمزنگاری پروفایل احراز هویت، از مسیرهای جداگانه مختص هر مستأجر در میزبان و زیر دایرکتوری فعال وضعیت OpenClaw استفاده می‌کنند:

```text
<state-dir>/fleet/cells/<tenant>/
<state-dir>/fleet/auth-profile-secrets/<tenant>/
```

دایرکتوری نخست در `/home/node/.openclaw` مانت می‌شود. دایرکتوری دوم در `/home/node/.config/openclaw` مانت می‌شود که با مانت کلید رمزنگاری در راه‌اندازی رسمی Docker مطابقت دارد. بنابراین، کلید رمزنگاری زیر مانت معمولی وضعیت در معرض دسترسی قرار نمی‌گیرد و هنگامی که فقط دایرکتوری وضعیت سلول پشتیبان‌گیری یا اشتراک‌گذاری می‌شود، در آن گنجانده نمی‌شود. هر دو دایرکتوری پس از حذف و ارتقای عادی باقی می‌مانند؛ `fleet rm --purge-data --force` پس از بررسی‌های جداگانه محدوده، هر دو را حذف می‌کند.

Fleet پیش از نخستین راه‌اندازی، پیکربندی سلول را با `gateway.mode=local`، احراز هویت توکنی، اتصال کانتینر LAN و مبدأهای Control UI برای پورت تخصیص‌یافته میزبان مقداردهی اولیه می‌کند. مقدار توکن در آن پیکربندی نوشته نمی‌شود؛ این مقدار در محیط کانتینر باقی می‌ماند.

Fleet مسیرهای کانتینر ایمیج رسمی را با این مقادیر محیطی ثابت می‌کند:

| متغیر                 | مقدار کانتینر                      |
| ------------------------ | ------------------------------------ |
| `HOME`                   | `/home/node`                         |
| `OPENCLAW_HOME`          | `/home/node`                         |
| `OPENCLAW_STATE_DIR`     | `/home/node/.openclaw`               |
| `OPENCLAW_CONFIG_PATH`   | `/home/node/.openclaw/openclaw.json` |
| `OPENCLAW_WORKSPACE_DIR` | `/home/node/.openclaw/workspace`     |
| `OPENCLAW_GATEWAY_TOKEN` | توکن سلول تولیدشده یا ارائه‌شده     |

ایمیج رسمی به‌طور پیش‌فرض از کاربر غیرریشه `node` با UID 1000 استفاده می‌کند. Fleet مانت‌های اتصال خصوصی `0700` را بدون فراهم‌کردن دسترسی همگانی، قابل‌نوشتن نگه می‌دارد. Docker ریشه‌دار سلول را با UID و GID کاربر غیرریشه فراخوان اجرا می‌کند؛ Docker بدون ریشه از UID کانتینر 0 استفاده می‌کند که در فضای نام کاربر daemon به کاربر میزبان فراخوان و فاقد امتیاز نگاشت می‌شود. Podman از `keep-id` با UID و GID فراخوان استفاده می‌کند. هنگامی که خود Fleet به‌عنوان root در برابر یک زمان‌اجرای ریشه‌دار اجرا می‌شود، کاربر ایمیج را حفظ می‌کند و فایل‌های اولیه مانت را به UID/GID 1000 اختصاص می‌دهد.

در میزبان‌های SELinux، مانت‌های Docker و Podman برچسب‌گذاری مجدد خصوصی `:Z` دریافت می‌کنند. اگر داده‌های سلول را بازیابی یا جابه‌جا می‌کنید، مسیرهای اتصال مانت‌شده را برای کاربر مؤثر کانتینر قابل‌نوشتن نگه دارید. این پروفایل با حالت بدون ریشه سازگار است، اما Docker یا Podman باید از قبل برای عملیات بدون ریشه روی میزبان پیکربندی شده باشد؛ Fleet یک daemon ریشه‌دار را به daemon بدون ریشه تبدیل نمی‌کند.

## پروفایل امنیتی

Fleet پروفایل زیر را روی هر سلول اعمال می‌کند:

| کنترل              | پروفایل اعمال‌شده                                      | دلیل                                                                                    |
| -------------------- | ---------------------------------------------------- | -------------------------------------------------------------------------------------- |
| قابلیت‌های Linux   | `--cap-drop=ALL`                                     | Gateway یک فرایند Node.js است و به هیچ قابلیت افزوده Linux نیاز ندارد.                |
| افزایش امتیاز | `--security-opt no-new-privileges`                   | مانع می‌شود فرایندها از طریق فایل‌های اجرایی setuid یا setgid امتیاز کسب کنند.          |
| فرایند init         | `--init`                                             | فرایندهای فرزند را جمع‌آوری و سیگنال‌های چرخه عمر کانتینر را هدایت می‌کند.                   |
| محدودیت فرایند        | به‌طور پیش‌فرض `--pids-limit 512`                        | انشعاب و اتمام منابع فرایند را محدود می‌کند.                                                    |
| محدودیت حافظه         | به‌طور پیش‌فرض `--memory 2g`                             | مصرف حافظه سلول را محدود می‌کند.                                                                |
| محدودیت CPU            | به‌طور پیش‌فرض `--cpus 2`                                | مصرف CPU سلول را محدود می‌کند.                                                                   |
| دیسک لایه قابل‌نوشتن  | `--disk` اختیاری                                    | هنگامی که بخش پشتیبان فضای ذخیره‌سازی زمان‌اجرا از سهمیه پشتیبانی کند، لایه کانتینر را محدود می‌کند.           |
| سیاست راه‌اندازی مجدد       | `--restart unless-stopped`                           | سلول خراب را بدون نادیده‌گرفتن توقف عمدی دوباره راه‌اندازی می‌کند.                         |
| انتشار میزبان      | فقط `127.0.0.1:<host-port>:18789`                   | Gateway را از رابط‌های wildcard میزبان دور نگه می‌دارد.                                        |
| شبکه سلول         | یک شبکه پل یا شبکه داخلی Podman برای هر سلول       | ترافیک IP کانتینر را جدا می‌کند و در صورت انتخاب، خروجی شبکه Podman را مسدود می‌کند.           |
| هویت کانتینر   | نگاشت کاربر منطبق با میزبان                            | مانت‌های اتصال خصوصی را بدون اعطای دسترسی همگانی قابل‌نوشتن نگه می‌دارد.                      |
| وضعیت ماندگار     | مانت‌های مختص هر سلول؛ بدون مانت مشترک وضعیت               | پیکربندی، اطلاعات اصالت‌سنجی، نشست‌ها و فضاهای کاری مستأجر را در درخت داده همان مستأجر نگه می‌دارد. |
| فرمان کانتینر    | `node dist/index.js gateway --bind lan --port 18789` | روی شبکه کانتینر گوش می‌دهد تا نگاشت پورت میزبانِ محدود به لوپ‌بک بتواند به آن دسترسی پیدا کند.  |

Fleet هرگز `/var/run/docker.sock` را مانت نمی‌کند، از `--privileged` یا شبکه میزبان استفاده نمی‌کند و قابلیتی اضافه نمی‌کند. پل مختص هر سلول، مرز جداسازی میان سلول‌هاست، نه دیواره آتش خروجی: سلول‌ها خروجی شبکه موردنیاز ارائه‌دهندگان و کانال‌ها را حفظ می‌کنند. پورت لوپ‌بک را پشت یک پراکسی، تونل SSH یا پیکربندی tailnet متناسب با استقرار خود قرار دهید. `http://127.0.0.1:<port>` فقط مستقیماً از میزبان Fleet قابل دسترسی است.

این پروفایل کانتینرهای مستأجران را جدا می‌کند، اما مستأجران را در برابر اپراتور Fleet، مدیر زمان‌اجرای کانتینر یا میزبان به‌خطر‌افتاده محافظت نمی‌کند. برای مدل کامل اعتماد و گزینه‌های جداسازی قوی‌تر، به [میزبانی چندمستأجری](/gateway/multi-tenant-hosting) مراجعه کنید.

## مدیریت توکن

به‌طور پیش‌فرض، `fleet create` یک توکن Gateway شانزده‌شانزدهی 32 نویسه‌ای و تصادفیِ رمزنگاری‌شده تولید می‌کند و آن را یک‌بار در نتیجه ایجاد نمایش می‌دهد. آن را در مدیر اسرار مورد تأیید خود ذخیره کنید و از ثبت خروجی ایجاد در گزارش‌ها بپرهیزید.

`--gateway-token` یک توکن سفارشی را در آرگومان‌های فرایند محلی قرار می‌دهد که ممکن است در تاریخچه پوسته حفظ شود یا در فهرست فرایندها قابل مشاهده باشد. مگر آنکه گردش‌کار موجود مدیریت اسرار به یک مقدار ارائه‌شده نیاز داشته باشد، توکن تولیدشده را ترجیح دهید.

توکن و هر مقداری که با `--env` ارسال شود، در محیط کانتینر قرار می‌گیرند. Fleet آن‌ها را در یک فایل محیطی کوتاه‌عمر با حالت `0600` می‌نویسد، فقط مسیر آن فایل را به Docker یا Podman می‌دهد و پس از پایان فرمان زمان‌اجرا، فایل را حذف می‌کند. مقادیری که صراحتاً در `openclaw fleet create --gateway-token ...` یا `--env KEY=VALUE` وارد می‌شوند، همچنان ممکن است در آرگومان‌های فرایند بیرونی `openclaw` و تاریخچه پوسته قابل مشاهده باشند.

مقادیر محیط کانتینر از اپراتور مورد اعتماد میزبان پنهان نیستند: مدیران Docker یا Podman می‌توانند آن‌ها را با بازرسی کانتینر بخوانند. یادداشت «فقط یک‌بار نمایش داده می‌شود» در Fleet، خروجی عادی CLI را توصیف می‌کند، نه مقاومت در برابر مدیر میزبان.

## مرتبط

- [میزبانی چندمستاجری](/gateway/multi-tenant-hosting)
- [Docker](/fa/install/docker)
- [Podman](/fa/install/podman)
- [امنیت Gateway](/fa/gateway/security)
