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

# stackkit host

> عمليات عقد المضيف المحايدة للمزوّد

عمليات عقد المضيف المحايدة للمزوّد.

```bash theme={null}
stackkit host [flags]
```

الأوامر الفرعية: [`stackkit host attach-conformance`](#stackkit-host-attach-conformance)، [`stackkit host conformance`](#stackkit-host-conformance)، [`stackkit host delivery`](#stackkit-host-delivery)، [`stackkit host environment`](#stackkit-host-environment)، [`stackkit host migrate-browser-ca`](#stackkit-host-migrate-browser-ca)، [`stackkit host preflight`](#stackkit-host-preflight)، [`stackkit host prepare`](#stackkit-host-prepare)، [`stackkit host reboot`](#stackkit-host-reboot)، [`stackkit host remediate`](#stackkit-host-remediate)، [`stackkit host security`](#stackkit-host-security)، [`stackkit host ssh`](#stackkit-host-ssh)، [`stackkit host updates`](#stackkit-host-updates)

## stackkit host attach-conformance

أرفق أدلة المضيف الدقيقة بـ Inventory قبل إنشاء الخطة.

```bash theme={null}
stackkit host attach-conformance [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--binding` | string | — | **مطلوب.** ملف JSON لـ ExternalHostBinding مقيَّد بمساحة العمل |
| `--inventory` | string | — | **مطلوب.** ملف inventory.json مقيَّد بمساحة العمل يُحدَّث بصورة ذرّية |
| `--receipt` | string | — | **مطلوب.** ملف JSON لـ HostConformanceReceipt مقيَّد بمساحة العمل |

## stackkit host conformance

أنشئ إيصال مطابقة محايدًا للمزوّد على هذا المضيف.

```bash theme={null}
stackkit host conformance [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--binding` | string | — | **مطلوب.** ملف JSON محلي لـ ExternalHostBinding |
| `--output, -o` | string | `-` | وجهة الإيصال ('-' لإخراج JSON إلى stdout) |

## stackkit host delivery

أدر مستلم التسليم المختوم للمضيف الخاص بهذه العقدة.

يوصل التسليم المختوم للمضيف عناصر Wallet وأهداف النسخ الاحتياطي ووصول SSH إلى هذه العقدة. تختم جهة التسليم كل قيمة بمفتاح المستلم الخاص بهذه العقدة (HPKE، pkg/hostdelivery)؛ ولا تفتحها إلا هذه العقدة في عهدتها. ولا ينقل Techstack وGuard إلا النص المشفّر والمراجع.

```bash theme={null}
stackkit host delivery [flags]
```

الأوامر الفرعية: [`stackkit host delivery detach`](#stackkit-host-delivery-detach)، [`stackkit host delivery recipient`](#stackkit-host-delivery-recipient)، [`stackkit host delivery status`](#stackkit-host-delivery-status)

### stackkit host delivery detach

أوقف التسليم إلى هذه العقدة واذكر الأسرار المسلَّمة التي يجب تدويرها.

افصل هذه العقدة عن التسليم إلى المضيف: يُوسم كل سر مسلَّم بأنه يحتاج إلى تدوير، وتُدمَّر مفاتيح المستلم المتقاعدة، ولا يُفتح أي تسليم حتى يُعاد تسجيل العقدة عبر 'host delivery recipient `--rotate`'. تسرد النتيجة المراجع والإصدارات المطلوب تدويرها من حيث جاءت؛ ولا تحتوي أي قيمة أبدًا. تبقى القيم الموجودة في العهدة المحلية قابلة للاستخدام هنا.

```bash theme={null}
stackkit host delivery detach [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--owner-approve` | bool | — | اعتمد فصل هذه العقدة |

**أمثلة**

```bash theme={null}
stackkit host delivery detach --owner-approve
```

### stackkit host delivery recipient

أثبت مفتاح المستلم لهذه العقدة، أو ثبّت جهة التسليم، أو دوّر المفتاح.

اطبع بيانًا موقّعًا بمفتاح Owner المحلي يربط مفتاح المستلم لهذه العقدة وجيله بهذا الـ Site وهذه العقدة ويردد تحدي المستدعي. لا يغادر المفتاح الخاص العهدة المحلية أبدًا.

يثبّت `--authority-key` المفتاح العام Ed25519 لجهة التسليم للجيل الحالي؛ ولا تُفتح عناصر Wallet ووصول SSH إلا إذا وقّعتها. ولا يُستبدل المفتاح المثبّت في مكانه أبدًا. يعيد `--rotate` تسجيل العقدة تحت الجيل التالي (ومع `--authority-key` يثبّت جهة جديدة): يبقى المفتاح السابق يفتح عمليات التسليم الصادرة قبل التدوير طوال عمرها البالغ 15 دقيقة على الأكثر ثم يُدمَّر. ينهي التدوير أيضًا حالة detach.

```bash theme={null}
stackkit host delivery recipient [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--authority-key` | string | — | المفتاح العام Ed25519 لجهة التسليم (base64) المراد تثبيته لهذا الجيل |
| `--authority-key-id` | string | — | معرّف المفتاح الذي توقّع به جهة التسليم المغلفات |
| `--challenge` | string | — | قيمة جديدة من جهة التسليم يجب أن يرددها البيان |
| `--owner-approve` | bool | — | اعتمد تغيير المستلم لهذه العقدة |
| `--rotate` | bool | — | أعد التسجيل تحت جيل المستلم التالي |

**أمثلة**

```bash theme={null}
stackkit host delivery recipient --challenge "$CHALLENGE" --authority-key "$WALLET_KEY" --authority-key-id wallet-1 --owner-approve
stackkit host delivery recipient --challenge "$CHALLENGE" --rotate --owner-approve
```

### stackkit host delivery status

اعرض جيل المستلم والجهة المثبّتة وحالة detach والمراجع المسلَّمة.

أبلغ عن جيل المستلم لهذه العقدة وبصمته، والأجيال المتقاعدة التي ما زال يمكن فتحها، والجهة المسلِّمة المثبّتة، وما إذا كانت العقدة منفصلة، وكل سر مسلَّم بحسب المرجع والإصدار مع علامة التدوير الخاصة به. لا تُقرأ أي قيمة.

```bash theme={null}
stackkit host delivery status [flags]
```

## stackkit host environment

راقب ما إذا كان هذا المضيف يبدو شبكة منزلية أم خادمًا عامًا.

اكتشف بيئة الشبكة لهذا الجهاز.

هذه مراقبة وليست اختيارًا لـ Kit. يستخدمها المثبّتان وinit للسؤال قبل تأليف عناوين منزلية محلية على VPS، أو Cloud Kit على مضيف في شبكة محلية. تتجاوز القيمة STACKKIT\_NETWORK\_ENV=home|vps|cloud|unknown الاكتشاف المباشر.

```bash theme={null}
stackkit host environment [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--json` | bool | — | أخرج المراقبة بصيغة JSON |

**أمثلة**

```bash theme={null}
# Show whether this host looks like a home network or a public server
stackkit host environment

# The same observation as JSON
stackkit host environment --json

# Override a wrong detection for the next command, here Basement Kit init on a home host
STACKKIT_NETWORK_ENV=home stackkit init basement-kit --catalog-defaults --owner-source=local --owner-email you@example.com
```

## stackkit host migrate-browser-ca

رحّل المرجع المصدّق القديم (CA) لهذه العقدة إلى سياسة تدعم المتصفحات.

رحّل صراحةً مفاتيح توقيع Basement CA القديمة مع الحفاظ على مفتاح توقيع Owner وهويات PocketID وأسرار وقت التشغيل ومفاتيح أوراق ingress والعناوين ووحدات التخزين. أبقِ الجذر الحالي كما هو. طبّق الخطة الأصلية الحالية وتحقق منها قبل `--complete`. يجب أن يوافق العملاء على الجذر العام المتغيّر عبر تسليم client-trust القائم.

```bash theme={null}
stackkit host migrate-browser-ca [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--complete` | bool | — | تقاعد من سجل الاستعادة بعد Apply الأصلي الحالي والتحقق العادي من TLS |
| `--owner-approve` | bool | — | اعتمد انتقال CA الصريح لهذه العقدة |

## stackkit host preflight

تحقق مما إذا كان هذا المضيف قادرًا على تشغيل StackKit المحدد.

قِس هذا المضيف وقارنه بالحد الأدنى الذي يعلنه الـ Kit.

يجري preflight فحوصات للقراءة فقط: فهو لا يثبّت شيئًا ولا يشغّله ولا يضبطه. يجري apply القبول نفسه قبل أن يعدّل المضيف.

```bash theme={null}
stackkit host preflight [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--json` | bool | — | أخرج تقرير preflight المُصدَّر بصيغة JSON قابلة للقراءة الآلية |
| `--local-node` | string | — | العقدة المحلية الدقيقة في ResolvedPlan المقدَّمة |
| `--policy` | string | — | سياسة القبول: strict أو warn (الافتراضي) أو skip |
| `--resolved-plan` | string | — | ResolvedPlan قانونية موثَّقة تُفحص منافذ الاستماع لمضيفها |

**أمثلة**

```bash theme={null}
# Check this host against the kit selected in the current deployment directory
stackkit host preflight

# Also refuse on warnings and unknown facts, and print the report as JSON
stackkit host preflight --policy strict --json
```

## stackkit host prepare

جهّز هذا المضيف قبل تنفيذ apply لـ Cloud Kit.

وفّر حساب قناة التنفيذ في Cloud وحيازة مفتاح SSH المطلوبين قبل أن يعطّل host-security تسجيل الدخول بحساب root.

تستدعي مثبّتات Cloud Kit وapply هذا الأمر تلقائيًا. يوجد الأمر للتشخيص ولإعادة مساحة العمل إلى حالة متسقة بعد انقطاع يدوي. وهو يُنشئ المفتاح المحفوظ في مساحة العمل تحت .stackkit/cloud-host-security/execution-channel/ أو يعيد استخدامه، ويثبّت المفتاح العام المطابق في حساب Linux الخاص بقناة التنفيذ.

```bash theme={null}
stackkit host prepare [flags]
```

**أمثلة**

```bash theme={null}
# Converge the execution-channel account after an interrupted Cloud Kit install (run as root in the Cloud Kit deployment directory)
cd my-cloud
stackkit host prepare
```

## stackkit host reboot

جدولة إعادة تشغيل هذه العقدة.

جدولة إعادة تشغيل هذه العقدة بعد تأخير قصير والعودة فورًا.

يحدد boot\_id\_before الإقلاع الحالي، فيستطيع المستدعي معرفة أن العقدة عادت بقراءة معرّف إقلاع مختلف. يرفض الأمر عقدة تشغّل مستوى التحكم في Techstack، وعقدة يحتفظ فيها apt أو dpkg بقفله أو يجري فيها تحديث للمضيف، وعقدة لا تستطيع الإقلاع دون تدخل (وحدات تخزين في /etc/crypttab تحتاج إلى عبارة مرور، أو غياب apt).

عند انتهاء التأخير يفحص حارس الحالة مرة أخرى، وينتظر حتى 15 دقيقة لانتهاء أي عملية حزم، ثم يطلب إعادة التشغيل وهو يمسك أقفال dpkg. لا يُعاد تشغيل العقدة التي تبقى مشغولة؛ ويبقى معرّف إقلاعها كما هو.

```bash theme={null}
stackkit host reboot [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--delay` | duration | `30s` | المدة حتى بدء إعادة التشغيل (من 1s إلى 5m) |
| `--json` | bool | — | أخرج نتيجة stackkit.host-maintenance/v1 بصيغة JSON قابلة للقراءة الآلية |
| `--yes` | bool | — | أكّد أنه يجوز إعادة تشغيل هذه العقدة |

**أمثلة**

```bash theme={null}
# Reboot this node in 30 seconds
sudo stackkit host reboot --yes

# Reboot in two minutes and report the boot ID to compare against
sudo stackkit host reboot --yes --delay 2m --json
```

## stackkit host remediate

اعرض الإصلاحات لما وجده preflight للمضيف أو نفّذها.

اعرض الإصلاحات التي تعالج نتائج preflight لهذا المضيف، أو نفّذ أحدها.

بدون `--apply` لا يتغير شيء: يقيس الأمر المضيف ويطبع ما سيفعله كل إصلاح، وهل يمكن التراجع عنه، وهل يحتاج إلى root.

مع `--apply` \<id> `--yes` يُنفَّذ الإصلاح المسمّى، ويُقاس الفحص الذي برّره مرة أخرى بعد ذلك، فتذكر النتيجة ما تغيّر فعلًا لا أنه جرت محاولة.

```bash theme={null}
stackkit host remediate [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--apply` | string | — | نفّذ القرار المسمّى (يتطلب `--yes`) |
| `--auto-reversible` | bool | — | نفّذ كل إصلاح قابل للتراجع ويجوز تشغيله دون إشراف (يتطلب `--yes`) |
| `--json` | bool | — | أخرج خطة المعالجة أو سجلها بصيغة JSON قابلة للقراءة الآلية |
| `--policy` | string | — | سياسة preflight المستخدمة لإيجاد النتائج: strict أو warn (الافتراضي) |
| `--yes` | bool | — | أكّد أنه يجوز للقرار المسمّى تغيير هذا المضيف |

**أمثلة**

```bash theme={null}
# List the fixes for this host's preflight findings without changing anything
stackkit host remediate

# Carry out one fix by the ID the list printed
stackkit host remediate --apply <resolution-id> --yes

# Carry out every undoable fix that may run unattended
stackkit host remediate --auto-reversible --yes
```

## stackkit host security

التحقق من خط أساس أمان المضيف وإصلاحه بأدلة ذات إصدار.

رصد هذه العقدة وفق خط أساس أمان مضيف StackKits واستعادة ما انحرف دون قطع مسار الإدارة.

لا يغيّر 'verify' المضيف أبدًا. فهو ينتج stackkit.host-security-evidence/v1 لجدار الحماية وsshd والحماية من القوة الغاشمة وتحديثات الأمان التلقائية والمعلّقة وحالة إعادة التشغيل ومعلمات النواة والمنافذ المستمعة المكشوفة وانتهاء صلاحية الشهادات، ولثقة SSH CA وشهادة المضيف المسلَّمتين إلى هذه العقدة ('host ssh apply') بمجرد تسجيلهما. تكون كل أداة تحكم compliant أو drifted أو unknown أو استثناءً معتمدًا من المالك، وتنتهي صلاحية الدليل: يصبح الرصد القديم unknown، ولا تُعد أداة تحكم unknown متوافقة أبدًا.

يعمل مستقلًا (Standard Mode، دون حساب) ومن خلال CLI المقيّد بالإصدار المحدد عندما يدير Techstack النشر (`--mode` advanced).

```bash theme={null}
stackkit host security [flags]
```

الأوامر الفرعية: [`stackkit host security repair`](#stackkit-host-security-repair)، [`stackkit host security status`](#stackkit-host-security-status)، [`stackkit host security verify`](#stackkit-host-security-verify)

### stackkit host security repair

استعادة أدوات تحكم خط الأساس المنحرفة دون قطع مسار الإدارة.

تخطيط استعادة أدوات التحكم المنحرفة، أو تنفيذها باستخدام `--apply`.

لا يتغير شيء دون `--apply`: يقيس الأمر المضيف ويطبع ما سيفعله كل إصلاح. ومع `--apply` لا تُمس إلا أدوات التحكم المسماة (`--control`) أو المنحرفة، ويُفحص كل تغيير أولًا:

```text theme={null}
  - the firewall always keeps admitting the ssh sessions in use and every
    --management-source on every sshd port, and a policy that would not is
    refused before it is loaded;
  - password logins are disabled only when an account holds an authorized key;
    without one they stay on, the step is refused with reason no_authorized_key
    and the rest of the baseline is still repaired. The previous sshd and
    firewall configuration is restored if the new one does not validate or does
    not take effect;
  - fail2ban never bans the management path.
```

لا تُمس أداة تحكم يتعذر رصدها، أو اعتمد المالك استثناءً لها. يعيد 'stackkit apply' جدار الحماية وتسجيل دخول root في Cloud Site. تسجّل كل خطوة أداة التحكم قبل التنفيذ وبعده، ولا يغيّر تكرار repair لأداة تحكم compliant شيئًا.

```bash theme={null}
stackkit host security repair [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--apply` | bool | — | تنفيذ الإصلاح؛ ومن دونه يخطط الأمر فقط |
| `--control` | stringArray | — | حصر الإصلاح في معرّف أداة التحكم هذه (قابل للتكرار) |
| `--declared-port` | stringArray | — | منفذ خدمة معلن بالصيغة tcp/443 أو udp/5353 (قابل للتكرار) |
| `--exceptions` | string | `/etc/stackkit/host-security/exceptions.json` | ملف استثناءات يتحكم فيه المالك (يحتاج كل استثناء إلى مالك وتاريخ انتهاء) |
| `--freshness` | duration | `15m0s` | مدة إمكان الاعتماد على الدليل قبل انتهاء صلاحيته (من 1m إلى 24h) |
| `--host-name` | stringArray | — | الاسم الذي يجب أن تحمله شهادة مضيف SSH المسلَّمة (قابل للتكرار؛ الافتراضي: اسم مضيف النظام) |
| `--json` | bool | — | إصدار النتيجة بصيغة JSON قابلة للقراءة آليًا |
| `--kit` | string | — | slug الـ Kit المطلوب تسجيله (الافتراضي: Kit في StackSpec لمساحة العمل) |
| `--local-node` | string | — | الـ Node المحلية المحددة بدقة في ResolvedPlan المقدمة |
| `--management-source` | stringArray | — | الشبكة التي يجب أن تصل دائمًا إلى ssh، بصيغة CIDR (قابلة للتكرار) |
| `--mode` | string | `standard` | وضع دورة الحياة المطلوب تسجيله: standard، أو advanced عندما يدير Techstack هذا النشر |
| `--no-record` | bool | — | عدم كتابة دليل ما بعد الإصلاح ضمن .stackkit/ |
| `--resolved-plan` | string | — | ResolvedPlan قياسية متحقق منها للحكم على الانكشاف وفق المنافذ المستمعة المعلنة فيها |
| `--site-kind` | string | — | نوع Site لهذا المضيف: home أو cloud (الافتراضي: يُستنتج من الـ Kit؛ يحتاجه modern-homelab) |

**أمثلة**

```bash theme={null}
# See what would be repaired
sudo stackkit host security repair --site-kind home

# Restore only the firewall, keeping a jump host reachable
sudo stackkit host security repair --apply --control firewall.default_inbound --management-source 198.51.100.0/24
```

### stackkit host security status

قراءة الدليل المخزّن كما هو الآن، دون رصد المضيف.

قراءة الدليل الذي سجّله 'verify' آخر مرة في مساحة العمل هذه والحكم عليه في الوقت الحالي. يكون الدليل الذي تجاوز مدة حداثته unknown: لا يثبت الرصد القديم شيئًا عن المضيف الآن.

```bash theme={null}
stackkit host security status [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--drift-scope` | string | `all` | الضوابط التي تحدد `--fail-on-drift`: all أو enforced، أي فقط الضوابط التي يفرضها خط الأساس بنفسه؛ وتظل ملاحظة تأخر التحديثات وإعادة التشغيل المنتظرة والتعرّض والشهادات والإبلاغ عنها قائمة |
| `--fail-on-drift` | bool | — | الخروج بالرمز 5 عندما يكون المضيف drifted وبالرمز 6 عندما تكون حالته unknown |
| `--json` | bool | — | إصدار الدليل بصيغة JSON قابلة للقراءة آليًا |

### stackkit host security verify

رصد خط أساس أمان المضيف وكتابة دليل ذي إصدار.

رصد كل أداة تحكم في خط الأساس على هذه العقدة وإنتاج stackkit.host-security-evidence/v1. لا يتغير شيء على المضيف.

تحتاج معظم أدوات التحكم إلى root لرصدها؛ ويُبلّغ عن الأداة التي يتعذر رصدها بأنها unknown مع السبب، لا بوصفها فشلًا. يُكتب الدليل في .stackkit/host-security-evidence.json داخل مساحة العمل ما لم يُمرَّر `--no-record`، وتنتهي صلاحيته بعد `--freshness`.

```bash theme={null}
stackkit host security verify [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--declared-port` | stringArray | — | منفذ خدمة معلن بالصيغة tcp/443 أو udp/5353 (قابل للتكرار) |
| `--drift-scope` | string | `all` | الضوابط التي تحدد `--fail-on-drift`: all أو enforced، أي فقط الضوابط التي يفرضها خط الأساس بنفسه؛ وتظل ملاحظة تأخر التحديثات وإعادة التشغيل المنتظرة والتعرّض والشهادات والإبلاغ عنها قائمة |
| `--exceptions` | string | `/etc/stackkit/host-security/exceptions.json` | ملف استثناءات يتحكم فيه المالك (يحتاج كل استثناء إلى مالك وتاريخ انتهاء) |
| `--fail-on-drift` | bool | — | الخروج بالرمز 5 عندما يكون المضيف drifted وبالرمز 6 عندما تكون حالته unknown |
| `--freshness` | duration | `15m0s` | مدة إمكان الاعتماد على الدليل قبل انتهاء صلاحيته (من 1m إلى 24h) |
| `--host-name` | stringArray | — | الاسم الذي يجب أن تحمله شهادة مضيف SSH المسلَّمة (قابل للتكرار؛ الافتراضي: اسم مضيف النظام) |
| `--json` | bool | — | إصدار النتيجة بصيغة JSON قابلة للقراءة آليًا |
| `--kit` | string | — | slug الـ Kit المطلوب تسجيله (الافتراضي: Kit في StackSpec لمساحة العمل) |
| `--local-node` | string | — | الـ Node المحلية المحددة بدقة في ResolvedPlan المقدمة |
| `--management-source` | stringArray | — | الشبكة التي يجب أن تصل دائمًا إلى ssh، بصيغة CIDR (قابلة للتكرار) |
| `--mode` | string | `standard` | وضع دورة الحياة المطلوب تسجيله: standard، أو advanced عندما يدير Techstack هذا النشر |
| `--no-record` | bool | — | عدم كتابة الدليل ضمن .stackkit/ |
| `--resolved-plan` | string | — | ResolvedPlan قياسية متحقق منها للحكم على الانكشاف وفق المنافذ المستمعة المعلنة فيها |
| `--site-kind` | string | — | نوع Site لهذا المضيف: home أو cloud (الافتراضي: يُستنتج من الـ Kit؛ يحتاجه modern-homelab) |

**أمثلة**

```bash theme={null}
# Verify this host and record the evidence
sudo stackkit host security verify

# Machine-readable, advanced mode, exit non-zero on any drifted control
sudo stackkit host security verify --mode advanced --json --fail-on-drift

# What the Techstack host pre-step runs: only the controls the baseline enforces decide the exit code; patch lag, pending reboot, exposure and certificates are still observed and reported
sudo stackkit host security verify --mode advanced --json --fail-on-drift --drift-scope enforced

# Judge exposure against the ports the verified plan declares
sudo stackkit host security verify --resolved-plan plan.json --local-node node-1
```

## stackkit host ssh

وصول شهادات SSH المسلَّم إلى هذه العقدة.

```bash theme={null}
stackkit host ssh [flags]
```

الأوامر الفرعية: [`stackkit host ssh apply`](#stackkit-host-ssh-apply)

### stackkit host ssh apply

طبّق تسليم ثقة SSH CA المختوم أو الإبطال أو شهادة المضيف من stdin.

اقرأ من stdin مغلف ssh-ca-trust أو ssh-ca-revoke أو ssh-host-certificate مختومًا وموقّعًا من جهة التسليم المثبّتة، وطبّقه على sshd في هذا الخادم:

```text theme={null}
  - ssh-ca-trust installs the owner's user CA keys as TrustedUserCAKeys
    (/etc/ssh/stackkit/trusted_user_ca_keys) and one AuthorizedPrincipalsFile
    per local user (/etc/ssh/stackkit/principals/<user>). Root is never a
    target. An empty key list revokes like ssh-ca-revoke.
  - ssh-ca-revoke removes that trust. Revocations take effect at once and are
    never rolled back; one sshd cannot reload for is recorded as cleanup
    pending and finished by 'host security repair'.
  - ssh-host-certificate installs a host certificate beside the host key it
    certifies, only if it names every --host-name (default: the system
    hostname) and is currently valid.
```

لا يُعاد تحميل sshd إلا بعد أن يقبل 'sshd -t' الإعداد الجديد؛ ويُتراجع عن أي تغيير يفشل. تُسجَّل الحالة المطبَّقة في عهدة owner، فيبلّغ 'host security verify' عن الانحراف ويعيد 'host security repair' تثبيتها.

```bash theme={null}
stackkit host ssh apply [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--host-name` | stringArray | — | الاسم الذي يجب أن تحمله شهادة المضيف بوصفه principal (قابل للتكرار؛ الافتراضي: اسم مضيف النظام) |
| `--owner-approve` | bool | — | اعتمد تغيير وصول SSH لهذا الخادم |
| `--tenant-ref` | string | — | المستأجر (tenant) الذي يجب أن يُوجَّه إليه التسليم المختوم |

**أمثلة**

```bash theme={null}
sudo stackkit host ssh apply --tenant-ref "$TENANT" --owner-approve < envelope.json
```

## stackkit host updates

خطّط لتحديثات حزم نظام التشغيل على هذه العقدة ونفّذها.

خطّط لتحديثات حزم نظام التشغيل على عقدة Debian أو Ubuntu هذه ونفّذها.

بيئة تشغيل الحاويات (docker.io وdocker-ce\* وcontainerd\* وrunc) محجوزة: تُدرج في الخطة لكن apply لا يثبّتها أبدًا، لأن ترقيتها تعيد تشغيل كل حمل عمل. لا يزيل apply أي حزم، ولا يشغّل autoremove، ولا يعيد التشغيل؛ استخدم 'stackkit host reboot' لذلك.

```bash theme={null}
stackkit host updates [flags]
```

الأوامر الفرعية: [`stackkit host updates apply`](#stackkit-host-updates-apply), [`stackkit host updates plan`](#stackkit-host-updates-plan)

### stackkit host updates apply

ثبّت خطة التحديث التي جرت مراجعتها كما هي بالضبط.

ثبّت مجموعة الحزم نفسها التي أبلغ عنها 'stackkit host updates plan' الذي جرت مراجعته.

تُحاكى المجموعة المعلّقة مرة أخرى أولًا؛ وإذا اختلف digest الخاص بها عن `--plan-digest` فلا يُثبَّت شيء (plan\_stale). يعمل apt دون تفاعل داخل وحدة systemd مؤقتة (kombify-host-update-\*)، ويحتفظ بملفات الإعداد الموجودة، فانتهاء مهلة CLI أو الوكيل يوقف الانتظار فقط ولا يوقف dpkg أبدًا. تسجّل النتيجة إصدار كل حزمة قبل التحديث وبعده، وما إذا كانت العقدة تحتاج الآن إلى إعادة تشغيل.

```bash theme={null}
stackkit host updates apply [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--json` | bool | — | أخرج نتيجة stackkit.host-maintenance/v1 بصيغة JSON قابلة للقراءة الآلية |
| `--plan-digest` | string | — | **مطلوب.** plan\_digest للخطة التي جرت مراجعتها (sha256:\<hex>) |
| `--yes` | bool | — | أكّد أنه يجوز تثبيت الحزم المخطَّط لها |

**أمثلة**

```bash theme={null}
# Apply the plan you reviewed
sudo stackkit host updates apply --plan-digest sha256:<digest> --yes
```

### stackkit host updates plan

حدّث فهرس الحزم واعرض التحديثات المعلّقة.

حدّث فهرس الحزم واعرض ما سيثبّته 'stackkit host updates apply'.

تسرد النتيجة كل حزمة معلّقة مع إصدارها الحالي والجديد، وحزم بيئة تشغيل الحاويات المحجوزة، والحزم التي يبقيها apt دون ترقية، وما إذا كانت إعادة التشغيل مرجّحة (النواة أو مكتبة C أو systemd)، ومشكلات dpkg. يربط plan\_digest مجموعة الحزم بالضبط؛ ويرفض apply إذا لم يعد مطابقًا.

```bash theme={null}
stackkit host updates plan [flags]
```

| الخيار | النوع | الافتراضي | الوصف |
| - | - | - | - |
| `--json` | bool | — | أخرج نتيجة stackkit.host-maintenance/v1 بصيغة JSON قابلة للقراءة الآلية |

**أمثلة**

```bash theme={null}
# Show the pending updates of this node
sudo stackkit host updates plan

# Machine-readable plan with its plan_digest
sudo stackkit host updates plan --json
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.