docs(nodes): note that updating an mTLS node needs a node-admin token (#6957)

A master that reaches a node over mTLS with no bearer token is treated as
node-sync, which cannot call /server/updatePanel, so "Update panel" on such a
node fails with HTTP 403. That is intended, but the multi-node guide said the
API token is "not needed in mTLS mode" (#6953).

The guide (en/fa/ru/zh) and the node form's mTLS hint (all 14 locales) now say
that updating the node from the master still needs a token with the
node-admin scope. No logic changes.

The CI workflow's path filter does not cover internal/web/translation or docs,
so only Docs CI ran on this head; the locale-dependent tests were run locally.
This commit is contained in:
Nikan Zeyaei
2026-11-13 19:24:30 +03:30
committed by GitHub
parent 3a28d130a7
commit 21aa662629
18 changed files with 47 additions and 18 deletions
@@ -23,7 +23,7 @@ Provide the node's connection details:
| **Scheme** | `https` (default) or `http`. |
| **Address / Port**| The node panel's host and port. |
| **Base path** | The node's web base path. |
| **API token** | A Bearer token created on the node (not needed in mTLS mode). |
| **API token** | A Bearer token created on the node. Optional in mTLS mode, except for **Update panel** (needs `node-admin`). |
| **TLS verify** | `verify` (default), `skip`, `pin` (pin a cert SHA-256), or `mtls`. |
| **Inbound sync** | `all` inbounds, or `selected` by tag. |
| **Outbound tag** | Optionally reach the node **through** a named outbound (egress bridge).|
@@ -64,6 +64,14 @@ next restart.
Set the node's TLS verify mode to `mtls`. The master now presents a client
certificate instead of an API token.
<Callout type="warn">
A node reached over mTLS without a token only has the `node-sync` scope, which
cannot run **Update panel** (the node answers HTTP 403, "this API token is not
permitted to access this endpoint"). To update such a node from the master,
create an API token with the `node-admin` scope on the node and paste it into
the master's **API token** field for that node. Keep TLS verify on `mtls`.
</Callout>
</Step>
</Steps>
@@ -20,7 +20,7 @@ icon: Boxes
| **Scheme** | `https` (پیش‌فرض) یا `http`. |
| **Address / Port**| میزبان و پورت پنل نود. |
| **Base path** | مسیر پایهٔ وب نود. |
| **API token** | یک توکن Bearer که روی نود ساخته می‌شود (در حالت mTLS لازم نیست). |
| **API token** | یک توکن Bearer که روی نود ساخته می‌شود (در حالت mTLS اختیاری است، به‌جز **به‌روزرسانی پنل** که به توکن `node-admin` نیاز دارد). |
| **TLS verify** | `verify` (پیش‌فرض)، `skip`، `pin` (پین‌کردن SHA-256 گواهی) یا `mtls`. |
| **Inbound sync** | همهٔ inboundها (`all`) یا انتخاب‌شده (`selected`) بر اساس تگ. |
| **Outbound tag** | به‌اختیار از طریق یک outbound نام‌دار به نود برسید (پل خروجی). |
@@ -59,6 +59,14 @@ icon: Boxes
حالت TLS verify نود را روی `mtls` تنظیم کنید. اکنون مستر به‌جای یک توکن API یک
گواهی کلاینت ارائه می‌دهد.
<Callout type="warn">
نودی که بدون توکن و از طریق mTLS متصل شده فقط دامنهٔ `node-sync` را دارد و نمی‌تواند
**به‌روزرسانی پنل** را اجرا کند (نود پاسخ HTTP 403 با پیام
«this API token is not permitted to access this endpoint» می‌دهد). برای به‌روزرسانی
چنین نودی از مستر، روی نود یک توکن API با دامنهٔ `node-admin` بسازید و آن را در
فیلد **API token** همان نود در مستر وارد کنید. حالت TLS verify را روی `mtls` نگه دارید.
</Callout>
</Step>
</Steps>
+10 -1
View File
@@ -24,7 +24,7 @@ API этого узла. Главная панель опрашивает каж
| **Схема** | `https` (по умолчанию) или `http`. |
| **Адрес / Порт** | Хост и порт панели узла. |
| **Базовый путь** | Веб-базовый путь узла. |
| **API-токен** | Bearer-токен, созданный на узле (не нужен в режиме mTLS). |
| **API-токен** | Bearer-токен, созданный на узле (в режиме mTLS необязателен, кроме **Обновления панели** — нужен `node-admin`). |
| **Проверка TLS** | `verify` (по умолчанию), `skip`, `pin` (закрепить SHA-256 сертификата) или `mtls`. |
| **Синхронизация inbound** | `all` (все) inbound-соединения или `selected` (выбранные) по тегу. |
| **Тег исходящего**| При необходимости обращаться к узлу **через** именованное исходящее соединение (мост исходящего трафика). |
@@ -67,6 +67,15 @@ API этого узла. Главная панель опрашивает каж
Задайте на узле режим проверки TLS `mtls`. Теперь главная панель предъявляет
клиентский сертификат вместо API-токена.
<Callout type="warn">
Узел, подключённый по mTLS без токена, имеет только область `node-sync`, которая
не позволяет выполнить **Обновление панели** (узел отвечает HTTP 403,
«this API token is not permitted to access this endpoint»). Чтобы обновить такой
узел с главной панели, создайте на узле API-токен с областью `node-admin` и
вставьте его в поле **API-токен** этого узла на главной панели. Режим проверки
TLS оставьте `mtls`.
</Callout>
</Step>
</Steps>
@@ -20,7 +20,7 @@ icon: Boxes
| **Scheme** | `https`(默认)或 `http`。 |
| **Address / Port**| 节点面板的主机和端口。 |
| **Base path** | 节点的 Web 基础路径。 |
| **API token** | 在节点上创建的 Bearer 令牌(mTLS 模式下不需要)。 |
| **API token** | 在节点上创建的 Bearer 令牌(mTLS 模式下可选,但**更新面板**需要 `node-admin` 令牌)。 |
| **TLS verify** | `verify`(默认)、`skip`、`pin`(固定证书 SHA-256)或 `mtls`。 |
| **Inbound sync** | `all` 入站,或按标签 `selected`。 |
| **Outbound tag** | 可选地**通过**指定的出站到达节点(出口桥接)。 |
@@ -53,6 +53,10 @@ icon: Boxes
### 将节点切换到 mTLS
将节点的 TLS 验证模式设置为 `mtls`。现在主控将出示客户端证书而非 API 令牌。
<Callout type="warn">
通过 mTLS 连接且未提供令牌的节点只具有 `node-sync` 权限范围,无法执行**更新面板**(节点返回 HTTP 403,“this API token is not permitted to access this endpoint”)。要从主控更新此类节点,请在节点上创建具有 `node-admin` 权限范围的 API 令牌,并将其填入主控中该节点的 **API token** 字段。TLS 验证模式保持为 `mtls`。
</Callout>
</Step>
</Steps>
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "تثبيت الشهادة (SHA-256)",
"tlsSkip": "تخطّي التحقق",
"tlsMtls": "TLS متبادل (شهادة العميل)",
"mtlsFormHint": "يصادق هذا النود اللوحة باستخدام شهادة عميل. انسخ CA الخاص بهذه اللوحة من قسم mTLS النود إلى النود، واضبط CA الموثوق به، ثم أعد تشغيله.",
"mtlsFormHint": "يصادق هذا النود اللوحة باستخدام شهادة عميل. انسخ CA الخاص بهذه اللوحة من قسم mTLS النود إلى النود، واضبط CA الموثوق به، ثم أعد تشغيله. لا يزال تحديث لوحة هذا النود من هنا يتطلب رمز API بنطاق node-admin.",
"mtls": {
"title": "mTLS النود",
"intro": "يضيف TLS المتبادل عامل شهادة العميل فوق رمز API في الاتصالات بين النودات. وهو اختياري: اتركه فارغًا للاكتفاء بالمصادقة عبر الرمز.",
+1 -1
View File
@@ -1315,7 +1315,7 @@
"tlsPin": "Pin certificate (SHA-256)",
"tlsSkip": "Skip verification",
"tlsMtls": "Mutual TLS (client certificate)",
"mtlsFormHint": "This node authenticates the panel with a client certificate. Copy this panel's CA from the Node mTLS section onto the node, set its Trusted parent CA, then restart it.",
"mtlsFormHint": "This node authenticates the panel with a client certificate. Copy this panel's CA from the Node mTLS section onto the node, set its Trusted parent CA, then restart it. Updating this node's panel from here still needs an API token with the node-admin scope.",
"mtls": {
"title": "Node mTLS",
"intro": "Mutual TLS adds a client-certificate factor on top of the API token for node-to-node calls. It is opt-in: leave it empty to keep token-only auth.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "Fijar certificado (SHA-256)",
"tlsSkip": "Omitir verificación",
"tlsMtls": "TLS mutuo (certificado de cliente)",
"mtlsFormHint": "Este nodo autentica al panel con un certificado de cliente. Copia el CA de este panel desde la sección mTLS del nodo al nodo, configura su CA de confianza y luego reinícialo.",
"mtlsFormHint": "Este nodo autentica al panel con un certificado de cliente. Copia el CA de este panel desde la sección mTLS del nodo al nodo, configura su CA de confianza y luego reinícialo. Actualizar el panel de este nodo desde aquí sigue requiriendo un token de API con el alcance node-admin.",
"mtls": {
"title": "mTLS del nodo",
"intro": "TLS mutuo añade un factor de certificado de cliente además del token de API para las llamadas entre nodos. Es opcional: déjalo vacío para mantener solo la autenticación por token.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "Pin گواهی (SHA-256)",
"tlsSkip": "رد کردن اعتبارسنجی",
"tlsMtls": "TLS متقابل (گواهی کلاینت)",
"mtlsFormHint": "این نود با یک گواهی کلاینت، پنل را احراز هویت می‌کند. CA این پنل را از بخش mTLS نود به نود کپی کنید، CA مورد اعتماد آن را تنظیم کنید و سپس آن را راه‌اندازی مجدد کنید.",
"mtlsFormHint": "این نود با یک گواهی کلاینت، پنل را احراز هویت می‌کند. CA این پنل را از بخش mTLS نود به نود کپی کنید، CA مورد اعتماد آن را تنظیم کنید و سپس آن را راه‌اندازی مجدد کنید. به‌روزرسانی پنل این نود از اینجا همچنان به یک توکن API با دامنهٔ node-admin نیاز دارد.",
"mtls": {
"title": "mTLS نود",
"intro": "TLS متقابل علاوه بر توکن API، یک عامل گواهی کلاینت برای ارتباط بین نودها اضافه می‌کند. اختیاری است: برای استفاده فقط از احراز هویت با توکن، آن را خالی بگذارید.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "Pin sertifikat (SHA-256)",
"tlsSkip": "Lewati verifikasi",
"tlsMtls": "TLS mutual (sertifikat klien)",
"mtlsFormHint": "Node ini mengautentikasi panel dengan sertifikat klien. Salin CA panel ini dari bagian mTLS Node ke node, atur CA tepercayanya, lalu mulai ulang.",
"mtlsFormHint": "Node ini mengautentikasi panel dengan sertifikat klien. Salin CA panel ini dari bagian mTLS Node ke node, atur CA tepercayanya, lalu mulai ulang. Memperbarui panel node ini dari sini tetap memerlukan token API dengan cakupan node-admin.",
"mtls": {
"title": "mTLS Node",
"intro": "TLS mutual menambahkan faktor sertifikat klien di atas token API untuk panggilan antar-node. Bersifat opsional: biarkan kosong untuk tetap menggunakan autentikasi token saja.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "証明書をピン留め(SHA-256)",
"tlsSkip": "検証をスキップ",
"tlsMtls": "相互 TLS(クライアント証明書)",
"mtlsFormHint": "このノードはクライアント証明書でパネルを認証します。「ノード mTLS」セクションからこのパネルの CA をノードにコピーし、信頼する CA を設定してから再起動してください。",
"mtlsFormHint": "このノードはクライアント証明書でパネルを認証します。「ノード mTLS」セクションからこのパネルの CA をノードにコピーし、信頼する CA を設定してから再起動してください。 ここからこのノードのパネルを更新するには、node-admin スコープの API トークンが引き続き必要です。",
"mtls": {
"title": "ノード mTLS",
"intro": "相互 TLS は、ノード間通信で API トークンに加えてクライアント証明書による認証を追加します。任意です。空のままにするとトークンのみの認証になります。",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "Fixar certificado (SHA-256)",
"tlsSkip": "Ignorar verificação",
"tlsMtls": "TLS mútuo (certificado de cliente)",
"mtlsFormHint": "Este nó autentica o painel com um certificado de cliente. Copie o CA deste painel na seção mTLS do nó para o nó, defina o CA confiável dele e reinicie-o.",
"mtlsFormHint": "Este nó autentica o painel com um certificado de cliente. Copie o CA deste painel na seção mTLS do nó para o nó, defina o CA confiável dele e reinicie-o. Atualizar o painel deste nó a partir daqui ainda exige um token de API com o escopo node-admin.",
"mtls": {
"title": "mTLS do nó",
"intro": "O TLS mútuo adiciona um fator de certificado de cliente além do token de API nas chamadas entre nós. É opcional: deixe vazio para manter apenas a autenticação por token.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "Закрепить сертификат (SHA-256)",
"tlsSkip": "Пропустить проверку",
"tlsMtls": "Взаимный TLS (клиентский сертификат)",
"mtlsFormHint": "Этот узел аутентифицирует панель с помощью клиентского сертификата. Скопируйте CA этой панели из раздела «mTLS узла» на узел, задайте его доверенный CA и перезапустите узел.",
"mtlsFormHint": "Этот узел аутентифицирует панель с помощью клиентского сертификата. Скопируйте CA этой панели из раздела «mTLS узла» на узел, задайте его доверенный CA и перезапустите узел. Для обновления панели этого узла отсюда по-прежнему нужен API-токен с областью node-admin.",
"mtls": {
"title": "mTLS узла",
"intro": "Взаимный TLS добавляет фактор клиентского сертификата поверх API-токена для вызовов между узлами. Это необязательно: оставьте пустым, чтобы использовать только аутентификацию по токену.",
+1 -1
View File
@@ -1315,7 +1315,7 @@
"tlsPin": "Pevný odtlačok certifikátu (SHA-256)",
"tlsSkip": "Vynechať overenie",
"tlsMtls": "Vzájomné TLS (klientsky certifikát)",
"mtlsFormHint": "Tento server overuje panel klientskym certifikátom. Skopírujte certifikačnú autoritu tohto panelu z časti mTLS serverov na vzdialený server, nastavte jeho dôveryhodnú nadradenú autoritu a potom ho reštartujte.",
"mtlsFormHint": "Tento server overuje panel klientskym certifikátom. Skopírujte certifikačnú autoritu tohto panelu z časti mTLS serverov na vzdialený server, nastavte jeho dôveryhodnú nadradenú autoritu a potom ho reštartujte. Aktualizácia panelu tohto servera odtiaľto stále vyžaduje API token s rozsahom node-admin.",
"mtls": {
"title": "mTLS serverov",
"intro": "Vzájomné TLS pridáva k tokenu API aj overenie klientskym certifikátom pri komunikácii medzi servermi. Je voliteľné. Prázdne nastavenie ponechá overenie iba tokenom.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "Sertifikayı Sabitle (SHA-256)",
"tlsSkip": "Doğrulamayı Atla",
"tlsMtls": "Karşılıklı TLS (istemci sertifikası)",
"mtlsFormHint": "Bu düğüm, paneli bir istemci sertifikasıyla doğrular. Düğüm mTLS bölümünden bu panelin CA’sını düğüme kopyalayın, güvenilen CA’sını ayarlayın ve ardından düğümü yeniden başlatın.",
"mtlsFormHint": "Bu düğüm, paneli bir istemci sertifikasıyla doğrular. Düğüm mTLS bölümünden bu panelin CA’sını düğüme kopyalayın, güvenilen CA’sını ayarlayın ve ardından düğümü yeniden başlatın. Bu düğümün panelini buradan güncellemek için yine de node-admin kapsamlı bir API belirteci gerekir.",
"mtls": {
"title": "Düğüm mTLS",
"intro": "Karşılıklı TLS, düğümler arası çağrılarda API belirtecinin yanına bir istemci sertifikası faktörü ekler. İsteğe bağlıdır: yalnızca belirteçle kimlik doğrulamayı sürdürmek için boş bırakın.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "Закріпити сертифікат (SHA-256)",
"tlsSkip": "Пропустити перевірку",
"tlsMtls": "Взаємний TLS (клієнтський сертифікат)",
"mtlsFormHint": "Цей вузол автентифікує панель за допомогою клієнтського сертифіката. Скопіюйте CA цієї панелі з розділу «mTLS вузла» на вузол, задайте його довірений CA та перезапустіть вузол.",
"mtlsFormHint": "Цей вузол автентифікує панель за допомогою клієнтського сертифіката. Скопіюйте CA цієї панелі з розділу «mTLS вузла» на вузол, задайте його довірений CA та перезапустіть вузол. Для оновлення панелі цього вузла звідси все одно потрібен API-токен з областю node-admin.",
"mtls": {
"title": "mTLS вузла",
"intro": "Взаємний TLS додає фактор клієнтського сертифіката поверх API-токена для викликів між вузлами. Це необов’язково: залиште порожнім, щоб використовувати лише автентифікацію за токеном.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "Ghim chứng chỉ (SHA-256)",
"tlsSkip": "Bỏ qua xác minh",
"tlsMtls": "TLS song phương (chứng chỉ máy khách)",
"mtlsFormHint": "Nút này xác thực bảng điều khiển bằng chứng chỉ máy khách. Sao chép CA của bảng điều khiển này từ mục mTLS nút sang nút, đặt CA tin cậy của nó, rồi khởi động lại.",
"mtlsFormHint": "Nút này xác thực bảng điều khiển bằng chứng chỉ máy khách. Sao chép CA của bảng điều khiển này từ mục mTLS nút sang nút, đặt CA tin cậy của nó, rồi khởi động lại. Cập nhật bảng điều khiển của nút này từ đây vẫn cần token API có phạm vi node-admin.",
"mtls": {
"title": "mTLS nút",
"intro": "TLS song phương bổ sung yếu tố chứng chỉ máy khách bên cạnh token API cho các lệnh gọi giữa các nút. Đây là tùy chọn: để trống để chỉ dùng xác thực bằng token.",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "固定证书(SHA-256)",
"tlsSkip": "跳过校验",
"tlsMtls": "双向 TLS(客户端证书)",
"mtlsFormHint": "此节点使用客户端证书对面板进行认证。请从“节点 mTLS”区域复制本面板的 CA 到该节点,设置其受信任的 CA,然后重启该节点。",
"mtlsFormHint": "此节点使用客户端证书对面板进行认证。请从“节点 mTLS”区域复制本面板的 CA 到该节点,设置其受信任的 CA,然后重启该节点。 从这里更新此节点的面板仍需要具有 node-admin 权限范围的 API 令牌。",
"mtls": {
"title": "节点 mTLS",
"intro": "双向 TLS 在节点间调用的 API 令牌之上增加客户端证书认证。此为可选项:留空则仅使用令牌认证。",
+1 -1
View File
@@ -1194,7 +1194,7 @@
"tlsPin": "釘選憑證(SHA-256)",
"tlsSkip": "略過驗證",
"tlsMtls": "雙向 TLS(用戶端憑證)",
"mtlsFormHint": "此節點使用用戶端憑證對面板進行驗證。請從「節點 mTLS」區域複製本面板的 CA 到該節點,設定其受信任的 CA,然後重新啟動該節點。",
"mtlsFormHint": "此節點使用用戶端憑證對面板進行驗證。請從「節點 mTLS」區域複製本面板的 CA 到該節點,設定其受信任的 CA,然後重新啟動該節點。 從這裡更新此節點的面板仍需要具有 node-admin 權限範圍的 API 權杖。",
"mtls": {
"title": "節點 mTLS",
"intro": "雙向 TLS 在節點間呼叫的 API 權杖之上增加用戶端憑證驗證。此為選用項目:留空則僅使用權杖驗證。",