---
read_when:
    - شما چندین دامنه اعتمادِ مستأجر را روی یک دستگاه میزبانی می‌کنید
    - باید سلول‌های ناوگان را ایجاد، بازرسی، ارتقا یا حذف کنید
summary: مرجع CLI برای فراهم‌سازی و مدیریت سلول‌های OpenClaw مجزای هر مستأجر
title: ناوگان
x-i18n:
    generated_at: "2026-07-27T13:58:44Z"
    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 پیش از رزرو پورت یا ایجاد وضعیت محلی، زمینه‌های راه‌دور 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 منتقل می‌کند و بدین‌ترتیب اپراتور می‌تواند به‌جای یک تگ متغیر، سلول را روی بایت‌های تغییرناپذیر تصویر نگه دارد.

نتیجه ایجاد شامل شناسه مستأجر، نام کانتینر، پورت میزبان، توکن 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` محدود کنید و از تغییر مسیر یا پایپ‌لاین‌های معمول پوسته استفاده کنید.

## `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 حذف شده است، ابتدا `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` دریافت می‌کنند. اگر داده‌های سلول را بازیابی یا جابه‌جا می‌کنید، مسیرهای bind-mounted را برای کاربر مؤثر کانتینر قابل‌نوشتن نگه دارید. این پروفایل با اجرای بدون ریشه سازگار است، اما 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، مدیر زمان‌اجرای کانتینر یا میزبان به‌خطر‌افتاده محافظت نمی‌کند. برای مدل اعتماد کامل و گزینه‌های جداسازی قوی‌تر، به [میزبانی چندمستأجری](/fa/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 را توصیف می‌کند، نه مقاومت در برابر مدیر میزبان.

## مرتبط

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