diff --git a/.github/scripts/build_i18n_messages.py b/.github/scripts/build_i18n_messages.py index 9b5d9cdc..cc78fb52 100644 --- a/.github/scripts/build_i18n_messages.py +++ b/.github/scripts/build_i18n_messages.py @@ -65,7 +65,7 @@ from build_translation_cache import ( # noqa: E402 # users on sk see a decent auto-translation for new keys instead of raw # English while the human maintainer catches up, and Vaso73 keeps full # ownership of the wording via follow-up PRs. -DEFAULT_LANGUAGES = ("es", "de", "fr", "it", "pt", "sk", "sv") +DEFAULT_LANGUAGES = ("es", "de", "fr", "it", "pt", "sk", "sv", "ru") DEFAULT_CONTEXT = "Context: Technical UI text for a Proxmox management dashboard. Translate:" # next-intl / ICU-style placeholders: {name}, {vmid}, {count}, {app_name}. diff --git a/.github/scripts/build_translation_cache.py b/.github/scripts/build_translation_cache.py index 73919c38..983c438a 100644 --- a/.github/scripts/build_translation_cache.py +++ b/.github/scripts/build_translation_cache.py @@ -30,7 +30,7 @@ from urllib.parse import quote from urllib.request import Request, urlopen -DEFAULT_LANGUAGES = ("es", "fr", "de", "it", "pt", "sk", "sv") +DEFAULT_LANGUAGES = ("es", "fr", "de", "it", "pt", "sk", "sv", "ru") DEFAULT_CONTEXT = "Context: Technical message for Proxmox and IT. Translate:" # googletrans and the public Google endpoint used by this workflow do not # support Cloud Translation glossaries. Protect product names, package names diff --git a/.github/scripts/build_web_docs_i18n.py b/.github/scripts/build_web_docs_i18n.py index cf77fd5f..4811001e 100644 --- a/.github/scripts/build_web_docs_i18n.py +++ b/.github/scripts/build_web_docs_i18n.py @@ -24,7 +24,7 @@ from build_translation_cache import ( # noqa: E402 ) -DEFAULT_LANGUAGES = ("es", "de", "fr", "it", "pt", "sk", "sv") +DEFAULT_LANGUAGES = ("es", "de", "fr", "it", "pt", "sk", "sv", "ru") DEFAULT_CONTEXT = ( "Context: ProxMenux technical documentation for Proxmox VE users. " "Preserve product names, commands, paths, variables and placeholders. Translate:" diff --git a/.github/scripts/tests/test_fencing_wording.py b/.github/scripts/tests/test_fencing_wording.py index ccd66a15..8bbcce4d 100644 --- a/.github/scripts/tests/test_fencing_wording.py +++ b/.github/scripts/tests/test_fencing_wording.py @@ -136,6 +136,7 @@ class FencingWordingTests(unittest.TestCase): 'pt': ('{hostname}: evento do cluster comunicado', 'Foi comunicado um evento do cluster:\n{reason}', 'Evento do cluster', 'Eventos do cluster'), 'sk': ('{hostname}: hlásená udalosť klastra', 'Bola hlásená udalosť klastra:\n{reason}', 'Udalosť klastra', 'Udalosti klastra'), 'sv': ('{hostname}: klusterhändelse rapporterad', 'En klusterhändelse har rapporterats:\n{reason}', 'Klusterhändelse', 'Klusterhändelser'), + 'ru': ('{hostname}: получено сообщение о событии в кластере', 'Получено сообщение о событии в кластере:\n{reason}', 'Событие в кластере', 'События кластера'), } self.assertEqual(set(self.catalogs), {'en', *expected}) for lang, (title, body, label, settings) in expected.items(): diff --git a/.github/scripts/tests/test_oci_recovery_inventory_wording.py b/.github/scripts/tests/test_oci_recovery_inventory_wording.py index c84c2c07..b51affb7 100644 --- a/.github/scripts/tests/test_oci_recovery_inventory_wording.py +++ b/.github/scripts/tests/test_oci_recovery_inventory_wording.py @@ -202,7 +202,7 @@ class RecoveryMessages(unittest.TestCase): module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) paths = sorted((ROOT / 'lang').glob('*.json')) - self.assertEqual(len(paths), 7) + self.assertEqual(len(paths), 8) for path in paths: cache = json.loads(path.read_text()) setattr(module, '_language', path.stem) diff --git a/.github/scripts/tests/test_oci_security_mount_wording.py b/.github/scripts/tests/test_oci_security_mount_wording.py index 673d9e05..63717758 100644 --- a/.github/scripts/tests/test_oci_security_mount_wording.py +++ b/.github/scripts/tests/test_oci_security_mount_wording.py @@ -103,7 +103,7 @@ class SecurityMountWording(unittest.TestCase): module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) paths = sorted((ROOT / 'lang').glob('*.json')) - self.assertEqual(len(paths), 7) + self.assertEqual(len(paths), 8) for path in paths: cache = json.loads(path.read_text()) setattr(module, '_language', path.stem) diff --git a/.github/scripts/tests/test_oci_wording.py b/.github/scripts/tests/test_oci_wording.py index 67f6dda9..a4c2e202 100644 --- a/.github/scripts/tests/test_oci_wording.py +++ b/.github/scripts/tests/test_oci_wording.py @@ -63,7 +63,7 @@ class OciWordingTests(TestCase): module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) paths = sorted((ROOT / 'lang').glob('*.json')) - self.assertEqual(len(paths), 7) + self.assertEqual(len(paths), 8) for path in paths: cache = json.loads(path.read_text()) setattr(module, '_language', path.stem) diff --git a/.github/workflows/build-i18n-messages.yml b/.github/workflows/build-i18n-messages.yml index 392de3b5..d503b52d 100644 --- a/.github/workflows/build-i18n-messages.yml +++ b/.github/workflows/build-i18n-messages.yml @@ -42,8 +42,8 @@ on: type: boolean default: false languages: - description: 'Comma-separated locales. Default: es,de,fr,it,pt,sk,sv (guardrail protects Vaso73 sk).' - default: 'es,de,fr,it,pt,sk,sv' + description: 'Comma-separated locales. Default: es,de,fr,it,pt,sk,sv,ru (guardrail protects Vaso73 sk).' + default: 'es,de,fr,it,pt,sk,sv,ru' # Prevent two runs from racing on the same branch and fighting over the # auto-commit. cancel-in-progress:false because a full first-run may take @@ -94,7 +94,7 @@ jobs: # Keep this fallback in sync with the workflow_dispatch input # default above AND with DEFAULT_LANGUAGES in the Python script — # `push` triggers hit this branch (inputs are empty on push). - LANGS="${LANGS:-es,de,fr,it,pt,sk,sv}" + LANGS="${LANGS:-es,de,fr,it,pt,sk,sv,ru}" python .github/scripts/build_i18n_messages.py \ --source AppImage/messages/en/common.json \ --messages-dir AppImage/messages \ diff --git a/.github/workflows/build-web-docs-i18n.yml b/.github/workflows/build-web-docs-i18n.yml index a457b70b..2c9ecaeb 100644 --- a/.github/workflows/build-web-docs-i18n.yml +++ b/.github/workflows/build-web-docs-i18n.yml @@ -8,7 +8,7 @@ on: inputs: languages: description: 'Comma-separated locales' - default: 'es,de,fr,it,pt,sk,sv' + default: 'es,de,fr,it,pt,sk,sv,ru' section: description: 'File or directory below web/messages/en' default: '.' @@ -57,7 +57,7 @@ jobs: shell: bash run: | LANGUAGES="${{ github.event.inputs.languages }}" - LANGUAGES="${LANGUAGES:-es,de,fr,it,pt,sk,sv}" + LANGUAGES="${LANGUAGES:-es,de,fr,it,pt,sk,sv,ru}" SECTION="${{ github.event.inputs.section }}" SECTION="${SECTION:-.}" MAX_FILES="${{ github.event.inputs.max_files }}" @@ -86,7 +86,7 @@ jobs: python .github/scripts/build_web_docs_i18n.py \ --source-dir web/messages/en \ --messages-dir web/messages \ - --languages "${{ github.event.inputs.languages || 'es,de,fr,it,pt,sk,sv' }}" \ + --languages "${{ github.event.inputs.languages || 'es,de,fr,it,pt,sk,sv,ru' }}" \ --check - name: Commit and push changes diff --git a/AppImage/components/notification-settings.tsx b/AppImage/components/notification-settings.tsx index 9a82d3c2..1cd03ef5 100644 --- a/AppImage/components/notification-settings.tsx +++ b/AppImage/components/notification-settings.tsx @@ -214,6 +214,7 @@ const NOTIFICATION_LANGUAGES = [ { value: "pt", label: "Português" }, { value: "sk", label: "Slovenčina" }, { value: "sv", label: "Svenska" }, + { value: "ru", label: "Русский" }, ] function normalizeNotificationLanguage(notificationLanguage?: string, legacyAiLanguage?: string): string { diff --git a/AppImage/lib/i18n/catalogs.ts b/AppImage/lib/i18n/catalogs.ts index 3547eb10..dce5a1ca 100644 --- a/AppImage/lib/i18n/catalogs.ts +++ b/AppImage/lib/i18n/catalogs.ts @@ -6,6 +6,7 @@ import itMessages from "../../messages/it/common.json" import ptMessages from "../../messages/pt/common.json" import skMessages from "../../messages/sk/common.json" import svMessages from "../../messages/sv/common.json" +import ruMessages from "../../messages/ru/common.json" import type { LanguageCode } from "./languages" type MessageTree = Record @@ -20,4 +21,5 @@ export const MESSAGE_CATALOG: Record = { pt: ptMessages as MessageTree, sk: skMessages as MessageTree, sv: svMessages as MessageTree, + ru: ruMessages as MessageTree, } diff --git a/AppImage/lib/i18n/languages.ts b/AppImage/lib/i18n/languages.ts index 6bdd638b..a696ced7 100644 --- a/AppImage/lib/i18n/languages.ts +++ b/AppImage/lib/i18n/languages.ts @@ -1,7 +1,7 @@ export const LANGUAGE_STORAGE_KEY = "proxmenux-ui-language" export const DEFAULT_LANGUAGE = "en" -export type LanguageCode = "en" | "es" | "fr" | "de" | "it" | "pt" | "sk" | "sv" +export type LanguageCode = "en" | "es" | "fr" | "de" | "it" | "pt" | "sk" | "sv" | "ru" export type LanguageStatus = "complete" | "partial" | "needs-translation" @@ -21,6 +21,7 @@ export const SUPPORTED_LANGUAGES: SupportedLanguage[] = [ { code: "pt", englishName: "Portuguese", nativeName: "Português", status: "complete" }, { code: "sk", englishName: "Slovak", nativeName: "Slovenčina", status: "complete" }, { code: "sv", englishName: "Swedish", nativeName: "Svenska", status: "complete" }, + { code: "ru", englishName: "Russian", nativeName: "Русский", status: "complete" }, ] export function isSupportedLanguage(value: string | null | undefined): value is LanguageCode { diff --git a/AppImage/messages/README.md b/AppImage/messages/README.md index dd726e3d..04931343 100644 --- a/AppImage/messages/README.md +++ b/AppImage/messages/README.md @@ -3,7 +3,7 @@ The ProxMenux Monitor dashboard uses a small client-side i18n layer. - English (`en`) is the source language and the runtime fallback. -- Eight locales are shipped and fully populated end-to-end: `en`, `de`, `es`, `fr`, `it`, `pt`, `sk`, `sv`. Non-English catalogs started from an automated bootstrap and are being polished as native speakers pass through them. +- Nine locales are shipped and fully populated end-to-end: `en`, `de`, `es`, `fr`, `it`, `pt`, `sk`, `sv`, `ru`. Non-English catalogs started from an automated bootstrap and are being polished as native speakers pass through them. To improve a translation, edit the values in your locale's `common.json` — keep placeholders such as `{uptime}`, `{vmid}` or `{count}` unchanged, and don't translate brand or product names (`ProxMenux Monitor`, `Proxmox Backup Server`, `Secure Gateway`, `Tailscale`, etc.). Missing keys fall back to English at runtime, so a partial refresh is always safe to merge. diff --git a/AppImage/messages/ru/common.json b/AppImage/messages/ru/common.json new file mode 100644 index 00000000..2ff56a98 --- /dev/null +++ b/AppImage/messages/ru/common.json @@ -0,0 +1,7998 @@ +{ + "pbs": { + "title": "Proxmox Backup Server", + "server": "Сервер PBS", + "chooseServer": "Выберите сервер PBS", + "local": "Локальный PBS", + "thisNode": "PBS на этом узле", + "updatedAt": "Обновлено в {time}", + "servicesActive": "Службы активны", + "detectedTitle": "PBS обнаружен в хранилище Proxmox", + "detectedHelp": "Эти серверы Proxmox Backup Server настроены как хранилища резервных копий. Подключите каждый из них с помощью токена API с доступом только для чтения, чтобы видеть здесь его хранилища данных, задачи и задания.", + "connect": "Подключить", + "tasksTab": "Задачи", + "signInWith": "Способ входа", + "methodPassword": "Имя пользователя и пароль", + "methodToken": "Токен API", + "username": "Пользователь", + "password": "Пароль", + "passwordHelp": "Пароль используется однократно для создания токена API с доступом только для чтения (роль Audit) для этого Monitor. Сохраняется только этот токен, пароль никогда не сохраняется. Сначала включите аутентификацию Monitor.", + "cancel": "Отмена", + "refresh": "Обновить", + "manage": "Управление подключениями PBS", + "loadFailed": "Не удалось загрузить состояние PBS.", + "loading": "Загрузка данных PBS…", + "noServer": "Добавьте подключение PBS, чтобы просматривать хранилища данных, задачи и расписания.", + "permissionsHelp": "Включите аутентификацию Monitor перед сохранением учётных данных. Используйте отдельный токен PBS API с ролью Audit на / в ACL как пользователя, так и токена, с распространением прав ACL. Эта панель только читает данные PBS.", + "editConnection": "Подключение для редактирования", + "add": "Добавить новое подключение", + "name": "Название", + "url": "HTTPS-адрес", + "urlHelp": "Укажите :8007 — стандартный порт PBS, например https://pbs.example:8007.", + "usernameHelp": "Используйте формат user@realm, например root@pam.", + "tokenIdHelp": "Используйте формат user@realm!token, например monitor@pbs!proxmenux.", + "tokenSecretHelp": "Введите секрет этого токена API.", + "tokenSecretKeepHelp": "Оставьте поле пустым, чтобы сохранить текущий секрет токена.", + "token_id": "Идентификатор токена API", + "token_secret": "Секрет токена API", + "fingerprint": "Отпечаток SHA256 (необязательно)", + "tlsHelp": "Оставьте поле отпечатка пустым для стандартной проверки центра сертификации и имени хоста. Для самоподписанного сертификата скопируйте его отпечаток SHA256 из консоли PBS или другого доверенного канала. Соответствие заданному отпечатку проверяется до отправки учётных данных.", + "saved": "Подключение к PBS проверено и сохранено.", + "saveFailed": "Не удалось сохранить подключение к PBS.", + "testing": "Проверка подключения…", + "save": "Проверить и сохранить", + "remove": "Удалить подключение", + "removeConfirm": "Удалить это сохранённое подключение к PBS и его токен из Monitor? Данные и задания PBS не будут затронуты.", + "sampled": "Время сбора данных", + "datastores": "Хранилища данных", + "total": "Ёмкость файловой системы", + "used": "Использовано", + "free": "Доступно", + "noDatastores": "Нет доступных хранилищ данных. Проверьте конфигурацию хранилищ данных и права пользователя или токена.", + "tasks": "Последние задачи", + "noTasks": "Последние задачи не получены.", + "task": "Задача", + "started": "Время запуска", + "status": "Статус", + "running": "Выполняется", + "jobs": "Расписания обслуживания", + "job": "Задание", + "schedule": "Расписание", + "sync": "Синхронизация", + "verify": "Проверка", + "prune": "Удаление устаревших резервных копий", + "overview": "Обзор", + "logs": "Системные журналы", + "terminal": "Терминал", + "security": "Безопасность", + "logout": "Выйти", + "navigation": "Навигация PBS", + "cpu": "CPU", + "memory": "Память", + "uptime": "Время работы", + "capacityUnavailable": "Данные о ёмкости недоступны.", + "datastoresUnavailable": "Недоступно: {count}", + "datastoresOnline": "Все доступны", + "moreDatastores": "+{count} хранилищ данных", + "estimatedFull": "Прогноз заполнения", + "estimatedFullUnknown": "Пока недостаточно данных", + "duration": "Продолжительность", + "noJobs": "Расписания синхронизации, проверки или удаления устаревших резервных копий не настроены.", + "removeFailed": "Не удалось удалить подключение PBS.", + "savedRefreshFailed": "Подключение PBS сохранено, но обновить список подключений не удалось. Перезагрузите страницу, прежде чем вносить другие изменения.", + "removedRefreshFailed": "Подключение PBS удалено, но обновить список подключений не удалось. Перезагрузите страницу.", + "technicalDetails": "Технические сведения", + "datastoreType": "Хранилище данных", + "errors": { + "configRead": "Не удалось прочитать сохранённые подключения PBS. Проверьте файл конфигурации и права доступа.", + "invalidConfig": "Недопустимые настройки подключения PBS. Проверьте форму и повторите попытку.", + "invalidField": "Одно из полей подключения содержит недопустимое или слишком длинное значение.", + "invalidUrl": "Используйте HTTPS-адрес PBS без встроенных учётных данных, параметров запроса и фрагмента.", + "nameRequired": "Введите имя сервера длиной не более 128 символов.", + "tokenIdFormat": "Введите идентификатор токена PBS API в формате user@realm!token.", + "tokenSecret": "Введите допустимый секрет токена API без пробелов и управляющих символов.", + "invalidTokenId": "Идентификатор токена API должен содержать только символы ASCII.", + "invalidFingerprint": "Введите отпечаток SHA256 сертификата: 64 шестнадцатеричных символа, которые можно разделять двоеточиями.", + "fingerprintMismatch": "Сертификат PBS не соответствует отпечатку. Учётные данные не были отправлены.", + "tokenRejected": "PBS отклонил токен API или его права доступа. Проверьте ACL как пользователя, так и токена.", + "invalidResponse": "PBS вернул неожиданный ответ. Переход по перенаправлениям не выполняется.", + "invalidJson": "PBS вернул некорректный документ JSON.", + "connectFailed": "Не удалось подключиться к PBS по HTTPS с проверкой сертификата. Проверьте адрес, сертификат и службу.", + "invalidId": "Недопустимый идентификатор подключения PBS. Обновите список подключений.", + "invalidDatastores": "PBS вернул некорректный список хранилищ данных.", + "connectionLimit": "Можно настроить не более {count} подключений PBS.", + "username": "Введите имя пользователя PBS в формате user@realm, например root@pam.", + "password": "Введите пароль пользователя PBS.", + "loginRejected": "PBS отклонил имя пользователя или пароль.", + "invalidLogin": "PBS вернул некорректный ответ на запрос входа.", + "tokenCreateDenied": "Этот пользователь PBS не может создавать токены API.", + "invalidToken": "PBS вернул некорректный токен API.", + "auditRoleDenied": "Этот пользователь PBS не может назначать роль Audit. Войдите как root@pam или другой администратор.", + "notFound": "Подключение PBS не найдено. Обновите список подключений.", + "readFailed": "Не удалось прочитать данные PBS. Проверьте службу PBS и права доступа.", + "invalidList": "PBS вернул некорректный список данных.", + "localUnavailable": "PBS недоступен на этом узле.", + "authRequired": "Прежде чем управлять удалёнными подключениями PBS, включите локальную аутентификацию в Monitor.", + "datastoreOffline": "Хранилище данных отключено, находится в режиме обслуживания или его базовое устройство не смонтировано.", + "datastoreUnavailable": "Файловая система хранилища данных недоступна." + }, + "taskTypes": { + "backup": "Резервная копия", + "restore": "Восстановление", + "verify": "Проверка", + "verifyGroup": "Проверка группы резервных копий", + "verifySnapshot": "Проверка снимка", + "prune": "Удаление устаревших резервных копий", + "garbageCollection": "Сборка мусора", + "sync": "Синхронизация", + "updateCheck": "Проверка обновлений", + "terminal": "Терминал", + "createDatastore": "Создать хранилище данных", + "other": "Другая задача ({type})" + }, + "states": { + "ok": "OK", + "unknown": "Неизвестно", + "warnings": "Предупреждения: {count}", + "warning": "Предупреждение", + "error": "Ошибка" + }, + "serviceStates": { + "active": "Активна", + "inactive": "Неактивна", + "failed": "Сбой", + "activating": "Запускается", + "deactivating": "Останавливается", + "unknown": "Неизвестно" + }, + "durationUnits": { + "seconds": "{count} с", + "minutes": "{count} мин", + "hours": "{count} ч", + "days": "{count} дн." + } + }, + "app": { + "title": "ProxMenux Monitor", + "description": "Панель мониторинга системы Proxmox", + "descriptionPbs": "Панель мониторинга Proxmox Backup Server", + "loading": "Загрузка...", + "connecting": "Подключение к ProxMenux Monitor", + "unknown": "Неизвестно", + "notAvailable": "N/A", + "serverOffline": "Сервер недоступен", + "supportProject": "Поддержать проект и внести вклад в его развитие" + }, + "common": { + "notAvailable": "N/A", + "unknown": "Неизвестно" + }, + "actions": { + "refresh": "Обновить", + "toggleTheme": "Переключить тему", + "openUserMenu": "Открыть меню пользователя", + "cancel": "Отмена", + "save": "Сохранить", + "edit": "Изменить", + "remove": "Удалить", + "close": "Закрыть", + "resetAll": "Сбросить всё", + "undo": "Отменить", + "copy": "Копировать", + "copied": "Скопировано", + "copyToClipboard": "Копировать в буфер обмена" + }, + "navigation": { + "overview": "Обзор", + "apps": "Приложения", + "storage": "Хранилище", + "network": "Сеть", + "virtualMachines": "Виртуальные машины и контейнеры LXC", + "hardware": "Оборудование", + "backup": "Резервная копия", + "terminal": "Терминал", + "systemLogs": "Системные журналы", + "security": "Безопасность", + "settings": "Настройки", + "about": "О программе", + "profile": "Профиль", + "node": "Узел", + "admin": "Администратор", + "menu": "Меню навигации", + "audit": "Audit и отчёт" + }, + "status": { + "healthy": "В норме", + "warning": "Предупреждение", + "critical": "Критическое состояние", + "uptime": "Время работы: {uptime}", + "node": "Узел: {node}", + "connectionFailed": "Не удалось подключиться к серверу ProxMenux", + "checkService": "Убедитесь, что monitor.service работает корректно.", + "serverPort": "Сервер ProxMenux должен запускаться автоматически на порту 8008", + "tryAccessing": "Попробуйте открыть:", + "normal": "Норма", + "warm": "Повышенная температура", + "hot": "Высокая температура", + "moderate": "Умеренный", + "high": "Высокий", + "stopped": "Остановлено", + "active": "Активна", + "disabled": "Отключено", + "inactive": "неактивно", + "saving": "Сохранение...", + "saved": "Сохранено", + "saveFailed": "Не удалось сохранить", + "networkErrorWhileSaving": "Ошибка сети при сохранении" + }, + "overview": { + "metricsTimeout": "Запрос метрик занял более 30 секунд. ProxMenux автоматически повторит попытку.", + "metricsCachedWarning": "Не удалось обновить метрики. Отображаются данные, полученные в {time}.", + "loadingTitle": "Загрузка обзора системы...", + "loadingDescription": "Получение состояния системы и метрик", + "topProcessesCpu": "Показать процессы с наибольшей загрузкой ЦП", + "topProcessesMemory": "Показать процессы с наибольшим потреблением памяти", + "suggestedFix": "Предлагаемое исправление на хосте Proxmox", + "noMetricsData": "Данные метрик отсутствуют", + "invalidMetricsData": "С сервера получены некорректные данные метрик", + "metricsLoadError": "Ошибка загрузки метрик", + "networkMetricsUnavailable": "Сетевые метрики пока недоступны", + "noNetworkMetrics": "Сетевые метрики отсутствуют", + "cpuUsage": "Загрузка CPU", + "cpuUsageLoadAverage": "Загрузка CPU и средняя нагрузка", + "cpuPercent": "CPU, %", + "loadAverage": "Средняя нагрузка", + "loadAxis": "Нагрузка", + "memory": "Память", + "memoryUsage": "Использование памяти", + "zram": "ZRAM", + "zramCapacity": "Ёмкость", + "zramSwapUsed": "Использовано подкачки", + "zramAlgorithm": "Алгоритм", + "zramCompressionRatio": "Коэффициент сжатия", + "zramPhysicalMemory": "Использовано физической памяти", + "user": "Пользователь", + "system": "Система", + "cores": "Ядра", + "used": "Использовано", + "cached": "Кэшировано", + "total": "Всего", + "free": "Свободно", + "activeVmLxc": "Активные ВМ и LXC", + "runningCount": "Запущено: {count}", + "runningCountOne": "Запущено: {count}", + "runningCountFew": "Запущено: {count}", + "runningCountMany": "Запущено: {count}", + "vmsCount": "ВМ: {count}", + "stoppedCount": "Остановлено: {count}", + "temperature": "Температура", + "noSensorAvailable": "Нет доступного датчика", + "collectingData": "Сбор данных...", + "storageOverview": "Обзор хранилищ", + "totalNodeCapacity": "Общая ёмкость узла:", + "totalCapacity": "Общая ёмкость:", + "physicalDisks": "Физические диски:", + "diskSingular": "диск", + "diskPlural": "диски", + "vmLxcStorage": "Хранилище ВМ/LXC", + "available": "Доступно", + "storageVolumeSingular": "том хранилища", + "storageVolumePlural": "тома хранилища", + "noVmLxcStorage": "Хранилище ВМ/LXC не настроено", + "localStorageSystem": "Локальное хранилище (система)", + "storageDataUnavailable": "Данные о хранилищах недоступны", + "networkOverview": "Обзор сети", + "activeInterfaces": "Активные интерфейсы:", + "received": "Получено:", + "sent": "Отправлено:", + "receivedShort": "Получено", + "sentShort": "Отправлено", + "networkDataUnavailable": "Данные о сети недоступны", + "systemInformation": "Информация о системе", + "uptime": "Время работы:", + "uptimeDuration": { + "dayOne": "{count} день", + "dayFew": "{count} дня", + "dayMany": "{count} дня" + }, + "proxmoxVersion": "Версия Proxmox:", + "pbsVersion": "Версия PBS:", + "kernel": "Ядро:", + "availableUpdates": "Доступные обновления:", + "packages": "пакетов", + "systemOverview": "Обзор системы", + "loadAverage1m": "Средняя нагрузка (1 мин):", + "cpuThreads": "Потоки процессора:", + "networkInterfaces": "Сетевые интерфейсы:", + "timeframes": { + "hour": "1 час", + "day": "24 часа", + "week": "7 дней", + "month": "30 дней", + "year": "1 год" + }, + "stats": { + "avg": "ср.", + "max": "макс.", + "min": "мин." + }, + "errors": { + "serverUnavailableTitle": "Сервер Monitor недоступен", + "serverUnavailableDescription": "Не удалось подключиться к серверу Monitor. Убедитесь, что служба запущена, и повторите попытку." + } + }, + "storage": { + "loadingTitle": "Загрузка данных хранилищ...", + "loadingDescription": "Сканирование дисков, разделов и пулов хранения", + "loadingError": "Ошибка загрузки данных о хранилищах: {error}", + "storageUsed": "Занято в хранилищах", + "localUsed": "Занято локально", + "remoteUsed": "Занято на удалённых хранилищах", + "physicalDisks": "Физические диски", + "proxmoxStorage": "Хранилища Proxmox", + "remoteMounts": "Удалённые точки монтирования", + "externalStorageUsb": "Внешние накопители (USB)", + "physicalDisksSmart": "Физические диски и состояние SMART", + "storageController": "Контроллер хранения", + "noController": "Контроллер не обнаружен", + "diskCountOne": "Дисков: {count}", + "diskCountMany": "Дисков: {count}", + "zfsPools": "Пулы ZFS", + "zfs": { + "poolDetails": "Структура пула, состояние проверки целостности и исправность устройств", + "detailsUnavailable": "Для просмотра подробной структуры пула требуется OpenZFS версии 2.3 или новее.", + "status": "Статус", + "action": "Действие", + "capacity": "Ёмкость", + "fragmentation": "Фрагментация", + "dedupRatio": "Коэффициент дедупликации", + "layout": "Структура", + "totalSize": "Общий размер", + "fragShort": "Фрагм.", + "singleDisk": "Один диск", + "stripe": "Чередование", + "mirror": "Зеркало", + "raidz": "RAIDZ{parity}", + "draid": "dRAID{parity}", + "diskCountOne": "Дисков: {count}", + "diskCountMany": "Дисков: {count}", + "errorsReported": "Обнаруженные ошибки", + "scanTitle": "Проверка целостности / Восстановление избыточности", + "scrub": "Проверка целостности", + "resilver": "Восстановление избыточности", + "neverScrubbed": "Проверка целостности никогда не выполнялась", + "scanRunning": "Выполняется: {kind} ({percent}%)", + "scanCanceled": "Отменено: {kind}", + "scanFinished": "Завершено: {kind} — {date}", + "started": "Время запуска", + "ended": "Завершено", + "repaired": "Исправлено", + "scanErrors": "Ошибки сканирования", + "dataErrors": "Ошибки данных: {count}", + "noDataErrors": "Известных ошибок данных нет", + "device": "Устройство", + "disk": "Диск", + "state": "Состояние", + "readErrors": "Ошибки чтения", + "writeErrors": "Ошибки записи", + "checksumErrors": "Ошибки контрольных сумм", + "readShort": "Ч", + "writeShort": "З", + "checksumShort": "CK", + "slowIos": "Медленные операции ввода-вывода", + "via": "через {name}", + "classes": { + "normal": "Данные", + "special": "Специальный", + "dedup": "Дедупликация", + "log": "Журнал", + "cache": "Кэш", + "spare": "Резерв" + } + }, + "local": "Локальное", + "remote": "Удалённое", + "free": "Свободно", + "used": "Использовано", + "total": "Всего", + "available": "Доступно", + "size": "Размер", + "allocated": "Выделено", + "none": "Нет", + "noRemoteStorage": "Нет удалённых хранилищ", + "diskSingular": "диск", + "diskPlural": "диски", + "temperatureNoDisks": "Нет дисков", + "temperatureNormal": "Температуры в норме", + "temperatureHighCount": "Высокие температуры: {count}", + "temperatureCriticalCount": "Критические температуры: {count}", + "temperatureUnavailable": "Данные о температуре недоступны", + "temperatureIncomplete": "Неполные данные о температуре", + "temperatureUnavailableCount": "Недоступно: {count}", + "allHealthy": "все исправны", + "criticalCount": "В критическом состоянии: {count}", + "warningCount": "Предупреждений: {count}", + "remoteMount": "удалённое подключение", + "remoteMountShort": "удалённое", + "excluded": "исключено", + "notMonitored": "не отслеживается", + "namespaceRestricted": "доступ ограничен пространством имён", + "namespaceRestrictedTitle": "Хранилище доступно; размер хранилища данных скрыт из-за ACL (например, PBS DatastoreAdmin в одном пространстве имён)", + "capacityNotReported": "Ёмкость не сообщается", + "managedByProxmox": "под управлением Proxmox", + "readOnlyShort": "только чтение", + "stale": "устаревшее", + "readOnly": "только для чтения", + "reachable": "доступно", + "source": "Источник:", + "capacity": "Ёмкость", + "mountOptions": "Параметры монтирования", + "mountStaleSkipped": "df пропущен: подключение устарело.", + "notApplicable": "не применимо", + "error": "Ошибка", + "system": "Система", + "standby": "Режим ожидания", + "standbyTitle": "Накопитель в режиме ожидания — smartctl пропущен, чтобы не запускать вращение диска", + "filesystemCorruption": "Обнаружено повреждение файловой системы", + "ioErrorOne": "Ошибок ввода-вывода за 5 мин: {count}", + "ioErrorMany": "Ошибок ввода-вывода за 5 мин: {count}", + "model": "Модель", + "wearLevel": "Уровень износа", + "powerCycles": "Циклы включения питания", + "powerOn": "Время работы", + "crcErrors": "Ошибки CRC", + "reallocatedShort": "Переназнач. секторы", + "serialShort": "S/N:", + "viewDetails": "Подробнее", + "diskDetails": "Сведения о диске: /dev/{name}", + "physicalDisk": "Физический диск", + "overview": "Обзор", + "smart": "SMART", + "history": "История", + "schedule": "Расписание", + "serialNumber": "Серийный номер", + "healthStatus": "Состояние диска", + "wearLifetime": "Износ и ресурс", + "dataWritten": "Объём записанных данных", + "life": "ресурс", + "lifeRemaining": "Оставшийся ресурс", + "realTest": "Реальный тест", + "savedSmartData": "Сохранённые данные SMART", + "wear": { + "label": "Износ", + "percentageUsed": "Процент использованного ресурса", + "mediaWearout": "Износ носителя", + "wearLevel": "Уровень износа", + "lifeUsed": "Использованный ресурс" + }, + "estimatedLife": "Оценка срока службы", + "noWearDetected": "Износ пока не обнаружен", + "months": "мес.", + "years": "лет", + "duration": { + "daysShort": "{days} дн.", + "monthsShort": "{months} мес.", + "yearsShort": "{years} г.", + "monthsDaysShort": "{months} мес. {days} дн.", + "yearsMonthsShort": "{years} г. {months} мес.", + "estimatedYears": "~{value} г.", + "estimatedMonths": "~{value} мес." + }, + "availableSpare": "Доступный резерв", + "smartAttributes": "Атрибуты SMART", + "powerOnHours": "Наработка в часах", + "rotationRate": "Скорость вращения", + "smartStatus": "Состояние SMART", + "reallocatedSectors": "Переназначенные секторы", + "pendingSectors": "Секторы, ожидающие переназначения", + "temperature": "Температура", + "noSmartData": "Для этого диска нет данных проверки SMART.", + "smartDataHint": "Запустите проверку SMART на вкладке «Проверка SMART», чтобы получить подробную информацию о состоянии диска.", + "observations": "Наблюдения", + "observationsDescription": "Для этого диска зафиксированы следующие наблюдения:", + "loadingObservations": "Загрузка наблюдений...", + "firstSeen": "Впервые", + "lastSeen": "В последний раз", + "occurrences": "Количество случаев", + "observationShort": "набл.", + "observationTypes": { + "smart_error": "Проблема SMART", + "io_error": "Проблема ввода-вывода", + "filesystem_error": "Проблема файловой системы", + "zfs_pool_error": "Проблема пула ZFS", + "connection_error": "Проблема подключения" + }, + "health": { + "healthy": "В норме", + "warning": "Предупреждение", + "critical": "Критическое состояние", + "unknown": "Неизвестно", + "passed": "Проверка пройдена", + "online": "В сети", + "failed": "Сбой", + "degraded": "Работает с ограничениями" + }, + "status": { + "active": "активно", + "inactive": "неактивно", + "offline": "не в сети", + "error": "ошибка", + "failed": "сбой" + }, + "smartTest": { + "loading": "Загрузка данных SMART...", + "toolsMissing": "Инструменты SMART не установлены", + "nvmeToolRequired": "Для выполнения тестов SMART на дисках NVMe требуется nvme-cli.", + "smartctlRequired": "Для выполнения тестов SMART на этом диске требуется smartmontools.", + "installingTools": "Установка инструментов SMART...", + "installTools": "Установить инструменты SMART", + "installFailed": "Не удалось выполнить установку", + "installFailedManual": "Не удалось выполнить установку. Попробуйте вручную: apt-get install smartmontools nvme-cli", + "installToolsManual": "Не удалось установить инструменты. Попробуйте вручную: apt-get install smartmontools nvme-cli", + "runTest": "Запустить тест SMART", + "shortTest": "Короткий тест", + "longTest": "Длительный тест (1–4 часа)", + "extendedTest": "Расширенный тест", + "testHelp": "Короткий тест занимает около 2 минут. Расширенный тест выполняется в фоновом режиме и на больших дисках может занять несколько часов. После завершения результат появится на вкладке «История».", + "startFailed": "Не удалось запустить тест", + "short": "Короткий", + "extended": "Расширенный", + "testInProgress": "Выполняется тест {type}", + "testWait": "Дождитесь завершения теста. Кнопки разблокируются автоматически.", + "noProgress": "Микропрограмма этого диска не сообщает о ходе выполнения. Тест выполняется в фоновом режиме.", + "lastTest": "Последний тест", + "nvmeMetrics": "Показатели состояния NVMe", + "sasMetrics": "Показатели состояния SAS/SCSI", + "id": "ID", + "attribute": "Атрибут", + "value": "Значение", + "worst": "Наихудшее", + "status": "Статус", + "viewFullReport": "Просмотреть полный отчёт SMART", + "loadingReport": "Загрузка отчёта...", + "reportLoadFailed": "Не удалось загрузить данные отчёта.", + "statusValues": { + "passed": "Проверка пройдена", + "failed": "Сбой", + "running": "Выполняется", + "aborted": "Прерван", + "unknown": "Неизвестно" + } + }, + "historyTab": { + "loading": "Загрузка истории тестов...", + "empty": "История тестов отсутствует", + "emptyHint": "Запустите тест SMART, чтобы начать вести историю тестов этого диска.", + "title": "История тестов", + "latest": "последний", + "today": "Сегодня", + "yesterday": "Вчера", + "daysAgo": "Дней назад: {count}", + "downloadJson": "Скачать JSON", + "delete": "Удалить", + "confirmDelete": "Удалить эту запись о тесте?", + "note": "Результаты тестов хранятся локально и используются для создания подробных отчётов SMART." + }, + "smartReport": { + "title": "Отчёт SMART о состоянии диска", + "printPdf": "Печать / Сохранить как PDF", + "printHintMac": "Нажмите Cmd+P, чтобы сохранить как PDF", + "printHintCtrl": "Нажмите Ctrl+P, чтобы сохранить как PDF", + "subtitle": "ProxMenux Monitor — Анализ состояния диска", + "htmlLang": "ru", + "date": "Дата", + "device": "Устройство", + "executiveSummary": "Краткое заключение", + "smartStatus": "Состояние SMART", + "healthAssessment": "Оценка состояния диска", + "passedUpper": "ПРОЙДЕН", + "testAgeWarning": "Этот отчёт основан на результатах теста SMART от {date} (давность теста в днях: {days}). С тех пор состояние диска могло измениться. Рекомендуем выполнить новый тест SMART, чтобы получить актуальные результаты.", + "passedAssessment": "Полученный статус SMART — PASSED. Сам по себе этот статус не подтверждает, что все атрибуты находятся в допустимых пределах или что диск не имеет неисправностей. Указанное время работы: {uptime}. Указанная температура: {temperature}. {sectors}", + "noReallocatedSectorsReported": "Полученное значение количества переназначенных секторов равно нулю или недоступно; это не подтверждает отсутствие повреждённых секторов.", + "passedMeaningTitle": "Что означает статус PASSED?", + "passedMeaning": "PASSED — это общий статус, переданный в этот отчёт, а не подтверждение завершённого самотестирования или гарантия отсутствия сбоев. Проверьте атрибуты, журналы ошибок и результаты самотестирования и поддерживайте резервные копии в актуальном состоянии.", + "healthyAssessment": "Этот диск работает в штатном режиме. Все атрибуты SMART находятся в допустимых пределах. Время работы диска составляет примерно {uptime}, а текущая температура — {temperature}. {sectors}", + "failedAssessment": "По данным SMART обнаружена неисправность этого диска. Необходимо немедленно принять меры. Создайте резервную копию всех критически важных данных и запланируйте замену диска.", + "noBadSectors": "Повреждённых секторов не обнаружено.", + "reallocatedSectors": "Обнаружены переназначенные секторы: {count} — внимательно следите за состоянием диска.", + "healthyMeaningTitle": "Что это означает? Ваш диск исправен!", + "attentionTitle": "ТРЕБУЕТСЯ ВНИМАНИЕ: обнаружены проблемы", + "monitorTitle": "Некоторые проблемы требуют наблюдения", + "healthyMeaning": "Проще говоря: этот диск работает исправно. Вы можете продолжать использовать его в обычном режиме. Рекомендуем регулярно выполнять тесты SMART (ежемесячно), чтобы выявлять проблемы на ранней стадии.", + "criticalMeaning": "Проще говоря: у этого диска есть проблемы, которые могут привести к потере данных. Немедленно создайте резервную копию важных файлов и рассмотрите возможность замены диска в ближайшее время.", + "warningMeaning": "Проще говоря: диск работает, но есть признаки износа. Ситуация пока не критическая, однако внимательно следите за состоянием диска и поддерживайте резервные копии в актуальном состоянии.", + "issuesFound": "Обнаруженные проблемы", + "criticalStatus": "Критическое состояние — требует немедленного внимания", + "warningStatus": "Предупреждение — требуется наблюдение", + "moreIssues": "…и другие проблемы: {count} (подробности ниже)", + "dismissed": "Отклонено", + "occurrences": "Количество случаев", + "errorSignature": "Сигнатура ошибки", + "rawMessage": "Исходное сообщение", + "firstSeen": "Впервые обнаружено", + "lastSeen": "Последнее обнаружение", + "observationsIntro": "Для этого диска были обнаружены и зарегистрированы следующие события. Эти наблюдения могут указывать на потенциальные проблемы, требующие внимания.", + "temperatureHistory": "История температуры", + "temperatureSamples": "Количество измерений: {count}", + "temperatureBands": "Цветовые зоны: жёлто-оранжевая — предупреждение (>= {warn}°C), красная — критическое состояние (>= {hot}°C). Измерения выполняются каждые 60 секунд.", + "observationSummary": "Уникальных: {unique}, всего: {total}", + "observationsTitle": "Наблюдения и события (зарегистрировано: {count}, общее число срабатываний: {total})", + "outdatedTestTitle": "Устаревшие данные теста (давность в днях: {days})", + "diskInformation": "Информация о диске", + "attributeCount": "Всего: {total}", + "attributeCountWithWarnings": "Всего: {total}, предупреждений: {warnings}", + "entriesCount": "Записей: {count}", + "fullSelfTestHistory": "Полная история самотестирования (записей: {count})", + "firmwareNoSelfTestLog": "Прошивка этого диска не ведёт внутренний журнал самотестирования. Результаты тестов отслеживаются в ProxMenux Monitor.", + "ssdWearNote": "Оценки срока службы SSD основаны на показателях износа, предоставляемых производителем. Фактический срок службы может отличаться в зависимости от нагрузки и характера использования.", + "labels": { + "model": "Модель", + "serial": "Серийный номер", + "estimatedLife": "Оценка оставшегося ресурса", + "totalDataWritten": "Общий объём записанных данных", + "availableSpare": "Доступный резерв", + "reportGenerated": "Дата формирования отчёта", + "testType": "Тип теста", + "lastTestType": "Тип последнего теста", + "testResult": "Результат теста", + "attributesChecked": "Проверено атрибутов", + "capacity": "Ёмкость", + "type": "Тип", + "family": "Семейство", + "formFactor": "Форм-фактор", + "interface": "Интерфейс", + "transport": "Транспортный протокол", + "linkSpeed": "Скорость соединения", + "blockSize": "Размер блока", + "temperature": "Температура", + "optimal": "Оптимальный", + "powerOnTime": "Время работы во включённом состоянии", + "powerCycles": "Циклы включения питания", + "uncorrectedErrors": "Неисправленные ошибки", + "pendingSectors": "Секторы, ожидающие переназначения", + "crcErrors": "Ошибки CRC", + "grownDefects": "Дефекты, возникшие в процессе эксплуатации", + "lifeRemaining": "ОСТАВШИЙСЯ РЕСУРС", + "estimated": "Оценка", + "usageStatistics": "СТАТИСТИКА ИСПОЛЬЗОВАНИЯ", + "percentageUsed": "Процент использованного ресурса", + "dataWritten": "Объём записанных данных", + "source": "Источник", + "ssdLifeIndicator": "Индикатор ресурса SSD", + "wearLevel": "Уровень износа", + "powerOnHours": "Наработка в часах", + "smartStatus": "Состояние SMART", + "reallocatedSectors": "Переназначенные секторы", + "note": "Примечание", + "metric": "Показатель", + "attribute": "Атрибут", + "value": "Значение", + "worst": "Наихудшее", + "thresholdShort": "Порог", + "raw": "Исходное значение", + "result": "Результат", + "completed": "Завершено", + "atPowerOnHours": "Наработка на момент события (часы)", + "ataErrorLog": "Журнал ошибок ATA", + "status": "Статус", + "atPoh": "Наработка (ч)", + "date": "Дата", + "min": "Мин.", + "avg": "Сред.", + "max": "Макс." + }, + "sections": { + "nvmeWearLifetime": "Износ и ресурс NVMe", + "extendedNvmeHealth": "Расширенные сведения о состоянии NVMe", + "ssdWearLifetime": "Износ и ресурс SSD", + "nvmeHealthMetrics": "Показатели состояния NVMe", + "sasHealthMetrics": "Показатели состояния SAS/SCSI", + "smartAttributes": "Атрибуты SMART", + "selfTestResult": "Результат самотестирования", + "lastSelfTestResult": "Результат последнего самотестирования", + "recommendations": "Рекомендации" + }, + "statusValues": { + "ok": "OK", + "warning": "Предупреждение", + "critical": "Критическое состояние", + "failed": "Сбой", + "passed": "Проверка пройдена", + "supported": "Поддерживается", + "notSupported": "Не поддерживается", + "none": "Нет", + "info": "Информация" + }, + "selfTestStatus": { + "completedWithoutError": "Завершено без ошибок", + "completedWithReadFailure": "Завершено: ошибка чтения", + "completedWithWriteFailure": "Завершено: ошибка записи", + "completedWithUnknownFailure": "Завершено: неизвестная ошибка", + "interrupted": "Прервано", + "aborted": "Прерван", + "inProgress": "Выполняется" + }, + "testTypes": { + "short": "Короткий тест", + "extended": "Расширенный тест" + }, + "observationTypes": { + "io": "Ошибка ввода-вывода", + "ioPlural": "Ошибки ввода-вывода", + "smart": "Ошибка SMART", + "smartPlural": "Ошибки SMART", + "filesystem": "Ошибка файловой системы", + "filesystemPlural": "Ошибки файловой системы" + }, + "duration": { + "yearDayHours": "{years} г. {days} дн. ({hours} ч)", + "dayHours": "{days} дн. ({hours} ч)", + "yearDay": "{years} г. {days} дн.", + "minutes": "{minutes} мин", + "approxMinutes": "~{minutes} мин" + }, + "estimatedLife": { + "years": "~{value} г.", + "days": "~{value} дн.", + "hours": "~{value} ч", + "excellent": "Отлично" + }, + "units": { + "bytes": "байт" + }, + "metrics": { + "criticalWarning": "Критическое предупреждение", + "mediaErrors": "Ошибки носителя", + "unsafeShutdowns": "Небезопасные отключения", + "enduranceWarning": "Предупреждение об износе", + "controllerBusy": "Занятость контроллера", + "errorLogEntries": "Записи в журнале ошибок", + "warningTempTime": "Время при температуре в диапазоне предупреждения", + "criticalTempTime": "Время при критической температуре", + "dataRead": "Прочитано данных", + "hostReadCommands": "Команды чтения от хоста", + "hostWriteCommands": "Команды записи от хоста", + "hotspotTemp": "Температура самой горячей точки", + "sensors": "Датчики" + }, + "metricNotes": { + "controllerAlertFlags": "Флаги предупреждений контроллера", + "flashCellDamage": "Повреждение ячеек флеш-памяти", + "powerLossWithoutFlush": "Потеря питания без сброса буфера на носитель", + "groupEnduranceAlert": "Предупреждение об износе группы", + "totalBusyTime": "Общее время занятости", + "mayIncludeBenignArtifacts": "Может включать безвредные артефакты", + "minutesInWarningRange": "Минуты в температурном диапазоне предупреждения", + "minutesInCriticalRange": "Минуты в критическом температурном диапазоне", + "totalHostReads": "Общий объём данных, прочитанных хостом", + "totalReadCommands": "Общее число команд чтения", + "totalWriteCommands": "Общее число команд записи", + "sensorHotspot": "Горячая точка датчика[1]" + }, + "empty": { + "nvmeMetrics": "Метрики NVMe недоступны", + "sasMetrics": "Метрики SAS недоступны", + "smartAttributes": "Атрибуты SMART недоступны", + "selfTestHistory": "История самотестирования недоступна. Запустите самотестирование SMART, чтобы увидеть результаты здесь." + }, + "footer": { + "generatedBy": "Отчёт создан с помощью ProxMenux Monitor" + }, + "attributeLabels": { + "criticalWarning": "Критическое предупреждение", + "nvmeTemperature": "Температура", + "temperatureSensor1": "Датчик температуры 1", + "temperatureSensor2": "Датчик температуры 2", + "temperatureSensor3": "Датчик температуры 3", + "availableSpare": "Доступный резерв", + "availableSpareThreshold": "Порог доступного резерва", + "percentageUsed": "Процент израсходованного ресурса", + "enduranceGroupWarning": "Предупреждение группы износостойкости", + "mediaErrors": "Ошибки носителя", + "mediaIntegrityErrors": "Ошибки носителя и целостности данных", + "unsafeShutdowns": "Некорректные отключения питания", + "nvmePowerCycles": "Число циклов включения питания", + "nvmePowerOnHours": "Время работы во включённом состоянии (часы)", + "dataUnitsRead": "Прочитанные единицы данных", + "dataUnitsWritten": "Записанные единицы данных", + "hostReadCommands": "Команды чтения от хоста", + "hostWriteCommands": "Команды записи от хоста", + "controllerBusyTime": "Время занятости контроллера", + "errorLogEntries": "Записи в журнале ошибок", + "warningTempTime": "Время при температуре предупреждения", + "criticalTempTime": "Время при критической температуре", + "warningCompositeTemperatureTime": "Время при сводной температуре предупреждения", + "criticalCompositeTemperatureTime": "Время при критической сводной температуре", + "thermalManagementT1TransCount": "Число переходов в режим терморегулирования T1", + "thermalManagementT2TransCount": "Число переходов в режим терморегулирования T2", + "thermalManagementT1TotalTime": "Общее время в режиме терморегулирования T1", + "thermalManagementT2TotalTime": "Общее время в режиме терморегулирования T2" + }, + "attributeExplanations": { + "criticalWarning": "Активные флаги предупреждений контроллера NVMe. Любое ненулевое значение требует немедленного выяснения причин.", + "nvmeTemperature": "Сводная температура, сообщаемая контроллером. Длительное воздействие высоких температур вызывает тепловой троттлинг и сокращает срок службы памяти NAND.", + "temperatureSensor1": "Основной датчик температуры, обычно измеряющий температуру флеш-памяти NAND. Лучше всего отражает состояние флеш-памяти.", + "temperatureSensor2": "Второй датчик, часто измеряющий температуру кристалла контроллера. Обычно показывает более высокую температуру, чем датчик 1.", + "temperatureSensor3": "Третий датчик, если он установлен. Расположение зависит от производителя.", + "availableSpare": "Процент оставшихся резервных блоков NAND для замены неисправных блоков. При снижении значения ниже порога срабатывает предупреждение.", + "availableSpareThreshold": "Установленный производителем минимальный процент доступных резервных блоков. При снижении значения ниже этого порога накопитель выдаёт критическое предупреждение.", + "percentageUsed": "Оценка израсходованного ресурса накопителя на основе соотношения фактического и номинального числа циклов записи. Значение 100% означает достижение номинального объёма записи TBW; накопитель может продолжать работать и после этого.", + "mediaErrors": "Неисправимые ошибки чтения и записи во флеш-памяти NAND. Любое ненулевое значение указывает на необратимое повреждение ячеек. Рост счётчика означает, что накопитель следует заменить в ближайшее время.", + "mediaIntegrityErrors": "Неисправимые ошибки, обнаруженные контроллером. Ненулевое значение означает риск повреждения данных.", + "unsafeShutdowns": "Случаи потери питания без корректного сброса буферов на накопитель или завершения работы. Очень большое число таких случаев создаёт риск повреждения метаданных и проблем с прошивкой.", + "nvmePowerCycles": "Общее число циклов включения и выключения. Частые циклы увеличивают износ разъёмов и конденсаторов.", + "nvmePowerOnHours": "Общее количество часов, в течение которых накопитель был включён с момента изготовления.", + "dataUnitsRead": "Общий объём прочитанных данных в единицах по 512 КБ. Для перевода в байты умножьте на 512 000. Полезно для расчёта суточной нагрузки на чтение.", + "dataUnitsWritten": "Общий объём записанных данных в единицах по 512 КБ. Сравните с заявленным ресурсом записи TBW, чтобы оценить оставшийся ресурс накопителя.", + "hostReadCommands": "Общее количество команд чтения, отправленных хостом. Высокое соотношение команд чтения к командам записи указывает на нагрузку с преобладанием чтения.", + "hostWriteCommands": "Общее количество команд записи, отправленных хостом. Включает запись метаданных файловой системы.", + "controllerBusyTime": "Общее количество минут, затраченных контроллером на обработку команд ввода-вывода. Высокие значения указывают на длительную высокую нагрузку.", + "errorLogEntries": "Количество записей в журнале сведений об ошибках. Часто включает безвредные записи, возникающие при самотестировании; сопоставьте с показателем ошибок носителя.", + "warningTempTime": "Общее количество минут, в течение которых температура превышала порог предупреждения. При этом производительность ограничивается для защиты от перегрева. В идеале значение должно быть нулевым.", + "criticalTempTime": "Общее количество минут, в течение которых температура превышала критический порог. Накопитель может отключиться для предотвращения повреждений. Значение всегда должно быть нулевым.", + "warningCompositeTemperatureTime": "Общее количество минут, в течение которых сводная температура превышала порог предупреждения.", + "criticalCompositeTemperatureTime": "Общее количество минут, в течение которых сводная температура превышала критический порог. Значение должно быть нулевым.", + "thermalManagementT1TransCount": "Количество переходов накопителя в режим умеренного ограничения производительности из-за перегрева (T1). Указывает на проблемы с охлаждением.", + "thermalManagementT2TransCount": "Количество переходов накопителя в режим сильного ограничения производительности из-за перегрева (T2). Существенно влияет на производительность.", + "thermalManagementT1TotalTime": "Общее количество секунд работы в режиме умеренного ограничения производительности из-за перегрева. Указывает на длительные проблемы с охлаждением.", + "thermalManagementT2TotalTime": "Общее количество секунд работы в режиме сильного ограничения производительности из-за перегрева. Производительность значительно снижается.", + "rawReadErrorRate": "Обнаруженные аппаратные ошибки чтения. Высокие необработанные значения на накопителях Seagate/Samsung нормальны: из-за особенностей фирменной формулы расчёта показатель VALUE важнее необработанного значения.", + "writeErrorRate": "Ошибки, возникшие при операциях записи. Рост их количества может указывать на проблемы с головками или носителем.", + "multiZoneErrorRate": "Ошибки при записи в многозонные области. Показатель зависит от производителя; тенденция к росту вызывает опасения.", + "softReadErrorRate": "Ошибки чтения, исправленные микропрограммой без потери данных. Высокие значения могут указывать на ухудшение состояния носителя.", + "readErrorRetryRate": "Количество потребовавшихся повторных попыток чтения. Редкие повторные попытки нормальны; постоянный рост их количества указывает на износ.", + "reportedUncorrect": "Ошибки, которые не удалось исправить с помощью ECC. Любое ненулевое значение означает, что данные были потеряны или оказались нечитаемыми.", + "reportedUncorrectableErrors": "Ошибки, которые не удалось исправить с помощью ECC. Ненулевое значение означает риск потери данных.", + "reallocatedSectorCount": "Повреждённые секторы, заменённые запасными из резервного пула. Рост их количества означает ухудшение состояния накопителя.", + "retiredBlockCount": "Блоки NAND, выведенные из эксплуатации из-за износа или отказа (SSD). Аналог показателя количества переназначенных секторов для HDD.", + "reallocatedEventCount": "Количество выполненных операций переназначения. Каждое событие означает замену повреждённого сектора.", + "currentPendingSector": "Нестабильные секторы, ожидающие переназначения при следующей записи. Они могут вернуться в нормальное состояние или быть окончательно переназначены.", + "pendingSectors": "Секторы, ожидающие переназначения. Они могут вернуться в нормальное состояние или быть переназначены.", + "offlineUncorrectable": "Секторы, в которых при автономном сканировании обнаружены неисправимые ошибки. Указывает на возможную потерю данных.", + "offlineUncorrectableSectorCount": "Секторы с неисправимыми ошибками, обнаруженные при фоновом сканировании. Данные в этих секторах потеряны.", + "sataTemperature": "Текущая температура накопителя. Длительное воздействие высоких температур ускоряет износ и сокращает срок службы.", + "temperatureCelsius": "Текущая температура накопителя в градусах Цельсия. Обычно температура HDD должна оставаться ниже 45°C, а SSD — ниже 60°C.", + "airflowTemperatureCel": "Температура, измеренная датчиком воздушного потока. Обычно немного ниже показаний основного датчика температуры.", + "temperatureCase": "Температура корпуса накопителя. Полезна для контроля вентиляции корпуса.", + "temperatureInternal": "Внутренний датчик температуры. Его показания могут быть выше температуры корпуса.", + "sataPowerOnHours": "Общее количество часов, в течение которых накопитель был включён. Используется для оценки срока эксплуатации и планирования замены.", + "powerOnHoursAndMsec": "Общее время работы во включённом состоянии с точностью до миллисекунды.", + "powerCycleCount": "Общее количество полных циклов включения и выключения питания. Частые циклы создают нагрузку на электронику.", + "powerOffRetractCount": "Количество отводов головок из-за потери питания (HDD). Высокие значения указывают на нестабильное электропитание.", + "unexpectedPowerLossCt": "Неожиданные потери питания (SSD). Могут привести к повреждению метаданных, если кэш записи был активен.", + "unsafeShutdownCount": "Потери питания без корректного завершения работы (SSD). При высоких значениях возникает риск повреждения встроенного ПО.", + "startStopCount": "Циклы запуска и остановки двигателя шпинделя (HDD). Каждый цикл вызывает механический износ.", + "spinUpTime": "Время, необходимое пластинам для достижения полной рабочей скорости вращения (HDD). Рост значений может указывать на износ подшипников двигателя.", + "spinRetryCount": "Неудачные попытки раскрутки двигателя (HDD). Ненулевое значение обычно указывает на проблемы с электропитанием или двигателем.", + "calibrationRetryCount": "Количество повторных попыток калибровки головок (HDD). Ненулевое значение может указывать на механические неисправности.", + "seekErrorRate": "Ошибки позиционирования головок (HDD). Высокие необработанные значения у накопителей Seagate часто являются нормой из-за использования собственной формулы расчёта.", + "seekTimePerformance": "Средняя производительность операций позиционирования головок (HDD). Снижение значений указывает на возможное ухудшение состояния механики.", + "loadCycleCount": "Циклы загрузки и выгрузки головок (HDD). Большинство накопителей рассчитано на 300–600 тысяч циклов.", + "loadUnloadCycleCount": "Циклы загрузки и выгрузки головок (HDD). Каждый цикл вызывает небольшой износ механизма парковочной рампы.", + "headFlyingHours": "Количество часов, в течение которых головки чтения и записи находились над пластинами (HDD).", + "highFlyWrites": "Операции записи, при которых головка находилась выше ожидаемого положения (HDD). Данные могут быть записаны некорректно.", + "gSenseErrorRate": "Случаи ударов или вибрации, обнаруженные акселерометром (HDD). Высокие значения указывают на механические воздействия.", + "diskShift": "Расстояние смещения диска относительно исходного положения (HDD). Связано с температурой или ударами.", + "loadedHours": "Количество часов, в течение которых головки находились в рабочем положении над пластинами (HDD).", + "loadInTime": "Длительность процесса перевода головок в рабочее положение. Диагностический показатель, зависящий от производителя.", + "torqueAmplificationCount": "Количество случаев, когда накопителю требовался дополнительный крутящий момент для раскрутки. Может указывать на залипание или проблемы с двигателем.", + "flyingHeight": "Расстояние между головкой и пластиной во время работы (HDD). Критически важно для надёжности чтения и записи.", + "loadFriction": "Трение, обнаруженное при переводе головок в рабочее положение (HDD). Рост значений указывает на возможный износ механизма парковочной рампы.", + "loadUnloadRetryCount": "Неудачные попытки перевода головок в рабочее или парковочное положение (HDD). Ненулевое значение указывает на механические проблемы.", + "udmaCrcErrorCount": "Ошибки контрольной суммы при передаче данных по кабелю SATA. Обычно вызваны неисправным кабелем, неплотным соединением или проблемой с портом.", + "crcErrors": "Ошибки обмена данными через интерфейс. Обычно вызваны проблемами с кабелем или соединением.", + "crcErrorCount": "Ошибки контрольной суммы при передаче данных. Если это значение растёт, замените кабель SATA.", + "commandTimeout": "Команды, выполнение которых заняло слишком много времени и завершилось по тайм-ауту. Может указывать на проблемы с контроллером или соединением.", + "interfaceCrcErrorCount": "Ошибки CRC на линии интерфейса. Проблема с кабелем или разъёмом.", + "hardwareEccRecovered": "Ошибки чтения, исправленные аппаратным механизмом ECC. Ненулевое значение нормально; быстрый рост требует внимания.", + "eccErrorRate": "Частота ошибок, исправленных с помощью ECC. Формула производителя; показатель VALUE важнее необработанного счётчика.", + "endToEndError": "Повреждение данных, обнаруженное при передаче между кешем контроллера и интерфейсом хоста. Значение всегда должно быть нулевым.", + "endToEndErrorDetectionCount": "Количество ошибок чётности в тракте передачи данных. Ненулевое значение указывает на проблемы с контроллером.", + "wearLevelingCount": "Среднее количество циклов стирания на блок NAND (SSD). Чем ниже показатель VALUE, тем больше износ.", + "wearRangeDelta": "Разница в износе между наиболее и наименее изношенными блоками (SSD). Высокие значения указывают на неравномерный износ.", + "mediaWearoutIndicator": "Оценка оставшегося ресурса SSD Intel. Начинается со 100 и снижается до 0 по мере исчерпания ресурса.", + "ssdLifeLeft": "Оценка оставшегося срока службы SSD в процентах на основе износа NAND.", + "percentLifetimeRemain": "Оценка оставшегося срока службы в процентах. 100 означает новый накопитель; 0 — конец расчётного срока службы.", + "percentLifetimeUsed": "Процент израсходованного номинального ресурса. Дополняет процент оставшегося ресурса до 100%.", + "availableReservedSpace": "Доля оставшихся резервных блоков в процентах (SSD). Низкие значения снижают способность накопителя заменять дефектные блоки.", + "usedReservedBlockCount": "Количество резервных блоков, использованных для замены дефектных блоков (SSD). Рост значения указывает на износ.", + "unusedReservedBlockCount": "Количество резервных блоков, ещё доступных для замены дефектных блоков (SSD). Нулевое значение означает, что дальнейшая замена дефектных блоков невозможна.", + "programFailCount": "Количество сбоев записи в NAND (SSD). Рост значения указывает на износ ячеек флеш-памяти.", + "programFailCountChip": "Количество сбоев программирования на уровне микросхемы (SSD). Ненулевое значение указывает на деградацию NAND.", + "eraseFailCount": "Количество сбоев операций стирания NAND (SSD). Ненулевое значение указывает на сильный износ флеш-памяти.", + "eraseFailCountTotal": "Общее количество сбоев стирания NAND (SSD). Вместе с количеством сбоев программирования отражает общее состояние NAND.", + "eraseFailCountChip": "Количество сбоев стирания на уровне микросхемы (SSD). Ненулевое значение означает деградацию NAND.", + "runtimeBadBlock": "Количество дефектных блоков, обнаруженных при обычной работе (SSD). Рост значения указывает на износ флеш-памяти.", + "totalLbasWritten": "Общее количество записанных логических блоков (LBA). Умножьте на 512 байт, чтобы получить общий объём данных.", + "totalLbasRead": "Общее количество прочитанных логических блоков (LBA). Полезно для расчёта ежедневной нагрузки.", + "lifetimeWritesGib": "Общий объём данных, записанных за весь срок службы накопителя, в GiB.", + "lifetimeReadsGib": "Общий объём данных, прочитанных за весь срок службы накопителя, в GiB.", + "totalWritesGib": "Общий объём записанных данных в GiB. Сравните с номинальным ресурсом TBW для оценки износа.", + "totalReadsGib": "Общий объём прочитанных данных в GiB.", + "nandWritesGib": "Фактический объём записи в NAND в GiB. Превышает объём записи со стороны хоста из-за усиления записи.", + "hostWrites32Mib": "Общий объём данных, записанных хостом, в единицах по 32 MiB.", + "hostReads32Mib": "Общий объём данных, прочитанных хостом, в единицах по 32 MiB.", + "hostWritesMib": "Общий объём данных, записанных хостом, в MiB.", + "hostReadsMib": "Общий объём данных, прочитанных хостом, в MiB.", + "nandGbWrittenTlc": "Общий объём данных, записанных в ячейки TLC NAND, в ГБ. Включает дополнительные записи, вызванные усилением записи.", + "nandGibWritten": "Общий объём записи в NAND в GiB. Превышает объём записи со стороны хоста из-за усиления записи и сборки мусора.", + "averageBlockEraseCount": "Среднее количество циклов стирания на блок NAND (SSD). Накопители обычно рассчитаны на 3–100 тысяч циклов.", + "averageEraseCount": "Среднее число циклов стирания на блок. Сравните с заявленным ресурсом, чтобы оценить оставшийся срок службы.", + "maxEraseCount": "Максимальное число циклов стирания для одного блока. Большая разница со средним значением указывает на неравномерный износ.", + "totalEraseCount": "Суммарное число циклов стирания по всем блокам. Общий показатель объёма записи в NAND.", + "powerLossCapTest": "Результат самотестирования конденсатора защиты от потери питания (SSD). Неудачный результат означает риск потери данных при сбое питания.", + "powerLossProtection": "Состояние механизма защиты от потери питания. В SSD корпоративного класса используются конденсаторы для записи содержимого кэша на носитель при потере питания.", + "successfulRainRecovCnt": "Число успешных восстановлений с помощью RAIN (избыточного массива независимых NAND). Показывает, что механизм контроля чётности NAND работает.", + "ssdEraseFailCount": "Общее число сбоев стирания на SSD. Указывает на общую деградацию NAND.", + "ssdProgramFailCount": "Общее число сбоев записи на SSD. Указывает на проблемы с надёжностью ячеек флеш-памяти.", + "throughputPerformance": "Общая оценка пропускной способности (HDD). Снижение значений указывает на деградацию.", + "unknownAttribute": "Атрибут производителя, не определённый стандартом SMART. Обратитесь к документации производителя.", + "freeFallSensor": "Число обнаруженных случаев свободного падения (HDD ноутбука). Головки паркуются для предотвращения повреждений при падении.", + "grownDefectList": "Секторы, переназначенные из-за дефектов, обнаруженных во время работы. Эквивалент показателя переназначенных секторов на SATA. Рост значения означает деградацию накопителя.", + "readErrorsCorrected": "Ошибки чтения, исправленные с помощью ECC. Нормальны для накопителей корпоративного класса при высокой нагрузке; критичны только неисправленные ошибки.", + "readEccFast": "Ошибки, исправленные быстрым механизмом ECC на лету во время чтения. Нормальны для накопителей SAS.", + "readEccDelayed": "Ошибки, требующие отложенного или автономного исправления с помощью ECC при чтении. Ненулевое значение допустимо, но оно не должно быстро расти.", + "readUncorrectedErrors": "Ошибки чтения, которые не удалось исправить с помощью ECC. Ненулевое значение означает, что данные были потеряны или не могли быть прочитаны. Критически важный показатель.", + "readDataProcessed": "Общий объём данных, прочитанных накопителем. Полезен для расчёта ежедневной нагрузки.", + "writeErrorsCorrected": "Ошибки записи, исправленные с помощью ECC. Нормальны для накопителей корпоративного класса.", + "writeUncorrectedErrors": "Ошибки записи, которые не удалось исправить с помощью ECC. Ненулевое значение означает возможную потерю данных. Критически важный показатель.", + "writeDataProcessed": "Общий объём данных, записанных на накопитель. Полезен для анализа нагрузки.", + "verifyErrorsCorrected": "Ошибки проверки, исправленные во время фоновой проверки.", + "verifyUncorrectedErrors": "Ошибки проверки, которые не удалось исправить. Ненулевое значение указывает на деградацию носителя.", + "nonMediumErrors": "Ошибки контроллера или шины, не связанные с самим носителем. Большое число ошибок может указывать на проблемы с объединительной платой или кабелем.", + "sasTemperature": "Текущая температура накопителя. Накопители SAS корпоративного класса выдерживают температуру до 55–60 °C при длительной нагрузке.", + "sasPowerOnHours": "Общее время работы накопителя во включённом состоянии в часах. Накопители корпоративного класса рассчитаны на круглосуточную работу.", + "startStopCycles": "Циклы запуска и остановки двигателя. Накопители SAS корпоративного класса рассчитаны на 50 000 и более циклов.", + "loadUnloadCycles": "Циклы загрузки и выгрузки головок. Накопители корпоративного класса рассчитаны на 600 000 и более циклов.", + "backgroundScanStatus": "Состояние фонового сканирования носителя SCSI. Сканирование выполняется непрерывно для обнаружения дефектов поверхности." + }, + "recommendations": { + "passedTitle": "Проверьте результаты отчёта", + "passedText": "Статус PASSED не исключает наличия предупреждений или зарегистрированных ошибок. Изучите подробности отчёта, продолжайте регулярный мониторинг и поддерживайте резервные копии в актуальном состоянии.", + "healthyTitle": "Диск исправен", + "healthyText": "Все атрибуты SMART находятся в пределах нормы. Продолжайте регулярный мониторинг.", + "criticalTitle": "Критическая ситуация: обнаружена проблема с состоянием диска", + "criticalText": "SMART сообщает о проблеме с состоянием диска. Немедленно создайте резервную копию всех данных и запланируйте замену диска.", + "reallocatedTitle": "Обнаружены переназначенные секторы ({count})", + "reallocatedText": "На диске есть повреждённые секторы, которые были переназначены. Внимательно следите за состоянием диска и рассмотрите возможность его замены, если их количество увеличится.", + "pendingTitle": "Секторы, ожидающие переназначения ({count})", + "pendingText": "Некоторые секторы ожидают переназначения. Это может указывать на приближающийся отказ.", + "highTemperature": "Высокая температура ({temperature}°C)", + "hotHdd": "Жёсткий диск сильно нагревается. Улучшите циркуляцию воздуха в корпусе или установите дополнительное охлаждение.", + "hotSsd": "SSD сильно нагревается. Проверьте циркуляцию воздуха вокруг накопителя.", + "hotNvme": "Накопитель NVMe перегревается. Рассмотрите возможность установки радиатора или улучшения циркуляции воздуха в корпусе.", + "maintenanceTitle": "Регулярное обслуживание", + "maintenanceText": "Запланируйте ежемесячное выполнение расширенного теста SMART для раннего выявления проблем.", + "backupTitle": "Стратегия резервного копирования", + "backupText": "Регулярно создавайте резервные копии критически важных данных независимо от состояния диска.", + "nvmeWarningTitle": "Активно критическое предупреждение NVMe (0x{value})", + "nvmeWarningText": "Контроллер NVMe выдал предупреждение. Немедленно создайте резервную копию данных и проведите дальнейшую диагностику.", + "nvmeMediaTitle": "Обнаружены ошибки носителя NVMe ({count})", + "nvmeMediaText": "Неисправимые ошибки флеш-памяти NAND указывают на физическое повреждение. Создайте резервную копию данных и запланируйте замену накопителя.", + "unsafeTitle": "Большое количество небезопасных отключений ({count})", + "unsafeText": "Частые перебои питания повышают риск повреждения встроенного ПО. Обеспечьте стабильное питание или используйте ИБП.", + "seagateTitle": "Seagate Raw_Read_Error_Rate — нормальное поведение", + "seagateText": "Накопители Seagate сообщают очень большие необработанные значения атрибута № 1. Это ожидаемое поведение; значение имеет только нормализованный показатель, который должен оставаться равным 100.", + "smrTitle": "Обнаружен накопитель SMR — ограничения записи", + "smrText": "Диски SMR медленнее выполняют случайную запись и могут приостанавливать работу при высокой смешанной нагрузке. Они подходят для резервных копий и архивов, но не рекомендуются в качестве основного хранилища Proxmox или виртуальных устройств (vdev) ZFS." + } + }, + "ataErrors": { + "idnf": "Адрес сектора не найден — возможен повреждённый сектор или проблема с кабелем", + "unc": "Неисправимая ошибка чтения — повреждённый сектор", + "abrt": "Команда прервана накопителем", + "amnf": "Адресная метка не найдена — повреждение поверхности", + "tk0nf": "Дорожка 0 не найдена — аппаратная неисправность накопителя", + "bbk": "Обнаружен повреждённый блок", + "icrc": "Ошибка CRC интерфейса — проблема с кабелем или разъёмом", + "mc": "Носитель заменён", + "mcr": "Запрошена замена носителя", + "wp": "Защита от записи" + }, + "scheduleTab": { + "loading": "Загрузка расписаний...", + "automaticTests": "Автоматические тесты SMART", + "toggleHelp": "Включить или отключить все запланированные тесты", + "enabled": "Включено", + "disabled": "Отключено", + "configured": "Настроенные расписания", + "disks": "Диски", + "allDisks": "все диски", + "keepResults": "Хранить {count} результатов", + "empty": "Тесты по расписанию не настроены", + "emptyHint": "Создайте расписание для автоматического запуска тестов SMART.", + "edit": "Изменить расписание", + "new": "Новое расписание", + "testType": "Тип теста", + "frequency": "Периодичность", + "daily": "Ежедневно", + "weekly": "Еженедельно", + "monthly": "Ежемесячно", + "dailyAt": "Ежедневно в {time}", + "weeklyAt": "{day} в {time}", + "monthlyAt": "{day}-го числа каждого месяца в {time}", + "dayOfWeek": "День недели", + "dayOfMonth": "День месяца", + "timeHour": "Время (час)", + "retention": "Хранение результатов", + "lastN": "Последние {count}", + "keepAll": "Хранить все", + "saving": "Сохранение...", + "save": "Сохранить расписание", + "cancel": "Отмена", + "add": "Добавить расписание", + "note": "Тесты по расписанию запускаются автоматически через cron. Результаты сохраняются в истории SMART.", + "days": { + "sunday": "Воскресенье", + "monday": "Понедельник", + "tuesday": "Вторник", + "wednesday": "Среда", + "thursday": "Четверг", + "friday": "Пятница", + "saturday": "Суббота" + } + }, + "idle": "Простой", + "idleTitle": "Температура не считывается, пока диск не используется, чтобы он мог остановить вращение. Температура снова отображается, как только диск начинает использоваться.", + "diskExcluded": "Исключён", + "diskExcludedTitle": "Исключён из периодического считывания в настройках." + }, + "details": { + "temperature": { + "title": "Температура процессора", + "diskTitle": "Температура", + "current": "Текущая", + "min": "Мин.", + "avg": "Сред.", + "max": "Макс.", + "seriesName": "Температура", + "noData": "За этот период нет данных о температуре", + "collectionHint": "Данные собираются каждые 60 секунд", + "openHistory": "Открыть историю температуры", + "collectingSamples": "Идёт сбор измерений — график начнёт заполняться примерно через 2 минуты", + "sampleInterval": "Измерения выполняются каждые 60 секунд", + "timeframes": { + "hour": "1 час", + "day": "24 часа", + "week": "7 дней", + "month": "30 дней" + }, + "status": { + "hot": "Высокая температура", + "warm": "Повышенная температура", + "normal": "Норма" + } + }, + "processes": { + "topByCpu": "Процессы с наибольшей загрузкой процессора", + "topByMemory": "Процессы с наибольшим потреблением памяти", + "cpuDescription": "Текущая загрузка процессора каждым процессом как доля общей процессорной мощности хоста — в том же масштабе, что и на карточке «Загрузка процессора» выше. Обновляется каждые 3 с, пока окно открыто.", + "memoryDescription": "Текущий объём резидентной памяти каждого процесса. Обновляется каждые 3 с, пока окно открыто.", + "filterPlaceholder": "Фильтр по командной строке, пользователю или PID...", + "pid": "PID", + "user": "Пользователь", + "command": "Команда", + "cpuPercent": "CPU, %", + "memory": "Память", + "memPercent": "Память, %", + "noMatches": "Нет процессов, соответствующих фильтру", + "captured": "Снимок получен: {time}", + "matchCount": "Совпадение: {count} из {total} процессов", + "matchesCount": "Совпадений: {count} из {total} процессов", + "topCount": "Первые {shown} из {total} процессов", + "loadFailed": "Не удалось получить список процессов", + "lifetimeAverageTitle": "Средняя загрузка CPU в процентах за всё время работы процесса — помогает определить базовый уровень потребления ресурсов длительно работающими процессами в состоянии простоя", + "averageShort": "ср." + }, + "processInfo": { + "titleFallback": "Процесс", + "descriptionLive": "Текущий снимок из /proc/{pid}. Автоматически обновляется каждые {seconds} с, пока окно открыто.", + "descriptionExited": "Последний снимок из /proc/{pid} перед завершением процесса.", + "finishedTitle": "Этот процесс завершён", + "finishedDescription": "Вероятно, это был кратковременный вспомогательный процесс, скрипт, pct exec или однократная команда, выполнение которых завершилось, пока модальное окно было открыто. Ниже приведён последний снимок, полученный перед завершением процесса, — это не устаревшие данные и не ошибка чтения.", + "loading": "Загрузка…", + "fetchFailed": "Не удалось получить данные процесса", + "captured": "Снимок получен", + "lastSeen": "Последнее обнаружение", + "sections": { + "overview": "Обзор", + "resources": "Ресурсы", + "command": "Команда", + "lifetime": "Время работы" + }, + "labels": { + "state": "Состояние", + "parent": "Родительский процесс", + "threads": "Потоки", + "openFds": "Открытые файловые дескрипторы", + "user": "Пользователь", + "group": "Группа", + "cpu": "CPU", + "memory": "Память", + "residentRss": "Резидентная память (RSS)", + "virtualSize": "Объём виртуальной памяти", + "swap": "Память подкачки", + "ioRead": "Ввод-вывод: чтение", + "ioWrite": "Ввод-вывод: запись", + "name": "Название", + "commandLine": "Командная строка", + "executable": "Исполняемый файл", + "workingDir": "Рабочий каталог", + "started": "Время запуска", + "runningFor": "Время работы" + }, + "states": { + "running": "Выполняется", + "sleeping": "Ожидание", + "diskWait": "Ожидание дискового ввода-вывода", + "zombie": "Зомби", + "stopped": "Остановлено", + "tracingStop": "Остановка при трассировке", + "dead": "Мёртвый процесс", + "idle": "Простой", + "exited": "Завершён" + } + } + }, + "vmLxc": { + "loadingTitle": "Загрузка виртуальных машин и контейнеров LXC...", + "loadingDescription": "Получение состояния виртуальных машин и контейнеров LXC", + "loadingError": "Ошибка загрузки виртуальных машин: {error}", + "totalVmLxc": "Всего виртуальных машин и контейнеров LXC", + "totalCpuAllocated": "Всего выделено ресурсов ЦП", + "totalMemory": "Общий объём памяти", + "totalDisk": "Общий объём дисков", + "running": "работают", + "stopped": "остановлены", + "vms": "Виртуальные машины", + "used": "Использовано", + "configured": "Настроено", + "inUse": "Используется", + "allocated": "Выделено", + "total": "Всего", + "utilization": "использ.", + "idle": "Простой", + "listTitle": "Виртуальные машины и контейнеры", + "empty": "Виртуальные машины не найдены", + "statusFilter": { + "ariaLabel": "Фильтрация виртуальных машин и контейнеров", + "all": "Все", + "running": "Выполняется", + "stopped": "Остановлено", + "empty": "Нет виртуальных машин или контейнеров со статусом «{status}»" + }, + "filters": { + "searchPlaceholder": "Поиск по имени, ID, тегу или примечанию…", + "searchAriaLabel": "Поиск виртуальных машин и контейнеров", + "clearSearch": "Очистить поиск", + "updates": "Обновления", + "resultCount": "{shown} из {total} машин", + "noMatches": "Нет виртуальных машин или контейнеров LXC, соответствующих поисковому запросу.", + "noRunning": "Нет работающих виртуальных машин или контейнеров LXC.", + "noStopped": "Нет остановленных виртуальных машин или контейнеров LXC.", + "noUpdates": "Нет доступных обновлений для LXC.", + "typeSynonyms": { + "lxc": "контейнер контейнеры", + "qemu": "вм виртуальная машина виртуальные машины" + } + }, + "uptime": "Время работы: {uptime}", + "cpuUsage": "Загрузка CPU", + "memory": "Память", + "disk": "Диск", + "diskUsage": "Использование диска", + "diskIo": "Дисковый ввод-вывод", + "networkIo": "Сетевой ввод-вывод", + "sinceBoot": "с момента загрузки", + "loadingConfiguration": "Загрузка конфигурации...", + "resources": "Ресурсы", + "cpuCores": "Ядра процессора", + "notes": "Заметки", + "hideNotes": "Скрыть заметки", + "lessInfo": "Меньше информации", + "info": "Информация", + "ipAddresses": "IP-адреса", + "enterNotes": "Введите заметки здесь...", + "editNotes": "Изменить", + "savingNotes": "Сохранение...", + "notesDecodeError": "Ошибка декодирования заметок. Отредактируйте их, чтобы исправить ошибку.", + "noNotes": "Заметок пока нет. Нажмите «Изменить», чтобы добавить заметки.", + "containerConfiguration": "Конфигурация контейнера", + "mountedFromContainer": "Смонтировано изнутри контейнера", + "openTerminal": "Открыть терминал", + "coreCount": { + "one": "{count} ядро", + "few": "{count} ядра", + "many": "{count} ядра" + }, + "duration": { + "dhm": "{days} д {hours} ч {minutes} мин" + }, + "details": { + "sourceHost": "Источник (хост)", + "mountedAtCt": "Точка монтирования (CT)", + "total": "Всего", + "used": "Использовано", + "available": "Доступно", + "swap": "Память подкачки", + "privilegeLevel": "Уровень привилегий", + "gpuPassthrough": "Проброс GPU", + "hardwareDevices": "Аппаратные устройства", + "cpuSockets": "Сокеты CPU", + "cpuType": "Тип CPU", + "numa": "NUMA", + "bios": "BIOS", + "machineType": "Тип машины", + "vga": "VGA", + "qemuAgent": "Агент QEMU", + "tabletPointer": "Планшетный указатель", + "localTime": "Местное время", + "rawConfig": "Исходная конфигурация", + "scsiController": "Контроллер SCSI", + "dnsNameserver": "Сервер DNS", + "searchDomain": "Домен поиска", + "hostname": "Имя хоста", + "storageType": "Хранилище {type}", + "mountAttributes": "Атрибуты монтирования (конфигурация LXC)", + "runtimeMountOptions": "Параметры монтирования во время выполнения", + "privileged": "Привилегированный", + "unprivileged": "Непривилегированный", + "hardware": "Оборудование", + "pciPassthrough": "Проброс PCI", + "usbDevices": "Устройства USB", + "serialPorts": "Последовательные порты", + "bridge": "Мост", + "enabled": "Включено", + "disabled": "Отключено", + "on": "вкл.", + "off": "выкл.", + "included": "включено", + "excluded": "исключено", + "storage": "Хранилище", + "rootFilesystem": "Корневая файловая система", + "efiDisk": "Диск EFI", + "tpmState": "Состояние TPM", + "mountPoint": "Точка монтирования", + "mountPointIndexed": "Точка монтирования {index}", + "network": "Сеть", + "networkInterface": "Сетевой интерфейс {index}", + "hostInterface": "Хост: {interface}", + "gateway": "Шлюз", + "gatewayV6": "Шлюз IPv6", + "type": "Тип", + "rateLimit": "Ограничение скорости", + "firewall": "Межсетевой экран", + "backup": "Резервная копия", + "replicate": "Реплицировать", + "volume": "Том", + "path": "Путь", + "media": "Носитель", + "discard": "Освобождение блоков (Discard)", + "cache": "Кэш", + "efiType": "Тип EFI", + "preEnrolledKeys": "Предустановленные ключи", + "serial": "Серийный номер", + "mountTypes": { + "pveVolume": "Том PVE", + "pveStorageBind": "Привязка из хранилища PVE", + "hostBind": "Привязка с хоста", + "adHoc": "Монтирование вручную внутри контейнера" + }, + "mountStatus": { + "stale": "устаревшее", + "notMounted": "Не смонтировано", + "hostDetached": "Отсоединено от хоста", + "readOnly": "только для чтения", + "stopped": "остановлены", + "mounted": "Смонтировано" + }, + "mountErrors": { + "configuredButNotMounted": "Настроено, но не смонтировано" + }, + "startOnBoot": "Запуск при загрузке", + "watchdog": "Сторожевой таймер", + "watchdogHelp": "Автоматически перезапускает это приложение при сбое.", + "tags": "Метки", + "tagsPlaceholder": "Добавить метку…", + "tagsNone": "Нет тегов" + }, + "logs": { + "header": "Журналы для {name} (VMID: {vmid})", + "node": "Узел", + "type": "Тип", + "totalLines": "Всего строк", + "generated": "Сформировано" + }, + "tabs": { + "status": "Статус", + "mounts": "Точки монтирования", + "backups": "Резервные копии", + "updates": "Обновления", + "firewall": "Межсетевой экран", + "app": "Приложение", + "logs": "Журналы" + }, + "actions": { + "start": "Запустить", + "shutdown": "Завершить работу", + "reboot": "Перезагрузить", + "forceStop": "Принудительно остановить", + "working": "Выполняется...", + "startPending": "Запуск...", + "shutdownPending": "Завершение работы...", + "rebootPending": "Перезагрузка...", + "stopPending": "Остановка..." + }, + "confirm": { + "forceStopTitle": "Принудительно остановить", + "rebootTitle": "Перезагрузить", + "forceStopDescription": "При этом штатная процедура завершения работы гостевой ОС пропускается, что может привести к повреждению работающих баз данных или файловых систем. Гостевая система будет немедленно принудительно остановлена.", + "rebootDescription": "Это приведёт к принудительной перезагрузке без ожидания завершения отложенных операций записи гостевой ОС. По возможности используйте штатное завершение работы.", + "typeToConfirm": "Введите {vmid} для подтверждения:", + "guest": "Гостевая система:" + }, + "guestTypes": { + "container": "контейнер", + "vm": "VM", + "containerUi": "Контейнер" + }, + "backups": { + "title": "Резервные копии", + "create": "Создать резервную копию", + "available": "Доступные резервные копии", + "loading": "Загрузка резервных копий...", + "empty": "Резервные копии не найдены", + "emptyHint": "Создайте первую резервную копию с помощью кнопки выше", + "refresh": "Обновить", + "refreshFailed": "Не удалось обновить список резервных копий. Обновите его ещё раз, чтобы подтвердить их текущее состояние.", + "deleteSelected": "Удалить выбранные ({count})", + "deletedCount": "Удалено резервных копий: {count}.", + "unconfirmedCount": "Не подтверждено удаление резервных копий: {count}. Обновите список и проверьте задачи Proxmox перед повторной попыткой.", + "deleteFailed": "Не удалось подтвердить удаление. Обновите список и проверьте задачи Proxmox перед повторной попыткой.", + "selectHint": "Выберите незащищённые резервные копии (до 20 за один раз)", + "selectBackup": "Выбрать резервную копию", + "protected": "Защищено", + "confirmTitle": "Удалить резервные копии ({count})?", + "confirmDescription": "Эти архивы резервных копий ВМ/контейнера {vmid} будут удалены безвозвратно. Защищённые резервные копии исключены из удаления. Сама гостевая система удалена не будет.", + "deleting": "Ожидание завершения удаления выбранных архивов в Proxmox…", + "cancel": "Отмена", + "confirmDelete": "Удалить резервные копии" + }, + "updatesPanel": { + "pendingTitle": "Ожидающие установки обновления пакетов", + "total": "Всего: {count}", + "lastChecked": "Последняя проверка:", + "applyWith": "Применить с помощью", + "securityUpdate": "Обновление безопасности", + "security": "безопасность", + "clickToView": "Нажмите, чтобы просмотреть пакеты, ожидающие обновления", + "updateSingular": "обновление", + "updatePlural": "обновления", + "packagePending": "Ожидает обновления: {count} пакет", + "packagesPending": "Пакеты, ожидающие обновления: {count}", + "securityUpdatePending": "Обновление безопасности: {count}", + "securityUpdatesPending": "Обновления безопасности: {count}", + "fullListInside": "Полный список доступен внутри контейнера:", + "loadingMountPoints": "Загрузка точек монтирования..." + }, + "errors": { + "unknown": "Неизвестная ошибка", + "backupStartFailed": "Не удалось запустить создание резервной копии: {message}", + "controlFailed": "Не удалось выполнить действие «{action}» для ВМ {vmid}: {message}", + "controlNotConfirmed": "Завершение операции не подтверждено. Проверьте состояние гостевой системы перед повторной попыткой.", + "saveNotesFailed": "Ошибка сохранения заметок. Попробуйте ещё раз.", + "appNotFound": "Это приложение больше недоступно. Обновите страницу и попробуйте ещё раз.", + "saveCustomCommandFailed": "Не удалось сохранить пользовательскую команду обновления: {message}", + "removeCustomCommandConfirm": "Удалить пользовательскую команду обновления для «{name}»?", + "removeCustomCommandFailed": "Не удалось удалить пользовательскую команду обновления: {message}", + "hideNoticeFailed": "Не удалось скрыть это уведомление: {message}" + }, + "backupModal": { + "title": "Резервная копия {type} {vmid} ({name})", + "description": "Настройте параметры создания резервной копии для этого объекта: {type}", + "storage": "Хранилище", + "selectStorage": "Выберите хранилище", + "free": "свободно", + "mode": "Режим", + "notification": "Уведомление", + "useGlobalSettings": "Использовать глобальные настройки", + "alwaysNotify": "Всегда уведомлять", + "notifyOnFailure": "Уведомлять при сбое", + "neverNotify": "Никогда не уведомлять", + "protected": "Защита от случайного удаления", + "pbsChangeMode": "Режим обнаружения изменений PBS", + "forPbsStorage": "для хранилища PBS", + "notes": "Заметки", + "variables": "Переменные: {{cluster}}, {{guestname}}, {{node}}, {{vmid}}", + "creating": "Создание...", + "submit": "Резервная копия", + "typeContainer": "контейнер", + "typeVirtualMachine": "виртуальная машина", + "modes": { + "snapshot": "Снимок", + "suspend": "Приостановка", + "stop": "Остановка" + }, + "changeModes": { + "default": "По умолчанию", + "legacy": "Устаревший", + "data": "Данные" + } + }, + "firewall": { + "title": "Журналы межсетевого экрана", + "refresh": "Обновить", + "loading": "Загрузка журнала межсетевого экрана...", + "disabledTitle": "Межсетевой экран для {type} не включён", + "disabledHint": "Включите его в интерфейсе Proxmox в разделе {type} -> Межсетевой экран -> Параметры и добавьте хотя бы одно правило с log: info или более высоким уровнем журналирования, чтобы начать запись сведений о пакетах. Новые записи появятся здесь автоматически при следующем обновлении.", + "readFailed": "Не удалось прочитать журнал межсетевого экрана", + "empty": "События межсетевого экрана пока не зарегистрированы.", + "emptyHint": "Правила с log: info или более высоким уровнем журналирования будут добавлять записи в эту панель по мере поступления пакетов." + }, + "consoleLog": { + "title": "Вывод консоли", + "description": "Стандартный вывод и стандартный поток ошибок основного процесса образа.", + "stopped": "Контейнер остановлен; в журнале сохраняется вывод его предыдущих запусков.", + "lastLines": "Последние {count} строк", + "follow": "Следить за выводом", + "pause": "Приостановить", + "refresh": "Обновить", + "sinceStart": "С последнего запуска", + "allHistory": "Полная история", + "startedAt": "Контейнер запущен · {date}", + "download": "Скачать", + "filter": "Фильтровать строки", + "loading": "Загрузка вывода консоли...", + "empty": "Вывод пока не записан.", + "emptyHint": "Строки появляются здесь по мере того, как контейнер выводит их в консоль.", + "noMatches": "Нет строк, соответствующих фильтру.", + "readFailed": "Не удалось прочитать журнал консоли", + "notAvailableTitle": "У этого контейнера нет журнала консоли", + "notAvailableHint": "Журнал консоли настраивается, когда ProxMenux устанавливает контейнер из его образа OCI." + }, + "ociUpdates": { + "notTracked": "После регистрации приложения на вкладке «Приложение» его образ отслеживается здесь.", + "installedImage": "Установленный образ", + "newImage": "Доступен новый образ {image}", + "stackNote": "Часть многоконтейнерного приложения (основной CT {primary}, всего контейнеров: {count}): обновление охватывает все контейнеры приложения.", + "memberNote": "Этот контейнер входит в состав многоконтейнерного приложения с основным контейнером {primary} и не обновляется отдельно. Обновления применяются из основного контейнера, который обновляет все контейнеры приложения ({count}) вместе.", + "openPrimary": "Открыть основной контейнер", + "pendingNote": "Операция с этим контейнером была прервана; кнопка «Восстановить» открывает процедуру восстановления.", + "update": "Обновить", + "modify": "Изменить", + "recover": "Восстановить", + "registerRestored": "Зарегистрировать повторно", + "terminalTitleUpdate": "Обновить приложение OCI", + "terminalTitleRecoverPrevious": "Восстановить предыдущую установку OCI", + "terminalTitleModify": "Изменить приложение OCI", + "terminalTitleRecover": "Зарегистрировать восстановленные приложения OCI", + "terminalDescription": "Запускает тот же процесс, что и меню ProxMenux: OCI manager Apps → Manage — управление установленными приложениями OCI.", + "keepBackup": "Сохранять резервную копию, созданную перед обновлением", + "noKeepBackup": "Резервная копия, созданная перед обновлением, не сохраняется", + "keepBackupHelp": "При каждом обновлении перед заменой образа создаётся резервная копия контейнера, чтобы восстановить его в случае сбоя обновления. Если эта опция включена, резервная копия сохраняется в выбранном хранилище; в Proxmox Backup Server резервная копия записывается перед обновлением.", + "scheduleHelp": "Обновляется только образ и только тогда, когда в его реестре появляется новый.", + "releaseDelayHelp": "Новый образ устанавливается только после того, как с момента его публикации пройдёт не менее указанного времени." + }, + "options": { + "title": "Параметры", + "snapshotBefore": "Создавать снимок перед применением", + "snapshotOn": "— в {storage}", + "noSnapshot": "Без создания снимка перед применением", + "restartAfter": "Перезапускать контейнер после применения", + "noRestart": "Без перезапуска после применения", + "snapshotLabel": "Создавать снимок контейнера перед применением (vzdump)", + "appliesToBoth": "Применяется к запускам вручную и по расписанию.", + "backupStorage": "Хранилище резервных копий", + "pickStorage": "Выберите хранилище", + "editButton": "Изменить", + "cancelButton": "Отмена", + "saveButton": "Сохранить", + "storageAuto": "авто" + }, + "scheduled": { + "title": "Обновления по расписанию", + "enabledHelper": "Выполняются в фоновом режиме с использованием указанных выше параметров применения.", + "disabledHelper": "Включите, чтобы обновления выполнялись автоматически по расписанию cron.", + "chipLabel": "Расписание", + "disabledSuffix": "(отключено)", + "whatLabel": "Что обновлять:", + "targetOs": "Пакеты ОС", + "targetApp": "Приложение", + "targetBoth": "ОС + приложение", + "lastRun": "Последний запуск: {date}", + "rebootRequired": "Для завершения обновления требуется перезагрузка.", + "rebootPackages": "Пакеты: {packages}", + "viewLog": "Просмотреть журнал", + "logTitle": "Журнал обновления", + "logDescription": "Вывод последнего обновления по расписанию для {name} (LXC {vmid}).", + "logLoading": "Загрузка журнала…", + "logEmpty": "При этом запуске вывод отсутствовал.", + "logFailed": "Не удалось загрузить журнал обновления.", + "logTruncated": "Показан только конец журнала, поскольку его размер превышает предел отображения.", + "closeLog": "Закрыть", + "runSuccess": "✓ успешно", + "runPartial": "выполнено частично", + "runFailed": "✗ ошибка", + "runDeferred": "отложено в целях безопасности", + "runSkipped": "нет ожидающих обновлений", + "runSkippedStatus": "запуск пропущен", + "reasonStoppedContainer": "Контейнер остановлен; обновление по расписанию пропущено.", + "reasonStoppedContainerHistorical": "На момент обновления по расписанию контейнер был остановлен.", + "releaseDelaySummary": "Отсрочка обновления после выпуска на {days} дн.", + "releaseDelayLabel": "Период ожидания после выпуска новой версии приложения", + "releaseDelayNone": "Без периода ожидания", + "releaseDelayDays": "Ожидать {days} дн.", + "releaseDelayHelp": "Применяется только к выбранным приложениям с отслеживанием версий. С момента выпуска ожидающих установки версий должен пройти указанный срок; для приложений без отслеживания версий программа обновления по-прежнему запускается каждый раз по расписанию.", + "notScheduled": "Не запланировано", + "frequency": "Периодичность", + "cronExpression": "Выражение cron", + "cronPlaceholder": "Например, 0 3 * * *", + "whatToUpdate": "Что обновлять", + "targetOptionOs": "Только пакеты ОС", + "targetOptionApp": "Только приложение", + "targetOptionBoth": "ОС + приложение", + "dockerComposeTarget": "Docker Compose · {project}", + "dockerContainerTarget": "Контейнер Docker · {container}", + "dockerEngineTarget": "Docker Engine", + "noTargets": "Не выбраны объекты для обновления", + "selectAtLeastOne": "Выберите хотя бы один объект для обновления.", + "deleteButton": "Удалить расписание", + "deleteConfirm": "Удалить расписание обновлений для этого контейнера? Настройки применения по умолчанию (создание резервной копии + перезапуск) сохранятся.", + "loadFailed": "Не удалось загрузить расписание обновлений.", + "saveFailed": "Не удалось сохранить расписание обновлений.", + "deleteFailed": "Не удалось удалить расписание обновлений.", + "humanDaily": "Ежедневно в {time}", + "humanWeekly": "Еженедельно ({day} {time})", + "humanMonthly": "Ежемесячно ({day}-го числа в {time})", + "humanHourly": "Ежечасно", + "weekdays": [ + "Воскресенье", + "Понедельник", + "Вторник", + "Среда", + "Четверг", + "Пятница", + "Суббота" + ] + }, + "cronChip": { + "detected": "Обнаружено задание cron на хосте", + "variantTteck": "tteck (устаревший вариант)", + "variantCustom": "Пользовательский вариант", + "variantCommunityScripts": "community-scripts", + "scopeAptApk": "apt/apk во всех контейнерах", + "scopeUnknown": "Область действия неизвестна" + }, + "cronPresets": { + "hourly": "Ежечасно", + "dailyAt3": "Ежедневно в 3:00", + "dailyAtNoon": "Ежедневно в 12:00", + "weeklySun3": "Еженедельно (воскресенье, 3:00)", + "monthly1st3": "Ежемесячно (1-го числа в 3:00)", + "custom": "Пользовательское расписание cron…" + }, + "updates": { + "osPackagesTitle": "Пакеты ОС", + "checkNow": "Проверить обновления", + "checkSystemPackages": "Проверить системные пакеты", + "checkInProgress": "Выполняется проверка", + "refreshCheckHelp": "Обновляет индексы пакетов и проверяет наличие доступных обновлений в работающем контейнере. Ничего не устанавливается.", + "notCheckedYet": "Проверка обновлений ещё не выполнялась.", + "checkStillRunning": "Проверка ещё выполняется. Её результат будет сохранён после завершения.", + "checkBeforeUpdate": "Сначала проверьте наличие обновлений", + "startBeforeCheck": "Запустите контейнер, затем проверьте наличие обновлений. Отсутствие индикатора не означает, что обновлений нет.", + "checkReadOnlyHelp": "Получает сведения о текущей ОС и пакетах, для которых доступны обновления, из существующих индексов. Установка пакетов и обновление их индексов не выполняются.", + "checkCooldown": "Проверка уже выполняется или была недавно запрошена. Повторите попытку через {seconds} сек.", + "checkStale": "Результат проверки устарел", + "checkStaleHelp": "Этому результату более 48 часов, либо у него отсутствует корректная дата проверки. Прежде чем полагаться на него, выполните новую проверку.", + "lastCheckedPrefix": "Последняя проверка:", + "familyLabel": "Семейство:", + "applyOsUpdate": "Применить обновление ОС", + "osUpToDate": "ОС не требует обновления", + "osStatusUnavailable": "Не удалось определить состояние обновлений ОС.", + "installedByHelperPrefix": "Установлено с помощью", + "helperScriptsName": "Proxmox VE Helper-Scripts", + "helperCommandEditHint": "Если вы измените эту команду запуска, она будет сохранена как пользовательская команда.", + "customOnlineDescription": "Или используйте онлайн-скрипт, предоставленный разработчиком:", + "customOnlineExampleNote": "Замените URL в примере официальным URL скрипта для вашего приложения.", + "customExamplesHeading": "Примеры для адаптации:", + "updaterChoiceHint": "Выберите и сохраните способ обновления.", + "updaterMethodLabel": "Способ обновления", + "helperMethod": "Helper-Scripts", + "customMethod": "Пользовательская команда", + "helperMethodHelp": "О Helper-Scripts", + "customMethodHelp": "О пользовательских командах", + "helperDetectedChoice": "Для этого приложения обнаружено средство обновления Helper-Scripts.", + "helperUnavailableChoice": "Выбранное средство обновления Helper-Scripts больше недоступно.", + "disableUpdater": "Отключить", + "disableUpdaterConfirm": "Отключить способ обновления для {name}? Выбранные параметры в сохранённых планах и расписаниях сохранятся, но это приложение не будет запускаться, пока способ обновления не будет настроен заново.", + "noUpdaterSelected": "Вы не выбрали способ обновления.", + "helperMethodDescription": "ProxMenux запускает обнаруженное средство обновления внутри LXC и отображает его журнал и результат. Поддержку средства обновления осуществляет Proxmox VE Helper-Scripts.", + "customMethodDescription": "Вы можете использовать собственное средство обновления приложения, менеджер пакетов или новый исполняемый файл. Команда выполняется внутри LXC с правами администратора.", + "updaterInstructions": "Ознакомьтесь с инструкциями по использованию средства обновления.", + "helperDocumentation": "Документация по обновлению", + "helperSource": "Скрипт приложения", + "customMethodExample": "Адаптируйте имена, пути и службу под своё приложение. Будет выполнена только та команда, которую вы сохраните.", + "helperCommandLabel": "Команда внутри LXC", + "helperCommandFallback": "Если wget недоступен, ProxMenux использует curl -fsSL для загрузки того же скрипта.", + "customScriptTitle": "Скрипт обновления", + "customScriptDescription": "Запустите существующий скрипт обновления приложения внутри LXC.", + "customPackageTitle": "Пакет Debian/Ubuntu", + "customPackageDescription": "Замените my-package на имя пакета, который нужно обновить.", + "customBinaryTitle": "Бинарный файл", + "customBinaryDescription": "Сначала загрузите и проверьте официальный бинарный файл нужной версии и архитектуры по адресу /tmp/my-app.new. В этом примере сохраняется резервная копия предыдущего бинарного файла и перезапускается соответствующая служба.", + "helperUpdatesRun": "Установлено с помощью Proxmox Helper-Scripts.", + "installedPrefix": "установлено", + "upstreamAvailable": "доступна версия {version} от разработчика", + "upToDateAt": "Актуальная версия на", + "applyUpdate": "Применить обновление", + "upToDate": "Актуальная версия", + "runUpdater": "Запустить средство обновления", + "runCustomCommand": "Выполнить свою команду", + "installedVersionUnverified": "Установленная версия не проверена. Не удалось подтвердить наличие обновления.", + "versionStatusUnknown": "Наличие обновления не подтверждено. Сведения о версии недоступны или неполны.", + "terminalTitle": "Применение обновлений — CT {vmid}", + "backgroundRunning": "{name} (CT {vmid}): на сервере выполняется обновление.", + "backgroundOutputTrimmed": "Более ранняя часть вывода была обрезана; обновление продолжается в штатном режиме.", + "backgroundFinished": "{name} (CT {vmid}): обновление завершено. Просмотрите его результат.", + "viewBackgroundJob": "Просмотреть обновление", + "backgroundDetached": "Соединение с окном просмотра прервано. Обновление продолжается на сервере; подключитесь повторно после входа в систему.", + "backgroundDescription": "После закрытия этого окна обновление продолжится. Для отмены нажмите Ctrl+C.", + "terminalDescriptionOs": "Установка обновлений пакетов ОС внутри контейнера...", + "terminalDescriptionApp": "Запуск средства обновления приложения внутри контейнера...", + "terminalDescriptionBoth": "Установка обновлений пакетов ОС и приложения внутри контейнера...", + "terminalCompletedSuccessfully": "Обновления успешно завершены", + "terminalCompletedWithError": "Обновления завершились с кодом ошибки {code}", + "applyOsPlusApp": "Установить обновления ОС и {appName}", + "applyOsPlusApps": "Установить обновления ОС и приложений", + "osPlusApp": "Обновления ОС и {appName}", + "osPlusApps": "Обновления ОС и приложений", + "noUpdateMethodTitle": "Нет доступного способа обновления", + "noUpdateMethodBody": "Для этого приложения не найден способ обновления. Добавьте собственную команду обновления.", + "updatedWithDockerImage": "Обновляется с помощью своего образа Docker.", + "dockerBindingUnavailable": "Образ пока не привязан. Проверьте имя контейнера и обновите список образов.", + "ociImmutableTitle": "Контейнер на основе образа OCI", + "ociImmutableBody": "Пакеты ОС включаются в образ при его сборке и не могут быть обновлены на месте. Установите обновления вручную или выполните переустановку с использованием более нового образа.", + "hideNoticeButton": "Скрыть это уведомление для этого приложения", + "noOsUpdatesPending": "Нет ожидающих установки обновлений ОС", + "securityUpdateAria": "Обновление безопасности", + "packagePendingLabel": "пакет ожидает обновления", + "packagesPendingLabel": "пакетов ожидают обновления", + "securityUpdateLabel": "обновление безопасности", + "securityUpdatesLabel": "обновления безопасности", + "applicationDefaultName": "Приложение", + "installedLabel": "установлено", + "upToDateAtLabel": "Актуальная версия на", + "versionLabel": "версия {version}", + "versionTrackingPending": "Ожидается проверка версий — следующая плановая проверка определит номера установленной версии и версии из источника обновлений.", + "customCommandTitle": "Пользовательская команда обновления", + "customCommandBody": "Выполнить заданную пользователем команду оболочки для обновления этого приложения внутри контейнера.", + "noUpdaterConfiguredTitle": "Средство обновления не настроено", + "noUpdaterConfiguredBody": "Для этого приложения не зарегистрированы ни вспомогательный установщик, ни пользовательская команда.", + "hideNoticeAction": "Скрыть это уведомление для {appName}", + "detectedByPrefix": "Обнаружено с помощью", + "editApp": "Изменить", + "configureUpdater": "Настроить", + "alsoDetectedTitle": "Также обнаружено в этом контейнере:", + "detectedInline": "· обнаружено с помощью {method}", + "customCommandLabel": "Пользовательская команда обновления", + "customCommandPlaceholder": "Например, cd /opt/ && git pull && systemctl restart ", + "removeButton": "Удалить", + "cancelButton": "Отмена", + "saveButton": "Сохранить", + "versionTrackingPendingShort": "Ожидается проверка версий.", + "versionTrackingNotConfigured": "Отслеживание версий не настроено.", + "managedByOsPackages": "Это приложение обновляется с помощью действия обновления пакетов ОС.", + "noMethodBody": "Нет доступного способа обновления. Обновите приложение через его собственный интерфейс или настройте пользовательскую команду, которую ProxMenux выполнит внутри контейнера.", + "noMethodHideBody": "Для этого приложения не зарегистрирован способ обновления. Настройте его на вкладке приложения или скройте это уведомление.", + "hideForApp": "Скрыть уведомление для {appName}", + "applyOsAppsFooter": "Установить обновления ОС и {appName}", + "applyOsAppsFooterPlural": "Установить обновления ОС и приложений", + "osAppsFooter": "Обновления ОС и {appName}", + "osAppsFooterPlural": "Обновления ОС и приложений", + "noUpdatesAvailableChip": "Нет доступных обновлений", + "managedApp": "Управляемое приложение", + "managedBadge": "управляемое", + "lastCheckedAt": "Последняя проверка: {date}", + "tailscaleAvailable": "Доступна версия Tailscale v{version}", + "updateToVersion": "Обновить до v{version}", + "otherPackagePending": "Ещё пакетов, ожидающих обновления в контейнере: +{count}", + "otherPackagesPending": "+{count} других пакетов ожидают обновления в контейнере", + "noManagedUpdateInfo": "Информации об обновлениях пока нет — проверьте через Security → Secure Gateway.", + "ociTitle": "Контейнер на основе образа OCI", + "ociBody": "Этот контейнер создан из образа OCI вне раздела Apps в OCI manager. Он обновляется путём замены образа, которой ProxMenux для этого контейнера не управляет.", + "ociRestoredTitle": "Восстановленное приложение OCI", + "ociRestoredBody": "Этот контейнер был восстановлен из резервной копии, и на этом хосте нет записи о его приложении OCI, поэтому обновить его здесь пока невозможно. Кнопка «Зарегистрировать повторно» открывает регистрацию восстановленных приложений OCI на этом узле, как в менеджере OCI Apps → Manage установленные приложения OCI.", + "dockerImagesTitle": "Образы Docker", + "dockerAppTitle": "Docker", + "dockerImagesSubheading": "Образы", + "dockerEngineManagedByOs": "Docker Engine {version} управляется пакетным менеджером и обновляется с помощью расположенного выше действия для обновления пакетов ОС.", + "dockerEngineSubheading": "Движок", + "dockerEngineDetected": "Обнаружен Docker Engine {version}", + "dockerEngineUpdateHelp": "Обновляет только установленные пакеты Docker и необходимые зависимости. Не обновляет другие пакеты ОС и не пересоздаёт контейнеры.", + "updateDockerEngineOnly": "Обновить Docker Engine", + "adguardWebUpdateOnly": "Эта установка AdGuard Home обновляется через собственный веб-интерфейс.", + "openAdguard": "Открыть AdGuard Home", + "updateDockerImage": "Обновить образ", + "recreateStandaloneContainer": "Обновить {container}", + "standaloneRecreatePending": "Для автономных контейнеров требуется пересоздание с защитными мерами: {names}", + "noDockerImages": "Docker установлен, но образы с тегами не найдены.", + "dockerInventoryStarting": "Ожидание завершения запуска Docker…", + "dockerInventoryUnavailable": "Не удалось прочитать список объектов Docker. Повторите проверку, когда Docker будет доступен.", + "usedByContainers": "Используется контейнерами: {names}", + "imageUpdateAvailable": "Доступен новый образ", + "imageUpToDate": "Актуальная версия", + "imageInstalledTag": "установленный тег", + "imageDigestUnknown": "Дайджест недоступен", + "imagePinned": "Закреплён за дайджестом", + "imagePinnedTitle": "Этот контейнер использует именно тот образ, который указан его дайджестом. Новый тег не меняет используемый образ; для этого нужно изменить ссылку на образ в конфигурации контейнера.", + "dockerPendingSummary": "Обнаружено обновлений образов Docker: {count}. Для обновления используйте процесс Docker или Compose, который управляет этими образами.", + "postApplyChecking": "Проверка результата обновления…", + "postApplyAllOk": "Успешно обновлено пакетов: {count} — ожидающих обновлений нет.", + "postApplyNothingPending": "Ожидающих обновлений нет — всё обновлено.", + "postApplyPartial": "После выполнения всё ещё ожидают обновления пакеты: {pending}.", + "postApplyPartialSubline": "Обновлено: {applied}. Некоторые обновления не завершены — проверьте вывод терминала выше." + }, + "bulkUpdate": { + "title": "Комплексное обновление", + "description": "Настройте единое действие для обновления ОС и запуска выбранных способов обновления в этом контейнере.", + "loading": "Загрузка конфигурации…", + "notConfigured": "Не настроено.", + "configure": "Настроить", + "edit": "Изменить", + "apply": "Начать комплексное обновление", + "osTarget": "ОС", + "osRequired": "Обязательно для комплексного обновления.", + "osDockerScope": "Обновления ОС также включают Docker, если он установлен как системный пакет.", + "unverifiedTargetsHelp": "Наличие обновлений для некоторых выбранных элементов не проверено. При запуске выбранные способы обновления будут выполнены даже без подтверждения наличия новой версии.", + "dockerImageMethod": "Образ Docker", + "includesDependencies": "Также включает объявленные зависимости: {names}", + "noMethod": "Нет доступного способа обновления, который можно выполнить.", + "staleTarget": "Этот выбранный элемент больше недоступен. Удалите его перед сохранением.", + "dockerInventoryPending": "Ожидание списка образов Docker…", + "missingDockerTarget": "Образ Docker недоступен", + "selectAtLeastOne": "Выберите хотя бы один объект обновления помимо ОС.", + "cancel": "Отмена", + "save": "Сохранить", + "delete": "Удалить конфигурацию", + "deleteConfirm": "Удалить эту конфигурацию массового обновления?", + "saveFailed": "Не удалось сохранить конфигурацию массового обновления.", + "deleteFailed": "Не удалось удалить конфигурацию массового обновления.", + "planFailed": "Не удалось подготовить массовое обновление. Измените конфигурацию и проверьте недоступные методы.", + "loadFailed": "Не удалось загрузить конфигурацию массового обновления." + }, + "appEditor": { + "confirmRemove": "Удалить запись об этом приложении с вкладки приложений? Само приложение при этом не будет удалено.", + "packageExample": "например, {package}", + "packageHelpBefore": "Автоматически заполняется на основе поля «Название». Проверьте с помощью", + "packageHelpAfter": "внутри CT.", + "binaryHelpBefore": "Абсолютный путь. Найдите его с помощью", + "binaryHelpOr": "или", + "errors": { + "ociBusy": "в этом контейнере выполняется операция OCI", + "dpkgMissing": "{package} не установлен через dpkg", + "dpkgFailed": "Не удалось выполнить dpkg-query", + "dpkgNoVersion": "В выводе dpkg не найдено совпадение с версией", + "apkFailed": "Не удалось выполнить apk info", + "apkNoVersion": "В выводе apk не найдено совпадение с версией", + "fileRead": "Не удалось прочитать {path}", + "fileNoMatch": "file_regex не соответствует {path}", + "binaryFailed": "Не удалось запустить исполняемый файл", + "binaryNoVersion": "В выводе исполняемого файла не найдено совпадение с версией", + "pythonFailed": "Не удалось выполнить python -c importlib.metadata", + "pythonNoVersion": "В выводе дистрибутива Python не найдено совпадение с версией", + "dockerImageResolve": "не удалось определить установленный образ контейнера", + "dockerInspectFailed": "Ошибка выполнения docker inspect", + "dockerLabelMissing": "у контейнера нет метки {label}", + "dockerLabelMutable": "метка docker содержит {tag} (изменяемый тег, а не версия)", + "dockerLabelNoVersion": "в выводе метки docker не найдено совпадений с версией", + "dockerExecFailed": "Ошибка выполнения docker exec", + "dockerExecNoVersion": "В выводе docker exec не найдено совпадений с версией", + "commandEmpty": "command_argv — пустое значение", + "commandFailed": "ошибка выполнения команды", + "commandNoVersion": "в выводе команды не найдено совпадений с версией", + "unsupportedMethod": "неподдерживаемый метод: {method}", + "unknownUpstream": "неизвестный upstream_type: {type}", + "githubNotFound": "{repo}: не найдено", + "githubRejected": "github отклонил запрос (403)", + "githubError": "ошибка github: {code}", + "noRelease": "в ответе нет тега или названия релиза", + "tagNoMatch": "tag_regex не соответствует '{tag}'", + "httpError": "ошибка HTTP {code}", + "invalidJson": "некорректный ответ JSON: {detail}", + "jsonPathUnresolved": "не удалось определить значение json_path '{path}'", + "jsonEmpty": "пустое значение по пути json_path", + "dockerNoTags": "не найдено подходящих тегов (docker_hub)", + "dockerMovingOnly": "tag_regex соответствует только изменяемым тегам; используйте отслеживание образа по дайджесту Docker", + "dockerHubError": "Ошибка docker Hub: {code}", + "dockerHubJson": "Некорректный JSON от docker Hub: {detail}", + "dockerHubEmpty": "docker Hub не вернул тегов", + "payload": "Данные должны быть объектом JSON", + "name": "Имя обязательно и должно содержать от 1 до 64 символов из набора letters/digits/spaces/._+-()/", + "method": "installed_via должен иметь одно из значений: {values} или быть пустым", + "package": "Пакет обязателен (допустимые символы: letters/digits/._+@:/; не более 127 символов)", + "filePath": "Необходимо указать file_path в виде абсолютного пути", + "fileRegex": "Необходимо указать file_regex", + "fileRegexInvalid": "file_regex — некорректное регулярное выражение: {detail}", + "binaryPath": "Необходимо указать binary_path в виде абсолютного пути", + "pythonPath": "Необходимо указать python_path в виде абсолютного пути", + "distribution": "Необходимо указать дистрибутив (имя по стандарту PEP 503)", + "container": "Необходимо указать container_name (по правилам именования docker)", + "label": "Необходимо указать метку (по правилам именования меток OCI)", + "dockerBinary": "Необходимо указать binary_path (абсолютный путь или имя команды без пути)", + "manualVersion": "Для ручного метода необходимо указать installed_version", + "versionLength": "Длина installed_version превышает {max} символов", + "versionControl": "installed_version содержит запрещённый управляющий символ", + "installedRegexInvalid": "installed_regex — некорректное регулярное выражение: {detail}", + "upstreamType": "upstream_type должен иметь одно из значений: {values}", + "tagRegexInvalid": "tag_regex — некорректное регулярное выражение: {detail}", + "repoRequired": "При upstream_type=github необходимо указать репозиторий", + "repoFormat": "Репозиторий должен быть указан в формате 'owner/name'", + "githubSource": "github_source должен иметь одно из значений: {values}", + "upstreamUrlRequired": "upstream_url требуется при upstream_type=http_json", + "upstreamUrl": "upstream_url должен быть URL-адресом с протоколом http(s)", + "upstreamUrlLength": "Длина upstream_url превышает {max} символов", + "jsonPathRequired": "upstream_json_path требуется при upstream_type=http_json", + "jsonPathLength": "Длина upstream_json_path превышает {max} символов", + "jsonPathCharacters": "upstream_json_path содержит запрещённые символы", + "dockerImageRequired": "docker_image требуется при upstream_type=docker_hub", + "dockerImageLength": "Длина docker_image превышает {max} символов", + "dockerImageFormat": "docker_image должен соответствовать правилам именования Docker Hub (owner/name или name)", + "healthPath": "health_path должен быть допустимым путём URL (не более 255 символов)", + "logoUrl": "logo_url должен быть URL-адресом с протоколом http(s) или ссылкой на кэшированный локальный значок этой виртуальной машины", + "discoveryId": "Недопустимое значение discovery_id", + "helperSlug": "helper_slug должен быть идентификатором в нижнем регистре (letters/digits/._-)", + "updateVia": "update_via принимает только 'docker'", + "dockerDetector": "Для update_via=docker требуется детектор docker_label или docker_exec", + "dockerConflict": "update_via=docker нельзя сочетать с {field}", + "updateCommandType": "update_command должен быть строкой", + "updateCommandLength": "Длина update_command превышает {max} символов", + "updateCommandNull": "update_command содержит нулевой байт", + "updateMethod": "update_method должен иметь значение none, helper или custom", + "updateCommandRequired": "update_command требуется при update_method=custom", + "updateCommandOnlyCustom": "update_command допускается только при update_method=custom", + "helperRequired": "При update_method=helper требуется поддерживаемое значение helper_slug", + "dockerUpdater": "Приложения, обновление которых делегировано Docker, обновляются через свой образ, а не с помощью отдельного средства обновления приложения", + "commandRequired": "command_argv — обязательное поле (непустой список)", + "commandList": "command_argv должен быть непустым списком строк", + "commandCount": "command_argv допускает не более {max} элементов", + "commandEntry": "command_argv[{index}] должен быть непустой строкой", + "commandEntryLength": "Длина command_argv[{index}] превышает {max} символов", + "commandEntryControl": "command_argv[{index}] содержит запрещённый управляющий символ", + "binaryArgsList": "binary_args должен быть списком строк", + "binaryArgsCount": "binary_args допускает не более {max} элементов", + "binaryArgEntry": "binary_args[{index}] должен быть непустой строкой", + "binaryArgLength": "Длина binary_args[{index}] превышает {max} символов", + "binaryArgControl": "binary_args[{index}] содержит запрещённый управляющий символ", + "portsList": "ports должен быть списком объектов {port, description, scheme}", + "portObject": "ports[{index}] должен быть объектом", + "portRequired": "ports[{index}].port — обязательное поле", + "portInteger": "ports[{index}].port должен быть целым числом", + "portRange": "ports[{index}].port должен быть в диапазоне 1–65535", + "portDuplicate": "Порт {port} указан для этого приложения более одного раза", + "portDescription": "ports[{index}].description содержит недопустимые символы", + "portScheme": "ports[{index}].scheme должен иметь значение 'http' или 'https'", + "portPath": "ports[{index}].web_path должен быть допустимым путём URL (не более 255 символов)", + "portLogo": "ports[{index}].logo_url должен быть URL с протоколом http(s) (не более 512 символов)", + "portCategory": "ports[{index}].category содержит недопустимые символы или имеет слишком большую длину", + "portCustomUrl": "ports[{index}].custom_url должен быть URL с протоколом http(s) (не более 512 символов)", + "tagRegexLength": "Длина tag_regex превышает 512 символов", + "persistPermission": "не удалось сохранить вспомогательный файл (проблема с правами доступа?)", + "persist": "не удалось сохранить вспомогательный файл", + "noApps": "для этого vmid нет зарегистрированных приложений", + "appMissing": "app_id '{appId}' не найден", + "appNotFound": "приложение не найдено" + }, + "closePanel": "Закрыть панель", + "cancelButton": "Отмена", + "saveButton": "Сохранить", + "hideButton": "Скрыть", + "hidePermanentlyTooltip": "Навсегда скрыть этот результат обнаружения", + "hiddenBadge": "Сейчас скрыто — снова появится в списке обнаруженного", + "registerDifferent": "Зарегистрировать другое приложение", + "detectedInContainer": "Обнаружено в этом контейнере", + "versionDetected": "В этом контейнере обнаружена версия {version}", + "legacyDetectorUsed": "Обнаружено с помощью резервного механизма совместимости с устаревшими версиями", + "dockerImagesTitle": "Обновления образов Docker", + "dockerImagesHelp": "Отслеживает каждый локальный образ отдельно от Docker engine, сравнивая неизменяемые дайджесты из реестра.", + "refreshDockerImages": "Проверить сейчас", + "noDockerImages": "Образы Docker с тегами не найдены", + "usedByContainers": "Используется контейнерами: {names}", + "imageUpdateAvailable": "Доступен новый образ", + "imageUpToDate": "Актуальная версия", + "imageDigestUnknown": "Дайджест недоступен", + "dockerReadOnlyNote": "Проверка в режиме «только для чтения»: образы не загружаются, контейнеры не перезапускаются.", + "installedManaged": "Установлено и управляется с помощью ProxMenux", + "nameLabel": "Название", + "installedViaLabel": "Установлено с помощью", + "installedVersionLabel": "Установленная версия", + "installedVersionRegexLabel": "Регулярное выражение для установленной версии (группа захвата)", + "installedRegexPlaceholder": "Например, v?(\\d+\\.\\d+\\.\\d+)", + "installedRegexAlt": "installed_regex", + "regexCaptureGroupLabel": "Регулярное выражение (с группой захвата)", + "regexPlaceholderVersion": "version:\\s*(\\d+\\.\\d+\\.\\d+)", + "optionalSuffix": "(необязательно)", + "methodNone": "Нет (только ссылка)", + "methodDpkg": "Пакет dpkg (Debian/Ubuntu)", + "methodApk": "Пакет apk (Alpine)", + "methodBinary": "Исполняемый файл (абсолютный путь или только имя)", + "methodFile": "Файл + регулярное выражение", + "methodDockerLabel": "docker inspect (метка OCI)", + "methodDockerExec": "docker exec (исполняемый файл в контейнере)", + "methodPython": "Дистрибутив Python (importlib.metadata)", + "methodCommand": "команда (расширенный режим — argv)", + "methodManual": "Вручную (я указываю версию)", + "packageIdentifierLabel": "Идентификатор пакета", + "binaryPathLabel": "Путь к исполняемому файлу", + "binaryPathPlaceholder": "Например, /opt//binary", + "binaryPathBare": "Исполняемый файл (абсолютный путь или только имя)", + "binaryPathBarePlaceholder": "Например, myapp (или абсолютный путь)", + "binaryArgsLabel": "Аргументы исполняемого файла (через запятую, необязательно)", + "binaryArgsPlaceholder": "Например, --version (через запятую)", + "filePathLabel": "Путь к файлу", + "commandLabel": "Команда (argv через запятую, без командной оболочки)", + "commandPlaceholder": "myapp, version, --json", + "commandServerExample": "server, -v", + "containerNameLabel": "Имя контейнера", + "containerNamePlaceholder": "Например, ", + "ociLabelKeyLabel": "Ключ метки OCI", + "ociLabelPlaceholder": "org.opencontainers.image.version", + "pythonInterpreterLabel": "Путь к интерпретатору Python", + "pythonInterpreterPlaceholder": "Например, /opt//venv/bin/python", + "pipDistLabel": "Имя дистрибутива (пакет pip)", + "pipDistPlaceholder": "Например, ", + "upstreamSourceLabel": "Источник версии разработчика (необязательно)", + "upstreamNone": "Нет (не проверять версию разработчика)", + "upstreamGithub": "Репозиторий GitHub", + "upstreamHttp": "Конечная точка HTTP с ответом в формате JSON", + "upstreamDocker": "Образ из Docker Hub", + "githubRepoLabel": "Репозиторий GitHub", + "githubRepoPlaceholder": "Например, owner/name", + "githubRepoAlt": "owner/name", + "githubSourceLabel": "Источник GitHub", + "sourceReleases": "Релизы", + "sourceTags": "Теги", + "endpointUrlLabel": "URL конечной точки", + "endpointUrlPlaceholder": "Например, https://vendor.example.com/api/latest.json", + "jsonPathLabel": "Путь в JSON", + "jsonPathPlaceholder": "Например, data.version или releases[0].tag_name", + "dockerImageLabel": "Образ из Docker Hub", + "dockerImagePlaceholder": "Например, linuxserver/plex или nginx", + "dockerVersionedTagsHelp": "Используйте это только для тегов с номером версии. Для latest, stable или lts используйте обновления образов Docker: этот механизм сравнивает дайджесты.", + "dockerPresetSemver": "Только SemVer", + "dockerPresetSemverSuffix": "SemVer + суффикс", + "dockerTagFilterHelp": "Фильтрует фактические теги перед тем, как ProxMenux выберет наибольшую версию.", + "dockerTagPreviewLabel": "Предпросмотр тегов в реальном времени", + "dockerTagPreviewCount": "Совпадений: {matched} из {scanned}", + "dockerTagPreviewLoading": "Проверка Docker Hub…", + "dockerTagPreviewFailed": "Не удалось получить предпросмотр тегов Docker Hub", + "dockerTagPreviewEmpty": "Ни один существующий тег не соответствует этому фильтру.", + "dockerMovingTag": "плавающий тег", + "dockerMovingTagHelp": "Плавающие теги не содержат версии. Вместо этого отслеживайте их по дайджесту в разделе обновлений образов Docker.", + "tagRegexLabel": "Регулярное выражение для тега (с группой захвата)", + "tagRegexPlaceholder": "Например, v?(\\d+\\.\\d+\\.\\d+)", + "tagRegexBare": "v?(\\d+\\.\\d+\\.\\d+)", + "installedStatus": "Установлено", + "checkingStatus": "проверка…", + "latestFromLabel": "Последняя версия из", + "upToDateBadge": "Актуальная версия", + "updateAvailableBadge": "Доступно обновление", + "upstreamErrorTimeout": "Истекло время ожидания сетевого ответа от источника обновлений", + "upstreamErrorNetwork": "Ошибка сети: {detail}", + "upstreamErrorGithubRateLimit": "Достигнут лимит запросов к GitHub. При желании укажите токен в разделе Settings → GitHub API или повторите попытку позже.", + "upstreamErrorRegistry": "Не удалось связаться с реестром образов. Повторная проверка будет выполнена через несколько минут.", + "upstreamErrorGeneric": "Не удалось проверить источник обновлений: {detail}", + "portDescriptionPlaceholder": "Описание (например, веб-интерфейс, go2rtc, администрирование)", + "portPortPlaceholder": "порт", + "portHttp": "http", + "portHttps": "https", + "portLogoLabel": "URL логотипа для этой ссылки (необязательно)", + "portLogoPlaceholder": "Например, https://example.com/logo.webp", + "portCategoryPlaceholder": "Категория на панели приложений (необязательно)", + "portCategoryNone": "Без категории", + "portCategoryAddNew": "+ Добавить категорию…", + "portCategoryCustomPlaceholder": "Введите категорию и нажмите Enter (Esc для отмены)", + "portCustomUrlPlaceholder": "Пользовательский URL (например, https://vault.example.com) — используется вместо IP:port", + "removePortTooltip": "Удалить порт", + "detectMethodDpkg": "dpkg ·", + "detectMethodApk": "apk ·", + "detectMethodBinary": "исполняемый файл ·", + "detectMethodFile": "файл ·", + "detectMethodDockerLabel": "docker label", + "detectMethodDockerExec": "docker exec", + "detectMethodCommand": "command", + "binaryVersionHint": "binary --version", + "systemctlHint": "systemctl show -p ExecStart", + "whichHint": "which ", + "apkInfoHint": "\" : \"apk info | grep", + "grafanaNote": ". Для Grafana требуется", + "hiddenDetectionsHelpSingular": "Скрытых обнаруженных приложений: {count}. Восстановите приложение, чтобы оно снова отображалось, или зарегистрируйте собственное приложение вручную.", + "hiddenDetectionsHelpPlural": "Скрытых обнаруженных приложений: {count}. Восстановите одно из них, чтобы оно снова отображалось, или зарегистрируйте собственное приложение вручную.", + "registerCustom": "Зарегистрировать собственное приложение", + "noAppsTitle": "Нет зарегистрированных приложений", + "stackMemberTitle": "Часть многоконтейнерного приложения", + "stackMemberBody": "Этот контейнер обеспечивает работу приложения, основной контейнер которого — {primary}. Приложение, его веб-ссылки и версия отображаются там.", + "noAppsBody": "Зарегистрируйте каждое приложение, работающее в этом контейнере. Получите веб-ссылки для перехода к приложениям и, при желании, отслеживание версий от разработчиков и уведомления о новых выпусках.", + "registerApplication": "Зарегистрировать приложение", + "searchApplications": "Найти приложения", + "searchingApplications": "Поиск приложений…", + "noApplicationsDetected": "Приложения не обнаружены.", + "nativeEvidencePort": "Прослушиваемый TCP-порт", + "nativeEvidenceFile": "Установленный файл", + "nativeEvidenceProcess": "Запущенный исполняемый файл", + "nativeEvidenceDirectory": "Рабочий каталог", + "nativeEvidenceService": "Определение службы", + "nativeScanFailed": "Не удалось завершить поиск приложений. Ранее собранные данные могут быть устаревшими; повторите попытку.", + "nativeScanStopped": "Этот контейнер остановлен. Поиск приложений доступен только во время работы контейнера.", + "nativeScanPartial": "Поиск приложений выполнен не полностью. Проверьте доступные данные и повторите попытку.", + "nativeVersionUnknown": "Установленная версия неизвестна", + "nativeEvidenceStale": "Данные могут быть устаревшими или неполными.", + "nativeRegisterOnly": "Подтвердите регистрацию в редакторе. Известная версия указывается вручную; механизм обновления не настроен.", + "dockerScanFailed": "Не удалось завершить поиск Docker. Предыдущие результаты могут быть устаревшими; повторите попытку.", + "dockerScanPartial": "Поиск Docker выполнен не полностью. Некоторые контейнеры не удалось проверить.", + "dockerEvidenceContainer": "Контейнер Docker", + "dockerEvidenceImage": "Образ", + "dockerEvidencePort": "Опубликованный TCP-порт", + "dockerEvidenceProject": "Проект Compose", + "dockerEndpointReview": "Контейнер с опубликованными TCP-портами. Подтвердите имя и веб-адрес перед сохранением. Регистрация не настраивает обновления.", + "noNewApplicationsDetected": "Новые приложения не обнаружены.", + "dockerDetectedWithWorkloads": "Обнаружен Docker; количество приложений в контейнерах: {count}", + "dockerWorkloadsHeading": "Работают внутри Docker", + "runsInsideDocker": "Обновляется вместе со своим образом Docker", + "upstreamDelegatedTitle": "Доступная версия определяется образом Docker этого приложения", + "upstreamDelegatedHelp": "Это приложение работает в контейнере, поэтому доступная версия определяется его образом: отдельная проверка версии у разработчика не выполняется, а каждое обновление отображается только один раз. Обновите приложение из его образа на вкладке «Обновления».", + "oneNewApplicationDetected": "Обнаружено одно новое приложение.", + "newApplicationsDetected": "Обнаружены новые приложения: {count}.", + "detectionFailed": "Не удалось обнаружить приложения", + "hiddenSuffix": "Скрыто: {count}", + "confirmHide": "Навсегда скрыть результат обнаружения «{name}» в этом контейнере?\n\nЧтобы вернуть его позже, нажмите «Зарегистрировать другое приложение» — там отображается список скрытых результатов с возможностью восстановления.", + "saveFailed": "Не удалось сохранить", + "tagFilterRegexOptional": "Регулярное выражение для фильтрации тегов (необязательно)", + "versionRegexOptional": "Регулярное выражение для версии (необязательно)", + "top20Matches": "Первые 20 совпадений — уточните запрос, чтобы увидеть другие результаты", + "binaryArgsHintPrefix": "Если оставить поле пустым, по умолчанию используется", + "binaryArgsHintGrafana": "Для Grafana требуется", + "loadFailed": "Не удалось загрузить конфигурацию приложения", + "checkFailed": "Не удалось выполнить проверку", + "testDetectorButton": "Проверить детектор", + "testingDetectorButton": "Проверка детектора…", + "detectorTestTitle": "Результат проверки детектора", + "detectorTestNotSaved": "Только черновик · не сохранён", + "detectorTestNoVersion": "Версия не обнаружена", + "detectorTestNoUpstream": "Источник версий разработчика не настроен", + "detectorTestFailed": "Не удалось проверить детектор", + "deleteFailed": "Не удалось удалить", + "dismissFailed": "Не удалось скрыть результат обнаружения", + "restoreFailed": "Не удалось восстановить результат обнаружения", + "managedApp": "Управляемое приложение", + "managedStatus": "управляемое", + "checkedAt": "Проверено: {date}", + "latestUpstream": "Последняя версия", + "loadingApplications": "Загрузка приложений…", + "nameSearchPlaceholder": "Начните вводить название для поиска среди более 700 приложений или укажите своё", + "matchCount": "Совпадений: {count}", + "catalogPort": "порт {port}", + "trackingAvailable": "доступно отслеживание версий", + "logoUrlLabel": "URL логотипа", + "discoverLocalLogo": "Найти значок", + "localLogoPort": "Порт приложения для поиска значка", + "localLogoHelp": "Данные считываются только с выбранного порта в этом работающем контейнере. Значки из внешних источников не загружаются. Значок будет применён при сохранении.", + "localLogoStopped": "Контейнер остановлен. Запустите его перед поиском значка.", + "localLogoUnavailable": "Подходящий локальный значок не найден. Проверьте выбранный веб-порт и повторите попытку. Текущий значок не изменён.", + "webLinks": "Веб-ссылки", + "addPort": "Добавить порт", + "detectedPorts": "Порты, обнаруженные в контейнере — нажмите, чтобы добавить:", + "dockerPublishedServicesTitle": "Сервисы Docker с опубликованными портами", + "dockerPublishedServicesHelp": "Выбирайте только порты, предоставляющие веб-интерфейс. ProxMenux не регистрирует эти контейнеры как самостоятельные приложения LXC.", + "dockerPublishedAdd": "Добавить ссылку", + "dockerPublishedPort": "порт контейнера {containerPort} → {hostPort} на LXC", + "noWebPorts": "Нет веб-портов, прослушивающих подключения. Если вы всё же хотите создать ссылку вручную, нажмите «Добавить порт».", + "trackUpstream": "Отслеживать версию исходного проекта (необязательно)", + "trackOff": "Выключено — только ссылка", + "trackOn": "Включено · {method}", + "trackHelp": "Необязательно. Если включено, ProxMenux проверяет установленную версию и сравнивает её с последним выпуском разработчика.", + "commandSafetyHelp": "Выполняет команду внутри CT от имени root с передачей аргументов в формате argv — никогда не через командную оболочку. Вы несёте ответственность за действия команды. Используйте installed_regex ниже, чтобы извлечь версию из вывода.", + "manualVersionHelp": "Введите установленную версию. Если ниже указан источник разработчика, ProxMenux по-прежнему проверяет наличие обновлений. После обновления приложения вернитесь сюда и измените это значение.", + "upstreamHelp": "Как ProxMenux определяет последнюю версию для сравнения с установленной.", + "githubRepoHelp": "Общедоступный репозиторий GitHub, в котором публикуются релизы или теги.", + "httpJsonHelp": "Общедоступная конечная точка JSON, возвращающая версию в одном из полей ответа.", + "jsonPathHelp": "Путь с разделителями-точками и необязательными индексами массивов [N].", + "restoreButton": "Восстановление", + "registerButton": "Зарегистрировать", + "removeButton": "Удалить", + "checkButton": "Проверить", + "editFieldsButton": "Изменить поля", + "alsoDetectedContainer": "Также обнаружено в этом контейнере", + "addAnotherApplication": "Зарегистрировать другое приложение", + "doneButton": "Готово", + "editButton": "Изменить", + "notificationsEnabled": "Уведомления об обновлениях от разработчика ВКЛЮЧЕНЫ — нажмите, чтобы отключить", + "notificationsMuted": "Уведомления об обновлениях от разработчика ОТКЛЮЧЕНЫ — нажмите, чтобы включить", + "notifyUpstreamLabel": "Уведомлять меня о выходе новой версии у разработчика", + "notifyUpstreamHelp": "Отправляет `app_update_available` в каналы, включённые в Settings → Notifications. Turn. Отключите, если это приложение нельзя обновить на вашем хосте.", + "excludeFromBadgeLabel": "Исключить из счётчика обновлений LXC", + "excludeFromBadgeHelp": "Не учитывать это приложение в общем счётчике обновлений на карточке в списке LXC. Полезно, если вы намеренно используете фиксированную версию (требование трекера, запрет обновлений ради совместимости). Не влияет на состояние самой вкладки приложения или на отправляемое уведомление.", + "methodOciImage": "Образ OCI (установлен с помощью ProxMenux)", + "ociImageHelp": "Версия и сведения о её обновлениях определяются по образу, из которого создан этот контейнер. Его установил ProxMenux, поэтому настраивать ничего не нужно: установленный образ сравнивается с образом, который сейчас опубликован в его реестре.", + "ociAppVersion": "Приложение", + "ociImage": "Образ", + "ociNewImage": "Новый образ", + "ociImageCurrent": "Версия", + "refreshData": "Обновить данные", + "refreshingData": "Обновление…" + } + }, + "settings": { + "title": "Настройки", + "description": "Управление настройками панели мониторинга", + "common": { + "health": "Состояние", + "alerts": "Оповещения" + }, + "interfaceLanguage": { + "title": "Язык интерфейса", + "description": "Выберите язык панели мониторинга Monitor.", + "label": "Язык панели мониторинга", + "fallbackNote": "", + "statusComplete": "полный", + "statusPartial": "частичный", + "statusNeedsTranslation": "требуется перевод силами сообщества" + }, + "networkUnits": { + "title": "Единицы измерения сетевого трафика", + "description": "Измените способ отображения сетевого трафика", + "label": "Единицы отображения сетевого трафика", + "bytes": "Байты", + "bits": "Биты" + }, + "storageDisplay": { + "title": "Отображение хранилищ", + "description": "Измените расположение дисков на странице «Хранилища»", + "groupByController": "Группировать физические диски по контроллеру хранения" + }, + "healthMonitor": { + "title": "Мониторинг состояния", + "description": "Настройте для каждой категории, как долго оповещения остаются скрытыми после отклонения. Изменения применяются как к уже отклонённым оповещениям, так и к тем, которые будут отклонены в будущем.", + "category": "Категория", + "suppressionDuration": "Длительность скрытия", + "hours": "Часы", + "permanentNotice": "Оповещения для {category} после отклонения будут скрыты навсегда.", + "temperatureSafetyNotice": "Оповещения о критической температуре процессора по-прежнему отображаются для защиты оборудования.", + "longSuppressionNotice": "Длительный период скрытия. Скрытые оповещения этой категории не будут отображаться в течение длительного времени.", + "footerNote": "Эти настройки применяются при скрытии предупреждения в Health Monitor. Оповещения о критической температуре CPU всегда отображаются для защиты оборудования.", + "activeSuppressions": "Активные правила скрытия", + "activeSuppressionsDescription": "Оповещения, которые вы скрыли в Health Monitor. Отменить бессрочное скрытие можно только здесь. Для редактирования требуется Health Monitor", + "noActiveSuppressions": "Нет активных правил скрытия. Здесь будут отображаться оповещения, скрытые в Health Monitor.", + "permanent": "Бессрочно", + "daysRemaining": "Осталось дней: {count}", + "hoursRemaining": "Осталось часов: {count}", + "reEnableDisabledTitle": "Включите режим редактирования Health Monitor, чтобы снова включить оповещение", + "reEnableQueuedTitle": "Отменить повторное включение; оно не будет применено при сохранении", + "reEnableTitle": "Запланировать повторное включение этого оповещения при сохранении", + "reEnable": "Включить снова", + "labels": { + "category": "категория", + "severity": "уровень серьёзности", + "dismissed": "скрыто" + }, + "errorNames": { + "security_login_attempts": "Попытки входа в систему" + }, + "options": { + "24h": "24 часа", + "3d": "3 дня", + "1w": "1 неделя", + "1m": "1 месяц", + "1y": "1 год", + "custom": "Другой период", + "permanent": "Бессрочно" + }, + "categories": { + "cpu": "Загрузка и температура CPU", + "memory": "Память и подкачка", + "storage": "Точки монтирования хранилищ и свободное место", + "disk": "Дисковый ввод-вывод и ошибки", + "network": "Сетевые интерфейсы", + "vms": "Виртуальные машины и контейнеры", + "services": "Службы PVE", + "pbsServices": "Службы PBS", + "logs": "Системные журналы", + "updates": "Обновления системы", + "security": "Безопасность и сертификаты", + "temperature": "Температура" + } + }, + "remoteStorage": { + "title": "Исключения для удалённых хранилищ", + "description": "Исключите удалённые хранилища (PBS, NFS, CIFS и т. д.) из мониторинга состояния и уведомлений. Используйте эту настройку для хранилищ, которые намеренно отключены или имеют ограниченный доступ через API.", + "emptyTitle": "Удалённые хранилища не обнаружены", + "emptyDescription": "PBS, NFS, CIFS и другие удалённые хранилища появятся здесь после настройки", + "storage": "Хранилище", + "offline": "Отключено или недоступно", + "namespaceRestricted": "Доступно; размер хранилища данных скрыт ACL", + "healthHelp": "Если выключено, это хранилище не будет вызывать предупреждения или критические оповещения в мониторе состояния.", + "alertsHelp": "Если выключено, уведомления для этого хранилища отправляться не будут." + }, + "networkInterfaces": { + "title": "Исключения для сетевых интерфейсов", + "description": "Исключите сетевые интерфейсы (мосты, агрегированные интерфейсы, физические сетевые адаптеры) из мониторинга состояния и уведомлений. Используйте эту настройку для интерфейсов, которые намеренно отключены или не используются.", + "emptyTitle": "Сетевые интерфейсы не обнаружены", + "interface": "Интерфейс", + "down": "DOWN", + "excluded": "Исключён", + "noIp": "Нет IP-адреса", + "healthHelp": "Если выключено, этот интерфейс не будет вызывать предупреждения или критические оповещения в мониторе состояния.", + "alertsHelp": "Если выключено, уведомления для этого интерфейса отправляться не будут." + }, + "snippets": { + "title": "Хранилище фрагментов", + "description": "Место, куда ProxMenux устанавливает скрипты-хуки, например скрипт защиты при пробросе GPU для виртуальных машин и контейнеров LXC. В кластерных конфигурациях выберите общее хранилище, чтобы виртуальные машины и контейнеры LXC могли беспрепятственно мигрировать между узлами;", + "localNote": "привязано к конкретному узлу и нарушает работу миграции.", + "placeholder": "Выберите хранилище...", + "footer": "Существующие ВМ и контейнеры LXC, уже настроенные на использование прежнего хранилища, продолжат работать. Новый выбор будет использоваться только при новых операциях проброса GPU или при запуске «sync hookscripts» на хосте." + }, + "lxcUpdateDetection": { + "title": "Обнаружение обновлений LXC", + "descriptionStart": "Периодически проверять работающие контейнеры Debian/Ubuntu/Alpine LXC на наличие доступных обновлений пакетов", + "descriptionEnd": " и отображать их на панели мониторинга. Соответствующий переключатель уведомлений в разделе «Уведомления -> Службы» отображается только при включённом обнаружении.", + "enableLabel": "Включить обнаружение обновлений LXC", + "loadFailed": "Не удалось загрузить настройку обнаружения обновлений LXC.", + "saveFailed": "Не удалось сохранить настройку обнаружения обновлений LXC.", + "purgedMessage": "Из реестра удалены записи LXC: {count}. При повторном включении обнаружения они будут добавлены заново во время следующего цикла сканирования." + }, + "githubApi": { + "title": "GitHub API", + "description": "Необязательная аутентификация для проверки выпусков и тегов зарегистрированных приложений.", + "configure": "Настроить", + "tokenLabel": "Персональный токен доступа", + "tokenPlaceholder": "github_pat_...", + "tokenHelp": "Токен хранится в зашифрованном виде. ProxMenux использует его только для запросов GitHub API в режиме «только для чтения» и больше никогда не отображает его. Достаточно токена с детально настроенными правами: доступом к публичным репозиториям только для чтения и без прав доступа к учётной записи.", + "configured": "Токен настроен", + "notConfigured": "Используется квота анонимных запросов GitHub", + "removeToken": "Удалить токен", + "loadFailed": "Не удалось загрузить настройку GitHub API.", + "saveFailed": "Не удалось сохранить токен GitHub API.", + "removeFailed": "Не удалось удалить токен GitHub API." + }, + "notifications": { + "title": "Уведомления", + "description": "Настройте каналы уведомлений и фильтры событий. Получайте оповещения через Telegram, Gotify, Discord или по электронной почте.", + "disabledDescription": "Получайте оповещения о вашей среде Proxmox в реальном времени через Telegram, Discord, Gotify или по электронной почте.", + "enableService": "Включить службу уведомлений", + "enableServiceDescription": "Отслеживайте состояние системы, события ВМ и контейнеров, резервные копии, оповещения безопасности и состояние кластера. Интеграция с вебхуком PVE настраивается автоматически.", + "enableButton": "Включить уведомления", + "configuring": "Настройка...", + "webhookConfigured": "Вебхук PVE настроен автоматически. Proxmox будет отправлять уведомления в ProxMenux.", + "webhookFailed": "Не удалось автоматически настроить PVE: {error}", + "webhookManualSetup": "Уведомления включены. Выполните приведённые ниже команды на хосте PVE, чтобы завершить настройку вебхука.", + "serviceRunning": "Служба работает", + "serviceStopped": "Служба остановлена", + "sentLast24h": "Отправлено за последние 24 часа: {count}", + "channelCountOne": "Каналов: {count}", + "channelCountMany": "Каналов: {count}", + "activateService": "Активировать службу уведомлений", + "channels": "Каналы", + "test": { + "sent": "Тестовое уведомление успешно отправлено.", + "failed": "Не удалось отправить тестовое уведомление." + }, + "errors": { + "saveFailed": "Не удалось сохранить настройки уведомлений.", + "unknown": "Неизвестная ошибка", + "setupUnavailable": "Не удалось связаться со службой настройки." + }, + "categories": { + "vm_ct": { + "label": "ВМ / контейнеры" + }, + "backup": { + "label": "Резервные копии" + }, + "resources": { + "label": "Ресурсы" + }, + "storage": { + "label": "Хранилище" + }, + "network": { + "label": "Сеть" + }, + "security": { + "label": "Безопасность" + }, + "cluster": { + "label": "Кластер" + }, + "services": { + "label": "Службы" + }, + "health": { + "label": "Мониторинг состояния" + }, + "updates": { + "label": "Обновления" + }, + "hardware": { + "label": "Оборудование" + }, + "system": { + "label": "Система" + }, + "other": { + "label": "Прочее" + } + }, + "eventTypes": { + "state_change": "Состояние работоспособности изменилось", + "new_error": "Новая проблема с работоспособностью", + "error_resolved": "Уведомление о восстановлении", + "error_escalated": "Эскалация проблемы с работоспособностью", + "health_degraded": "Ухудшение результатов проверки работоспособности", + "lxc_updates_available": "Доступны обновления LXC (экспериментальная функция)", + "lxc_update_applied": "Обновление LXC применено", + "docker_stack_update_available": "Доступны обновления Docker", + "vm_start": "Виртуальная машина запущена", + "vm_start_warning": "Виртуальная машина запущена (с предупреждениями)", + "vm_stop": "Виртуальная машина остановлена", + "vm_shutdown": "Работа виртуальной машины завершена", + "vm_fail": "Сбой виртуальной машины", + "vm_restart": "Виртуальная машина перезапущена", + "ct_start": "Контейнер запущен", + "ct_start_warning": "Контейнер запущен (с предупреждениями)", + "ct_stop": "Контейнер остановлен", + "ct_shutdown": "Работа контейнера завершена", + "ct_restart": "Контейнер перезапущен", + "ct_fail": "Сбой контейнера", + "migration_start": "Миграция начата", + "migration_complete": "Миграция завершена", + "migration_warning": "Миграция завершена с предупреждениями", + "migration_fail": "Ошибка миграции", + "replication_fail": "Ошибка репликации", + "replication_complete": "Репликация завершена", + "backup_start": "Резервное копирование начато", + "backup_complete": "Резервное копирование завершено", + "backup_warning": "Резервное копирование завершено с предупреждениями", + "backup_fail": "Резервное копирование завершилось ошибкой", + "host_backup_start": "Резервное копирование хоста начато", + "host_backup_complete": "Резервное копирование хоста завершено", + "host_backup_fail": "Резервное копирование хоста завершилось ошибкой", + "snapshot_complete": "Снимок создан", + "snapshot_fail": "Не удалось создать снимок", + "cpu_high": "Высокая загрузка процессора", + "ram_high": "Высокое использование оперативной памяти", + "temp_high": "Высокая температура", + "disk_space_low": "Мало свободного места на диске", + "disk_io_error": "Отказ диска / ошибка ввода-вывода", + "storage_unavailable": "Хранилище недоступно", + "smart_test_complete": "Тест SMART завершён", + "smart_test_failed": "Тест SMART завершился ошибкой", + "gpu_mode_switch": "Режим GPU переключён", + "gpu_passthrough_blocked": "Проброс GPU заблокирован", + "pci_passthrough_conflict": "Конфликт устройств PCIe", + "load_high": "Высокая нагрузка на систему", + "network_down": "Сетевое соединение потеряно", + "network_latency": "Высокая сетевая задержка", + "auth_fail": "Ошибка аутентификации", + "ip_block": "IP-адрес заблокирован Fail2Ban", + "firewall_issue": "Обнаружена проблема с межсетевым экраном", + "user_permission_change": "Права пользователя изменены", + "burst_auth_fail": "Всплеск ошибок аутентификации", + "burst_ip_block": "Всплеск блокировок IP-адресов", + "burst_disk_io": "Всплеск ошибок дискового ввода-вывода", + "burst_cluster": "Частые разрывы и восстановления соединения с кластером", + "burst_service_fail": "Множественные сбои служб", + "burst_system": "Множественные системные проблемы", + "burst_generic": "Множественные связанные события", + "split_brain": "События кластера", + "node_disconnect": "Узел отключён", + "node_reconnect": "Соединение с узлом восстановлено", + "system_startup": "Отчёт о запуске системы", + "system_shutdown": "Система завершает работу", + "system_reboot": "Система перезагружается", + "system_restore_completed": "Восстановление хоста завершено", + "system_problem": "Обнаружена системная проблема", + "kernel_warning": "Предупреждения ядра и диагностические трассировки", + "service_fail": "Сбой службы", + "oom_kill": "Принудительное завершение процесса из-за нехватки памяти", + "service_fail_batch": "Множественные сбои служб", + "cron_output": "Вывод задания cron", + "system_mail": "Smartd / системная почта", + "apt_listchanges": "Уведомления apt-listchanges о пакетах", + "webhook_test": "Тест вебхука", + "update_available": "Доступны обновления (устаревшее событие)", + "unknown_persistent": "Проверка недоступна", + "health_persistent": "Текущие проблемы с работоспособностью (ежедневно)", + "health_issue_new": "Новая проблема с работоспособностью", + "health_issue_resolved": "Проблема с работоспособностью устранена", + "update_summary": "Обновления пакетов хоста", + "pve_update": "Доступно обновление Proxmox VE", + "update_complete": "Обновление хоста завершено", + "oci_update_completed": "Приложение OCI обновлено", + "oci_update_failed": "Не удалось обновить приложение OCI", + "oci_recreate_completed": "Приложение OCI создано заново", + "oci_recreate_failed": "Не удалось создать приложение OCI заново", + "oci_modify_completed": "Приложение OCI изменено", + "oci_modify_failed": "Не удалось изменить приложение OCI", + "oci_watchdog_restarted": "Сторожевой механизм перезапустил приложение OCI", + "oci_watchdog_failed": "Сторожевой механизм оставил приложение OCI остановленным", + "app_update_available": "Доступно обновление приложения", + "ai_model_migrated": "Модель ИИ обновлена автоматически", + "proxmenux_update": "Доступно обновление ProxMenux", + "mount_stale": "Удалённая точка монтирования больше не действительна", + "mount_readonly": "Удалённая файловая система подключена только для чтения", + "lxc_disk_low": "Корневая файловая система LXC почти заполнена", + "vm_disk_low": "Файловые системы виртуальных машин почти заполнены", + "lxc_mount_low": "Подключённая файловая система LXC почти заполнена", + "pve_storage_full": "Хранилище PVE почти заполнено", + "zfs_pool_full": "Пул ZFS почти заполнен", + "post_install_update": "Доступны обновления оптимизации ProxMenux", + "secure_gateway_update_available": "Доступно обновление Secure Gateway", + "nvidia_driver_update_available": "Доступно обновление драйвера NVIDIA", + "coral_driver_update_available": "Доступно обновление драйвера Coral TPU" + }, + "ui": { + "quietHours": "Тихие часы", + "quietHoursDescription": "В этот период в этот канал поступают только события уровня CRITICAL.", + "from": "С", + "until": "До", + "quietSameTime": "Для активации задайте разное время начала и окончания.", + "quietActive": "Сейчас действуют — до {time} поступают только события уровня CRITICAL.", + "quietInactive": "Сейчас не действуют — начнутся в {time}.", + "nextDigest": "Следующая сводка через {hours} ч {minutes} мин (в {time}).", + "dailyDigest": "Ежедневная сводка событий уровня INFO", + "dailyDigestDescription": "События уровня INFO накапливаются в течение дня и отправляются один раз в виде сводки. События уровней CRITICAL и WARNING никогда не задерживаются.", + "sendAt": "Отправлять в", + "notificationCategories": "Категории уведомлений", + "enableTelegram": "Включить Telegram", + "setupGuide": "+руководство по настройке", + "botToken": "Токен бота", + "chatId": "ID чата", + "topicId": "ID темы", + "optional": "необязательно", + "topicHint": "Для супергрупп с включёнными темами. Для обычных чатов оставьте поле пустым.", + "richMessages": "Сообщения с расширенным оформлением", + "richMessagesDescription": "Добавлять в уведомления эмодзи и значки с учётом контекста", + "sendTest": "Отправить тестовое уведомление", + "enableGotify": "Включить Gotify", + "serverUrl": "URL сервера", + "appToken": "Токен приложения", + "enableDiscord": "Включить Discord", + "webhookUrl": "URL вебхука", + "enableEmail": "Включить уведомления по электронной почте", + "smtpHost": "SMTP-сервер", + "port": "Порт", + "tlsMode": "Режим TLS", + "noTls": "Без TLS (порт 25)", + "username": "Имя пользователя", + "password": "Пароль", + "appPassword": "Пароль приложения", + "fromAddress": "Адрес отправителя", + "toAddresses": "Адреса получателей (через запятую)", + "subjectPrefix": "Префикс темы письма", + "emailHint": "Оставьте поле SMTP-сервера пустым, чтобы использовать локальный sendmail. Для Gmail используйте пароль приложения.", + "enablePushover": "Включить Pushover", + "pushoverUserKey": "Ключ пользователя или группы", + "pushoverApiToken": "Токен API приложения", + "pushoverDevice": "Устройство", + "pushoverSound": "Звук", + "pushoverCriticalPriority": "Высокий приоритет для критических оповещений", + "pushoverCriticalPriorityDescription": "Критические уведомления используют высокий приоритет Pushover. Экстренный приоритет не используется.", + "pushoverCredentialsHint": "Создайте приложение в Pushover и скопируйте его токен API и свой ключ пользователя или группы.", + "enableApprise": "Включить Apprise", + "urlFormats": "+Форматы URL", + "appriseServiceHelp": "Настройка Slack и Matrix", + "appriseSlackSteps": "Создайте Incoming Webhook в своём приложении Slack для нужного канала, затем вставьте его полный HTTPS URL в поле URL Apprise. Преобразование не требуется.", + "appriseSlackDocs": "Форматы URL и настройка Slack", + "appriseMatrixSteps": "Используйте учётную запись для уведомлений, которая может отправлять сообщения в комнату. Замените указанные в примере имя пользователя, пароль, домашний сервер и полный идентификатор комнаты своими значениями; примените URL-кодирование к специальным символам в учётных данных. Схема matrixs использует HTTPS. Сведения о поддержке токенов, SSO и зашифрованных комнат см. в документации к установленной версии Apprise.", + "appriseMatrixDocs": "Форматы URL и настройка Matrix", + "appriseServiceFinish": "Включите Apprise, введите свой URL, выберите категории уведомлений или отдельные события, сохраните настройки, затем нажмите «Отправить тестовое уведомление». Эти примеры не изменяют сохранённый URL. Этот канал Apprise поддерживает только одного получателя; для одновременной отправки в несколько сервисов используйте Apprise API.", + "appriseUrl": "URL Apprise", + "showUrl": "Показать URL", + "hideUrl": "Скрыть URL", + "appriseDescription": "Один URL позволяет Apprise направлять уведомления в нужный сервис. Примеры:", + "seeThe": "См.", + "fullList": "полный список", + "displayName": "Отображаемое имя", + "systemHostname": "Имя хоста системы", + "displayNameHint": "Имя, отображаемое в уведомлениях. Измените его или оставьте поле пустым, чтобы использовать имя хоста системы.", + "activeFooter": "Уведомления включены. Каждый канал использует собственный набор выбранных категорий и событий.", + "inactiveFooter": "Включите уведомления, чтобы получать оповещения о системе, её состоянии и безопасности через настроенные каналы.", + "notificationLanguage": "Язык уведомлений", + "selectNotificationLanguage": "Выберите язык уведомлений", + "notificationLanguageHint": "Используется для уведомлений, формируемых по фиксированным правилам во время работы системы, даже если ИИ отключён.", + "botTokenPlaceholder": "7595377878:AAGE6Fb2cy...", + "botTokenHelp": "Токен можно вводить с префиксом 'bot' или без него." + }, + "ai": { + "title": "Улучшение с помощью ИИ", + "enhancedMessages": "Сообщения, улучшенные с помощью ИИ", + "enhancedMessagesDescription": "Использовать ИИ для создания уведомлений с учётом контекста", + "provider": "Провайдер", + "customBaseUrl": "Пользовательский базовый URL", + "customBaseUrlPlaceholder": "Оставьте пустым для OpenAI или укажите пользовательскую конечную точку", + "customBaseUrlHint": "Для API, совместимых с OpenAI, таких как BytePlus, LocalAI, LM Studio или vLLM.", + "apiKey": "Ключ API", + "model": "Модель", + "promptMode": "Режим запроса", + "defaultPrompt": "Запрос по умолчанию", + "customPrompt": "Пользовательский запрос", + "language": "Язык", + "selectLanguage": "Выберите язык", + "detailLevel": "Уровень детализации для каждого канала", + "suggestions": "Рекомендации ИИ", + "suggestionsDescription": "Разрешить ИИ добавлять краткие советы по устранению неполадок на основе контекста журналов", + "customPromptPlaceholder": "Введите свои инструкции для ИИ…", + "testing": "Проверка…", + "testConnection": "Проверить подключение", + "ollamaUrl": "URL Ollama", + "ollamaApiKeyHint": "Оставьте пустым для стандартного сервера Ollama. Если вашему прокси-серверу или шлюзу требуется ключ, он передаётся в заголовке Authorization: Bearer. Это поле не включает аутентификацию на сервере.", + "getKey": "Получить ключ", + "loadModelsPlaceholder": "Нажмите «Загрузить», чтобы получить список моделей", + "selectModel": "Выберите модель", + "noModelsLoaded": "Модели не загружены — нажмите «Загрузить»", + "noModelSelected": "Сначала выберите модель. Нажмите «Загрузить», чтобы получить список доступных моделей.", + "load": "Нагрузка", + "modelsAvailable": "Доступно моделей: {count}", + "detailHint": "ИИ переводит и форматирует уведомления на выбранном вами языке. Для каждого канала можно задать свой уровень детализации.", + "beta": "BETA", + "export": "Экспорт", + "import": "Импорт", + "communityPrompts": "Промпты сообщества", + "customPromptHint": "Задайте собственные правила и формат. Вы управляете детализацией и стилем всех уведомлений. Экспортируйте промпт, чтобы поделиться им, или импортируйте промпт сообщества.", + "local": "Локальное", + "detailLevels": { + "brief": "Кратко", + "standard": "Стандартно", + "detailed": "Подробно" + }, + "providersInfo": "Информация о провайдерах ИИ", + "loadModelsHint": "Нажмите «Загрузить», чтобы получить список доступных моделей этого провайдера.", + "openAiCompatible": "API, совместимые с OpenAI", + "openAiCompatibleDescription": "Укажите собственный базовый URL для использования API, совместимого с OpenAI. Поддерживаются следующие сервисы:", + "anyOpenAiService": "Любой сервис, использующий формат OpenAI", + "providers": { + "groq": "Очень быстрый сервис с щедрыми лимитами бесплатного тарифа. Хороший вариант для начала.", + "openai": "Отраслевой стандарт: точный и широко используемый сервис.", + "anthropic": "Отлично подходит для написания текстов и перевода; быстрый и экономичный сервис.", + "gemini": "Доступен бесплатный тариф; хорошее соотношение цены и качества.", + "ollama": "Использует модели на вашем сервере Ollama. Работает полностью локально, сохраняет конфиденциальность данных и не требует платы за использование.", + "openrouter": "Доступ к более чем 100 моделям с помощью одного ключа API." + }, + "loadModelsFailed": "Не удалось загрузить модели — проверьте ключ API или URL конечной точки." + }, + "telegramGuide": { + "title": "Руководство по настройке бота Telegram", + "createBot": "Создайте бота с помощью BotFather", + "create1": "1. Откройте Telegram и найдите", + "create2": "2. Отправьте команду", + "create3": "3. Выберите имя для бота, например «Уведомления ProxMenux».", + "create4": "4. Выберите имя пользователя, оканчивающееся на bot, например proxmenux_alerts_bot.", + "getToken": "Получите токен бота", + "tokenIntro": "После создания бота BotFather выдаст вам токен следующего вида:", + "tokenPaste": "Скопируйте токен и вставьте его в поле «Токен бота».", + "getChatId": "Узнайте свой идентификатор чата", + "optionA": "Вариант А: с помощью бота (самый простой)", + "chat1": "1. Найдите", + "or": "или", + "chat2": "2. Отправьте любое сообщение; бот ответит вашим идентификатором чата.", + "optionB": "Вариант Б: вручную", + "manual1": "1. Отправьте сообщение своему новому боту.", + "manual2": "2. Откройте этот URL в браузере, заменив YOUR_TOKEN:", + "manual3": "3. Найдите следующее значение; указанное число — ваш идентификатор чата:", + "groups": "Группы и каналы", + "group1": "1. Добавьте бота в группу или канал в качестве администратора.", + "group2": "2. Отправьте сообщение в группу.", + "group3": "3. Используйте указанный выше URL getUpdates, чтобы найти идентификатор чата группы.", + "group4": "4. Идентификаторы групп — отрицательные числа, например", + "summary": "Краткое резюме", + "summaryToken": "Идентифицирует вашего бота (из BotFather)", + "summaryChat": "Указывает боту, куда отправлять сообщения (ваш ID или ID группы)" + }, + "validation": { + "discordWebhook": "Введите URL вебхука Discord в формате https://discord.com/api/webhooks//.", + "invalidUrl": "Введите корректный URL.", + "unsupportedScheme": "Допускается только адрес, начинающийся с http:// или https://.", + "localPveApi": "Адрес не должен указывать на локальный PVE API (localhost:8006/8007).", + "metadataIp": "Нельзя использовать локальный IP-адрес службы метаданных (link-local) в качестве конечной точки Gotify." + }, + "history": { + "title": "История уведомлений", + "description": "Последние 20 отправленных уведомлений, включая каждый запуск ежедневной сводки, с результатом отправки каждого уведомления.", + "empty": "Уведомления ещё не отправлялись.", + "loadFailed": "Не удалось загрузить историю уведомлений.", + "sent": "Отправлено", + "notSent": "Не отправлено", + "severityInfo": "Информация", + "severityWarning": "Предупреждение", + "severityCritical": "Критическое состояние" + }, + "customPromptInfo": { + "title": "Режим пользовательского промпта", + "description": "Создайте собственный промпт для ИИ для уведомлений ProxMenux Monitor", + "whatTitle": "Что такое пользовательский промпт?", + "whatDescription": "Промпт определяет, как ИИ оформляет ваши уведомления. Пользовательский промпт позволяет управлять стилем, уровнем детализации и форматом каждого сообщения.", + "requirements": "Важные требования", + "formatIntro": "В вашем промпте должен быть задан следующий формат вывода:", + "formatTitleThen": "затем заголовок, после него", + "formatBodyThen": "затем текст сообщения", + "plainText": "Используйте только обычный текст без Markdown, чтобы результат корректно отображался во всех каналах.", + "rawData": "Промпт получает на вход необработанные данные событий Proxmox.", + "language": "Укажите язык вывода в промпте. Выбор языка в интерфейсе применяется только к режиму по умолчанию.", + "gettingStarted": "Начало работы", + "gettingStartedDescription": "Для начала работы уже подготовлен пример промпта. Вы можете изменить его, экспортировать, чтобы поделиться с другими, или импортировать промпт от сообщества.", + "loadExample": "Загрузить пример", + "startFromScratch": "Начать с нуля" + } + }, + "optimizations": { + "title": "Оптимизации ProxMenux", + "description": "Системные оптимизации и утилиты, установленные с помощью ProxMenux", + "emptyTitle": "Оптимизации ProxMenux пока не установлены", + "emptyDescription": "Запустите ProxMenux для настройки системных оптимизаций", + "installedTools": "Установленные инструменты", + "activeCount": "Активно: {count}", + "viewUpdates": "Просмотреть доступные обновления", + "updateCount": "Обновлений: {count}", + "updateOneTitle": "Обновление: {name}", + "updateManyTitle": "Обновить оптимизации (количество: {count})", + "updateOneDescription": "Повторное выполнение {functionName} в рамках процедуры {source}.", + "updateManyDescription": "Последовательное повторное выполнение функций послеустановочной настройки (количество: {count}).", + "legacySourceTitle": "Устаревшая оптимизация — нажмите для просмотра исходного кода", + "sourceTitle": "Нажмите для просмотра исходного кода", + "sourceDialogTitle": "Исходный код: {name}", + "sourceLoading": "Загрузка исходного кода…", + "sourceUnavailable": "Исходный код недоступен.", + "sourceLoadFailed": "Не удалось загрузить исходный код. Повторите попытку.", + "sourceFunctionMissing": "Функция не найдена в доступных скриптах.", + "sourceUnknownTool": "Неизвестный инструмент: {tool}", + "sourceNoMapping": "Инструменту {tool} не назначена функция.", + "sourceToolNames": { + "subscription_banner": "Удаление баннера подписки", + "time_sync": "Синхронизация времени", + "apt_languages": "Отключение загрузки переводов APT", + "journald": "Оптимизация Journald", + "logrotate": "Оптимизация Logrotate", + "system_limits": "Увеличение системных лимитов", + "memory_settings": "Оптимизация настроек памяти", + "zram_swap": "Профиль подкачки ZRAM", + "kernel_panic": "Настройка поведения при панике ядра", + "apt_ipv4": "Принудительное использование IPv4 в APT", + "kexec": "kexec для быстрой перезагрузки", + "rpc": "Отключение RPC / rpcbind", + "motd": "Пользовательский баннер MOTD", + "system_utils": "Системные утилиты", + "network_optimization": "Оптимизация сети", + "bashrc_custom": "Настройка Bashrc", + "figurine": "Figurine", + "fastfetch": "Fastfetch", + "log2ram": "Log2ram (защита SSD)", + "zfs_autotrim": "Автоматический TRIM для ZFS", + "amd_fixes": "Исправления для процессоров AMD (Ryzen/EPYC)", + "persistent_network": "Настройка постоянных сетевых интерфейсов", + "vfio_iommu": "Проброс устройств VFIO/IOMMU", + "lvm_repair": "Восстановление заголовков физических томов LVM", + "repo_cleanup": "Очистка репозиториев", + "proxmox_repos": "Репозитории APT для Proxmox", + "entropy": "Генерация энтропии (haveged)" + }, + "legacy": "устаревшее", + "updateToolTitle": "Обновить {name} до v{version}", + "availableUpdates": "Доступные обновления", + "availableUpdatesDescription": "Количество оптимизаций, которые можно обновить до более новой версии: {count}.", + "selectedCount": "Выбрано {selected} из {total}", + "updateSelected": "Обновить выбранное", + "toolDescriptions": { + "subscriptionAuto": "Применить исправление к веб-интерфейсу Proxmox, чтобы скрыть диалоговое окно подписки, и зафиксировать успешное применение исправления.", + "timeSync": "Определить часовой пояс по публичному IP-адресу и включить синхронизацию времени systemd (NTP).", + "aptLanguages": "Отключить загрузку файлов переводов в APT, чтобы ускорить обновления.", + "journald": "Ограничить размер journald, повысить лимит частоты записи сообщений и принудительно установить уровень журналирования info, чтобы обеспечить работу средства просмотра журналов и Fail2Ban.", + "logrotate": "Заменить logrotate.conf профилем, совместимым с Log2RAM (ежедневная ротация, copytruncate).", + "systemLimits": "Повысить лимиты наблюдений inotify, файловых дескрипторов, ключей процессов и PID до уровня корпоративных систем.", + "memory": "Настроить swappiness, доли изменённых страниц памяти и проактивность уплотнения памяти для хостов виртуальных машин, не переопределяя политику ядра по избыточному выделению памяти.", + "kernelPanic": "Автоматически перезагружать систему при kernel panic / oops / hardlockup; записывать аварийные дампы в /var/crash.", + "aptIpv4": "Принудительно использовать IPv4 в APT, чтобы избежать зависаний на хостах с неработающим подключением по IPv6.", + "network": "Настроить буферы TCP, somaxconn и усиление защиты IPv4, а также отключить rp_filter на мостах межсетевого экрана (совместимо с PVE 9).", + "bashrc": "Установить и безопасно перенести управляемые ProxMenux настройки приглашения Bash и псевдонимов, сохранив или выбрав краткое либо полное отображение пути к рабочему каталогу.", + "log2ramAuto": "При новой установке размер Log2RAM определяется на основе объёма оперативной памяти хоста; если накопитель не распознан как SSD, запрашивается подтверждение. При обновлении настроенный размер сохраняется.", + "zfsAutotrim": "Включить autotrim ZFS для обнаруженных пулов и учитывать только пулы, изменённые ProxMenux.", + "persistentNetwork": "Закрепить имена сетевых интерфейсов за MAC-адресами с помощью файлов .link systemd, чтобы обновления ядра не меняли имена интерфейсов.", + "kexec": "Установить kexec-tools, подготовить юнит systemd и псевдоним reboot-quick для быстрой перезагрузки с пропуском BIOS/POST.", + "amd": "Применить idle=nomwait и параметры модуля KVM на хостах AMD EPYC/Ryzen.", + "openVSwitch": "Установить OpenVSwitch для программно-определяемых сетей внутри виртуальных машин и контейнеров.", + "tcpBbr": "Включить TCP Fast Open (для клиентов и сервера) и управление перегрузкой BBR для снижения задержек под нагрузкой.", + "ceph": "Установить Ceph (клиентские и серверные пакеты) для распределённого хранилища RBD/CephFS; выбрать репозиторий с учётом версии PVE 8/9.", + "zfsArc": "Ограничить максимальный размер ARC для ZFS согласно политике Proxmox VE: 10% оперативной памяти, но не более 16 GiB; безопасно согласовать конфликтующие настройки модуля и перед применением показать рекомендуемый размер с учётом размера пула.", + "zfsSnapshots": "Установить zfs-auto-snapshot с расписаниями cron для ежечасных, ежедневных, еженедельных и ежемесячных снимков.", + "rpc": "Отключить службу и сокет rpcbind, точно сохранив их предыдущее состояние в systemd для отката.", + "pigz": "Заменить gzip на pigz (параллельную реализацию) для ускорения сжатия резервных копий vzdump.", + "guestAgent": "Определить среду QEMU/KVM, VMware или VirtualBox и установить соответствующий гостевой агент; в других средах пропустить установку.", + "vfio": "Включить IOMMU и загрузить модули VFIO для проброса GPU/PCI в виртуальные машины.", + "motd": "Добавить баннер MOTD ProxMenux, сохранив исходное содержимое файла или сведения о его отсутствии для отката.", + "subscriptionCustom": "Изменить веб-интерфейс Proxmox, чтобы скрыть диалоговое окно «нет действующей подписки» (поддерживаются варианты для PVE 8 и 9).", + "zram": "Включить по выбору пользователя профиль подкачки ZRAM размером в одну десятую оперативной памяти.", + "backupLimits": "Установить глобальные параметры vzdump по умолчанию: bwlimit: 0 и ionice: 5. Это не гарантирует ускорения создания резервных копий.", + "ovh": "Определить оборудование, арендованное у OVH, с помощью запроса whois и установить OVH Real-Time Monitoring (на оборудовании не от OVH никаких действий не выполняется).", + "ha": "Включить стек высокой доступности Proxmox HA (pve-ha-lrm, pve-ha-crm, corosync) для переключения на резервные узлы при сбоях в кластере.", + "fastfetch": "Установить Fastfetch для отображения сводки о системе с логотипом ProxMenux и блоком состояния в качестве баннера при входе в SSH.", + "figurine": "Установить Figurine (баннер с именем хоста в виде ASCII-графики) и подключить его к процедуре входа в SSH.", + "log2ramCustom": "Установить Log2RAM с выбранным размером, интервалом синхронизации и необязательной автосинхронизацией. При обновлениях выбранный размер и настройка автосинхронизации сохраняются.", + "systemUtilities": "Установить выбранные системные утилиты и отслеживать только пакеты, впервые добавленные с помощью ProxMenux." + }, + "toolNames": { + "subscription_banner": "Удаление баннера подписки", + "time_sync": "Синхронизация времени", + "apt_languages": "Отключение загрузки переводов APT", + "journald": "Оптимизация Journald", + "logrotate": "Оптимизация Logrotate", + "system_limits": "Увеличение системных лимитов", + "memory_settings": "Оптимизация настроек памяти", + "zram_swap": "Профиль подкачки ZRAM", + "kernel_panic": "Настройка поведения при панике ядра", + "apt_ipv4": "Принудительное использование IPv4 в APT", + "kexec": "kexec для быстрой перезагрузки", + "rpc": "Отключение RPC / rpcbind", + "motd": "Пользовательский баннер MOTD", + "system_utils": "Системные утилиты", + "network_optimization": "Оптимизация сети", + "bashrc_custom": "Настройка Bashrc", + "figurine": "Figurine", + "fastfetch": "Fastfetch", + "log2ram": "Log2ram (защита SSD)", + "zfs_autotrim": "Автоматический TRIM для ZFS", + "amd_fixes": "Исправления для процессоров AMD (Ryzen/EPYC)", + "persistent_network": "Настройка постоянных сетевых интерфейсов", + "vfio_iommu": "Проброс устройств VFIO/IOMMU", + "lvm_repair": "Восстановление заголовков физических томов LVM", + "repo_cleanup": "Очистка репозиториев", + "proxmox_repos": "Репозитории APT для Proxmox", + "entropy": "Генерация энтропии (haveged)" + } + }, + "healthThresholds": { + "title": "Пороговые значения мониторинга состояния", + "description": "Мониторинг состояния и уведомления реагируют на пересечение этих порогов. Перетащите янтарный ползунок для настройки уровня предупреждения и красный — для критического уровня. Значения, отличающиеся от рекомендованных, отображаются синим; наведите указатель на ползунок, чтобы увидеть рекомендацию, или нажмите «Сбросить», чтобы восстановить рекомендованное значение.", + "loadFailed": "Не удалось загрузить пороговые значения.", + "invalidValue": "Недопустимое значение для {key}: требуется число", + "resetFailed": "Не удалось выполнить сброс", + "networkErrorWhileResetting": "Сетевая ошибка при сбросе", + "resetSectionConfirm": "Сбросить все пороговые значения раздела «{section}» до рекомендуемых?", + "resetAllConfirm": "Сбросить ВСЕ пороговые значения до рекомендуемых? Это затронет все разделы.", + "resetAllTitle": "Сбросить все пороговые значения до рекомендуемых", + "resetSectionTitle": "Сбросить пороговые значения этого раздела до рекомендуемых", + "recommended": "Рекомендуемое значение", + "warning": "Предупреждение", + "critical": "Критическое состояние", + "ok": "OK", + "warn": "WARN", + "crit": "CRIT", + "ram": "RAM", + "swapCriticalOnly": "Область подкачки (только критический порог)", + "sections": { + "cpu": { + "title": "Загрузка процессора" + }, + "memory": { + "title": "Память и подкачка" + }, + "cpu_temperature": { + "title": "Температура процессора" + }, + "disk_temperature": { + "title": "Температура диска", + "description": "Отдельные пороговые значения для каждого класса. Единицы измерения одинаковы (°C), но значения по умолчанию различаются, поскольку у каждого класса свой допустимый диапазон." + }, + "host_storage": { + "title": "Дисковое пространство — хост", + "description": "Применяется к / и ко всем точкам монтирования в /var/lib/vz, /mnt/* и т. д." + }, + "lxc_rootfs": { + "title": "Дисковое пространство — rootfs LXC", + "description": "Корневой диск каждого контейнера; оценка выполняется относительно размера rootfs из PVE." + }, + "vm_disk": { + "title": "Дисковое пространство — виртуальные машины", + "description": "Файловые системы работающих виртуальных машин по данным гостевого агента QEMU, включая проброшенные диски. Виртуальные машины без гостевого агента не оцениваются." + }, + "lxc_mount": { + "title": "Точки монтирования LXC", + "description": "Ёмкость точек монтирования внутри работающих контейнеров (mp0, mp1, NFS, bind-монтирования). Корневая файловая система rootfs исключена: она рассматривается выше." + }, + "pve_storage": { + "title": "Ёмкость хранилищ PVE", + "description": "Блочные хранилища PVE: LVM, LVM-thin, ZFS-pool, RBD/Ceph, PBS. Хранилища на основе файловых систем уже охвачены пороговыми значениями для дисков хоста." + }, + "zfs_pool": { + "title": "Ёмкость пула ZFS", + "description": "Пулы ZFS на уровне хоста отслеживаются независимо от регистрации в PVE, поэтому мониторинг также охватывает rpool и выделенные пулы для резервных копий." + } + }, + "swapPressure": "Нагрузка на подкачку", + "swapPressureHint": "Эта проверка нагрузки на подкачку регистрирует критическое событие после нескольких последовательных замеров, при которых общее использование подкачки превышает первый порог, а объём доступной оперативной памяти опускается ниже второго. Длительное высокое использование оперативной памяти также может вызвать отдельное критическое событие.", + "swapHighLabel": "Общее использование подкачки", + "availableMinLabel": "Минимальный объём доступной оперативной памяти" + }, + "navOrder": { + "title": "Порядок навигации", + "description": "Настройте порядок вкладок верхнего уровня. Сгруппированные вкладки («Узел», «Администрирование») перемещаются как единое целое; порядок элементов внутри них остаётся стандартным.", + "reset": "Восстановить стандартный порядок", + "hint": "Перетаскивайте для изменения порядка · На сенсорном экране сначала нажмите и удерживайте", + "customActive": "Используется пользовательский порядок навигации." + }, + "diskExclusions": { + "title": "Исключения дисков", + "description": "Диски, с которых никогда не считываются данные по расписанию, чтобы они могли останавливать вращение по собственному таймеру.", + "empty": "Физические диски не найдены.", + "disk": "Диск", + "periodicReads": "Периодическое считывание данных", + "excluded": "Исключён", + "notConnected": "Не подключён", + "saveFailed": "Не удалось сохранить исключения дисков.", + "help": "Для исключённого диска не выполняется считывание температуры или данных SMART по расписанию — даже запрос режима питания, поэтому к нему вообще не происходит обращений. При открытии подробных данных SMART считывание с диска всё же выполняется." + } + }, + "login": { + "subtitle": "Войдите, чтобы открыть панель управления", + "username": "Имя пользователя", + "password": "Пароль", + "usernamePlaceholder": "Введите имя пользователя", + "passwordPlaceholder": "Введите пароль", + "rememberMe": "Запомнить меня", + "missingCredentials": "Введите имя пользователя и пароль", + "missingTotp": "Введите код двухфакторной аутентификации", + "invalidCredentials": "Неверное имя пользователя или пароль", + "invalidTotp": "Неверный код двухфакторной аутентификации", + "tooManyAttempts": "Слишком много попыток входа. Подождите немного и попробуйте снова.", + "loginFailed": "Не удалось войти", + "signingIn": "Вход...", + "signIn": "Войти", + "twoFactorTitle": "Двухфакторная аутентификация", + "twoFactorDescription": "Введите шестизначный код из приложения для аутентификации", + "authenticationCode": "Код аутентификации", + "backupCodeHint": "Вы также можете использовать резервный код (формат: XXXX-XXXX)", + "backToLogin": "Вернуться к входу", + "verifyCode": "Проверить код" + }, + "account": { + "signedIn": "Вход выполнен", + "viewProfile": "Просмотреть профиль", + "security": "Безопасность", + "signOut": "Выйти" + }, + "authSetup": { + "choiceTitle": "Настройка защиты панели", + "passwordTitle": "Создание пароля", + "protectTitle": "Защитить панель?", + "protectDescription": "Добавьте дополнительный уровень безопасности, чтобы защитить ваши данные Proxmox при доступе из сетей, не являющихся частными.", + "setupPassword": "Да, настроить пароль", + "skipProtection": "Нет, продолжить без защиты", + "enableLater": "Вы всегда можете включить эту функцию позже в настройках", + "setupTitle": "Настройка аутентификации", + "setupDescription": "Создайте имя пользователя и пароль для защиты панели", + "fillFields": "Заполните все поля", + "passwordMismatch": "Пароли не совпадают", + "passwordTooShort": "Пароль должен содержать не менее 6 символов", + "skipFailed": "Не удалось пропустить аутентификацию", + "savePreferenceFailed": "Не удалось сохранить настройку", + "setupFailed": "Не удалось настроить аутентификацию", + "username": "Имя пользователя", + "usernamePlaceholder": "Введите имя пользователя", + "password": "Пароль", + "passwordPlaceholder": "Введите пароль", + "confirmPassword": "Подтверждение пароля", + "confirmPasswordPlaceholder": "Подтвердите пароль", + "profileOptional": "Профиль · необязательно", + "displayName": "Отображаемое имя", + "displayNamePlaceholder": "Отображается над именем пользователя в меню", + "displayNameHint": "Оставьте поле пустым, чтобы отображалось само имя пользователя. Не более 64 символов.", + "avatar": "Аватар", + "change": "Изменить", + "chooseImage": "Выбрать изображение", + "clear": "Очистить", + "avatarHint": "PNG, JPEG, WebP или GIF · до 2 МБ · для наилучшего результата заранее обрежьте изображение до квадрата.", + "settingUp": "Настройка...", + "setupAuthentication": "Настройка аутентификации", + "back": "Назад" + }, + "securityPage": { + "title": "Безопасность", + "description": "Защищайте доступ к Monitor и хосту Proxmox из одного места.", + "values": { + "permanent": "Бессрочно", + "perm": "права", + "enabled": "Включено", + "disabled": "Отключено", + "enable": "Включить", + "disable": "Отключить", + "enabledLower": "включено", + "disabledLower": "отключено", + "clusterLower": "кластер", + "hostLower": "хост", + "remove": "Удалить", + "allow": "Разрешить", + "delete": "Удалить", + "uninstall": "Удалить", + "uninstalling": "Удаление...", + "serviceRunning": "Служба работает", + "serviceNotRunning": "Служба не запущена", + "active": "Активна", + "inactive": "Неактивна", + "installed": "Установлено", + "notInstalled": "Не установлено", + "notFound": "Не найдено", + "never": "Никогда", + "unknownDate": "дата неизвестна", + "system": "система", + "none": "Нет", + "external": "Внешний", + "up": "Работает", + "down": "Не работает" + }, + "errors": { + "deleteReportNoFiles": "Файлы отчётов или журналов Lynis для удаления не найдены.", + "lynisUninstallNoFiles": "Установка Lynis, файлы отчётов или журналов для удаления не найдены.", + "lynisRemovalPartial": "Удаление не завершено. Некоторые файлы Lynis удалены; перед повторной попыткой проверьте, что осталось.", + "lynisRemovalUnconfirmed": "Не удалось подтвердить результат удаления Lynis. Некоторые файлы, возможно, уже удалены; проверьте это перед повторной попыткой.", + "passwordMinLength": "Пароль должен содержать не менее 10 символов.", + "passwordComplexity": "Используйте символы как минимум трёх из следующих типов: строчные буквы, прописные буквы, цифры, специальные символы.", + "passwordCommon": "Этот пароль слишком распространён. Выберите пароль, который сложнее угадать.", + "fail2banUninstallFailed": "Не удалось удалить Fail2Ban", + "lynisUninstallFailed": "Не удалось удалить Lynis", + "unbanIpFailed": "Не удалось разблокировать IP-адрес", + "applyMissingJailsFailed": "Не удалось добавить недостающие меры защиты", + "auditFailed": "Не удалось выполнить Audit", + "startAuditFailed": "Не удалось запустить аудит", + "updateJailConfigFailed": "Не удалось сохранить настройки защиты", + "invalidTrustedNetwork": "Введите один допустимый IP-адрес или одну сеть в формате CIDR.", + "trustedNetworkExists": "Этот IP-адрес или сеть уже добавлены в список доверенных.", + "updateTrustedNetworksFailed": "Не удалось обновить список доверенных IP-адресов и сетей.", + "ruleNeedsPortOrSource": "Сначала добавьте порт назначения или адрес источника.", + "addRuleFailed": "Не удалось добавить правило", + "deleteRuleFailed": "Не удалось удалить правило", + "updateRuleFailed": "Не удалось обновить правило", + "updateFirewallFailed": "Не удалось обновить межсетевой экран", + "updateMonitorPortFailed": "Не удалось обновить правило для порта Monitor", + "fillAllFields": "Заполните все поля.", + "passwordsDoNotMatch": "Пароли не совпадают.", + "enableAuthFailed": "Не удалось включить аутентификацию", + "authAlreadyConfigured": "Защита входа уже настроена. Обновите страницу и повторите попытку.", + "disableAuthFailed": "Не удалось отключить аутентификацию", + "disableAuthRetry": "Не удалось отключить аутентификацию. Повторите попытку.", + "newPasswordsDoNotMatch": "Новые пароли не совпадают.", + "changePasswordFailed": "Не удалось изменить пароль", + "invalidPassword": "Неверный пароль.", + "enterPassword": "Введите пароль.", + "enter2faOrBackup": "Введите код 2FA или резервный код.", + "disable2faFailed": "Не удалось отключить 2FA", + "invalid2faCode": "Неверный код 2FA.", + "enter2fa": "Введите код 2FA.", + "revokeTokenFailed": "Не удалось отозвать токен", + "generateTokenFailed": "Не удалось создать токен", + "noTokenReceived": "Сервер не вернул токен.", + "generateTokenRetry": "Не удалось создать токен. Повторите попытку.", + "configureSslFailed": "Не удалось настроить SSL", + "reloadSslFailed": "Не удалось обновить активный сертификат", + "disableSslFailed": "Не удалось отключить SSL", + "deleteReportFailed": "Не удалось удалить отчёт" + }, + "messages": { + "fail2banUninstalled": "Fail2Ban удалён.", + "lynisUninstalled": "Lynis удалён.", + "ipUnbanned": "Блокировка {ip} средствами защиты {jail} снята.", + "missingJailsApplied": "Недостающие средства защиты добавлены.", + "auditCompleted": "Аудит Lynis завершён.", + "jailConfigUpdated": "Настройки защиты сохранены.", + "trustedNetworkAdded": "{value} теперь считается доверенным в Fail2Ban.", + "trustedNetworkRemoved": "{value} удалено из списка доверенных сетей.", + "trustedNetworkUpdated": "Доверенная запись изменена на {value}.", + "ruleAdded": "Правило межсетевого экрана добавлено.", + "ruleDeleted": "Правило межсетевого экрана удалено.", + "ruleUpdated": "Правило межсетевого экрана обновлено.", + "firewallUpdated": "Состояние межсетевого экрана {level} теперь: {state}.", + "monitorPortAdded": "Правило для порта монитора добавлено.", + "monitorPortRemoved": "Правило для порта монитора удалено.", + "authEnabled": "Аутентификация теперь включена.", + "authDisabledReloading": "Аутентификация отключена. Перезагрузка...", + "passwordChanged": "Пароль изменён.", + "twoFactorDisabled": "Двухфакторная аутентификация отключена.", + "tokenRevoked": "Токен API отозван.", + "apiTokenGenerated": "Токен API создан.", + "sslEnabledRestarting": "HTTPS включён. Перезапуск службы...", + "sslDisabledRestarting": "HTTPS отключён. Перезапуск службы...", + "sslCertificateReloaded": "Обновлённый сертификат теперь активен. Существующие соединения не были прерваны.", + "sslCertificateUnchanged": "Активный сертификат уже соответствует текущим файлам сертификата.", + "reportDeleted": "Отчёт Audit удалён.", + "twoFactorEnabled": "Двухфакторная аутентификация включена." + }, + "confirm": { + "disableAuth": "Отключить аутентификацию? Любой пользователь, у которого есть сетевой доступ к панели мониторинга, сможет открыть её.", + "revokeToken": "Отозвать этот токен API?", + "disableHttps": "Отключить HTTPS и вернуться к обычному HTTP?", + "deleteAuditReport": "Удалить отчёт об аудите Lynis и журналы?", + "cannotBeUndone": "Это действие нельзя отменить." + }, + "auth": { + "title": "Доступ и аутентификация", + "description": "Управляйте тем, кто может открывать панель мониторинга Monitor.", + "statusTitle": "Защита паролем", + "passwordEnabled": "Вход по паролю включён.", + "noPasswordProtection": "Сейчас панель мониторинга доступна без пароля.", + "enableHint": "Задайте имя пользователя и пароль, прежде чем открывать доступ к этой панели мониторинга за пределами вашей частной сети.", + "enable": "Включить аутентификацию", + "setupTitle": "Создать учётные данные для входа", + "username": "Имя пользователя", + "usernamePlaceholder": "admin", + "password": "Пароль", + "passwordPlaceholder": "Введите пароль", + "confirmPassword": "Подтвердите пароль", + "confirmPasswordPlaceholder": "Введите пароль ещё раз", + "enabling": "Включение...", + "enableShort": "Включить", + "changePassword": "Изменить пароль", + "currentPassword": "Текущий пароль", + "currentPasswordPlaceholder": "Введите текущий пароль", + "newPassword": "Новый пароль", + "newPasswordPlaceholder": "Введите новый пароль", + "confirmNewPassword": "Подтвердите новый пароль", + "confirmNewPasswordPlaceholder": "Введите новый пароль ещё раз", + "changing": "Изменение...", + "enterYourPassword": "Введите пароль", + "disable": "Отключить аутентификацию" + }, + "twoFactor": { + "title": "Двухфакторная аутентификация", + "hint": "После ввода пароля вводите одноразовый код из приложения-аутентификатора.", + "enable": "Включить 2FA", + "enabled": "2FA включена.", + "disable": "Отключить 2FA", + "disableTitle": "Отключить двухфакторную аутентификацию", + "disableDescription": "Для подтверждения введите свой пароль и действующий код 2FA или резервный код.", + "codeOrBackup": "Код 2FA или резервный код", + "codeOrBackupPlaceholder": "123456 или XXXX-XXXX", + "disabling": "Отключение...", + "code": "Код 2FA", + "codePlaceholder": "123456" + }, + "ssl": { + "title": "SSL / HTTPS", + "description": "Шифровать соединение с панелью управления при её открытии в браузере.", + "httpsEnabled": "HTTPS включён.", + "httpNoSsl": "Панель управления использует HTTP без шифрования.", + "usingCertificate": "Используется сертификат {source}.", + "proxmoxHost": "Хост Proxmox", + "custom": "Пользовательский вариант", + "unencryptedHttp": "При использовании HTTP трафик не шифруется.", + "activeCertificate": "Активный сертификат", + "cert": "Сертификат", + "key": "Закрытый ключ", + "updateCertificate": "Обновить сертификат", + "updatingCertificate": "Обновление...", + "disabling": "Отключение...", + "restarting": "Перезагрузка...", + "disableHttps": "Отключить HTTPS", + "proxmoxCertDetected": "Обнаружен сертификат Proxmox", + "subject": "Субъект", + "issuer": "Издатель", + "expires": "Срок действия истекает", + "selfSignedWarning": "Самоподписанные сертификаты могут вызывать предупреждение в браузере. Это нормально для локальных установок Proxmox.", + "configuring": "Настройка...", + "useProxmoxCertificate": "Использовать сертификат Proxmox", + "noProxmoxCertificate": "Сертификат Proxmox не обнаружен.", + "useCustomCertificate": "Использовать собственный сертификат", + "customPaths": "Пути к файлам собственного сертификата", + "customPathsDescription": "Используйте существующие файлы сертификата и ключа на хосте.", + "certificatePath": "Путь к сертификату", + "privateKeyPath": "Путь к закрытому ключу", + "enableHttps": "Включить HTTPS", + "restartTitle": "Требуется перезапуск службы", + "restartDescription": "Изменение настроек HTTPS приводит к кратковременному перезапуску службы Monitor.", + "changesRestart": "Во время перезапуска службы соединение со страницей может ненадолго прерваться." + }, + "apiTokens": { + "defaultName": "Токен панели мониторинга", + "title": "Токены API", + "description": "Создавайте долгосрочные токены для интеграций и автоматизации.", + "aboutTitle": "О токенах API", + "validFor": "Токены остаются действительными, пока вы их не отзовёте.", + "externalServices": "Используйте их во внешних инструментах вместо пароля.", + "authorizationHeader": "Передавайте токен в заголовке Authorization.", + "seeGuideBefore": "См.", + "integrationsGuide": "руководство по интеграциям", + "seeGuideAfter": "с примерами.", + "generateNew": "Создать новый токен", + "generateTitle": "Создать токен API", + "generateDescription": "Введите пароль и код 2FA, если двухфакторная аутентификация включена.", + "tokenName": "Название токена", + "tokenNamePlaceholder": "Панель мониторинга Homepage", + "generating": "Создание...", + "generate": "Создать токен", + "yourToken": "Ваш токен API", + "saveTokenNow": "Сохраните этот токен сейчас.", + "tokenOnlyShownOnce": "Он будет показан только один раз.", + "token": "Токен", + "copied": "Скопировано", + "howToUse": "Как его использовать", + "addToHeaders": "Добавьте этот заголовок в свои запросы:", + "authorizationHeaderExample": "Authorization: Bearer ", + "readmeExamples": "Примеры интеграции см. в README.", + "done": "Готово", + "activeTokens": "Активные токены", + "invalidRegenerate": "Если токен утерян, отзовите его и создайте новый.", + "legacy": "Устаревший", + "revoke": "Отозвать", + "loading": "Загрузка токенов...", + "empty": "Токенов API пока нет.", + "scope": { + "label": "Права доступа токена", + "readOnly": "Только для чтения", + "readOnlyHint": "Позволяет читать метрики и сведения о состоянии. Рекомендуется для панелей мониторинга и интеграций.", + "fullAdmin": "Полные права администратора", + "fullAdminHint": "Полный контроль, как в вашем собственном сеансе.", + "fullAdminWarning": "Токен с полными правами администратора позволяет делать всё, что можете вы: выключать или перезагружать хост, запускать обновления и открывать терминал. Передавайте его только полностью доверенным интеграциям." + } + }, + "firewall": { + "title": "Межсетевой экран", + "description": "Управление состоянием межсетевого экрана Proxmox и простыми правилами доступа.", + "notDetectedTitle": "Межсетевой экран Proxmox не обнаружен", + "notDetectedDescription": "Средства управления межсетевым экраном недоступны на этом хосте.", + "clusterTitle": "Межсетевой экран кластера", + "clusterActive": "Межсетевой экран кластера активен.", + "clusterDisabled": "Межсетевой экран кластера отключён.", + "hostTitle": "Межсетевой экран хоста", + "hostActive": "Межсетевой экран хоста активен для этого узла.", + "clusterRequiredHint": "Сначала включите межсетевой экран кластера, затем включите межсетевой экран хоста.", + "quickAccessRules": "Быстрые правила доступа", + "port8008": "Порт Monitor 8008", + "port8006AlwaysAllowed": "Доступ к порту Proxmox 8006 всегда разрешён.", + "builtIn": "Встроено", + "monitorPortWarning": "Оставьте доступ к порту 8008 разрешённым, если вы подключаетесь к Monitor с другого устройства.", + "rulesOverview": "Обзор правил", + "totalRules": "Всего правил", + "accept": "Разрешить", + "blockReject": "Блокировать / отклонить", + "portsCovered": "Порты, охваченные правилами", + "drop": "Отбросить без ответа", + "reject": "Отклонить с ответом", + "cluster": "Кластер", + "host": "Хост", + "rules": "Правила: {count}", + "addRule": "Добавить правило", + "newRule": "Новое правило", + "quickPresets": "Быстрые шаблоны", + "incomingLower": "входящий", + "outgoingLower": "исходящий", + "allowLower": "разрешить", + "blockSilentlyLower": "блокировать без ответа", + "blockWithResponseLower": "блокировать с ответом", + "destinationPortHint": "Например, 22, 80, 443 или 8008.", + "sourceAddressHint": "Необязательный IP-адрес или адрес в формате CIDR, например 192.168.1.0/24.", + "anyInterface": "Любой интерфейс", + "hostFirewallThisNode": "Межсетевой экран хоста для этого узла", + "clusterFirewallAllNodes": "Межсетевой экран кластера для всех узлов", + "any": "Любой", + "anyLower": "любой", + "incoming": "Входящий", + "outgoing": "Исходящий", + "saveChanges": "Сохранить изменения", + "noRules": "Правил межсетевого экрана пока нет.", + "noRulesHint": "Добавьте правило или используйте один из готовых наборов выше.", + "fields": { + "direction": "Направление", + "action": "Действие", + "protocol": "Протокол", + "proto": "Прот.", + "destinationPort": "Порт назначения", + "sourceAddress": "Адрес источника", + "interfaceOptional": "Интерфейс (необязательно)", + "applyTo": "Применить к", + "commentOptional": "Комментарий (необязательно)", + "port": "Порт", + "source": "Источник", + "level": "Уровень", + "interface": "Интерфейс", + "comment": "Комментарий", + "scope": "Область действия" + }, + "placeholders": { + "destinationPort": "22, 80, 443", + "sourceAddress": "192.168.1.0/24", + "comment": "Назначение этого правила", + "shortPort": "8008", + "ipOrCidr": "IP-адрес или CIDR", + "description": "Описание" + }, + "presets": { + "httpWeb": "Веб-доступ по HTTP", + "httpsWeb": "Веб-доступ по HTTPS", + "sshRemoteAccess": "Удалённый доступ по SSH", + "smtpMail": "Почта по SMTP", + "icmpPing": "Проверка связи по ICMP" + } + }, + "fail2ban": { + "description": "Блокировать повторные неудачные попытки входа через SSH, в Proxmox и Monitor.", + "notInstalled": "Fail2Ban не установлен.", + "notInstalledDescription": "Установите его для автоматической блокировки повторных неудачных попыток входа.", + "configureTitle": "Установщик настроит:", + "configureSsh": "Защита SSH", + "configureProxmox": "Защита входа в Proxmox", + "configureMonitor": "Защита входа в Monitor", + "configureGlobal": "Основные параметры блокировки", + "customizeAfterInstall": "После установки можно настроить каждый механизм защиты.", + "installConfigure": "Установить и настроить", + "jails": "Механизмы защиты", + "bannedIps": "Заблокированные IP-адреса", + "totalBans": "Всего блокировок", + "failedAttempts": "Неудачные попытки", + "missingProtectionsTitle": "Некоторые механизмы защиты отсутствуют", + "missingProtectionsBefore": "Добавить недостающие механизмы защиты для", + "applyMissingJails": "Добавить механизмы защиты", + "permanentBan": "Постоянная блокировка", + "maxRetriesTitle": "Неудачные попытки до блокировки", + "retries": "Лимит попыток", + "banDurationTitle": "Как долго IP-адрес остаётся заблокированным", + "ban": "Время блокировки", + "findTimeTitle": "Период подсчёта неудачных попыток", + "window": "Период", + "configureJailSettings": "Изменить эту защиту", + "configureJail": "Изменить защиту {jail}", + "maxRetries": "Максимальное число повторных попыток", + "failedAttemptsBeforeBan": "Число неудачных попыток, после которого IP-адрес блокируется.", + "banTimeSeconds": "Время блокировки (в секундах)", + "permanentBanNeverExpires": "Постоянная блокировка без срока действия.", + "findTimeSeconds": "Период подсчёта попыток (в секундах)", + "timeWindowHint": "Неудачные попытки учитываются в пределах этого периода.", + "commonValuesHint": "Типичные значения: 600 = 10 мин, 3600 = 1 час, -1 = бессрочно.", + "saveConfiguration": "Сохранить конфигурацию", + "banned": "Сейчас заблокировано", + "failedNow": "Текущие неудачные попытки", + "totalFailed": "Всего неудачных попыток", + "bannedIpsWithCount": "Заблокированные IP-адреса ({count})", + "unban": "Разблокировать", + "noBannedIps": "Сейчас нет заблокированных IP-адресов.", + "noJails": "Защиты не найдены.", + "noActivity": "Активность Fail2Ban пока отсутствует.", + "installationTitle": "Установить Fail2Ban", + "installationDescription": "В терминале будут выполнены установка Fail2Ban и настройка защиты входа в систему.", + "uninstallConfirmTitle": "Удалить Fail2Ban?", + "uninstallConfirmDescription": "Это приведёт к удалению пакета Fail2Ban и его файлов защиты, созданных Monitor.", + "removeSshJail": "Удалить защиту SSH", + "removeProxmoxProtection": "Удалить защиту Proxmox", + "removeMonitorProtection": "Удалить защиту Monitor", + "removeCustomJails": "Удалить пользовательские файлы защиты, созданные Monitor", + "removeAuthLogger": "Удалить компонент журналирования аутентификации Monitor", + "jailLabels": { + "sshd": "SSH", + "proxmox": "Proxmox", + "proxmenux": "ProxMenux Monitor" + }, + "jailDescriptions": { + "sshd": "Блокирует IP-адреса при повторных неудачных попытках входа через SSH.", + "proxmox": "Блокирует IP-адреса при повторных неудачных попытках входа в интерфейс Proxmox.", + "proxmenux": "Блокирует IP-адреса при повторных неудачных попытках входа в Monitor." + }, + "tabs": { + "jails": "Защита и заблокированные IP-адреса", + "activity": "Активность" + }, + "activity": { + "ban": "Заблокирован", + "unban": "Разблокирован", + "fail": "Сбой" + }, + "placeholders": { + "maxRetries": "5", + "banTime": "3600", + "findTime": "600" + }, + "trustedNetworks": { + "title": "Доверенные IP-адреса и сети", + "description": "Fail2Ban никогда не будет блокировать эти адреса.", + "required": "Обязательно", + "remove": "Удалить из доверенных сетей", + "placeholder": "192.168.1.25 или 192.168.1.0/24", + "add": "Добавить", + "addCurrent": "Добавить мой IP-адрес ({ip})", + "addRule": "Добавить адрес / сеть", + "addressOrNetwork": "IP-адрес или сеть в формате CIDR", + "example": "Один адрес: 192.168.1.25 · Вся сеть: 192.168.1.0/24", + "useCurrent": "Использовать мой текущий IP-адрес: {ip}", + "singleIp": "IP-адрес", + "network": "Сеть", + "edit": "Изменить", + "delete": "Удалить", + "save": "Сохранить изменения", + "trusted": "Доверенный", + "system": "Система", + "columns": { + "status": "Статус", + "type": "Тип", + "address": "Адрес / сеть", + "actions": "Действия" + }, + "warning": "Добавляйте в доверенные только адреса, которые вы контролируете. Если вы добавите в доверенные всю сеть, Fail2Ban также будет игнорировать скомпрометированное устройство в этой сети." + } + }, + "lynis": { + "title": "Аудит безопасности Lynis", + "description": "Запустите локальный аудит безопасности и ознакомьтесь с практическими рекомендациями по усилению защиты.", + "notInstalled": "Lynis не установлен.", + "notInstalledDescription": "Установите Lynis для проведения локальных аудитов безопасности на этом узле.", + "featuresTitle": "Lynis выполняет следующие проверки и формирует результаты:", + "featureScoring": "оценка уровня защищённости системы", + "featureVulnerabilities": "известные слабые места и рискованные настройки", + "featureCompliance": "основные меры обеспечения безопасности", + "featureGithub": "понятный отчёт, который можно распечатать или сохранить", + "install": "Установить Lynis", + "installedDescription": "Lynis установлен и готов к аудиту этого узла.", + "lastScan": "Последнее сканирование", + "hardeningIndex": "Индекс защищённости", + "warnings": "Предупреждения", + "pveExpectedPlus": "+ {count} — ожидаемые для Proxmox", + "expectedWarningsSuffix": "+ {count} — ожидаемые для Proxmox", + "suggestions": "Рекомендации", + "securityHardeningScore": "Оценка уровня защищённости", + "proxmoxAdjustedParen": "(с поправкой на Proxmox)", + "scoreBreakdown": "Lynis: {raw} | Proxmox: {adjusted}", + "scoreCritical": "Критическое состояние", + "scoreModerate": "Умеренный", + "scoreGood": "Хорошо", + "rawScorePrefix": "Исходная оценка", + "expectedFindings": "Ожидаемые для Proxmox замечания: {count}", + "auditInProgress": "Выполняется Audit", + "auditInProgressDescription": "Это может занять одну-две минуты.", + "auditReports": "Отчёты Audit", + "auditReportTitle": "Отчёт Lynis", + "reportSummary": "{host} · {tests} · оценка {score}/100 · {warnings} · {suggestions}", + "printSavePdf": "Распечатать или сохранить в PDF", + "deleteReport": "Удалить отчёт", + "hostname": "Имя хоста", + "kernel": "Ядро", + "tests": "Тесты", + "packages": "Пакеты", + "firewall": "Межсетевой экран", + "malwareScanner": "Сканер вредоносного ПО", + "malwareScannerNotInstalled": "Сканер не установлен", + "quickStatus": "Краткая сводка", + "allPveExpected": "Все замечания ({count}) ожидаемы для Proxmox", + "actionableCount": "Требуют принятия мер: {count}", + "hardeningScorePve": "Оценка защищённости (с поправкой на Proxmox)", + "noCheckDetails": "Подробные результаты проверок недоступны.", + "checksCount": "Проверки: {count}", + "noWarnings": "Предупреждений нет.", + "pveExpected": "Ожидаемо для Proxmox", + "lowRisk": "Низкий риск", + "solution": "Решение", + "noSuggestions": "Рекомендаций нет.", + "lowPriority": "Низкий приоритет", + "runningAudit": "Выполняется аудит...", + "runAudit": "Запустить аудит", + "installationTitle": "Установить Lynis", + "installationDescription": "В терминале будет установлен Lynis и настроена поддержка отчётов.", + "uninstallConfirmTitle": "Удалить Lynis?", + "uninstallConfirmDescription": "Удалить Lynis, а также его отчёт об аудите и журналы.", + "removeInstallation": "Удалить установленный Lynis", + "removeWrapper": "Удалить обёртку Monitor для Lynis", + "removeReports": "Удалить отчёт об аудите Lynis и журналы", + "counts": { + "tests": { + "one": "{count} проверка", + "few": "{count} проверки", + "many": "{count} проверки" + }, + "warnings": { + "one": "Предупреждений: {count}", + "few": "{count} предупреждения", + "many": "{count} предупреждения" + }, + "suggestions": { + "one": "{count} рекомендация", + "few": "{count} рекомендации", + "many": "{count} рекомендации" + }, + "testsExecuted": { + "one": "Выполнена {count} проверка.", + "few": "Выполнены {count} проверки.", + "many": "Выполнены {count} проверки." + }, + "actionableWarnings": { + "one": "{count} предупреждение, требующее принятия мер", + "few": "{count} предупреждения, требующих принятия мер", + "many": "{count} предупреждения, требующих принятия мер" + }, + "actionableSuggestions": { + "one": "{count} рекомендация, которую можно выполнить", + "few": "{count} рекомендации, которые можно выполнить", + "many": "{count} рекомендации, которые можно выполнить" + } + }, + "tabs": { + "overview": "Обзор", + "checksWithCount": "Проверки ({count})", + "warningsWithCount": "Предупреждения ({count})", + "suggestionsWithCount": "Рекомендации ({count})" + }, + "report": { + "scoreGood": "Хорошо", + "scoreModerate": "Умеренный", + "scoreCritical": "Проблема", + "scoreUnavailable": "Неполные данные", + "title": "Отчёт Lynis Audit", + "useCmdP": "Нажмите ⌘+P для печати или сохранения в формате PDF.", + "useCtrlP": "Нажмите Ctrl+P для печати или сохранения в формате PDF.", + "brandTitle": "ProxMenux Monitor · Аудит Lynis", + "reviewHint": "Обзор подготовлен для принятия решений по усилению защиты локальной системы.", + "subtitle": "Отчёт об аудите безопасности", + "date": "Дата", + "auditor": "Аудитор", + "executiveSummary": "Краткое резюме", + "hardeningAssessment": "Оценка уровня защищённости", + "auditOf": "Audit", + "running": "под управлением", + "unknownOs": "неизвестной ОС", + "noActionableWarnings": "Нет предупреждений, требующих действий", + "and": "и", + "expectedBehavior": "Результаты, отмеченные как ожидаемые для Proxmox, обычно являются нормой для узлов Proxmox VE.", + "lynisRaw": "Исходная оценка Lynis", + "pveAdjusted": "Оценка с поправкой на Proxmox", + "rangeCritical": "0-49 — критический уровень", + "rangeModerate": "50-69 — умеренный уровень", + "rangeGood": "70-100 — хорошо", + "systemInformation": "Информация о системе", + "operatingSystem": "Операционная система", + "lynisVersion": "Версия Lynis", + "reportDate": "Дата отчёта", + "testsPerformed": "Выполнено проверок", + "securityPosture": "Состояние безопасности", + "proxmoxScoreWithLabel": "Оценка Proxmox ({label})", + "actionableWarningsLabel": "Предупреждения, требующие действий", + "actionableSuggestionsLabel": "Рекомендации, требующие действий", + "warningsDescription": "Предупреждения, которые стоит рассмотреть в первую очередь. Результаты, ожидаемые для Proxmox, отмечены значком.", + "noWarningsDetected": "Предупреждений, требующих действий, не обнаружено.", + "recommendation": "Рекомендация", + "suggestionsDescription": "Рекомендации по усилению защиты с более низким приоритетом. Результаты, ожидаемые для Proxmox, также отмечены значком.", + "incompleteDescription": "Lynis создал неполный отчёт без оценки или количества проверок. Запустите аудит повторно, чтобы получить достоверный результат.", + "detailedChecks": "Подробные проверки", + "categoriesCount": "Количество категорий: {count}", + "detailedChecksDescription": "Исходные группы проверок Lynis из отчёта об аудите.", + "check": "Проверить", + "status": "Статус", + "generatedBy": "Отчёт создан с помощью", + "confidential": "Не разглашайте этот отчёт: он может содержать сведения об узле." + }, + "reportIncompleteTitle": "Пока нет пригодных для использования результатов аудита Audit", + "reportIncompleteDescription": "Lynis создал неполный отчёт без оценки или количества проверок. Запустите аудит повторно.", + "reportIncompleteShort": "Отчёт неполный — запустите аудит повторно." + }, + "twoFactorSetup": { + "setupFailed": "Не удалось начать настройку двухфакторной аутентификации", + "enterSixDigitCode": "Введите 6-значный код.", + "invalidCode": "Неверный код", + "verificationFailed": "Не удалось проверить код", + "copyPrompt": "Скопируйте этот секретный ключ:", + "title": "Настройка двухфакторной аутентификации", + "description": "Используйте приложение-аутентификатор, чтобы при входе дополнительно вводить одноразовый код.", + "intro": "После ввода пароля потребуется пройти второй этап проверки, поэтому даже при утечке пароля одного его будет недостаточно для входа.", + "youWillNeed": "Вам понадобятся:", + "needApp": "Приложение-аутентификатор, например Aegis, 1Password, Bitwarden или Google Authenticator.", + "needQrOrKey": "QR-код или ключ для ручного ввода, предоставляемые при этой настройке.", + "needBackupCodes": "Резервные коды, сохранённые в безопасном месте.", + "starting": "Запуск...", + "startSetup": "Начать настройку", + "scanTitle": "Отсканируйте QR-код", + "scanDescription": "Откройте приложение-аутентификатор и отсканируйте этот код.", + "qrCodeAlt": "QR-код для двухфакторной аутентификации", + "manualKey": "Ключ для ручного ввода", + "copyKey": "Скопировать ключ", + "verifyTitle": "Проверка кода", + "verifyDescription": "Введите текущий шестизначный код из приложения.", + "verifying": "Проверка...", + "verifyAndEnable": "Проверить и включить", + "enabledTitle": "2FA включена.", + "enabledDescription": "Сохраните резервные коды, прежде чем закрыть это окно.", + "saveCodesTitle": "Сохраните резервные коды", + "saveCodesDescription": "Каждый код можно использовать один раз, если вы потеряете доступ к приложению-аутентификатору.", + "backupCodes": "Резервные коды", + "copyAll": "Скопировать все", + "finish": "Завершить" + }, + "secureGateway": { + "title": "Secure Gateway", + "learnMore": "Подробнее", + "noNetworkDetected": "Сеть не обнаружена", + "noNetworksDetected": "Сети не обнаружены.", + "recommended": "Рекомендуемое значение", + "retry": "Повторить", + "errors": { + "loadWizardFailed": "Не удалось загрузить мастер настройки Secure Gateway", + "updateFailed": "Не удалось обновить Secure Gateway", + "networkUpdateFailed": "Ошибка сети при обновлении Secure Gateway", + "fieldRequired": "Поле {field} обязательно для заполнения.", + "deploymentFailed": "Не удалось выполнить развёртывание", + "ociRequiresPve": "Secure Gateway использует стандартный механизм LXC и должен работать на этом узле Proxmox. Если проблема повторяется, проверьте журналы серверной части.", + "authKeyRequired": "Введите ключ аутентификации Tailscale.", + "updateAuthKeyFailed": "Не удалось обновить ключ аутентификации", + "couldNotLoadSetupData": "Не удалось загрузить данные для настройки." + }, + "messages": { + "updateApplied": "Обновление применено.", + "preparingDeployment": "Подготовка к развёртыванию...", + "creatingLxc": "Создание контейнера LXC...", + "gatewayDeployed": "Secure Gateway развёрнут." + }, + "logs": { + "empty": "Нет доступных журналов.", + "failed": "Не удалось загрузить журналы.", + "title": "Журналы Secure Gateway", + "description": "Последние сообщения службы из контейнера шлюза." + }, + "values": { + "never": "никогда", + "yesterdayAt": "вчера в {time}", + "yes": "Да", + "no": "Нет" + }, + "wizard": { + "introTitle": "Безопасный удалённый доступ с Tailscale", + "introDescription": "Разверните небольшой шлюз LXC, чтобы ваши устройства могли получать доступ к ProxMenux, Proxmox и выбранным локальным сетям через вашу сеть tailnet Tailscale.", + "whatYouGet": "Что вы получите", + "benefitMonitorAnywhere": "Открывайте Monitor из любой точки вашей сети tailnet.", + "benefitProxmoxUi": "Получайте доступ к веб-интерфейсу Proxmox, не открывая порт 8006 для внешних подключений.", + "benefitVmLxc": "Получайте доступ к выбранным сетям виртуальных машин и LXC при необходимости.", + "benefitEncryption": "Трафик остаётся зашифрованным при передаче через Tailscale.", + "benefitNoPorts": "Проброс портов для доступа из интернета не требуется.", + "tailscaleAccountBefore": "Вам понадобятся учётная запись Tailscale и ключ предварительной аутентификации из", + "reviewDeploy": "Проверка и развёртывание", + "reviewDescription": "Проверьте итоговые настройки перед созданием шлюза LXC.", + "storageLocation": "Место хранения", + "storageDescription": "Выберите, где хранить контейнер шлюза.", + "gbAvailable": "Доступно {amount} ГБ", + "configurationSummary": "Сводка конфигурации", + "hostname": "Имя хоста", + "storage": "Хранилище", + "accessMode": "Режим доступа", + "accessModes": { + "hostOnly": "Только Proxmox", + "proxmoxNetwork": "Вся локальная сеть", + "customNetworks": "Пользовательские сети" + }, + "hostAccess": "Доступ к хосту", + "networks": "Сети", + "exitNode": "Выходной узел", + "acceptRoutes": "Принимать маршруты", + "important": "Важно", + "approvalRequired": "После развёртывания одобрите объявленные маршруты подсетей в консоли администрирования Tailscale.", + "exitNodeApprovalRequired": "Режим выходного узла также требует одобрения в этой консоли.", + "showAfterDeploy": "После развёртывания мы покажем точные инструкции по одобрению.", + "setupTitle": "Настройка Secure Gateway" + }, + "steps": { + "intro": { + "title": "Безопасный удалённый доступ", + "description": "Настройте безопасный VPN-доступ к вашему серверу Proxmox" + }, + "auth": { + "title": "Аутентификация Tailscale", + "description": "Подключите шлюз к вашей учётной записи Tailscale" + }, + "access": { + "title": "Область доступа", + "description": "Выберите, какие ресурсы должны быть доступны через этот шлюз" + }, + "options": { + "title": "Дополнительные параметры", + "description": "Дополнительные настройки маршрутизации" + }, + "deploy": { + "title": "Развернуть шлюз", + "description": "Проверка и развёртывание" + } + }, + "status": { + "connected": "Подключено", + "stopped": "Остановлено", + "error": "Ошибка" + }, + "installed": { + "description": "Secure Gateway развёрнут и управляется Monitor.", + "uptime": "Время работы" + }, + "actions": { + "start": "Запустить", + "stop": "Остановка", + "restart": "Перезапустить", + "logs": "Журналы", + "remove": "Удалить", + "back": "Назад", + "continue": "Продолжить", + "deploying": "Развёртывание...", + "deployGateway": "Развернуть шлюз" + }, + "updates": { + "lastChecked": "Последняя проверка", + "tailscaleAvailable": "Доступна версия {version} продукта Tailscale", + "updating": "Обновление...", + "updateToVersion": "Обновить до {version}", + "otherPackagesPending": "+ {count} других пакетов ожидают обновления", + "noneAvailable": "Нет доступных обновлений" + }, + "authKey": { + "update": "Обновить ключ аутентификации", + "description": "Используйте новый ключ аутентификации Tailscale, если срок действия текущего ключа истёк или он был отозван.", + "newKey": "Новый ключ аутентификации", + "generateAt": "Создайте его на странице", + "adminKeys": "Tailscale Admin → Keys", + "updateKey": "Обновить ключ" + }, + "tailscale": { + "openAdmin": "Открыть консоль администрирования Tailscale" + }, + "remove": { + "title": "Удалить Secure Gateway?", + "description": "Это действие остановит и удалит контейнер шлюза. Состояние Tailscale может остаться в сохранённых данных, если серверная часть сохраняет его." + }, + "postDeploy": { + "title": "Завершите настройку в консоли администрирования Tailscale", + "description": "Шлюз развёрнут. Прежде чем удалённые устройства смогут использовать объявленные маршруты, необходимо выполнить ещё один шаг — одобрить их.", + "nextStep": "Следующий шаг", + "approveDescription": "Одобрите маршруты к подсетям, объявленные этим шлюзом.", + "subnetRoutes": "Маршруты к подсетям", + "exitNode": "Выходной узел", + "routeAllTraffic": "Одобрите его использование, если хотите, чтобы устройства направляли весь интернет-трафик через этот шлюз.", + "howToApprove": "Как одобрить", + "stepOpenAdmin": "Откройте консоль администрирования Tailscale.", + "stepFindBefore": "Найдите машину с именем", + "stepFindAfter": "в списке машин (Machines).", + "stepOpenDetails": "Откройте сведения о ней.", + "stepSubnetsBefore": "В разделе", + "stepSubnetsMiddle": "нажмите", + "stepSubnetsAfter": "и одобрите объявленные маршруты.", + "stepRoutingBefore": "Для настройки выходного узла откройте", + "stepRoutingMiddle": "и одобрите", + "accessAfterApproval": "После одобрения вы сможете открыть", + "or": "или", + "fromAnyDevice": "с любого устройства в вашей сети tailnet.", + "doLater": "Сделаю это позже" + }, + "notInstalled": { + "subtitle": "Шлюз Tailscale ещё не развёрнут.", + "description": "Разверните его для безопасного доступа к ProxMenux и Proxmox из вашей сети tailnet без открытия портов для доступа из интернета.", + "deploy": "Развернуть Secure Gateway" + }, + "schema": { + "auth_key": { + "label": "Ключ аутентификации Tailscale", + "description": "Ключ предварительной аутентификации из консоли администрирования Tailscale. Создайте его по ссылке ниже.", + "placeholder": "tskey-auth-xxxxx", + "helpText": "Создать ключ аутентификации" + }, + "hostname": { + "label": "Имя хоста устройства", + "description": "Имя, отображаемое в консоли администрирования Tailscale.", + "placeholder": "proxmox-gateway" + }, + "access_mode": { + "label": "Область доступа", + "description": "Что должно быть доступно через этот шлюз.", + "options": { + "host_only": { + "label": "Только Proxmox", + "description": "Доступ только к этому серверу Proxmox, его веб-интерфейсу и ProxMenux Monitor." + }, + "proxmox_network": { + "label": "Вся локальная сеть", + "description": "Доступ ко всем устройствам в вашей локальной сети, включая NAS, принтеры, виртуальные машины и контейнеры LXC." + }, + "custom": { + "label": "Пользовательские подсети", + "description": "Выберите, к каким именно подсетям предоставить доступ." + } + } + }, + "advertise_routes": { + "label": "Объявляемые сети", + "description": "Выберите сети, которые должны быть доступны через VPN." + }, + "exit_node": { + "label": "Выходной узел", + "description": "Используйте этот шлюз как точку выхода в интернет, когда находитесь вне дома.", + "warning": "Требуется одобрение в Tailscale Admin. При включении этой функции на вашем устройстве весь интернет-трафик проходит через ваш сервер Proxmox." + }, + "accept_routes": { + "label": "Принимать маршруты", + "description": "Разрешить этому шлюзу доступ к сетям, маршруты к которым объявляют другие узлы Tailscale в вашей сети tailnet." + } + } + } + }, + "about": { + "releaseNotes": "Примечания к выпуску", + "changelog": "Журнал изменений", + "logoAlt": "Логотип ProxMenux", + "heroDescription": "Веб-панель и средства управления для Proxmox VE: мониторинг состояния, уведомления, терминал, отслеживание оптимизаций и многое другое — всё в одном AppImage.", + "project": { + "title": "Проект", + "description": "Репозиторий, документация и каналы сообщества." + }, + "support": { + "title": "Поддержка и лицензия", + "description": "ProxMenux — свободное программное обеспечение с открытым исходным кодом под лицензией GPL-3.0. Если оно вам полезно, разовое пожертвование поможет ему оставаться таким и дальше." + }, + "license": { + "label": "Лицензия GPL-3.0", + "description": "Свободное программное обеспечение — полный текст лицензии см. в файле LICENSE." + }, + "links": { + "repository": { + "label": "Репозиторий GitHub", + "description": "Исходный код, выпуски и система отслеживания ошибок." + }, + "documentation": { + "label": "Документация", + "description": "Полное руководство пользователя по ProxMenux и Monitor." + }, + "discussions": { + "label": "Обсуждения", + "description": "Задавайте вопросы, делитесь собственными промптами для ИИ и обменивайтесь идеями." + }, + "issues": { + "label": "Сообщить об ошибке или предложить новую функцию", + "description": "Создайте обращение на GitHub: сообщите об ошибке или регрессии либо предложите идею." + }, + "support": { + "label": "Поддержать проект на Ko-fi", + "description": "ProxMenux — свободное программное обеспечение с открытым исходным кодом. Пожертвования помогают покрывать расходы на хостинг и время, затрачиваемое на разработку." + } + } + }, + "systemLogs": { + "title": "Системные журналы и события", + "sections": "Разделы", + "loading": { + "title": "Загрузка журналов…", + "description": "Получение системных журналов и событий" + }, + "errors": { + "connectFailed": "Не удалось подключиться к серверу.", + "loadFailed": "Не удалось загрузить журналы. Повторите попытку." + }, + "cards": { + "totalEntries": "Всего записей", + "selectedRange": "За выбранный период", + "errors": "Ошибки", + "requiresAttention": "Требуют внимания", + "warnings": "Предупреждения", + "monitorClosely": "Требуют пристального наблюдения", + "backups": "Резервные копии" + }, + "tabs": { + "logs": "Журналы", + "events": "События", + "backups": "Резервные копии", + "notifications": "Уведомления" + }, + "filters": { + "searchPlaceholder": "Поиск в журналах и событиях…", + "timeRange": "Период времени", + "oneDay": "1 день назад", + "threeDays": "3 дня назад", + "oneWeek": "1 неделю назад", + "twoWeeks": "2 недели назад", + "oneMonth": "1 месяц назад", + "customDays": "Произвольное количество дней", + "daysAgoPlaceholder": "Дней назад", + "byLevel": "Фильтр по уровню", + "allLevels": "Все уровни", + "byService": "Фильтр по службе", + "allServices": "Все службы", + "dateRange": "Диапазон дат", + "daysAgo": "За последние {count} дней" + }, + "levels": { + "error": "Ошибка", + "critical": "Критическое состояние", + "emergency": "Аварийная ситуация", + "alert": "Требуется немедленное вмешательство", + "warning": "Предупреждение", + "info": "Информация", + "notice": "Уведомление", + "success": "Успех", + "debug": "Отладка" + }, + "export": { + "button": "Экспорт журналов", + "title": "Экспорт системных журналов и событий Proxmox", + "filtersApplied": "Применённые фильтры" + }, + "fields": { + "generated": "Сформировано", + "level": "Уровень", + "service": "Служба", + "search": "Поиск", + "none": "Нет", + "message": "Сообщение", + "source": "Источник", + "hostname": "Имя хоста", + "node": "Узел", + "user": "Пользователь", + "unit": "Юнит", + "host": "Хост", + "timestamp": "Метка времени", + "type": "Тип", + "systemdUnit": "Юнит systemd", + "processId": "Идентификатор процесса", + "duration": "Продолжительность", + "startTime": "Время начала", + "endTime": "Время окончания", + "storage": "Хранилище", + "storageType": "Тип хранилища", + "size": "Размер", + "created": "Дата создания", + "volumeId": "Идентификатор тома" + }, + "badges": { + "event": "Событие" + }, + "empty": { + "logs": "Нет записей журнала, соответствующих выбранным фильтрам.", + "backups": "Резервные копии не найдены.", + "notifications": "Уведомления не найдены." + }, + "loadMore": "Загрузить ещё (осталось: {count})", + "backups": { + "vm": "Резервные копии ВМ", + "lxc": "Резервные копии LXC", + "totalSize": "Общий размер" + }, + "modals": { + "logTitle": "Сведения о записи журнала", + "logDescription": "Полная информация об этой записи журнала", + "eventTitle": "Сведения о событии", + "eventDescription": "Полная информация об этом событии", + "backupTitle": "Сведения о резервной копии", + "backupDescription": "Полная информация об этой резервной копии", + "notificationTitle": "Сведения об уведомлении", + "notificationDescription": "Полная информация об этом уведомлении" + }, + "download": { + "taskLog": "Журнал задачи Proxmox", + "completeTaskLog": "Полный журнал задачи", + "completeMessage": "Полный текст сообщения", + "completeMessageButton": "Скачать полный текст сообщения" + } + }, + "onboarding": { + "dialogTitle": "Знакомство с ProxMenux", + "previous": "Назад", + "skip": "Пропустить", + "next": "Далее", + "getStarted": "Начать!", + "dontShowAgain": "Больше не показывать", + "goToSlide": "Перейти к слайду {number}", + "slides": { + "welcome": { + "title": "Добро пожаловать в ProxMenux Monitor!", + "description": "Ваш новый инструмент мониторинга Proxmox. Ознакомьтесь с функциями, которые упрощают управление вашей инфраструктурой и наблюдение за ней." + }, + "overview": { + "title": "Обзор системы", + "description": "Следите за сервером в реальном времени: процессор, память, температура, нагрузка на систему и многое другое — на одной наглядной панели." + }, + "storage": { + "title": "Управление хранилищами", + "description": "Просматривайте состояние дисков и хранилищ: ёмкость, использование, состояние по данным SMART, температуру и производительность каждого устройства." + }, + "network": { + "title": "Сетевые показатели", + "description": "Отслеживайте сетевой трафик в реальном времени: активные интерфейсы, скорость передачи данных и графики использования за прошлые периоды." + }, + "virtualMachines": { + "title": "Виртуальные машины и контейнеры", + "description": "Все виртуальные машины и контейнеры LXC — в одном месте. Просматривайте их состояние, выделенные ресурсы и текущее использование, а также пользуйтесь элементами быстрого управления." + }, + "hardware": { + "title": "Сведения об оборудовании", + "description": "Просматривайте сведения об оборудовании сервера: процессоре, оперативной памяти, графическом процессоре, дисках, сетевом оборудовании, ИБП и многом другом, включая модели, серийные номера и состояние." + }, + "logs": { + "title": "Системные журналы", + "description": "Просматривайте системные журналы, фильтруйте события, ищите конкретные ошибки и скачивайте отображаемые журналы для более глубокого анализа." + }, + "future": { + "title": "Готовы к будущему!", + "description": "ProxMenux Monitor готов к новым функциям и улучшениям: всё больше действий постепенно становится доступно в веб-панели." + } + } + }, + "releaseNotes": { + "dialogTitle": "Примечания к выпуску — версия {version}", + "title": "Что нового в версии {version}", + "intro": "Мы добавили новые функции и улучшения, чтобы сделать ProxMenux Monitor ещё лучше.", + "gotIt": "Понятно!", + "dontShowAgain": "Больше не показывать для этой версии", + "currentFeatures": { + "appDetection": "Более точное обнаружение приложений на вкладке «Приложение»: при холодном запуске Docker корректно определяется как родительская рабочая нагрузка (Portainer/SearXNG больше не появляются на короткое время как нативные приложения), предложения для незарегистрированных приложений хранятся в кэше запуска, а действие «Найти приложения» по запросу выполняет новое сканирование с использованием каталога.", + "dockerUpdates": "Вкладка «Обновления» теперь полностью охватывает Docker: отслеживание обновлений Docker Engine и отдельных образов выполняется по тому же скользящему 24-часовому циклу, что и для пакетов ОС. Действие «Проверить сейчас» позволяет сравнить дайджесты по запросу — больше не нужно ждать ежедневного сбора данных.", + "appCatalog": "Новый каталог обнаружения приложений с более чем 380 отслеживаемыми рабочими нагрузками формируется на основе актуальных данных community-scripts и использует семь методов обнаружения: файл, исполняемый файл, dpkg, apk, Python, Docker exec, Docker label. Основные и резервные механизмы обнаружения охватывают как новые, так и прежние структуры LXC.", + "pushover": "Pushover добавлен к Telegram, Gotify, Discord, электронной почте и Apprise в качестве встроенного канала уведомлений: ключ пользователя/API, выбор устройства и звука, приоритет 0 для обычных сообщений и необязательный приоритет 1 для событий уровня CRITICAL. Предложено @benginx (#308).", + "appsDashboard": "Новая панель «Приложения» верхнего уровня — единая точка доступа ко всем веб-ссылкам на узле. Приложения, зарегистрированные в LXC, и пользовательские веб-ссылки отображаются в общей сетке с метками категорий, поиском и прямыми ссылками для перехода к модальному окну гостевой системы одним щелчком.", + "lxcAppsUpdates": "Вкладка «Приложение» в каждом модальном окне LXC регистрирует установленные приложения, сохраняет веб-ссылки и отслеживает версии у разработчиков. Переработанная вкладка «Обновления» позволяет устанавливать обновления пакетов ОС и приложений одной кнопкой; отслеживание Docker Engine и отдельных образов выполняется по тому же 24-часовому циклу, а действие «Проверить сейчас» доступно по запросу.", + "multilingual": "Monitor теперь поддерживает 8 языков: английский, испанский, немецкий, французский, итальянский, португальский, шведский и словацкий. Огромная благодарность @vaso73 за создание инфраструктуры интернационализации, благодаря которой это стало возможно.", + "nvidiaMultiGpu": "Управление жизненным циклом драйвера NVIDIA теперь ведётся отдельно для каждого BDF, чтобы на хосте с несколькими GPU можно было передать одну видеокарту виртуальной машине, сохранив работоспособность другой на хосте или в контейнерах LXC. Также добавлен выбор версии с учётом ядра, ветки драйвера и GPU (#298).", + "aiCustomEndpoint": "Пользовательская конечная точка OpenAI для AI Assistant — при загрузке каталога моделей распознаются LiteLLM, LM Studio, LocalAI, vLLM, OmniRoute и любые самостоятельно размещённые прокси-серверы с частными IP-адресами, адресами обратной петли или в сетях Docker. В раскрывающемся списке ошибка сервера (или исходная причина сетевого сбоя) отображается непосредственно под кнопкой загрузки (#325, сообщил @jorgeffonte).", + "secureGatewayArch": "Мастер Secure Gateway — загрузка шаблона Alpine, выбор локального шаблона и pct create теперь учитывают фактическую архитектуру хоста: хосты x86_64 получают контейнеры amd64, а хосты arm64 — контейнеры arm64 (#324, сообщил @N0X4DD0).", + "atomicNotifications": "Для событий уведомлений отпечаток дедупликации атомарно резервируется до обработки ИИ и отправки по каналам, поэтому одновременно работающие сборщики, обработчики завершения или параллельные процессы Monitor не могут отправить одно и то же событие дважды. Если отправка не удалась ни по одному каналу, резервирование снимается, сохраняя возможность повторных попыток.", + "borgSshPort": "Удалённое назначение Borg — в диалоге добавления назначения Borg и текстовом интерфейсе оболочки можно указать нестандартный порт SSH. BORG_RSH, автоматическая установка ключа и проверка ёмкости учитывают этот порт. Сохранена полная обратная совместимость с существующими записями, созданными без явного указания порта (предложил @songochain в обсуждении #236).", + "githubToken": "Settings → GitHub API позволяет указать необязательный персональный токен доступа для проверки выпусков и тегов, когда лимит анонимных запросов исчерпан. Токен хранится в зашифрованном виде и никогда не передаётся обратно в браузер; сообщение об ошибке превышения лимита запросов переведено на все языки Monitor (по предложению @SystemIdleProcess в обсуждении #306).", + "replicationContext": "В уведомлениях о сбоях встроенной репликации Proxmox определяются идентификатор задания репликации, идентификатор затронутой виртуальной машины или LXC и имя гостевой системы; в качестве причины сохраняется точный блок ошибки Proxmox, а дедупликация выполняется независимо для каждого задания репликации (сообщил Ale R.).", + "auditAssessment": "Audit и отчёт — новая страница для документирования и оценки узла. Оценка выполняет набор проверок безопасности, резервного копирования, ёмкости, хранилищ, сети, оборудования, гостевых систем и системы в целом. Каждый результат относится к одной из категорий: критическая проблема, предупреждение, наблюдение или соответствие требованиям. При этом указываются фактически прочитанные данные, а не субъективная оценка.", + "changeJournal": "Журнал изменений — представление «Изменения» показывает, что именно ProxMenux изменил на этом хосте: каждый затронутый файл конфигурации, пакет и службу с их предыдущим состоянием. Повторяющиеся записи объединяются в представление текущего состояния хоста, а не в журнал всех запусков.", + "auditReports": "Отчёты — полный аудит и отдельные отчёты по проверке безопасности, надёжности резервного копирования, ёмкости и износу; каждый начинается со сводки состояния по своей теме. Также доступна инвентаризационная ведомость для печати. Все отчёты можно экспортировать в PDF. При оценке безопасности перед запуском Lynis запрашивается подтверждение, чтобы проверка оставалась быстрой.", + "auditPolicyBaseline": "Политика и базовое состояние — задайте ожидаемое состояние хоста (требования к резервному копированию, межсетевому экрану, входу root по SSH), чтобы результаты оценивались относительно этих требований. Отметьте запуск как эталонный и просматривайте последующие изменения, при этом новые, устранённые и принятые результаты отображаются отдельно.", + "groupedAppUpdates": "Сгруппированные уведомления об обновлениях приложений — одно полное сообщение на каждое сканирование вместо отдельных сообщений для каждого приложения, с группировкой по LXC и указанием установленных и доступных версий.", + "adminTokenScope": "Область административных полномочий — для открытия терминала Monitor и отключения аутентификации теперь требуется токен с полными правами администратора. Поэтому токен API с доступом только для чтения, выданный интеграции мониторинга, сохраняет доступ только для чтения (сообщил @f3rs3n).", + "ociAppTab": "Контейнеры OCI на вкладке «Приложение» — контейнер, установленный через раздел «Приложения» менеджера OCI, распознаётся по записи об установке: отображаются приложение и его образ, новый образ, обнаруженный по дайджесту, и ссылка на репозиторий образа.", + "ociUpdatesTab": "Обновления контейнеров OCI — действия «Обновить» и «Изменить» открывают тот же процесс, что и меню OCI. Резервную копию, созданную перед обновлением, можно сохранить в хранилище резервных копий, а образ можно обновлять по расписанию.", + "ociLogsTab": "Вкладка «Журналы» для контейнеров OCI — консольный вывод приложения хранится на хосте и отображается в реальном времени; доступны фильтрация и скачивание. Консоль Proxmox для этих контейнеров открывает командную оболочку.", + "appsUpdateShortcut": "Значок обновления на странице «Приложения» открывает контейнер сразу на вкладке «Обновления».", + "webhookHttps": "Уведомления Proxmox поступают в Monitor при включённом HTTPS — они доставляются на адрес, доступный только локально, и больше не отклоняются из-за ошибки сертификата.", + "persistentLogs": "Завершившийся всплеск ошибок в журнале больше не считается постоянной проблемой: повторяющиеся сообщения должны продолжать появляться в течение 15 минут, а предупреждение снимается автоматически (сообщил @Joshua1264).", + "mountsLanAddress": "Для точек монтирования на LVM-thin и других блочных хранилищах отображается использование пространства, а приложения из нескольких контейнеров открываются по своему адресу в локальной сети.", + "ociManager": "OCI manager Apps (предварительная версия технологии) — новый пункт меню ProxMenux устанавливает приложения из их официальных образов контейнеров в виде нативных LXC Proxmox без Docker engine. В каталоге более 360 приложений.", + "ociInMonitor": "Приложения OCI в Monitor — вкладка «Приложение» распознаёт их, вкладка «Обновления» обновляет и изменяет их так же, как меню, а вкладка «Журналы» показывает вывод консоли приложения в реальном времени.", + "ociAcceleration": "Аппаратное ускорение для приложений OCI — установщик предлагает только профили, поддерживаемые хостом: графические процессоры NVIDIA, Intel и AMD, а для Frigate — Intel NPU или Coral. NVIDIA Container Toolkit устанавливается вместе с драйвером.", + "ociRecovery": "Приложение OCI переносится вместе со своей резервной копией — после восстановления на этом или другом хосте оно снова регистрируется и становится доступным для управления, а в кластере запускается на любом узле, на который его переносят.", + "ociWatchdog": "Сторожевой механизм для приложений OCI — если приложение останавливается само, оно запускается снова, о чём отправляется уведомление. Оно не перезапускается, если его остановил пользователь, а также во время резервного копирования или миграции.", + "shareCoveX": "ShareCoveX пополняет каталог — файловый сервер с веб-панелью, предоставляющий общий доступ к каталогам хоста или томам контейнеров через SMB, NFS и Time Machine.", + "guestBackupJobs": "Задания резервного копирования ВМ и LXC — вкладка «Резервное копирование» показывает запланированные задания Proxmox и позволяет создавать, изменять, включать и запускать их; это те же задания, что и в Datacenter → Backup (вклад @MattiaC46).", + "notificationLanguage": "Уведомления на вашем языке — заголовки, тексты и ежедневные сводки формируются на языке, выбранном для уведомлений (вклад @Vaso73).", + "auditReviewDate": "Audit и отчёт — для замечания, принятого к сведению, можно задать дату повторного рассмотрения, когда оно снова появится без отмены принятого решения, а сравнение показывает, ухудшилась ли ситуация, улучшилась или осталась прежней (совместно с @Vaso73).", + "ociCatalog": "OCI manager Apps (предварительная версия технологии) — новый пункт меню ProxMenux устанавливает приложения из их официальных образов контейнеров в виде нативных LXC Proxmox без Docker engine. В каталоге 514 приложений.", + "pbsSupport": "ProxMenux на Proxmox Backup Server — устанавливается той же командой и открывает собственное меню с настройкой после установки и Monitor, который показывает состояние сервера, хранилища данных и задачи (вклад @jcastro).", + "menuSearch": "Поиск в главном меню — по полному названию или его части можно найти пункт ProxMenux, приложение OCI или Helper-Script и открыть его начальный экран.", + "composeStacks": "Файлы Compose с несколькими сервисами — пункт «Пользовательский образ» устанавливает по одному LXC на каждый сервис в частной сети с запуском в порядке зависимостей. Обновление, резервное копирование и удаление применяются ко всему приложению.", + "keepProxmoxChanges": "Обновления OCI сохраняют изменения, внесённые в Proxmox, — переменные, команда запуска, сетевые параметры, DNS, функции, размеры дисков и строки lxc.* остаются в пересозданном контейнере, в том числе при обновлениях по расписанию и для каждого компонента стека.", + "ociVlan": "Тег VLAN для приложений OCI — при расширенной установке он запрашивается вместе с адресом, а пункт «Изменить» позволяет изменить его для отдельного приложения. Хосту не нужен доступ к этой VLAN.", + "ociNewApps": "Новое в каталоге OCI — Authentik, TeslaMate, Zigbee2MQTT, Scanopy, Umami, Scrypted, NetAlertX и ещё десять приложений, а Ollama и llama.cpp работают на встроенных графических процессорах Intel и AMD.", + "hostUpdateJob": "Обновления Proxmox продолжаются после выхода из системы — обновление выполняется как задание на сервере, а при повторном входе снова открывается его экран. После установки нового ядра отображается необходимость перезагрузки и кнопка перезагрузки, которая сначала проверяет хост.", + "storageDetails": "Сведения о хранилище — для пулов ZFS отображаются их структура, состояние проверки целостности и исправность устройств, а для каждого диска — контроллер хранения, к которому он подключён; эта информация также доступна на странице «Оборудование». В раздел «Настройки» добавлены пороговые значения для дисков ВМ.", + "log2ramV2": "Log2RAM 2.0 — системный журнал и журналы задач Proxmox сохраняются на диске вместе с историей, а в оперативную память помещаются только постоянно изменяющиеся журналы. На хостах, где Log2RAM уже установлен, обновление до этой версии выполняется с помощью ProxMenux." + } + }, + "network": { + "actions": { + "viewDetails": "Подробнее" + }, + "loading": { + "title": "Загрузка сетевых данных...", + "description": "Сканирование интерфейсов, мостов и трафика" + }, + "errors": { + "serverUnavailableTitle": "Сервер недоступен", + "serverUnavailableDescription": "Не удалось подключиться к серверу мониторинга. Убедитесь, что служба запущена, и повторите попытку." + }, + "cards": { + "traffic": "Сетевой трафик", + "activeInterfaces": "Активные интерфейсы", + "status": "Состояние сети", + "latency": "Сетевая задержка" + }, + "sections": { + "physicalInterfaces": "Физические интерфейсы", + "bridgeInterfaces": "Мостовые интерфейсы", + "vmLxcInterfaces": "Сетевые интерфейсы ВМ и LXC" + }, + "summary": { + "totalInterfaces": "Всего интерфейсов: {count}", + "activeCount": "Активно: {active}/{total}" + }, + "status": { + "healthy": "В норме", + "warning": "Предупреждение", + "critical": "Критическое состояние", + "up": "Работает", + "down": "Не работает" + }, + "duplex": { + "full": "Полный дуплекс", + "half": "Полудуплекс" + }, + "interfaceTypes": { + "physical": "Физические", + "bridge": "Мост", + "bridges": "Мосты", + "bond": "Агрегированный интерфейс", + "vlan": "VLAN", + "virtual": "Виртуальные", + "other": "Прочее" + }, + "labels": { + "activeSlave": "Активный подчинённый интерфейс", + "average": "Среднее", + "avg": "Сред.", + "bitsReceived": "Получено бит", + "bitsSent": "Отправлено бит", + "bondingMode": "Режим агрегации", + "bondMembers": "Интерфейсы в составе агрегированного интерфейса", + "bytesReceived": "Получено байт", + "bytesSent": "Отправлено байт", + "current": "Текущая", + "domain": "Домен", + "down": "Не работает", + "drops": "Отброшенные пакеты", + "dropsIn": "Отброшенные входящие пакеты", + "dropsOut": "Отброшенные исходящие пакеты", + "duplex": "Дуплекс", + "errors": "Ошибки", + "errorsIn": "Ошибки приёма", + "errorsOut": "Ошибки передачи", + "hostname": "Имя хоста", + "interfaceName": "Имя интерфейса", + "ipAddress": "IP-адрес", + "latency": "Задержка", + "macAddress": "MAC-адрес", + "max": "Макс.", + "maximum": "Максимум", + "maxSpeed": "макс. {speed}", + "min": "Мин.", + "minimum": "Минимум", + "netmask": "Маска подсети", + "packetLoss": "Потери пакетов", + "packetLossShort": "Потери пак.", + "packetsReceived": "Получено пакетов", + "packetsSent": "Отправлено пакетов", + "physicalInterface": "Физический интерфейс", + "primarySlave": "Основной подчинённый интерфейс", + "received": "Получено", + "sent": "Отправлено", + "slaveInterfaces": "Подчинённые интерфейсы", + "speed": "Скорость", + "status": "Статус", + "time": "Время", + "type": "Тип", + "up": "Работает", + "virtualMemberInterfaces": "Виртуальные интерфейсы-участники", + "vmLxcName": "Имя ВМ/LXC" + }, + "roles": { + "active": "активно", + "standby": "резервный", + "down": "неактивен" + }, + "empty": { + "noVmLxc": "Нет ВМ/LXC", + "noVirtualMembers": "Нет виртуальных участников" + }, + "timeframes": { + "hour": "1 час", + "day": "24 часа", + "week": "7 дней", + "month": "30 дней", + "year": "1 год", + "short": { + "hour": "За последний час", + "day": "За последние 24 ч", + "week": "За последние 7 дн.", + "month": "За последние 30 дн.", + "year": "За последний год" + }, + "last": { + "hour": "За последний час", + "day": "За последние 24 часа", + "week": "За последние 7 дней", + "month": "За последние 30 дней", + "year": "За последний год" + } + }, + "interfaceDetails": { + "title": "Сведения об интерфейсе", + "description": "Просмотр подробных сведений и статистики сетевого трафика для этого интерфейса", + "basicInformation": "Основные сведения", + "ipAddresses": "IP-адреса", + "trafficStatistics": "Статистика сетевого трафика ({timeframe})", + "trafficSinceBoot": "Трафик с момента последней загрузки", + "inactiveTitle": "Интерфейс неактивен", + "inactiveDescription": "Этот интерфейс сейчас неактивен. Статистика сетевого трафика недоступна.", + "bondConfiguration": "Конфигурация объединения интерфейсов", + "bridgeConfiguration": "Конфигурация сетевого моста" + }, + "flow": { + "title": "Поток сетевого трафика" + }, + "chart": { + "invalidDataFormat": "От сервера получены данные в неверном формате", + "loadError": "Ошибка загрузки метрик" + }, + "latency": { + "status": { + "excellent": "Отлично", + "good": "Хорошо", + "fair": "Удовлетворительно", + "poor": "Плохо" + }, + "timeframes": { + "hour": "1 час", + "sixHours": "6 часов", + "day": "24 часа", + "threeDays": "3 дня", + "week": "7 дней" + }, + "targets": { + "gateway": "Шлюз (маршрутизатор)", + "gatewayShort": "Шлюз", + "cloudflare": "Cloudflare (1.1.1.1)", + "cloudflareShort": "Cloudflare", + "google": "Google DNS (8.8.8.8)", + "googleShort": "Google DNS" + }, + "actions": { + "stop": "Остановка", + "testAgain": "Повторить тест", + "report": "Отчёт" + }, + "testingProgress": "Тестирование... {percent}%", + "secondsRemaining": "Осталось секунд: {seconds}", + "samplesCollected": "Собрано измерений: {count}", + "packetLossValue": "Потеря пакетов: {value}%", + "collectingData": "Сбор данных...", + "noRealtimeData": "Данных пока нет. Нажмите «Повторить тест», чтобы начать.", + "noDataForPeriod": "Нет данных о задержке за этот период", + "collectionInterval": "Данные собираются каждые 60 секунд", + "realTimeMode": "Режим реального времени", + "realTimeModeDescription": "Тест длится 2 минуты, измерения выполняются каждые 5 секунд. После завершения запустите тест ещё раз, чтобы добавить новые измерения. Все данные включаются в отчёт.", + "report": { + "title": "Отчёт о сетевой задержке", + "subtitle": "ProxMenux Monitor — анализ производительности сети", + "topBarTitle": "ProxMenux — отчёт о сетевой задержке", + "topBarSubtitle": "Просмотрите отчёт, затем распечатайте его или сохраните в формате PDF", + "printSavePdf": "Печать / Сохранить как PDF", + "date": "Дата", + "target": "Целевой узел", + "mode": "Режим", + "realTimeTest": "Тест в реальном времени", + "historicalAnalysis": "Анализ исторических данных", + "realTime": "В реальном времени", + "executiveSummary": "Краткое заключение", + "assessmentTitle": "Оценка сетевой задержки", + "realtimeSummary": "Тест задержки до {target} в реальном времени. Количество измерений: {count}; длительность: {duration}. Средняя задержка: {avg}.", + "historicalSummary": "Анализ исторических данных о задержке до {target} за период {timeframe}. Проанализировано измерений: {count}. Средняя задержка: {avg} мс.", + "minutes": "{count} мин", + "minutesShort": "{count} мин", + "seconds": "{count} с", + "secondsShort": "{count} с", + "testPeriod": "период тестирования", + "averagePacketLoss": "Средняя потеря пакетов: {value}%.", + "noPacketLoss": "Потерь пакетов не обнаружено.", + "defaultGateway": "Шлюз по умолчанию", + "failed": "Сбой", + "notEnoughData": "Недостаточно точек данных для построения графика", + "samples": "Количество измерений: {count}", + "latencyStatistics": "Статистика задержки", + "sampleCount": "Количество измерений", + "packetLossAvg": "Потеря пакетов (в среднем)", + "testPeriodLabel": "Период тестирования", + "latencyGraph": "График задержки", + "performanceThresholds": "Пороговые значения производительности", + "thresholdExcellent": "Оптимально для приложений реального времени, игр и видеозвонков.", + "thresholdGood": "Приемлемо для большинства приложений с минимальным влиянием на их работу.", + "thresholdFair": "Заметная задержка. Может влиять на VoIP и интерактивные приложения.", + "thresholdPoor": "Значительная задержка. Рекомендуется выяснить причину.", + "detailedTestResults": "Подробные результаты тестирования", + "latencyHistory": "История задержки (последние {count} записей)", + "methodology": "Методика", + "testMethod": "Метод тестирования", + "icmpEchoRequest": "Эхо-запрос ICMP (Ping)", + "samplesPerTest": "Количество измерений в одном тесте", + "threeConsecutivePings": "3 последовательных эхо-запроса", + "targetIp": "Целевой IP-адрес", + "performanceAssessment": "Оценка производительности", + "assessmentExcellent": "Отличные показатели сетевой задержки. Никаких действий не требуется.", + "assessmentGood": "Сетевая задержка находится в допустимых пределах.", + "assessmentFair": "Сетевая задержка повышена. Рекомендуется проверить, нет ли перегрузки сети или проблем с маршрутизацией.", + "assessmentPoor": "Сетевая задержка критически высока. Рекомендуется немедленно выяснить причину.", + "assessmentUnknown": "Не удалось определить состояние сети.", + "footerTitle": "ProxMenux Monitor — отчёт о производительности сети", + "generated": "Сформировано", + "reportId": "Идентификатор отчёта" + } + } + }, + "hardware": { + "loading": { + "title": "Загрузка данных об оборудовании...", + "description": "Обнаружение процессоров, графических процессоров, накопителей и устройств PCI", + "realtimeData": "Загрузка данных в реальном времени..." + }, + "sections": { + "systemInformation": "Информация о системе", + "motherboard": "Материнская плата", + "memoryModules": "Модули памяти", + "thermalMonitoring": "Мониторинг температуры", + "otherSensors": "Прочее", + "graphicsCards": "Видеокарты", + "basicInformation": "Основные сведения", + "coralTpu": "Coral TPU / Ускорители ИИ", + "powerConsumption": "Энергопотребление", + "powerSupplies": "Блоки питания", + "systemFans": "Системные вентиляторы", + "upsStatus": "Состояние ИБП", + "statusOverview": "Обзор состояния", + "batteryInformation": "Информация об аккумуляторе", + "powerInformation": "Информация об электропитании", + "deviceInformation": "Информация об устройстве", + "pciDevices": "Устройства PCI", + "networkSummary": "Сводка по сети", + "storageSummary": "Сводка по хранилищам", + "interfaceInformation": "Информация об интерфейсе", + "usbDevices": "Устройства USB" + }, + "counts": { + "installed": "Установлено: {count}", + "sensors": "Датчики: {count}", + "gpu": "GPU: {count}", + "devices": "Устройства: {count}", + "psus": "Блоки питания: {count}", + "fans": "Вентиляторы: {count}", + "ups": "ИБП: {count}", + "interfaces": "Интерфейсы: {count}" + }, + "labels": { + "model": "Модель", + "cores": "Ядра", + "threads": "Потоки", + "l3Cache": "Кэш L3", + "virtualization": "Виртуализация", + "manufacturer": "Производитель", + "version": "Версия", + "date": "Дата", + "size": "Размер", + "type": "Тип", + "speed": "Скорость", + "vendor": "Производитель", + "pciSlot": "Слот PCI", + "driver": "Драйвер", + "storageController": "Контроллер хранения", + "attachedDisks": "Подключённые диски", + "kernelModule": "Модуль ядра", + "kernelDriver": "Драйвер ядра", + "kernelModules": "Модули ядра", + "lastChecked": "Последняя проверка", + "switchMode": "Режим переключения", + "currentDriver": "Текущий драйвер", + "consumer": "Потребитель", + "graphicsClock": "Тактовая частота графического процессора", + "memoryClock": "Тактовая частота памяти", + "powerDraw": "Потребляемая мощность", + "temperature": "Температура", + "memory": "Память", + "total": "Всего", + "used": "Использовано", + "free": "Свободно", + "memoryUtilization": "Использование памяти", + "connection": "Подключение", + "formFactor": "Форм-фактор", + "link": "Канал связи", + "busDevice": "Шина / устройство", + "vendorProductId": "ID производителя / продукта", + "deviceNodes": "Узлы устройств", + "runtimeState": "Состояние во время работы", + "edgeTpuRuntime": "Среда выполнения Edge TPU", + "thresholds": "Пороговые значения", + "hardwareWarnings": "Предупреждения об оборудовании", + "currentDraw": "Потребляемый ток", + "currentOutput": "Выходной ток", + "remote": "Удалённое", + "batteryCharge": "Заряд батареи", + "load": "Нагрузка", + "runtime": "Время автономной работы", + "inputVoltage": "Входное напряжение", + "status": "Статус", + "host": "Хост", + "chargeLevel": "Уровень заряда", + "runtimeRemaining": "Оставшееся время автономной работы", + "batteryVoltage": "Напряжение батареи", + "batteryDate": "Дата батареи", + "outputVoltage": "Выходное напряжение", + "inputFrequency": "Входная частота", + "outputFrequency": "Выходная частота", + "realPower": "Активная мощность", + "apparentPower": "Полная мощность", + "serialNumber": "Серийный номер", + "firmware": "Прошивка", + "deviceType": "Тип устройства", + "deviceName": "Имя устройства", + "productName": "Название продукта", + "class": "Класс", + "capacity": "Ёмкость", + "currentLinkSpeed": "Текущая скорость соединения", + "maximumLinkSpeed": "Максимальная скорость соединения", + "pcieLinkSpeed": "Скорость соединения PCIe", + "sataVersion": "Версия SATA", + "sasVersion": "Версия SAS", + "sasSpeed": "Скорость SAS", + "linkSpeed": "Скорость соединения", + "family": "Семейство", + "interface": "Интерфейс", + "rotationRate": "Скорость вращения", + "classCode": "Код класса", + "serial": "Серийный номер" + }, + "values": { + "cores": "{count} ядра", + "max": "(макс.: {value})", + "never": "никогда", + "nvidiaDriverAvailable": "Доступен драйвер NVIDIA версии {version}", + "reinstallViaPostInstall": "Переустановите через раздел послеустановочной настройки ProxMenux: {label}", + "noUpdatesAvailable": "Нет доступных обновлений", + "none": "нет", + "running": "работают", + "stopped": "остановлены", + "unused": "не используется", + "unbound": "не привязано", + "driversReady": "Драйверы готовы", + "driversNotInstalled": "Драйверы не установлены", + "programmed": "Запрограммировано (среда выполнения загружена)", + "unprogrammed": "Не запрограммировано (среда выполнения не загружена)", + "notInstalled": "не установлено", + "detecting": "Определение...", + "solidStateDevice": "Твердотельный накопитель", + "notSpecified": "Не указано" + }, + "time": { + "yesterdayAt": "вчера {time}" + }, + "recommendations": { + "intel": "Для получения расширенных данных мониторинга GPU установите пакет intel-gpu-tools или igt-gpu-tools.", + "nvidia": "Для мониторинга GPU NVIDIA в реальном времени требуются проприетарные драйверы (пакет nvidia-driver). Устанавливайте их только в том случае, если ваш GPU используется непосредственно хостом.", + "amd": "Для получения расширенных данных мониторинга GPU AMD установите amdgpu_top. Скачать можно по адресу: https://github.com/Umio-Yasuno/amdgpu_top", + "generic": "Для получения расширенных данных мониторинга GPU установите инструменты мониторинга GPU, подходящие для вашего оборудования." + }, + "deviceTypes": { + "graphics": "Графика", + "graphicsCard": "Видеокарта", + "usb": "USB", + "usbController": "Контроллер USB", + "audio": "Аудио", + "audioController": "Аудиоконтроллер", + "network": "Сеть", + "networkController": "Сетевой контроллер", + "ethernet": "Ethernet", + "wireless": "Wi-Fi", + "wirelessController": "Контроллер беспроводной связи", + "wifi": "Wi-Fi", + "storage": "Хранилище", + "storageController": "Контроллер хранения", + "hid": "HID", + "vendorSpecific": "Специфичное для производителя", + "communications": "Связь", + "integrated": "Встроенный", + "discrete": "Дискретный" + }, + "gpu": { + "monitoringTitle": "Мониторинг GPU в реальном времени", + "sriovVirtualFunction": "Виртуальная функция SR-IOV", + "sriovVirtualFunctionDescription": "Это устройство — виртуальная функция, созданная физической функцией. Ядро не предоставляет телеметрию отдельных VF (температуру, загрузку, использование памяти) — откройте родительскую PF, чтобы увидеть совокупные показатели GPU.", + "virtualFunctionDetail": "Сведения о виртуальной функции", + "parentPhysicalFunction": "Родительская физическая функция", + "sriovActive": "SR-IOV активен", + "sriovMetricsDescription": "Приведённые ниже показатели относятся к физической функции (суммарно по {count} VF).", + "updatingEverySeconds": "Интервал обновления: {seconds} с", + "realTimeMetrics": "Показатели в реальном времени", + "engineUtilizationTotal": "Загрузка движков (суммарная)", + "engineUtilization": "Загрузка движков", + "activeProcesses": "Активные процессы ({count})", + "noActiveProcesses": "Нет активных процессов, использующих GPU", + "virtualFunctions": "Виртуальные функции", + "switchModeVmTitle": "GPU в ВМ в режиме переключения", + "switchModeVmDescription": "Этот GPU передан виртуальной машине через механизм проброса VFIO. Мониторинг в реальном времени с хоста недоступен, поскольку GPU управляется виртуальной машиной.", + "extendedMonitoringUnavailable": "Расширенный мониторинг недоступен" + }, + "gpuSwitch": { + "gpu": "GPU", + "lxc": "LXC", + "vm": "VM", + "sriov": "SR-IOV", + "sriovVf": "SR-IOV VF", + "sriovCount": "SR-IOV ×{count}", + "sriovActive": "SR-IOV активен", + "readyForLxc": "Готово для контейнеров LXC", + "readyForVm": "Готово для проброса в ВМ", + "modeUnknown": "Режим неизвестен", + "virtualFunctionsExternal": "Виртуальные функции управляются внешними средствами", + "nativeDriverActive": "Штатный драйвер активен", + "vfioDriverActive": "Драйвер VFIO-PCI активен", + "noDriverDetected": "Драйвер не обнаружен", + "virtualFunction": "Виртуальная функция", + "virtualFunctionWithParent": "Виртуальная функция · родительская PF {parent}", + "physicalFunction": "1 PF + {count} VF", + "physicalFunctionWithMax": "1 PF + {count} VF / максимум {max}", + "changePending": "Ожидание применения изменения..." + }, + "actions": { + "installNvidiaDrivers": "Установить драйверы NVIDIA", + "installAmdGpuTools": "Установить инструменты для GPU AMD", + "installIntelGpuTools": "Установить инструменты для GPU Intel", + "installCoralDrivers": "Установить драйверы TPU Coral", + "installDrivers": "Установить драйверы" + }, + "coral": { + "driversNeededDescription": "Для одного или нескольких обнаруженных устройств Coral требуются драйверы. После установки необходима перезагрузка сервера.", + "deviceInformation": "Информация об устройстве TPU Coral" + }, + "ups": { + "detailedInformation": "Подробная информация об ИБП" + }, + "pci": { + "deviceInformation": "Информация об устройстве PCI" + }, + "network": { + "interfaceInformation": "Сведения о сетевом интерфейсе" + }, + "storage": { + "deviceHardwareInformation": "Сведения об оборудовании устройства хранения данных" + }, + "usb": { + "deviceInformation": "Сведения о USB-устройстве" + }, + "scripts": { + "nvidiaTitle": "Установка драйвера NVIDIA", + "nvidiaDescription": "Установка проприетарных драйверов NVIDIA для мониторинга GPU...", + "amdTitle": "Установка инструментов для GPU AMD", + "amdDescription": "Установка amdgpu_top для мониторинга GPU AMD...", + "intelTitle": "Установка инструментов для GPU Intel", + "intelDescription": "Установка intel-gpu-tools для мониторинга GPU Intel...", + "coralTitle": "Установка драйвера TPU Coral", + "coralDescription": "Установка модулей ядра gasket + apex и среды выполнения Edge TPU...", + "switchModeTitle": "Переключение режима GPU → {mode}", + "switchModeDescription": "Переключение GPU {slot} в режим {mode}...", + "switchModeVm": "ВМ (проброс через VFIO)", + "switchModeLxc": "LXC (нативный драйвер)" + } + }, + "backup": { + "storageRetention": { + "useDefault": "Использовать настройку Proxmox по умолчанию (без политики для этого хранилища)", + "title": "Политика хранения резервных копий в хранилище", + "keepAll": "Сохранять все резервные копии", + "description": "Политика хранения резервных копий по умолчанию, сохранённая в Proxmox. Задания резервного копирования с явно заданной политикой используют её вместо политики по умолчанию.", + "refresh": "Обновить", + "saved": "Политика хранения резервных копий в хранилище сохранена. Удаление устаревших резервных копий не выполнялось.", + "choosePolicy": "Выберите «Сохранять все резервные копии» или укажите хотя бы одно положительное значение количества сохраняемых копий.", + "saveFailed": "Не удалось сохранить политику хранения резервных копий в хранилище. Обновите список, если конфигурация изменилась.", + "loadFailed": "Не удалось загрузить политику хранения резервных копий в хранилище.", + "empty": "Хранилища резервных копий не найдены.", + "default": "По умолчанию в Proxmox", + "edit": "Изменить", + "editTitle": "Политика хранения для {storage}", + "effect": "Применяется к будущим запускам резервного копирования, которые наследуют политику этого хранилища. Сохранение не удаляет существующие резервные копии. Защищённые резервные копии остаются защищёнными.", + "cancel": "Отмена", + "save": "Сохранить политику хранения" + }, + "actions": { + "addAnother": "Добавить ещё", + "addPath": "Добавить путь", + "all": "Все", + "apply": "Применить", + "back": "Назад", + "change": "Изменить", + "clear": "Очистить", + "delete": "Удалить", + "disable": "Отключить", + "download": "Скачать", + "edit": "Изменить", + "enable": "Включить", + "format": "Форматировать", + "generateKey": "Создать ключ", + "prepareSshKey": "Подготовить ключ", + "import": "Импорт", + "importKeyfile": "Импортировать файл ключа", + "mount": "Смонтировать", + "next": "Далее", + "recoverKeyfile": "Восстановить файл ключа", + "regenerate": "Создать заново", + "restore": "Восстановление", + "restoreSelected": "Восстановить выбранное", + "runNow": "Запустить сейчас", + "saveChanges": "Сохранить изменения", + "unmount": "Размонтировать", + "upload": "Загрузить", + "use": "Использовать", + "viewContents": "Просмотреть содержимое" + }, + "archives": { + "archive": "Архив", + "at": "в", + "backup": "Резервная копия", + "backupTimeLabel": "Время резервного копирования", + "deleteBackendTitle": "Удалить эту резервную копию", + "deleteBorgDescription": "Это удалит архив Borg из репозитория.", + "deleteBorgTitle": "Удалить архив Borg", + "deleteLocalDescription": "Это удалит локальный архив резервной копии с диска.", + "deleteLocalTitle": "Удалить локальный архив", + "deletePbsDescription": "Это удалит снимок PBS из хранилища данных.", + "deletePbsTitle": "Удалить снимок PBS", + "companionFile": "сопутствующий файл", + "descriptionAfter": "", + "descriptionBefore": "Просмотр и восстановление резервных копий из", + "downloadTitle": "Скачать эту резервную копию", + "emptyAfter": "резервных копий пока нет.", + "emptyBefore": "Нет", + "emptyMessage": "Архивы резервных копий не найдены.", + "hiddenOtherNodes": "Не показаны резервные копии других узлов: {count}.", + "scopeAllNodes": "Все узлы", + "scopeAriaLabel": "Отображаемые резервные копии", + "scopeShowAll": "Показать все", + "scopeThisNode": "Этот узел", + "encrypted": "Зашифровано", + "encryptedTitle": "Эта резервная копия зашифрована", + "formerJob": "Прежнее задание", + "formerJobTitle": "Задание, создавшее эту резервную копию, больше не существует на этом узле. Резервная копия сохраняется до её удаления.", + "filesInBackup": "Файлы в резервной копии", + "group": "Группа", + "host": "Хост", + "importKeyToDownloadTitle": "Перед скачиванием импортируйте соответствующий файл ключа", + "importKeyToRestoreTitle": "Перед восстановлением импортируйте соответствующий файл ключа", + "importKeyToViewTitle": "Перед просмотром содержимого импортируйте соответствующий файл ключа", + "inspectTitle": "Просмотреть резервную копию", + "job": "Задание", + "loadFailed": "Не удалось загрузить резервные копии", + "packedSizeLabel": "Размер в сжатом виде", + "remoteQueryWarning": "Запрос сведений об удалённых резервных копиях может занять некоторое время.", + "restoreTitle": "Восстановить из этой резервной копии", + "startingExport": "Подготовка к скачиванию...", + "title": "Резервные копии", + "viewContentsTitle": "Просмотреть содержимое резервной копии" + }, + "backends": { + "borgDescription": "Репозиторий Borg для резервных копий хоста с дедупликацией.", + "borgDescriptionTimerOnly": "Места назначения Borg используются таймерами Monitor, а не заданиями vzdump в PVE.", + "borgShortDescription": "Репозиторий Borg с дедупликацией", + "local": "Локальное", + "localDescription": "Папка на этом хосте или на смонтированном USB-накопителе.", + "localShortDescription": "Локальная папка или смонтированный диск", + "pbsDescription": "Хранилище данных Proxmox Backup Server.", + "pbsShortDescription": "Proxmox Backup Server" + }, + "common": { + "checking": "Проверка...", + "loading": "Загрузка...", + "no": "Нет", + "or": "или", + "yes": "Да" + }, + "configuration": { + "title": "Настройки резервного копирования" + }, + "contents": { + "driversToReinstall": "Драйверы для переустановки", + "extracting": "Извлечение и анализ снимка — для больших резервных копий это может занять около минуты...", + "filesShowing": "Показано {shown} из {filtered}{filteredLabel}{total}", + "filesTitle": "Файлы ({count}{plus})", + "filesTruncated": " · список ограничен 5000 элементами — откройте снимок вручную, чтобы увидеть остальные", + "filtered": " с учётом фильтра", + "manifest": "Манифест", + "manifestMissingBefore": "Эта резервная копия не содержит manifest.json. Перечисленные ниже файлы метаданных содержат аналогичную информацию:", + "metadataFiles": "Файлы метаданных", + "network": "Сеть", + "noDrivers": "Нет драйверов для переустановки.", + "noManifest": "В этом архиве нет манифеста.", + "noNetworkChanges": "Изменения сетевых интерфейсов не запланированы.", + "noStorageEntries": "Нет сведений о записях хранилищ.", + "restorePlan": "План восстановления", + "restorePlanUnavailable": "План восстановления недоступен: {error}", + "rollbackPlan": "План отката", + "storage": "Хранилище", + "title": "Содержимое резервной копии", + "totalFiles": " (всего {count})" + }, + "deleteJob": { + "attachedToStorage": "Привязано к хранилищу PVE", + "attachedWarning": "Это задание привязано к хуку хранилища PVE. При удалении задания хук Monitor также будет удалён из этого хранилища.", + "description": "Таймер и метаданные Monitor для этого задания будут удалены.", + "timerWarning": "Таймер systemd будет удалён. Уже созданные резервные копии останутся в месте назначения.", + "title": "Удалить задание резервного копирования" + }, + "destinations": { + "absolutePathHelp": "Укажите абсолютный путь на этом узле.", + "addBorgRepository": "Добавить репозиторий Borg", + "addDestinationTitle": "Добавить место назначения {type}", + "addLocalDestinationTitle": "Добавить локальное место назначения", + "addPbsRepository": "Добавить репозиторий PBS", + "appendAuthorizedKeyBefore": "Добавьте сгенерированный открытый ключ в конец файла", + "backupsKeptBefore": "Существующие резервные копии остаются в", + "backupsKeptMessage": "Существующие архивы резервных копий не удаляются.", + "borgEncryptionInherited": "Шифрование Borg определяется настройками репозитория.", + "builtIn": "Встроенный", + "builtInDefault": "Встроенное назначение по умолчанию", + "capacityUnavailable": "Данные о ёмкости недоступны", + "configureDescription": "Выберите, где хранить резервные копии хоста.", + "configureDestination": "Настроить назначение", + "createsSshKeyAfter": "при сохранении.", + "createsSshKeyBefore": "Monitor создаёт ключ SSH по пути", + "datacenterStorage": "Datacenter → Backup", + "defaultUserBefore": "Пользователь по умолчанию:", + "editDestinationTitle": "Изменить назначение {type}", + "editLocalDestinationTitle": "Изменить локальное назначение", + "editTitle": "Изменить назначение", + "fingerprintHelp": "Необязательная проверка отпечатка сервера.", + "generateNewSshKey": "Создать новый ключ SSH", + "jobsWillBeDeleted": "Также будут удалены задания, использующие это назначение: {count}.", + "kept": "сохранено", + "leavePassphraseBlank": "Оставьте поле пустым, чтобы сохранить ранее заданную парольную фразу.", + "leavePasswordBlank": "Оставьте поле пустым, чтобы сохранить ранее заданный пароль.", + "localAttachHelpBefore": "Используйте локальный путь к смонтированному носителю. USB-накопители сначала смонтируйте в разделе", + "localAttachHelpMessage": "Сначала смонтируйте USB-накопители. Оставьте поле пустым, чтобы использовать путь к хранилищу PVE + /dump (запасной вариант: /var/lib/vz/dump).", + "localAttachHelpMiddle": "USB-накопители", + "localManualPickHelp": "Выберите локальный путь для сохранения разовой резервной копии.", + "localPathHelpAfter": "или другой путь к смонтированному носителю.", + "localPathHelpBefore": "Пример:", + "localPickHelpBefore": "Выберите локальную папку или путь к смонтированному USB-накопителю.", + "localUsb": "Локальное / USB", + "localUsbDescription": "Папка на этом хосте или подключённом USB-накопителе.", + "managedByPve": "Под управлением PVE", + "manuallyAdded": "Добавлено вручную", + "nameCredentialsLocked": "Имя и учётные данные нельзя изменить, пока задания используют это место назначения.", + "namePassphraseLocked": "Имя репозитория и парольную фразу нельзя изменить, пока задания используют это место назначения.", + "noBorgInDialog": "Редактирование места назначения Borg доступно в процессе настройки Borg.", + "noBorgInWizard": "Borg недоступен для заданий, связанных с PVE.", + "noPbsInDialog": "Редактирование места назначения PBS доступно в процессе настройки PBS.", + "noPbsInWizard": "Репозитории PBS пока не настроены.", + "not": "не", + "pbsUserHelpBefore": "Обычно", + "probingCapacity": "Проверка ёмкости...", + "remoteSsh": "Удалённое подключение по SSH", + "remoteSshDescription": "Репозиторий Borg на другом хосте с доступом по SSH.", + "removeAndDeleteJobs": "Удалить место назначения и задания", + "removeDescriptionPlain": "Это удалит место назначения только из Monitor. Существующие резервные копии останутся на своих местах.", + "removeDescriptionWithData": "Это удалит место назначения из Monitor. Существующие резервные копии останутся на своих местах.", + "removeDestination": "Удалить место назначения", + "removeTitle": "Удалить это место назначения", + "saveAnotherBorgTitle": "Сохранить ещё одно место назначения Borg", + "saveAnotherLocalTitle": "Сохранить ещё одно локальное место назначения", + "saveAnotherPbsTitle": "Сохранить ещё одно место назначения PBS", + "shortIdentifierHelp": "Краткое имя, отображаемое в Monitor.", + "single": "Место назначения", + "sshAuthorizedKeyHelp": "Проверьте строку ниже, прежде чем добавлять её в ~/.ssh/authorized_keys для {user} на удалённом хосте.", + "sshKeyHelpAfter": "и разрешите его использование на удалённом хосте.", + "sshKeyHelpBefore": "Monitor хранит закрытый ключ по пути", + "sshKeyHelpMiddle": "Скопируйте открытый ключ в", + "sshKeyHelpMessage": "Путь к закрытому ключу на этом хосте. Используйте {action}, затем проверьте отображаемую строку открытого ключа и добавьте её в файл удалённого пользователя: ~/.ssh/authorized_keys.", + "sshKeySetupHelp": "Создаёт ключ по указанному локальному пути, если его ещё нет; иначе считывает его открытый ключ. Ключ не устанавливается на удалённый хост.", + "sshKeySetupTitle": "Настройка ключа SSH", + "sshUserHelpAfter": "например root.", + "sshUserHelpBefore": "Пользователь на удалённом хосте,", + "sshUserHelpMessage": "Учётная запись на удалённом хосте для доступа к репозиторию Borg, например borg.", + "title": "Места назначения", + "unmountTitle": "Отмонтировать это место назначения", + "whereIsBorgRepo": "Где находится репозиторий Borg?" + }, + "encryption": { + "autoDetectedFromPveStorage": "Определено по хранилищу PVE", + "borgPassphraseLossBefore": "Если вы потеряете парольную фразу Borg, восстановить зашифрованные резервные копии будет невозможно.", + "borgPassphraseOnlyWay": "Эта парольная фраза — единственный способ разблокировать репозиторий.", + "borgPassphraseSavedAfter": "чтобы задания по расписанию могли выполняться без участия пользователя.", + "borgPassphraseSavedAt": "Парольная фраза сохраняется по пути", + "encryptBackups": "Шифровать резервные копии", + "encryptThisBackup": "Зашифровать эту резервную копию", + "encryptedModeTitle": "Режим шифрования", + "encryptedRepokey": "Зашифрованный repokey", + "encryptedRepokeyDescription": "Borg хранит ключ внутри репозитория, защищая его вашей парольной фразой.", + "existingKeyAt": "Существующий ключ находится в", + "generateManualDescription": "Создать новый файл ключа и использовать его для этой резервной копии.", + "generateNewKeyfile": "Создать новый файл ключа", + "generateNewKeyfileDescriptionAfter": "и сохраняет его локально для последующего восстановления резервных копий PBS.", + "generateNewKeyfileDescriptionBefore": "Monitor создаёт", + "importExistingKeyfile": "Импортировать существующий файл ключа", + "importExistingKeyfileDescription": "Загрузите файл ключа, соответствующий существующим зашифрованным резервным копиям.", + "importKeyfileHelpAfter": "перед восстановлением зашифрованных резервных копий PBS.", + "importKeyfileHelpBefore": "Импортируйте соответствующий файл ключа в", + "importManualDescription": "Использовать существующий файл ключа с этого компьютера.", + "noEncryption": "Без шифрования", + "noEncryptionDescription": "Резервные копии хранятся без ключа шифрования.", + "noKeyStored": "Локально нет сохранённого файла ключа.", + "none": "Нет", + "passphraseNotSaved": "Парольная фраза не сохранена.", + "passphraseSaved": "Парольная фраза сохранена", + "pbsHelpAfter": "для восстановления зашифрованных резервных копий PBS.", + "pbsHelp": "Monitor использует {keyfile} с {option} для создания и восстановления зашифрованных резервных копий PBS. Файл ключа хранится с правами доступа {mode}. Храните копию ключа в безопасном месте за пределами этого узла.", + "pbsHelpBefore": "Для шифрования PBS используется", + "pbsHelpEnd": "Храните копию ключа в безопасном месте за пределами этого узла.", + "pbsHelpMiddle": "в качестве файла ключа", + "pveKeyWillBeCopied": "Ключ шифрования PVE будет скопирован для восстановления через Monitor.", + "savePassphraseNow": "Сохранить парольную фразу для запусков по расписанию", + "unrecoverable": "Без ключа восстановить зашифрованные резервные копии невозможно.", + "usesSharedKeyfileAt": "Используется общий файл ключа по пути" + }, + "apiErrors": { + "requestFailed": "Не удалось выполнить запрос.", + "absolutePath": "путь должен быть абсолютным", + "pathConfigured": "этот путь уже настроен", + "pathRequired": "необходимо указать путь", + "pathQuery": "необходимо указать параметр запроса path", + "pathNotFound": "путь не найден", + "invalidJobId": "недопустимый идентификатор задания", + "jobNotFound": "задание не найдено", + "runnerMissing": "скрипт запуска не установлен", + "noRestore": "нет состояния восстановления для сброса", + "invalidFile": "недопустимое имя файла", + "notFound": "не найдено", + "logOutside": "путь к журналу находится за пределами разрешённого каталога", + "targetsList": "целевые объекты должны быть указаны в виде списка", + "emptyExpression": "пустое выражение", + "invalidId": "недопустимый идентификатор (используйте буквы, цифры, _ или -)", + "backend": "бэкенд должен быть pbs, local или borg", + "remoteBackend": "бэкенд должен быть pbs или borg", + "remoteBackendQuoted": "бэкенд должен быть 'pbs' или 'borg'", + "profileMode": "profile_mode должен иметь значение default или custom", + "borgAttached": "borg нельзя использовать для привязанных заданий (PVE vzdump выполняет запись только в хранилища pbs/local)", + "borgAttachedLong": "borg не является допустимым бэкендом для привязанных заданий (PVE vzdump выполняет запись только в хранилища pbs/local)", + "parentRequired": "для привязанного задания необходимо указать pve_parent_job_id и pve_storage", + "absolutePaths": "пути должны быть указаны в виде списка абсолютных путей", + "customPath": "Для пользовательского профиля требуется хотя бы один путь", + "defaultPaths": "Не удалось определить пути профиля по умолчанию", + "retentionObject": "Параметр retention должен быть объектом", + "pbsRepository": "Необходимо указать pbs_repository", + "pbsEncryption": "pbs_encrypt_mode должен иметь значение 'none', 'new' или 'existing'", + "pbsKeyFailed": "Не удалось создать файл ключа шифрования PBS", + "pbsClientMissing": "Не удалось создать файл ключа шифрования PBS (установлен ли proxmox-backup-client?)", + "borgRepository": "Необходимо указать borg_repo", + "borgEncryption": "borg_encrypt_mode должен иметь одно из значений: none, repokey, keyfile, authenticated", + "encryption": "encrypt_mode должен иметь одно из значений: none, repokey, keyfile, authenticated", + "borgPassphrase": "При включённом шифровании необходимо указать borg_passphrase (сохраните парольную фразу в настройках места назначения или передайте её в запросе)", + "passphrase": "При включённом шифровании необходимо указать парольную фразу", + "password": "Необходимо указать пароль", + "deviceConfirmation": "Значение confirm_device должно точно совпадать со значением device (проверка на опечатки в целях безопасности)", + "invalidDevice": "Недопустимый путь к устройству", + "absoluteMountpoint": "Необходимо указать абсолютный путь к точке монтирования", + "archiveLayout": "Структура архива не распознана — каталог rootfs/ не найден", + "archiveMissing": "Архив не найден", + "archiveNotFile": "Путь к архиву не указывает на обычный файл", + "invalidName": "Недопустимое имя", + "invalidStaging": "Недопустимое значение staging_path", + "jobRename": "Имя задания изменить нельзя (для переименования удалите задание и создайте его заново)", + "absoluteKey": "key_path должен быть абсолютным путём", + "mode": "Параметр mode должен иметь значение \"local\" или \"ssh\"", + "nameRequired": "Необходимо указать имя (буквы, цифры, _ или -)", + "noLog": "Для этого задания пока нет журнала", + "noPbsConfig": "Отсутствует файл ручной конфигурации PBS", + "outputMissing": "Выходной файл отсутствует", + "parserJson": "Вывод анализатора не является корректным JSON", + "restoreJson": "Вывод run_restore не является корректным JSON", + "repoRequired": "Необходимо указать репозиторий", + "repoSnapshot": "Необходимо указать repo_name и снимок", + "borgRepoSnapshot": "Для borg необходимо указать repo_name и снимок", + "pbsRepoSnapshot": "Для pbs необходимо указать repo_name и снимок", + "repoName": "Необходимо указать repo_name", + "restoreMissing": "На этом узле не установлены средства восстановления", + "serverDatastore": "Необходимо указать сервер и хранилище данных", + "snapshotRequired": "Необходимо указать снимок", + "source": "Источник должен иметь значение pbs, borg или local", + "sshPort": "Значение ssh_port должно быть целым числом от 1 до 65535", + "sshRequired": "Для режима ssh необходимо указать ssh_user, ssh_host и ssh_remote_path", + "repositoryPath": "Для целевого объекта не указан путь к репозиторию", + "taskExpired": "Задача не найдена или срок её действия истёк", + "invalidExpression": "Некорректное выражение", + "noReport": "Отчёт не сформирован", + "parseManifestFailed": "parse_manifest завершился с ненулевым кодом возврата", + "jobExists": "Задание уже существует: {value}", + "pathMissing": "Путь не существует на этом узле: {value}", + "deviceMissing": "Устройство не существует: {value}", + "mountpoint": "Не является точкой монтирования: {value}", + "localArchiveMissing": "Локальный архив не найден: {value}", + "borgDestination": "Назначение Borg '{value}' не найдено", + "pbsDestination": "Назначение PBS '{value}' не найдено", + "pbsPassword": "Пароль для репозитория PBS '{value}' недоступен", + "borgRepoMissing": "Репозиторий Borg \"{value}\" не настроен", + "pbsRepoMissing": "Репозиторий PBS \"{value}\" не настроен", + "borgTargetMissing": "Цель Borg не найдена: {value}", + "pbsTargetMissing": "Репозиторий PBS не найден: {value}", + "pveJobMissing": "Задание vzdump в PVE не найдено: {value}", + "statePersist": "Не удалось сохранить состояние: {value}", + "sshDirectory": "Не удалось подготовить каталог ssh: {value}", + "logRead": "Не удалось прочитать журнал: {value}", + "envUpdate": "Не удалось обновить .env: {value}", + "pbsConfigWrite": "Не удалось сохранить конфигурацию PBS: {value}", + "persist": "Не удалось сохранить: {value}", + "archiveRemove": "Не удалось удалить архив: {value}", + "start": "Не удалось запустить: {value}", + "borgTargetsUpdate": "Не удалось обновить borg-targets.txt: {value}", + "pbsTargetsUpdate": "Не удалось обновить pbs-manual-configs.txt: {value}", + "unitsUpdate": "Не удалось обновить юниты systemd: {value}", + "borgTargetsWrite": "Не удалось записать borg-targets.txt: {value}", + "jobWrite": "Не удалось записать файлы задания: {value}", + "localTargetWrite": "Не удалось записать local-target.conf: {value}", + "unitsWrite": "Не удалось записать юниты systemd: {value}", + "format": "Не удалось выполнить форматирование: {value}", + "calendar": "Недопустимое значение on_calendar: {value}", + "mount": "Не удалось выполнить монтирование: {value}", + "parserInvocation": "Не удалось вызвать анализатор: {value}", + "preflightInvocation": "Не удалось вызвать предварительную проверку: {value}", + "publicKeyMissing": "После генерации открытый ключ не найден: {value}", + "retentionInteger": "Значение retention.{value} должно быть целым числом", + "retentionNegative": "Значение retention.{value} должно быть неотрицательным", + "keygen": "Не удалось выполнить ssh-keygen: {value}", + "systemctl": "Не удалось выполнить systemctl: {value}", + "unmount": "Не удалось выполнить umount: {value}", + "taskIncomplete": "Задача находится в состоянии \"{value}\" и ещё не завершена", + "unknownKind": "Неизвестный тип: {value}", + "unknownMode": "Неизвестный режим \"{value}\"", + "defaultRemove": "{value} — встроенный вариант по умолчанию, который нельзя удалить", + "defaultAdd": "{value} — встроенный вариант по умолчанию; добавлять его не требуется", + "keyImport": "Файл ключа PBS не установлен по пути {value}. Сначала импортируйте файл ключа.", + "storageMismatch": "Несоответствие хранилища задания PVE (задание использует {value}, в переданных данных указано {other})" + }, + "errors": { + "backendNoStagingPath": "Серверная часть не вернула путь к промежуточному каталогу.", + "deleteFailed": "Не удалось выполнить удаление: {error}", + "downloadFailed": "Не удалось выполнить скачивание: {error}", + "encryptionSetupFailed": "Не удалось настроить шифрование: {error}", + "exportDidNotComplete": "Экспорт не завершён.", + "localArchivePathMissing": "Не указан путь к локальному архиву.", + "passphrasesDoNotMatch": "Парольные фразы не совпадают.", + "passphrasesDontMatch": "Парольные фразы не совпадают.", + "pickKeyfile": "Сначала выберите файл ключа.", + "preflightFailed": "Предварительная проверка не пройдена: {error}", + "proxmoxBackupClientOutput": "Вывод proxmox-backup-client:", + "recoveryPassphraseRequired": "Необходимо указать парольную фразу для восстановления.", + "repoNameAndSnapshotRequired": "Необходимо указать имя репозитория и снимок.", + "runFailed": "Ошибка выполнения: {error}", + "snapshotInfoMissing": "Отсутствует информация о снимке.", + "toggleFailed": "Не удалось изменить состояние задания: {error}" + }, + "extraPaths": { + "absolutePathHintAfter": "— путь должен существовать на этом узле в точности в том виде, в котором он указан.", + "absolutePathHintBefore": "Укажите полный абсолютный путь.", + "absolutePathHintMiddle": "не совпадает с", + "descriptionAfter": "(при ручном запуске или по расписанию, со стандартным или пользовательским профилем) в дополнение к списку путей стандартного профиля. Это удобно для данных приложений, папок с пользовательскими настройками и подобных путей. (Настроено: {count})", + "descriptionBefore": "Добавленные здесь пути включаются в", + "empty": "Пользовательские пути пока не добавлены — для резервного копирования используется только стандартный профиль.", + "everyBackup": "каждую резервную копию", + "missingOnDisk": "отсутствует на диске", + "removeTitle": "Удалить этот пользовательский путь", + "title": "Пользовательские пути" + }, + "fields": { + "absolutePathOnHost": "Абсолютный путь на узле", + "archiveNameLabel": "Имя архива", + "backend": "Бэкенд", + "backendLabel": "Бэкенд", + "backupGroupLabel": "Группа резервных копий", + "backupId": "Идентификатор резервной копии", + "bootMode": "Режим загрузки", + "borgIdLabel": "Идентификатор Borg", + "borgRepository": "Репозиторий Borg", + "confirmPassphrase": "Подтвердите парольную фразу", + "createdLabel": "Дата создания", + "datastore": "Хранилище данных", + "dayOfMonth": "День месяца", + "daysOfWeek": "Дни недели", + "destinationDirectory": "Каталог назначения", + "detectedViaLabel": "Обнаружено с помощью", + "directoryPath": "Путь к каталогу", + "directoryShort": "Кат.", + "encryption": "Шифрование", + "expressionLabel": "Выражение", + "filesystemShort": "ФС", + "fingerprintOptional": "Отпечаток (необязательно)", + "free": "Свободно", + "groupNameInPbs": "Имя группы в PBS", + "jobId": "Идентификатор задания", + "jobIdLabel": "Идентификатор задания", + "jobName": "Имя задания", + "kernel": "Ядро", + "label": "Метка", + "localDestination": "Локальное назначение", + "lvmVgs": "Группы томов LVM", + "memory": "Память", + "minuteOfHour": "Минута часа", + "mode": "Режим", + "name": "Название", + "nameLabel": "Название", + "newRecoveryPassphrase": "Новая парольная фраза восстановления", + "nextRun": "Следующий запуск", + "normalizedLabel": "Нормализовано", + "onCalendarExpression": "Выражение OnCalendar", + "ownerLabel": "Владелец", + "passphrase": "Парольная фраза", + "password": "Пароль", + "pathLabel": "Путь", + "pbsRepository": "Репозиторий PBS", + "profileLabel": "Профиль", + "pveJobLabel": "Задание PVE", + "pveStorage": "Хранилище PVE", + "pveVersion": "Версия PVE", + "recoveryPassphrase": "Парольная фраза для восстановления", + "remoteRepositoryPath": "Путь к удалённому репозиторию", + "repo": "Репозиторий", + "repoNameLabel": "Имя репозитория", + "repository": "Репозиторий", + "repositoryLabel": "Репозиторий", + "repositoryPath": "Путь к репозиторию", + "retentionLabel": "Политика хранения", + "roles": "Роли", + "schedule": "Расписание", + "scheduleLabel": "Расписание", + "serverHostOrIp": "Имя хоста или IP-адрес сервера", + "size": "Размер", + "sizeLabel": "Размер", + "source": "Источник", + "sourceHost": "Исходный хост", + "sourceHostLabel": "Исходный хост", + "sshHostOrIp": "Имя хоста или IP-адрес для SSH", + "sshKeyPath": "Путь к ключу SSH", + "sshUser": "Пользователь SSH", + "status": "Статус", + "storageLabel": "Хранилище", + "target": "Целевой узел", + "timeOfDay": "Время суток", + "type": "Тип", + "used": "Использовано", + "username": "Имя пользователя", + "vmsLxcs": "ВМ/контейнеры LXC", + "when": "Когда", + "whenLabel": "Когда", + "zfsPools": "Пулы ZFS", + "sshPort": "Порт SSH" + }, + "jobs": { + "attachDescriptionAfter": "резервных копий.", + "attachDescriptionBefore": "Привязать Monitor к заданию vzdump в PVE и запускать после события", + "attachDescriptionMiddle": "для выбранных", + "attachToPveJob": "Привязать к заданию PVE", + "attachedToPveVzdump": "Привязано к заданию vzdump в PVE", + "backendEditHelp": "После создания задания изменить бэкенд нельзя.", + "createJob": "Создать задание", + "createScheduledJob": "Создать задание по расписанию", + "customProfileTitle": "Пользовательский профиль", + "defaultProfileTitle": "Профиль по умолчанию", + "detailDescription": "Расписание, профиль, место назначения и последний запуск этого задания.", + "disableJob": "Отключить задание", + "disableJobDescription": "Таймер systemd будет остановлен — автоматические запуски больше не будут выполняться. Позже вы сможете снова включить его в этом же диалоговом окне.", + "editScheduledJob": "Изменить задание по расписанию", + "encryptedTitle": "Зашифровано", + "inheritedRetentionLabel": "Политика хранения из задания PVE", + "inheritedScheduleLabel": "Расписание из задания PVE", + "invalidJobName": "Используйте только буквы, цифры, дефисы и знаки подчёркивания.", + "jobNameHelpAfter": "Название должно быть коротким и понятным.", + "jobNameHelpAnd": "и", + "jobNameHelpBefore": "Используется в именах таймеров и журналах. Допустимые символы также включают", + "jobNameLocked": "После создания задания его название изменить нельзя.", + "lastRun": "Последний запуск", + "lastRunLabel": "Последний запуск", + "liveLogSize": "в реальном времени · {size}", + "loadFailed": "Не удалось загрузить задания", + "loadingJob": "Загрузка задания...", + "manualOneShot": "вручную / однократно", + "manualOneShotDescription": "Однократная резервная копия — создаётся на момент запуска. Повторный запуск и редактирование невозможны.", + "neverRun": "ещё не запускалось", + "newScheduledJob": "Новое задание по расписанию", + "newScheduledJobDescription": "Создайте задание для регулярного резервного копирования хоста.", + "nextRun": "Следующий запуск", + "nextRunLabel": "Следующий запуск", + "nextRunTitle": "Следующий запуск по расписанию", + "noCompatiblePveJob": "Совместимое задание резервного копирования PVE не найдено", + "noCompatiblePveJobDescriptionAfter": "в первую очередь.", + "noCompatiblePveJobDescriptionBefore": "Создайте или включите задание резервного копирования PVE для", + "noCompatiblePveJobDescriptionMiddle": "в", + "notAvailableForBorg": "недоступно для Borg", + "openJobTitle": "Открыть сведения о задании", + "parentPveJobHelpAfter": "успешно завершится.", + "parentPveJobHelpBefore": "Monitor запускается после того, как у этого задания PVE", + "pbsGroupHelp": "Это значение станет группой резервных копий PBS.", + "pickParentPveJob": "Выберите родительское задание PVE", + "retentionTitle": "Политика хранения", + "runAttachedTitle": "Запустить внеплановое выполнение сейчас (таймер PVE продолжит работать по собственному расписанию)", + "runNowTitle": "Запустить это задание сейчас", + "running": "Выполняется...", + "scheduledTitle": "По расписанию", + "standaloneScheduledJob": "Независимое задание по расписанию", + "starting": "запуск...", + "stepOf": "Шаг {step} из {total}", + "summary": "Сводка", + "waitingForRunner": "Ожидание запуска исполнителя..." + }, + "keyfileActions": { + "deleteDialogDescription": "Для восстановления зашифрованных резервных копий PBS потребуется тот же файл ключа.", + "deleteDialogTitle": "Удалить локальный файл ключа PBS?", + "deleteTitle": "Удалить локальный файл ключа", + "deleteWarningDownloadsAfter": "пока вы снова не импортируете соответствующий ключ.", + "deleteWarningDownloadsBefore": "Скачивание и восстановление зашифрованных резервных копий будут завершаться ошибкой", + "deleteWarningNewBackups": "Создание новых зашифрованных резервных копий невозможно без файла ключа.", + "deleteWarningRecoveryBlobs": "Блоки данных восстановления PBS остаются на сервере.", + "downloadTitle": "Скачать файл ключа", + "fingerprintTitle": "Показать отпечаток ключа", + "installed": "Установлено", + "keyfileLabel": "Файл ключа PBS", + "notInstalled": "Не установлено", + "orUploadFromMachine": "или загрузите его с этого компьютера.", + "orUploadOwn": "или загрузите собственный файл ключа.", + "pveKeyDescriptionAfter": "и может повторно использоваться в Monitor.", + "pveKeyDescription": "Для хранилища PVE {storage} имеется файл ключа по пути {path}. Вы можете импортировать его в Monitor.", + "pveKeyDescriptionBefore": "Ключ PVE находится по пути", + "pveKeyDescriptionMiddle": "Он соответствует ключу шифрования хранилища PVE", + "pveKeyDetected": "Обнаружен ключ PVE", + "uploadDialogDescriptionAfter": "Для зашифрованных резервных копий, созданных с другим ключом, по-прежнему потребуется исходный ключ.", + "uploadDialogDescriptionBefore": "Загрузите файл ключа, использованный для создания зашифрованных резервных копий PBS.", + "uploadDialogTitle": "Загрузить файл ключа PBS", + "uploadFromMachine": "Загрузить с этого компьютера", + "uploadTitle": "Загрузить файл ключа", + "useThisKey": "Использовать этот ключ", + "willFail": "завершится ошибкой" + }, + "keyfileError": { + "currentlyInstalled": "Сейчас установлен", + "description": "Эта резервная копия зашифрована и требует соответствующего файла ключа PBS.", + "importFrom": "Импортируйте соответствующий файл ключа из", + "importPath": "Backup → Destinations → PBS — файл ключа", + "requiredManifest": "Требуется для резервной копии", + "retryHint": "и повторите попытку.", + "title": "Требуется соответствующий файл ключа" + }, + "keyfileGate": { + "descriptionAfter": "для продолжения этого действия.", + "descriptionBefore": "Для этой зашифрованной резервной копии требуется соответствующий файл ключа", + "title": "Требуется файл ключа" + }, + "keyfileManagement": { + "below": "ниже", + "copyAfterCreateAfter": "после его создания.", + "copyAfterCreateBefore": "Скачайте копию для надёжного хранения", + "copyAfterManualBefore": "Храните копию в надёжном месте вне этого хоста", + "currentPbsUploadStays": "Ранее загруженные в PBS файлы для восстановления остаются на месте.", + "downloadKeyfile": "Скачать файл ключа", + "hideOptions": "Скрыть параметры", + "keepLocalDescriptionAfter": "и храните собственную резервную копию в другом месте.", + "keepLocalDescriptionBefore": "Храните ключ только на этом хосте", + "keepLocalOnly": "Хранить только локально", + "keepOffsiteCopy": "Храните копию за пределами площадки", + "keyfileInstalled": "Файл ключа установлен", + "startUploading": "Начать загрузку данных для восстановления в PBS", + "stopUploading": "Остановить загрузку данных для восстановления", + "thisBackupReusesKeyfile": "Эта резервная копия использует общий файл ключа PBS.", + "title": "Управление файлом ключа", + "updatePassphrase": "Обновить парольную фразу", + "uploadNo": "Нет, хранить только локально", + "uploadQuestion": "Загрузить зашифрованную копию для восстановления в PBS?", + "uploadToPbs": "Загрузить в PBS", + "uploadYes": "Да, загрузить копию для восстановления", + "withoutCopyWarning": "Без копии потеря этого узла может также привести к потере ключа.", + "yesUpload": "Да, загрузить", + "yesUploadDescription": "Monitor хранит зашифрованную копию для восстановления в PBS." + }, + "keyfileRecovery": { + "descriptionBefore": "Зашифрованный файл ключа скачивается из PBS и расшифровывается с помощью вашей парольной фразы для восстановления. Полученный ключ записывается в", + "passphrase": "Парольная фраза для восстановления", + "pickSourceHost": "Выберите исходный узел, парольную фразу которого вы помните: каждый экземпляр установки загружает собственную копию ключа для восстановления.", + "snapshot": "Снимок для восстановления", + "title": "Восстановить файл ключа PBS" + }, + "logs": { + "openFull": "Открыть полный журнал", + "runLog": "Журнал выполнения", + "tail": "tail" + }, + "manifest": { + "bootMode": "Режим загрузки", + "builtBy": "Кем собрано", + "componentsAtBackup": "Компоненты на момент создания резервной копии", + "compression": "Сжатие", + "createdAt": "Дата создания", + "deviceCount": "Устройств: {count}", + "encrypted": "Зашифровано", + "gpus": "Графические процессоры", + "interfaceCount": "Интерфейсы: {count}", + "lxcsAtBackup": "Контейнеры LXC на момент создания резервной копии", + "memory": "Память", + "nics": "Сетевые интерфейсы", + "pathCount": "Пути: {count}", + "pathsArchived": "Пути, включённые в архив", + "proxmoxVersion": "Версия Proxmox", + "roles": "Роли", + "sourceHost": "Исходный хост", + "vmsAtBackup": "Виртуальные машины на момент создания резервной копии" + }, + "manual": { + "description": "Создать разовую резервную копию хоста сейчас.", + "inProgress": "Выполняется резервное копирование вручную", + "oneShotDescription": "Разовые задания резервного копирования сохраняются в зафиксированном состоянии, чтобы вы могли позже просмотреть их журналы.", + "reopenLogTitle": "Повторно открыть журнал", + "run": "Запустить", + "runBackup": "Запустить резервное копирование", + "runOneShotBackup": "Запустить разовое резервное копирование", + "title": "Резервное копирование вручную", + "viewProgress": "Посмотреть ход выполнения" + }, + "paths": { + "count": "Пути: {count}", + "title": "Пути" + }, + "placeholders": { + "autoFromPveStorage": "автоматически из хранилища PVE", + "extraPathExamples": "/root/my-folder, /srv/myapp/data, /etc/cron.d ...", + "filterPaths": "Фильтр путей...", + "keyfilePath": "/usr/local/share/proxmenux/pbs-key.conf", + "keyfileRecoveryPassphrase": "Парольная фраза, заданная при создании файла ключа", + "leaveBlankForDefault": "оставьте пустым для использования значения по умолчанию", + "longRandomStoreSafe": "Длинное случайное значение — храните его в безопасном месте", + "newRecoveryPassphrase": "Новая парольная фраза восстановления", + "onCalendar": "*-*-* 02:30:00", + "pickBorgRepository": "Выберите репозиторий Borg", + "pickLocalDestination": "Выберите локальное место назначения", + "pickPbsRepository": "Выберите репозиторий PBS", + "recoveryPassphrase": "Парольная фраза для восстановления", + "typeItAgain": "Введите ещё раз", + "unchangedTypeToReplace": "без изменений — введите новое значение для замены" + }, + "plan": { + "blockers": "Блокирующие проблемы", + "noIssues": "Блокирующих проблем и предупреждений не обнаружено.", + "status": { + "blocked": "Заблокирован", + "error": "Ошибка", + "failed": "Сбой", + "ok": "OK", + "unknown": "Неизвестно", + "warn": "Предупреждение" + }, + "warnings": "Предупреждения" + }, + "preflight": { + "applyWouldBeRefused": "Применение было бы отклонено", + "driverReinstallPlan": "План переустановки драйверов", + "failCount": "Не пройдено: {count}", + "keepCount": "Сохранено: {count}", + "lvmVgsCount": "Групп томов LVM: {count}", + "networkInMode": "Сеть в выбранном режиме", + "newCount": "Новых: {count}", + "orphanCount": "Осиротевших: {count}", + "passCount": "Пройдено: {count}", + "pveStorageCount": "Хранилищ PVE: {count}", + "remapCount": "Переназначено: {count}", + "storageInMode": "Хранилище в выбранном режиме", + "warnCount": "{count} предупреждения", + "zfsPoolsCount": "Пулов ZFS: {count}" + }, + "profile": { + "custom": "Другой период", + "customDescription": "Выберите, какие именно пути следует включить.", + "default": "По умолчанию", + "defaultDescription": "Рекомендуемая конфигурация хоста и данные ProxMenux.", + "defaultDescriptionShort": "Рекомендуемая конфигурация хоста.", + "pathsToInclude": "Пути для включения", + "pickPaths": "Выберите пути", + "title": "Профиль" + }, + "recovery": { + "copyFoundTitle": "Найдена копия для восстановления", + "encryptedCopyAvailable": "Зашифрованная копия ключа для восстановления доступна в PBS.", + "keyfileMissingTitle": "Файл ключа PBS отсутствует", + "recoverArrow": "Восстановить →" + }, + "restore": { + "ackAfter": "перечисленные выше виртуальные машины, контейнеры LXC и компоненты. Это действие необратимо.", + "ackBefore": "Я понимаю, что полное восстановление", + "afterRebootHint": "После перезагрузки на этой вкладке резервных копий будет отображаться ход восстановления в реальном времени: оценка оставшегося времени, состояние каждого компонента, последние строки журнала и изменения для отката. Если настроены уведомления Telegram/Discord/ntfy, вы также получите уведомление о событии «Восстановление хоста завершено».", + "backupKernel": "Ядро в резервной копии", + "blockedEncryptedTitle": "Восстановление из зашифрованной резервной копии заблокировано", + "blockedPathsHint": "Пути, связанные с ядром и загрузкой, выделены серым и недоступны для выбора — на целевом хосте используется более новое ядро.", + "chooseModeTitle": "Восстановление — выбор режима", + "complete": "Полное", + "completeDescription": "Восстановить всё из резервной копии.", + "completeDescriptionAfter": "в текстовом меню оболочки. В терминале, который откроется далее, перед внесением изменений на хосте потребуется подтвердить режим: только безопасные изменения, безопасные изменения с перезагрузкой или всё сразу.", + "completeDescriptionBefore": "Восстанавливает всё содержимое резервной копии. Эквивалентно выбору", + "completeTitle": "Полное восстановление", + "crossKernelDescription": "И полное, и выборочное восстановление автоматически пропускают пути, связанные с ядром и загрузкой, чтобы избежать критической ошибки ядра при следующей загрузке. Всё остальное (виртуальные машины, контейнеры LXC, сеть, компоненты и пользовательские пути) восстанавливается в обычном порядке.", + "crossKernelTitle": "Восстановление при разных версиях ядра — только безопасная часть данных", + "customByPaths": "Выборочное по путям", + "customByPathsDescription": "Выберите конкретные пути для восстановления. В списке показано фактическое содержимое этой резервной копии (профиль по умолчанию и добавленные вами пути).", + "customByPathsTitle": "Выборочное восстановление по путям", + "customPickDescriptionAfter": "окружения — далее используется тот же код, что и в текстовом интерфейсе. Сценарий bash определит пути, для восстановления которых требуется перезагрузка (ядро, модули, fstab, …), и позволит запланировать их восстановление на следующую загрузку.", + "customPickDescriptionBefore": "Выберите пути для восстановления. Ваш выбор передаётся в", + "customPickDescriptionMiddle": "через переменную", + "destructiveTitle": "Полное восстановление УДАЛИТ следующие объекты (созданные после резервного копирования)", + "noPathsMatch": "Нет путей, соответствующих фильтру.", + "noRestorablePaths": "В этой резервной копии нет путей, доступных для восстановления — здесь имеет смысл только полное восстановление.", + "olderThanTargetKernel": "старше ядра целевой системы", + "operatorConfigDescription": "Следующие настройки, заданные оператором, будут автоматически объединены с настройками целевой системы без изменения параметров по умолчанию, привязанных к ядру. Это выполняется как при полном, так и при выборочном восстановлении.", + "operatorConfigTitle": "Повторное применение настроек оператора путём объединения, не зависящего от ядра", + "pathsInBackup": "(путей в резервной копии: {count})", + "pathsSelected": "Выбрано путей: {count}", + "pathsSkipped": "Пути, которые будут пропущены ({count})", + "permanentlyDelete": "удалить безвозвратно", + "pickPathError": "Выберите хотя бы один путь, чтобы продолжить.", + "preparationFailedTitle": "Не удалось подготовиться к восстановлению", + "selectedCount": "Выбрано: {selected} / {total}{shown}", + "shownCount": " (показано: {count})", + "skipped": "пропущено", + "skippedPathTitle": "Пропущено: путь привязан к ядру, а в целевой системе используется более новое ядро", + "terminalTitle": "Терминал восстановления", + "tickAckToEnable": "Установите флажок подтверждения выше, чтобы включить." + }, + "retention": { + "daily": "Ежедневно", + "hourly": "Ежечасно", + "keepDaily": "Сохранять ежедневные копии", + "keepHourly": "Сохранять ежечасные копии", + "keepLast": "Сохранять последние копии", + "keepMonthly": "Сохранять ежемесячные копии", + "keepWeekly": "Сохранять еженедельные копии", + "keepYearly": "Сохранять ежегодные копии", + "last": "В последний раз", + "monthly": "Ежемесячно", + "none": "Нет", + "noneAccumulate": "Количество хранимых резервных копий не ограничено — они накапливаются, пока не будут удалены вручную.", + "title": "Политика хранения", + "weekly": "Еженедельно", + "yearly": "Ежегодно", + "zeroDisables": "0 отключает это ограничение." + }, + "rollback": { + "components": "Компоненты:", + "configsIncluded": "Конфигурации, включённые в резервную копию", + "lxcConfigs": "Конфигурации LXC:", + "noDifferences": "Различий в состоянии хоста не обнаружено — состояние в резервной копии совпадает с текущим состоянием хоста (либо резервная копия не включала /etc/pve).", + "pveOnlyHint": "Восстанавливается только конфигурация /etc/pve — образы дисков остаются на своих местах.", + "vmConfigs": "Конфигурации ВМ:" + }, + "schedule": { + "advancedHelpAfter": "для уточнения синтаксиса systemd.", + "advancedHelpBefore": "Использовать", + "advancedHelpMiddle": "и", + "advancedOption": "Расширенный режим", + "borgTimerOnly": "Задания Borg запускаются по расписанию с помощью таймеров Monitor.", + "dailyOption": "Ежедневно", + "everyDayAt": "Каждый день в {time}", + "everyDayAtMidnight": "Каждый день в полночь", + "everyHourAtMinute": "Каждый час, минута: {minute}", + "everyHourAtMinuteZero": "Каждый час", + "everyMinute": "Каждую минуту", + "everyMondayAtMidnight": "Каждый понедельник в полночь", + "firstDayMonthly": "В первый день каждого месяца", + "hourlyHelpAfter": "срабатывает один раз в час.", + "hourlyHelpBefore": "На минуте", + "hourlyHelpMiddle": "таймер", + "hourlyOption": "Ежечасно", + "howToSchedule": "Как настроить расписание запуска?", + "janFirst": "1 января каждого года", + "modeHelp": "Выберите простое расписание или введите выражение OnCalendar для systemd.", + "monthlyOption": "Ежемесячно", + "monthlySkipHelp": "Если в месяце меньше дней, systemd пропускает этот запуск.", + "pickAtLeastOneDay": "Выберите хотя бы один день.", + "pickFrequency": "Выберите периодичность", + "preview": "Предварительный просмотр", + "rawOnCalendar": "{value} (systemd OnCalendar)", + "title": "Расписание", + "weekdaysAt": "{days} в {time}", + "weeklyOption": "Еженедельно" + }, + "status": { + "attached": "подключено", + "disabled": "отключено", + "legacy": "устаревшее", + "manual": "вручную", + "manualOneShot": "вручную / однократно", + "ok": "в порядке", + "running": "работают", + "scheduled": "по расписанию" + }, + "taskStates": { + "completed": "завершено", + "failed": "сбой", + "packing": "упаковка", + "queued": "в очереди", + "restoring": "восстановление", + "running": "работают" + }, + "usb": { + "description": "Смонтируйте USB-накопители, чтобы их можно было выбрать в качестве локального целевого хранилища или целевого хранилища Borg. Накопители с существующей файловой системой можно повторно смонтировать без изменений; накопители без таблицы разделов можно очистить и отформатировать в", + "drivesDetected": "Обнаружено накопителей: {count}", + "empty": "USB-накопители не обнаружены. Подключите накопитель и обновите список — Monitor автоматически проверяет их наличие каждые 30 секунд.", + "formatAndUse": "Отформатировать и использовать", + "formatDescription": "Все данные на выбранном диске будут удалены, и будет создан один раздел ext4.", + "formatDrive": "Отформатировать накопитель", + "formatDriveQuestion": "Очистить и отформатировать этот диск?", + "formatTitle": "Очистить и отформатировать этот диск в ext4", + "formatWarning": "Все данные на диске будут уничтожены. Это действие нельзя отменить.", + "mountAndUse": "Смонтировать и использовать", + "mounted": "Смонтирован", + "noneDetected": "USB-накопители не обнаружены.", + "repartitionHint": "На диске будет заново создана таблица разделов GPT с одним разделом ext4, после чего он будет автоматически смонтирован.", + "scanning": "Поиск USB-накопителей...", + "stateEmpty": "нет файловой системы", + "stateMounted": "Смонтировано", + "stateUnmounted": "Не смонтировано", + "typeDeviceExactly": "Для подтверждения введите путь к устройству В ТОЧНОСТИ:", + "typeDeviceToConfirm": "Введите путь к устройству для подтверждения", + "unformatted": "Не отформатирован", + "unmountConfirm": "Размонтировать {path}? Все задания резервного копирования, использующие этот путь, будут завершаться с ошибкой, пока вы не смонтируете его снова.", + "unmounted": "Размонтирован", + "uuidTitle": "uuid: {uuid}", + "wipeAndFormat": "Стереть данные и отформатировать" + }, + "validation": { + "invalidLabel": "Недопустимая метка." + }, + "viewSwitch": { + "ariaLabel": "Переключение между резервными копиями хоста и резервными копиями виртуальных машин и LXC", + "host": "Хост", + "guests": "Виртуальные машины и контейнеры LXC" + }, + "vmJobs": { + "title": "Задания резервного копирования виртуальных машин и контейнеров", + "subtitle": "Задания резервного копирования Proxmox по расписанию — те же, что и в Datacenter → Backup.", + "newJob": "Новое задание", + "loadFailed": "Не удалось прочитать задания резервного копирования", + "empty": "Заданий резервного копирования пока нет. Создайте первое, нажав «Новое задание».", + "allGuests": "Все виртуальные машины и контейнеры", + "noGuests": "Ни одна гостевая система не выбрана", + "storageDefault": "по умолчанию для хранилища", + "hostBackup": "Резервная копия хоста", + "attachedHost": "Задания резервного копирования хоста, выполняемые вместе с этим заданием: {ids}", + "created": "Задание создано", + "updated": "Задание обновлено", + "deleted": "Задание {id} удалено", + "toggledOn": "Задание {id} включено", + "toggledOff": "Задание {id} отключено", + "started": "Резервное копирование {id} запущено как задача Proxmox на следующих узлах: {nodes}.", + "startedPartial": "Не удалось запустить на следующих узлах: {nodes}.", + "dialogNew": "Новое задание резервного копирования", + "dialogEdit": "Редактирование задания {id}", + "fieldName": "Имя (необязательно)", + "fieldNameHint": "Буквы, цифры и дефисы. Если оставить поле пустым, Proxmox сгенерирует имя.", + "fieldGuests": "Гостевые системы для резервного копирования", + "fieldAll": "Все виртуальные машины и контейнеры", + "fieldStorage": "Целевое хранилище", + "selectStorage": "Выберите…", + "noStorage": "Нет хранилищ, принимающих резервные копии. Добавьте хранилище в Proxmox, Datacenter → Storage.", + "fieldSchedule": "Расписание", + "scheduleCustom": "Другой период", + "schedulePlaceholder": "например, mon..fri 01:30", + "fieldMode": "Режим", + "modeSnapshot": "Снимок (без простоя)", + "modeSuspend": "Приостановка (приостанавливает гостевую систему)", + "modeStop": "Остановка (выключает гостевую систему)", + "fieldCompress": "Сжатие", + "compressNone": "Нет", + "fieldNotes": "Примечания к резервной копии", + "cancel": "Отмена", + "save": "Сохранить", + "saving": "Сохранение…", + "needStorage": "Выберите целевое хранилище", + "needGuests": "Выберите хотя бы одну VM или один CT", + "saveFailed": "Не удалось сохранить задание", + "actionFailed": "Операция завершилась с ошибкой", + "deleteTitle": "Удалить задание {id}", + "deleteBody": "Удаляется только расписание. Уже созданные резервные копии остаются в хранилище.", + "deleteAttached": "Это задание больше не будет запускать резервное копирование следующих хостов: {ids}. Другое задание, записывающее данные в то же хранилище, по-прежнему будет запускать их резервное копирование.", + "storageAttached": "Резервное копирование следующих хостов запускается вместе с этим заданием и рассчитано на использование его хранилища: {ids}. При выборе другого хранилища это задание больше не будет запускать их резервное копирование; другое задание, записывающее данные в исходное хранилище, по-прежнему будет его запускать.", + "deleteConfirm": "Удалить задание", + "disableTitle": "Отключить задание {id}", + "disableBody": "Настройки задания сохраняются, но запуски по расписанию прекращаются до его повторного включения. Задание по-прежнему можно запускать вручную.", + "runTitle": "Запустить задание {id} сейчас", + "runBody": "Резервное копирование начнётся сейчас с настройками задания в виде задачи Proxmox.", + "runStop": "Для этого задания выбран режим stop: на время резервного копирования его гостевые системы выключаются.", + "labelSchedule": "Расписание", + "labelStorage": "Хранилище", + "labelMode": "Режим", + "labelRetention": "Политика хранения", + "presets": { + "daily02": "Ежедневно в 02:00", + "daily03": "Ежедневно в 03:00", + "sunday02": "Каждое воскресенье в 02:00", + "every6h": "Каждые 6 часов", + "hourly": "Каждый час" + } + }, + "weekdays": { + "friday": "Пятница", + "monday": "Понедельник", + "saturday": "Суббота", + "short": { + "fri": "Пт", + "mon": "Пн", + "sat": "Сб", + "sun": "Вс", + "thu": "Чт", + "tue": "Вт", + "wed": "Ср" + }, + "sunday": "Воскресенье", + "thursday": "Четверг", + "tuesday": "Вторник", + "wednesday": "Среда" + } + }, + "healthStatus": { + "restart": { + "button": "Перезагрузить сервер", + "title": "Перезагрузить сервер {server}?", + "impact": "Перезагрузка временно прерывает работу сервера, виртуальных машин, контейнеров и их служб.", + "cancel": "Отмена", + "confirm": "Подтвердить перезагрузку", + "blocked": "Перезагрузка станет доступна после завершения обновления хоста.", + "accepted": "Запрос на перезагрузку принят. Убедитесь, что сервер снова доступен в сети.", + "unconfirmed": "Не удалось проверить запрос на перезагрузку. Проверьте состояние сервера перед повторной попыткой." + }, + "versions": { + "title": "Обновление ProxMenux", + "installed": "Установленная версия", + "latest": "Доступная версия", + "lastKnown": "Последняя известная доступная версия", + "available": "Доступно обновление", + "current": "ProxMenux не требует обновления", + "currentVersion": "Версия {version} актуальна", + "unknown": "Не удалось проверить доступную версию", + "unverified": "Не проверено", + "stable": "Стабильный канал", + "beta": "Канал бета-версий", + "checked": "Последняя успешная проверка: {time}" + }, + "hostUpdate": { + "running": "Обновление хоста продолжается даже после выхода из системы. После входа снова откройте окно обновления.", + "finished": "Последнее обновление хоста завершено. Его результат доступен для просмотра.", + "attention": "Обновление хоста требует внимания. Оно не остановлено; подключитесь повторно, чтобы проверить его состояние.", + "view": "Просмотреть обновление", + "viewResult": "Показать результат", + "hideResult": "Скрыть результат", + "resultTitle": "Результат обновления хоста", + "resultReadOnly": "Сохранённый вывод завершённого обновления. Его открытие не запускает новое обновление.", + "resultUnavailable": "Не удалось загрузить сохранённый результат. Обновление не было запущено.", + "retryResult": "Повторно загрузить результат", + "loadingResult": "Загрузка сохранённого результата…", + "closeResult": "Закрыть результат", + "noReboot": "Перезагрузка не требуется", + "rebootMarker": "Операционная система требует перезагрузки.", + "rebootUnknown": "Не удалось определить, требуется ли перезагрузка.", + "rebootKernel": "Для активации {installed} требуется перезагрузка. Сейчас используется: {running}." + }, + "title": "Состояние системы", + "description": "Подробные проверки всех компонентов системы", + "status": { + "ok": "OK", + "info": "Информация", + "warning": "Предупреждение", + "critical": "Критическое состояние", + "unknown": "Неизвестно" + }, + "stats": { + "total": "Всего", + "healthy": "В норме", + "info": "Информация", + "warning": "Предупреждение", + "critical": "Критическое состояние", + "unknown": "Неизвестно" + }, + "categories": { + "cpu": "Загрузка и температура процессора", + "memory": "Память и подкачка", + "storage": "Монтирование хранилищ и дисковое пространство", + "disks": "Дисковый ввод-вывод и ошибки", + "network": "Сетевые интерфейсы", + "vms": "Виртуальные машины и контейнеры", + "services": "Службы PVE", + "pbsServices": "Службы PBS", + "logs": "Системные журналы", + "updates": "Обновления системы", + "security": "Безопасность и сертификаты" + }, + "checks": { + "cpu_usage": "Загрузка процессора", + "cpu_temperature": "Температура", + "ram_usage": "Использование оперативной памяти", + "swap_usage": "Использование подкачки", + "root_filesystem": "Корневая файловая система", + "smart_health": "Состояние по данным SMART", + "io_errors": "Ошибки ввода-вывода", + "zfs_pools": "Пулы ZFS", + "lvm_volumes": "Тома LVM", + "lvm_check": "Состояние LVM", + "connectivity": "Сетевое подключение", + "qmp_communication": "Связь по QMP", + "container_startup": "Запуск контейнера", + "vm_startup": "Запуск виртуальной машины", + "oom_killer": "OOM Killer", + "cluster_mode": "Кластерный режим", + "log_error_cascade": "Каскад ошибок", + "log_error_spike": "Всплеск ошибок", + "log_persistent_errors": "Постоянные ошибки", + "log_critical_errors": "Критические ошибки", + "pve_version": "Версия Proxmox VE", + "security_updates": "Обновления безопасности", + "system_age": "Возраст системы", + "pending_updates": "Ожидающие установки обновления", + "kernel_pve": "Ядро / PVE", + "reboot_required": "Требуется перезагрузка", + "uptime": "Время работы", + "certificates": "Сертификаты", + "login_attempts": "Попытки входа", + "fail2ban": "Fail2Ban", + "proxmox_storages": "Хранилища Proxmox" + }, + "details": { + "noTemperatureSensor": "Датчик температуры не обнаружен — установите lm-sensors, если оборудование поддерживает измерение температуры", + "cpuHighSustained": "Длительная высокая загрузка процессора", + "temperatureElevated": "Повышенная температура", + "cpuSustained": "Загрузка CPU >{threshold}% в течение {seconds} с", + "cpuCheckFailed": "Не удалось проверить CPU: {error}", + "sensorHighSamplesSpan": "Температура датчика {temperature}°C >80°C; период высоких показаний: {duration}", + "noSwapConfigured": "Подкачка не настроена", + "ramHighSustained": "Длительное высокое использование оперативной памяти", + "swapRamPressure": "Область подкачки почти заполнена при нехватке оперативной памяти", + "ramSustained": "Использование RAM >{threshold}% в течение {seconds} с", + "memoryPressure": "Нехватка памяти: использовано {swapPercent}% пространства подкачки, доступно лишь {ramAvailablePercent}% оперативной памяти", + "memoryCheckFailed": "Не удалось проверить память: {error}", + "pendingSecurityUpdates": "Ожидают установки обновления безопасности: {count}", + "pendingSecurityUpdatesUnpatched": "Ожидают установки обновления безопасности: {count} (дней без исправлений: {days})", + "pendingSecurityUpdatesDays": "Ожидают установки обновления безопасности: {count} (дней ожидания: {days})", + "systemNotUpdatedMonths": "Система не обновлялась {days} дн. (>18 месяцев)", + "systemNotUpdatedYear": "Система не обновлялась {days} дн. (>1 года)", + "runningKernelUpdate": "Доступно обновление для работающего ядра {kernel}", + "kernelPveUpdates": "Доступны обновления ядра: {kernelCount}; доступны обновления Proxmox: {pveCount}", + "pendingPackageUpdates": "Ожидают установки обновления пакетов: {count}", + "noPendingUpdates": "Нет обновлений, ожидающих установки", + "updatesAptError": "Не удалось проверить наличие обновлений (ошибка apt-get)", + "updatesAptTimeout": "Время ожидания apt-get истекло — возможно, репозиторий недоступен", + "kernelPackagesMore": "{technicalIdentity} (и ещё {count})", + "nonRunningKernelUpdates": "Доступны обновления ядра: {count} (для работающего ядра{optionalKernel} обновлений нет)", + "unknownDetail": "Неизвестно", + "pveVersionAvailable": "Доступно обновление PVE {current} -> {new}", + "updatesCheckUnavailable": "Проверка обновлений недоступна: {error}", + "noFailedLogins": "За последние 24 часа не было неудачных попыток входа", + "fail2banInactive": "Fail2Ban установлен, но служба неактивна", + "fail2banCheckUnavailable": "Не удалось проверить Fail2Ban: {error}", + "uptimeKernelAdvice": "Время непрерывной работы (дней): {days} (>1 года; рекомендуется обновить ядро/систему)", + "uptimeUnavailable": "Не удалось определить время непрерывной работы", + "failedLoginsWithinThreshold": "Неудачные попытки входа за последние 24 часа: {count} (в пределах порогового значения)", + "loginCheckUnavailable": "Не удалось проверить попытки входа", + "securityCheckUnavailable": "Проверка безопасности недоступна: {error}", + "certificateExpired": "Срок действия сертификата истёк", + "certificateExpiresDays": "До истечения срока действия сертификата (дней): {days}", + "certificateInconclusive": "Проверка сертификата не дала однозначного результата", + "allOperational": "Все системы работают нормально", + "normal": "Норма", + "noIoErrors": "В dmesg нет ошибок ввода-вывода", + "rootFilesystemOk": "Смонтировано в режиме «чтение и запись»; свободного места достаточно", + "noSmartWarnings": "В журнале нет предупреждений SMART", + "noCriticalErrors": "Нет критических ошибок", + "noCascadingErrors": "Нет каскадных ошибок", + "noErrorSpikes": "Нет всплесков ошибок", + "noPersistentPatterns": "Нет устойчивых закономерностей", + "certificateValid": "Сертификат действителен", + "clusterDetected": "Обнаружен кластер (присутствует corosync.conf)", + "active": "Активна", + "up": "UP", + "kernelUpToDate": "Ядро/PVE не требует обновления", + "proxmoxUpToDate": "Proxmox VE не требует обновления", + "noSecurityUpdates": "Нет ожидающих установки обновлений безопасности", + "noContainerErrors": "Нет ошибок запуска контейнеров", + "noOomEvents": "Событий нехватки памяти (OOM) не обнаружено", + "noQmpTimeouts": "Превышений времени ожидания QMP не обнаружено", + "noVmFailures": "Нет сбоев запуска виртуальных машин", + "dismissedByUser": "Отклонено пользователем", + "gatewayLatency": "Задержка до шлюза: {latency} мс", + "failedLogins": "Неудачных попыток входа за 24 часа: {count}", + "fail2banBannedIps": "Fail2Ban сейчас блокирует IP-адреса в количестве {count} (jail: {jails})", + "uptimeDays": "Время непрерывной работы в днях: {count}", + "pendingPackages": "Запланированные пакеты: {count} (включая новые пакеты)", + "updatedDaysAgo": "Дней с последнего обновления: {count}", + "startupStoragesChecking": "Проверка хранилища Proxmox после запуска: {storages}", + "startupStorageChecking": "Проверка хранилища Proxmox после запуска: {storage}", + "startupStorageNotFound": "Проверка хранилища Proxmox после запуска: {storage} пока не отображается на сервере", + "startupStorageUnavailable": "Проверка хранилища Proxmox после запуска: {storage} пока не готово", + "startupStorageStatus": "Проверка хранилища Proxmox после запуска: {storage} (текущий статус: {status})", + "storageAvailable": "Хранилище {type} доступно", + "storageUsage": "Использовано {percent}%", + "mountReachable": "Точка монтирования {type} доступна", + "rootfsUsed": "Использование rootfs: {percent}% ({size})", + "runningCtsSafe": "Использование rootfs в пределах безопасного уровня у {count} работающих контейнеров", + "pveStorageSafe": "Использование {count} целевых блочных хранилищ PVE находится в пределах безопасного уровня", + "remoteMountsHealthy": "Удалённые точки монтирования в количестве {count} работают исправно" + }, + "time": { + "justNow": "только что", + "oneMinuteAgo": "1 минуту назад", + "minutesAgo": "{count} мин. назад", + "hoursMinutesAgo": "{hours} ч {minutes} мин. назад" + }, + "errors": { + "fetchFailed": "Не удалось получить сведения о состоянии системы", + "unknown": "Неизвестная ошибка", + "loading": "Ошибка загрузки состояния системы" + }, + "noIssues": "Проблем не обнаружено", + "updateNow": "Обновить сейчас", + "updateSystem": "Обновить систему", + "packagePlanNote": "План также включает новые пакеты, например новое ядро. В обзоре учитываются только обновления существующих пакетов.", + "snapshotUnavailable": "Новые результаты проверки состояния системы пока недоступны.", + "lastKnownResults": "Показаны последние доступные результаты с исходным временем проверки.", + "dismissedItems": "Скрытые элементы ({count})", + "permanent": "Бессрочно", + "dismissed": "Отклонено", + "wasStatus": "предыдущий статус: {status}", + "permanentlySuppressed": "Оповещение отключено навсегда", + "suppressedForMore": "Оповещение отключено ещё на {duration}", + "customSuppressionSettings": "Пользовательские настройки отключения оповещений", + "autoSuppressedHint": "Оповещения этих категорий автоматически отключаются при обнаружении.", + "lastUpdated": "Последнее обновление: {date}", + "updateTerminalTitle": "Обновление системы Proxmox", + "updateTerminalDescription": "Выполняет apt-get update + dist-upgrade и очистку после обновления на хосте.", + "dismiss": "Скрыть", + "silenceFor": "Отключить это оповещение на", + "permanently": "Навсегда", + "duration": { + "hours": "{count} ч", + "days": "{count} дня", + "weeks": "{count} нед.", + "months": "{count} мес.", + "years": "{count} г.", + "24hours": "24 часа", + "7days": "7 дней" + } + }, + "profilePage": { + "loading": "Загрузка профиля…", + "loadFailed": "Не удалось загрузить профиль", + "title": "Профиль пользователя", + "description": "Личные данные, отображаемые в меню аватара в верхней панели. Их указывать необязательно — имя пользователя уже идентифицирует учётную запись.", + "avatar": { + "label": "Аватар", + "upload": "Загрузить аватар", + "replace": "Заменить аватар", + "remove": "Удалить аватар", + "hint": "PNG, JPEG, WebP или GIF. До 2 МБ. Для наилучшего отображения в верхней панели используйте квадратное изображение или предварительно обрежьте его." + }, + "username": { + "label": "Имя пользователя", + "help": "Это имя для входа в систему. Чтобы изменить его, отключите аутентификацию и настройте её заново в разделе «Безопасность»." + }, + "displayName": { + "label": "Отображаемое имя", + "optional": "(необязательно)", + "placeholder": "Отображаемое имя", + "help": "Отображается над именем пользователя в меню аватара. Оставьте поле пустым, чтобы отображалось только имя пользователя. Не более 64 символов." + }, + "accountSecurity": { + "title": "Безопасность учётной записи", + "description": "Управление паролем, двухфакторной аутентификацией и токенами API осуществляется в панели «Безопасность».", + "openSecurity": "Открыть настройки безопасности", + "fallback": "Откройте вкладку «Безопасность» в меню навигации." + }, + "errors": { + "saveDisplayNameFailed": "Не удалось сохранить отображаемое имя", + "uploadFailed": "Не удалось загрузить ({status})", + "deleteFailed": "Не удалось удалить ({status})" + } + }, + "pwaInstall": { + "title": "Установить ProxMenux Monitor", + "iosDescription": "Добавьте Monitor на главный экран для быстрого доступа.", + "androidDescription": "Добавьте Monitor как приложение, чтобы он открывался как обычное приложение.", + "addToHomeScreen": "Добавить на главный экран", + "installApp": "Установить приложение", + "ios": { + "stepShareBefore": "Нажмите кнопку", + "share": "Поделиться", + "stepShareAfter": "на нижней панели", + "stepChooseBefore": "Выберите", + "stepConfirmBefore": "Для подтверждения нажмите", + "add": "Добавить", + "stepConfirmAfter": "в правом верхнем углу" + }, + "android": { + "stepOpenMenu": "Откройте меню браузера", + "stepConfirm": "для подтверждения нажмите", + "install": "Установить", + "or": "или" + }, + "notNow": "Не сейчас", + "neverAgain": "Больше не показывать", + "insecure": { + "description": "При доступе по обычному HTTP Chrome может лишь добавить ярлык на главный экран.", + "howTo": "Чтобы установить Monitor как приложение, откройте его по HTTPS с действительным сертификатом: используйте сертификат Proxmox ACME в Admin → Security, обратный прокси-сервер или Tailscale.", + "docs": "Как настроить HTTPS", + "shortcut": "Пока можно добавить ярлык:" + } + }, + "vmMetrics": { + "title": "Метрики — {name}", + "type": "Тип", + "noData": "Нет доступных данных", + "errors": { + "loading": "Ошибка загрузки метрик" + }, + "timeframes": { + "hour": "1 час", + "day": "24 часа", + "week": "7 дней", + "month": "30 дней", + "year": "1 год" + }, + "charts": { + "cpu": "Загрузка процессора", + "memory": "Использование памяти", + "diskIo": "Дисковый ввод-вывод", + "networkIo": "Сетевой ввод-вывод" + }, + "series": { + "cpu": "CPU, %", + "memoryGb": "Память, ГБ", + "read": "Чтение", + "write": "Запись", + "download": "Скачать", + "upload": "Загрузить" + } + }, + "lxcTerminal": { + "title": "Терминал: {name} (ID: {id})", + "errors": { + "invalidVmid": "Недопустимый VMID — выполнение pct enter отклонено", + "noShell": "В образе этого контейнера нет командной оболочки, поэтому открыть терминал невозможно. Вывод контейнера доступен на вкладке «Журналы».", + "enterFailed": "Не удалось войти в контейнер." + }, + "commands": { + "listFiles": "Вывести список всех файлов с подробными сведениями", + "changeDirectory": "Сменить каталог", + "displayFile": "Показать содержимое файла", + "searchPattern": "Найти в файле текст по шаблону", + "findFiles": "Найти файлы по имени", + "diskUsage": "Показать использование дискового пространства", + "directorySizes": "Показать размеры каталогов", + "memoryUsage": "Показать использование памяти", + "runningProcesses": "Показать запущенные процессы", + "findProcess": "Найти запущенный процесс", + "serviceStatus": "Проверить состояние службы", + "restartService": "Перезапустить службу", + "updatePackages": "Обновить пакеты", + "installPackage": "Установить пакет", + "followLog": "Отслеживать изменения в файле журнала", + "changePermissions": "Изменить права доступа к файлу", + "changeOwner": "Изменить владельца файла", + "extractArchive": "Распаковать архив tar.gz", + "listContainers": "Вывести список запущенных контейнеров", + "listImages": "Вывести список образов Docker", + "showIpAddresses": "Показать IP-адреса", + "testConnectivity": "Проверить сетевое соединение", + "httpHeaders": "Получить заголовки HTTP", + "commandHistory": "Показать историю команд", + "clearScreen": "Очистить экран терминала" + } + }, + "restoreProgress": { + "title": "Ход выполнения действий после восстановления", + "startedAt": "Начало: {time}", + "finishedAt": "завершение: {time}", + "startedRelative": "начало: {time}", + "steps": "Шаги: {done}/{total}", + "exitCode": "код выхода {code}", + "status": { + "running": "Выполняется восстановление", + "complete": "Восстановление завершено", + "failed": "Не удалось выполнить восстановление" + }, + "componentStatus": { + "installing": "установка", + "ok": "OK", + "failed": "сбой" + }, + "time": { + "secondsAgo": "{count} с назад", + "minutesAgo": "{count} мин назад", + "hoursAgo": "{count} ч назад", + "daysAgo": "{count} дн. назад", + "estimating": "оценка времени…", + "secondsLeft": "осталось ~{count} с", + "minutesLeft": "осталось ~{count} мин", + "hoursLeft": "осталось ~{count} ч" + }, + "log": { + "noLog": "записей в журнале пока нет", + "full": "Полный журнал", + "issuesOnly": "Только проблемы", + "noOutput": "(нет вывода)" + }, + "rollback": { + "empty": "На этом узле нет записей, которые отсутствовали в резервной копии, из которой выполнено восстановление.", + "showCleanup": "Показать команды для ручной очистки", + "description": "Эти объекты есть на этом узле, но их не было в резервной копии, из которой выполнено восстановление. Проверьте их, прежде чем что-либо удалять.", + "vms": "Виртуальные машины, созданные после создания резервной копии", + "lxcs": "Контейнеры LXC, созданные после создания резервной копии", + "components": "Компоненты, установленные после создания резервной копии", + "uninstallComponentCommand": "# удалите {name} вручную через ProxMenux → Hardware & GPU" + }, + "sections": { + "components": "Компоненты", + "bootWarnings": "Предупреждения проверки корректности загрузки", + "rollbackDelta": "Различия при откате", + "log": "Журнал" + }, + "dataPools": { + "title": "Пулы данных ZFS — автоматический импорт", + "imported": "Импортирован", + "importedForced": "Импортирован (принудительно, hostid другого узла)", + "importedForcedHelp": "Новый hostid записан в метку пула — при следующей загрузке импорт должен пройти без проблем.", + "skippedPartial": "Пропущен (часть дисков отсутствует)", + "skippedPartialHelp": "Некоторые диски vdev не найдены в /dev/disk/by-id. Пул не импортирован, чтобы избежать автоматического импорта в деградированном состоянии. Устраните проблемы с дисками или импортируйте пул вручную с помощью zpool import.", + "skippedMissing": "Пропущен (все диски отсутствуют)", + "skippedMissingHelp": "На этом узле нет ни одного диска этого пула. Перенесите диски на этот узел или импортируйте пул на другом узле.", + "importFailed": "Не удалось импортировать", + "importFailedHelp": "ZFS отклонил импорт даже с -f. Проверьте zpool import и журнал ниже.", + "logPath": "Журнал: {path}" + }, + "history": { + "title": "Предыдущие восстановления", + "description": "Записи о выполненных восстановлениях архивируются после загрузки. Хранятся последние 20 записей.", + "empty": "Записей о предыдущих восстановлениях нет." + }, + "badges": { + "bootWarnings": "Предупреждения загрузки: {count}", + "zfsPools": "Пулы ZFS: {count}", + "needAttention": "требует внимания: {count}" + }, + "actions": { + "details": "Подробности", + "history": "История", + "dismiss": "Скрыть" + }, + "summary": { + "guests": "Гостевые системы", + "bindMountStubs": "Заглушки для bind-монтирования", + "staleNodesCleaned": "Устаревшие узлы очищены", + "components": "Компоненты" + } + }, + "terminal": { + "rotateHint": "Поверните телефон горизонтально, чтобы полностью видеть меню ProxMenux.", + "connected": "Подключено", + "disconnected": "Соединение разорвано", + "terminalCount": "{count} / 4 терминала", + "stackedLayout": "Расположение по строкам", + "gridLayout": "Сетка 2×2", + "new": "Новый", + "search": "Поиск", + "clear": "Очистить", + "searchCommands": "Поиск команд", + "onlineSource": "В сети — используется cheat.sh API", + "offlineSource": "Не в сети — используются локальные команды", + "searchDescription": "Поиск команд Linux и Proxmox", + "searchPlaceholder": "Поиск команд… (например, tar, docker, qm, systemctl)", + "searchingCheatSh": "Поиск в cheat.sh…", + "poweredByCheatSh": "На базе cheat.sh", + "send": "Отправить", + "noResults": "По запросу «{query}» ничего не найдено", + "tryDifferentSearch": "Попробуйте другую команду или проверьте правильность написания.", + "searchAnyCommand": "Поиск любой команды", + "trySearchingFor": "Попробуйте поискать:", + "noExamplesFound": "Примеры не найдены", + "reconnecting": "Повторное подключение…", + "reconnected": "Соединение успешно восстановлено", + "reconnectionFailed": "Не удалось восстановить соединение", + "connectionClosed": "Соединение закрыто", + "terminalTitle": "Терминал {number}", + "connectionTimeout": "Время ожидания соединения истекло. Проверьте подключение к сети и повторите попытку.", + "vpnTip": "Если вы используете VPN, убедитесь, что соединение стабильно.", + "websocketError": "Ошибка соединения WebSocket", + "commandDescriptions": [ + "Показать список всех узлов Proxmox", + "Показать список виртуальных машин на узле", + "Показать список контейнеров LXC на узле", + "Показать список хранилищ на узле", + "Показать список сетевых интерфейсов", + "Показать список всех виртуальных машин QEMU/KVM", + "Запустить виртуальную машину", + "Остановить виртуальную машину", + "Безопасно завершить работу виртуальной машины", + "Показать состояние виртуальной машины", + "Показать конфигурацию виртуальной машины", + "Создать снимок виртуальной машины", + "Показать список всех контейнеров LXC", + "Запустить контейнер LXC", + "Остановить контейнер LXC", + "Открыть командную оболочку в контейнере LXC", + "Показать конфигурацию контейнера", + "Показать состояние хранилищ", + "Показать содержимое хранилища", + "Проверить производительность системы Proxmox", + "Показать версию Proxmox VE", + "Показать состояние службы pve-cluster", + "Показать состояние кластера", + "Показать список узлов кластера", + "Показать состояние пула ZFS", + "Показать список всех пулов ZFS", + "Показать список файловых систем и томов ZFS", + "Вывести список всех файлов с подробными сведениями", + "Сменить каталог", + "Создать каталог", + "Рекурсивно удалить каталог", + "Скопировать файлы", + "Переместить или переименовать файлы", + "Показать содержимое файла", + "Найти в файле текст по шаблону", + "Найти файлы по имени", + "Изменить права доступа к файлу", + "Изменить владельца файла", + "Распаковать архив tar.gz", + "Создать архив tar.gz", + "Показать использование дискового пространства", + "Показать размеры каталогов", + "Показать использование памяти", + "Показать запущенные процессы", + "Найти запущенный процесс", + "Принудительно завершить процесс", + "Проверить состояние службы", + "Запустить службу", + "Остановить службу", + "Перезапустить службу", + "Обновить пакеты Debian/Ubuntu", + "Установить пакет Debian/Ubuntu", + "Удалить пакет", + "Вывести список запущенных контейнеров", + "Вывести список образов Docker", + "Открыть командную оболочку в контейнере", + "Показать IP-адреса", + "Проверить сетевое соединение", + "Получить заголовки HTTP", + "Скачать файл", + "Подключиться через SSH", + "Скопировать файл через SSH", + "Отслеживать файл журнала в реальном времени", + "Показать историю команд", + "Очистить экран терминала" + ] + }, + "scriptTerminal": { + "processing": "Обработка...", + "controlSequences": "Управляющие последовательности", + "cancelInterrupt": "Отмена/Прерывание", + "endOfInput": "Конец ввода", + "exitNano": "Выход (nano)", + "searchHistory": "Поиск по истории", + "clipboard": "Буфер обмена", + "copySelection": "Копировать выделенное", + "paste": "Вставить", + "connected": "Подключено", + "connecting": "Подключение", + "disconnected": "Соединение разорвано", + "online": "В сети", + "connectingStatus": "Подключение...", + "offline": "Нет подключения", + "websocketError": "Произошла ошибка WebSocket", + "connectionClosed": "Соединение закрыто", + "completedSuccessfully": "Скрипт успешно выполнен", + "cancelled": "Операция отменена.", + "completedWithError": "Скрипт завершился с кодом ошибки {code}", + "yes": "Да", + "yourInput": "Ваш ввод:", + "submit": "Отправить", + "ok": "OK" + }, + "apps": { + "searchPlaceholder": "Поиск приложения или CT…", + "searchAriaLabel": "Поиск", + "filterAll": "Все категории", + "filterAriaLabel": "Фильтр по категории", + "sortAriaLabel": "Сортировать по", + "sortName": "Название", + "sortId": "ID", + "sortCategory": "Категория", + "countOne": "1 приложение", + "countMany": "Приложений: {n}", + "uncategorized": "Без категории", + "openAriaLabel": "Открыть {name} в новой вкладке", + "openGuestAriaLabel": "Открыть {name} ({type} {id})", + "emptyTitle": "Пока нет приложений с веб-ссылками.", + "emptyHint": "Добавьте веб-ссылку для любого приложения на вкладке «Приложение» контейнера (CT), чтобы оно появилось здесь.", + "customLinkAdd": "Добавить ссылку", + "editModeToggle": "Изменить", + "editModeDone": "Готово", + "customLinkNewTitle": "Новая веб-ссылка", + "customLinkEditTitle": "Изменить веб-ссылку", + "customLinkEditAria": "Изменить пользовательскую ссылку {name}", + "openUpdatesAria": "Открыть вкладку «Обновления» для {name}", + "openUpdatesTitle": "Доступно обновление — откройте вкладку «Обновления»", + "customLinkName": "Название", + "customLinkNamePlaceholder": "Например, Моё приложение", + "customLinkUrl": "URL", + "customLinkLogo": "URL логотипа (необязательно)", + "customLinkLogoPlaceholder": "Например, https://example.com/logo.webp", + "customLinkCategory": "Категория (необязательно)", + "customLinkBinding": "Привязка к", + "customLinkBindingNone": "Не привязана ни к одной гостевой системе", + "customLinkBindingHelp": "Привяжите эту ссылку к виртуальной машине (VM) или контейнеру (CT), чтобы добавить идентификатор и имя гостевой системы на карточку и переходить к ней одним щелчком.", + "customLinkSave": "Сохранить", + "customLinkCreate": "Создать", + "customLinkCancel": "Отмена", + "customLinkDelete": "Удалить", + "customLinkSaveError": "Не удалось сохранить", + "customLinkDeleteError": "Не удалось удалить", + "categoryLabels": { + "arrSuite": "*Arr Suite", + "aiCodingDevTools": "ИИ / Программирование и инструменты разработки", + "adblockDns": "Блокировка рекламы и DNS", + "authenticationSecurity": "Аутентификация и безопасность", + "automationScheduling": "Автоматизация и планирование", + "backupRecovery": "Резервное копирование и восстановление", + "businessErp": "Бизнес и ERP", + "communicationCommunity": "Общение и сообщества", + "containersDocker": "Контейнеры и Docker", + "dashboardsFrontends": "Панели и веб-интерфейсы", + "databases": "Базы данных", + "documentsNotes": "Документы и заметки", + "filesDownloads": "Файлы и загрузки", + "financeBudgeting": "Финансы и планирование бюджета", + "gamingLeisure": "Игры и досуг", + "hostManagement": "Управление хостами", + "iotSmartHome": "IoT и умный дом", + "mediaStreaming": "Мультимедиа и потоковое вещание", + "messagingNotifications": "Сообщения и уведомления", + "miscellaneous": "Разное", + "monitoringAnalytics": "Мониторинг и аналитика", + "nvrCameras": "Сетевые видеорегистраторы и камеры", + "networkFirewall": "Сеть и межсетевые экраны", + "operatingSystemsAppliances": "Операционные системы и программные комплексы", + "productivityWorkflows": "Продуктивность и рабочие процессы", + "remoteAccessVpn": "Удалённый доступ и VPN", + "webserversProxies": "Веб-серверы и прокси", + "zigbeeZwaveMatter": "ZigBee, Z-Wave и Matter" + } + }, + "audit": { + "presentation": { + "backupAge": "Возраст резервной копии", + "backupLimit": "Используемый предел", + "limitDeclared": "Предел, заданный пользователем", + "limitSchedule": "Расписание + запас", + "limitReference": "Опорный период", + "verifiedChecks": "Подтверждённые проверки", + "unverifiedChecks": "Неподтверждённые проверки", + "checkName": "Проверить", + "verified": "Проверено", + "verificationScope": "Применимые проверки подтверждены. Охват проверок не отражает состояние или безопасность сервера.", + "noApplicable": "В этой оценке нет применимых проверок.", + "noJob": "Нет задания по расписанию", + "guest": "Гостевая система", + "guests": "гостевые системы", + "host": "Хост", + "resource": "Ресурс", + "data": "Данные", + "metadata": "Метаданные", + "result": "Результат", + "fact": "Наблюдаемый факт", + "records": "записи", + "unscheduled": "гостевые системы без задания по расписанию", + "excludedDisks": "исключённые диски", + "disks": "Диски", + "destination": "Место назначения", + "lastCopy": "Последняя сохранённая копия", + "ageLimit": "Давность / предел", + "noDestination": "Место назначения не настроено", + "notFound": "В проверенной области копия не найдена", + "promiscuous": "Интерфейсы в неразборчивом режиме", + "noDescription": "Описание недоступно", + "occurrence": "Случай", + "occurrences": "случаи", + "detail": "Подробности", + "technical": "Технические подтверждающие данные", + "annex": "Техническое приложение", + "overview": "Обзор результатов проверки", + "incomplete": "Неполная оценка", + "assessment": "Оценка", + "noGlobalScore": "Результаты описывают отдельные критерии; общая оценка безопасности не рассчитывается.", + "coverage": "Охват резервным копированием по расписанию", + "scheduled": "С заданием по расписанию", + "copyScope": "Наличие настроенного задания не подтверждает наличие сохранённой резервной копии или копии, пригодной для восстановления.", + "detailsLink": "Ссылка на подтверждающие данные", + "noSubscription": "Подписка не найдена", + "otherDevices": "Другие устройства в группе", + "unversioned": "Версия не зафиксирована", + "notInstalled": "Не установлено", + "noPendingRecorded": "Ожидающих установки обновлений не зафиксировано", + "originalEvidence": "Исходные подтверждающие данные", + "evidenceObserved": "Наблюдаемые подтверждающие данные", + "evidenceExcerpt": "Компактное представление. Полные исходные подтверждающие данные сохраняются вместе с этой оценкой.", + "annexScope": "Полный набор исходных подтверждающих материалов для результатов, которые требуют внимания, содержат наблюдение или которые не удалось проверить.", + "readOnlyScope": "При оценке проверяются настройки и состояние хоста. В ходе проверки возможна запись отчётов и журналов; проверки состояния загрузки могут временно монтировать системные разделы EFI.", + "capacity": "Ёмкость", + "used": "Использовано", + "free": "Свободно", + "reasons": { + "agentNotDeclared": "Гостевой агент не указан в конфигурации", + "arcConflictingSettings": "Постоянные настройки противоречат друг другу", + "arcMinAboveMax": "Нижняя граница ARC выше верхней", + "arcPendingReboot": "Постоянная настройка отличается от загруженного значения параметра", + "arrayDegraded": "Массив работает с меньшим числом устройств, чем было при его создании", + "arrayNotActive": "Не активен", + "arrayRebuilding": "В массиве не хватает устройств, идёт перестроение", + "backupRunFailed": "Запуск завершился с ошибкой", + "backupRunRecovered": "Предыдущий запуск завершился с ошибкой, а последующий — успешно", + "bondNoMembersUp": "Не работает, ни один из интерфейсов в составе bond не работает", + "bondRedundancyLost": "Не работает; в составе bond остаются другие работающие соединения", + "bootEspMissingNewest": "Не содержит новейшего ядра, которое есть на остальных загрузочных разделах", + "bootEspOutOfSync": "Не синхронизирован с остальными: при загрузке будет использовано другое ядро", + "bootSingleEsp": "Настроен один загрузочный раздел", + "bootToolReported": "Сообщение от proxmox-boot-tool", + "cephCheckRaised": "Выявлено проверкой Ceph", + "channelIncomplete": "Канал включён, но часть его настроек отсутствует", + "clusterInquorate": "Нет кворума: изменения в кластере отклоняются", + "clusterMemberAbsent": "Настроенный участник не виден кластеру", + "clusterSingleLink": "Задано одно соединение corosync", + "dataExcludedFromBackup": "Данные исключены из резервной копии гостевой системы", + "deliveryFailing": "Последние попытки доставки не привели к отправке", + "destinationUnavailable": "Настроенное место назначения недоступно", + "diskErrorsActive": "Ошибка зарегистрирована за рассматриваемый период", + "diskErrorsPast": "Ошибки отмечались ранее, но за рассматриваемый период их нет", + "diskWarningsActive": "Предупреждение устройства зарегистрировано за рассматриваемый период", + "diskWarningsPast": "Ранее поступали предупреждения об устройстве, но за рассматриваемый период их нет", + "essentialServiceDown": "Служба, необходимая для ответа Proxmox на запросы, не активна", + "exemptByPolicy": "Указано, что это не требуется, поэтому объект не учитывается", + "expectedButUncovered": "Указано, что требуется резервная копия, но ни одно включённое задание не выбирает этот объект", + "expectedToAutostart": "Указано, что объект должен запускаться вместе с хостом, но он не запускается", + "filesystemExhausted": "Свободного места не осталось", + "filesystemNearlyFull": "Использование места достигло порога, требующего проверки, или превысило его", + "filesystemReadOnly": "По данным ядра, эта файловая система смонтирована в режиме «только для чтения»: запись в неё больше не принимается", + "haManagerNotReady": "Ни в активном состоянии, ни в состоянии ожидания: не может принять службу под управление", + "haNoMaster": "Нет управляющего компонента: некому определять, где должна работать служба", + "haServiceError": "Объект остался в состоянии ошибки и больше не находится под управлением", + "haServiceTransitioning": "Переход между состояниями", + "hostArchiveMissing": "В записи о задании указан архив, который больше не хранится", + "hostBackupJobFailed": "Задание завершилось с ошибкой", + "hostBackupStale": "Возраст превышает установленный предел", + "hostBackupUnscheduled": "Резервная копия хранится, но расписание создания следующей копии отсутствует", + "hostNoRetrievableCopy": "Нет ни одной копии, наличие которой эта проверка ещё может подтвердить", + "indexesStale": "Индексы пакетов давно не обновлялись", + "inodesExhausted": "Свободных индексных дескрипторов (inode) не осталось", + "inodesNearlyExhausted": "Использование индексных дескрипторов (inode) достигло порога, требующего проверки, или превысило его", + "kernelAwaitingReboot": "Ядро установлено, но сейчас используется другое ядро", + "lynisReportStale": "Возраст отчёта Lynis составляет {days} дн. и превышает установленный контрольный срок", + "lynisWarning": "Зафиксировано в ходе аудита Lynis", + "multipathNoPath": "Не осталось ни одного пути доступа", + "multipathPathDown": "Работает с меньшим числом путей доступа", + "noAutostart": "Не запускается вместе с хостом", + "noConfigurationReference": "В проверенных конфигурациях ссылок не найдено", + "noJobSelectsGuest": "Не выбрана ни одним включённым заданием резервного копирования", + "noPhysicalPort": "Не содержит физических портов", + "noStoredBackup": "Сохранённая резервная копия не найдена", + "noStoredBackupUnscheduled": "Нет задания по расписанию; сохранённая резервная копия не найдена", + "olderThanFallback": "Возраст резервной копии превышает контрольный период.", + "olderThanObjective": "Возраст резервной копии превышает заданный пользователем предел.", + "olderThanSchedule": "Возраст резервной копии превышает интервал по расписанию с учётом допустимого запаса времени.", + "overprovisioned": "Выделенный виртуальный объём превышает ёмкость пула", + "packageAwaitingRestart": "Установлен и требует перезагрузки", + "pastServiceLife": "Превышен порог срока службы, используемый при планировании", + "pinnedToHostCpu": "Привязана к модели процессора хоста", + "poolDeviceErrors": "Устройство регистрирует ошибки чтения, записи или контрольных сумм", + "poolNotOnline": "Не в состоянии online", + "rebootMarkerWithoutPackages": "Маркер необходимости перезагрузки создан без указания пакета", + "recoveryKeyLocalOnly": "Согласно зарегистрированному режиму хранения ключа, ключ шифрования резервных копий хранится только на этом узле", + "replicationDisabled": "Приостановлена", + "replicationFailing": "Последний запуск завершился с ошибкой", + "replicationNeverRan": "Ни одна синхронизация ещё не завершена", + "replicationOverdue": "С момента последней синхронизации прошло больше времени, чем допускает расписание задания", + "retentionNotDeclared": "Политика хранения не задана; сохраняются все резервные копии", + "retentionOnServer": "Удаление устаревших резервных копий выполняется на сервере резервного копирования заданиями, недоступными этому узлу для чтения", + "runsPrivileged": "Работает в привилегированном режиме, используя общее с хостом пространство имён пользователей", + "scrubOverdue": "С момента последней завершённой проверки scrub прошло больше времени, чем допускает порог проверки", + "storageNearlyFull": "Заполнение достигло порога проверки или превысило его", + "storageUnreachable": "Недоступно", + "thinDataPressure": "Объём записанных данных близок к ёмкости пула", + "thinMetadataPressure": "Область метаданных почти заполнена; её заполнение переводит пул в режим «только для чтения»", + "unitFailed": "systemd прекратил повторные попытки запуска", + "verificationFailedOnly": "При проверке была прочитана самая новая резервная копия, и её целостность оказалась нарушена; ни одна другая копия этой гостевой системы не прошла проверку", + "verificationFailedWithFallback": "При проверке была прочитана самая новая резервная копия, и её целостность оказалась нарушена; более ранняя копия успешно прошла проверку", + "verificationNotRun": "Ни одно задание проверки ещё не прочитало эту копию для проверки" + }, + "lynisTest": "Тест", + "lynisWarning": "Предупреждение", + "couldNotRead": "Не удалось прочитать" + }, + "title": "Audit и отчёт", + "loading": "Загрузка оценки…", + "run": "Запустить оценку", + "running": "Выполняется оценка…", + "neverRun": "Оценка этого хоста ещё не проводилась.", + "lastRun": "Последняя оценка: {when}", + "stale": "Дней с последней оценки: {days}", + "readOnlyNotice": "При оценке проверяются настройки и состояние хоста. В ходе проверки возможна запись отчётов и журналов; проверки состояния загрузки могут временно монтировать системные разделы EFI.", + "unverifiedChecks": "Не выполнены: {checks}. В подтверждающих данных каждой проверки указано, что ей не удалось прочитать.", + "noFindings": "Нет результатов, соответствующих текущему фильтру.", + "affectedCount": "Затронуто: {count}", + "acceptedNotice": "Количество принятых рисков, зарегистрированных на этом хосте: {count}.", + "noActionNeeded": "Никаких действий не требуется. Результат этой проверки соответствует ожидаемому.", + "couldNotEvaluate": "Не удалось выполнить оценку по этой проверке, поэтому она не даёт ни положительного, ни отрицательного заключения. В подтверждающих данных указано, что не удалось прочитать.", + "reviewOn": "Дата пересмотра: {when}", + "reviewDue": "Пора пересмотреть — решение остаётся в силе", + "reviewDueNotice": "Принятые решения, требующие пересмотра: {count}.", + "states": { + "fail": "Сбой", + "warn": "Предупреждение", + "accepted": "Риск принят", + "pass": "Проверка пройдена", + "not_applicable": "Неприменимо", + "unknown": "Не проверено" + }, + "areas": { + "all": "Все", + "system": "Система", + "storage": "Хранилище", + "network": "Сеть", + "security": "Безопасность", + "backup": "Резервная копия", + "guests": "Гостевые системы", + "hardware": "Оборудование" + }, + "detail": { + "why": "Контекст", + "whatItMeans": "Что это означает", + "whatToDo": "Что делать", + "evidence": "Подтверждающие данные", + "affected": "Затронутые объекты", + "acceptedRisk": "Риск принят", + "sources": "Источники и даты сбора данных" + }, + "errors": { + "runFailed": "Не удалось запустить оценку." + }, + "checks": { + "backup": { + "guest_coverage": { + "title": "Охват резервным копированием", + "explanation": "Резервная копия защищает только то, что фактически выбрано в задании. Эта проверка сопоставляет гостевые системы на этом узле с заданиями, которые выполняются здесь, чтобы системы, для которых никто не создаёт резервных копий, явно отображались как неохваченные, а не считались защищёнными каким-либо другим способом.", + "nextStep": { + "noJobs": "Создайте на этом узле задание резервного копирования и выберите гостевые системы с данными, которые вы не хотели бы воссоздавать вручную. Существующее, но отключённое задание не включает ни одной гостевой системы.", + "uncovered": "Для каждой из этих гостевых систем определите, есть ли в ней что-либо, что стоит сохранить. Добавьте такие системы в задание; для остальных укажите в политике, что резервное копирование не требуется, чтобы они больше не учитывались здесь.", + "excludedData": "Откройте список исключений каждого задания и убедитесь, что можете позволить себе потерять исключённые данные. Исключение, добавленное для ускорения задания, оставляет исключённые данные без защиты.", + "uncoveredExpected": "Согласно политике, для этих гостевых систем требуется резервное копирование, но они не выбраны ни в одном включённом задании. Добавьте их в задание или измените требования политики, чтобы настройки и политика соответствовали друг другу." + }, + "rationale": "Включённые задания резервного копирования на этом узле, гостевые системы, выбранные в каждом из них, и данные гостевых систем, исключённые из копирования. Настроенный охват не доказывает наличия пригодной для использования резервной копии. Должна ли невыбранная гостевая система быть защищена, определяется заданной политикой.", + "summary": { + "noJobs": "На этом узле не настроено ни одного задания резервного копирования для размещённых на нём гостевых систем ({total})", + "covered": "Все гостевые системы ({total}) выбраны во включённых заданиях резервного копирования", + "uncovered": "Не выбраны ни в одном включённом задании резервного копирования: {count} из {total} гостевых систем", + "excludedData": "Требуют проверки исключения дисков или точек монтирования: {count}", + "uncoveredExpected": "Гостевые системы, для которых требуется резервное копирование, не выбраны ни в одном включённом задании: {required}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "last_backup_age": { + "title": "Давность сохранённых резервных копий", + "explanation": "Наличие задания не означает наличия резервной копии. Эта проверка считывает последнюю сохранённую копию каждой гостевой системы и определяет, сколько времени прошло с момента её записи. Именно к этому моменту пришлось бы вернуться, если бы восстановление потребовалось сегодня.", + "nextStep": { + "stale": "Выясните, почему задание перестало создавать резервные копии этих гостевых систем: возможно, оно отключено, его расписание никогда не срабатывает или его запуски завершаются с ошибками. Проверка результатов запусков показывает, чем завершился последний запуск каждого задания.", + "noBackups": "Ни одна сохранённая резервная копия не соответствует гостевым системам на этом узле. Если задания записывают копии в место назначения, недоступное этому узлу для чтения, это ожидаемо; в противном случае задания ничего не создают.", + "attention": "Проверьте перечисленные гостевые системы. У каждой из них либо нет недавней резервной копии, либо давность имеющейся копии превышает используемый предел." + }, + "rationale": "Давность: время, прошедшее с момента создания последней сохранённой резервной копии. Используемый предел: контрольный срок, с которым сравнивается давность этой копии.", + "summary": { + "recent": "Все проверки пар «гостевая система / место назначения» ({total}) подтверждают соблюдение установленной политики давности копий", + "stale": "У {count} из {total} гостевых систем нет резервной копии за последние 30 дней", + "noBackups": "Ни одна сохранённая резервная копия не соответствует гостевой системе на этом узле", + "attention": "Требуют рассмотрения {count} из {total} проверок пар «гостевая система / место назначения»", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "retention_defined": { + "title": "Хранение резервных копий", + "explanation": "Политика хранения определяет, сколько копий сохраняется и как долго. Без неё место назначения заполняется, пока не перестанет принимать новые копии, а о резервной копии, которую не удалось записать, вы узнаете именно в тот день, когда она понадобится.", + "nextStep": { + "missing": "Задайте политику хранения для этих заданий или для хранилища, в которое они записывают копии. Proxmox сначала использует настройку задания, затем настройку хранилища, затем настройку узла по умолчанию.", + "notDeclared": "Эти задания сохраняют все создаваемые копии. Для некоторых мест назначения это осознанный выбор, но убедитесь, что там достаточно места для дальнейшего роста объёма данных.", + "onServer": "Эти задания записывают копии на сервер резервного копирования, который удаляет устаревшие копии по собственным правилам. С этого узла нельзя получить сведения о том, какие копии он сохраняет, поэтому проверьте политику хранения на самом сервере." + }, + "rationale": "Proxmox определяет политику хранения в следующем порядке: настройка задания, затем настройка хранилища, затем настройка узла по умолчанию. Политику хранения, применяемую сервером резервного копирования, нельзя прочитать с этого узла.", + "summary": { + "allDefined": "Для всех заданий ({total}) определена действующая настройка хранения", + "missing": "Для {count} из {total} включённых заданий не задана политика хранения", + "notDeclared": "{count} из {total} заданий сохраняют все копии: для них не задана политика хранения", + "onServer": "{count} из {total} заданий записывают копии на сервер резервного копирования, который удаляет устаревшие копии с помощью собственных заданий", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "verification_state": { + "title": "Проверка целостности резервных копий", + "explanation": "Проверка целостности считывает сохранённую копию и подтверждает, что она не повреждена. Она позволяет отличить копию, которая просто существует, от копии, которую можно прочитать, — это различие становится важным именно в тот день, когда копия понадобится.", + "nextStep": { + "failed": "На резервную копию, не прошедшую проверку, нельзя полагаться. Проверьте, прошла ли проверку более ранняя резервная копия той же гостевой системы, и проверьте хранилище, в котором находятся копии, не прошедшие проверку.", + "notVerified": "Пока ничто не подтверждает, что эти резервные копии можно прочитать. Сервер резервного копирования может выполнять проверку по собственному расписанию, независимо от задания, создавшего эти копии." + }, + "rationale": "Результат проверки, зафиксированный Proxmox Backup Server для последней резервной копии каждой гостевой системы, а также сведения о том, прошла ли проверку более ранняя копия той же гостевой системы. Проверка считывает сохранённую резервную копию; это не восстановление.", + "summary": { + "allVerified": "Целостность последних резервных копий всех гостевых систем ({total}) подтверждена проверкой", + "failed": "Не прошли проверку последние резервные копии: {failed} из {total} проверенных", + "notVerified": "Не проверены последние резервные копии: {pending} из {total}", + "evaluationFailed": "Не удалось прочитать состояние проверки" + } + }, + "job_results": { + "title": "Результаты запусков резервного копирования", + "explanation": "Как завершился последний запуск каждого задания согласно записям этого узла. Задание может быть настроено безупречно и всё же завершаться с ошибкой каждую ночь — здесь это будет видно.", + "nextStep": { + "someFailed": "Прочитайте сведения об ошибке в журнале задач для этих запусков. Считайте запуск, завершившийся с ошибкой, неуспешным. Прежде чем полагаться на резервную копию, убедитесь, что для охваченных этим запуском гостевых систем есть доступные копии.", + "recovered": "Для этих гостевых систем один из предыдущих запусков завершился с ошибкой, а последующий — успешно. С прежней ошибкой всё равно стоит ознакомиться: сбой, исчезнувший сам собой, часто повторяется." + }, + "rationale": "Как завершился последний зарегистрированный запуск для каждой гостевой системы согласно журналу задач узла. Оценивается только последний запуск. Журнал хранится в течение ограниченного времени.", + "summary": { + "allSucceeded": "Все зарегистрированные запуски резервного копирования ({total}) завершились без ошибок", + "someFailed": "С ошибкой завершились запуски резервного копирования: {count} из {total} зарегистрированных", + "evaluationFailed": "Не удалось прочитать журнал задач", + "recovered": "Для {count} из {total} гостевых систем один из предыдущих запусков завершился с ошибкой, а последующий — успешно" + } + }, + "host_recovery": { + "title": "Восстановление хоста", + "explanation": "Резервное копирование гостевых систем не обеспечивает восстановление узла. Эта проверка выясняет, сохранена ли где-либо собственная конфигурация узла — настройки хранилищ, сети и пользователей, — от которой зависит возможность восстановления самого хоста.", + "nextStep": { + "noHostBackup": "Здесь нет записи о сохранённой резервной копии конфигурации хоста. Если такой копии нет и в другом месте, недоступном этому узлу, при восстановлении придётся воссоздавать настройки хранилищ, сети и пользователей вручную по имеющимся записям.", + "attention": "Просмотрите перечисленные записи о резервном копировании конфигурации хоста. Каждая из них требует внимания: запуск завершился с ошибкой, место назначения больше недоступно или возраст копии превышает установленный предел.", + "scheduledOnly": "Таймер настроен на создание резервных копий конфигурации хоста, но ни одна копия ещё не сохранена. До первого запуска собственная конфигурация узла не защищена." + }, + "rationale": "Резервные копии хоста согласно записям ProxMenux: каждое выполненное задание, время его запуска, результат, место назначения и наличие копии в нём на данный момент. Для задания, записывающего данные на сервер резервного копирования, локальный путь не указывается. Для ключей шифрования указываются только их количество и зафиксированный режим депонирования.", + "summary": { + "noHostBackup": "Нет сохранённой резервной копии конфигурации хоста, и ни один таймер не настроен на её создание", + "protected": "Собственная конфигурация узла сохранена в архивах ({total}), возраст которых не превышает установленный предел", + "attention": "Выявлено проблем: {count}; проверено записей конфигурации хоста: {total}", + "scheduledOnly": "Резервное копирование конфигурации хоста запланировано с помощью таймеров ({count}); локально архивы не хранятся" + } + } + }, + "system": { + "pending_reboot": { + "title": "Состояние перезапуска", + "rationale": "Маркер `/var/run/reboot-required` и пакеты, перечисленные в `/var/run/reboot-required.pkgs`. Отсутствие маркера не означает, что ничего не требуется перезапускать.", + "summary": { + "none": "Запросов на перезапуск нет", + "pending": "Установлены и ожидают перезапуска: {count}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "enterprise_repo_without_subscription": { + "title": "Репозиторий Enterprise", + "rationale": "Ссылки на `enterprise.proxmox.com` в `/etc/apt/sources.list` и `sources.list.d` сопоставляются со статусом, который возвращает `pvesubscription get`.", + "summary": { + "notEnabled": "Репозиторий Enterprise не включён", + "subscribed": "Для репозитория Enterprise есть подписка", + "unsubscribed": "Репозиторий Enterprise включён без активной подписки", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "memory_overcommit": { + "title": "Распределение памяти", + "rationale": "Верхний предел `memory` в конфигурации каждой гостевой системы сопоставляется с MemTotal; запущенные гостевые системы учитываются отдельно. Контейнеры потребляют память в пределах этого лимита; виртуальные машины без ballooning резервируют весь этот объём.", + "summary": { + "withinRatio": "Гостевым системам выделено {percent}% памяти хоста", + "aboveRatio": "Гостевым системам выделено {percent}% памяти хоста", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "time_synchronisation": { + "title": "Синхронизация времени", + "rationale": "Значения NTP и NTPSynchronized, сообщаемые `timedatectl`. Участие в кластере, проверка сертификатов и порядок записей в журналах зависят от согласованности часов. Часы могут корректироваться другим механизмом.", + "summary": { + "synchronised": "Часы синхронизированы с источником времени", + "disabled": "Синхронизация времени отключена", + "notSynchronised": "Синхронизация времени включена, но часы не синхронизированы", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "kernel_current": { + "title": "Работающее ядро", + "rationale": "Работающее ядро сопоставляется с ядром, которое хост загрузит при следующем запуске, по данным `proxmox-boot-tool`. Более новое установленное ядро могут намеренно не использовать; если после перезапуска ядра различаются, значит, выбранное ядро не было загружено.", + "summary": { + "current": "Работающее ядро {version} — то же, которое хост загрузит при следующем запуске", + "newerAvailable": "Хост работает с ядром {running}, при этом установлено ядро {newest}", + "newerSelected": "Хост работает с ядром {running} и загрузит {selected} при следующем перезапуске", + "wouldDowngrade": "На хосте работает {running}, но при следующей перезагрузке будет запущена более старая версия {selected}", + "bootTargetUnknown": "На хосте работает {version}; не удалось определить ядро, выбранное для следующей загрузки", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "security_updates": { + "title": "Обновления безопасности", + "rationale": "Пакеты, ожидающие обновления из репозитория обновлений безопасности, по результатам имитации `apt-get upgrade`. Количество отражает данные apt, а не серьёзность проблем, исправляемых каждым пакетом.", + "summary": { + "none": "Нет пакетов, ожидающих обновления", + "noSecurity": "Ожидают установки обновления: {total}; ни одно из них не поступает из репозитория обновлений безопасности", + "pending": "Из репозитория обновлений безопасности поступают {count} из {total} ожидающих установки обновлений", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "journal_size": { + "title": "Размер журнала", + "rationale": "Размер журнала на диске относительно применимого ограничения: SystemMaxUse, если оно задано, иначе — ограничение по умолчанию для journald, равное одной десятой объёма файловой системы, в которой хранится журнал.", + "summary": { + "bounded": "Журнал занимает {size} и не превышает действующее ограничение", + "large": "Журнал занимает {size} на диске", + "nearCap": "Журнал занимает {size}, что составляет {percent}% от его действующего предельного размера", + "capUnknown": "Журнал занимает {size}; не удалось определить действующее ограничение", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "swap_configured": { + "title": "Память подкачки", + "rationale": "Активные области подкачки по данным `swapon` и их суммарный объём относительно объёма памяти хоста. Никакого обязательного соотношения с объёмом памяти нет; нагрузка на память оценивается отдельно.", + "summary": { + "active": "Активный объём подкачки: {size}", + "none": "Нет активных областей подкачки", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "filesystem_capacity": { + "title": "Ёмкость файловых систем хоста", + "rationale": "Место и inode в файловых системах, необходимых самому хосту: корневой файловой системе, /var, /var/log и по пути локального хранилища. Если свободное место есть, но inode закончились, файловая система перестаёт работать так же, как при полном заполнении.", + "summary": { + "withinLimits": "Проверено файловых систем хоста: {total}; пороговые значения, требующие проверки, не достигнуты", + "pressure": "Количество показателей, достигших или превысивших пороговое значение, требующее проверки: {count}", + "evaluationFailed": "Не удалось получить данные об использовании файловых систем" + } + }, + "update_chain": { + "title": "Давность обновления индексов пакетов APT", + "rationale": "Время, когда APT в последний раз сохранил индекс пакетов на этом хосте. Если репозиторий отвечает «не изменён», его индекс остаётся без изменений. Доступность репозиториев не проверяется.", + "summary": { + "current": "Индексы пакетов обновлены {days} дн. назад", + "stale": "Индексы пакетов в последний раз обновлены {days} дн. назад", + "indexAgeUnknown": "Не удалось определить давность индексов пакетов" + } + }, + "notification_delivery": { + "title": "Результат последней доставки уведомлений", + "rationale": "Включённые каналы и последний сохранённый результат доставки для каждого из них. При отсутствии истории доставка считается неподтверждённой; если после сбоя доставка прошла успешно, прежний сбой не считается текущим. Тестовое уведомление не отправляется.", + "summary": { + "delivering": "Последняя зарегистрированная доставка прошла успешно для всех включённых каналов ({total})", + "failing": "У {count} из {total} включённых каналов есть проблема с конфигурацией или последняя доставка завершилась сбоем", + "noChannels": "Ни один канал уведомлений не включён", + "evaluationFailed": "Не удалось прочитать историю доставки" + } + }, + "cluster_quorum": { + "title": "Кворум кластера", + "rationale": "Состояние кворума по данным кластера, сопоставление настроенных узлов с видимыми в данный момент и количество объявленных каналов связи corosync. Сведения о каналах связи считываются из конфигурации; проверка их работоспособности не выполняется.", + "summary": { + "standalone": "Этот узел не входит в кластер", + "quorate": "В кластере есть кворум; настроено узлов: {total}, каналов связи corosync: {links}", + "attention": "Количество замечаний: {count}; настроенных узлов: {total}", + "evaluationFailed": "Не удалось прочитать состояние кластера" + } + }, + "boot_loader": { + "title": "Загрузчик", + "rationale": "Системные разделы EFI, о которых сообщает proxmox-boot-tool, и ядра на каждом из них. Команда proxmox-boot-tool status может временно монтировать системные разделы EFI; попытка загрузки не выполняется.", + "summary": { + "synchronised": "На всех загрузочных разделах ({total}) находятся одинаковые ядра", + "attention": "Требуют проверки {count} из {total} загрузочных разделов", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "failed_units": { + "title": "Основные службы и юниты в состоянии сбоя", + "rationale": "Юниты, которые systemd перестал перезапускать после исчерпания попыток, и службы, необходимые для работы Proxmox. Состояние служб считывается по их именам, поскольку неактивная служба не всегда находится в состоянии сбоя. Назначение каждого юнита здесь не анализируется.", + "summary": { + "allRunning": "Все основные службы ({total}) активны, ни один юнит не находится в состоянии сбоя", + "attention": "Количество замечаний по юнитам: {count}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "ha_state": { + "title": "Высокая доступность", + "rationale": "Главный узел HA, диспетчер ресурсов каждого узла и состояние каждой управляемой службы по данным `ha-manager status`. Сведения о кворуме приводятся в проверке кластера. Службы не запускаются, не останавливаются и не мигрируют.", + "summary": { + "managed": "Все управляемые службы ({total}) находятся в установившемся состоянии; количество узлов: {nodes}", + "attention": "Обнаружено замечаний: {count}; управляемых служб: {total}", + "evaluationFailed": "Не удалось выполнить проверку" + } + } + }, + "guests": { + "privileged_containers": { + "title": "Привилегии контейнеров", + "rationale": "Параметр `unprivileged` в конфигурации каждого контейнера. Его отсутствие означает, что контейнер использует общее с хостом пространство имён пользователей, что необходимо для некоторых рабочих нагрузок.", + "summary": { + "allUnprivileged": "Все контейнеры ({total}) — непривилегированные", + "privileged": "Контейнеры, работающие с привилегиями: {count} из {total}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "qemu_without_agent": { + "title": "Гостевой агент на виртуальных машинах", + "rationale": "Параметр `agent` в конфигурации каждой виртуальной машины. Этот параметр указывает, что агент указан в конфигурации, но не подтверждает, что он отвечает.", + "summary": { + "allHaveAgent": "Гостевой агент указан в конфигурации всех виртуальных машин ({total})", + "missingAgent": "Виртуальные машины, в конфигурации которых не указан гостевой агент: {count} из {total}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "autostart": { + "title": "Автоматический запуск", + "rationale": "Параметр `onboot` каждой гостевой системы, за исключением шаблонов и гостевых систем под управлением HA. Должна ли гостевая система запускаться снова автоматически, определяется заданной политикой.", + "summary": { + "allAutostart": "Все гостевые системы ({total}) запускаются вместе с хостом", + "notAutostart": "Гостевые системы, которые не запускаются вместе с хостом: {count} из {total}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "stuck_snapshots": { + "title": "Состояние снимков", + "rationale": "Состояние снимков, их возраст и активные задачи. Недавняя операция или операция без указанной даты не считается прерванной.", + "summary": { + "noSnapshots": "Ни у одной гостевой системы нет снимков", + "allComplete": "Все снимки ({total}) завершены", + "stuck": "Снимки, для которых операция осталась незавершённой: {count} из {total}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "cpu_host_type": { + "title": "Модель виртуального процессора", + "rationale": "Значение `cpu` каждой виртуальной машины. `host` предоставляет гостевой системе набор возможностей физического процессора, что ограничивает выбор узлов для её миграции. Несовместимость с конкретным целевым узлом здесь не проверяется.", + "summary": { + "none": "Ни одна из виртуальных машин ({total}) не привязана к процессору хоста", + "pinned": "Виртуальные машины, привязанные к процессору хоста: {count} из {total}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "replication_state": { + "title": "Репликация", + "rationale": "Задания репликации из API: количество сбоев, последняя ошибка, последняя синхронизация и расписание, заданное для каждого задания. Приостановленные задания отмечаются как приостановленные.", + "summary": { + "healthy": "Ошибок в заданиях репликации ({total}) не обнаружено", + "failing": "Об ошибке сообщают {count} из {total} заданий репликации", + "statusUnavailable": "Задания репликации настроены, но не удалось прочитать их состояние", + "evaluationFailed": "Не удалось выполнить проверку" + } + } + }, + "security": { + "host_firewall_enabled": { + "title": "Настройки включения межсетевого экрана", + "rationale": "Параметр `enable` в настройках межсетевого экрана центра обработки данных и самого узла, а также количество заданных правил. Proxmox применяет правила узла, только когда межсетевой экран включён на уровне центра обработки данных. Эти параметры не показывают, что именно фильтрует каждое правило.", + "summary": { + "bothEnabled": "Межсетевой экран настроен на включение на уровне центра обработки данных и узла", + "datacenterOff": "Межсетевой экран отключён на уровне центра обработки данных, поэтому правила узла не применяются", + "nodeOff": "Межсетевой экран включён на уровне центра обработки данных, но не на этом узле", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "lynis_warnings": { + "title": "Предупреждения Lynis", + "rationale": "Предупреждения последней проверки Lynis с идентификатором теста для каждого предупреждения, а также давность этой проверки. Проверка запускается только там, где установлен Lynis и отсутствует полный отчёт. Рекомендации не включены.", + "summary": { + "none": "Последняя проверка Lynis не выявила предупреждений", + "found": "Количество предупреждений, выявленных последней проверкой Lynis: {count}", + "incomplete": "Отчёт Lynis неполный", + "evaluationFailed": "Не удалось выполнить проверку", + "noneStale": "Последняя проверка Lynis не выявила предупреждений; давность отчёта в днях: {days}", + "foundStale": "Количество предупреждений, выявленных последней проверкой Lynis: {count}; давность отчёта в днях: {days}" + } + }, + "certificate_expiry": { + "title": "Срок действия сертификата", + "rationale": "Дата окончания срока действия сертификата, который pveproxy предоставляет из /etc/pve/local. Пользовательский сертификат имеет приоритет над сертификатом, созданным Proxmox.", + "summary": { + "valid": "Оставшийся срок действия сертификата в днях: {days}", + "expiring": "Количество дней до истечения срока действия сертификата: {days}", + "expired": "Количество дней с момента истечения срока действия сертификата: {days}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "ssh_root_login": { + "title": "Доступ root по SSH", + "rationale": "Параметр PermitRootLogin в действующей конфигурации `sshd -T` вместе с методами аутентификации, с которыми он сочетается. Proxmox поставляется с настройкой `yes`, которая допускает вход по паролю.", + "summary": { + "password": "Пользователю root разрешён вход по SSH с паролем", + "keyOnly": "Пользователю root разрешён вход по SSH только с ключом", + "denied": "Пользователю root запрещён вход через SSH", + "evaluationFailed": "Не удалось выполнить проверку" + } + } + }, + "storage": { + "orphaned_volumes": { + "title": "Привязка томов", + "rationale": "Тома гостевых систем в локальном хранилище сопоставляются со ссылками в текущих и ожидающих применения конфигурациях, а также в конфигурациях снимков. Резервные копии, ISO-образы и шаблоны не участвуют в сравнении. Том, на который нет ссылок, является кандидатом на проверку.", + "summary": { + "none": "Тома без ссылок не найдены", + "found": "Количество томов, на которые нет ссылок в проверенных конфигурациях: {count}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "zfs_arc_max": { + "title": "Ограничение ARC для ZFS", + "rationale": "Фактические значения c_min, c_max и размера ARC, параметр загруженного модуля и постоянные настройки в /etc/modprobe.d. Значение ноль в настройках означает использование значения модуля по умолчанию; ограничение ARC задаёт верхнюю границу, а используемая в её пределах память может быть освобождена.", + "summary": { + "bounded": "Лимит ARC составляет {percent}% памяти хоста; занимаемая ARC память может быть освобождена для других нужд", + "high": "ARC может использовать {percent}% памяти хоста", + "unset": "Явное ограничение ARC не задано", + "conflicting": "Количество настроек ARC, противоречащих друг другу: {count}", + "pending": "Постоянная настройка ARC отличается от значения, используемого работающим модулем", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "zfs_scrub_age": { + "title": "Проверка целостности ZFS", + "rationale": "Последняя завершённая проверка scrub, зарегистрированная `zpool status` для каждого пула. Ресильверинг не является проверкой scrub. Недавно созданный пул ещё не успел пройти такую проверку.", + "summary": { + "recent": "Проверка целостности выполнена за последние 35 дней для всех пулов ({total})", + "overdue": "Количество пулов, для которых проверка целостности не выполнялась за последние 35 дней: {count} из {total}", + "neverScrubbed": "Количество пулов без зарегистрированных проверок целостности: {count}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "thin_pool_overprovisioning": { + "title": "Распределение ёмкости тонких пулов", + "rationale": "Виртуальная ёмкость, выделенная каждым тонким пулом LVM, в сравнении с размером самого пула, а также фактический объём записанного его томами — отдельно для данных и метаданных.", + "summary": { + "withinRatio": "Показатели всех тонких пулов ({total}) ниже установленных порогов, требующих проверки", + "aboveRatio": "Количество тонких пулов, в которых выделенная ёмкость превышает фактическую: {count} из {total}", + "pressure": "Количество тонких пулов, в которых область данных или метаданных близка к заполнению: {pressure} из {total}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "connected_storage": { + "title": "Подключённые хранилища", + "rationale": "Доступность по данным PVE, известная ёмкость и текущие зависимости каждого хранилища, включённого на этом узле. Внутреннее состояние удалённых хранилищ не проверяется, доступ на запись не тестируется. Ёмкость указывается, если она известна PVE; в противном случае поле остаётся пустым.", + "summary": { + "available": "PVE сообщает, что все хранилища ({total}) доступны; внутреннее состояние удалённых хранилищ и доступ на запись не проверялись", + "attention": "Требуют проверки: {count} из {total} хранилищ", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "pool_integrity": { + "title": "Целостность и избыточность пулов", + "rationale": "Состояние каждого пула ZFS и счётчики ошибок чтения, записи и контрольных сумм его устройств. Счётчики накапливают значения с момента последнего выполнения `zpool clear`.", + "summary": { + "healthy": "Все пулы ({total}) находятся в состоянии online, ошибок устройств не зарегистрировано", + "degraded": "Выявлено проблем: {count}; проверено пулов: {total}", + "evaluationFailed": "Не удалось прочитать состояние пулов" + } + }, + "ceph_health": { + "title": "Состояние Ceph", + "rationale": "Собственный статус работоспособности Ceph и указанные им проверки. Его тесты не реализуются повторно, отдельные запросы к пулам, группам размещения или OSD не выполняются.", + "summary": { + "healthy": "Ceph сообщает: HEALTH_OK", + "degraded": "Ceph сообщает: {state}; указано проверок: {count}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "array_integrity": { + "title": "Программный RAID и многопутевой доступ", + "rationale": "Массивы mdadm и карты многопутевого доступа, сведения о которых получены из /proc/mdstat и, если соответствующая утилита установлена, из `multipath -ll`. Сведения о пулах ZFS представлены в отдельной проверке.", + "summary": { + "intact": "Избыточность сохранена у всех массивов и карт ({total})", + "degraded": "Избыточность снижена у {count} из {total} массивов или карт", + "evaluationFailed": "Не удалось выполнить проверку" + } + } + }, + "hardware": { + "disk_service_life": { + "title": "Срок службы дисков", + "rationale": "Часы работы во включённом состоянии и оставшийся ресурс по показаниям SMART из Monitor с датой каждого измерения. Возраст служит информацией для планирования; об ошибках носителей и предупреждениях устройств сообщает монитор работоспособности.", + "summary": { + "withinLife": "По показаниям дисков ({total}) пятилетний порог, используемый для планирования, не превышен", + "pastLife": "Показания {count} из {total} дисков указывают на срок службы более пяти лет", + "noReadings": "Ни один диск не предоставил пригодных для использования счётчиков SMART (без показаний: {skipped})", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "disk_errors": { + "title": "Ошибки дисков", + "rationale": "Ошибки, обнаруженные на дисках и зарегистрированные монитором работоспособности.", + "summary": { + "recorded": "События отмечены у {count} из {total} дисков, для которых имеются записи", + "noEvents": "Нет событий дисков, требующих оценки: события не зарегистрированы либо все отклонены" + } + } + }, + "network": { + "bond_members": { + "title": "Интерфейсы в составе агрегированного интерфейса", + "rationale": "Состояние MII каждого интерфейса в составе агрегированного интерфейса по данным /proc/net/bonding и количество оставшихся активных соединений. В режиме active-backup резервный интерфейс отображается как активный, но не передаёт трафик.", + "summary": { + "allUp": "Все интерфейсы в составе агрегированных интерфейсов ({total}) активны", + "membersDown": "Неактивных интерфейсов в составе агрегированных интерфейсов: {count}", + "evaluationFailed": "Не удалось выполнить проверку" + } + }, + "bridge_without_ports": { + "title": "Порты мостов", + "rationale": "Конфигурация портов каждого моста. Мост без физического порта обслуживает внутреннюю или маршрутизируемую сеть.", + "summary": { + "allConnected": "Все мосты ({total}) имеют порт", + "isolated": "Мостов без портов: {count} из {total}", + "evaluationFailed": "Не удалось выполнить проверку" + } + } + } + }, + "summaryFallback": "Не удалось выполнить проверку", + "acceptRisk": { + "action": "Принять риск", + "revoke": "Вернуть в активное состояние", + "title": "Принять этот риск", + "reasonLabel": "Причина", + "reasonHelp": "Обязательное поле. Причина сохраняется вместе с автором и датой.", + "reasonPlaceholder": "Например: лабораторные контейнеры намеренно не охвачены", + "expiryLabel": "Срок действия решения", + "expiryHelp": "По истечении срока выявленная проблема снова становится активной.", + "expiryNever": "Бессрочно", + "reviewLabel": "Напомнить о пересмотре", + "reviewHelp": "Решение остаётся в силе; напоминание лишь снова обращает на него ваше внимание.", + "reviewNever": "Без напоминания", + "expiry90": "90 дней", + "expiry180": "180 дней", + "expiry365": "1 год", + "cancel": "Отмена", + "confirm": "Принять риск" + }, + "incomplete": "Неполные данные проверки", + "progress": "Проверено {completed} из {total}", + "expires": "Срок действия истекает: {when}", + "runStates": { + "partial": "Оценка выполнена; некоторые показания получить не удалось.", + "failed": "Оценка прервана или завершилась с ошибкой. Проверьте подтверждающие данные, прежде чем полагаться на эти результаты." + }, + "severities": { + "CRITICAL": "Критическое состояние", + "WARNING": "Предупреждение", + "INFO": "Информация", + "OK": "OK" + }, + "viewSwitch": { + "ariaLabel": "Переключение между оценкой и инвентаризацией", + "assessment": "Оценка", + "inventory": "Инвентаризация", + "policy": "Политика", + "changes": "Изменения" + }, + "inventory": { + "loading": "Загрузка данных инвентаризации…", + "failed": "Не удалось сформировать данные инвентаризации.", + "collectedAt": "Сформировано: {when}", + "unavailable": "Не считано в ходе этой инвентаризации", + "unresolved": "путь не определён", + "noUplink": "нет подключения к вышестоящей сети", + "identity": "Идентификационные данные узла", + "node": "Узел", + "pveVersion": "Proxmox VE", + "kernel": "Ядро", + "subscription": "Подписка", + "cluster": "Кластер", + "standalone": "Не входит в кластер", + "hardware": "Оборудование", + "system": "Система", + "serial": "Серийный номер", + "bios": "BIOS", + "cpu": "Процессор", + "topology": "Структура", + "cpuLayout": "Сокеты: {sockets} × ядра: {cores} = потоки: {threads}", + "virtualisation": "Виртуализация", + "memory": "Память", + "iommuGroups": "Группы IOMMU", + "network": "Сеть", + "storage": "Хранилище", + "name": "Название", + "type": "Тип", + "content": "Содержимое", + "shared": "Общий доступ", + "yes": "Да", + "no": "Нет", + "guests": "Гостевые системы", + "ostype": "Операционная система", + "onboot": "Запуск вместе с хостом", + "tags": "Метки", + "privilege": "Привилегии", + "privileged": "Привилегированный", + "unprivileged": "Непривилегированный", + "features": "Возможности", + "agent": "Гостевой агент", + "cpuModel": "Модель CPU", + "disks": "Диски", + "interfaces": "Сетевые интерфейсы", + "protection": "Резервная копия", + "passthrough": "Проброс устройств", + "noBackup": "Нет резервной копии", + "noBackupDetail": "Ни одно включённое задание резервного копирования не включает эту гостевую систему.", + "applications": "Приложения", + "versionUnknown": "версия не определена", + "passthroughTitle": "Проброс PCI", + "iommuGroup": "Группа IOMMU {group}", + "sharedGroup": "Дополнительные устройства в той же группе: {count}", + "proxmenux": "Оптимизации ProxMenux", + "latency": "Сетевая задержка", + "subscriptionStatus": { + "notfound": "Подписка не найдена", + "active": "Активна", + "invalid": "Недействительна", + "expired": "Срок действия истёк", + "suspended": "Приостановлена", + "new": "Ожидает активации", + "unknown": "Неизвестно" + } + }, + "profile": { + "label": "Отчёт", + "full": "Полный аудит", + "inventory": "Инвентаризация", + "security": "Проверка безопасности", + "backup": "Проверка надёжности резервного копирования", + "capacity": "Ёмкость и износ", + "diagnostic": "Быстрая диагностика" + }, + "document": { + "action": "Сформировать отчёт", + "title": "Отчёт Audit", + "subtitle": "Структура, конфигурация и оценка {node}", + "generated": "Сформировано", + "assessed": "Оценено", + "runId": "Идентификатор оценки", + "print": "Распечатать или сохранить в PDF", + "summaryByArea": "Сводка по областям", + "area": "Область", + "inventoryAnnex": "Приложение: инвентаризация", + "scopeTitle": "Область охвата этого отчёта", + "scopeBody": "Этот отчёт описывает указанный выше узел Proxmox VE на основании данных, доступных с самого узла в указанное время. Он не охватывает внутреннее состояние гостевых систем за пределами сведений, которые они предоставляют, сетевое оборудование вне хоста, физическую инфраструктуру и любые зависимости, не видимые с этого узла. Результаты с отметкой «не определено» не основаны на измерениях и не свидетельствуют об отсутствии соответствующего условия.", + "building": "Формирование отчёта…", + "node": "Узел", + "profile": "Профиль", + "unknownNode": "неопознанный узел", + "executiveSummary": "Сводка результатов оценки", + "assessment": "Оценка", + "verdictHeading": "Результат этого запуска", + "verdict": { + "critical": "ВНИМАНИЕ", + "warning": "ПРОВЕРИТЬ", + "conformant": "В ПОРЯДКЕ" + }, + "verdictText": { + "critical": "Из общего числа выполненных проверок ({total}) в {fail} выявлено невыполнение условия, а в {warn} — условие, требующее рассмотрения.", + "warning": "Ни одна проверка не выявила невыполнения условия. В {warn} из {total} проверок выявлено условие, требующее рассмотрения.", + "conformant": "Все проверки этого профиля ({total}) завершены без выявления невыполненных условий или условий, требующих рассмотрения.", + "none": "В этом профиле проверки не выполняются. Документ описывает узел без его оценки." + }, + "runAt": "Время запуска: {date}", + "chartNote": "Проверки по областям и результатам.", + "nodeIdentity": "Идентификационные данные узла", + "system": "Система", + "cluster": "Кластер", + "standaloneNote": "Этот узел не входит в кластер: он хранит собственную конфигурацию, а его гостевые системы не мигрируют на другой узел.", + "clusterDiagramNote": "Настроенные узлы и соединяющие их каналы corosync.", + "thisNode": "этот узел", + "unreachable": "не обнаружен", + "member": "участник", + "corosyncLinks": "каналы связи", + "quorum": "Кворум", + "quorate": "с кворумом", + "inquorate": "без кворума", + "votes": "Голоса", + "nodeName": "Узел", + "architecture": "Архитектура системы", + "architectureNote": "Как устроен узел: процессор и память на системной плате, а также устройства, подключённые к каждому контроллеру.", + "systemIdentity": "Идентификационные данные системы", + "board": "Системная плата", + "processor": "Процессор", + "topology": "Сокеты × ядра / потоки", + "memory": "Память", + "cores": "ядра", + "threads": "потоки", + "memoryModules": "Модули памяти", + "slot": "Слот", + "slotsUsed": "занято слотов", + "slotsFilled": "Занято слотов: {used} из {total}", + "emptySlot": "пусто", + "formFactor": "Форматировать", + "speed": "Скорость", + "manufacturer": "Производитель", + "product": "Модель", + "serial": "Серийный номер", + "controllers": "Контроллеры", + "class": "Класс", + "device": "Устройство", + "iommuGroups": "Группы IOMMU", + "iommuGroup": "Группа IOMMU", + "field": "Поле", + "value": "Значение", + "size": "Размер", + "type": "Тип", + "storageDevices": "Устройства хранения данных", + "disks": "Диски", + "model": "Модель", + "bus": "Шина", + "serviceLife": "Срок службы", + "healthy": "исправен", + "years": "Срок в годах: {years}", + "events": "События", + "observations": "Наблюдения", + "observationsNote": "Зарегистрированные события. SMART показывает текущее состояние; этот журнал показывает, что происходило, включая события, после которых диск восстановил нормальную работу.", + "noObservations": "Нет зарегистрированных событий", + "noObservationsNote": "С начала наблюдения в Monitor ни на одном диске не было зарегистрировано ошибок.", + "event": "Событие", + "severity": "Серьёзность", + "occurrences": "Количество случаев", + "firstSeen": "Впервые обнаружено", + "lastSeen": "Последнее обнаружение", + "detail": "Подробности", + "network": "Сеть", + "adapters": "Адаптеры", + "bond": "Агрегированный интерфейс", + "bridge": "Мост", + "bridges": "Мосты", + "physicalAdapters": "Физические адаптеры", + "interface": "Интерфейс", + "driver": "Драйвер", + "state": "Состояние", + "networkDiagramNote": "Путь от сетевого кабеля до каждой гостевой системы: физический адаптер, объединение адаптеров (bond), если оно используется, мост и подключённые гостевые системы.", + "storageAndProtection": "Хранение и защита данных", + "storage": "Хранилище", + "content": "Содержимое", + "shared": "Общий доступ", + "location": "Расположение", + "backupDestination": "Место хранения резервных копий", + "unprotected": "не защищено", + "storageDiagramNote": "Где хранятся диски гостевых систем и куда сохраняются их резервные копии.", + "unprotectedGuests": "Гостевые системы без задания резервного копирования: {count}", + "allProtected": "Все гостевые системы включены в задания резервного копирования", + "allProtectedNote": "Охват означает, что гостевая система выбрана в задании; результаты резервного копирования оцениваются отдельно.", + "vmid": "VMID", + "name": "Название", + "kind": "Тип", + "backup": "Резервная копия", + "none": "нет", + "managedSoftware": "Программное обеспечение под управлением ProxMenux", + "version": "Версия", + "source": "Источник", + "current": "актуальная версия", + "updateAvailable": "обновление до {version}", + "findings": "Подробные результаты", + "incomplete": "частичный", + "scope": "Область охвата этого отчёта", + "scopeText": "В этом документе представлен профиль {profile} узла, указанного в заголовке, на момент запуска проверки.", + "scopeLocal": "Проверка охватывает только этот узел. Гостевые системы на других узлах и их конфигурация не входят в её область.", + "scopeReadOnly": "При оценке проверяются настройки и состояние хоста. В ходе проверки возможна запись отчётов и журналов; проверки состояния загрузки могут временно монтировать системные разделы EFI.", + "scopeMoment": "Документ описывает состояние на момент запуска проверки, а не за определённый период времени.", + "notRead": "Источники, которые не удалось прочитать:", + "uplink": "Восходящее соединение", + "conformance": "Соответствуют требованиям: {pass} из {total}", + "latency": "Сетевая задержка", + "latencyNote": "Задержка измерена за указанный период; для каждого целевого адреса приведена отдельная строка.", + "milliseconds": "мс", + "hours": "ч", + "minimum": "Минимум", + "average": "Среднее", + "maximum": "Максимум", + "packetLoss": "Потери пакетов", + "samples": "Измерения", + "target": { + "label": "Целевой узел", + "gateway": "Шлюз", + "cloudflare": "Cloudflare (1.1.1.1)", + "google": "Google (8.8.8.8)" + }, + "actionShort": "Отчёт", + "policyDeclared": "Оценка выполнена по заявленной политике: указаны гостевые системы ({guests}), хранилища ({storages}) и пороговые значения ({thresholds}).", + "policyNone": "Политика не была заявлена, поэтому отсутствие чего-либо, которое невозможно интерпретировать в рамках этого отчёта, отмечается как наблюдение, но никогда не как предупреждение.", + "diagnosticTitle": "Быстрая диагностика", + "diagnosticSubtitle": "Критические результаты и предупреждения на {node}", + "diagnosticActing": "Критические результаты и предупреждения: {count}.", + "diagnosticClear": "Критических результатов и предупреждений нет. Наблюдения и результаты, соответствующие требованиям, приведены в полном отчёте аудита.", + "diagnosticUnread": "Показания, которые не удалось получить", + "diagnosticMoreRows": "Дополнительные строки в полном отчёте аудита: {count}.", + "structureTitle": "Структура и конфигурация", + "structureSubtitle": "Устройство и конфигурация {node}", + "postureTitle": "Состояние защищённости", + "posture": { + "security": "Подверженность хоста внешним угрозам и доступ к нему.", + "backup": "Защита гостевых систем и её фактическая действенность.", + "capacity": "Запас ёмкости и износ дисков." + } + }, + "results": "Результаты", + "classifications": { + "critical": "Критическое состояние", + "warning": "Предупреждение", + "observation": "Наблюдение", + "conformant": "Соответствует требованиям", + "unverified": "Не проверено", + "not_applicable": "Неприменимо", + "accepted": "Риск принят", + "by_design": "Исключено политикой" + }, + "policy": { + "inherit": "{value} (по умолчанию)", + "inheritUnset": "По умолчанию", + "conflict": "Декларация изменена в другом сеансе. Ваш черновик не сохранён.", + "reload": "Загрузить сохранённую декларацию заново (отбросить черновик)", + "intro": "Оценка показывает, что делает этот хост, а не для чего он предназначен. Именно указанные здесь сведения превращают наблюдение в предупреждение или исключают его из подсчёта. Заполнять ничего не обязательно: без декларации отчёт описывает состояние, а не оценивает его.", + "loading": "Чтение декларации…", + "failed": "Не удалось прочитать декларацию", + "saved": "Сохранено", + "declaredCount": "Деклараций: {count}", + "guestsNote": "При значении «Требуется» отсутствие отмечается как предупреждение; при значении «Не указано» — как наблюдение; при значении «Не требуется» — исключается из подсчёта.", + "storagesNote": "Недоступность хранилища считается критической проблемой, если оно объявлено необходимым или обслуживает работающую гостевую систему; предупреждением, если его роль не указана; и наблюдением, если оно объявлено необязательным.", + "thresholds": "Пороговые значения", + "thresholdsNote": "Пустое поле означает использование значения по умолчанию, поставляемого с программой и показанного в подсказке поля.", + "backup": "Резервная копия", + "autostart": "Автозапуск", + "objective": "Целевой срок восстановления", + "objectivePlaceholder": "часы", + "noGuests": "На этом узле нет гостевых систем.", + "expectation": { + "required": "Обязательно", + "not_required": "Не требуется", + "unspecified": "Не указано" + }, + "role": { + "essential": "Необходимое", + "optional": "Необязательное", + "unspecified": "Не указано" + }, + "threshold": { + "storage_usage_percent": "Порог проверки заполненности хранилища (%)", + "thin_pool_usage_percent": "Порог проверки заполнения тонкого пула (%)", + "thin_overprovision_ratio": "Коэффициент избыточного выделения ёмкости тонкого пула", + "zfs_scrub_days": "Интервал проверки целостности ZFS (дни)", + "backup_fallback_days": "Резервный порог возраста резервной копии (дни)", + "backup_schedule_grace_ratio": "Допустимое отклонение от расписания (коэффициент)", + "certificate_expiry_days": "Уведомление об истечении срока действия сертификата (дни)", + "memory_overcommit_ratio": "Коэффициент избыточного выделения памяти", + "disk_service_life_hours": "Срок службы диска (часы)", + "lynis_report_days": "Возраст отчёта Lynis (дни)", + "package_index_days": "Возраст индекса пакетов (дни)", + "journal_usage_percent": "Использование журнала относительно его лимита (%)", + "filesystem_usage_percent": "Порог проверки заполнения файловой системы (%)", + "filesystem_inode_percent": "Порог проверки использования inode файловой системы (%)", + "disk_error_recent_days": "Период учёта недавних ошибок диска (дни)" + } + }, + "changes": { + "loading": "Чтение журнала изменений…", + "failed": "Не удалось прочитать журнал изменений", + "intro": "Что ProxMenux изменил на этом хосте и что было до каждого изменения. Показаны различия.", + "empty": "На этом хосте пока ничего не записано.", + "since": "Запись ведётся с {date}.", + "byFunction": "По функциям", + "count": "Изменений: {count}", + "function": "Функция", + "source": "Скрипт", + "reversibility": "Отмена этого изменения", + "difference": "Различия", + "diffTruncated": "Показаны не все различия.", + "diffUnavailable": "Заменённое содержимое больше не хранится, поэтому показать различия невозможно.", + "packagesAdded": "Добавленные пакеты", + "commandRun": "Выполненная команда", + "executionNote": "ProxMenux выполнил эту команду; внесённые изменения зависят от самой команды.", + "unknownNote": "Применено до появления журнала, поэтому предыдущее состояние не было зафиксировано.", + "noneInFilter": "Изменений этого типа нет.", + "class": { + "all": "Все", + "configuration": "Конфигурация", + "installation": "Установки", + "execution": "Выполнения", + "registration": "Применено" + }, + "operation": { + "write_file": "Файл заменён", + "file_created": "Файл создан", + "file_modified": "Файл изменён", + "write_file_created": "Файл создан", + "edit_file": "Файл отредактирован", + "append_file": "Данные добавлены в конец файла", + "remove_file": "Файл удалён", + "install_package": "Установлено", + "enable_service": "Служба включена", + "disable_service": "Служба отключена", + "run_command": "Выполнено", + "applied": "Применено", + "removed": "Удалено", + "unknown": "Изменить" + }, + "capture": { + "unknown": "Предыдущее состояние неизвестно" + }, + "exactness": { + "exact": "В точности восстанавливает предыдущее состояние", + "partial": "Частичное восстановление: зависимости могут остаться или быть удалены вместе с ним", + "none": "Нельзя отменить из журнала" + }, + "undo": { + "remove": "Удаляет файл (до этого его не было)", + "restore": "В точности восстанавливает предыдущее состояние", + "purge": "Пакет можно удалить" + }, + "section": { + "postInstall": "Оптимизация после установки", + "scripts": "Скрипты ProxMenux", + "installs": "Установленные пакеты и утилиты" + }, + "scriptLabel": { + "install_proxmenux": "Установщик ProxMenux", + "monitor": "ProxMenux Monitor" + } + }, + "comparison": { + "loading": "Сравнение с эталонным запуском…", + "failed": "Не удалось задать эталонный запуск", + "since": "С момента {date}", + "previousRun": "предыдущего запуска", + "noChange": "Без изменений", + "isBaseline": "Этот запуск — эталон, с которым сравниваются остальные.", + "noBaseline": "Эталонный запуск ещё не выбран, поэтому сравнивать пока не с чем.", + "setBaseline": "Использовать как эталон", + "unchanged": "Количество проверок с тем же результатом, что и раньше: {count}.", + "new": "Новый", + "newNote": "выявлены сейчас, но не выявлялись ранее", + "worse": "Ухудшение", + "worseNote": "по-прежнему выявляются и стали серьёзнее или затрагивают больше объектов, чем раньше", + "better": "Улучшение", + "betterNote": "по-прежнему выявляются, но стали менее серьёзными или затрагивают меньше объектов, чем раньше", + "resolved": "Устранены", + "resolvedNote": "больше не выявляются, и никто не принял их как допустимые", + "accepted": "Приняты", + "acceptedNote": "больше не учитывается из-за принятия риска, а не из-за изменений на узле", + "retired": "Больше не оцениваются", + "retiredNote": "присутствовали ранее, но отсутствуют в текущем запуске; их прекращение не подтверждено", + "reasons": { + "insufficient_runs": "Для сравнения нужны исходный и более поздний запуски; пока зарегистрирован только один" + } + }, + "notApplicableScope": "В обследованной области нет объектов, к которым применима эта проверка.", + "lynis": { + "title": "Запустить Lynis", + "bodyNotRun": "Lynis установлен, но ещё не запускался. Его запуск сейчас позволит завершить проверку безопасности, однако процесс может занять несколько минут.", + "bodyStale": "Возраст отчёта Lynis в днях: {days}. Можно запустить Lynis сейчас, чтобы обновить данные (это займёт немного больше времени), или продолжить с имеющимся отчётом.", + "withLynis": "Запустить с Lynis", + "withoutLynis": "Запустить без Lynis", + "cancel": "Отмена" + } + }, + "runtime": { + "notifications": { + "templates": { + "state_change": { + "title": "{hostname}: {category} — новое состояние: {current}{entity_suffix}", + "body": "Состояние {category} изменилось с {previous} на {current}.\n{reason}", + "label": "Состояние работоспособности изменилось" + }, + "new_error": { + "title": "{hostname}: Новое событие: {severity} — {category}{entity_suffix}", + "body": "{reason}", + "label": "Новая проблема с работоспособностью" + }, + "error_resolved": { + "title": "{hostname}: Устранено — {category}{entity_suffix}", + "body": "Проблема {category} устранена.\n{reason}\n🚦 Предыдущий уровень серьёзности: {original_severity}\n⏱️ Продолжительность: {duration}", + "label": "Уведомление о восстановлении" + }, + "error_escalated": { + "title": "{hostname}: Уровень серьёзности повышен до {severity} — {category}{entity_suffix}", + "body": "{reason}", + "label": "Эскалация проблемы с работоспособностью" + }, + "health_degraded": { + "title": "{title_or_default}", + "body": "{reason}", + "label": "Ухудшение результатов проверки работоспособности" + }, + "lxc_updates_available": { + "title": "{hostname}: Доступны обновления пакетов для LXC; количество: {count}", + "body": "📊 Контейнеры LXC с ожидающими обновлениями пакетов: {count} (📦 всего пакетов: {total_packages}, 🔒 обновления безопасности: {security_count}):\n\n{ct_list}", + "label": "Доступны обновления LXC (экспериментальная функция)" + }, + "lxc_update_applied": { + "title": "{hostname}: LXC {ct_name} ({vmid}) — обновление: {result}", + "body": "{details}", + "label": "Обновление LXC применено" + }, + "oci_update_completed": { + "title": "{hostname}: Обновление {app_name} выполнено", + "body": "Для {app_name} выполнено обновление до нового образа с сохранением данных.\nКонтейнеры: {containers}", + "label": "Приложение OCI обновлено" + }, + "oci_update_failed": { + "title": "{hostname}: Обновление {app_name} не завершено", + "body": "Обновление {app_name} не завершено.\nПричина: {reason}\nКонтейнеры: {containers}\nОткройте раздел «Управление установленными приложениями OCI», чтобы проверить состояние приложения.", + "label": "Не удалось обновить приложение OCI" + }, + "oci_recreate_completed": { + "title": "{hostname}: {app_name} — пересоздание завершено", + "body": "Приложение {app_name} пересоздано с сохранённой конфигурацией, его данные сохранены.\nКонтейнеры: {containers}", + "label": "Приложение OCI создано заново" + }, + "oci_recreate_failed": { + "title": "{hostname}: {app_name} — пересоздание не завершено", + "body": "Пересоздание {app_name} не завершено.\nПричина: {reason}\nКонтейнеры: {containers}\nОткройте раздел «Управление установленными приложениями OCI», чтобы проверить состояние приложения.", + "label": "Не удалось создать приложение OCI заново" + }, + "oci_modify_completed": { + "title": "{hostname}: {app_name} — изменение завершено", + "body": "Приложение {app_name} изменено с применением новых параметров, его данные сохранены.\nКонтейнеры: {containers}", + "label": "Приложение OCI изменено" + }, + "oci_modify_failed": { + "title": "{hostname}: {app_name} — изменение не завершено", + "body": "Изменение {app_name} не завершено.\nПричина: {reason}\nКонтейнеры: {containers}\nОткройте раздел «Управление установленными приложениями OCI», чтобы проверить состояние приложения.", + "label": "Не удалось изменить приложение OCI" + }, + "oci_watchdog_restarted": { + "title": "{hostname}: {app_name} — повторный запуск после остановки", + "body": "Приложение {app_name} самопроизвольно остановилось, и сторожевой процесс запустил его снова.\nКонтейнеры: {containers}", + "label": "Сторожевой механизм перезапустил приложение OCI" + }, + "oci_watchdog_failed": { + "title": "{hostname}: {app_name} — не удалось поддерживать работу", + "body": "Сторожевому процессу не удалось поддерживать работу {app_name}: приложение снова остановилось или не запустилось после нескольких попыток и оставлено в остановленном состоянии.\nКонтейнеры: {containers}\nПосле устранения причины запустите приложение вручную; затем сторожевой процесс возобновит наблюдение за ним.", + "label": "Сторожевой механизм оставил приложение OCI остановленным" + }, + "app_update_available": { + "title": "{hostname}: доступно обновление {app_name} в CT {vmid}", + "body": "Для {app_name} в CT {vmid} ({ct_name}) доступна новая версия:\n {installed} → {latest}", + "label": "Доступно обновление приложения" + }, + "docker_stack_update_available": { + "title": "{hostname}: доступны обновления Docker в CT {vmid}", + "body": "В контейнере {ct_name} (CT {vmid}) доступны обновления Docker: {count}.\n{details}", + "label": "Доступны обновления Docker" + }, + "vm_start": { + "title": "{hostname}: ВМ {vmname} ({vmid}) запущена", + "body": "Виртуальная машина {vmname} (ID: {vmid}) теперь работает.", + "label": "Виртуальная машина запущена" + }, + "vm_start_warning": { + "title": "{hostname}: ВМ {vmname} ({vmid}) запущена с предупреждениями", + "body": "Виртуальная машина {vmname} (ID: {vmid}) успешно запущена, но есть предупреждения.\nПредупреждения: {reason}", + "label": "Виртуальная машина запущена (с предупреждениями)" + }, + "vm_stop": { + "title": "{hostname}: ВМ {vmname} ({vmid}) остановлена", + "body": "Виртуальная машина {vmname} (ID: {vmid}) остановлена.", + "label": "Виртуальная машина остановлена" + }, + "vm_shutdown": { + "title": "{hostname}: ВМ {vmname} ({vmid}) выключена", + "body": "Виртуальная машина {vmname} (ID: {vmid}) была корректно выключена.", + "label": "Выключение ВМ" + }, + "vm_fail": { + "title": "{hostname}: СБОЙ ВМ {vmname} ({vmid})", + "body": "Виртуальная машина {vmname} (ID: {vmid}) аварийно завершила работу или не смогла запуститься.\nПричина: {reason}", + "label": "СБОЙ ВМ" + }, + "vm_restart": { + "title": "{hostname}: ВМ {vmname} ({vmid}) перезапущена", + "body": "Виртуальная машина {vmname} (ID: {vmid}) была перезапущена.", + "label": "Виртуальная машина перезапущена" + }, + "ct_start": { + "title": "{hostname}: Контейнер {vmname} ({vmid}) запущен", + "body": "Контейнер {vmname} (ID: {vmid}) теперь работает.", + "label": "Контейнер запущен" + }, + "ct_start_warning": { + "title": "{hostname}: Контейнер {vmname} ({vmid}) запущен с предупреждениями", + "body": "Контейнер {vmname} (ID: {vmid}) успешно запущен, но есть предупреждения.\nПредупреждения: {reason}", + "label": "Контейнер запущен (с предупреждениями)" + }, + "ct_stop": { + "title": "{hostname}: Контейнер {vmname} ({vmid}) остановлен", + "body": "Контейнер {vmname} (ID: {vmid}) был остановлен.", + "label": "Контейнер остановлен" + }, + "ct_shutdown": { + "title": "{hostname}: Контейнер {vmname} ({vmid}) выключен", + "body": "Контейнер {vmname} (ID: {vmid}) был корректно выключен.", + "label": "Выключение контейнера" + }, + "ct_restart": { + "title": "{hostname}: Контейнер {vmname} ({vmid}) перезапущен", + "body": "Контейнер {vmname} (ID: {vmid}) был перезапущен.", + "label": "Контейнер перезапущен" + }, + "ct_fail": { + "title": "{hostname}: СБОЙ контейнера {vmname} ({vmid})", + "body": "Контейнер {vmname} (ID: {vmid}) аварийно завершил работу или не смог запуститься.\nПричина: {reason}", + "label": "СБОЙ КОНТЕЙНЕРА" + }, + "migration_start": { + "title": "{hostname}: Миграция начата — {vmname} ({vmid})", + "body": "Начата миграция {vmname} (ID: {vmid}) без остановки на узел {target_node}.", + "label": "Миграция начата" + }, + "migration_complete": { + "title": "{hostname}: Миграция завершена — {vmname} ({vmid})", + "body": "{vmname} (ID: {vmid}): миграция на узел {target_node} успешно завершена.", + "label": "Миграция завершена" + }, + "migration_warning": { + "title": "{hostname}: миграция завершена с предупреждениями — {vmname} ({vmid})", + "body": "{vmname} (ID: {vmid}): миграция на узел {target_node} завершена с предупреждениями.\nПредупреждения: {reason}", + "label": "Миграция (предупреждения)" + }, + "migration_fail": { + "title": "{hostname}: СБОЙ миграции — {vmname} ({vmid})", + "body": "Не удалось выполнить миграцию {vmname} (ID: {vmid}) на узел {target_node}.\nПричина: {reason}", + "label": "СБОЙ миграции" + }, + "replication_fail": { + "title": "{hostname}: СБОЙ репликации — {vmname} ({vmid})", + "body": "Не удалось выполнить репликацию {vmname} (ID: {vmid}).\nПричина: {reason}", + "label": "СБОЙ репликации" + }, + "replication_complete": { + "title": "{hostname}: репликация завершена — {vmname} ({vmid})", + "body": "Репликация {vmname} (ID: {vmid}) успешно завершена.", + "label": "Репликация завершена" + }, + "backup_start": { + "title": "{hostname}: резервное копирование запущено на {storage}", + "body": "Задание резервного копирования запущено на хранилище {storage}.\n{reason}", + "label": "Резервное копирование начато" + }, + "backup_complete": { + "title": "{hostname} → {storage}: резервное копирование завершено — {vmname} ({vmid})", + "body": "Резервное копирование {vmname} (ID: {vmid}) успешно завершено на {storage}.\nРазмер: {size}", + "label": "Резервное копирование завершено" + }, + "backup_warning": { + "title": "{hostname} → {storage}: резервное копирование завершено с предупреждениями — {vmname} ({vmid})", + "body": "Резервное копирование {vmname} (ID: {vmid}) на {storage} завершено с предупреждениями.\nПредупреждения: {reason}", + "label": "Резервное копирование (предупреждения)" + }, + "backup_fail": { + "title": "{hostname} → {storage}: СБОЙ резервного копирования — {vmname} ({vmid})", + "body": "Не удалось выполнить резервное копирование {vmname} (ID: {vmid}) на {storage}.\nПричина: {reason}", + "label": "СБОЙ резервного копирования" + }, + "host_backup_start": { + "title": "{hostname}: резервное копирование хоста запущено → {backend_label}", + "body": "Задание: {job_id}\nСерверная часть: {backend_label}\nНазначение: {destination}\nПрофиль: {profile_mode}", + "label": "Резервное копирование хоста начато" + }, + "host_backup_complete": { + "title": "{hostname}: Резервное копирование хоста завершено → {backend_label}", + "body": "Задание: {job_id}\nСерверная часть: {backend_label}\nМесто назначения: {destination}\nРазмер данных: {data_size}\nРазмер архива: {archive_size}\nДлительность: {duration}", + "label": "Резервное копирование хоста завершено" + }, + "host_backup_fail": { + "title": "{hostname}: ОШИБКА резервного копирования хоста → {backend_label}", + "body": "Задание: {job_id}\nСерверная часть: {backend_label}\nМесто назначения: {destination}\nВремя до сбоя: {duration}\nПричина: {reason}\nЖурнал: {log_file}", + "label": "ОШИБКА резервного копирования хоста" + }, + "snapshot_complete": { + "title": "{hostname}: Снимок создан — {vmname} ({vmid})", + "body": "Снимок «{snapshot_name}» создан для {vmname} (ID: {vmid}).", + "label": "Снимок создан" + }, + "snapshot_fail": { + "title": "{hostname}: ОШИБКА создания снимка — {vmname} ({vmid})", + "body": "Не удалось создать снимок для {vmname} (ID: {vmid}).\nПричина: {reason}", + "label": "ОШИБКА создания снимка" + }, + "cpu_high": { + "title": "{hostname}: Высокая загрузка ЦП — {value}%", + "body": "Загрузка CPU достигла {value}% на {cores} ядрах.\n{details}", + "label": "Высокая загрузка процессора" + }, + "ram_high": { + "title": "{hostname}: Высокое использование памяти — {value}%", + "body": "Использование памяти: {used} / {total} ({value}%).\n{details}", + "label": "Высокое использование оперативной памяти" + }, + "temp_high": { + "title": "{hostname}: Высокая температура датчика — {value}°C", + "body": "Температура датчика достигла {value}°C (порог: {threshold}°C).\n{details}", + "label": "Высокая температура" + }, + "disk_space_low": { + "title": "{hostname}: Мало места на диске {mount}", + "body": "Файловая система {mount}: использовано {used}% (доступно {available}).\nОсвободите место на диске, чтобы избежать перебоев в работе служб.", + "label": "Мало свободного места на диске" + }, + "disk_io_error": { + "title": "{hostname}: Обнаружен сбой диска — {device}", + "body": "На устройстве {device} обнаружена ошибка ввода-вывода или сбой диска.\n{reason}", + "label": "Отказ диска / ошибка ввода-вывода" + }, + "storage_unavailable": { + "title": "{hostname}: Хранилище недоступно — {storage_name}", + "body": "Хранилище PVE «{storage_name}» (тип: {storage_type}) недоступно.\nПричина: {reason}", + "label": "Хранилище недоступно" + }, + "smart_test_complete": { + "title": "{hostname}: Тест SMART завершён — {device}", + "body": "Тест SMART {test_type} на /dev/{device} завершён.\nРезультат: {result}\nДлительность: {duration}", + "label": "Тест SMART завершён" + }, + "smart_test_failed": { + "title": "{hostname}: тест SMART завершился ОШИБКОЙ — {device}", + "body": "Тест SMART {test_type} на /dev/{device} завершился ошибкой.\nРезультат: {result}\nПричина: {reason}", + "label": "Тест SMART завершился ОШИБКОЙ" + }, + "gpu_mode_switch": { + "title": "{hostname}: режим GPU изменён на {new_mode}", + "body": "Режим проброса GPU переключён.\nGPU: {gpu_name} ({gpu_pci})\nПредыдущий режим: {old_mode}\nНовый режим: {new_mode}\n{details}", + "label": "Режим GPU переключён" + }, + "gpu_passthrough_blocked": { + "title": "{hostname}: запуск {guest_type} {guest_id} заблокирован", + "body": "Механизм защиты при пробросе PCIe предотвратил запуск {guest_type} {guest_id} ({guest_name}).\nПричина: {reason}\n{details}", + "label": "Проброс GPU заблокирован" + }, + "pci_passthrough_conflict": { + "title": "{hostname}: обнаружен конфликт устройств PCIe — {device_pci}", + "body": "Одно устройство PCIe назначено нескольким гостевым системам.\nУстройство: {device_pci}\nКонфликтующие гостевые системы: {guest_list}\nНеобходимое действие: остановите одну из гостевых систем или переназначьте устройство.", + "label": "Конфликт устройств PCIe" + }, + "load_high": { + "title": "{hostname}: высокая нагрузка на систему — {value}", + "body": "Средняя нагрузка на систему составляет {value} при числе ядер {cores}.\n{details}", + "label": "Высокая нагрузка на систему" + }, + "network_down": { + "title": "{hostname}: сетевое соединение потеряно{entity_suffix}", + "body": "Узел потерял сетевое соединение.\nПричина: {reason}", + "label": "Сетевое соединение потеряно" + }, + "network_latency": { + "title": "{hostname}: высокая сетевая задержка — {value} мс", + "body": "Задержка до шлюза: {value} мс (порог: {threshold} мс).\nЭто может указывать на перегрузку сети или проблемы с оборудованием.", + "label": "Высокая сетевая задержка" + }, + "auth_fail": { + "title": "{hostname}: ошибка аутентификации", + "body": "Обнаружена неудачная попытка входа.\nIP-адрес источника: {source_ip}\nПользователь: {username}\nСлужба: {service}", + "label": "Ошибка аутентификации" + }, + "ip_block": { + "title": "{hostname}: IP-адрес заблокирован с помощью Fail2Ban", + "body": "IP-адрес {source_ip} заблокирован.\nJail: {jail}\nНеудачных попыток: {failures}", + "label": "IP-адрес заблокирован Fail2Ban" + }, + "firewall_issue": { + "title": "{hostname}: обнаружена проблема с межсетевым экраном{entity_suffix}", + "body": "Обнаружена проблема с конфигурацией межсетевого экрана.\nПричина: {reason}", + "label": "Обнаружена проблема с межсетевым экраном" + }, + "user_permission_change": { + "title": "{hostname}: права пользователя изменены", + "body": "Пользователь: {username}\nИзменение: {change_details}", + "label": "Права пользователя изменены" + }, + "split_brain": { + "title": "{hostname}: получено сообщение о событии в кластере", + "body": "Получено сообщение о событии в кластере:\n{reason}", + "label": "Событие в кластере" + }, + "node_disconnect": { + "title": "{hostname}: Узел {node_name} отключён", + "body": "Узел {node_name} отключился от кластера.", + "label": "Узел отключён" + }, + "node_reconnect": { + "title": "{hostname}: Узел {node_name} подключился повторно", + "body": "Узел {node_name} успешно вернулся в кластер.", + "label": "Соединение с узлом восстановлено" + }, + "system_startup": { + "title": "{hostname}: {reason}", + "body": "{summary}", + "label": "Отчёт о запуске системы" + }, + "system_shutdown": { + "title": "{hostname}: Завершение работы системы", + "body": "Узел завершает работу.\n{reason}", + "label": "Система завершает работу" + }, + "system_reboot": { + "title": "{hostname}: Перезагрузка системы", + "body": "Узел перезагружается.\n{reason}", + "label": "Система перезагружается" + }, + "system_restore_completed": { + "title": "{hostname}: Восстановление хоста завершено", + "body": "Задачи после восстановления выполнены в фоновом режиме.\n\nСкопировано конфигураций гостевых систем: {guests}\nСоздано каталогов-заглушек для bind-монтирования: {stubs}\nУдалено устаревших каталогов узлов: {stale_nodes}\nПереустановлено компонентов: {components}\nПродолжительность: {duration}\n{warnings_block}", + "label": "Восстановление хоста завершено" + }, + "system_problem": { + "title": "{hostname}: Обнаружена системная проблема{entity_suffix}", + "body": "Обнаружена проблема на уровне системы.\nПричина: {reason}", + "label": "Обнаружена системная проблема" + }, + "service_fail": { + "title": "{hostname}: Сбой службы — {service_name}", + "body": "В системной службе «{service_name}» произошёл сбой.\nПричина: {reason}", + "label": "Сбой службы" + }, + "oom_kill": { + "title": "{hostname}: Принудительное завершение из-за нехватки памяти — {process}", + "body": "Процесс «{process}» был принудительно завершён механизмом обработки нехватки памяти (OOM).\n{reason}", + "label": "Принудительное завершение из-за нехватки памяти" + }, + "service_fail_batch": { + "title": "{hostname}: Сбои служб: {service_count}{entity_suffix}", + "body": "{reason}", + "label": "Группа сбоев служб" + }, + "cron_output": { + "title": "{hostname}: {pve_title}", + "body": "{reason}", + "label": "Вывод заданий cron (stdout каждого задания по почте)" + }, + "system_mail": { + "title": "{hostname}: {pve_title}", + "body": "{reason}", + "label": "Smartd / уведомления о недоставке почты (системная почта PVE)" + }, + "apt_listchanges": { + "title": "{hostname}: {pve_title}", + "body": "Информация от разработчиков пакетов, пересылаемая Proxmox VE через apt-listchanges. Следующий текст предоставлен сопровождающим пакета и не является рекомендацией ProxMenux.\n\n{reason}", + "label": "Уведомления apt-listchanges о пакетах" + }, + "webhook_test": { + "title": "{hostname}: Получен тестовый запрос вебхука", + "body": "Проверка подключения вебхука PVE прошла успешно.\n{reason}", + "label": "Тест вебхука" + }, + "update_available": { + "title": "{hostname}: Доступны обновления", + "body": "Всего обновлений: {total_count}\nОбновления безопасности: {security_count}\nProxmox: {pve_count}\nЯдро: {kernel_count}\nВажные пакеты:\n{important_list}", + "label": "Доступны обновления (устаревшее событие)" + }, + "unknown_persistent": { + "title": "{hostname}: Проверка недоступна — {category}{entity_suffix}", + "body": "Проверка состояния {category} недоступна в течение 3 или более циклов.\n{reason}", + "label": "Проверка недоступна" + }, + "health_persistent": { + "title": "{hostname}: Нерешённые проблемы состояния: {count}{entity_suffix}", + "body": "Следующие проблемы состояния остаются нерешёнными:\n{issue_list}\n\nЭта сводка отправляется раз в 24 часа, пока проблемы сохраняются.", + "label": "Текущие проблемы с работоспособностью (ежедневно)" + }, + "health_issue_new": { + "title": "{hostname}: Новая проблема состояния — {category}{entity_suffix}", + "body": "Обнаружена новая проблема. Уровень серьёзности: {severity}\nКатегория: {category}\nПодробности: {reason}", + "label": "Новая проблема с работоспособностью" + }, + "health_issue_resolved": { + "title": "{hostname}: Устранено — {category}{entity_suffix}", + "body": "Проблема {category} устранена.\n{reason}\nДлительность: {duration}", + "label": "Проблема с работоспособностью устранена" + }, + "update_summary": { + "title": "{hostname}: Доступны обновления", + "body": "Всего обновлений: {total_count}\nОбновления безопасности: {security_count}\nОбновления, связанные с Proxmox: {pve_count}\nОбновления ядра: {kernel_count}\nВажные пакеты:\n{important_list}", + "label": "Обновления пакетов хоста" + }, + "pve_update": { + "title": "{hostname}: Доступна версия Proxmox VE {new_version}", + "body": "Доступен новый выпуск Proxmox VE.\nТекущая версия: {current_version}\nНовая версия: {new_version}\n{details}", + "label": "Доступно обновление Proxmox VE" + }, + "update_complete": { + "title": "{hostname}: Обновление системы завершено", + "body": "Системные пакеты успешно обновлены.\n{details}", + "label": "Обновление хоста завершено" + }, + "ai_model_migrated": { + "title": "{hostname}: Модель ИИ обновлена", + "body": "Модель ИИ для уведомлений автоматически обновлена.\nПровайдер: {provider}\nПредыдущая модель: {old_model}\nНовая модель: {new_model}\n\n{message}", + "label": "Модель ИИ автоматически обновлена" + }, + "proxmenux_update": { + "title": "{hostname}: Доступна версия ProxMenux {new_version}", + "body": "Доступна новая версия ProxMenux.\nТекущая версия: {current_version}\nНовая версия: {new_version}", + "label": "Доступно обновление ProxMenux" + }, + "mount_stale": { + "title": "{hostname}: удалённая точка монтирования {mount_target} недоступна", + "body": "Удалённая точка монтирования {mount_target} ({fstype}) с {mount_source} недоступна{lxc_scope}.\nВызов stat завершился по тайм-ауту или вернул ошибку: {error}\n\nПриложения, записывающие данные по этому пути, будут незаметно записывать их в нижележащую файловую систему и могут заполнить диск. Как можно скорее выполните повторное монтирование или восстановите соединение.", + "label": "Удалённая точка монтирования недоступна" + }, + "mount_readonly": { + "title": "{hostname}: удалённая точка монтирования {mount_target} доступна только для чтения", + "body": "Удалённая точка монтирования {mount_target} ({fstype}) с {mount_source} смонтирована в режиме «только для чтения»{lxc_scope}. Операции записи будут завершаться ошибкой. Если это произошло непреднамеренно, выполните повторное монтирование с параметром rw.", + "label": "Удалённая точка монтирования: только для чтения" + }, + "lxc_disk_low": { + "title": "{hostname}: rootfs контейнера CT {vmid} заполнена на {usage_percent}%", + "body": "Корневая файловая система rootfs контейнера CT {vmid} ({name}) заполнена на {usage_percent}% ({disk_bytes_human} / {maxdisk_bytes_human}).\n\nПолностью заполненная rootfs LXC препятствует нормальной загрузке контейнера. Увеличьте rootfs (pct resize {vmid} rootfs +1G) или освободите место внутри контейнера.", + "label": "rootfs LXC почти заполнена" + }, + "vm_disk_low": { + "title": "{hostname}: файловые системы VM {vmid} заполнены на {usage_percent}%", + "body": "Файловые системы гостевой ОС VM {vmid} ({name}) заполнены на {usage_percent}% ({disk_bytes_human} / {maxdisk_bytes_human}).\n\nДанные предоставлены гостевым агентом QEMU. Учитываются все постоянные файловые системы, которые гостевая ОС монтирует на блочных устройствах: как на виртуальных дисках, так и на накопителях, подключённых через проброс PCI. Освободите место внутри гостевой ОС или увеличьте соответствующее хранилище, прежде чем операции записи начнут завершаться ошибками.", + "label": "Файловые системы VM почти заполнены" + }, + "lxc_mount_low": { + "title": "{hostname}: точка монтирования {mount} контейнера CT {vmid} заполнена на {usage_percent}%", + "body": "Точка монтирования {mount} в контейнере CT {vmid} ({name}) заполнена на {usage_percent}%.\nТип файловой системы: {fstype}\n\nЗаполнение точки монтирования внутри контейнера часто блокирует работу приложения без явного уведомления: операции записи либо завершаются ошибкой, либо, что ещё хуже, данные попадают в rootfs, после чего срабатывает предупреждение о заполнении rootfs. Освободите место в точке монтирования или увеличьте доступный объём.", + "label": "Точка монтирования LXC почти заполнена" + }, + "pve_storage_full": { + "title": "{hostname}: хранилище PVE {storage_name} заполнено на {usage_percent}%", + "body": "Хранилище Proxmox «{storage_name}» (тип: {storage_type}) заполнено на {usage_percent}%.\n\nПосле полного заполнения создать новые VM/CT будет невозможно, а у существующих гостевых систем могут возникнуть ошибки записи. Переместите или удалите неиспользуемые тома либо увеличьте размер соответствующего пула, LV или образа RBD.", + "label": "Хранилище PVE почти заполнено" + }, + "zfs_pool_full": { + "title": "{hostname}: пул ZFS {pool_name} заполнен на {usage_percent}%", + "body": "Пул ZFS «{pool_name}» заполнен на {usage_percent}%.\n\nПри заполнении более чем примерно на 80% производительность и надёжность записи ZFS резко снижаются: CoW требуется свободное место для новых блоков. Освободите место, удалив снимки и старые наборы данных, или добавьте в пул дополнительные vdev.", + "label": "Пул ZFS почти заполнен" + }, + "post_install_update": { + "title": "{hostname}: доступны обновления оптимизации {count} — ProxMenux", + "body": "На этом хосте доступны обновления оптимизации ProxMenux: {count}.\n\n🛠️ Доступные версии:\n{tool_list}\n\n💡 Примените обновления через:\n • ProxMenux Monitor → Settings → ProxMenux Optimizations\n • Или откройте меню ProxMenux → Настройки Proxmox после установки → «Применить доступные обновления»", + "label": "Доступны обновления оптимизации ProxMenux" + }, + "secure_gateway_update_available": { + "title": "{hostname}: доступно обновление {app_name}{update_title_suffix}", + "body": "{app_name} (под управлением ProxMenux): в контейнере ожидают установки 📦 {package_count} обновлений пакетов.\n{version_line}\n\n💡 Откройте ProxMenux Monitor > Безопасность > Secure Gateway и нажмите «Обновить», чтобы установить их.\n\n🗂️ Пакеты:\n{package_list}", + "label": "Доступно обновление Secure Gateway" + }, + "nvidia_driver_update_available": { + "title": "{hostname}: доступно обновление драйвера NVIDIA — v{latest_version}", + "body": "Доступен новый корректирующий выпуск установленной ветки драйвера NVIDIA.\n🔹 Сейчас установлена версия: v{current_version}\n🟢 Последняя доступная версия: v{latest_version}\n\n{upgrade_reason}\n\n💡 Для переустановки:\n • В меню послеустановочной настройки ProxMenux: {menu_label}\n\nПри переустановке модуль DKMS пересобирается для текущего работающего ядра. Для загрузки нового драйвера требуется перезагрузка.", + "label": "Доступно обновление драйвера NVIDIA" + }, + "coral_driver_update_available": { + "title": "{hostname}: доступно обновление драйвера TPU Coral — {latest_version}", + "body": "Доступна новая версия {variant_label}.\n🔹 Сейчас установлена версия: {current_version}\n🟢 Последняя доступная версия: {latest_version}\n\n{upgrade_reason}\n\n💡 Для переустановки:\n • В меню послеустановочной настройки ProxMenux: {menu_label}\n\n{reboot_note}", + "label": "Доступно обновление драйвера Coral TPU" + }, + "burst_auth_fail": { + "title": "{hostname}: ещё +{count} неудачных попыток аутентификации за {window}", + "body": "Обнаружено ещё +{count} неудачных попыток аутентификации за {window} (всего: {total_count}).\nИсточники: {entity_list}", + "label": "Всплеск неудачных попыток аутентификации" + }, + "burst_ip_block": { + "title": "{hostname}: Fail2Ban — заблокировано ещё +{count} IP-адресов за {window}", + "body": "Fail2Ban: заблокировано ещё +{count} IP-адресов за {window} (всего: {total_count}).\nIP-адреса: {entity_list}", + "label": "Всплеск блокировок IP-адресов" + }, + "burst_disk_io": { + "title": "{hostname}: ещё +{count} ошибок дискового ввода-вывода на {entity_list}", + "body": "Обнаружено ещё +{count} ошибок ввода-вывода за {window} (всего: {total_count}).\nУстройства: {entity_list}", + "label": "Всплеск ошибок дискового ввода-вывода" + }, + "burst_cluster": { + "title": "{hostname}: обнаружены частые изменения состояния кластера (ещё +{count} изменений)", + "body": "Состояние кластера изменилось ещё +{count} раз за {window} (всего: {total_count}).\nУзлы: {entity_list}", + "label": "Всплеск изменений состояния кластера" + }, + "burst_service_fail": { + "title": "{hostname}: ещё +{count} сбоев служб за {window}", + "body": "Обнаружено ещё +{count} сбоев служб за {window} (всего: {total_count}).\nОбычно это указывает на перезагрузку узла или перезапуск службы PVE.\n\nДополнительные сбои:\n{details}", + "label": "Всплеск сбоев служб" + }, + "burst_system": { + "title": "{hostname}: ещё +{count} системных проблем за {window}", + "body": "Обнаружено ещё +{count} системных проблем за {window} (всего: {total_count}).\n\nДополнительные проблемы:\n{details}", + "label": "Всплеск системных проблем" + }, + "burst_generic": { + "title": "{hostname}: ещё +{count} событий типа {event_type} за {window}", + "body": "Ещё +{count} событий типа {event_type} за {window} (всего: {total_count}).\n\nДополнительные события:\n{details}", + "label": "Всплеск общего типа" + }, + "kernel_warning": { + "title": "{hostname}: обнаружено диагностическое событие ядра", + "body": "Ядро зарегистрировало диагностическое событие: {kernel_details}", + "label": "Предупреждения ядра и диагностические трассировки" + } + }, + "lxcUpdate": { + "status": { + "success": "успешно", + "failure": "сбой", + "partial": "выполнено частично", + "deferred": "отложено", + "skipped": "пропущено" + }, + "source": { + "scheduled": "По расписанию", + "manual": "Вручную" + }, + "sourceLabel": "Источник", + "targets": "Целевые объекты", + "osPending": "Пакеты ОС, ожидающие обновления: {before} → {after}", + "osUnverified": "Пакеты ОС: команда обновления выполнена; результат не проверен", + "applications": "Приложения: {items}", + "applicationsUnverified": "Приложения: средство обновления запущено; изменений отслеживаемых версий не обнаружено", + "dockerEngineChange": "Docker Engine: {before} → {after}", + "dockerEngineVerified": "Docker Engine: подтверждена версия {version}", + "dockerEngineUnverified": "Docker Engine: команда обновления выполнена; версия не проверена", + "dockerImagesPending": "Образы Docker, ожидающие обновления: {before} → {after}", + "dockerImagesChanged": "Изменённые образы Docker: {images}", + "deferredTargets": "Целевые объекты с отложенным обновлением: {targets}", + "reason": "Причина: {reason}", + "restartRequired": "Требуется перезапуск: {value}", + "yes": "да", + "no": "нет", + "verificationPending": "Проверка отложена до запуска контейнера", + "verificationWarning": "Предупреждение при проверке: {error}", + "duration": "Длительность: {duration}" + }, + "fallback": { + "unknownTitle": "{hostname}: {event_type}", + "healthCheckDegraded": "Ухудшение результатов проверки работоспособности", + "none": "нет", + "temperatureAlertTitle": "{hostname}: Оповещение о температуре датчика", + "temperatureAlertBody": "Оповещение о температуре зарегистрировано без полного набора данных измерения.", + "recordedReason": "Зарегистрированная причина: {reason}", + "recordedDetails": "Зарегистрированные сведения: {details}" + }, + "fields": { + "vmid": "VM/CT", + "name": "Название", + "device": "Устройство", + "sourceIp": "IP-адрес источника", + "node": "Узел", + "category": "Категория", + "service": "Служба", + "jail": "Jail", + "user": "Пользователь", + "count": "Количество", + "window": "Временное окно", + "affected": "Затронутые объекты" + }, + "vzdump": { + "size": "Размер: {value}", + "duration": "Длительность: {value}", + "file": "Файл", + "backups": "Резервные копии: {count}", + "failed": "Не пройдено: {count}", + "total": "Всего: {value}", + "time": "Время: {value}" + }, + "startup": { + "issuesTitle": "{hostname}: Запуск системы — обнаружено проблем: {count}", + "completeTitle": "{hostname}: Запуск системы завершён", + "operational": "Все системы работают штатно.", + "vmCountOne": "{count} ВМ", + "vmCountMany": "ВМ: {count}", + "ctCountOne": "{count} контейнер", + "ctCountMany": "Контейнеры: {count}", + "started": "✅ Запущено: {counts}", + "vmFailed": "❌ Не удалось запустить ВМ: {name} — {reason}", + "ctFailed": "❌ Не удалось запустить контейнер: {name} — {reason}", + "unknownError": "неизвестная ошибка", + "storageUnavailable": "⚠️ Хранилище: {count} недоступно ({names})", + "servicesFailed": "⚠️ Службы: сбой {count} ({names})", + "duration": "⏱️ Запуск завершён за {minutes} мин" + }, + "appUpdates": { + "singleTitle": "{hostname}: доступно обновление {app_name} в CT {vmid}", + "singleBody": "Для {app_name} в CT {vmid} ({ct_name}) доступна новая версия:\n {installed} → {latest}", + "emptyTitle": "{hostname}: доступны обновления приложений", + "emptyBody": "Доступны обновления приложений.", + "batchTitle": "{hostname}: доступны обновления приложений — {count}", + "batchLeadOneContainer": "Доступны новые версии приложений ({count}) в {container_count} контейнере LXC:", + "batchLeadManyContainers": "Доступны новые версии приложений ({count}) в {container_count} контейнерах LXC:", + "additional": "… дополнительные приложения: {count}", + "app": "приложение", + "unknown": "неизвестно" + }, + "healthDegraded": { + "categories": { + "cpu": "Загрузка и температура CPU", + "memory": "Память и подкачка", + "storage": "Монтирование хранилищ и свободное место", + "disks": "Дисковый ввод-вывод и ошибки", + "network": "Сетевые интерфейсы", + "vms": "Виртуальные машины и контейнеры", + "services": "Службы PVE", + "logs": "Системные журналы", + "updates": "Обновления системы", + "security": "Безопасность" + }, + "severity": { + "critical": "Критическое состояние", + "warning": "Предупреждение" + }, + "singleTitle": "{hostname}: состояние работоспособности {severity} — {category}", + "multipleTitle": "{hostname}: проверки работоспособности выявили ухудшение — {count}", + "multipleLine": "• {severity}: {category}\n {reason}", + "reasons": { + "cpuSustained": "Загрузка CPU превышает {threshold}% в течение {duration} с." + } + }, + "digest": { + "title": "{hostname}: сводка за 24 часа ({timestamp})", + "readFailed": "не удалось прочитать сводку: {error}", + "empty": "За период этой сводки в буфере нет событий уровня INFO.", + "lead": "События INFO ({count}), сгруппированные по категориям:\n", + "more": " • … и ещё {count}", + "footer": "(Критические события и предупреждения отправлялись сразу при возникновении и не включены в эту сводку.)", + "quietTitle": "{hostname}: события, накопленные за тихие часы: {count}", + "groups": { + "vm_ct": "Виртуальные машины и контейнеры", + "backup": "Резервная копия", + "resources": "Ресурсы", + "storage": "Хранилище", + "network": "Сеть", + "security": "Безопасность", + "cluster": "Кластер", + "services": "Службы", + "health": "Состояние", + "updates": "Обновления", + "hardware": "Оборудование", + "system": "Система", + "other": "Прочее" + } + }, + "test": { + "title": "ProxMenux — проверка", + "welcome": "Добро пожаловать в ProxMenux Monitor!", + "verify": "Это тестовое сообщение для проверки корректной работы вашего канала уведомлений.", + "configuration": "Настройки канала:", + "iconsEnabled": "Значки: включены", + "iconsDisabled": "Значки: отключены", + "aiEnabled": "ИИ: включён ({info})", + "aiDisabled": "ИИ: отключён", + "alerts": "Вы будете получать оповещения о системных событиях, изменениях состояния системы и инцидентах безопасности.", + "photoCaption": "Вы можете использовать это изображение в качестве фотографии профиля вашего бота уведомлений." + }, + "channels": { + "discord": { + "category": "Категория", + "host": "Хост", + "severity": "Серьёзность" + }, + "email": { + "report": "{group} — отчёт", + "details": "Подробности", + "host": "Хост", + "footer": "Служба уведомлений ProxMenux", + "severity": { + "critical": "Критическое состояние", + "warning": "Предупреждение", + "info": "Информация", + "ok": "Устранены", + "default": "Уведомление" + }, + "groups": { + "vm_ct": "Виртуальная машина / контейнер", + "backup": "Резервная копия и снимок", + "resources": "Системные ресурсы", + "storage": "Хранилище", + "network": "Сеть", + "security": "Безопасность", + "cluster": "Кластер", + "services": "Системные службы", + "health": "Мониторинг состояния", + "updates": "Обновления системы", + "system": "Система", + "hardware": "Оборудование", + "other": "Системное уведомление" + }, + "fields": { + "vmCtId": "ID виртуальной машины / контейнера", + "name": "Название", + "action": "Действие", + "targetNode": "Целевой узел", + "reason": "Причина", + "storage": "Хранилище", + "status": "Статус", + "size": "Размер", + "duration": "Продолжительность", + "snapshot": "Снимок", + "metric": "Показатель", + "currentValue": "Текущее значение", + "threshold": "Порог", + "cpuCores": "Ядра процессора", + "memory": "Память", + "temperature": "Температура", + "mountPoint": "Точка монтирования", + "usage": "Использование", + "available": "Доступно", + "device": "Устройство", + "severity": "Серьёзность", + "storageName": "Имя хранилища", + "type": "Тип", + "interface": "Интерфейс", + "latency": "Задержка", + "event": "Событие", + "sourceIp": "IP-адрес источника", + "username": "Имя пользователя", + "service": "Служба", + "jail": "Jail", + "failures": "Сбои", + "change": "Изменить", + "node": "Узел", + "quorum": "Кворум", + "nodesAffected": "Затронутые узлы", + "process": "Процесс", + "category": "Категория", + "previousSeverity": "Предыдущий уровень серьёзности", + "activeIssues": "Активные проблемы", + "totalUpdates": "Всего обновлений", + "securityUpdates": "Обновления безопасности", + "proxmoxUpdates": "Обновления Proxmox", + "kernelUpdates": "Обновления ядра", + "importantPackages": "Важные пакеты", + "currentVersion": "Текущая версия", + "newVersion": "Новая версия" + }, + "status": { + "failed": "Сбой", + "completed": "Завершено", + "started": "Время запуска", + "unconfirmed": "Не подтверждено", + "completed_with_warnings": "Завершено с предупреждениями" + } + } + }, + "temperature": { + "sampleSpan": "Измерения с повышенной температурой охватывают период {duration}." + }, + "backup": { + "unconfirmedTitle": "{hostname}: Результат резервного копирования не подтверждён", + "confirmedTitle": "{hostname}: Резервное копирование завершено", + "confirmedBody": "Резервное копирование успешно завершено.", + "errorTitle": "{hostname}: Сообщено об ошибке резервного копирования", + "errorBody": "Отчёт о резервном копировании содержит ошибку.", + "unconfirmedBody": "Результат резервного копирования не подтверждён.", + "warningTitle": "{hostname}: резервное копирование завершено с предупреждениями", + "warningBody": "Резервное копирование завершено с предупреждениями.", + "diagnosticsOmitted": "Дополнительные диагностические строки или текст опущены: {count}. Исходный отчёт сохранён.", + "quotaCause": "Не удалось завершить резервное копирование из-за квоты хранилища.", + "quotaAffected": "Резервные копии {ids}: не удалось завершить создание из-за квоты хранилища.", + "quotaCheck": "Перед повторной попыткой проверьте квоту хранилища резервных копий {storage}.", + "causeMissing": "Резервные копии {ids}: в сводке не указана причина; проверьте полные журналы соответствующих задач." + } + } + }, + "monitorLinks": { + "thisNode": "Этот узел", + "checking": "Проверка узлов…", + "loadFailed": "Не удалось загрузить список узлов.", + "empty": "Других узлов пока нет. Добавьте узел, чтобы открывать его Monitor отсюда.", + "groups": { + "cluster": "Кластер", + "standalone": "Автономные узлы", + "pbs": "Proxmox Backup Server" + }, + "noResponse": "Нет ответа", + "pbsInterface": "Интерфейс PBS", + "openNewTab": "Открыть в новой вкладке", + "manage": "Добавить узлы или управлять ими…", + "dialogTitle": "Связанные узлы", + "dialogDescription": "Узлы кластера и настроенные серверы Proxmox Backup Server обнаруживаются автоматически. Каждый Monitor сохраняет собственный сеанс входа.", + "addTitle": "Добавить узел", + "name": "Название", + "address": "Адрес Monitor", + "type": "Тип", + "add": "Добавить", + "save": "Сохранить", + "remove": "Удалить", + "visible": "Видимый", + "autoAddress": "Автоматически", + "detected": "Обнаружен", + "added": "Добавлен", + "saveFailed": "Не удалось сохранить список узлов.", + "backTo": "Назад к {name}", + "cameFromTitle": "Добавить узел Monitor?", + "cameFromBody": "Добавить {name} в список связанных узлов этого Monitor.", + "notNow": "Не сейчас", + "knownTitle": "Добавить связанные узлы?", + "knownBody": "С {name} связаны следующие экземпляры Monitor. Выберите те, которые нужно добавить в этот Monitor.", + "addSelected": "Добавить выбранные", + "pbsWebInterface": "Веб-интерфейс PBS", + "changeAddress": "Изменить адрес", + "cancel": "Отмена", + "errors": { + "addressRequired": "Введите адрес Monitor.", + "invalidAddress": "Адрес должен начинаться с http:// или https:// и содержать имя хоста.", + "addressCredentials": "Адрес не должен содержать имя пользователя или пароль.", + "invalidPort": "В адресе указан недопустимый порт.", + "invalidRequest": "Недопустимый запрос. Перезагрузите страницу и повторите попытку.", + "limit": "Можно добавить не более {count} узлов.", + "duplicate": "Этот адрес уже есть в списке.", + "notFound": "Узел не найден. Обновите список и повторите попытку.", + "detectedRemove": "Удалять можно только узлы, добавленные вручную. Обнаруженные узлы можно скрыть." + } + }, + "apiErrors": { + "http": "Ошибка запроса API: {status} {statusText}", + "unexpectedContentType": "Ожидался ответ в формате JSON, но получен {contentType}", + "unknownContentType": "неизвестный тип содержимого", + "invalidJson": "Некорректный ответ JSON от {endpoint}", + "unauthorized": "Нет авторизации: {endpoint}" + } +} diff --git a/AppImage/scripts/notification_manager.py b/AppImage/scripts/notification_manager.py index 03c09734..c2e30a26 100644 --- a/AppImage/scripts/notification_manager.py +++ b/AppImage/scripts/notification_manager.py @@ -62,7 +62,7 @@ except ImportError: DB_PATH = Path('/usr/local/share/proxmenux/health_monitor.db') SETTINGS_PREFIX = 'notification.' ENCRYPTION_KEY_FILE = Path('/usr/local/share/proxmenux/.notification_key') -RUNTIME_NOTIFICATION_LANGUAGES = ('en', 'de', 'es', 'fr', 'it', 'pt', 'sk', 'sv') +RUNTIME_NOTIFICATION_LANGUAGES = ('en', 'de', 'es', 'fr', 'it', 'pt', 'sk', 'sv', 'ru') ALLOWED_AI_LANGUAGES = ( 'en', 'sk', 'es', 'fr', 'de', 'it', 'pt', 'ru', 'sv', 'no', 'ja', 'zh', 'ko', 'pl', 'nl', 'tr', 'ar', diff --git a/install_proxmenux.sh b/install_proxmenux.sh index 8e7b12f9..29d1c65f 100755 --- a/install_proxmenux.sh +++ b/install_proxmenux.sh @@ -397,7 +397,8 @@ select_language() { "it" "Italian" \ "pt" "Portuguese" \ "sk" "Slovenčina" \ - "sv" "Svenska" 3>&1 1>&2 2>&3) + "sv" "Svenska" \ + "ru" "Русский" 3>&1 1>&2 2>&3) if [ -z "$LANGUAGE" ]; then msg_error "No language selected. Exiting." diff --git a/install_proxmenux_beta.sh b/install_proxmenux_beta.sh index 7c8e3eef..a434c6ad 100644 --- a/install_proxmenux_beta.sh +++ b/install_proxmenux_beta.sh @@ -595,7 +595,8 @@ select_language() { "it" "Italian" \ "pt" "Portuguese" \ "sk" "Slovenčina" \ - "sv" "Svenska" 3>&1 1>&2 2>&3) + "sv" "Svenska" \ + "ru" "Русский" 3>&1 1>&2 2>&3) if [ -z "$LANGUAGE" ]; then msg_error "No language selected. Exiting." diff --git a/lang/ru.json b/lang/ru.json new file mode 100644 index 00000000..794a0c6f --- /dev/null +++ b/lang/ru.json @@ -0,0 +1,9033 @@ +{ + "# Alternative if you prefer screen": "# Альтернатива, если вы предпочитаете screen", + "# Recommended: avoids disconnection during upgrade": "# Рекомендуется: предотвращает разрыв соединения во время обновления", + "%s of %s updates failed — see the messages above.": "Не удалось выполнить %s из %s обновлений — см. сообщения выше.", + "%s of %s updates failed.": "Не удалось выполнить %s из %s обновлений.", + "'auto'/'local', or root@IP for development": "'auto'/'local' или root@IP для разработки", + "(Checked entries will be removed. Uncheck to keep in VM.)": "(Отмеченные элементы будут удалены. Снимите отметки, чтобы оставить их в ВМ.)", + "(Import is selected by default — required for disk image imports)": "(Импорт выбран по умолчанию — необходим для импорта образов дисков)", + "(Only the host directory is modified. Nothing inside the container is changed.": "(Изменяется только каталог на хосте. Внутри контейнера ничего не меняется.", + "(common default on Debian/LXC: PermitRootLogin prohibit-password).": "(обычное значение по умолчанию в Debian/LXC: PermitRootLogin prohibit-password).", + "(disabled)": "(отключено)", + "(e.g.": "(например,", + "(empty)": "(пусто)", + "(for unprivileged LXCs)": "(для непривилегированных контейнеров LXC)", + "(if only privileged LXCs need write access)": "(если доступ на запись нужен только привилегированным контейнерам LXC)", + "(make.log not found — DKMS may have failed before invoking make)": "(make.log не найден — возможно, сбой DKMS произошёл до вызова make)", + "(need ≥ 1024MB)": "(требуется ≥ 1024 МБ)", + "(no credentials file — guest mode)": "(нет файла учётных данных — гостевой режим)", + "(no guests selected)": "(гостевые системы не выбраны)", + "(none)": "(нет)", + "(not mounted — will be mounted)": "(не смонтировано — будет смонтировано)", + "(only on SSD/NVMe) to protect your disk": "(только на SSD/NVMe) для защиты диска", + "(parent PF:": "(родительская PF:", + "(recommended)": "(рекомендуется)", + "(same MAC — restored config adjusted automatically)": "(тот же MAC — восстановленная конфигурация скорректирована автоматически)", + ")": ")", + "*Arr Suite": "*Arr Suite", + "+ Add a path": "+ Добавить путь", + "+ Add new Borg target": "+ Добавить новое место назначения Borg", + "+ Add new PBS manually": "+ Добавить новый PBS вручную", + "- Delete a saved target": "- Удалить сохранённое место назначения", + "/backup": "/backup", + "/etc/exports file does not exist.": "Файл /etc/exports не существует.", + "/etc/fstab updated — permissions will persist after reboot": "/etc/fstab обновлён — права доступа сохранятся после перезагрузки", + "/etc/network controls active interfaces. Applying may immediately change or drop network connectivity, including active SSH sessions.": "/etc/network управляет активными интерфейсами. Применение изменений может немедленно изменить или прервать сетевое соединение, включая активные сеансы SSH.", + "/etc/network/interfaces uses allow-hotplug. Renaming interfaces via systemd .link can break that flow — review the file after reboot.": "/etc/network/interfaces использует allow-hotplug. Переименование интерфейсов через systemd .link может нарушить этот механизм — проверьте файл после перезагрузки.", + "/etc/pve is managed by pmxcfs (cluster filesystem). Applying this on a running node can corrupt cluster state. Use 'Export to file' and apply it manually during a maintenance window.": "/etc/pve управляется pmxcfs (кластерной файловой системой). Применение этих изменений на работающем узле может повредить состояние кластера. Используйте «Экспорт в файл» и примените изменения вручную в период технического обслуживания.", + "/etc/samba/smb.conf file does not exist.": "Файл /etc/samba/smb.conf не существует.", + "/var/lib/pve-cluster is live cluster data. Never restore this while the node is running. Use 'Export to file' for manual recovery only.": "/var/lib/pve-cluster содержит текущие данные кластера. Никогда не восстанавливайте их, пока узел работает. Используйте «Экспорт в файл» только для ручного восстановления.", + "/var/lib/vz/dump (Proxmox default vzdump path)": "/var/lib/vz/dump (путь vzdump по умолчанию в Proxmox)", + "/var/lib/vz/dump (Proxmox default)": "/var/lib/vz/dump (по умолчанию в Proxmox)", + "1777 = sticky bit + rwx for all. No shared group needed.": "1777 = sticky bit + rwx для всех. Общая группа не требуется.", + "====== PBS UPDATE COMPLETED ======": "====== ОБНОВЛЕНИЕ PBS ЗАВЕРШЕНО ======", + "====== PVE UPDATE COMPLETED ======": "====== ОБНОВЛЕНИЕ PVE ЗАВЕРШЕНО ======", + ">> Create a new backup job <<": ">> Создать новое задание резервного копирования <<", + ">> Save and return <<": ">> Сохранить и вернуться <<", + "A GPS tracking platform with device management and fleet reports.": "Платформа GPS-мониторинга с управлением устройствами и отчётами по автопарку.", + "A GTK Broadway web UI for libvirt and virt-manager.": "Веб-интерфейс на базе GTK Broadway для libvirt и virt-manager.", + "A Personal Relationship Management tool to help you document your social life.": "Инструмент управления личными отношениями, помогающий вести записи о вашей социальной жизни.", + "A REST backend for restic backups; it has no web interface.": "Серверная часть с REST API для резервного копирования с помощью restic; веб-интерфейса нет.", + "A VirtIO ISO already exists. Do you want to overwrite it?": "ISO-образ VirtIO уже существует. Хотите перезаписать его?", + "A ZFS pool with this name already exists.": "Пул ZFS с таким именем уже существует.", + "A ZFS pool with this name already exists:": "Пул ZFS с таким именем уже существует:", + "A backup was modified": "Резервная копия была изменена", + "A browser-based editor for designing database diagrams.": "Браузерный редактор для проектирования диаграмм баз данных.", + "A browser-based workbench for transforming and inspecting data.": "Браузерная рабочая среда для преобразования и анализа данных.", + "A collaborative online whiteboard.": "Онлайн-доска для совместной работы.", + "A collaborative spreadsheet and database with a self-hosted web interface.": "Электронная таблица и база данных для совместной работы с веб-интерфейсом, размещаемым на собственном сервере.", + "A collection of useful web tools for developers and IT professionals.": "Набор полезных веб-инструментов для разработчиков и ИТ-специалистов.", + "A command did not finish in time:": "Команда не завершилась за отведённое время:", + "A complete restore will:": "При полном восстановлении будут выполнены следующие действия:", + "A concurrent change was detected; the container is not removed": "Обнаружено параллельное изменение; контейнер не удалён", + "A configurable dashboard for organizing and monitoring self-hosted services.": "Настраиваемая панель для организации и мониторинга сервисов, размещённых на собственном сервере.", + "A container mount has a source, backup or permission different from the saved record": "Источник, настройка резервного копирования или права доступа точки монтирования контейнера отличаются от сохранённой записи", + "A container without its record stays as an ordinary container and is not offered again.": "Контейнер без соответствующей записи остаётся обычным контейнером и больше не предлагается.", + "A coordinated operation has a saved journal. Continuing attempts to recover the previous stack where needed, or finish cleanup for a completed operation. Recovery or cleanup can fail.": "Для координируемой операции имеется сохранённый журнал. При продолжении будет предпринята попытка восстановить предыдущий стек, если это необходимо, либо завершить очистку после выполненной операции. Восстановление или очистка могут завершиться неудачей.", + "A coordinated operation is pending. The whole previous stack will be recovered, not only the selected member. If the operation already finished, the cleanup of its markers is completed.": "Ожидает завершения координируемая операция. Будет восстановлен весь предыдущий стек, а не только выбранный участник. Если операция уже завершилась, будет завершена очистка её меток.", + "A customizable dashboard for organizing self-hosted services.": "Настраиваемая панель для организации сервисов, размещённых на собственном сервере.", + "A customizable dashboard for self-hosted services.": "Настраиваемая панель для сервисов, размещённых на собственном сервере.", + "A customizable home dashboard with widgets, themes and service checks.": "Настраиваемая домашняя панель с виджетами, темами и проверками состояния сервисов.", + "A customizable start page for bookmarks and self-hosted apps.": "Настраиваемая стартовая страница для закладок и приложений, размещённых на собственном сервере.", + "A different host monitor include already exists; it is not overwritten:": "Уже существует другой подключаемый файл конфигурации монитора хоста; он не перезаписан:", + "A document database with an HTTP API and a built-in administration interface.": "Документная база данных с HTTP API и встроенным интерфейсом администрирования.", + "A fancy monitoring tool": "Эффектный инструмент мониторинга", + "A fast search API for your applications.": "Быстрый поисковый API для ваших приложений.", + "A fast, cost-effective time-series database and monitoring system.": "Быстрая, экономичная база данных временных рядов и система мониторинга.", + "A flat-file CMS for a self-hosted website.": "CMS на основе файлов для сайта, размещённого на собственном сервере.", + "A free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemata.": "Свободная кроссплатформенная документоориентированная СУБД с открытым исходным кодом. MongoDB относится к СУБД типа NoSQL и использует JSON-подобные документы со схемами.", + "A free and open-source machine translation API.": "Бесплатный API машинного перевода с открытым исходным кодом.", + "A free reverse proxy for tunneling services (not self-hosted).": "Бесплатный обратный прокси для туннелирования сервисов (не размещается на собственном сервере).", + "A free, self-hostable news aggregator…": "Бесплатный агрегатор новостей с возможностью самостоятельного размещения…", + "A full-featured, open-source AI chat interface": "Полнофункциональный интерфейс чата с ИИ с открытым исходным кодом", + "A gasket DKMS registration is still present:": "Регистрация gasket в DKMS всё ещё присутствует:", + "A host bind mount cannot be included in vzdump": "Привязку каталога хоста (bind mount) нельзя включить в vzdump", + "A host firewall rule is only valid for a host-monitor profile": "Правило межсетевого экрана хоста допустимо только для профиля host-monitor", + "A host mount is not part of the journal; recovery blocked": "Монтирование на хосте не входит в журнал; восстановление заблокировано", + "A host reboot is required after this change.": "После этого изменения требуется перезагрузка хоста.", + "A host reboot is required before starting the VM. Reboot now?": "Перед запуском виртуальной машины требуется перезагрузка хоста. Перезагрузить сейчас?", + "A host script is not written over a symbolic link:": "Скрипт хоста не записывается поверх символической ссылки:", + "A host update is already running. Reconnect to it instead of starting another.": "Обновление хоста уже выполняется. Подключитесь к нему повторно вместо запуска ещё одного обновления.", + "A job with this ID already exists.": "Задание с таким ID уже существует.", + "A journal already exists; review or recover it before trying again": "Журнал уже существует; просмотрите его или выполните восстановление перед повторной попыткой", + "A keyfile is installed at:": "Файл ключа установлен по пути:", + "A legacy gasket-dkms package was found on this host, but no Coral M.2 / PCIe hardware is present.": "На этом хосте найден устаревший пакет gasket-dkms, но оборудование Coral M.2 / PCIe отсутствует.", + "A lightweight Markdown notes app without an external database.": "Легковесное приложение для заметок в формате Markdown без внешней базы данных.", + "A lightweight dashboard that brings feeds, services and useful widgets together.": "Легковесная панель, объединяющая ленты, сервисы и полезные виджеты.", + "A lightweight hub for monitoring servers and containers.": "Легковесный центр мониторинга серверов и контейнеров.", + "A lightweight self-hosted Kanban board.": "Легковесная канбан-доска для размещения на собственном сервере.", + "A lightweight self-hosted URL shortener with SQLite storage.": "Легковесный сервис сокращения URL для размещения на собственном сервере с хранением данных в SQLite.", + "A lightweight self-hosted music server with Subsonic API support.": "Легковесный музыкальный сервер для самостоятельного размещения с поддержкой API Subsonic.", + "A lightweight self-hosted pastebin for text and files.": "Легковесный сервис обмена текстом и файлами для размещения на собственном сервере.", + "A lightweight static homepage for organizing self-hosted services.": "Легковесная статическая стартовая страница для организации сервисов, размещённых на собственном сервере.", + "A lightweight web file server.": "Легковесный веб-сервер для работы с файлами.", + "A lightweight web interface and SMTP server for testing email.": "Легковесный веб-интерфейс и SMTP-сервер для тестирования электронной почты.", + "A lightweight, self-hosted ActivityPub social network server.": "Легковесный сервер социальной сети ActivityPub для самостоятельного размещения.", + "A managed rootfs and an unprivileged container are required": "Требуются управляемый rootfs и непривилегированный контейнер", + "A managed volume with backup enabled is required": "Требуется управляемый том с включённым резервным копированием", + "A matching managed host firewall rule may also be removed.": "Также может быть удалено соответствующее управляемое правило межсетевого экрана хоста.", + "A member VMID is in use by another guest or is on another node": "VMID участника используется другой гостевой системой или находится на другом узле", + "A member configuration changed after the stack was checked": "Конфигурация участника изменилась после проверки стека", + "A member configuration changed during the preparation": "Конфигурация участника изменилась во время подготовки", + "A member did not pass its service check:": "Участник не прошёл проверку работоспособности службы:", + "A member has a pending operation": "У участника есть незавершённая операция", + "A member has no reproducible service check": "У участника нет воспроизводимой проверки работоспособности службы", + "A member is missing before the replacement": "Перед заменой обнаружено отсутствие участника", + "A member operation does not belong to the stack": "Операция участника не относится к стеку", + "A member stopped:": "Участник остановлен:", + "A member was modified after it was recovered": "Участник был изменён после восстановления", + "A modern wiki and knowledge base for teams": "Современная вики и база знаний для команд", + "A multi-protocol message broker with a browser management console.": "Многопротокольный брокер сообщений с консолью управления в браузере.", + "A multi-user web file manager.": "Многопользовательский файловый веб-менеджер.", + "A new ProxMenux version is available:": "Доступна новая версия ProxMenux:", + "A new kernel is staged for the next boot:": "Новое ядро подготовлено к следующей загрузке:", + "A newer kernel is installed. Reboot before the next backup window to use it.": "Установлено более новое ядро. Чтобы использовать его, перезагрузите систему до следующего окна резервного копирования.", + "A newer version is available:": "Доступна более новая версия:", + "A pending operation exists for": "Есть незавершённая операция для", + "A pending stack assembly already exists; it is not overwritten": "Незавершённая сборка стека уже существует; она не будет перезаписана", + "A personal homepage for your apps and dashboards.": "Персональная домашняя страница для ваших приложений и панелей мониторинга.", + "A personal, self-hosted microblog and timeline.": "Персональный микроблог и лента событий на собственном сервере.", + "A previous NVIDIA refresh is pending review": "Предыдущее обновление NVIDIA ожидает проверки", + "A previous VFIO passthrough configuration was detected for the following NVIDIA GPU(s):": "Для следующих графических процессоров NVIDIA обнаружена ранее настроенная конфигурация проброса через VFIO:", + "A privacy-first, open-source platform for knowledge management and collaboration.": "Платформа с открытым исходным кодом для управления знаниями и совместной работы, в которой конфиденциальность стоит на первом месте.", + "A privacy-focused metasearch frontend.": "Веб-интерфейс метапоиска с акцентом на конфиденциальность.", + "A privacy-respecting metasearch engine.": "Метапоисковая система, уважающая конфиденциальность пользователей.", + "A ready-to-use JupyterLab notebook environment.": "Готовая к использованию среда для работы с блокнотами JupyterLab.", + "A reboot is recommended before the GPU is guaranteed to stay on the native driver.": "Рекомендуется перезагрузка: до неё нельзя гарантировать, что графический процессор останется под управлением штатного драйвера.", + "A reboot is required after installation to load the new kernel modules.": "После установки требуется перезагрузка для загрузки новых модулей ядра.", + "A reboot is required for VFIO binding to take effect. Do you want to restart now?": "Чтобы привязка к VFIO вступила в силу, требуется перезагрузка. Перезагрузить сейчас?", + "A reboot is required to apply the new GPU mode. Do you want to restart now?": "Для применения нового режима графического процессора требуется перезагрузка. Перезагрузить сейчас?", + "A reboot is required to finish the restore.": "Для завершения восстановления требуется перезагрузка.", + "A reboot will be required to complete the restore.": "Для завершения восстановления потребуется перезагрузка.", + "A relaxed AppArmor or seccomp profile is requested; this may be optional.": "Запрашивается профиль AppArmor или seccomp с ослабленными ограничениями; это может быть необязательным.", + "A reproducible native startup is missing": "Отсутствует воспроизводимый запуск со штатным драйвером", + "A reverse proxy with automatic service discovery and routing.": "Обратный прокси-сервер с автоматическим обнаружением сервисов и маршрутизацией.", + "A rootfs adaptation is stored in persistent storage": "Адаптация rootfs сохранена в постоянном хранилище", + "A running container is restarted to apply the changes; a stopped one is left stopped. The data of the application, its database and the configuration of the other containers are not changed. A container volume removed here is deleted with the data in it.": "Работающий контейнер перезапускается для применения изменений; остановленный остаётся остановленным. Данные приложения, его база данных и конфигурация других контейнеров не изменяются. Удаляемый здесь том контейнера удаляется вместе с содержащимися в нём данными.", + "A scheduled run cannot answer:": "При запуске по расписанию невозможно ответить на запрос:", + "A self-hosted Bitwarden server": "Сервер Bitwarden для размещения на собственном оборудовании", + "A self-hosted DNS server with filtering and a web management console.": "DNS-сервер для размещения на собственном оборудовании с фильтрацией и веб-консолью управления.", + "A self-hosted Q&A and knowledge-sharing platform.": "Платформа вопросов и ответов и обмена знаниями для размещения на собственном сервере.", + "A self-hosted RSS reader inspired by Google Reader.": "Приложение для чтения RSS на собственном сервере, созданное по образцу Google Reader.", + "A self-hosted app for organizing recurring tasks and household chores, with data stored in SQLite.": "Приложение для самостоятельного размещения, предназначенное для организации повторяющихся задач и домашних дел, с хранением данных в SQLite.", + "A self-hosted app for organizing tabletop role-playing campaigns.": "Приложение для самостоятельного размещения, предназначенное для организации кампаний настольных ролевых игр.", + "A self-hosted bookmark manager and web archiver.": "Менеджер закладок и инструмент для архивирования веб-страниц для самостоятельного размещения.", + "A self-hosted bookmark manager.": "Менеджер закладок для самостоятельного размещения.", + "A self-hosted file sharing service with expiring downloads.": "Сервис обмена файлами для самостоятельного размещения с ограниченным сроком доступности скачиваний.", + "A self-hosted link-in-bio page.": "Страница со ссылками для профиля в социальных сетях, предназначенная для самостоятельного размещения.", + "A self-hosted read-it-later application.": "Приложение для отложенного чтения, предназначенное для самостоятельного размещения.", + "A self-hosted task manager for planning work and tracking time.": "Менеджер задач для самостоятельного размещения, предназначенный для планирования работы и учёта времени.", + "A self-hosted tracker for habits, tasks, notes and goals.": "Приложение для самостоятельного размещения, предназначенное для отслеживания привычек, задач, заметок и целей.", + "A self-hosted vehicle maintenance and fuel log.": "Журнал технического обслуживания автомобиля и расхода топлива для самостоятельного размещения.", + "A self-hosted workflow scheduler with a web interface.": "Планировщик рабочих процессов с веб-интерфейсом для самостоятельного размещения.", + "A self-hosted, goal-free habit tracking tool.": "Инструмент для отслеживания привычек без постановки целей, предназначенный для самостоятельного размещения.", + "A self-hosted, no-code database and application platform.": "Самостоятельно размещаемая платформа баз данных и приложений без программирования.", + "A self-improving AI agent with memory, skills, messaging, and a web dashboard.": "Самосовершенствующийся ИИ-агент с памятью, навыками, обменом сообщениями и веб-панелью управления.", + "A server reboot is recommended for all changes to take full effect.": "Чтобы все изменения полностью вступили в силу, рекомендуется перезагрузить сервер.", + "A shared directory was replaced during the installation": "Во время установки был заменён общий каталог", + "A shared source does not match its recorded identity": "Идентификационные данные общего источника не совпадают с ранее записанными", + "A simple self-hosted task manager built around Markdown files.": "Простой менеджер задач для самостоятельного размещения, работающий с файлами Markdown.", + "A simple, open-source file sharing host.": "Простой сервер для обмена файлами с открытым исходным кодом.", + "A simple, private file server.": "Простой частный файловый сервер.", + "A single matching image platform cannot be resolved": "Не удалось однозначно определить подходящую платформу образа", + "A single-container web interface for building small relational workspaces backed by SQLite.": "Веб-интерфейс, работающий в одном контейнере, для создания небольших реляционных рабочих пространств на базе SQLite.", + "A single-platform OCI archive is required": "Требуется архив OCI для одной платформы", + "A stack backup is missing; a partial restore is not allowed": "Резервная копия стека отсутствует; частичное восстановление запрещено", + "A stack member has a different identity": "Идентификационные данные одного из компонентов стека отличаются от ожидаемых", + "A system reboot is recommended to ensure all changes take effect.": "Рекомендуется перезагрузить систему, чтобы все изменения вступили в силу.", + "A third party companion app available to Plex server owners to allow their users to request, review and discover content.": "Стороннее приложение для владельцев серверов Plex, позволяющее их пользователям запрашивать, просматривать и находить контент.", + "A third-party client for self-hosted server and self-hosted server, remote access management interface, remote access to installed applications.": "Сторонний клиент для самостоятельно размещаемого сервера и самостоятельно размещаемый сервер, интерфейс управления удалённым доступом, удалённый доступ к установленным приложениям.", + "A time-series database with dashboards and query tools.": "База данных временных рядов с панелями мониторинга и инструментами выполнения запросов.", + "A tmpfs mount is not part of the journal; recovery blocked": "Монтирование tmpfs не зарегистрировано в журнале; восстановление заблокировано", + "A tmpfs mount overlaps another mount": "Монтирование tmpfs перекрывает другое монтирование", + "A tunneling daemon by Cloudflare that safely exposes your web servers into the internet.": "Служба туннелирования от Cloudflare, которая безопасно предоставляет доступ к вашим веб-серверам из интернета.", + "A unified email and collaboration server.": "Единый сервер электронной почты и совместной работы.", + "A unified platform for logs, metrics and traces.": "Единая платформа для журналов, метрик и трассировок.", + "A validating, recursive DNS resolver for your private network.": "Рекурсивный DNS-резолвер с проверкой подлинности ответов для вашей частной сети.", + "A versatile file conversion tool that supports multiple formats.": "Универсальный инструмент преобразования файлов с поддержкой множества форматов.", + "A visual tool for exploring and documenting database schemas.": "Визуальный инструмент для изучения и документирования схем баз данных.", + "A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols": "Клиент Project V с графическим веб-интерфейсом и поддержкой протоколов VMess, VLESS, SS, SSR, Trojan, Tuic и Juicity", + "A web app to listen Youtube audio source.": "Веб-приложение для прослушивания аудио с Youtube.", + "A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes": "Веб-приложение для управления учётными записями с двухфакторной аутентификацией (2FA) и генерации кодов безопасности для них", + "A web frontend for the motion daemon.": "Веб-интерфейс для службы motion.", + "A web interface for browsing and managing files across storage backends.": "Веб-интерфейс для просмотра файлов и управления ими в различных системах хранения.", + "A web interface for yt-dlp downloads.": "Веб-интерфейс для скачивания с помощью yt-dlp.", + "A web-based SSH, SFTP and terminal management platform.": "Веб-платформа для управления SSH, SFTP и терминалами.", + "A web-based file sharing and management protocol": "Протокол обмена файлами и управления ими через веб", + "A well-designed cross-platform ChatGPT UI.": "Продуманный кроссплатформенный пользовательский интерфейс для ChatGPT.", + "ACL Status:": "Состояние ACL:", + "ACL permissions applied for local access for user:": "Права ACL для локального доступа применены для пользователя:", + "ADVANCED SETTINGS COMPLETE": "РАСШИРЕННАЯ НАСТРОЙКА ЗАВЕРШЕНА", + "AI / Coding & Dev-Tools": "ИИ / Программирование и инструменты разработки", + "ALL DATA ON": "ВСЕ ДАННЫЕ НА", + "ALL DATA ON THIS DISK WILL BE PERMANENTLY LOST!": "ВСЕ ДАННЫЕ НА ЭТОМ ДИСКЕ БУДУТ БЕЗВОЗВРАТНО УТРАЧЕНЫ!", + "ALL Utilities": "Все утилиты", + "ALLOWED_HOSTS cannot contain line breaks": "ALLOWED_HOSTS не может содержать переводы строк", + "AList initial login": "Первый вход в AList", + "AMD (ROCm)": "AMD (ROCm)", + "AMD (VA-API and ROCm detection)": "AMD (обнаружение VA-API и ROCm)", + "AMD CPU detected": "Обнаружен процессор AMD", + "AMD CPU detected, but these fixes only apply to AMD EPYC and Ryzen. Nothing was changed.": "Обнаружен процессор AMD, но эти исправления применимы только к AMD EPYC и Ryzen. Ничего не изменено.", + "AMD CPU fixes applied successfully": "Исправления для процессора AMD успешно применены", + "AMD GPU Tools installation completed!": "Установка AMD GPU Tools завершена!", + "AMD GPU passthrough configured.": "Проброс графического процессора AMD настроен.", + "AMD GPU(s) detected:": "Обнаружены графические процессоры AMD:", + "AMD KFD device": "Устройство AMD KFD", + "AMD VA-API + OpenCL (official mod)": "AMD VA-API + OpenCL (официальный мод)", + "AMD compute device": "Вычислительное устройство AMD", + "AMD fixes have been successfully reverted": "Исправления для AMD успешно отменены", + "AMD mesa drivers installed.": "Драйверы Mesa для AMD установлены.", + "AMD softdep configured": "Мягкая зависимость (softdep) для AMD настроена", + "AMD softdep configured in /etc/modprobe.d/vfio.conf": "Мягкая зависимость (softdep) для AMD настроена в /etc/modprobe.d/vfio.conf", + "ANALYSIS SUMMARY": "СВОДКА АНАЛИЗА", + "API returned an invalid timezone": "API вернул некорректный часовой пояс", + "API tokens (Home Assistant, scripts) will keep working.": "Токены API (Home Assistant, скрипты) продолжат работать.", + "APP_KEY: 32-byte Base64 key (generate with openssl rand -base64 32)": "APP_KEY: 32-байтовый ключ в формате Base64 (создайте с помощью openssl rand -base64 32)", + "APP_KEY: use the upstream command openssl rand -base64 32 and prefix its output with base64:": "APP_KEY: используйте команду разработчиков openssl rand -base64 32 и добавьте к её выводу префикс base64:", + "APT IPv4 configuration completed": "Настройка IPv4 для APT завершена", + "APT IPv4 configuration removed": "Настройка IPv4 для APT удалена", + "APT and repositories": "APT и репозитории", + "APT configured to skip additional languages": "APT настроен на пропуск дополнительных языков", + "APT configured to skip downloading additional languages": "APT настроен на пропуск загрузки дополнительных языков", + "APT configured to use IPv4": "APT настроен на использование IPv4", + "APT hook syntax issue, removing...": "Ошибка синтаксиса хука APT, выполняется удаление...", + "APT index update failed after switching to no-subscription. See log:": "Не удалось обновить индексы APT после перехода на no-subscription. См. журнал:", + "APT index update failed. See log:": "Не удалось обновить индексы APT. См. журнал:", + "APT indexes updated for Trixie": "Индексы APT для Trixie обновлены", + "APT indexes updated for Trixie (no-subscription)": "Индексы APT для Trixie (no-subscription) обновлены", + "APT language configuration already set": "Языковые настройки APT уже заданы", + "APT language configuration updated": "Языковые настройки APT обновлены", + "APT language downloads restored": "Загрузка языковых файлов APT восстановлена", + "APT package lists updated": "Списки пакетов APT обновлены", + "APT refresh failed. Check the PBS subscription and repositories in Administration > Repositories. Log:": "Не удалось обновить APT. Проверьте подписку PBS и репозитории в разделе «Администрирование > Репозитории». Журнал:", + "APT refresh failed. Check the PBS subscription and repositories in the native PBS interface; no source was changed.": "Не удалось обновить APT. Проверьте подписку PBS и репозитории в штатном интерфейсе PBS; ни один источник пакетов не был изменён.", + "APT update failed. Check repository access; NVIDIA installation stopped.": "Не удалось обновить APT. Проверьте доступ к репозиториям; установка NVIDIA остановлена.", + "Aborted": "Прервано", + "About to restore": "Предстоит восстановление", + "Absolute directory path to use as backup target:": "Абсолютный путь к каталогу для сохранения резервной копии:", + "Absolute path of the client SSH private key:": "Абсолютный путь к закрытому ключу SSH клиента:", + "Absolute path to a file or directory you want backed up:": "Абсолютный путь к файлу или каталогу, для которого нужно создать резервную копию:", + "Acceleration": "Ускорение", + "Acceleration configuration cancelled": "Настройка ускорения отменена", + "Acceleration for CodeProject.AI": "Ускорение для CodeProject.AI", + "Acceleration for Faster Whisper": "Ускорение для Faster Whisper", + "Acceleration for Immich smart recognition": "Ускорение интеллектуального распознавания Immich", + "Acceleration for Ollama": "Ускорение для Ollama", + "Acceleration for Piper": "Ускорение для Piper", + "Acceleration for llama.cpp": "Ускорение для llama.cpp", + "Accept routes from other nodes?": "Принимать маршруты от других узлов?", + "Accept this host monitoring profile?": "Принять этот профиль мониторинга хоста?", + "Access Movistar and O2 Cloud from WebDAV clients and backup tools.": "Доступ к Movistar и O2 Cloud через клиенты WebDAV и инструменты резервного копирования.", + "Access Scope:": "Область доступа:", + "Access bridge": "Мост доступа", + "Access bridge for Immich": "Мост доступа для Immich", + "Access bridge for Nextcloud": "Мост доступа для Nextcloud", + "Access bridge for Paperless": "Мост доступа для Paperless", + "Access bridge for Tandoor": "Мост доступа для Tandoor", + "Access could not be granted completely; the application may be unable to write to:": "Не удалось предоставить доступ в полном объёме; приложение может не иметь возможности записи в:", + "Access denied by {registry}. Check the image name and sign in from Registry accounts.": "{registry}: доступ запрещён. Проверьте имя образа и выполните вход в разделе «Учётные записи реестров».", + "Access granted to the application on:": "Приложению предоставлен доступ к:", + "Access password of the web interface (optional)": "Пароль для доступа к веб-интерфейсу (необязательно)", + "Access profile:": "Профиль доступа:", + "Access token of the Jupyter Lab web interface": "Токен доступа к веб-интерфейсу Jupyter Lab", + "Access token of the connector, from the Twingate admin console": "Токен доступа коннектора из консоли администрирования Twingate", + "Account is not locked": "Учётная запись не заблокирована", + "Account token from the settings of https://app.foldingathome.org": "Токен учётной записи из настроек https://app.foldingathome.org", + "AceStream HTTP Proxy has no web interface: a media player opens its streams.": "У AceStream HTTP Proxy нет веб-интерфейса: его потоки открываются в медиаплеере.", + "AceStream engine with its HTTP API for media players.": "Движок AceStream с HTTP API для медиаплееров.", + "Action cancelled due to previous xshok-proxmox modifications.": "Действие отменено из-за ранее внесённых изменений xshok-proxmox.", + "Action:": "Действие:", + "Activate Monitor": "Активировать монитор", + "Activate ProxMenux Monitor": "Активировать ProxMenux Monitor", + "Active": "Активно", + "Active Connections": "Активные подключения", + "Active ZRAM algorithm, capacity or swap sources did not match the profile": "Текущий алгоритм ZRAM, объём или источники подкачки не соответствовали профилю", + "Active exports:": "Активные экспорты:", + "Active session:": "Активный сеанс:", + "Activepieces": "Activepieces", + "Actual device path on the host": "Фактический путь к устройству на хосте", + "Adaptation file too large": "Файл адаптации слишком большой", + "Adaptation file with unexpected permissions or owner": "У файла адаптации неожиданные права доступа или владелец", + "Adblock & DNS": "Блокировка рекламы и DNS", + "Add Audio Passthrough": "Добавить проброс аудиоустройства", + "Add CIFS storage:": "Добавить хранилище CIFS:", + "Add Controller or NVMe (PCI passthrough)": "Добавить контроллер или NVMe (проброс PCI)", + "Add Controller or NVMe PCIe to VM": "Добавить контроллер или NVMe PCIe в ВМ", + "Add Coral TPU to LXC": "Добавить Coral TPU в LXC", + "Add GPU to LXC": "Добавить GPU в LXC", + "Add GPU to LXC (Intel | AMD | NVIDIA)": "Добавить GPU в LXC (Intel | AMD | NVIDIA)", + "Add GPU to VM (Intel | AMD | NVIDIA)": "Добавить GPU в ВМ (Intel | AMD | NVIDIA)", + "Add Local Disk as Proxmox Storage": "Добавить локальный диск как хранилище Proxmox", + "Add Local Disk (Proxmox storage + host mount)": "Добавить локальный диск (хранилище Proxmox + монтирование на хосте)", + "Add Local Disk as Host Mount (for LXC bind-mounts)": "Добавить локальный диск как точку монтирования на хосте (для bind-монтирований LXC)", + "Add Local Disk as Proxmox Storage": "Добавить локальный диск как хранилище Proxmox", + "Add NFS Share as Proxmox Storage": "Добавить общий ресурс NFS как хранилище Proxmox", + "Add NFS share as Proxmox Storage": "Добавить общий ресурс NFS как хранилище Proxmox", + "Add NFS storage:": "Добавить хранилище NFS:", + "Add PBS": "Добавить PBS", + "Add Samba Share as Proxmox Storage": "Добавить общий ресурс Samba как хранилище Proxmox", + "Add Samba share as Proxmox Storage": "Добавить общий ресурс Samba как хранилище Proxmox", + "Add a Coral PCIe/M.2 device?": "Добавить устройство Coral PCIe/M.2?", + "Add a custom data path?": "Добавить собственный путь для данных?", + "Add a directory to share": "Добавить каталог для общего доступа", + "Add an extra custom path": "Добавить дополнительный пользовательский путь", + "Add another GPU or USB device manually?": "Добавить ещё один GPU или USB-устройство вручную?", + "Add another directory to share?": "Добавить ещё один каталог для общего доступа?", + "Add another extra path to this stack": "Добавить ещё один дополнительный путь в этот стек", + "Add as IDE": "Добавить как IDE", + "Add as SATA": "Добавить как SATA", + "Add as SCSI": "Добавить как SCSI", + "Add as VirtIO": "Добавить как VirtIO", + "Add as disk (standard)": "Добавить как диск (стандартный вариант)", + "Add bind mount to container:": "Добавить bind-монтирование в контейнер:", + "Add color prompts and useful aliases to the terminal environment": "Добавить цветные приглашения командной строки и полезные псевдонимы команд в среду терминала", + "Add custom path": "Добавить пользовательский путь", + "Add disk to LXC container": "Добавить диск в контейнер LXC", + "Add explicit privileged flag (optional but recommended):": "Явно добавить флаг привилегированного режима (необязательно, но рекомендуется):", + "Add export rule:": "Добавить правило экспорта:", + "Add extra paths to this stack": "Добавить дополнительные пути в этот стек", + "Add iSCSI Target as Proxmox Storage": "Добавить цель iSCSI в качестве хранилища Proxmox", + "Add iSCSI storage in Proxmox Storage": "Добавить хранилище iSCSI в хранилища Proxmox", + "Add iSCSI storage in Proxmox:": "Добавить хранилище iSCSI в Proxmox:", + "Add import disk": "Добавить диск для импорта", + "Add latest Ceph support": "Добавить поддержку последней версии Ceph", + "Add new PVE 9 enterprise repository (deb822 format) (Only if using enterprise):": "Добавить новый репозиторий Enterprise для PVE 9 (формат deb822) (только если используется Enterprise):", + "Add or change a device": "Добавить или изменить устройство", + "Add or remove extra paths and devices": "Добавить или удалить дополнительные пути и устройства", + "Add physical disk to VM via": "Добавить физический диск в виртуальную машину через", + "Add share block in /etc/samba/smb.conf:": "Добавить блок общего ресурса в /etc/samba/smb.conf:", + "Add the host firewall rule of this container; one option for each confirmed rule": "Добавить на хосте правило межсетевого экрана для этого контейнера; по одному варианту для каждого подтверждённого правила", + "Add unprivileged flag to container configuration:": "Добавить в конфигурацию контейнера флаг непривилегированного режима:", + "Add virtual disk": "Добавить виртуальный диск", + "Add: Mount Host Directory into LXC": "Добавить: монтирование каталога хоста в LXC", + "Added to /etc/fstab": "Добавлено в /etc/fstab", + "Added to /etc/fstab for permanent mounting.": "Добавлено в /etc/fstab для постоянного монтирования.", + "Added to /etc/fstab using UUID": "Добавлено в /etc/fstab с использованием UUID", + "Added to /etc/fstab using device path": "Добавлено в /etc/fstab с использованием пути к устройству", + "Added to /etc/fstab.": "Добавлено в /etc/fstab.", + "Added user": "Добавлен пользователь", + "Adding": "Добавление", + "Adding CIFS storage to Proxmox...": "Добавление хранилища CIFS в Proxmox...", + "Adding QEMU Guest Agent support...": "Добавление поддержки гостевого агента QEMU...", + "Adding Radarr to Prowlarr...": "Добавление Radarr в Prowlarr...", + "Adding Sonarr to Prowlarr...": "Добавление Sonarr в Prowlarr...", + "Adding disk using the generated command to the selected VM": "Добавление диска к выбранной ВМ с помощью сгенерированной команды", + "Adding existing users to sharedfiles group...": "Добавление существующих пользователей в группу sharedfiles...", + "Adding iSCSI storage to Proxmox...": "Добавление хранилища iSCSI в Proxmox...", + "Adding new share to smb.conf...": "Добавление нового общего ресурса в smb.conf...", + "Adding peers later means raising PEERS in /etc/pve/lxc/.conf and restarting the container. The existing peer keys are kept.": "Чтобы добавить узлы позже, нужно увеличить значение PEERS в /etc/pve/lxc/.conf и перезапустить контейнер. Ключи существующих узлов сохраняются.", + "Adding the mount points...": "Добавление точек монтирования...", + "Adding this NVMe as a PCIe device (via 'Add Controller or NVMe PCIe to VM') gives better performance.": "Добавление этого NVMe в качестве устройства PCIe (через пункт «Добавить контроллер или NVMe PCIe в ВМ») обеспечивает более высокую производительность.", + "Adding to /etc/fstab for permanent mounting...": "Добавление в /etc/fstab для постоянного монтирования...", + "Additional URL advertised by Plex (optional)": "Дополнительный URL, объявляемый Plex (необязательно)", + "Additional audio function(s) to be added": "Дополнительные аудиофункции для добавления", + "Additional media/GPU GIDs, comma-separated": "Дополнительные идентификаторы групп (GID) для мультимедиа/GPU, через запятую", + "Additional paths for": "Дополнительные пути для", + "Address BookStack will be opened at (for example http://192.168.1.50)": "Адрес, по которому будет открываться BookStack (например, http://192.168.1.50)", + "Address Healthchecks will be opened at (for example http://192.168.1.50:8000)": "Адрес, по которому будет открываться Healthchecks (например, http://192.168.1.50:8000)", + "Address Pocket ID will be opened at; passkeys need HTTPS (for example https://id.example.com)": "Адрес, по которому будет открываться Pocket ID; для ключей доступа требуется HTTPS (например, https://id.example.com)", + "Address Speedtest Tracker will be opened at (for example http://192.168.1.50)": "Адрес, по которому будет открываться Speedtest Tracker (например, http://192.168.1.50)", + "Address of Redis or Valkey (for example redis://192.168.1.20:6379/1)": "Адрес Redis или Valkey (например, redis://192.168.1.20:6379/1)", + "Address of the Compose file": "Адрес файла Compose", + "Address of the MariaDB server": "Адрес сервера MariaDB", + "Address of the NetBird management server": "Адрес сервера управления NetBird", + "Address of the PostgreSQL server": "Адрес сервера PostgreSQL", + "Address of the Redis or Valkey server": "Адрес сервера Redis или Valkey", + "Address of the database server (mysql and pgsql only)": "Адрес сервера базы данных (только для mysql и pgsql)", + "Address of the noVNC session in the links of the notifications (for example 192.168.1.50)": "Адрес сеанса noVNC в ссылках уведомлений (например, 192.168.1.50)", + "Address of the oci-compose file": "Адрес файла oci-compose", + "Address to reach Pydio Cells (https://domain or https://IP:8080)": "Адрес для доступа к Pydio Cells (https://domain или https://IP:8080)", + "Address used to reach wallabag (http://IP or https://wallabag.example.com)": "Адрес для доступа к wallabag (http://IP или https://wallabag.example.com)", + "Addresses to update: ipv4, ipv6 or both (uses an external service)": "Адреса для обновления: ipv4, ipv6 или оба (используется внешний сервис)", + "Adguardhome Sync web interface": "Веб-интерфейс Adguardhome Sync", + "Adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.": "Adguardhome-sync — инструмент для синхронизации конфигурации AdGuardHome с экземплярами-репликами.", + "Adjust network/CIDR to your environment.": "Укажите сеть/CIDR в соответствии с вашей средой.", + "Adjust options if needed (vers=4,hard,timeo,...).": "При необходимости измените параметры (vers=4,hard,timeo,...).", + "Adjusting systemd-journald limits to match Log2RAM size...": "Настройка ограничений systemd-journald под размер Log2RAM...", + "Adjusts journald log level if needed (Proxmox defaults may block auth logs)": "При необходимости настраивает уровень журналирования journald (настройки Proxmox по умолчанию могут блокировать запись событий аутентификации)", + "Admin UI": "Интерфейс администратора", + "Admin page": "Страница администратора", + "Administer and query PostgreSQL databases from a web interface.": "Управляйте базами данных PostgreSQL и выполняйте запросы к ним через веб-интерфейс.", + "Administrator email": "Электронная почта администратора", + "Administrator password, at least 12 characters (empty = generated)": "Пароль администратора, не менее 12 символов (если оставить пустым, будет сгенерирован)", + "Advanced": "Дополнительно", + "Advanced Diagnostics": "Расширенная диагностика", + "Advanced Network Diagnostics": "Расширенная диагностика сети", + "Advanced settings": "Расширенные настройки", + "Advanced: every setting of the container": "Расширенный режим: все настройки контейнера", + "Affected LXC containers": "Затронутые контейнеры LXC", + "After completing GPU setup, start the VM manually when the host is ready.": "После завершения настройки GPU запустите виртуальную машину вручную, когда хост будет готов.", + "After confirming, you will be asked to choose the NVIDIA driver version to install.": "После подтверждения вам будет предложено выбрать версию драйвера NVIDIA для установки.", + "After detailed analysis, no changes are needed.": "Подробный анализ показал, что изменения не требуются.", + "After detailed analysis, no cleanup is needed.": "По результатам подробного анализа очистка не требуется.", + "After logging in, run: ip a to obtain the IP address.\nThen, enter that IP address in your web browser like this:\n http://IP_ADDRESS\n\nThis will open the Umbral OS dashboard.": "После входа выполните команду ip a, чтобы узнать IP-адрес.\nЗатем введите этот IP-адрес в веб-браузере следующим образом:\n http://IP_ADDRESS\n\nОткроется панель управления Umbral OS.", + "After pasting on the server, ensure the file is chmod 600 and owned by": "После вставки на сервере убедитесь, что для файла установлены права chmod 600 и его владельцем является", + "After reboot the system will be fully accessible (SSH, web UI, login), but the following components will be reinstalled in BACKGROUND — until they finish, commands like nvidia-smi may not yet be available:": "После перезагрузки система будет полностью доступна (SSH, веб-интерфейс, вход в систему), но следующие компоненты будут переустановлены В ФОНОВОМ РЕЖИМЕ — до завершения переустановки такие команды, как nvidia-smi, могут быть ещё недоступны:", + "After reboot, these components will reinstall in background:": "После перезагрузки следующие компоненты будут переустановлены в фоновом режиме:", + "After reboot, verify PVE version:": "После перезагрузки проверьте версию PVE:", + "After switching mode, reboot the host if requested.": "После переключения режима перезагрузите хост, если появится соответствующий запрос.", + "After that, run this script again to add it.": "После этого снова запустите этот скрипт для добавления.", + "After the reboot you can follow the post-restore work live from ProxMenux Monitor → Backups tab (estimated time, per-component status, log tail, rollback delta).": "После перезагрузки вы сможете в реальном времени следить за работами после восстановления на вкладке ProxMenux Monitor → Backups (расчётное время, состояние каждого компонента, последние записи журнала, изменения для отката).", + "After the reboot, you will only be able to access the Proxmox host via:": "После перезагрузки доступ к хосту Proxmox будет возможен только через:", + "After this LXC → VM switch, reboot the host so the new binding state is applied cleanly.": "После этого переключения LXC → VM перезагрузите хост, чтобы новое состояние привязок применилось корректно.", + "Agentless monitoring and observability platform.": "Платформа мониторинга и наблюдаемости без установки агентов.", + "AirDC++ administrator": "Администратор AirDC++", + "Airsonic Advanced web interface": "Веб-интерфейс Airsonic Advanced", + "Airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.": "Airsonic-advanced — бесплатный веб-сервис потоковой передачи мультимедиа, обеспечивающий доступ к вашей музыке откуда угодно. Используйте его, чтобы делиться музыкой с друзьями или слушать свою музыку на работе. Можно передавать музыку одновременно на несколько проигрывателей, например на один на кухне и на другой в гостиной.", + "Aliases added to .bashrc": "Псевдонимы команд добавлены в .bashrc", + "Alist Sync web interface": "Веб-интерфейс Alist Sync", + "All": "Все", + "All %s update(s) completed successfully.": "Все обновления (%s) успешно завершены.", + "All Available Scripts": "Все доступные скрипты", + "All GPUs Already Assigned": "Все графические процессоры уже назначены", + "All ProxMenux optimizations are up to date.": "Все оптимизации ProxMenux актуальны.", + "All applications": "Все приложения", + "All block devices:": "Все блочные устройства:", + "All changes applied. No reboot required.": "Все изменения применены. Перезагрузка не требуется.", + "All changes are reversible using the ProxMenux uninstaller.": "Все изменения можно отменить с помощью программы удаления ProxMenux.", + "All dependencies installed and verified.": "Все зависимости установлены и проверены.", + "All detected GPUs are already assigned to this VM.": "Все обнаруженные GPU уже назначены этой ВМ.", + "All detected controllers/NVMe are already present in the selected VM.": "Все обнаруженные контроллеры/NVMe уже присутствуют в выбранной ВМ.", + "All disks may already be in use or mounted.": "Возможно, все диски уже используются или смонтированы.", + "All guests on the cluster": "Все гостевые системы в кластере", + "All images are downloaded and verified first, and native backups are taken with the stack stopped. Contracts are published after the whole set is checked. If a step fails, recovery is attempted where needed; recovery can also fail.": "Сначала все образы загружаются и проверяются, а встроенные резервные копии создаются при остановленном стеке. Контракты публикуются после проверки всего набора. Если какой-либо шаг завершится с ошибкой, при необходимости будет предпринята попытка восстановления; восстановление тоже может не удаться.", + "All images are downloaded and verified first, and native backups are taken with the stack stopped. Contracts are published after the whole set is checked. If anything fails, all members are recovered.": "Сначала все образы загружаются и проверяются, а встроенные резервные копии создаются при остановленном стеке. Контракты публикуются после проверки всего набора. Если что-либо завершится с ошибкой, восстанавливаются все участники.", + "All images imported and configured successfully": "Все образы успешно импортированы и настроены", + "All imports failed": "Все операции импорта завершились ошибкой", + "All of them are removed.": "Все они удаляются.", + "All of them are targeted for removal.": "Все они подлежат удалению.", + "All partitions and metadata removed.": "Все разделы и метаданные удалены.", + "All physical interfaces from backup are present on target": "Все физические интерфейсы из резервной копии присутствуют на целевом узле", + "All stack members are updated together. Main CT:": "Все участники стека обновляются вместе. Основной CT:", + "All types (images, backup, iso, vztmpl, snippets)": "Все типы (images, backup, iso, vztmpl, snippets)", + "All user-installed packages from the backup are present on this host": "Все установленные пользователем пакеты из резервной копии присутствуют на этом узле", + "All users with UID and GID": "Все пользователи с UID и GID", + "All {count} containers of the application are updated together (main CT: {vmid}). If there are new versions, all images are downloaded and verified, the application is stopped, each container is backed up and replaced with its new image. If the operation fails after a container was changed, the backups are restored. An operation that stops halfway is recovered from the OCI management menu.": "Все контейнеры приложения ({count}) обновляются вместе (основной CT: {vmid}). Если доступны новые версии, все образы скачиваются и проверяются, приложение останавливается, для каждого контейнера создаётся резервная копия, после чего он заменяется новым образом. Если операция завершается ошибкой после изменения какого-либо контейнера, выполняется восстановление из резервных копий. Восстановление после операции, прерванной на полпути, выполняется через меню управления OCI.", + "All {count} containers of the application will be recreated from their saved image digests (main CT: {vmid}). The stack is stopped, every container is backed up and replaced, then checked. If the operation fails after a container was changed, the backups are restored. An operation that stops halfway is recovered from the OCI management menu.": "Все контейнеры приложения ({count}) будут пересозданы с использованием сохранённых дайджестов их образов (основной CT: {vmid}). Стек останавливается, для каждого контейнера создаётся резервная копия, затем каждый контейнер заменяется и проверяется. Если операция завершается ошибкой после изменения какого-либо контейнера, выполняется восстановление из резервных копий. Восстановление после операции, прерванной на полпути, выполняется через меню управления OCI.", + "Allocate CPU Cores": "Выделить ядра ЦП", + "Allocate RAM in MiB": "Выделить оперативную память в MiB", + "Allocated Cores:": "Выделенные ядра:", + "Allocated RAM:": "Выделенная оперативная память:", + "Allocating virtual disk for %s...": "Выделение виртуального диска для %s...", + "Allow TCP port {port} from {subnet} through the host firewall? Existing firewall rules are not changed.": "Разрешить доступ к TCP-порту {port} из подсети {subnet} через межсетевой экран узла? Существующие правила межсетевого экрана не изменяются.", + "Allowed host header for direct access to this Homepage instance": "Разрешённый заголовок Host для прямого доступа к этому экземпляру Homepage", + "Allowed hostnames for a hostname or reverse proxy (optional)": "Разрешённые имена хостов для имени хоста или обратного прокси (необязательно)", + "Allowed hosts (comma separated; * allows access through the assigned IP)": "Разрешённые хосты (через запятую; * разрешает доступ через назначенный IP-адрес)", + "Allowed source subnet:": "Разрешённая подсеть источника:", + "Allowed web port:": "Разрешённый веб-порт:", + "Already Mounted": "Уже смонтировано", + "Already configured": "Уже настроено", + "Already installed — skipping": "Уже установлено — пропускается", + "Also add the /dev/srX optical device (recommended)": "Также добавить оптическое устройство /dev/srX (рекомендуется)", + "Also comment any remaining 'bookworm' entries in *.list if present.": "Также закомментируйте все оставшиеся записи 'bookworm' в *.list, если они есть.", + "Also install the VirtIO network driver during setup to enable network access.": "Также установите сетевой драйвер VirtIO во время установки, чтобы обеспечить доступ к сети.", + "Although VFIO can bind to this device, full passthrough to a VM is": "Хотя VFIO может привязаться к этому устройству, полный проброс в ВМ", + "Altus is an Electron-based WhatsApp client with themes and multiple account support.": "Altus — клиент WhatsApp на базе Electron с поддержкой тем оформления и нескольких учётных записей.", + "Ambiguous local public URL; use an explicit URL": "Неоднозначный локальный публичный URL; укажите URL явно", + "Ambiguous mount points in the container": "Неоднозначные точки монтирования в контейнере", + "Ambiguous or invalid environment variable": "Неоднозначная или недопустимая переменная окружения", + "Amount of RAM in MiB (default: 4096)": "Объём оперативной памяти в MiB (по умолчанию: 4096)", + "An AI model used to generate images conditioned on text descriptions.": "Модель ИИ для генерации изображений по текстовым описаниям.", + "An AMD dedicated GPU has been detected without FLR support": "Обнаружен дискретный графический процессор AMD без поддержки FLR", + "An AMD integrated GPU (APU) has been detected": "Обнаружен встроенный графический процессор AMD (APU)", + "An Alist storage synchronization tool based on the Web interface.": "Инструмент синхронизации хранилища Alist с веб-интерфейсом.", + "An Industrial-Level Controllable and Efficient Zero-Shot Text-To-Speech System": "Управляемая и эффективная система синтеза речи по тексту промышленного уровня, работающая без предварительного обучения на целевом голосе", + "An Intel dedicated GPU has been detected without FLR support": "Обнаружен дискретный графический процессор Intel без поддержки FLR", + "An accelerated video generation framework that speeds up end-to-end diffusion while preserving video quality": "Платформа ускоренной генерации видео, которая ускоряет весь процесс диффузии, сохраняя качество видео", + "An application changed since the update check. Check for updates again.": "Приложение изменилось с момента проверки обновлений. Проверьте наличие обновлений ещё раз.", + "An automatic HTTPS web server and reverse proxy.": "Веб-сервер с автоматической настройкой HTTPS и обратный прокси.", + "An executable required by the adapter is missing in the new image": "В новом образе отсутствует исполняемый файл, необходимый адаптеру", + "An fstab entry already exists for:": "Запись в fstab уже существует для:", + "An image probe container was started externally": "Контейнер для проверки образа был запущен извне", + "An include is not part of the journal; recovery blocked": "Подключаемый файл не включён в журнал; восстановление заблокировано", + "An include was modified outside the journal; recovery blocked": "Подключаемый файл был изменён вне журнала; восстановление заблокировано", + "An open source generative AI development platform for building AI Agents and LLM workflows": "Платформа разработки генеративного ИИ с открытым исходным кодом для создания ИИ-агентов и рабочих процессов на основе LLM", + "An open-source API development platform.": "Платформа разработки API с открытым исходным кодом.", + "An operation of this installation has not finished; recover it from the management menu before removing it": "Операция с этой установкой не завершена; перед удалением установки выполните восстановление через меню управления", + "An update does not accept configuration changes": "При обновлении изменения конфигурации не допускаются", + "Analysis Tools": "Инструменты анализа", + "Analysis software that shows your internet speed for up to 30 days.": "Программа для анализа, отображающая скорость интернет-соединения за период до 30 дней.", + "Analyze Bridge Configuration": "Анализ конфигурации сетевого моста", + "Analyze Network Configuration": "Анализ конфигурации сети", + "Analyzing Bridge Configuration - READ ONLY MODE": "Анализ конфигурации сетевого моста — РЕЖИМ ТОЛЬКО ДЛЯ ЧТЕНИЯ", + "Analyzing Network Configuration - READ ONLY MODE": "Анализ конфигурации сети — РЕЖИМ ТОЛЬКО ДЛЯ ЧТЕНИЯ", + "Analyzing selected disks...": "Анализ выбранных дисков...", + "Analyzing system for available PCIe storage devices...": "Поиск доступных устройств хранения PCIe в системе...", + "Another OCI operation is using the instance registry": "Другая операция OCI использует реестр экземпляров", + "Another OCI operation is using the instance registry.": "Другая операция OCI использует реестр экземпляров.", + "Another OCI operation is using the instance registry. Wait for it to finish and open this menu again; no container is modified.": "Другая операция OCI использует реестр экземпляров. Дождитесь её завершения и снова откройте это меню; ни один контейнер не изменяется.", + "Another OCI operation is using the instance registry. Wait for it to finish.": "Другая операция OCI использует реестр экземпляров. Дождитесь её завершения.", + "Another OCI operation is using the registry. This operation was not started.": "Другая операция OCI использует реестр. Эта операция не была запущена.", + "Another ProxMenux OCI operation is running. Try again when it finishes.": "Выполняется другая операция OCI в ProxMenux. Повторите попытку после её завершения.", + "Another ZRAM configuration exists or could not be inspected; systemd-zram-generator was retained": "Существует другая конфигурация ZRAM или её не удалось проверить; systemd-zram-generator сохранён", + "Another ZRAM generator configuration exists; refusing to overwrite it:": "Существует другая конфигурация генератора ZRAM; её перезапись отклонена:", + "Another ZRAM swap setup exists; refusing to replace it:": "Существует другая конфигурация подкачки ZRAM; её замена отклонена:", + "Another device of the network already answers on this address:": "По этому адресу уже отвечает другое устройство в сети:", + "Another instance uses": "Другой экземпляр использует", + "Another job that writes to the same storage still starts them.": "Другое задание, записывающее данные в то же хранилище, по-прежнему запускает их.", + "Another node, typed by hand": "Другой узел, указанный вручную", + "Another registry account operation is running. Try again when it finishes.": "Выполняется другая операция с учётной записью реестра. Повторите попытку после её завершения.", + "Another stack operation is pending": "Ожидается выполнение другой операции со стеком", + "Apache CouchDB": "Apache CouchDB", + "Application": "Приложение", + "Application Specific": "Специфичный для приложения", + "Application data": "Данные приложения", + "Application registered on this host:": "Приложение зарегистрировано на этом хосте:", + "Application responding:": "Приложение отвечает:", + "Application responding; checking its stability...": "Приложение отвечает; проверяется стабильность его работы...", + "Application suite: one independent LXC per selected application": "Набор приложений: отдельный LXC для каждого выбранного приложения", + "Application:": "Приложение:", + "Applications you can choose:": "Приложения на выбор:", + "Apply": "Применить", + "Apply AMD CPU fixes": "Применить исправления для процессоров AMD", + "Apply Available Updates": "Применить доступные обновления", + "Apply PBS package upgrade": "Применить обновление пакетов PBS", + "Apply and restart services:": "Применить и перезапустить службы:", + "Apply available updates": "Применить доступные обновления", + "Apply boot/initramfs changes": "Применить изменения загрузки/initramfs", + "Apply configuration": "Применить конфигурацию", + "Apply fix now?": "Применить исправление сейчас?", + "Apply fix now? (The share will be briefly remounted)": "Применить исправление сейчас? (Сетевой ресурс будет кратковременно перемонтирован)", + "Apply network optimizations": "Применить оптимизации сети", + "Apply optional security relaxation apparmor:rootlesskit": "Применить необязательное ослабление защиты apparmor:rootlesskit", + "Apply optional security relaxation apparmor:unconfined": "Применить необязательное ослабление защиты apparmor:unconfined", + "Apply optional security relaxation seccomp:unconfined": "Применить необязательное ослабление защиты seccomp:unconfined", + "Apply options from the current catalog template? New required paths and settings may be requested. Review the resulting configuration before recreating the CT.": "Применить параметры из текущего шаблона каталога? Может потребоваться указать новые обязательные пути и настройки. Проверьте итоговую конфигурацию перед повторным созданием CT.", + "Apply read+write access for 'others' on the host directory?": "Предоставить категории «остальные» права на чтение и запись в каталог на хосте?", + "Apply the options from the current catalog template? Your data and configuration are kept.": "Применить параметры из текущего шаблона каталога? Ваши данные и конфигурация сохраняются.", + "Apply the reviewed package upgrade now? Services may restart and packages listed for removal will be removed.": "Выполнить проверенное обновление пакетов сейчас? Службы могут перезапуститься, а пакеты, отмеченные для удаления, будут удалены.", + "Apply these changes?": "Применить эти изменения?", + "Applying AMD-specific fixes...": "Применение исправлений для AMD...", + "Applying CPU and RAM changes without rebuilding the container...": "Применение изменений CPU и RAM без пересоздания контейнера...", + "Applying Changes": "Применение изменений", + "Applying Controller/NVMe passthrough to VM": "Настройка проброса контроллера/NVMe в VM", + "Applying balanced memory optimization settings...": "Применение сбалансированных настроек оптимизации памяти...", + "Applying changes safely...": "Безопасное применение изменений...", + "Applying container settings without rebuilding the container...": "Применение настроек контейнера без его пересоздания...", + "Applying custom restore": "Выполнение восстановления с пользовательскими настройками", + "Applying default VM configuration": "Применение конфигурации VM по умолчанию", + "Applying host permissions for unprivileged LXC bind-mounts...": "Настройка прав доступа на хосте для bind-монтирований непривилегированных контейнеров LXC...", + "Applying optimized logrotate configuration...": "Применение оптимизированной конфигурации logrotate...", + "Applying passthrough to CT": "Настройка проброса в CT", + "Applying safe paths and preparing pending restore": "Применение безопасных путей и подготовка отложенного восстановления", + "Applying selected LXC switch action": "Применение выбранного действия по переключению LXC", + "Applying the Jellyfin configuration:": "Применение конфигурации Jellyfin:", + "Applying the LAN address to the application URLs...": "Применение адреса локальной сети к URL-адресам приложения...", + "Applying the initial Nextcloud settings...": "Применение начальных настроек Nextcloud...", + "Applying the mount mode...": "Применение режима монтирования...", + "Apprise-api Takes advantage of Apprise through your network with a user-friendly API.": "Apprise-api позволяет использовать возможности Apprise через вашу сеть с помощью удобного API.", + "Architecture": "Архитектура", + "Architecture:": "Архитектура:", + "Architectures": "Архитектуры", + "Archive deleted.": "Архив удалён.", + "Archive extracted.": "Архив распакован.", + "Archive format": "Формат архива", + "Archive ready": "Архив готов", + "Archive size:": "Размер архива:", + "Archive:": "Архив:", + "Ardour is an open source, collaborative effort of a worldwide team including musicians, programmers, and professional recording engineers.": "Ardour — проект с открытым исходным кодом, совместно разрабатываемый международной командой музыкантов, программистов и профессиональных звукорежиссёров.", + "Are you absolutely sure?": "Вы абсолютно уверены?", + "Are you sure you want to continue?": "Вы уверены, что хотите продолжить?", + "Are you sure you want to delete this export?": "Вы уверены, что хотите удалить этот экспорт?", + "Are you sure you want to delete this share?": "Вы уверены, что хотите удалить этот общий ресурс?", + "Are you sure you want to remove these configurations?": "Вы уверены, что хотите удалить эти конфигурации?", + "Are you sure you want to restore this backup?\nCurrent configuration will be overwritten.": "Вы уверены, что хотите выполнить восстановление из этой резервной копии?\nТекущая конфигурация будет перезаписана.", + "Are you sure you want to uninstall ProxMenux?": "Вы уверены, что хотите удалить ProxMenux?", + "Are you sure you want to uninstall the selected optimizations.": "Вы уверены, что хотите удалить выбранные оптимизации?", + "Are you sure you want to unmount this NFS share?": "Вы уверены, что хотите отключить этот общий ресурс NFS?", + "Are you sure you want to unmount this Samba share?": "Вы уверены, что хотите отключить этот общий ресурс Samba?", + "Are you sure?": "Вы уверены?", + "Arr suite: applications to install": "Набор Arr: приложения для установки", + "Artalk": "Artalk", + "As Proxmox storage": "В качестве хранилища Proxmox", + "As host fstab mount only": "Только монтирование на хосте через fstab", + "Assign GPU PCI function to VM": "Назначить PCI-функцию GPU виртуальной машине", + "Assign controller/NVMe passthrough": "Настроить прямой проброс контроллера/NVMe", + "Assigned to VM": "Назначено виртуальной машине", + "Assigned to VM(s)": "Назначено виртуальным машинам", + "Assigning imported disk to VM using the generated command": "Назначение импортированного диска VM с помощью сгенерированной команды", + "Associated Audio Devices": "Связанные аудиоустройства", + "Associated audio removed from VM": "Связанное аудиоустройство удалено из виртуальной машины", + "At least 5GB free space on root filesystem": "Не менее 5 ГБ свободного места в корневой файловой системе", + "At least one selected GPU is blocked by policy for GPU -> VM mode due to passthrough instability risk.": "Для как минимум одного из выбранных GPU режим GPU -> VM заблокирован политикой из-за риска нестабильной работы при прямом пробросе.", + "Attach imported disk to VM": "Подключить импортированный диск к виртуальной машине", + "Attach to an existing PVE vzdump job (inherit schedule + retention)": "Привязать к существующему заданию vzdump в PVE (унаследовать расписание и политику хранения)", + "Attached to PVE job:": "Привязано к заданию PVE:", + "Attaching the volumes...": "Подключение томов...", + "Attempting automatic repair...": "Попытка автоматического исправления...", + "Attempting passthrough with this GPU typically results in": "Попытка прямого проброса этого GPU обычно приводит к", + "Attention: Removing the subscription banner may cause issues in the web interface after a future update.": "Внимание: удаление баннера подписки может вызвать проблемы в веб-интерфейсе после одного из будущих обновлений.", + "Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.": "Audacity — простой в использовании многодорожечный аудиоредактор с функцией записи звука. Разрабатывается группой добровольцев как программное обеспечение с открытым исходным кодом.", + "Audio device directory": "Каталог аудиоустройств", + "Audio recording and mixing in your browser": "Запись и сведение аудио в браузере", + "Audio/Video": "Аудио/видео", + "Audiobookshelf is a self-hosted audiobook and podcast server.": "Audiobookshelf — сервер аудиокниг и подкастов для самостоятельного размещения.", + "Audit completed. Press Enter to continue...": "Audit завершён. Нажмите Enter, чтобы продолжить...", + "Audit socket disabled or not required": "Сокет Audit отключён или не требуется", + "Auth key is required.": "Требуется ключ аутентификации.", + "Auth:": "Аутентификация:", + "Authelia Web UI": "Веб-интерфейс Authelia", + "Authelia administrator": "Администратор Authelia", + "Authelia session cookie domain for this portal (for example example.com)": "Домен сеансового cookie Authelia для этого портала (например, example.com)", + "Authentication": "Аутентификация", + "Authentication & Security": "Аутентификация и безопасность", + "Authentication Error": "Ошибка аутентификации", + "Authentication failed for {registry}. Check the account and token permissions.": "Не удалось пройти аутентификацию в {registry}. Проверьте права учётной записи и токена.", + "Authentication failed.": "Ошибка аутентификации.", + "Authentication required:": "Требуется аутентификация:", + "Authentication:": "Аутентификация:", + "Authorization failed": "Ошибка авторизации", + "Authorization successful": "Авторизация выполнена успешно", + "Authorize a client SSH public key": "Разрешить доступ по открытому ключу SSH клиента", + "Authorize a dedicated client public key on the server first. The restricted USB/IP account cannot run a shell or forward other sockets. Verify the server host key before connecting; unknown keys are rejected.": "Сначала разрешите на сервере доступ по отдельному открытому ключу клиента. Учётная запись USB/IP с ограниченными правами не может запускать командную оболочку или перенаправлять другие сокеты. Перед подключением проверьте ключ хоста сервера; неизвестные ключи отклоняются.", + "Authorize this key on the server": "Разрешить доступ по этому ключу на сервере", + "Authorize via 'pct exec' (Borg server is an LXC on a PVE host I can SSH into)": "Разрешить доступ через 'pct exec' (сервер Borg — контейнер LXC на хосте PVE, к которому я могу подключиться по SSH)", + "Authorized": "Доступ разрешён", + "Auto-detected firewall backend (nftables/iptables)": "Автоматически определённый механизм межсетевого экрана (nftables/iptables)", + "Auto-discover servers on network": "Автоматически обнаруживать серверы в сети", + "Auto-importing ZFS data pools from backup...": "Автоматический импорт пулов данных ZFS из резервной копии...", + "Auto-negotiate:": "Автосогласование:", + "Auto-start was skipped because GPU passthrough setup was requested.": "Автоматический запуск пропущен, поскольку была запрошена настройка проброса GPU.", + "Auto-sync enabled when /var/log exceeds 80% of": "Автосинхронизация включается, когда /var/log превышает 80% от", + "Auto-sync was not enabled": "Автосинхронизация не была включена", + "Automated Post-Install Script": "Скрипт автоматической настройки после установки", + "Automated post-installation script": "Скрипт автоматической настройки после установки", + "Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.": "Автоматический менеджер видеотеки сериалов. Он отслеживает новые серии ваших любимых сериалов и автоматически обрабатывает их после публикации.", + "Automatic detection": "Автоматическое обнаружение", + "Automatic discovery and live diagrams of your network": "Автоматическое обнаружение устройств и схемы вашей сети, обновляемые в реальном времени", + "Automatic private network allocation requires a /24 subnet": "Для автоматического выделения частной сети требуется подсеть /24", + "Automatic public URLs require static frontend addresses or explicit URLs": "Для автоматического формирования публичных URL требуются статические адреса фронтенда или явно заданные URL", + "Automatic video library manager for TV Shows": "Автоматический менеджер видеотеки сериалов", + "Automatic/Unattended": "Автоматически / без участия пользователя", + "Automation & Scheduling": "Автоматизация и планирование", + "Available": "Доступно", + "Available Borg archives (newest first):": "Доступные архивы Borg (сначала самые новые):", + "Available Borg targets:": "Доступные назначения Borg:", + "Available Disks on Host": "Доступные диски на хосте", + "Available ISO Images": "Доступные ISO-образы", + "Available PBS Version": "Доступная версия PBS", + "Available PBS repositories:": "Доступные репозитории PBS:", + "Available PVE Version": "Доступная версия PVE", + "Available Shares:": "Доступные общие ресурсы:", + "Available action": "Доступное действие", + "Available applications: {count}": "Доступные приложения: {count}", + "Available archives:": "Доступные архивы:", + "Available disks detected.": "Обнаружены доступные диски.", + "Available host backups:": "Доступные резервные копии хоста:", + "Available images in /var/lib/vz/images/:": "Доступные образы в /var/lib/vz/images/:", + "Available network interfaces:": "Доступные сетевые интерфейсы:", + "Available output formats include:": "Доступные форматы вывода:", + "Available physical disks for passthrough:": "Доступные физические диски для проброса:", + "Available shares for guest access:": "Общие ресурсы, доступные для гостевого доступа:", + "Available space in /mnt:": "Доступное место в /mnt:", + "Available storage information:": "Информация о доступных хранилищах:", + "Available storage volumes:": "Доступные тома хранилища:", + "Azahar is an open-source 3DS emulator based on Citra.": "Azahar — эмулятор 3DS с открытым исходным кодом на основе Citra.", + "BIOS TYPE": "ТИП BIOS", + "BIOS Type": "Тип BIOS", + "BIOS from": "BIOS от", + "BIOS: OVMF (UEFI)": "BIOS: OVMF (UEFI)", + "BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications.": "BOINC — это платформа для вычислений с высокой пропускной способностью в большом масштабе (на тысячах или миллионах компьютеров). Её можно использовать для добровольных вычислений (на пользовательских устройствах) или грид-вычислений (с использованием ресурсов организаций). Она поддерживает виртуализированные и параллельные приложения, а также приложения, использующие графические процессоры.", + "BRIDGE": "BRIDGE", + "BRIDGE CONFIGURATION ANALYSIS": "АНАЛИЗ КОНФИГУРАЦИИ СЕТЕВОГО МОСТА", + "BTRFS:": "BTRFS:", + "Baby Buddy web interface": "Веб-интерфейс Baby Buddy", + "Babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.": "Babybuddy — помощник в уходе за малышами! Он помогает тем, кто ухаживает за ребёнком, отслеживать сон, кормления, смену подгузников, время на животике и многое другое, чтобы лучше понимать и предугадывать потребности малыша, меньше полагаясь на догадки.", + "Back": "Назад", + "Back to job list": "Назад к списку заданий", + "Back to previous menu or Esc + Enter": "Назад в предыдущее меню или Esc + Enter", + "Backed up and cleared": "Резервная копия создана, данные очищены", + "Backend": "Серверная часть", + "Backend:": "Серверная часть:", + "Background archive extraction for Arr download queues. No web interface.": "Фоновая распаковка архивов для очередей загрузки Arr. Веб-интерфейс отсутствует.", + "Backrest": "Backrest", + "Backup — VM and CT backups": "Резервное копирование — резервные копии ВМ и контейнеров", + "Backup & Recovery": "Резервное копирование и восстановление", + "Backup Created": "Резервная копия создана", + "Backup ID (group name in PBS):": "Идентификатор резервной копии (имя группы в PBS):", + "Backup ID for this job:": "Идентификатор резервной копии для этого задания:", + "Backup ID:": "Идентификатор резервной копии:", + "Backup Jobs": "Задания резервного копирования", + "Backup Mode": "Режим резервного копирования", + "Backup Preview": "Предварительный просмотр резервной копии", + "Backup Recommendation": "Рекомендация по резервному копированию", + "Backup Restored": "Восстановление из резервной копии выполнено", + "Backup all VMs and CTs": "Создать резервные копии всех ВМ и контейнеров", + "Backup and Restore Commands": "Команды резервного копирования и восстановления", + "Backup available at": "Резервная копия доступна по адресу", + "Backup completed successfully.": "Резервное копирование успешно завершено.", + "Backup completed:": "Резервное копирование завершено:", + "Backup created": "Резервная копия создана", + "Backup created in": "Резервная копия создана в", + "Backup created:": "Резервная копия создана:", + "Backup declares unused NICs that are not on this host:": "В резервной копии указаны неиспользуемые сетевые интерфейсы, отсутствующие на этом хосте:", + "Backup destination is inside the backup": "Место сохранения резервной копии находится внутри данных, включаемых в резервную копию", + "Backup failed. See log:": "Не удалось создать резервную копию. См. журнал:", + "Backup file appears corrupted, will reinstall packages": "Файл резервной копии, по-видимому, повреждён; пакеты будут переустановлены", + "Backup host configuration": "Создать резервную копию конфигурации хоста", + "Backup includes /etc/zfs/zpool.cache. Restore it (same host detected)?": "Резервная копия содержит /etc/zfs/zpool.cache. Восстановить этот файл (обнаружен тот же хост)?", + "Backup information": "Информация о резервной копии", + "Backup job created successfully.": "Задание резервного копирования успешно создано.", + "Backup kept in": "Резервная копия сохранена в", + "Backup location": "Расположение резервной копии", + "Backup metadata": "Метаданные резервной копии", + "Backup of the previous installation verified": "Резервная копия предыдущей установки проверена", + "Backup on newer kernel:": "Резервная копия создана с более новым ядром:", + "Backup on older kernel:": "Резервная копия создана с более старым ядром:", + "Backup origin metadata:": "Метаданные источника резервной копии:", + "Backup path:": "Путь к резервной копии:", + "Backup pools not present on this host:": "Пулы из резервной копии, отсутствующие на этом хосте:", + "Backup saved to:": "Резервная копия сохранена в:", + "Backup scheduler and retention": "Планировщик резервного копирования и политика хранения", + "Backup started on node": "Резервное копирование запущено на узле", + "Backup to Borg repository": "Создать резервную копию в репозитории Borg", + "Backup to Proxmox Backup Server (PBS)": "Создать резервную копию на Proxmox Backup Server (PBS)", + "Backup to a specific directory": "Создать резервную копию в указанном каталоге", + "Backup to local archive (.tar.zst)": "Создать резервную копию в локальном архиве (.tar.zst)", + "Backup:": "Резервная копия:", + "Backups already on PBS were encrypted with the current key — downloading them will fail unless you first Download the current keyfile to keep a copy.": "Резервные копии, уже находящиеся на PBS, были зашифрованы текущим ключом — скачать их не удастся, если сначала не скачать текущий файл ключа, чтобы сохранить его копию.", + "Backups already stored on PBS were encrypted with the current keyfile. After this action:": "Резервные копии, уже хранящиеся на PBS, были зашифрованы с использованием текущего файла ключа. После этого действия:", + "Backups verified": "Резервные копии проверены", + "Bambu Studio is an open-source, cutting-edge, feature-rich slicing software. It contains project-based workflows, systematically optimized slicing algorithms, and an easy-to-use graphical interface, bringing users an incredibly smooth printing experience.": "Bambu Studio — современная многофункциональная программа для подготовки моделей к 3D-печати с открытым исходным кодом. Она предлагает рабочие процессы на основе проектов, систематически оптимизированные алгоритмы нарезки и простой графический интерфейс, обеспечивая пользователям исключительно удобную работу с 3D-печатью.", + "Bandwidth limit configured": "Ограничение пропускной способности настроено", + "Bandwidth test (iperf3)": "Тест пропускной способности (iperf3)", + "Bandwidth test completed successfully": "Тест пропускной способности успешно завершён", + "Banner removal cancelled by user.": "Удаление баннера отменено пользователем.", + "Base VM created with ID": "Базовая виртуальная машина создана с ID", + "Base VMID": "Базовый VMID", + "Base VMID (empty = next free block)": "Базовый VMID (пустое поле = следующий свободный блок)", + "Base VMID of Nextcloud (empty = next free block)": "Базовый VMID для Nextcloud (пустое поле = следующий свободный блок)", + "Base VMID of Paperless (empty = next free block)": "Базовый VMID для Paperless (пустое поле = следующий свободный блок)", + "Base VMID of Tandoor (empty = next free block)": "Базовый VMID для Tandoor (пустое поле = следующий свободный блок)", + "Base VMID of the server (empty = next free block)": "Базовый VMID сервера (пустое поле = следующий свободный блок)", + "Bash prompt path": "Путь в приглашении Bash", + "Bashrc customization completed": "Настройка Bashrc завершена", + "Basic Settings": "Основные настройки", + "Basic Utilities": "Базовые утилиты", + "Bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.": "Bazarr — вспомогательное приложение для Sonarr и Radarr. Оно позволяет управлять субтитрами и скачивать их в соответствии с вашими требованиями. Вы задаёте предпочтения для сериала или фильма, а Bazarr берёт всё остальное на себя.", + "Beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.": "Beets — это прежде всего менеджер музыкальной библиотеки, а не музыкальный проигрыватель. В нём есть простой плагин проигрывателя и экспериментальный веб-проигрыватель, но само воспроизведение звука обычно выполняется специализированными инструментами.", + "Before making any changes, we'll create a safety backup.": "Прежде чем вносить какие-либо изменения, мы создадим резервную копию для подстраховки.", + "Beta (develop branch)": "Бета-версия (ветка develop)", + "Beta version:": "Бета-версия:", + "Bichon": "Bichon", + "Bichon administrator": "Администратор Bichon", + "Binary not found in extracted content.": "Исполняемый файл не найден среди распакованных файлов.", + "Bind mount added:": "Добавлено bind-монтирование:", + "Bind mounts are not included in vzdump": "Bind-монтирования не включаются в резервные копии vzdump", + "Bitcoin Knots can be used as a desktop client for regular payments or as a full node server utility for merchants and other payment services.": "Bitcoin Knots можно использовать как настольный клиент для регулярных платежей или как серверную утилиту полного узла для продавцов и других платёжных сервисов.", + "Blacklist nouveau driver": "Добавить драйвер nouveau в чёрный список", + "Blacklisting GPU host drivers...": "Добавление драйверов GPU хоста в чёрный список...", + "Blacklisting nouveau driver...": "Добавление драйвера nouveau в чёрный список...", + "Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. **This image does not support GPU rendering out of the box only accelerated workspace experience**": "Blender — это свободный набор программных инструментов с открытым исходным кодом для работы с трёхмерной компьютерной графикой, используемый для создания анимационных фильмов, визуальных эффектов, произведений искусства, моделей для 3D-печати, моушн-дизайна, интерактивных 3D-приложений, виртуальной реальности и компьютерных игр. **Этот образ не поддерживает рендеринг на GPU без дополнительной настройки — доступно только ускорение рабочей среды**", + "Blinko is an AI-powered card note-taking project. Designed for individuals who want to quickly capture and organize their fleeting thoughts. Blinko allows users to seamlessly jot down ideas the moment they strike, ensuring that no spark of creativity is lost.": "Blinko — это проект для ведения заметок на карточках с поддержкой ИИ. Он предназначен для тех, кто хочет быстро записывать и упорядочивать мимолётные мысли. Blinko позволяет легко фиксировать идеи сразу же, как только они возникают, чтобы ни одна творческая искра не была потеряна.", + "Blocked GPU ID": "Заблокированный ID GPU", + "Blocked GPU ID for VM Mode": "Заблокированный ID GPU для режима ВМ", + "Blocked device(s)": "Заблокированные устройства", + "Blocked device(s):": "Заблокированные устройства:", + "Blockers": "Блокирующие факторы", + "Bludit": "Bludit", + "BookStack web interface": "Веб-интерфейс BookStack", + "Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.": "Bookstack — это свободная вики-система с открытым исходным кодом для создания красиво оформленной документации. Простой, но мощный WYSIWYG-редактор позволяет командам легко создавать подробную и полезную документацию.", + "Boot Disk": "Загрузочный диск", + "Boot artifacts regenerated — reboot the host to activate the merged config.": "Загрузочные артефакты сформированы заново — перезагрузите хост, чтобы применить объединённую конфигурацию.", + "Boot disk:": "Загрузочный диск:", + "Boot order set to": "Установлен порядок загрузки:", + "Boot partition UUIDs from backup not found on this host:": "UUID загрузочных разделов из резервной копии не найдены на этом хосте:", + "Boot type (grub/zfs):": "Тип загрузки (grub/zfs):", + "Borg UI administrator": "Администратор Borg UI", + "Borg backup error log": "Журнал ошибок резервного копирования Borg", + "Borg backup failed.": "Не удалось создать резервную копию с помощью Borg.", + "Borg binary checksum verification failed.": "Проверка контрольной суммы исполняемого файла Borg не пройдена.", + "Borg encryption": "Шифрование Borg", + "Borg extraction failed.": "Не удалось извлечь данные с помощью Borg.", + "Borg not found. Downloading borg": "Borg не найден. Загрузка borg", + "Borg passphrase:": "Парольная фраза Borg:", + "Borg ready.": "Borg готов к работе.", + "Borg repositories": "Репозитории Borg", + "Borg repository location": "Расположение репозитория Borg", + "Borg repository passphrase": "Парольная фраза репозитория Borg", + "Borg repository path:": "Путь к репозиторию Borg:", + "Borg restore error log": "Журнал ошибок восстановления Borg", + "Borg server SSH user": "Пользователь SSH на сервере Borg", + "Bridge": "Сетевой мост", + "Bridge Analysis": "Анализ сетевого моста", + "Bridge Configuration Analysis": "Анализ конфигурации сетевого моста", + "Bridge:": "Сетевой мост:", + "Bridges analyzed": "Проанализировано сетевых мостов", + "Broken gasket-dkms package state recovered.": "Некорректное состояние пакета gasket-dkms исправлено.", + "Browse Your Life in Images": "Просматривайте свою жизнь в фотографиях", + "Browse manually (advanced)...": "Выбрать вручную (для опытных пользователей)...", + "Browser-based SSH and Telnet client.": "Браузерный клиент SSH и Telnet.", + "Browsers & Web Desktops": "Браузеры и веб-рабочие столы", + "Build agents that monitor and automate your web workflows.": "Создавайте агентов для мониторинга и автоматизации ваших рабочих процессов в интернете.", + "Build and install the gasket and apex kernel modules (DKMS)": "Собрать и установить модули ядра gasket и apex (DKMS)", + "Build dependencies installed.": "Зависимости для сборки установлены.", + "Build dynamic websites using SQL files.": "Создавайте динамические веб-сайты с помощью SQL-файлов.", + "Build reports and dashboards from your data.": "Создавайте отчёты и информационные панели на основе ваших данных.", + "Build visual automations for personal and hobby use.": "Создавайте визуальные сценарии автоматизации для личных нужд и хобби.", + "Build your personal knowledge base with TriliumNext Notes": "Создайте личную базу знаний с помощью TriliumNext Notes", + "Bulk generation requires GITHUB_TOKEN to obtain an immutable revision per application": "Для массовой генерации требуется GITHUB_TOKEN, чтобы получить неизменяемую ревизию для каждого приложения", + "Business & ERP": "Бизнес и ERP", + "CDC Data": "Данные CDC", + "CHANGES APPLIED SUCCESSFULLY": "ИЗМЕНЕНИЯ УСПЕШНО ПРИМЕНЕНЫ", + "CIFS Client Tools: AVAILABLE": "Клиентские утилиты CIFS: ДОСТУПНЫ", + "CIFS Client Tools: NOT AVAILABLE - installing...": "Клиентские утилиты CIFS: НЕДОСТУПНЫ — установка...", + "CIFS Client: INSTALLED": "Клиент CIFS: УСТАНОВЛЕН", + "CIFS Client: NOT INSTALLED": "Клиент CIFS: НЕ УСТАНОВЛЕН", + "CIFS Mount Not Found": "Точка монтирования CIFS не найдена", + "CIFS Mounts on Host": "Точки монтирования CIFS на хосте", + "CIFS Proxmox storages (pvesm):": "Хранилища CIFS в Proxmox (pvesm):", + "CIFS can cause file locking issues with VM disk operations.": "CIFS может вызывать проблемы с блокировкой файлов при операциях с дисками виртуальных машин.", + "CIFS client tools installed.": "Клиентские утилиты CIFS установлены.", + "CIFS share mounted at:": "Общий ресурс CIFS смонтирован в:", + "CIFS share remounted — LXC containers can now read and write": "Общий ресурс CIFS перемонтирован — теперь контейнеры LXC могут читать и записывать данные", + "CIFS storage added successfully to Proxmox!": "Хранилище CIFS успешно добавлено в Proxmox!", + "CLEANUP COMPLETED SUCCESSFULLY": "ОЧИСТКА УСПЕШНО ЗАВЕРШЕНА", + "CLUSTER UPGRADE NOTES:": "ПРИМЕЧАНИЯ ПО ОБНОВЛЕНИЮ КЛАСТЕРА:", + "CONFIGURED INTERFACES": "НАСТРОЕННЫЕ ИНТЕРФЕЙСЫ", + "CONFIRM FORMAT": "ПОДТВЕРДИТЬ ФОРМАТИРОВАНИЕ", + "CORE COUNT": "КОЛИЧЕСТВО ЯДЕР", + "CPU": "CPU", + "CPU Cores": "Ядра ЦП", + "CPU MODEL": "МОДЕЛЬ ЦП", + "CPU Model": "Модель ЦП", + "CPU cores": "Ядра ЦП", + "CPU priority": "Приоритет ЦП", + "CPU set to host,hidden=1,flags=+pcid": "Для ЦП установлено host,hidden=1,flags=+pcid", + "CPU vendor (intel/amd):": "Производитель ЦП (intel/amd):", + "CRITICAL: The selected disk is referenced by a RUNNING VM or CT.": "КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ: выбранный диск указан в конфигурации РАБОТАЮЩЕЙ ВМ или контейнера.", + "CT": "CT", + "CT started successfully.": "Контейнер успешно запущен.", + "CT {vmid} ({name}) could not be kept running; it is left stopped": "Не удалось поддержать работу контейнера {vmid} ({name}); он оставлен в остановленном состоянии", + "CT {vmid} ({name}) stopped on its own; starting it again (attempt {attempt})": "Контейнер {vmid} ({name}) остановился самопроизвольно; повторный запуск (попытка {attempt})", + "CT {vmid} is a host monitor and had a rule in the host firewall. Allow TCP port {port} from {subnet} through the firewall of this host? Existing firewall rules are not changed.": "Контейнер {vmid} выполняет мониторинг хоста, и для него существовало правило в межсетевом экране хоста. Разрешить в межсетевом экране этого хоста доступ к TCP-порту {port} из подсети {subnet}? Существующие правила межсетевого экрана не изменяются.", + "CT {vmid} is one of the {count} containers of {application}.": "Контейнер {vmid} входит в состав контейнеров приложения {application} (всего: {count}).", + "CT {vmid}: DHCP client of {name} (IPv{version}) started again": "Контейнер {vmid}: DHCP-клиент {name} (IPv{version}) запущен повторно", + "CUDA requires a working NVIDIA driver": "Для CUDA требуется работающий драйвер NVIDIA", + "CUDA requires the NVIDIA Container Toolkit on the host": "Для CUDA требуется NVIDIA Container Toolkit на хосте", + "Calculate all kinds of statistics from your (local) Emby or Jellyfin server": "Расчёт всевозможной статистики на основе данных вашего (локального) сервера Emby или Jellyfin", + "Calibre is a powerful and easy to use e-book manager. Users say it's outstanding and a must-have. It'll allow you to do nearly everything and it takes things a step beyond normal e-book software. It's also completely free and open source and great for both casual users and computer experts.": "Calibre — мощный и простой в использовании менеджер электронных книг. Пользователи считают его превосходным и незаменимым. Он позволяет делать практически всё и выходит за рамки возможностей обычных программ для работы с электронными книгами. Кроме того, он полностью бесплатен, имеет открытый исходный код и отлично подходит как обычным пользователям, так и компьютерным специалистам.", + "Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.": "Calibre-web — веб-приложение с удобным интерфейсом для просмотра, чтения и скачивания eBooks на основе существующей базы данных Calibre. Также можно подключить Google Drive и редактировать метаданные и библиотеку Calibre непосредственно в приложении.", + "Calligra is an office and graphic art suite by KDE. It is available for desktop PCs, tablet computers, and smartphones. It contains applications for word processing, spreadsheets, presentation, vector graphics, and editing databases.": "Calligra — пакет офисных и графических приложений от KDE. Он доступен для настольных ПК, планшетов и смартфонов. В него входят приложения для работы с текстами, электронными таблицами, презентациями, векторной графикой и редактирования баз данных.", + "Calnode": "Calnode", + "Campfire first-run setup": "Первоначальная настройка Campfire", + "Cancel": "Отмена", + "Cancel restore": "Отменить восстановление", + "Cancel this setup": "Отменить эту настройку", + "Cancelled by user or empty URL.": "Отменено пользователем или указан пустой URL.", + "Cancelled by user.": "Отменено пользователем.", + "Cannot apply the Compose command:": "Не удалось применить команду Compose:", + "Cannot connect to server": "Не удалось подключиться к серверу", + "Cannot continue": "Невозможно продолжить", + "Cannot create:": "Не удалось создать:", + "Cannot detect filesystem on": "Не удалось определить файловую систему на", + "Cannot determine installed systemd-zram-generator version": "Не удалось определить версию установленного systemd-zram-generator", + "Cannot find": "Не удалось найти", + "Cannot identify the vendor of the device:": "Не удалось определить производителя устройства:", + "Cannot inspect current swap configuration": "Не удалось проверить текущую конфигурацию подкачки", + "Cannot inspect existing ZRAM configurations": "Не удалось проверить существующие конфигурации ZRAM", + "Cannot inspect existing ZRAM generator configuration": "Не удалось проверить существующую конфигурацию генератора ZRAM", + "Cannot load backup library: lib_host_backup_common.sh": "Не удалось загрузить библиотеку резервного копирования: lib_host_backup_common.sh", + "Cannot prepare the OCI archive:": "Не удалось подготовить архив OCI:", + "Cannot proceed with invalid export path.": "Невозможно продолжить с недопустимым путём экспорта.", + "Cannot proceed with invalid share name.": "Невозможно продолжить с недопустимым именем общего ресурса.", + "Cannot reach Proxmox repositories": "Не удалось получить доступ к репозиториям Proxmox", + "Cannot reach download.proxmox.com. Check network, proxy or DNS.": "Не удаётся подключиться к download.proxmox.com. Проверьте сеть, прокси или DNS.", + "Cannot reach portal:": "Не удалось получить доступ к порталу:", + "Cannot reach server": "Сервер недоступен", + "Cannot read": "Не удалось прочитать", + "Cannot read the OCI archive:": "Не удалось прочитать архив OCI:", + "Cannot resolve the container home directory:": "Не удалось определить домашний каталог контейнера:", + "Cannot validate credentials - no shares available for testing.": "Не удалось проверить учётные данные — нет общих ресурсов для проверки.", + "Cannot verify the reused disk:": "Не удалось проверить повторно используемый диск:", + "Cannot write the image archive to {storage}. Check storage access and mount status.": "Не удалось записать архив образа в {storage}. Проверьте доступ к хранилищу и состояние монтирования.", + "Capabilities cannot be kept and all dropped at the same time": "Нельзя одновременно сохранять отдельные capabilities и удалять их все", + "Catalog options": "Параметры каталога", + "Catalog refresh unavailable; using the local catalog.": "Обновление каталога недоступно; используется локальный каталог.", + "Category": "Категория", + "Caution: Maximum mode generates more heat.": "Внимание: максимальный режим повышает тепловыделение.", + "Central server for file and image backups.": "Центральный сервер для резервного копирования файлов и образов.", + "Ceph check skipped by user flag (--ignore-ceph-check)": "Проверка Ceph пропущена по флагу пользователя (--ignore-ceph-check)", + "Ceph components": "Компоненты Ceph", + "Ceph detected as hyper-converged on this node. Checking version (require 19.x Squid)...": "На этом узле обнаружена гиперконвергентная конфигурация Ceph. Проверка версии (требуется 19.x Squid)...", + "Ceph enterprise repository present": "Репозиторий Ceph для корпоративных подписчиков присутствует", + "Ceph installation check completed": "Проверка установки Ceph завершена", + "Ceph installation completed successfully": "Установка Ceph успешно завершена", + "Ceph installation could not be verified": "Не удалось подтвердить установку Ceph", + "Ceph installation process completed": "Процесс установки Ceph завершён", + "Ceph installation process finished with warnings": "Процесс установки Ceph завершён с предупреждениями", + "Ceph installed but integration may need configuration": "Ceph установлен, но для интеграции может потребоваться настройка", + "Ceph integration with PVE 9 verified": "Интеграция Ceph с PVE 9 проверена", + "Ceph is already installed": "Ceph уже установлен", + "Ceph is not 19.x (Squid). Proceeding due to --warn-ceph-check. Detected:": "Версия Ceph — не 19.x (Squid). Продолжение работы из-за флага --warn-ceph-check. Обнаруженная версия:", + "Ceph is not 19.x (Squid). Upgrade Ceph first. Detected:": "Версия Ceph — не 19.x (Squid). Сначала обновите Ceph. Обнаружена версия:", + "Ceph no-subscription repository present": "Репозиторий Ceph no-subscription присутствует", + "Ceph packages and repository removed": "Пакеты и репозиторий Ceph удалены", + "Ceph packages are available": "Пакеты Ceph доступны", + "Ceph packages installed and verified successfully": "Пакеты Ceph успешно установлены и проверены", + "Ceph packages installed but service verification failed": "Пакеты Ceph установлены, но проверка служб завершилась неудачно", + "Ceph packages may not be available, but continuing installation...": "Пакеты Ceph могут быть недоступны, но установка продолжается...", + "Ceph repository configured for PVE 8": "Репозиторий Ceph настроен для PVE 8", + "Ceph repository configured for PVE 9": "Репозиторий Ceph настроен для PVE 9", + "Ceph repository signature verification failed; installation has been stopped": "Не удалось проверить подпись репозитория Ceph; установка остановлена", + "Ceph version OK:": "Версия Ceph соответствует требованиям:", + "Certificate errors are logged in /config/log/letsencrypt inside the container.": "Ошибки сертификатов записываются в журнал в /config/log/letsencrypt внутри контейнера.", + "Certificate fingerprint of the PBS server:": "Отпечаток сертификата сервера PBS:", + "Certificate provider: empty for Let's Encrypt, zerossl for ZeroSSL": "Поставщик сертификатов: оставьте поле пустым для Let's Encrypt, укажите zerossl для ZeroSSL", + "Change GPU acceleration?": "Изменить настройки ускорения на GPU?", + "Change Language": "Изменить язык", + "Change Release Channel": "Изменить канал выпуска", + "Change it after the first login.": "Измените это после первого входа в систему.", + "Change or add an environment variable?": "Изменить или добавить переменную окружения?", + "Change the access network?": "Изменить сеть доступа?", + "Change the recognition now?": "Изменить настройки распознавания сейчас?", + "Change what runs recognition: CPU or GPU": "Изменить устройство для выполнения распознавания: CPU или GPU", + "Changedetection.io provides free, open-source web page monitoring, notification and change detection.": "Changedetection.io — бесплатный инструмент с открытым исходным кодом для мониторинга веб-страниц, обнаружения изменений и отправки уведомлений.", + "Changes applied. A system reboot is recommended for them to take full effect.": "Изменения применены. Чтобы они полностью вступили в силу, рекомендуется перезагрузить систему.", + "Changes applied. Data kept.": "Изменения применены. Данные сохранены.", + "Changes have been applied to the configuration file.": "Изменения внесены в файл конфигурации.", + "Changes prepared": "Изменения подготовлены", + "Changes will apply after reboot.": "Изменения вступят в силу после перезагрузки.", + "Changing Release Channel": "Изменение канала выпуска", + "Changing between a privileged and an unprivileged container, or the host monitor mode, requires installing the application again": "Для перехода между привилегированным контейнером, непривилегированным контейнером и режимом мониторинга хоста необходимо заново установить приложение", + "Changing the machine type on an existing installed VM is not safe: it changes the chipset and PCI slot layout, which typically prevents the guest OS from booting.": "Изменять тип машины у существующей ВМ с установленной ОС небезопасно: это изменяет чипсет и расположение слотов PCI, что обычно препятствует загрузке гостевой ОС.", + "Changing the rootfs or its storage requires a separate migration": "Изменение rootfs или его хранилища требует отдельной миграции", + "Changing the shared identity (1000:1000) in Settings of the panel means giving the new one access on the host again: the volumes and the access rules are prepared for 1000:1000.": "Если изменить общую идентичность (1000:1000) в настройках панели, новой идентичности нужно снова предоставить доступ на хосте: тома и правила доступа подготовлены для 1000:1000.", + "Changing the storage or size of a disk requires a migration; empty disks are not created": "Изменение хранилища или размера диска требует миграции; пустые диски не создаются", + "Check": "Проверить", + "Check BIOS/UEFI in Hardware > BIOS — must match what the original VM used": "Проверьте BIOS/UEFI в разделе «Оборудование > BIOS» — настройка должна соответствовать той, которая использовалась в исходной ВМ", + "Check Coral USB/M.2 detection": "Проверить обнаружение Coral USB/M.2", + "Check LXC GPU/TPU mapping": "Проверить сопоставление GPU/TPU в LXC", + "Check NFS Status": "Проверить состояние NFS", + "Check NVIDIA driver and devices": "Проверить драйвер и устройства NVIDIA", + "Check Proxmox Web UI status": "Проверить состояние веб-интерфейса Proxmox", + "Check Proxmox firewall status": "Проверить состояние межсетевого экрана Proxmox", + "Check Samba Status": "Проверить состояние Samba", + "Check VM disk/PCI slots": "Проверить диски и слоты PCI виртуальной машины", + "Check VM passthrough settings": "Проверить настройки проброса устройств в ВМ", + "Check access to an image": "Проверить доступ к образу", + "Check connectivity with another host": "Проверить соединение с другим хостом", + "Check container mount points": "Проверить точки монтирования контейнера", + "Check for updates": "Проверить наличие обновлений", + "Check if container is unprivileged:": "Проверить, является ли контейнер непривилегированным:", + "Check kernel params (IOMMU flags)": "Проверить параметры ядра (флаги IOMMU)", + "Check loaded GPU/TPU modules": "Проверить загруженные модули GPU/TPU", + "Check log:": "Проверьте журнал:", + "Check resulting config:": "Проверьте итоговую конфигурацию:", + "Check script not found": "Скрипт проверки не найден", + "Check test progress — show active or last test result": "Проверить ход тестирования — показать текущий тест или результат последнего теста", + "Check that:": "Убедитесь, что:", + "Check the error messages above for details.": "Подробности см. в сообщениях об ошибках выше.", + "Check the image reference and registry access. If the registry is unavailable, try again later. A private registry needs credentials, which are not supported yet.": "Проверьте ссылку на образ и доступ к реестру. Если реестр недоступен, повторите попытку позже. Для частного реестра нужны учётные данные, которые пока не поддерживаются.", + "Check the image reference and registry access. If the registry is unavailable, try again later. For a private image, sign in from Registry accounts in the OCI menu.": "Проверьте ссылку на образ и доступ к реестру. Если реестр недоступен, повторите попытку позже. Для доступа к приватному образу войдите через раздел «Учётные записи реестров» в меню OCI.", + "Check the service status manually if needed.": "При необходимости проверьте состояние службы вручную.", + "Checking MOTD configuration...": "Проверка конфигурации MOTD...", + "Checking NVIDIA driver status with nvidia-smi": "Проверка состояния драйвера NVIDIA с помощью nvidia-smi", + "Checking OCI": "Проверка OCI", + "Checking VFIO modules...": "Проверка модулей VFIO...", + "Checking VM virtual display model...": "Проверка модели виртуального дисплея ВМ...", + "Checking ZFS autotrim configuration...": "Проверка настройки autotrim в ZFS...", + "Checking and repairing old LVM PV headers (if needed)...": "Проверка и исправление старых заголовков физических томов LVM (при необходимости)...", + "Checking conflicting drivers blacklist...": "Проверка чёрного списка конфликтующих драйверов...", + "Checking for updates ({completed}/{total})": "Проверка наличия обновлений ({completed}/{total})", + "Checking for updates...": "Проверка наличия обновлений...", + "Checking free space in /var/cache/apt/archives...": "Проверка свободного места в /var/cache/apt/archives...", + "Checking if system disk is SSD or M.2...": "Проверка, является ли системный диск SSD или M.2...", + "Checking if the server belongs to OVH...": "Проверка принадлежности сервера OVH...", + "Checking image access and metadata. Please wait...": "Проверка доступа к образу и его метаданных. Подождите...", + "Checking kernel headers and build tools...": "Проверка заголовочных файлов ядра и инструментов сборки...", + "Checking remaining interfaces": "Проверка остальных интерфейсов", + "Checking that the container keeps running...": "Проверка того, что контейнер продолжает работать...", + "Checking that this version builds against the running kernel...": "Проверка возможности сборки этой версии для работающего ядра...", + "Checking the GPU of the machine learning container...": "Проверка GPU контейнера машинного обучения...", + "Checking the container before modifying it...": "Проверка контейнера перед внесением изменений...", + "Checking the container before the update...": "Проверка контейнера перед обновлением...", + "Checking the container...": "Проверка контейнера...", + "Checking the device permissions for the application user...": "Проверка прав доступа пользователя приложения к устройствам...", + "Checking the image compatibility:": "Проверка совместимости образа:", + "Checking the image in the registry...": "Проверка образа в реестре...", + "Checking the interrupted operation...": "Проверка прерванной операции...", + "Checking the interrupted stack operation...": "Проверка прерванной операции со стеком...", + "Checking the new image without starting it:": "Проверка нового образа без запуска:", + "Checking the recreated stack...": "Проверка пересозданного стека...", + "Checking the remote...": "Проверка удалённого ресурса...", + "Checking the restored installation": "Проверка восстановленной установки", + "Checking the restored installation...": "Проверка восстановленной установки...", + "Checking the stack before recreating...": "Проверка стека перед пересозданием...", + "Checking the stack before the update...": "Проверка стека перед обновлением...", + "Checking the updated stack...": "Проверка обновлённого стека...", + "Checklist post-upgrade finished. Warnings:": "Проверки по контрольному списку после обновления завершены. Предупреждения:", + "Checklist pre-check finished. Warnings:": "Предварительные проверки по контрольному списку завершены. Предупреждения:", + "Checks for LVM and storage issues": "Проверки на наличие проблем с LVM и хранилищем", + "Chhoto URL": "Chhoto URL", + "Chhoto URL administrator password": "Пароль администратора Chhoto URL", + "Choose": "Выберите", + "Choose BIOS Type": "Выберите тип BIOS", + "Choose BIOS type": "Выберите тип BIOS", + "Choose No to abort and roll back to the legacy refuse behaviour.": "Выберите «Нет», чтобы прервать операцию и вернуться к прежнему поведению — отказу в выполнении.", + "Choose Type": "Выберите тип", + "Choose ZimaOS image option:": "Выберите вариант образа ZimaOS:", + "Choose a Samba server:": "Выберите сервер Samba:", + "Choose a Windows ISO to use:": "Выберите ISO-образ Windows для использования:", + "Choose a ZimaOS image:": "Выберите образ ZimaOS:", + "Choose a custom image:": "Выберите собственный образ:", + "Choose a custom logo:": "Выберите собственный логотип:", + "Choose a destination directory OUTSIDE of": "Выберите целевой каталог ВНЕ", + "Choose a different path or unmount it first.": "Выберите другой путь или сначала размонтируйте его.", + "Choose a folder to export:": "Выберите папку для экспорта:", + "Choose a folder to mount the export:": "Выберите папку для монтирования экспортируемого ресурса:", + "Choose a folder to mount the share:": "Выберите папку для монтирования общего ресурса:", + "Choose a folder to mount:": "Выберите папку для монтирования:", + "Choose a folder to share:": "Выберите папку для общего доступа:", + "Choose a group policy for this shared directory:": "Выберите групповую политику для этого общего каталога:", + "Choose a loader for Synology DSM:": "Выберите загрузчик для Synology DSM:", + "Choose a logo for Fastfetch:": "Выберите логотип для Fastfetch:", + "Choose a password for the MicroBin admin area": "Задайте пароль для панели администратора MicroBin", + "Choose a recent server:": "Выберите сервер из недавно использованных:", + "Choose a recovery passphrase (write it down somewhere safe):": "Выберите парольную фразу для восстановления (запишите её и храните в безопасном месте):", + "Choose a schedule (systemd calendar-event syntax):": "Выберите расписание (синтаксис календарных событий systemd):", + "Choose a script to execute:": "Выберите скрипт для выполнения:", + "Choose a server:": "Выберите сервер:", + "Choose a setting. Changes are applied only after the final review.": "Выберите параметр. Изменения будут применены только после окончательной проверки.", + "Choose a share to mount:": "Выберите общий ресурс для монтирования:", + "Choose a specific supported GPU or USB node": "Выберите конкретный поддерживаемый GPU или узел USB", + "Choose a username during first-run setup": "Выберите имя пользователя при первоначальной настройке", + "Choose action for this controller/NVMe:": "Выберите действие для этого контроллера/NVMe:", + "Choose action:": "Выберите действие:", + "Choose an NFS server:": "Выберите сервер NFS:", + "Choose an action:": "Выберите действие:", + "Choose an export to mount:": "Выберите экспортируемый ресурс для монтирования:", + "Choose an option:": "Выберите вариант:", + "Choose another bridge for the container in Proxmox (Network) and run the recovery again.": "Выберите другой сетевой мост для контейнера в Proxmox (Network) и повторно запустите восстановление.", + "Choose any host path you want to share with CTs.": "Выберите любой путь на хосте, к которому хотите предоставить доступ контейнерам (CT).", + "Choose conflict policy": "Выберите политику разрешения конфликтов", + "Choose conflict policy for the source VM:": "Выберите политику разрешения конфликтов для исходной ВМ:", + "Choose conflict policy:": "Выберите политику разрешения конфликтов:", + "Choose filesystem for the disk:": "Выберите файловую систему для диска:", + "Choose how the current directory is shown in the Bash prompt:": "Выберите способ отображения текущего каталога в приглашении Bash:", + "Choose how this host backup will be triggered:": "Выберите способ запуска создания этой резервной копии хоста:", + "Choose how to continue:": "Выберите, как продолжить:", + "Choose how to handle affected LXC containers before switching to VM mode.": "Выберите, что делать с затронутыми контейнерами LXC перед переключением в режим виртуальной машины.", + "Choose how to make the disk available on this host. Mark one or both options:": "Выберите, как сделать диск доступным на этом хосте. Отметьте один или оба варианта:", + "Choose how to mount the NFS share on this host. Mark one or both options:": "Выберите способ монтирования общего ресурса NFS на этом хосте. Отметьте один или оба варианта:", + "Choose how to mount the Samba share on this host. Mark one or both options:": "Выберите способ монтирования общего ресурса Samba на этом хосте. Отметьте один или оба варианта:", + "Choose how to perform the upgrade:": "Выберите способ обновления:", + "Choose how to run the script:": "Выберите способ запуска скрипта:", + "Choose iperf3 mode:": "Выберите режим iperf3:", + "Choose options to configure:": "Выберите параметры для настройки:", + "Choose specific VMs/CTs": "Выберите конкретные виртуальные машины и контейнеры", + "Choose storage for the downloaded image.": "Выберите хранилище для загруженного образа.", + "Choose the driver version for Coral M.2:": "Выберите версию драйвера для Coral M.2:", + "Choose the filesystem for the new partition:": "Выберите файловую систему для нового раздела:", + "Choose the release channel to use:": "Выберите канал выпуска:", + "Choose the storage for the EFI disk (4MB):": "Выберите хранилище для диска EFI (4 МБ):", + "Choose the storage for the TPM disk (4MB):": "Выберите хранилище для диска TPM (4 МБ):", + "Choose the storage for the loader disk:": "Выберите хранилище для диска загрузчика:", + "Choose the storage for the virtual disk:": "Выберите хранилище для виртуального диска:", + "Choose the storage volume for the EFI disk (4MB):\n\nUse Spacebar to select.": "Выберите том хранилища для диска EFI (4MB):\n\nДля выбора используйте пробел.", + "Choose the storage volume for the virtual disk:": "Выберите том хранилища для виртуального диска:", + "Choose the type of virtual system to install:": "Выберите тип виртуальной системы для установки:", + "Choose what to do with the selected disk:": "Выберите действие с выбранным диском:", + "Choose where to save the backup:": "Выберите, где сохранить резервную копию:", + "Chrome is the official web browser from Google, built to be fast, secure, and customizable.": "Chrome — официальный веб-браузер от Google, созданный для быстрой и безопасной работы с возможностью настройки.", + "Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.": "Chromium — проект браузера с открытым исходным кодом, цель которого — сделать работу в интернете более безопасной, быстрой и стабильной для всех пользователей.", + "Circular dependency:": "Циклическая зависимость:", + "Claims the free games of Steam, Epic, Prime Gaming, GOG and more.": "Позволяет добавлять в библиотеку бесплатные игры из Steam, Epic, Prime Gaming, GOG и других сервисов.", + "Clean disk metadata": "Очистить метаданные диска", + "Cleaned up": "Очистка выполнена", + "Cleaning cached files...": "Очистка кэшированных файлов...", + "Cleaning disk metadata...": "Очистка метаданных диска...", + "Cleaning previous Log2RAM installation...": "Очистка предыдущей установки Log2RAM...", + "Cleaning temporary files...": "Очистка временных файлов...", + "Cleaning up Samba directories...": "Очистка каталогов Samba...", + "Cleaning up duplicate parameters...": "Удаление дублирующихся параметров...", + "Cleaning up duplicate repositories...": "Удаление дублирующихся репозиториев...", + "Cleaning up remaining processes...": "Завершение оставшихся процессов...", + "Cleaning up unused time synchronization services...": "Удаление неиспользуемых служб синхронизации времени...", + "Cleans duplicate or conflicting sources": "Удаляет дублирующиеся или конфликтующие источники", + "Cleanup Complete": "Очистка завершена", + "Cleanup completed. A reboot is recommended to fully apply pending kernel package configurations.": "Очистка завершена. Для полного применения ожидающих настроек пакетов ядра рекомендуется перезагрузка.", + "Cleanup finished": "Очистка завершена", + "Cleanup legacy gasket-dkms": "Удалить устаревший gasket-dkms", + "Cleanup partial VM?": "Удалить частично созданную ВМ?", + "Clear configured target": "Сбросить настроенную цель", + "Clear pool error state": "Сбросить состояние ошибки пула", + "Cleared": "Очищено", + "Clearing login credentials...": "Удаление учётных данных для входа...", + "ClickHouse Server": "Сервер ClickHouse", + "ClickHouse default account": "Учётная запись ClickHouse по умолчанию", + "Client (run a bandwidth test to a server)": "Клиент (проверка пропускной способности соединения с сервером)", + "Client determines best version to use": "Клиент определяет оптимальную версию для использования", + "Client networks permitted to query NTP (comma-separated CIDRs)": "Клиентские сети, которым разрешено отправлять запросы NTP (CIDR через запятую)", + "Clients reach the VPN through the public address and the UDP port given during the installation, so that port must be forwarded to this container.": "Клиенты подключаются к VPN через публичный адрес и UDP-порт, указанный при установке, поэтому этот порт необходимо перенаправить на этот контейнер.", + "Cloning Coral driver repository (feranick fork)...": "Клонирование репозитория драйвера Coral (форк feranick)...", + "Cloning Lynis from GitHub...": "Клонирование Lynis с GitHub...", + "Cloning and applying NVIDIA patch (keylase/nvidia-patch)...": "Клонирование и применение патча NVIDIA (keylase/nvidia-patch)...", + "Closed": "Закрыто", + "Cloud Database Manager.": "Менеджер облачных баз данных.", + "Cloud storage synchronization and FUSE mounts": "Синхронизация с облачными хранилищами и монтирование через FUSE", + "Cloud-Init Automated Installers": "Автоматизированные установщики Cloud-Init", + "Cloudreve": "Cloudreve", + "Cluster certificates updated": "Сертификаты кластера обновлены", + "Cluster configuration (advanced)": "Настройка кластера (расширенные параметры)", + "Cluster data will be applied automatically at next boot.": "Данные кластера будут применены автоматически при следующей загрузке.", + "Cluster upgrade mode": "Режим обновления кластера", + "Code": "Код", + "Code-server is VS Code running on a remote server, accessible through the browser.": "Code-server — это VS Code, работающий на удалённом сервере и доступный через браузер.", + "CodeProject.AI Server": "CodeProject.AI Server", + "Column-oriented database for analytics.": "Колоночная база данных для аналитики.", + "CommaFeed": "CommaFeed", + "Command": "Command", + "Command failed": "Не удалось выполнить команду", + "Command not found.": "Команда не найдена.", + "Command override for an unknown service:": "Переопределение команды для неизвестной службы:", + "Commenting any residual Bookworm lines in *.list...": "Комментирование оставшихся строк Bookworm в *.list...", + "Commenting legacy PVE 8 repository .list files (if any)...": "Комментирование записей в устаревших файлах репозиториев PVE 8 с расширением .list (если они есть)...", + "Commenting legacy ceph.list (if present)...": "Комментирование записей в устаревшем ceph.list (если он есть)...", + "Common Issues Check": "Проверка на распространённые проблемы", + "Common root for the published views": "Общий корневой каталог для опубликованных представлений", + "Communication & Community": "Общение и сообщество", + "Communications": "Связь", + "Community Scripts": "Скрипты сообщества", + "Community single-container Home Assistant OS image": "Образ Home Assistant OS от сообщества для одного контейнера", + "Compatibility check": "Проверка совместимости", + "Compatibility check — OK": "Проверка совместимости — ОК", + "Compatibility check — issues detected": "Проверка совместимости — обнаружены проблемы", + "Compatibility check — review warnings": "Проверка совместимости — ознакомьтесь с предупреждениями", + "Compatible with privileged and unprivileged LXC containers": "Совместимо с привилегированными и непривилегированными контейнерами LXC", + "Compatible with:": "Совместимо с:", + "Compile firewall rules for all nodes": "Скомпилировать правила межсетевого экрана для всех узлов", + "Compiling Coral TPU drivers for current kernel...": "Компиляция драйверов Coral TPU для текущего ядра...", + "Complete": "Завершено", + "Complete NVIDIA uninstallation finished.": "Полное удаление NVIDIA завершено.", + "Complete post-installation optimization finished!": "Полная оптимизация после установки завершена!", + "Complete restore": "Полное восстановление", + "Complete the DSM installation wizard": "Завершите работу мастера установки DSM", + "Complete the ZimaOS installation wizard": "Завершите работу мастера установки ZimaOS", + "Complete the media server and Seerr accounts, the Bazarr providers and the SABnzbd Usenet credentials when they are selected.": "Если выбраны соответствующие компоненты, заполните данные учётных записей медиасервера и Seerr, данные провайдеров Bazarr и учётные данные Usenet для SABnzbd.", + "Completed": "Завершено", + "Completed Successfully with GPU passthrough configured!": "Успешно завершено! Проброс GPU настроен!", + "Completed Successfully!": "Успешно завершено!", + "Completed with errors —": "Завершено с ошибками —", + "Completed.": "Завершено.", + "Completed. Devices added to VM {vmid}: {count}.": "Завершено. Количество устройств, добавленных в ВМ {vmid}: {count}.", + "Completed. Disks added to CT {ctid}: {count}.": "Завершено. Добавлено дисков в CT {ctid}: {count}.", + "Completed. Disks added to VM {vmid}: {count}.": "Завершено. Добавлено дисков в VM {vmid}: {count}.", + "Completed. Press Enter to return to menu...": "Завершено. Нажмите Enter, чтобы вернуться в меню...", + "Completing its final cleanup...": "Завершается окончательная очистка...", + "Completing pending package configurations...": "Завершается отложенная настройка пакетов...", + "Compliance checking (PCI-DSS, HIPAA, etc.)": "Проверка соответствия требованиям (PCI-DSS, HIPAA и др.)", + "Component to uninstall manually (no --auto-uninstall yet):": "Компонент для удаления вручную (--auto-uninstall пока не поддерживается):", + "Component was installed on the backup source but no matching hardware was found on this host.": "Компонент был установлен на системе, с которой создана резервная копия, но на этом хосте соответствующее оборудование не найдено.", + "Component:": "Компонент:", + "Components to uninstall (manual for now):": "Компоненты для удаления (пока только вручную):", + "Compose capabilities validated in the LXC user namespace:": "Возможности Compose проверены в пользовательском пространстве имён LXC:", + "Compose environment must be a list or a mapping.": "Значение environment в Compose должно быть списком или отображением.", + "Compose file of the application": "Файл Compose приложения", + "Compose file of this host": "Файл Compose этого хоста", + "Compose ports must be a list.": "Значение ports в Compose должно быть списком.", + "Compose volumes must be a list.": "Значение volumes в Compose должно быть списком.", + "Compressed size:": "Размер в сжатом виде:", + "Compressing": "Сжатие", + "Compression": "Сжатие", + "Compression Tools": "Инструменты сжатия", + "Computer-aided design and drafting in your browser": "Автоматизированное проектирование и черчение в браузере", + "Concise output of logical volumes": "Краткая информация о логических томах", + "Concise output of physical volumes": "Краткая информация о физических томах", + "Concise output of volume groups": "Краткая информация о группах томов", + "Concurrent change while restoring the start at boot setting": "Параллельное изменение при восстановлении настройки запуска при загрузке", + "Configuration Analysis": "Анализ конфигурации", + "Configuration Menu": "Меню настройки", + "Configuration Summary:": "Сводка конфигурации:", + "Configuration analysis": "Анализ конфигурации", + "Configuration backup created:": "Создана резервная копия конфигурации:", + "Configuration can continue now and will be effective after reboot.": "Теперь можно продолжить настройку; изменения вступят в силу после перезагрузки.", + "Configuration completed successfully!": "Настройка успешно завершена!", + "Configuration file for container": "Файл конфигурации контейнера", + "Configuration files generated:": "Созданы файлы конфигурации:", + "Configuration has been stopped due to high reset risk.": "Настройка остановлена из-за высокого риска сброса.", + "Configuration has been stopped to prevent an unusable VM state.": "Настройка остановлена, чтобы не допустить перехода виртуальной машины в неработоспособное состояние.", + "Configuration has been stopped to prevent leaving the VM in an unusable state.": "Настройка остановлена, чтобы не оставить виртуальную машину в неработоспособном состоянии.", + "Configuration in JSON on one line (optional)": "Конфигурация в формате JSON в одну строку (необязательно)", + "Configuration name:": "Название конфигурации:", + "Configuration saved": "Конфигурация сохранена", + "Configuration sections that will be REMOVED": "Разделы конфигурации, которые будут УДАЛЕНЫ", + "Configuration size in GB": "Размер конфигурации в ГБ", + "Configuration to be Removed": "Конфигурация, подлежащая удалению", + "Configuration will continue now and be effective after reboot.": "Настройка будет продолжена сейчас; изменения вступят в силу после перезагрузки.", + "Configuration:": "Конфигурация:", + "Configure": "Настроить", + "Configure GPU passthrough with VFIO": "Настроить проброс GPU с помощью VFIO", + "Configure LXC Mount Points (Host ↔ Container)": "Настроить точки монтирования LXC (Хост ↔ Контейнер)", + "Configure LXC mount points": "Настроить точки монтирования LXC", + "Configure Mount Point inside LXC": "Настроить точку монтирования внутри LXC", + "Configure NFS Client in LXC (only privileged)": "Настроить клиент NFS в LXC (только для привилегированных контейнеров)", + "Configure NFS Server in LXC (only privileged)": "Настроить сервер NFS в LXC (только для привилегированных контейнеров)", + "Configure Proxmox APT repositories": "Настроить репозитории APT Proxmox", + "Configure Samba Client in LXC (only privileged)": "Настроить клиент Samba в LXC (только для привилегированных контейнеров)", + "Configure Samba Server in LXC (only privileged)": "Настроить сервер Samba в LXC (только для привилегированных контейнеров)", + "Configure and install an application": "Настроить и установить приложение", + "Configure as guest (no authentication)": "Настроить гостевой доступ (без аутентификации)", + "Configure backup destinations": "Настроить места хранения резервных копий", + "Configure backup destinations (PBS, Borg, local)": "Настроить места хранения резервных копий (PBS, Borg, локальное хранилище)", + "Configure the Google Coral APT repository": "Настроить репозиторий APT Google Coral", + "Configure the optional variable": "Настроить необязательную переменную", + "Configure the remote in the Rclone Web UI first. Checking its name may start a stopped CT, even in a dry run. Applying the mount restarts the CT and attempts to publish two FUSE views on the host; a dry run does not publish them.": "Сначала настройте удалённый ресурс в веб-интерфейсе Rclone. Проверка его имени может запустить остановленный контейнер (CT), даже при пробном запуске. Применение настроек монтирования перезапускает контейнер и выполняет попытку предоставить на хосте два представления FUSE; при пробном запуске они не предоставляются.", + "Configure with username and password": "Настроить доступ с именем пользователя и паролем", + "Configured Ports": "Настроенные порты", + "Configured VM description": "Описание виртуальной машины настроено", + "Configured but doesn't exist": "Настроено, но не существует", + "Configured controller/NVMe as hostpci%s: %s": "Контроллер/NVMe настроен как hostpci%s: %s", + "Configured during installation": "Настроено во время установки", + "Configured import disk %s as %s": "Импортируемый диск %s настроен как %s", + "Configured loader disk as ide0": "Загрузочный диск настроен как ide0", + "Configured username": "Настроенное имя пользователя", + "Configured virtual disk as %s, %sGB on %s": "Виртуальный диск настроен как %s, %sGB на %s", + "Configuring AMD GPU passthrough...": "Настройка проброса AMD GPU...", + "Configuring AMD softdep...": "Настройка softdep для AMD...", + "Configuring APT to skip downloading additional languages": "Настройка APT для пропуска загрузки дополнительных языков", + "Configuring APT to skip downloading additional languages...": "Настройка APT для пропуска загрузки дополнительных языков...", + "Configuring APT to use IPv4...": "Настройка APT для использования IPv4...", + "Configuring Ceph repository for PVE": "Настройка репозитория Ceph для PVE", + "Configuring Coral USB support...": "Настройка поддержки USB для Coral...", + "Configuring EFI disk": "Настройка диска EFI", + "Configuring I/O priority for vzdump...": "Настройка приоритета ввода-вывода для vzdump...", + "Configuring Intel iGPU passthrough...": "Настройка проброса Intel iGPU...", + "Configuring MOTD (Message of the Day) banner...": "Настройка баннера MOTD (сообщения дня)...", + "Configuring NVIDIA GPU passthrough...": "Настройка проброса GPU NVIDIA...", + "Configuring NVIDIA KVM hiding...": "Настройка скрытия KVM от NVIDIA...", + "Configuring NVIDIA modules...": "Настройка модулей NVIDIA...", + "Configuring PAM limits...": "Настройка ограничений PAM...", + "Configuring ProxMenux Monitor filter...": "Настройка фильтра ProxMenux Monitor...", + "Configuring ProxMenux Monitor jail...": "Настройка jail для ProxMenux Monitor...", + "Configuring Proxmox APT repositories...": "Настройка репозиториев APT Proxmox...", + "Configuring Proxmox filter...": "Настройка фильтра Proxmox...", + "Configuring Proxmox jail...": "Настройка jail для Proxmox...", + "Configuring Serial Port:": "Настройка последовательного порта:", + "Configuring TCP optimizations...": "Настройка оптимизаций TCP...", + "Configuring TPM device": "Настройка устройства TPM", + "Configuring Unpackerr...": "Настройка Unpackerr...", + "Configuring VFIO modules...": "Настройка модулей VFIO...", + "Configuring VM": "Настройка ВМ", + "Configuring bandwidth limit for vzdump...": "Настройка ограничения пропускной способности для vzdump...", + "Configuring boot order...": "Настройка порядка загрузки...", + "Configuring disk as": "Настройка диска как", + "Configuring global Fail2Ban settings and SSH jail...": "Настройка глобальных параметров Fail2Ban и jail для SSH...", + "Configuring host for GPU -> VM mode...": "Настройка хоста для режима GPU -> VM...", + "Configuring journald...": "Настройка journald...", + "Configuring kernel max Key limit...": "Настройка максимального количества ключей ядра...", + "Configuring kernel panic behavior": "Настройка поведения при панике ядра", + "Configuring kernel swappiness...": "Настройка параметра swappiness ядра...", + "Configuring kexec for quick reboots...": "Настройка kexec для быстрой перезагрузки...", + "Configuring max FD limit / ulimit...": "Настройка максимального количества файловых дескрипторов / ulimit...", + "Configuring max user watches...": "Настройка максимального количества объектов наблюдения на пользователя...", + "Configuring pigz as a faster replacement for gzip...": "Настройка pigz как более быстрой замены gzip...", + "Configuring qBittorrent...": "Настройка qBittorrent...", + "Configuring snapshot schedules...": "Настройка расписаний создания снимков...", + "Configuring system time settings...": "Настройка параметров системного времени...", + "Configuring the Radarr root folder...": "Настройка корневой папки Radarr...", + "Configuring the Sonarr root folder...": "Настройка корневой папки Sonarr...", + "Configuring vfio-pci binding...": "Настройка привязки к vfio-pci...", + "Confirm Borg passphrase": "Подтвердите парольную фразу Borg", + "Confirm Borg passphrase:": "Подтвердите парольную фразу Borg:", + "Confirm Controller + NVMe Assignment": "Подтвердите назначение контроллера и NVMe", + "Confirm Delete": "Подтвердите удаление", + "Confirm Deletion": "Подтвердить удаление", + "Confirm Format": "Подтвердить форматирование", + "Confirm GPU Switch Mode": "Подтвердить режим переключения GPU", + "Confirm Import": "Подтвердить импорт", + "Confirm Mount": "Подтвердить монтирование", + "Confirm Mount Point Removal": "Подтвердить удаление точки монтирования", + "Confirm Password": "Подтвердить пароль", + "Confirm Remove": "Подтвердить удаление", + "Confirm Restore": "Подтвердить восстановление", + "Confirm Uninstallation": "Подтвердить удаление программы", + "Confirm Unmount": "Подтвердить размонтирование", + "Confirm complete restore": "Подтвердить полное восстановление", + "Confirm custom restore": "Подтвердить выборочное восстановление", + "Confirm delete": "Подтвердить удаление", + "Confirm export": "Подтвердить экспорт", + "Confirm password for": "Подтвердите пароль для", + "Confirm recovery passphrase:": "Подтвердите парольную фразу для восстановления:", + "Confirm that host data is not reverted": "Подтвердите, что данные хоста не откатываются к предыдущему состоянию", + "Confirm the keyfile passphrase:": "Подтвердите парольную фразу файла ключа:", + "Confirm the mount path is visible.": "Убедитесь, что путь монтирования виден.", + "Confirm the password:": "Подтвердите пароль:", + "Confirmation": "Подтверждение", + "Confirmation Failed": "Не удалось выполнить подтверждение", + "Conflicting ZFS ARC settings backed up and reconciled:": "Конфликтующие настройки ZFS ARC сохранены в резервной копии и согласованы:", + "Conflicting ZFS ARC settings detected in:": "Обнаружены конфликтующие настройки ARC ZFS в:", + "Conflicting drivers blacklisted successfully.": "Конфликтующие драйверы успешно добавлены в чёрный список.", + "Conflicting path included in backup:": "Конфликтующий путь включён в резервную копию:", + "Conflicting utilities removed": "Конфликтующие утилиты удалены", + "Connect Zigbee devices to MQTT with a browser-based setup interface.": "Подключайте устройства Zigbee к MQTT с помощью интерфейса настройки в браузере.", + "Connect a Coral Accelerator and try again.": "Подключите ускоритель Coral и повторите попытку.", + "Connect a remote USB device": "Подключить удалённое USB-устройство", + "Connect it, or remove it from the container in Proxmox (Resources), and run the recovery again.": "Подключите его или удалите из контейнера в Proxmox (раздел «Ресурсы») и запустите восстановление повторно.", + "Connect your devices and users together in your own secure virtual private network.": "Объедините свои устройства и пользователей в собственной защищённой виртуальной частной сети.", + "Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.": "Объедините свои устройства в защищённую оверлейную сеть на основе WireGuard® с SSO, MFA и детальным управлением доступом.", + "Connected": "Подключено", + "Connecting Radarr to qBittorrent...": "Подключение Radarr к qBittorrent...", + "Connecting Sonarr to qBittorrent...": "Подключение Sonarr к qBittorrent...", + "Connecting to PBS and starting backup...": "Подключение к PBS и запуск резервного копирования...", + "Connection Details:": "Сведения о подключении:", + "Connection Error": "Ошибка подключения", + "Connection details:": "Сведения о подключении:", + "Connectivity Test": "Проверка подключения", + "Connectivity Test Results": "Результаты проверки подключения", + "Consider adding RAM or reducing the host workload if ZFS performance is insufficient.": "Если производительность ZFS недостаточна, рассмотрите возможность увеличения объёма оперативной памяти или снижения нагрузки на хост.", + "Consider adding physical interface": "Рассмотрите возможность добавления физического интерфейса", + "Consider removing its configuration": "Рассмотрите возможность удаления его конфигурации", + "Consider security implications for production environments": "Учитывайте последствия для безопасности в производственных средах", + "Consider visiting the repository and supporting the project.": "Посетите репозиторий и рассмотрите возможность поддержать проект.", + "Console log:": "Журнал консоли:", + "Consume/export": "Использование/экспорт", + "Container": "Контейнер", + "Container — LXC root directories": "Контейнер — корневые каталоги LXC", + "Container ID": "ID контейнера", + "Container ID not defined. Make sure to select a container first.": "ID контейнера не определён. Сначала выберите контейнер.", + "Container Mount Point": "Точка монтирования контейнера", + "Container OS:": "ОС контейнера:", + "Container Path": "Путь в контейнере", + "Container Path:": "Путь в контейнере:", + "Container Status": "Состояние контейнера", + "Container checked": "Контейнер проверен", + "Container configuration not found": "Конфигурация контейнера не найдена", + "Container configured (not started):": "Контейнер настроен (не запущен):", + "Container converted to privileged": "Контейнер преобразован в привилегированный", + "Container created:": "Контейнер создан:", + "Container data targeted for deletion:": "Данные контейнера, подлежащие удалению:", + "Container did not become ready in time. Skipping driver installation.": "Контейнер не был готов к работе за отведённое время. Установка драйвера пропускается.", + "Container did not start in time.": "Контейнер не запустился за отведённое время.", + "Container distro": "Дистрибутив контейнера", + "Container does not have apt-get available. Coral driver installation only supports Debian/Ubuntu containers.": "В контейнере недоступен apt-get. Установка драйвера Coral поддерживается только в контейнерах Debian/Ubuntu.", + "Container installed, but without a verifiable record for future updates.": "Контейнер установлен, но проверяемая запись для будущих обновлений отсутствует.", + "Container is already stopped.": "Контейнер уже остановлен.", + "Container is running. Restart to apply changes?": "Контейнер работает. Перезапустить его для применения изменений?", + "Container is stopped. Start it now to verify the mount works?": "Контейнер остановлен. Запустить его сейчас, чтобы проверить, работает ли монтирование?", + "Container kept with its data; the installation was not validated:": "Контейнер сохранён вместе с данными; установка не была проверена:", + "Container mount point:": "Точка монтирования в контейнере:", + "Container must be stopped before conversion": "Перед преобразованием необходимо остановить контейнер", + "Container prepared for the stack:": "Контейнер подготовлен для стека:", + "Container recreated": "Контейнер создан заново", + "Container removed:": "Контейнер удалён:", + "Container restarted successfully": "Контейнер успешно перезапущен", + "Container running steadily": "Контейнер работает стабильно", + "Container started": "Контейнер запущен", + "Container started successfully": "Контейнер успешно запущен", + "Container started successfully.": "Контейнер успешно запущен.", + "Container started.": "Контейнер запущен.", + "Container stopped": "Контейнер остановлен", + "Container stopped.": "Контейнер остановлен.", + "Container successfully converted to privileged.": "Контейнер успешно преобразован в привилегированный.", + "Container template— LXC templates": "Шаблон контейнера — шаблоны LXC", + "Container to change": "Контейнер для изменения", + "Container volume": "Том контейнера", + "Container volume (included in backups)": "Том контейнера (включается в резервные копии)", + "Container will pick up the mount on next start": "Монтирование будет применено при следующем запуске контейнера", + "Container with ID": "Контейнер с ID", + "Container:": "Контейнер:", + "Containers & Docker": "Контейнеры и Docker", + "Containers created from an OCI image are not listed.": "Контейнеры, созданные из образа OCI, не отображаются в списке.", + "Containers created from an OCI image are not listed: their devices are changed in OCI manager Apps.": "Контейнеры, созданные из образа OCI, не отображаются в списке: их устройства изменяются в разделе Apps менеджера OCI.", + "Containers created from an OCI image are not listed: their paths are changed in OCI manager Apps.": "Контейнеры, созданные из образа OCI, не отображаются в списке: их пути изменяются в разделе Apps менеджера OCI.", + "Containers of the application:": "Контейнеры приложения:", + "Containers returned to their previous state": "Контейнеры возвращены в предыдущее состояние", + "Containers targeted for removal:": "Контейнеры, выбранные для удаления:", + "Containers that are removed:": "Удаляемые контейнеры:", + "Containers that will be created (one LXC per service, on a private network):": "Контейнеры, которые будут созданы (по одному LXC на каждый сервис, в частной сети):", + "Containers that will receive this device": "Контейнеры, которым будет предоставлен доступ к этому устройству", + "Containers that will receive this path": "Контейнеры, которым будет предоставлен доступ по этому пути", + "Containers:": "Контейнеры:", + "Contains files": "Содержит файлы", + "Contains:": "Содержит:", + "Content Types": "Типы содержимого", + "Content Types:": "Типы содержимого:", + "Content collaboration platform": "Платформа для совместной работы с содержимым", + "Content is usually images for VM block devices.": "Содержимое обычно представляет собой образы блочных устройств виртуальных машин.", + "Content type is fixed to:": "Тип содержимого фиксирован:", + "Content:": "Содержимое:", + "Continue": "Продолжить", + "Continue anyway?": "Всё равно продолжить?", + "Continue despite failures?": "Продолжить, несмотря на сбои?", + "Continue the VM wizard and reboot the host at the end.": "Продолжите работу с мастером настройки виртуальной машины и по завершении перезагрузите хост.", + "Continue the Windows installation as usual.": "Продолжите установку Windows как обычно.", + "Continue with Coral TPU configuration only?": "Продолжить только настройку Coral TPU?", + "Continue with live apply now? SSH may disconnect immediately.": "Продолжить применение изменений без перезагрузки сейчас? Соединение SSH может немедленно разорваться.", + "Continue with the experimental HAOS One profile?": "Продолжить с экспериментальным профилем HAOS One?", + "Continue with the import?": "Продолжить импорт?", + "Continue: Proceed with conversion": "Продолжить: перейти к преобразованию", + "Continue?": "Продолжить?", + "Continuing with your selection.": "Продолжаем с учётом вашего выбора.", + "Continuous profiling server.": "Сервер непрерывного профилирования.", + "Contradictory tmpfs options": "Противоречивые параметры tmpfs", + "Controller": "Контроллер", + "Controller + NVMe": "Контроллер + NVMe", + "Controller + NVMe assignment will be written now and become active after host reboot.": "Назначение контроллера + NVMe будет сохранено сейчас и вступит в силу после перезагрузки хоста.", + "Controller + NVMe passthrough requires machine type q35. Skipping controller assignment.": "Для проброса контроллера + NVMe требуется тип машины q35. Назначение контроллера пропускается.", + "Controller path on the Proxmox host; prefer /dev/serial/by-id/...": "Путь к контроллеру на хосте Proxmox; предпочтительно использовать /dev/serial/by-id/...", + "Controller/NVMe Conflict Policy": "Политика разрешения конфликтов контроллера/NVMe", + "Controller/NVMe already present in VM config": "Контроллер/NVMe уже присутствует в конфигурации ВМ", + "Controller/NVMe already present in VM config (%s)": "Контроллер/NVMe уже присутствует в конфигурации ВМ (%s)", + "Controller/NVMe assigned": "Контроллер/NVMe назначен", + "Controller/NVMe is in use by running VM": "Контроллер/NVMe используется работающей ВМ", + "Controller/NVMe passthrough requires IOMMU enabled in BIOS/UEFI and kernel.": "Для проброса контроллера/NVMe необходимо включить IOMMU в BIOS/UEFI и в ядре.", + "Controller/NVMe passthrough requires machine type q35.": "Для проброса контроллера/NVMe требуется тип машины q35.", + "Controller/NVMe passthrough to VMs requires IOMMU enabled in BIOS/UEFI and kernel.": "Для проброса контроллера/NVMe в ВМ необходимо включить IOMMU в BIOS/UEFI и в ядре.", + "Controller/NVMe passthrough to VMs requires IOMMU to be enabled in the kernel.": "Для проброса контроллера/NVMe в ВМ необходимо включить IOMMU в ядре.", + "Controller/NVMe passthrough — compatibility notice": "Проброс контроллера/NVMe — уведомление о совместимости", + "Controller/NVMe removed from source VM": "Контроллер/NVMe удалён из исходной ВМ", + "Controllers + NVMe": "Контроллеры + NVMe", + "Controllers + NVMe Selected:": "Выбрано контроллеров + NVMe:", + "Convert Privileged to Unprivileged": "Преобразовать привилегированный контейнер в непривилегированный", + "Convert Unprivileged to Privileged": "Преобразовать непривилегированный контейнер в привилегированный", + "Convert directory ownership:": "Изменить владельцев каталогов:", + "Convert disk image format": "Преобразовать формат образа диска", + "Convert disk image format using QEMU-IMG": "Преобразовать формат образа диска с помощью QEMU-IMG", + "Convert file ownership (this takes time):": "Изменить владельцев файлов (это займёт время):", + "Converted + verified:": "Преобразовано и проверено:", + "Converted container ID:": "ID преобразованного контейнера:", + "Converting container to privileged...": "Преобразование контейнера в привилегированный...", + "Converting disk": "Преобразование диска", + "Converting file ownership (this may take several minutes)...": "Изменение владельцев файлов (это может занять несколько минут)...", + "Converting image using command:": "Преобразование образа с помощью команды:", + "Converting the container to privileged...": "Преобразование контейнера в привилегированный...", + "Converts to deb822; keeps .list backups as .bak": "Преобразует в deb822; сохраняет резервные копии файлов .list с расширением .bak", + "CookTrace": "CookTrace", + "Coordinated backups require zstd": "Для согласованного резервного копирования требуется zstd", + "Cops by Sébastien Lucas, now maintained by MikesPub, stands for Calibre OPDS (and HTML) Php Server.": "Cops, созданный Sébastien Lucas и ныне поддерживаемый MikesPub, расшифровывается как Calibre OPDS (and HTML) Php Server.", + "Copy a peer configuration to the host with: pct pull /config/peer1/peer1.conf peer1.conf": "Скопируйте конфигурацию узла на хост с помощью команды: pct pull /config/peer1/peer1.conf peer1.conf", + "Copy failed": "Не удалось скопировать", + "Copy that file offsite yourself, or download it from the Monitor.": "Самостоятельно скопируйте этот файл за пределы площадки или скачайте его из Monitor.", + "Copy the correct keyfile to this host and rerun Restore — or pick an unencrypted backup.": "Скопируйте правильный файл ключа на этот хост и повторите восстановление — либо выберите незашифрованную резервную копию.", + "Copy the keyfile to a path for offsite backup": "Скопировать файл ключа по указанному пути для резервного копирования за пределы площадки", + "Copy your PBS keyfile onto this host first (via scp, USB, sftp, etc.) and enter its absolute path below. The file will be copied to": "Сначала скопируйте файл ключа PBS на этот хост (через scp, USB, sftp и т. п.) и введите ниже абсолютный путь к нему. Файл будет скопирован в", + "Copy your existing PBS keyfile onto this host first (via scp, USB, sftp, etc.) and enter its absolute path below. The file will be copied to": "Сначала скопируйте существующий файл ключа PBS на этот хост (через scp, USB, sftp и т. п.) и введите ниже абсолютный путь к нему. Файл будет скопирован в", + "Copying installer to container": "Копирование установщика в контейнер", + "Copying sources to": "Копирование исходных файлов в", + "Coral APT repository ready.": "Репозиторий APT для Coral готов.", + "Coral Actions": "Действия с Coral", + "Coral M.2 / PCIe detected — installing gasket and apex kernel modules...": "Обнаружен Coral M.2 / PCIe — установка модулей ядра gasket и apex...", + "Coral M.2 Apex configuration added - device ready": "Конфигурация Coral M.2 Apex добавлена — устройство готово", + "Coral M.2 Apex configuration added - device will be available after reboot": "Конфигурация Coral M.2 Apex добавлена — устройство будет доступно после перезагрузки", + "Coral M.2 Apex detected, configuring...": "Обнаружен Coral M.2 Apex, выполняется настройка...", + "Coral PCIe/M.2": "Coral PCIe/M.2", + "Coral PCIe/M.2 device node": "Узел устройства Coral PCIe/M.2", + "Coral PCIe/M.2 node (e.g. /dev/apex_0)": "Узел устройства Coral PCIe/M.2 (например, /dev/apex_0)", + "Coral TPU Installation": "Установка Coral TPU", + "Coral TPU Uninstall": "Удаление Coral TPU", + "Coral TPU device nodes detected with correct group (apex).": "Обнаружены узлы устройств Coral TPU с правильной группой (apex).", + "Coral TPU driver installed successfully inside the container.": "Драйвер Coral TPU успешно установлен в контейнере.", + "Coral TPU drivers installed and loaded successfully.": "Драйверы Coral TPU успешно установлены и загружены.", + "Coral TPU is already installed on this host:": "Coral TPU уже установлен на этом хосте:", + "Coral TPU is already installed:": "Coral TPU уже установлен:", + "Coral USB Accelerator detected — installing Edge TPU runtime...": "Обнаружен Coral USB Accelerator — установка среды выполнения Edge TPU...", + "Coral USB configuration added - device detected": "Конфигурация Coral USB добавлена — устройство обнаружено", + "Coral USB configured but device not currently connected": "Coral USB настроен, но устройство сейчас не подключено", + "Coral USB runtime installed. No reboot required.": "Среда выполнения Coral USB установлена. Перезагрузка не требуется.", + "Coral hardware configuration completed for container": "Настройка оборудования Coral завершена для контейнера", + "Coral is only offered for Frigate and CodeProject.AI": "Coral предлагается только для Frigate и CodeProject.AI", + "Coral kernel modules unloaded.": "Модули ядра Coral выгружены.", + "Coral packages purged.": "Пакеты Coral удалены вместе с файлами конфигурации.", + "Coral uninstallation completed.": "Удаление Coral завершено.", + "Core Proxmox packages reinstalled successfully": "Основные пакеты Proxmox успешно переустановлены", + "Core is running, but not responding over HTTP on 80/8123": "Core работает, но не отвечает по HTTP на портах 80/8123", + "Core is still on the initial installation page": "Core всё ещё находится на странице первоначальной установки", + "Core packages": "Основные пакеты", + "Cores": "Ядра", + "Corrupted gzip layer": "Повреждённый слой gzip", + "CouchDB administrator": "Администратор CouchDB", + "Could not activate dev-zram0.swap": "Не удалось активировать dev-zram0.swap", + "Could not add": "Не удалось добавить", + "Could not add disk": "Не удалось добавить диск", + "Could not add the confirmed host firewall rule": "Не удалось добавить подтверждённое правило межсетевого экрана хоста", + "Could not add the device to the container:": "Не удалось добавить устройство в контейнер:", + "Could not add the mount point:": "Не удалось добавить точку монтирования:", + "Could not apply the Compose extra hosts": "Не удалось применить дополнительные записи хостов из Compose", + "Could not apply the Compose supplementary groups": "Не удалось применить дополнительные группы из Compose", + "Could not apply the Jellyfin configuration:": "Не удалось применить конфигурацию Jellyfin:", + "Could not apply the installer profile": "Не удалось применить профиль установщика", + "Could not apply the pre-start repair:": "Не удалось выполнить исправление перед запуском:", + "Could not assign disk": "Не удалось назначить диск", + "Could not authorize the key via 'pct exec' on": "Не удалось авторизовать ключ через 'pct exec' на", + "Could not back up the existing auth.json": "Не удалось создать резервную копию существующего файла auth.json", + "Could not change VM virtual display to vga: std": "Не удалось изменить виртуальный дисплей ВМ на vga: std", + "Could not check the NVIDIA GPU": "Не удалось проверить графический процессор NVIDIA", + "Could not clone any gasket-driver repository. Check your internet connection and": "Не удалось клонировать ни один репозиторий gasket-driver. Проверьте подключение к интернету и", + "Could not complete or verify the repository switch; changes may be partial and repository state is unknown. Inspect {ui} before retrying; no automatic rollback was attempted.": "Не удалось завершить или проверить переключение репозитория; изменения могут быть частичными, а состояние репозитория неизвестно. Проверьте {ui} перед повторной попыткой; автоматический откат не выполнялся.", + "Could not complete private network release:": "Не удалось завершить освобождение частной сети:", + "Could not configure IOMMU kernel parameters automatically. Configure manually and reboot.": "Не удалось автоматически настроить параметры ядра для IOMMU. Настройте их вручную и перезагрузите систему.", + "Could not configure the tmpfs mounts": "Не удалось настроить монтирование tmpfs", + "Could not convert the OCI rootfs to privileged": "Не удалось преобразовать корневую файловую систему OCI для использования в привилегированном контейнере", + "Could not copy the PVE keyfile into place. Check permissions on:": "Не удалось скопировать файл ключа PVE в нужное место. Проверьте права доступа к:", + "Could not copy the keyfile into place.": "Не удалось скопировать файл ключа в нужное место.", + "Could not copy the keyfile into place. Check permissions on:": "Не удалось скопировать файл ключа в нужное место. Проверьте права доступа к:", + "Could not create ZRAM generator directory": "Не удалось создать каталог генератора ZRAM", + "Could not create a temporary directory for the NVIDIA Container Toolkit.": "Не удалось создать временный каталог для NVIDIA Container Toolkit.", + "Could not create converter directory:": "Не удалось создать каталог конвертера:", + "Could not create destination directory:": "Не удалось создать целевой каталог:", + "Could not create or access directory:": "Не удалось создать каталог или получить к нему доступ:", + "Could not create temporary directory:": "Не удалось создать временный каталог:", + "Could not create temporary working directory.": "Не удалось создать временный рабочий каталог.", + "Could not create the ProxMenux folder in /etc/pve": "Не удалось создать папку ProxMenux в /etc/pve", + "Could not create the container:": "Не удалось создать контейнер:", + "Could not create the initial administrator": "Не удалось создать начальную учётную запись администратора", + "Could not create the service:": "Не удалось создать службу:", + "Could not detect apex major number from /proc/devices. Load the apex module first: modprobe apex": "Не удалось определить старший номер устройства apex по данным /proc/devices. Сначала загрузите модуль apex: modprobe apex", + "Could not detect the CIFS mount for this directory. Try accessing it manually.": "Не удалось обнаружить точку монтирования CIFS для этого каталога. Попробуйте обратиться к нему вручную.", + "Could not determine a valid ISO storage directory.": "Не удалось определить допустимый каталог хранилища ISO.", + "Could not determine disk path for:": "Не удалось определить путь к диску для:", + "Could not determine filesystem signature types. Aborting.": "Не удалось определить типы сигнатур файловых систем. Операция прервана.", + "Could not determine the IOMMU group for the selected GPU.": "Не удалось определить группу IOMMU для выбранного GPU.", + "Could not download recovery blob from PBS.": "Не удалось скачать двоичный объект восстановления из PBS.", + "Could not download the NVIDIA Container Toolkit repository definition.": "Не удалось скачать файл описания репозитория NVIDIA Container Toolkit.", + "Could not download the NVIDIA Container Toolkit signing key.": "Не удалось скачать ключ подписи NVIDIA Container Toolkit.", + "Could not download the image": "Не удалось скачать образ", + "Could not download the installer.": "Не удалось скачать установщик.", + "Could not enable the privileged profile before the first start": "Не удалось включить привилегированный профиль перед первым запуском", + "Could not export ZFS pool": "Не удалось экспортировать пул ZFS", + "Could not extract from PBS.": "Не удалось извлечь данные из PBS.", + "Could not fetch keylase/nvidia-patch supported list — patch reapply compatibility is not verified.": "Не удалось получить список поддерживаемых версий keylase/nvidia-patch — совместимость для повторного применения патча не проверена.", + "Could not find a valid 'proxmox-ve' 9.x candidate after switching to no-subscription. Please verify your repository configuration and network, then retry.": "Не удалось найти подходящую версию пакета 'proxmox-ve' 9.x для установки после переключения на no-subscription. Проверьте настройки репозиториев и сетевое подключение, затем повторите попытку.", + "Could not find rootfs configuration for container.": "Не удалось найти конфигурацию rootfs для контейнера.", + "Could not format the disk.": "Не удалось отформатировать диск.", + "Could not fully zero": "Не удалось полностью обнулить", + "Could not identify the imported disk in VM config": "Не удалось определить импортированный диск в конфигурации ВМ", + "Could not inspect the image in its registry:": "Не удалось проверить образ в его реестре:", + "Could not install": "Не удалось установить", + "Could not install Git — Lynis cannot be cloned. Run 'apt-get install git' manually.": "Не удалось установить Git — невозможно клонировать Lynis. Выполните 'apt-get install git' вручную.", + "Could not install exFAT tools automatically.": "Не удалось автоматически установить инструменты exFAT.", + "Could not install sshpass automatically (no internet?). Falling back to manual paste mode — you'll see the line to copy onto the server next.": "Не удалось автоматически установить sshpass (нет доступа к интернету?). Переход в режим ручной вставки — далее появится строка, которую нужно скопировать на сервер.", + "Could not install systemd-zram-generator": "Не удалось установить systemd-zram-generator", + "Could not install the NVIDIA Container Toolkit signing key.": "Не удалось установить ключ подписи NVIDIA Container Toolkit.", + "Could not install the required packages:": "Не удалось установить необходимые пакеты:", + "Could not install the stack startup hook": "Не удалось установить хук запуска стека", + "Could not install vzdump hook in /etc/vzdump.conf": "Не удалось установить хук vzdump в /etc/vzdump.conf", + "Could not load shared functions. Script cannot continue.": "Не удалось загрузить общие функции. Продолжение работы скрипта невозможно.", + "Could not load the host kernel module:": "Не удалось загрузить модуль ядра хоста:", + "Could not locate imported disk in VM config.": "Не удалось найти импортированный диск в конфигурации ВМ.", + "Could not mount": "Не удалось смонтировать", + "Could not mount ISO on device": "Не удалось смонтировать ISO на устройстве", + "Could not mount the container filesystem:": "Не удалось смонтировать файловую систему контейнера:", + "Could not obtain an intact image after two attempts": "Не удалось получить неповреждённый образ после двух попыток", + "Could not parse OVF file, or no disk image references found.": "Не удалось разобрать файл OVF, либо ссылки на образы дисков не найдены.", + "Could not prepare canonical installation inputs": "Не удалось подготовить канонические входные данные для установки", + "Could not prepare on-boot restore service. Nothing new was scheduled.": "Не удалось подготовить службу восстановления при загрузке. Новое восстановление не запланировано.", + "Could not prepare the NVIDIA driver links": "Не удалось подготовить ссылки для драйвера NVIDIA", + "Could not prepare the file bind mount target:": "Не удалось подготовить целевой путь для bind-монтирования файла:", + "Could not publish pending restore. Previous pending restore was kept.": "Не удалось опубликовать ожидающее восстановление. Предыдущее ожидающее восстановление сохранено.", + "Could not push the key. Check the password and that": "Не удалось передать ключ. Проверьте пароль и убедитесь, что", + "Could not query the image registry": "Не удалось выполнить запрос к реестру образов", + "Could not reach {registry}. Check its address, DNS and network access.": "Не удалось подключиться к {registry}. Проверьте адрес, DNS и доступ к сети.", + "Could not reach {url} after 3 attempts: {reason}": "Не удалось подключиться к {url} после 3 попыток: {reason}", + "Could not read SMART data from": "Не удалось прочитать данные SMART с", + "Could not read VM configuration.": "Не удалось прочитать конфигурацию ВМ.", + "Could not read the CUDA compute capability": "Не удалось прочитать значение вычислительной возможности CUDA", + "Could not read the NVIDIA driver version": "Не удалось прочитать версию драйвера NVIDIA", + "Could not read the host firewall rules": "Не удалось прочитать правила межсетевого экрана хоста", + "Could not read the image from {registry}. Check the reference and sign in from Registry accounts.": "Не удалось прочитать образ из {registry}. Проверьте ссылку на образ и выполните вход в разделе учётных записей реестров.", + "Could not read this job.": "Не удалось прочитать это задание.", + "Could not release ZRAM pages; existing profile remains active": "Не удалось освободить страницы ZRAM; текущий профиль остаётся активным", + "Could not remount automatically. Try manually or check credentials.": "Не удалось автоматически выполнить повторное монтирование. Попробуйте выполнить его вручную или проверьте учётные данные.", + "Could not remove VM automatically. Run manually:": "Не удалось автоматически удалить виртуальную машину. Выполните вручную:", + "Could not remove ZRAM profile; configuration was restored": "Не удалось удалить профиль ZRAM; конфигурация восстановлена", + "Could not remove ZRAM profile; configuration was restored but swap could not be restarted": "Не удалось удалить профиль ZRAM; конфигурация восстановлена, но перезапустить подкачку не удалось", + "Could not remove credentials for {registry}; saved file credentials were not changed.": "Не удалось удалить учётные данные для {registry}; учётные данные, сохранённые в файле, не изменены.", + "Could not remove previous DKMS tree at": "Не удалось удалить предыдущее дерево DKMS по пути", + "Could not reserve a private network for the stack": "Не удалось зарезервировать частную сеть для стека", + "Could not resolve the Compose user:": "Не удалось определить пользователя Compose:", + "Could not resolve the OCI manifest of the image:": "Не удалось определить манифест OCI образа:", + "Could not resolve the OCI manifest:": "Не удалось определить манифест OCI:", + "Could not restart ProxMenux Monitor service.": "Не удалось перезапустить службу ProxMenux Monitor.", + "Could not restart the service — start it manually with systemctl start": "Не удалось перезапустить службу — запустите её вручную командой systemctl start", + "Could not restore the container setting:": "Не удалось восстановить настройку контейнера:", + "Could not retrieve versions list from NVIDIA. Please check your internet connection.": "Не удалось получить список версий от NVIDIA. Проверьте подключение к интернету.", + "Could not reuse the persistent disk:": "Не удалось повторно использовать постоянный диск:", + "Could not run NVIDIA patch script. Please verify repository and driver version.": "Не удалось запустить скрипт исправления NVIDIA. Проверьте репозиторий и версию драйвера.", + "Could not set VM virtual display to vga: std": "Не удалось установить для виртуального дисплея виртуальной машины значение vga: std", + "Could not set boot order for": "Не удалось задать порядок загрузки для", + "Could not set the container entrypoint": "Не удалось задать точку входа контейнера", + "Could not sign in to {registry}. Check registry access and token permissions.": "Не удалось войти в {registry}. Проверьте доступ к реестру и права токена.", + "Could not stage pending restore path:": "Не удалось подготовить путь для отложенного восстановления:", + "Could not stage pending restore. Nothing new was scheduled.": "Не удалось подготовить отложенное восстановление. Новых операций не запланировано.", + "Could not stop LXC": "Не удалось остановить LXC", + "Could not stop ZRAM swap; profile configuration remains": "Не удалось отключить подкачку ZRAM; конфигурация профиля сохранена", + "Could not stop existing dev-zram0.swap": "Не удалось остановить существующий dev-zram0.swap", + "Could not translate the Compose command/entrypoint": "Не удалось преобразовать команду/точку входа Compose", + "Could not unload nouveau module (may be in use). The blacklist will take effect after reboot. Installation will continue but a reboot will be required.": "Не удалось выгрузить модуль nouveau (возможно, он используется). Запрет загрузки модуля вступит в силу после перезагрузки. Установка продолжится, но потребуется перезагрузка.", + "Could not unmount": "Не удалось размонтировать", + "Could not unmount the container filesystem": "Не удалось размонтировать файловую систему контейнера", + "Could not unmount the container filesystem:": "Не удалось размонтировать файловую систему контейнера:", + "Could not unmount — disk may be busy. Removing fstab entry anyway.": "Не удалось размонтировать — возможно, диск занят. Запись fstab всё равно будет удалена.", + "Could not update config file.": "Не удалось обновить файл конфигурации.", + "Could not verify removal of the managed host firewall rule.": "Не удалось подтвердить удаление управляемого правила межсетевого экрана хоста.", + "Could not write ZRAM generator configuration": "Не удалось записать конфигурацию генератора ZRAM", + "Could not write ZRAM package ownership state": "Не удалось записать сведения о принадлежности пакетов ZRAM", + "Could not write to:": "Не удалось выполнить запись в:", + "Crafty Controller default login": "Учётные данные по умолчанию для входа в Crafty Controller", + "Create Directory": "Создать каталог", + "Create GPT and one partition:": "Создать таблицу разделов GPT и один раздел:", + "Create GPT partition": "Создать раздел GPT", + "Create LXC server NFS": "Создать сервер NFS в LXC", + "Create Network Backup": "Создать сетевую резервную копию", + "Create Samba server service": "Создать службу сервера Samba", + "Create Samba user:": "Создать пользователя Samba:", + "Create Shared Directory": "Создать общий каталог", + "Create Shared Directory on Host": "Создать общий каталог на хосте", + "Create Universal NFS Export": "Создать универсальный экспорт NFS", + "Create VM System Linux": "Создать ВМ с Linux", + "Create VM System NAS": "Создать ВМ с системой NAS", + "Create VM System Others (based Linux)": "Создать ВМ с другой системой на базе Linux", + "Create VM System Windows": "Создать ВМ с Windows", + "Create VM System macOS (OSX-PROXMOX)": "Создать ВМ с macOS (OSX-PROXMOX)", + "Create VM from template or script": "Создать ВМ из шаблона или с помощью скрипта", + "Create a %s": "Создать %s", + "Create a VM first (machine type q35 + UEFI BIOS), then run this option again.": "Сначала создайте ВМ (тип машины q35 + BIOS UEFI), затем выберите этот пункт снова.", + "Create a backup of the container configuration:": "Создать резервную копию конфигурации контейнера:", + "Create a backup of your container before proceeding": "Создайте резервную копию контейнера, прежде чем продолжить", + "Create a fresh GPT + ext4 partition and mount it?": "Создать новый раздел ext4 с таблицей разделов GPT и смонтировать его?", + "Create a new dataset in a ZFS pool": "Создать новый набор данных в пуле ZFS", + "Create a new group for isolation": "Создать новую группу для изоляции", + "Create and edit Matroska files from a browser": "Создавайте и редактируйте файлы Matroska в браузере", + "Create and stream custom live TV channels from your media library.": "Создавайте собственные телеканалы из своей медиатеки и транслируйте их в прямом эфире.", + "Create credentials file (recommended):": "Создать файл учётных данных (рекомендуется):", + "Create directory": "Создать каталог", + "Create encrypted, deduplicated backups and restore files.": "Создавайте зашифрованные резервные копии с дедупликацией и восстанавливайте файлы.", + "Create export directory:": "Создать каталог экспорта:", + "Create mount point:": "Создать точку монтирования:", + "Create new directory in /mnt": "Создать новый каталог в /mnt", + "Create new folder in /mnt": "Создать новую папку в /mnt", + "Create one first in Datacenter → Backup, then return here to attach.": "Сначала создайте задание в Datacenter → Backup, затем вернитесь сюда, чтобы привязать его.", + "Create persistent network interface names?": "Создать постоянные имена сетевых интерфейсов?", + "Create scheduled backup job": "Создать задание резервного копирования по расписанию", + "Create share directory:": "Создать каталог общего ресурса:", + "Create shared directory:": "Создать общий каталог:", + "Create this LXC in privileged mode?": "Создать этот LXC в привилегированном режиме?", + "Create with create_user in the container console": "Создайте с помощью create_user в консоли контейнера", + "Create, send and sign documents with a self-hosted web app.": "Создавайте, отправляйте и подписывайте документы с помощью веб-приложения, размещённого на собственном сервере.", + "Created common remapped user": "Создан общий пользователь с переназначенным идентификатором", + "Created directory on host:": "Создан каталог на хосте:", + "Created during first-run setup": "Создано при первоначальной настройке", + "Created persistent names for": "Созданы постоянные имена для", + "Created remapped user": "Создан пользователь с переназначенным идентификатором", + "Created sharedfiles group (GID: 101000)": "Создана группа sharedfiles (GID: 101000)", + "Created with ProxMenuX": "Создано с помощью ProxMenuX", + "Creating APT configuration to force IPv4...": "Создание конфигурации APT для принудительного использования IPv4...", + "Creating Ceph repository for PVE 8 (legacy format)...": "Создание репозитория Ceph для PVE 8 (устаревший формат)...", + "Creating Ceph repository for PVE 9 (deb822 format)...": "Создание репозитория Ceph для PVE 9 (формат deb822)...", + "Creating Proxmox VE 9.x no-subscription repository...": "Создание репозитория no-subscription для Proxmox VE 9.x...", + "Creating Proxmox auth logger service...": "Создание службы журналирования аутентификации Proxmox...", + "Creating SSH auth logger service...": "Создание службы журналирования аутентификации SSH...", + "Creating UID remapping for unprivileged container compatibility...": "Создание переназначения UID для совместимости с непривилегированными контейнерами...", + "Creating VM with the above configuration": "Создание виртуальной машины с указанной выше конфигурацией", + "Creating VM...": "Создание виртуальной машины...", + "Creating a %s using the above advanced settings": "Создание %s с указанными выше расширенными настройками", + "Creating a %s using the above default settings": "Создание %s с указанными выше настройками по умолчанию", + "Creating a backup in": "Создание резервной копии в", + "Creating a backup of": "Создание резервной копии для", + "Creating a backup of the container...": "Создание резервной копии контейнера...", + "Creating backup job...": "Создание задания резервного копирования...", + "Creating backup of configuration file...": "Создание резервной копии файла конфигурации...", + "Creating backup of network interfaces configuration...": "Создание резервной копии конфигурации сетевых интерфейсов...", + "Creating compressed archive...": "Создание сжатого архива...", + "Creating export archive...": "Создание архива для экспорта...", + "Creating images directory": "Создание каталога образов", + "Creating local archive...": "Создание локального архива...", + "Creating mount point...": "Создание точки монтирования...", + "Creating partition table and partition...": "Создание таблицы разделов и раздела...", + "Creating partition...": "Создание раздела...", + "Creating pigz wrapper script...": "Создание скрипта-обёртки для pigz...", + "Creating the backup": "Создание резервной копии", + "Creating the container...": "Создание контейнера...", + "Creating the container: applying the image configuration...": "Создание контейнера: применение конфигурации образа...", + "Creating the container: extracting the image": "Создание контейнера: распаковка образа", + "Creating the container: preparing its disk...": "Создание контейнера: подготовка его диска...", + "Creating the container: reading the image...": "Создание контейнера: чтение образа...", + "Creating the initial administrator...": "Создание первоначального администратора...", + "Creating the private network...": "Создание частной сети...", + "Creating the temporary data container": "Создание временного контейнера данных", + "Creating virtual disk (format=raw) for %s...": "Создание виртуального диска (format=raw) для %s...", + "Creative & Design": "Творчество и дизайн", + "Credential helper": "Помощник для работы с учётными данными", + "Credential storage and access": "Хранение учётных данных и доступ к ним", + "Credentials are correct": "Учётные данные верны", + "Credentials cleared. jwt_secret and API tokens preserved.": "Учётные данные очищены. jwt_secret и токены API сохранены.", + "Credentials file created securely.": "Файл учётных данных создан с соблюдением мер безопасности.", + "Credentials file removed.": "Файл учётных данных удалён.", + "Credentials file:": "Файл учётных данных:", + "Credentials file:\n{path}\n\nOwned by root; directory mode 700 and file mode 600.\nBasic credentials are base64 encoded, not encrypted.\nCredential helpers use their own storage.\n\nUse an access token with permission to pull images.\nConfigure credentials on each node that downloads images.": "Файл учётных данных:\n{path}\n\nВладелец — root; права каталога 700, права файла 600.\nБазовые учётные данные закодированы в base64, а не зашифрованы.\nПомощники учётных данных используют собственное хранилище.\n\nИспользуйте токен доступа с правом загрузки образов.\nНастройте учётные данные на каждом узле, который загружает образы.", + "Credentials file:\n{path}\n\nOwned by root; directory mode 700 and file mode 600.\nBasic credentials are base64 encoded, not encrypted.\nCredential helpers use their own storage.\n\nUse an access token with permission to pull images.\nEvery node of the cluster uses the accounts saved here.": "Файл учётных данных:\n{path}\n\nВладелец — root; права доступа к каталогу — 700, к файлу — 600.\nУчётные данные базовой аутентификации закодированы в base64, а не зашифрованы.\nПомощники для работы с учётными данными используют собственные хранилища.\n\nИспользуйте токен доступа с разрешением на загрузку образов.\nКаждый узел кластера использует сохранённые здесь учётные записи.", + "Credentials validated successfully": "Учётные данные успешно проверены", + "Cross-host restore: guest IDs in backup overlap live IDs on target:": "Восстановление на другом хосте: идентификаторы гостевых систем в резервной копии совпадают с идентификаторами существующих гостевых систем на целевом хосте:", + "Cross-kernel restore — kernel-tied paths merged, not copied": "Восстановление с другой версией ядра — пути, привязанные к ядру, объединяются, а не копируются", + "Cross-kernel — paths hidden from picker": "Разные версии ядра — пути скрыты в списке выбора", + "Cross-platform file sharing made easy.": "Простой обмен файлами между платформами.", + "Cross-platform monitoring tool.": "Кроссплатформенный инструмент мониторинга.", + "Cross-version detected — safe restore mode": "Обнаружено различие версий — безопасный режим восстановления", + "CrossWatch": "CrossWatch", + "Current": "Текущий", + "Current CIFS mounts:": "Текущие подключения CIFS:", + "Current Configuration": "Текущая конфигурация", + "Current LXC Mount Points": "Текущие точки монтирования LXC", + "Current NFS Mounts": "Текущие подключения NFS", + "Current NFS client script supports privileged LXC only.": "Текущий скрипт клиента NFS поддерживает только привилегированные контейнеры LXC.", + "Current NFS exports in CT": "Текущие экспорты NFS в CT", + "Current NFS mounts:": "Текущие подключения NFS:", + "Current NVIDIA inventory resolved: a refresh is required": "Текущий состав устройств NVIDIA определён: требуется обновление данных", + "Current NVIDIA inventory resolved: no refresh is required": "Текущий состав устройств NVIDIA определён: обновление данных не требуется", + "Current Network Configuration": "Текущая конфигурация сети", + "Current PBS Version": "Текущая версия PBS", + "Current PVE Version": "Текущая версия PVE", + "Current ProxMenux host scripts register remote shares as Proxmox storages using pvesm.": "Текущие скрипты ProxMenux для хоста регистрируют удалённые общие ресурсы как хранилища Proxmox с помощью pvesm.", + "Current ProxMenux version:": "Текущая версия ProxMenux:", + "Current Samba Mounts": "Текущие подключения Samba", + "Current Samba client script supports privileged LXC only.": "Текущий скрипт клиента Samba поддерживает только привилегированные контейнеры LXC.", + "Current Samba shares in CT": "Текущие общие ресурсы Samba в CT", + "Current channel:": "Текущий канал:", + "Current directory only": "Только текущий каталог", + "Current driver": "Текущий драйвер", + "Current effective ZFS ARC maximum:": "Текущий действующий максимальный размер ARC ZFS:", + "Current free space:": "Текущий объём свободного места:", + "Current language:": "Текущий язык:", + "Current mode": "Текущий режим", + "Current mount options:": "Текущие параметры монтирования:", + "Current permissions:": "Текущие права доступа:", + "Current power state: D3cold (device currently inaccessible)": "Текущее состояние питания: D3cold (устройство сейчас недоступно)", + "Current script uses native bind mounts with pct set -mpX.": "Текущий скрипт использует штатные bind-монтирования с помощью pct set -mpX.", + "Current selection:": "Текущий выбор:", + "Current status:": "Текущий статус:", + "Current user": "Текущий пользователь", + "Current user UID, GID and groups": "UID, GID и группы текущего пользователя", + "Current version:": "Текущая версия:", + "Currently": "Сейчас", + "Currently Mounted:": "Сейчас смонтировано:", + "Currently configured target:": "Текущая настроенная цель:", + "Currently mounted:": "Сейчас смонтировано:", + "Custom": "Пользовательский", + "Custom (type it myself)": "Пользовательский (ввести вручную)", + "Custom Configuration": "Пользовательская конфигурация", + "Custom Content": "Пользовательское содержимое", + "Custom Directory": "Пользовательский каталог", + "Custom Image": "Пользовательский образ", + "Custom Loader Image (from %s)": "Пользовательский образ загрузчика (из %s)", + "Custom Logo Instructions": "Инструкции по настройке пользовательского логотипа", + "Custom MOTD message is already configured": "Пользовательское сообщение MOTD уже настроено", + "Custom Options": "Пользовательские параметры", + "Custom Path": "Пользовательский путь", + "Custom Schedule": "Пользовательское расписание", + "Custom backup paths": "Пользовательские пути для резервного копирования", + "Custom backup profile": "Пользовательский профиль резервного копирования", + "Custom backup to Borg": "Пользовательское резервное копирование в Borg", + "Custom backup to PBS": "Пользовательское резервное копирование в PBS", + "Custom backup to local archive": "Пользовательское резервное копирование в локальный архив", + "Custom local directory": "Пользовательский локальный каталог", + "Custom message added to MOTD": "Пользовательское сообщение добавлено в MOTD", + "Custom options": "Пользовательские параметры", + "Custom path": "Пользовательский путь", + "Custom path cancelled": "Указание пользовательского пути отменено", + "Custom path...": "Пользовательский путь...", + "Custom paths are included in BOTH default and custom backup profiles.": "Пользовательские пути включаются в ОБА профиля резервного копирования: стандартный и пользовательский.", + "Custom paths currently saved: {count}.": "Количество сохранённых пользовательских путей: {count}.", + "Custom restore by components": "Выборочное восстановление по компонентам", + "Custom restore by paths": "Выборочное восстановление по путям", + "Custom scripts and ProxMenux files": "Пользовательские скрипты и файлы ProxMenux", + "Custom selection": "Пользовательский выбор", + "Custom systemd units": "Пользовательские юниты systemd", + "Customizable post-installation script": "Настраиваемый скрипт послеустановочной настройки", + "Customization": "Настройка", + "Customize bashrc": "Настроить bashrc", + "Customizing bashrc for root user...": "Настройка bashrc для пользователя root...", + "DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.": "DB Browser for SQLite — высококачественный визуальный инструмент с открытым исходным кодом для создания, проектирования и редактирования файлов баз данных, совместимых с SQLite.", + "DHCP (automatic)": "DHCP (автоматически)", + "DISABLED unless you enable it": "ОТКЛЮЧЕНО, пока вы не включите", + "DKMS add failed. Check": "Не удалось выполнить добавление в DKMS. Проверьте", + "DKMS build failed.": "Сборка DKMS завершилась ошибкой.", + "DKMS build failed. Last lines of make.log:": "Сборка DKMS завершилась ошибкой. Последние строки make.log:", + "DKMS driver rebuild": "Повторная сборка драйверов DKMS", + "DKMS drivers rebuilt for kernel": "Драйверы DKMS пересобраны для ядра", + "DKMS drivers reinstalled for kernel": "Драйверы DKMS переустановлены для ядра", + "DKMS install failed.": "Установка DKMS завершилась ошибкой.", + "DKMS module registered.": "Модуль DKMS зарегистрирован.", + "DKMS registrations removed.": "Регистрации в DKMS удалены.", + "DNS Resolution": "Разрешение DNS-имён", + "DNS lookup for a domain": "DNS-запрос для домена", + "DNS plugin used with dns validation (cloudflare, duckdns, ovh...)": "DNS-плагин для проверки через DNS (cloudflare, duckdns, ovh...)", + "DNS server written in the client configurations": "DNS-сервер, указываемый в конфигурациях клиентов", + "DNS server written in the peer configurations (auto or an IP address)": "DNS-сервер, указываемый в конфигурациях пиров (auto или IP-адрес)", + "DOGWALK is Blender Studio's long awaited second game project, focused on creating a bite-sized interactive storytelling playground. Play as a big adorable dog and explore the winter woods with a little kid.": "DOGWALK — долгожданный второй игровой проект Blender Studio, задуманный как небольшая площадка для интерактивного повествования. Играйте за большого очаровательного пса и исследуйте зимний лес вместе с маленьким ребёнком.", + "DOSBox Staging is a modern continuation of DOSBox a free and open-source emulator that enables the execution of MS-DOS software, especially video games.": "DOSBox Staging — современное продолжение DOSBox, бесплатного эмулятора с открытым исходным кодом, позволяющего запускать программы для MS-DOS, особенно видеоигры.", + "DVB device directory": "Каталог устройств DVB", + "Dagu": "Dagu", + "Daily at 02:00": "Ежедневно в 02:00", + "Daily at 03:00": "Ежедневно в 03:00", + "Data": "Данные", + "Data location": "Расположение данных", + "Data size:": "Размер данных:", + "Data that is deleted with them:": "Данные, которые удаляются вместе с ними:", + "Data volume size in GB": "Размер тома данных в ГБ", + "Data volumes protected": "Тома данных защищены", + "Data wipe complete.": "Стирание данных завершено.", + "Data wiped from": "Данные стёрты с", + "Database (a SQLite file, or postgresql://user:password@address:5432/name)": "База данных (файл SQLite или postgresql://user:password@address:5432/name)", + "Database file for sqlite, or database name for mysql and pgsql": "Файл базы данных для sqlite или имя базы данных для mysql и pgsql", + "Database management in a single PHP file": "Управление базами данных в одном PHP-файле", + "Database server proposed on the login page (empty = typed at each login)": "Сервер базы данных, предлагаемый на странице входа (пусто = вводится при каждом входе)", + "Database type (sqlite, mysql or pgsql)": "Тип базы данных (sqlite, mysql или pgsql)", + "Databases": "Базы данных", + "Datastore name:": "Имя хранилища данных:", + "Davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow.": "Davos — инструмент автоматизации FTP, который периодически проверяет заданные расположения на хосте на наличие новых файлов. Его можно настроить для различных задач, в том числе для отслеживания появления определённых файлов в указанном расположении на хосте с последующим скачиванием и, при необходимости, перемещением. Он также поддерживает уведомления о завершении и последующие вызовы API для продолжения рабочего процесса.", + "Ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways.": "Ddclient — клиент на Perl для обновления записей динамического DNS для учётных записей у поставщиков услуг динамического DNS. Первоначально его написал Paul Burry, а сейчас его разработкой в основном занимается wimpunk. Он поддерживает обновление не только dyndns и может определять ваш IP-адрес в WAN несколькими способами.", + "Deactivate Monitor": "Деактивировать Monitor", + "Deactivate ProxMenux Monitor": "Деактивировать ProxMenux Monitor", + "Debian repositories missing; creating default source file": "Репозитории Debian отсутствуют; создаётся файл источников по умолчанию", + "Decompress backup manually": "Распаковать резервную копию вручную", + "Decryption failed. The passphrase may be wrong, or the blob is corrupt. Try again?": "Не удалось расшифровать данные. Возможно, парольная фраза неверна или блок данных повреждён. Повторить попытку?", + "Dedicated container volume (included in backups)": "Выделенный том контейнера (включается в резервные копии)", + "Dedicated container volumes (included in backups)": "Выделенные тома контейнера (включаются в резервные копии)", + "DeepSeek Harness “Everything is a Plugin“.": "DeepSeek Harness «Всё — плагин».", + "Default": "По умолчанию", + "Default ACLs applied for group inheritance.": "Применены ACL по умолчанию для наследования прав группы.", + "Default Credentials": "Учётные данные по умолчанию", + "Default Gateway": "Шлюз по умолчанию", + "Default ISO directory": "Каталог ISO по умолчанию", + "Default Login Credentials:": "Учётные данные для входа по умолчанию:", + "Default Port": "Порт по умолчанию", + "Default Proxmox logo applied": "Установлен логотип Proxmox по умолчанию", + "Default is none (video-only passthrough). Use SPACE to toggle selections.": "По умолчанию ничего не выбрано (проброс только видео). Используйте SPACE для выбора или отмены выбора.", + "Default journald configuration restored": "Восстановлена конфигурация journald по умолчанию", + "Default location is /mnt/. The share will be mounted here on the host with open permissions so an unprivileged LXC can bind-mount and write to it. For LXC access, bind-mount this path with the LXC Mount Manager.": "Расположение по умолчанию: /mnt/. Общий ресурс будет смонтирован здесь на хосте с открытыми правами доступа, чтобы непривилегированный контейнер LXC мог подключить его через bind-монтирование и записывать в него данные. Для доступа из LXC подключите этот путь через bind-монтирование с помощью менеджера монтирования LXC.", + "Default location is /mnt/. The share will be mounted here on the host. Use this path in /etc/fstab. For LXC access, bind-mount this path with the LXC Mount Manager.": "Расположение по умолчанию: /mnt/. Общий ресурс будет смонтирован здесь на хосте. Используйте этот путь в /etc/fstab. Для доступа из LXC подключите этот путь через bind-монтирование с помощью менеджера монтирования LXC.", + "Default login": "Имя пользователя по умолчанию", + "Default options": "Параметры по умолчанию", + "Default options read/write": "Параметры по умолчанию: чтение и запись", + "Default settings": "Настройки по умолчанию", + "Default will be used:": "Будет использовано значение по умолчанию:", + "Default:": "По умолчанию:", + "Default: only what the application needs": "По умолчанию: только то, что необходимо приложению", + "Degubase": "Degubase", + "Delete": "Удалить", + "Delete Borg target": "Удалить целевое хранилище Borg", + "Delete Export": "Удалить экспорт", + "Delete Share": "Удалить общий ресурс", + "Delete a CT (irreversible). Use the correct ": "Удалить контейнер (необратимо). Укажите правильный ", + "Delete a VM (irreversible). Use the correct ": "Удалить виртуальную машину (необратимо). Укажите правильный ", + "Delete archive": "Удалить архив", + "Delete backup job": "Удалить задание резервного копирования", + "Delete it?": "Удалить?", + "Delete job": "Удалить задание", + "Delete scheduled backup job?": "Удалить запланированное задание резервного копирования?", + "Delete the image to free the space?": "Удалить образ, чтобы освободить место?", + "Delete the images to free the space?": "Удалить образы, чтобы освободить место?", + "Delete this corrupt archive and pick another": "Удалить этот повреждённый архив и выбрать другой", + "Deleting job...": "Удаление задания...", + "Deliberately insecure web application for security lessons.": "Намеренно уязвимое веб-приложение для занятий по информационной безопасности.", + "Deluge is a lightweight, Free Software, cross-platform BitTorrent client.": "Deluge — легковесный кроссплатформенный клиент BitTorrent, являющийся свободным программным обеспечением.", + "Dependencies installed successfully": "Зависимости успешно установлены", + "Deploy with this configuration?": "Развернуть с этой конфигурацией?", + "Deploying Secure Gateway...": "Развёртывание Secure Gateway...", + "Deployment cancelled.": "Развёртывание отменено.", + "Deployment failed": "Ошибка развёртывания", + "Description": "Описание", + "Desktop UI backup created": "Создана резервная копия интерфейса для настольных устройств", + "Desktop and Mobile UI patched": "Исправления применены к интерфейсам для настольных и мобильных устройств", + "Destination Directory": "Каталог назначения", + "Destination TCP port for the TLS tunnel": "TCP-порт назначения для TLS-туннеля", + "Destination directory does not exist:": "Каталог назначения не существует:", + "Destination directory is not writable:": "Каталог назначения недоступен для записи:", + "Destination path for the copy (typically outside ProxMenux state):": "Путь назначения для копии (обычно вне каталога состояния ProxMenux):", + "Destination server address for the TLS tunnel": "Адрес сервера назначения для TLS-туннеля", + "Destination:": "Назначение:", + "Destroy a ZFS dataset (irreversible)": "Уничтожить набор данных ZFS (необратимо)", + "Destructive rollback": "Откат с уничтожением данных", + "Detailed Proxmox version info": "Подробная информация о версии Proxmox", + "Detailed partition layout with GPT info": "Подробная схема разделов с информацией о GPT", + "Detailed service information": "Подробная информация о службе", + "Details": "Подробности", + "Detect GPUs in host": "Обнаружить GPU на хосте", + "Detect controller/NVMe BDF": "Определить BDF контроллера/NVMe", + "Detected": "Обнаружено", + "Detected AMD CPU": "Обнаружен процессор AMD", + "Detected Coral hardware:": "Обнаружено оборудование Coral:", + "Detected GPU(s):": "Обнаруженные GPU:", + "Detected Intel CPU": "Обнаружен процессор Intel", + "Detected Proxmox Backup Server": "Обнаружен Proxmox Backup Server", + "Detected Proxmox VE": "Обнаружен Proxmox VE", + "Detected Proxmox VE 8.x - Installing Ceph Squid for Debian": "Обнаружен Proxmox VE 8.x — установка Ceph Squid для Debian", + "Detected Proxmox VE 9.x - Installing Ceph Squid for Debian Trixie": "Обнаружен Proxmox VE 9.x — установка Ceph Squid для Debian Trixie", + "Detected RAM:": "Обнаружено ОЗУ:", + "Detected a mounted directory from host. Setting up shared group...": "Обнаружен каталог, смонтированный с хоста. Настройка общей группы...", + "Detected backups — newest first:": "Обнаруженные резервные копии — сначала новые:", + "Detected broken gasket-dkms package state:": "Обнаружено некорректное состояние пакета gasket-dkms:", + "Detected existing Samba user:": "Обнаружен существующий пользователь Samba:", + "Detected filesystem:": "Обнаруженная файловая система:", + "Detected nftables - using nftables ban action": "Обнаружен nftables — для блокировки используется nftables", + "Detected paths in this backup:": "Обнаруженные пути в этой резервной копии:", + "Detected power state": "Определённое состояние питания", + "Detected reset method": "Определённый метод сброса", + "Detected risk factor": "Выявленный фактор риска", + "Detected subtype": "Определённый подтип", + "Detected:": "Обнаружено:", + "Detecting AMD CPU and applying fixes if necessary...": "Обнаружение процессора AMD и применение исправлений при необходимости...", + "Detecting PCI storage controllers and NVMe devices...": "Обнаружение контроллеров хранения PCI и устройств NVMe...", + "Detecting available disks...": "Обнаружение доступных дисков...", + "Detecting container OS...": "Определение ОС контейнера...", + "Detecting if this is an OVH server and installing OVH RTM if necessary...": "Проверка принадлежности сервера к OVH и установка OVH RTM при необходимости...", + "Detecting previous optimizations...": "Обнаружение ранее выполненных оптимизаций...", + "Detecting storage for disk images...": "Обнаружение хранилища для образов дисков...", + "Detecting virtualization and installing guest agent...": "Обнаружение виртуализации и установка гостевого агента...", + "Development Tools": "Инструменты разработки", + "Device GID does not match the host": "GID устройства не совпадает с GID на хосте", + "Device In Use": "Устройство используется", + "Device added": "Устройство добавлено", + "Device added:": "Устройство добавлено:", + "Device already present in target VM — existing hostpci entry reused": "Устройство уже присутствует в целевой ВМ — повторно использована существующая запись hostpci", + "Device assignments will be written now and become active after reboot.": "Назначения устройств будут записаны сейчас и вступят в силу после перезагрузки.", + "Device configuration cancelled": "Настройка устройства отменена", + "Device hostname": "Имя хоста устройства", + "Device node outside the supported profiles": "Узел устройства не входит в поддерживаемые профили", + "Device outside the supported profiles; NVIDIA and device trees require another profile": "Устройство не входит в поддерживаемые профили; для NVIDIA и деревьев устройств требуется другой профиль", + "Device path mismatch. Format cancelled.": "Путь к устройству не совпадает. Форматирование отменено.", + "Device permissions verified for the application user": "Права доступа к устройству проверены для пользователя приложения", + "Device removed:": "Устройство удалено:", + "Device to attach": "Устройство для подключения", + "Device:": "Устройство:", + "Devices": "Устройства", + "Devices added to the container:": "Устройства, добавленные в контейнер:", + "Devices added:": "Добавленные устройства:", + "Devices of the host it asks for:": "Запрашиваемые устройства хоста:", + "Devices to add to VM": "Устройства для добавления в ВМ", + "Devices to keep (unmark one to remove it)": "Устройства, которые нужно оставить (снимите отметку с устройства, чтобы удалить его)", + "Dgraph": "Dgraph", + "Diff: current system vs backup (--- system +++ backup)": "Различия: текущая система и резервная копия (--- система +++ резервная копия)", + "Different host. Backup from:": "Другой хост. Резервная копия с хоста:", + "Direct Connect file sharing with a web interface": "Обмен файлами по протоколу Direct Connect с веб-интерфейсом", + "Direct conversion completed for container": "Прямое преобразование завершено для контейнера", + "Directory Exists": "Каталог существует", + "Directory Not Empty": "Каталог не пуст", + "Directory Not Found": "Каталог не найден", + "Directory already exists. Continue with permission setup?": "Каталог уже существует. Продолжить настройку прав доступа?", + "Directory configured for sharedfiles group access on:": "Каталог настроен для доступа группы sharedfiles на:", + "Directory configured with sharedfiles group ownership": "Группой-владельцем каталога назначена sharedfiles", + "Directory created successfully.": "Каталог успешно создан.", + "Directory created successfully:": "Каталог успешно создан:", + "Directory created:": "Создан каталог:", + "Directory does not exist and was not created.": "Каталог не существует и не был создан.", + "Directory does not exist:": "Каталог не существует:", + "Directory error": "Ошибка каталога", + "Directory for the read-only view": "Каталог для представления только для чтения", + "Directory for the read/write view": "Каталог для представления с доступом на чтение и запись", + "Directory not found": "Каталог не найден", + "Directory storage added successfully to Proxmox!": "Хранилище типа «Каталог» успешно добавлено в Proxmox!", + "Directory successfully.": "Каталог — успешно.", + "Directory:": "Каталог:", + "Directus administrator": "Администратор Directus", + "Disable NIC Offloading (Intel e1000e)": "Отключить аппаратную разгрузку сетевой карты (Intel e1000e)", + "Disable Secure Boot in the UEFI firmware and run the installer again. Nothing has been changed.": "Отключите Secure Boot в прошивке UEFI и запустите установщик снова. Никаких изменений не внесено.", + "Disable USB/IP server": "Отключить сервер USB/IP", + "Disable autostart on conflicting VM": "Отключить автозапуск конфликтующей ВМ", + "Disable autostart on one VM to avoid startup conflicts.": "Отключите автозапуск одной из ВМ, чтобы избежать конфликтов при запуске.", + "Disable job": "Отключить задание", + "Disable kernel audit messages (optional but recommended):": "Отключить сообщения аудита ядра (необязательно, но рекомендуется):", + "Disable onboot on affected VM(s)/CT(s)": "Отключить onboot для затронутых ВМ/CT", + "Disable portmapper/rpcbind": "Отключить portmapper/rpcbind", + "Disable the server and release all USB devices managed by ProxMenux? Saved selections are kept for the next enable.": "Отключить сервер и освободить все USB-устройства, которыми управляет ProxMenux? Сохранённые настройки выбора устройств будут сохранены до следующего включения.", + "Disabled": "Отключено", + "Disabling High Availability services...": "Отключение служб высокой доступности...", + "Disabling ZFS autotrim applied by ProxMenux...": "Отключение autotrim для ZFS, включённого ProxMenux...", + "Disabling and removing NetworkManager...": "Отключение и удаление NetworkManager...", + "Disabling and stopping rpcbind service and socket...": "Отключение и остановка службы и сокета rpcbind...", + "Disabling non-free firmware warnings...": "Отключение предупреждений о несвободных микропрограммах...", + "Disabling portmapper/rpcbind for security...": "Отключение portmapper/rpcbind в целях безопасности...", + "Discard changes": "Отменить изменения", + "Discard unapplied changes?": "Отменить неприменённые изменения?", + "Discover NFS exports on a server": "Обнаружить экспорты NFS на сервере", + "Discover and monitor devices on your local network.": "Обнаружение и мониторинг устройств в вашей локальной сети.", + "Discover targets on portal:": "Обнаружить цели на портале:", + "Discovering iSCSI targets...": "Обнаружение целей iSCSI...", + "Discovery successful": "Обнаружение выполнено успешно", + "Disk": "Диск", + "Disk Already Assigned": "Диск уже назначен", + "Disk In Use": "Диск используется", + "Disk In Use by Running VM": "Диск используется работающей ВМ", + "Disk Manager": "Диспетчер дисков", + "Disk Reference Conflict": "Конфликт ссылок на диск", + "Disk Setup": "Настройка диска", + "Disk added as": "Диск добавлен как", + "Disk already has": "На диске уже есть", + "Disk and Storage Manager - Manual CLI Guide": "Диспетчер дисков и хранилищ — руководство по работе вручную через CLI", + "Disk appears empty. It will be formatted.": "Диск выглядит пустым. Он будет отформатирован.", + "Disk assigned at": "Диск назначен в", + "Disk attached as:": "Диск подключён как:", + "Disk configured as": "Диск настроен как", + "Disk conversion failed for": "Не удалось преобразовать диск для", + "Disk file not found:": "Файл диска не найден:", + "Disk formatted as": "Диск отформатирован в", + "Disk formatted successfully.": "Диск успешно отформатирован.", + "Disk image — VM disk images": "Образ диска — образы дисков ВМ", + "Disk interface is required to continue VM creation.": "Для продолжения создания ВМ необходимо выбрать интерфейс диска.", + "Disk interface selected:": "Выбран интерфейс диска:", + "Disk interface selection cancelled.": "Выбор интерфейса диска отменён.", + "Disk is part of a host ZFS pool": "Диск входит в пул ZFS хоста", + "Disk is part of host LVM": "Диск используется LVM хоста", + "Disk is ready for VM passthrough.": "Диск готов к пробросу в ВМ.", + "Disk is ready to be added to Proxmox storage.": "Диск готов к добавлению в хранилище Proxmox.", + "Disk metadata cleaned.": "Метаданные диска очищены.", + "Disk mounted at": "Диск смонтирован в", + "Disk path resolved via pvesm:": "Путь к диску определён с помощью pvesm:", + "Disk path:": "Путь к диску:", + "Disk safety revalidation failed.": "Повторная проверка безопасности диска не пройдена.", + "Disk safety validation passed.": "Проверка безопасности диска пройдена.", + "Disk too small for the common profile": "Диск слишком мал для общего профиля", + "Disk unmounted from": "Диск отмонтирован из точки монтирования", + "Disk verified and accessible inside CT at": "Диск проверен и доступен внутри CT по пути", + "Disk:": "Диск:", + "Disks exported:": "Экспортировано дисков:", + "Disks to export:": "Диски для экспорта:", + "Disks to import:": "Диски для импорта:", + "Disks to process:": "Диски для обработки:", + "Disks:": "Диски:", + "Display :": "Дисплей :", + "Display logical volumes (LVM)": "Показать логические тома (LVM)", + "Display physical volumes (LVM)": "Показать физические тома (LVM)", + "Display system summary in ASCII format": "Показать сводку о системе в формате ASCII", + "Display volume groups (LVM)": "Показать группы томов (LVM)", + "Distributed relational database built on SQLite.": "Распределённая реляционная база данных на основе SQLite.", + "Distributed tracing collection and exploration.": "Сбор и исследование данных распределённой трассировки.", + "Distributed tracing collection and visualization.": "Сбор и визуализация данных распределённой трассировки.", + "Do not assume port 8123 remains active after onboarding on Home Assistant Core 2026.8 or newer.": "Не рассчитывайте, что порт 8123 останется активным после начальной настройки в Home Assistant Core 2026.8 или новее.", + "Do not claim in-place OCI image updates are validated until rootfs replacement and rollback have been tested without losing the managed /mnt/data volume.": "Не считайте обновления образа OCI на месте проверенными, пока замена rootfs и откат не будут протестированы без потери управляемого тома /mnt/data.", + "Do not enable automatically on unsupported AMD integrated GPUs. HSA overrides are manual compatibility experiments, not a validated default.": "Не включайте автоматически на неподдерживаемых встроенных графических процессорах AMD. Переопределения HSA — это ручные эксперименты с совместимостью, а не проверенная настройка по умолчанию.", + "Do not mount": "Не монтировать", + "Do not run the upgrade from the Web UI virtual console (it will disconnect)": "Не запускайте обновление из виртуальной консоли веб-интерфейса (соединение с ней будет разорвано)", + "Do not start the VM until the system has been rebooted.": "Не запускайте ВМ до перезагрузки системы.", + "Do you want ProxMenux to stop it now?": "Хотите, чтобы ProxMenux выполнил остановку сейчас?", + "Do you want to activate ProxMenux Monitor?": "Хотите активировать ProxMenux Monitor?", + "Do you want to apply the optional NVIDIA patch to remove some GPU limitations?": "Хотите применить необязательный патч NVIDIA для снятия некоторых ограничений графического процессора?", + "Do you want to apply these optimizations now?": "Хотите применить эти оптимизации сейчас?", + "Do you want to configure GPU passthrough for this VM now?": "Хотите настроить проброс графического процессора для этой ВМ сейчас?", + "Do you want to continue anyway?": "Всё равно хотите продолжить?", + "Do you want to continue with the conversion now, or exit to create a backup first?": "Хотите продолжить преобразование сейчас или выйти, чтобы сначала создать резервную копию?", + "Do you want to continue?": "Хотите продолжить?", + "Do you want to convert it to a privileged container now?": "Хотите преобразовать его в привилегированный контейнер сейчас?", + "Do you want to create it now?": "Хотите создать сейчас?", + "Do you want to create it?": "Хотите создать?", + "Do you want to deactivate ProxMenux Monitor?": "Хотите деактивировать ProxMenux Monitor?", + "Do you want to disable and remove it now?": "Хотите отключить и удалить сейчас?", + "Do you want to enable IOMMU now?": "Хотите включить IOMMU сейчас?", + "Do you want to enable the serial port": "Хотите включить последовательный порт", + "Do you want to encrypt this backup?": "Хотите зашифровать эту резервную копию?", + "Do you want to install Log2RAM to reduce log write load?": "Хотите установить Log2RAM, чтобы снизить нагрузку от записи журналов?", + "Do you want to make this mount permanent?": "Хотите сделать это монтирование постоянным?", + "Do you want to open Switch GPU Mode now?": "Хотите сейчас открыть переключение режима GPU?", + "Do you want to proceed and run the Proxmox System Update?": "Хотите продолжить и запустить обновление системы Proxmox?", + "Do you want to proceed with the cleanup?": "Хотите продолжить очистку?", + "Do you want to proceed with the system update?": "Хотите продолжить обновление системы?", + "Do you want to proceed?": "Хотите продолжить?", + "Do you want to reboot now?": "Хотите перезагрузить систему сейчас?", + "Do you want to remove the Proxmox subscription banner from the Proxmox Backup Server web interface?": "Хотите убрать баннер подписки Proxmox из веб-интерфейса Proxmox Backup Server?", + "Do you want to remove the stale entry from vfio.conf and continue?": "Хотите удалить устаревшую запись из vfio.conf и продолжить?", + "Do you want to remove the stale entry from vfio.conf?": "Хотите удалить устаревшую запись из vfio.conf?", + "Do you want to restart the network service now to apply changes?": "Хотите сейчас перезапустить сетевую службу, чтобы применить изменения?", + "Do you want to restart the network service to apply changes?": "Хотите перезапустить сетевую службу, чтобы применить изменения?", + "Do you want to run the network script from": "Хотите запустить сетевой скрипт из", + "Do you want to run the post-installation script from": "Хотите запустить скрипт послеустановочной настройки из", + "Do you want to run the script now?": "Хотите запустить скрипт сейчас?", + "Do you want to schedule selected paths for next boot now?": "Хотите сейчас запланировать обработку выбранных путей при следующей загрузке?", + "Do you want to start the converted unprivileged container": "Хотите запустить преобразованный непривилегированный контейнер", + "Do you want to start the privileged container": "Хотите запустить привилегированный контейнер", + "Do you want to try different credentials or authentication method?": "Хотите попробовать другие учётные данные или другой способ аутентификации?", + "Do you want to unmount it first?": "Хотите сначала размонтировать его?", + "Do you want to update now?": "Хотите выполнить обновление сейчас?", + "Do you want to update the NVIDIA userspace libraries inside these containers to match the host?": "Хотите обновить библиотеки пользовательского пространства NVIDIA в этих контейнерах, чтобы их версии соответствовали версиям на хосте?", + "Do you want to update the existing export?": "Хотите обновить существующий экспорт?", + "Do you want to update the existing share?": "Хотите обновить существующий общий ресурс?", + "Do you want to view the selected backup before restoring?": "Хотите просмотреть выбранную резервную копию перед восстановлением?", + "Do-Over": "Начать заново", + "Docker Mods are only offered for compatible LinuxServer images": "Docker Mods доступны только для совместимых образов LinuxServer", + "Docker Volume Backup": "Резервное копирование томов Docker", + "Docker/CLI not available yet or no valid answer": "Docker/CLI пока недоступен или не получен корректный ответ", + "Docs": "Документация", + "Documents & Notes": "Документы и заметки", + "Documents volume size in GB": "Размер тома для документов в ГБ", + "Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.": "Dokuwiki — простое в использовании и многофункциональное вики-приложение с открытым исходным кодом, не требующее базы данных. Пользователи ценят его за простой и понятный синтаксис. Простота обслуживания, резервного копирования и интеграции делает его популярным среди администраторов. Встроенные средства управления доступом и подключения к системам аутентификации делают DokuWiki особенно полезным в корпоративной среде, а большое количество плагинов, созданных активным сообществом, позволяет использовать его для широкого круга задач, выходящих за рамки традиционной вики.", + "Dolphin Emulator lets you play GameCube and Wii games with various graphical enhancements and other features are available to improve your game experience.": "Dolphin Emulator позволяет играть в игры для GameCube и Wii с различными графическими улучшениями и другими функциями, улучшающими игровой процесс.", + "Domain for the certificate (example.com)": "Домен для сертификата (example.com)", + "Donetick": "Donetick", + "Doplarr is an *arr request bot for Discord.\"": "Doplarr — бот для запросов к *arr в Discord.\"", + "Doplarr_rs is a Discord bot for requesting media through *arr backends, written in Rust.": "Doplarr_rs — написанный на Rust бот для Discord, позволяющий запрашивать медиаконтент через серверные приложения *arr.", + "Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.": "Double Commander — бесплатный кроссплатформенный файловый менеджер с открытым исходным кодом и двумя расположенными рядом панелями. Он создан под влиянием Total Commander и предлагает ряд новых идей.", + "Download Spotify music with album art and metadata": "Скачать музыку из Spotify с обложками альбомов и метаданными", + "Download an image to template storage": "Скачать образ в хранилище шаблонов", + "Download an oci-compose from an address": "Скачать oci-compose по указанному адресу", + "Download failed for all attempted URLs": "Не удалось скачать ни по одному из проверенных URL-адресов", + "Download its Compose file from an address": "Скачать его файл Compose по указанному адресу", + "Download keyfile": "Скачать файл ключа", + "Download latest VirtIO ISO automatically": "Автоматически скачать последний ISO-образ VirtIO", + "Downloaded %s to %s": "%s загружен в %s", + "Downloaded OCI images deleted:": "Загруженные образы OCI удалены:", + "Downloaded amdgpu_top": "amdgpu_top загружен", + "Downloading": "Загрузка", + "Downloading Helper-Scripts logo...": "Загрузка логотипа Helper-Scripts...", + "Downloading Home-Labs-Club logo...": "Загрузка логотипа Home-Labs-Club...", + "Downloading JC Channel logo...": "Загрузка логотипа JC Channel...", + "Downloading ProxMenux logo...": "Загрузка логотипа ProxMenux...", + "Downloading Proxmology logo...": "Загрузка логотипа Proxmology...", + "Downloading UUP converter...": "Загрузка конвертера UUP...", + "Downloading amdgpu_top": "Загрузка amdgpu_top", + "Downloading and verifying the image.\nThis can take a few minutes. Please wait...": "Загрузка и проверка образа.\nЭто может занять несколько минут. Пожалуйста, подождите...", + "Downloading official installer...": "Загрузка официального установщика...", + "Downloading pre-existing encrypted backups from this host will fail unless you kept a copy of the current key.": "Не удастся загрузить с этого узла ранее созданные зашифрованные резервные копии, если вы не сохранили копию текущего ключа.", + "Downloading the image:": "Загрузка образа:", + "Downloading the latest Fastfetch release...": "Загрузка последнего выпуска Fastfetch...", + "Driver blacklist entries removed": "Записи в чёрном списке драйверов удалены", + "Driver blacklist removed for": "Удалён чёрный список драйверов для", + "Driver installed successfully. Press Enter to continue...": "Драйвер успешно установлен. Нажмите Enter, чтобы продолжить...", + "Drivers :": "Драйверы :", + "Drivers compiled and installed via DKMS.": "Драйверы скомпилированы и установлены с помощью DKMS.", + "Dry run completed; mount configuration was not applied. The CT was already running.": "Пробный запуск завершён; конфигурация монтирования не применена. Контейнер уже был запущен.", + "Dry run completed; mount configuration was not applied. The CT was started for the remote check.": "Пробный запуск завершён; конфигурация монтирования не применена. Контейнер был запущен для удалённой проверки.", + "Dry run completed; no changes were made.": "Пробный запуск завершён; изменения не внесены.", + "Dry run completed; no containers were created.": "Пробный запуск завершён; контейнеры не создавались.", + "Dry run completed; the container and the mounts were not changed.": "Пробный запуск завершён; контейнер и точки монтирования не изменены.", + "DuckDNS subdomain without .duckdns.org (comma separated for several)": "Поддомен DuckDNS без .duckdns.org (несколько поддоменов укажите через запятую)", + "DuckDNS token from your account at duckdns.org": "Токен DuckDNS из вашей учётной записи на duckdns.org", + "DuckDNS updates the subdomain every 5 minutes. Without UPDATE_IP, DuckDNS itself detects the public IPv4 address of the request.": "DuckDNS обновляет поддомен каждые 5 минут. Если UPDATE_IP не задан, DuckDNS самостоятельно определяет публичный IPv4-адрес, с которого поступил запрос.", + "DuckStation is a PS1 Emulator aiming for the best accuracy and game support.": "DuckStation — эмулятор PS1, нацеленный на максимальную точность эмуляции и поддержку игр.", + "Duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.": "Duckdns — бесплатный сервис, который позволяет направлять DNS-поддомены duckdns.org на выбранный вами IP-адрес. Сервис полностью бесплатен; для продолжения его использования не требуется повторная активация или публикация сообщений на форуме.", + "Dufs": "Dufs", + "Dumping AMD GPU ROM BIOS via sysfs...": "Создание дампа ROM BIOS видеокарты AMD через sysfs...", + "Duplicate IP addresses found": "Обнаружены повторяющиеся IP-адреса", + "Duplicate parameters cleaned": "Повторяющиеся параметры удалены", + "Duplicate stack frontend address": "Повторяющийся адрес фронтенда стека", + "Duplicate variable in the contract; review it before editing": "Повторяющаяся переменная в контракте; проверьте её перед редактированием", + "Duplicated GPU device in the container": "Дублирующееся устройство GPU в контейнере", + "Duplicated NVIDIA devices": "Дублирующиеся устройства NVIDIA", + "Duplicated VMID in the Proxmox inventory": "Повторяющийся VMID в инвентаре Proxmox", + "Duplicated native directive:": "Повторяющаяся нативная директива:", + "Duplicated native option": "Повторяющийся нативный параметр", + "Duplicated or invalid stack VMID": "Повторяющийся или недопустимый VMID стека", + "Duplicati is a backup client that securely stores encrypted, incremental, compressed backups on local storage, cloud storage services and remote file servers. It works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon S3, Google Drive, box.com, Mega, B2, and many others.": "Duplicati — клиент резервного копирования, который безопасно сохраняет зашифрованные, инкрементальные, сжатые резервные копии в локальном хранилище, облачных сервисах хранения и на удалённых файловых серверах. Он работает со стандартными протоколами, такими как FTP, SSH, WebDAV, а также с популярными сервисами, такими как Microsoft OneDrive, Amazon S3, Google Drive, box.com, Mega, B2 и многими другими.", + "Duplicati web interface (password only)": "Веб-интерфейс Duplicati (только пароль)", + "Duration": "Длительность", + "Duration:": "Длительность:", + "Dynamic NVIDIA is only validated for unprivileged containers. This profile uses static mounts and must be recreated after the host driver changes.": "Динамический режим NVIDIA проверен только для непривилегированных контейнеров. Этот профиль использует статические монтирования и должен быть создан заново после изменения драйвера на хосте.", + "EFI Disk Storage": "Хранилище диска EFI", + "EFI disk created (raw) and configured on %s": "Диск EFI создан (raw) и настроен на %s", + "EFI disk created and configured on": "Диск EFI создан и настроен на", + "EFI disk created and configured on %s": "Диск EFI создан и настроен на %s", + "EFI storage selection cancelled.": "Выбор хранилища для EFI отменён.", + "EFI storage selection failed or was cancelled.": "Не удалось выбрать хранилище для EFI, либо выбор был отменён.", + "EFI storage selection failed or was cancelled. VM creation aborted.": "Не удалось выбрать хранилище для EFI, либо выбор был отменён. Создание ВМ прервано.", + "EMERGENCY PROXMOX SYSTEM REPAIR": "АВАРИЙНОЕ ВОССТАНОВЛЕНИЕ СИСТЕМЫ PROXMOX", + "EMQX Dashboard": "Панель управления EMQX", + "EMQX Dashboard administrator": "Администратор панели управления EMQX", + "ENABLED for restore": "ВКЛЮЧЕНО для восстановления", + "EXISTS": "EXISTS", + "Each /request command needs a backend: add a [[backends]] block in the same file with the url and api_key of your Sonarr, Radarr or Seerr instance, then restart the container.": "Для каждой команды /request нужен сервер обработки запросов: добавьте в тот же файл блок [[backends]] с url и api_key вашего экземпляра Sonarr, Radarr или Seerr, затем перезапустите контейнер.", + "Each LUN will appear as a block device assignable to VMs.": "Каждый LUN будет отображаться как блочное устройство, которое можно назначить виртуальным машинам.", + "Each peer gets its configuration and its QR code inside the container: /config/peer1/peer1.conf and /config/peer1/peer1.png, or /config/peer_/peer_.conf when names were given.": "Для каждого узла внутри контейнера создаются конфигурация и QR-код: /config/peer1/peer1.conf и /config/peer1/peer1.png, либо /config/peer_/peer_.conf, если были заданы имена.", + "Ebook and audiobook collection manager for Usenet and BitTorrent users.": "Менеджер коллекций электронных книг и аудиокниг для пользователей Usenet и BitTorrent.", + "Ech0": "Ech0", + "Eden is an experimental open-source emulator for the Nintendo Switch, built with performance and stability in mind.": "Eden — экспериментальный эмулятор Nintendo Switch с открытым исходным кодом, разработанный с упором на производительность и стабильность.", + "Edge TPU runtime installed.": "Среда выполнения Edge TPU установлена.", + "Edit": "Редактировать", + "Edit Job": "Редактировать задание", + "Edit raw CT configuration file": "Редактировать файл конфигурации CT напрямую", + "Edit raw VM configuration file": "Редактировать файл конфигурации ВМ напрямую", + "Edit the VM machine type to q35 and try again.": "Измените тип машины ВМ на q35 и повторите попытку.", + "Edition:": "Редакция:", + "Email address for certificate expiry notices (required by ZeroSSL)": "Адрес электронной почты для уведомлений об истечении срока действия сертификата (требуется для ZeroSSL)", + "Email address for the OpenHabitTracker account": "Адрес электронной почты учётной записи OpenHabitTracker", + "Email address of the LibreDB Studio administrator": "Адрес электронной почты администратора LibreDB Studio", + "Email address of the NetBox admin account": "Адрес электронной почты учётной записи администратора NetBox", + "Email address of the admin account": "Адрес электронной почты учётной записи администратора", + "Email address of the superuser account": "Адрес электронной почты учётной записи суперпользователя", + "Emby WebUI": "Emby WebUI", + "Emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server.": "Emby упорядочивает видео, музыку, прямые телетрансляции и фотографии из личных медиатек и передаёт их потоком на смарт-телевизоры, медиаприставки и мобильные устройства. В этом контейнере Emby Media Server поставляется как автономный медиасервер.", + "Emergency Proxmox System Repair": "Аварийное восстановление системы Proxmox", + "Emergency recovery:": "Аварийное восстановление:", + "Emit numeric progress for the OCI menu": "Выводить числовые значения прогресса для меню OCI", + "Empowering the smart home": "Расширяем возможности умного дома", + "Empty": "Пусто", + "Empty exec service check": "Пустая проверка службы exec", + "Empty or duplicated NVIDIA identity": "Пустой или дублирующийся идентификатор NVIDIA", + "EmulatorJS is a Docker-based emulator application that can simulate various operating systems and device environments within containers for development, testing, and learning purposes.": "EmulatorJS — приложение-эмулятор на базе Docker, позволяющее имитировать различные операционные системы и среды устройств в контейнерах для разработки, тестирования и обучения.", + "Enable": "Включить", + "Enable / disable job timer": "Включить / отключить таймер задания", + "Enable High Availability services": "Включить службы высокой доступности", + "Enable IOMMU in GRUB or ZFS boot": "Включить IOMMU в GRUB или при загрузке с ZFS", + "Enable IOMMU support if not enabled": "Включить поддержку IOMMU, если она не включена", + "Enable IOMMU, reboot the host, and try again.": "Включите IOMMU, перезагрузите хост и повторите попытку.", + "Enable Intel/AMD VA-API video acceleration": "Включить аппаратное ускорение видео Intel/AMD VA-API", + "Enable NVIDIA transcoding and HDR10/Dolby Vision to SDR tone mapping": "Включить транскодирование NVIDIA и тональное отображение HDR10/Dolby Vision в SDR", + "Enable Remote Desktop (RDP) before disabling the virtual display.": "Включите удалённый рабочий стол (RDP) перед отключением виртуального дисплея.", + "Enable SSD emulation for this disk?": "Включить эмуляцию SSD для этого диска?", + "Enable TCP BBR/Fast Open control": "Включить управление TCP BBR/Fast Open", + "Enable USB/IP server": "Включить сервер USB/IP", + "Enable VA-API transcoding and HDR10/Dolby Vision to SDR tone mapping": "Включить транскодирование VA-API и тональное отображение HDR10/Dolby Vision в SDR", + "Enable VA-API, hardware encoding and OpenCL tone mapping in Jellyfin": "Включить VA-API, аппаратное кодирование и тональное отображение OpenCL в Jellyfin", + "Enable VFIO IOMMU support": "Включить поддержку VFIO IOMMU", + "Enable ZFS autotrim (SSD/NVMe pools)": "Включить autotrim ZFS (пулы SSD/NVMe)", + "Enable ZRAM swap profile": "Включить профиль подкачки ZRAM", + "Enable a mount on an existing Rclone OCI container": "Включить монтирование в существующем контейнере OCI Rclone", + "Enable a mount on an installed Rclone OCI": "Включить монтирование в установленном Rclone OCI", + "Enable an optical drive for MakeMKV": "Включить оптический привод для MakeMKV", + "Enable auto-sync if /var/log exceeds 90% of its size?": "Включить автосинхронизацию, если /var/log превысит 90% своего размера?", + "Enable fast reboots": "Включить быструю перезагрузку", + "Enable job": "Включить задание", + "Enable restart on kernel panic": "Включить перезагрузку при панике ядра", + "Enable the NVIDIA GPU requested by the image": "Включить графический процессор NVIDIA, запрашиваемый образом", + "Enable the NVIDIA GPU required by Open WebUI CUDA": "Включить графический процессор NVIDIA, необходимый для Open WebUI CUDA", + "Enable this FUSE mount now and restart the CT?": "Включить это монтирование FUSE сейчас и перезапустить контейнер CT?", + "Enable/Disable job": "Включить/отключить задание", + "Enabled": "Включено", + "Enabled (device pending — load apex module or reboot)": "Включено (ожидание устройства — загрузите модуль apex или перезагрузите систему)", + "Enabled (repokey)": "Включено (repokey)", + "Enabled and detected": "Включено и обнаружено", + "Enabled and ready": "Включено и готово к работе", + "Enabled but not connected": "Включено, но не подключено", + "Enabled memory compaction proactiveness": "Проактивное уплотнение памяти включено", + "Enabling Google TCP BBR congestion control...": "Включение управления перегрузкой Google TCP BBR...", + "Enabling High Availability (HA) services...": "Включение служб высокой доступности (HA)...", + "Enabling IOMMU": "Включение IOMMU", + "Enabling IOMMU and configuring VFIO for PCI passthrough...": "Включение IOMMU и настройка VFIO для проброса PCI...", + "Enabling TCP Fast Open...": "Включение TCP Fast Open...", + "Enabling pigz in vzdump configuration...": "Включение pigz в конфигурации vzdump...", + "Encrypt this Borg repository?": "Зашифровать этот репозиторий Borg?", + "Encryption": "Шифрование", + "Encryption key": "Ключ шифрования", + "Encryption key creation failed": "Не удалось создать ключ шифрования", + "Encryption:": "Шифрование:", + "English": "Английский", + "Ensure there are no errors and that proxmox-ve candidate shows 9.x": "Убедитесь, что ошибок нет, а версия-кандидат пакета proxmox-ve — 9.x", + "Ensuring apex group and udev rules...": "Обеспечение наличия группы apex и правил udev...", + "Ensuring ceph.sources (enterprise, Trixie) is present...": "Обеспечение наличия ceph.sources (enterprise, Trixie)...", + "Ensuring ceph.sources (no-subscription, Trixie) is present...": "Обеспечение наличия ceph.sources (no-subscription, Trixie)...", + "Ensuring proxmox.sources (PVE 9, no-subscription, deb822) is present...": "Обеспечение наличия proxmox.sources (PVE 9, no-subscription, deb822)...", + "Ensuring pve-enterprise.sources (PVE 9, deb822) is present...": "Обеспечение наличия pve-enterprise.sources (PVE 9, deb822)...", + "Enter": "Ввод", + "Enter CT ID:": "Введите ID контейнера:", + "Enter MSR register (e.g. 0x10):": "Введите регистр MSR (например, 0x10):", + "Enter NFS export path (e.g., /mnt/shared):": "Введите путь экспорта NFS (например, /mnt/shared):", + "Enter NFS server IP or hostname:": "Введите IP-адрес или имя хоста сервера NFS:", + "Enter NVMe device (e.g., nvme0):": "Введите имя устройства NVMe (например, nvme0):", + "Enter PCI BDF (e.g. 0000:01:00.0):": "Введите адрес PCI BDF (например, 0000:01:00.0):", + "Enter PCI BDF (e.g. 0000:04:00.0):": "Введите адрес PCI BDF (например, 0000:04:00.0):", + "Enter Path": "Введите путь", + "Enter Samba server IP:": "Введите IP-адрес сервера Samba:", + "Enter Samba share name:": "Введите имя общего ресурса Samba:", + "Enter Tailscale Auth Key": "Введите ключ аутентификации Tailscale", + "Enter VM ID:": "Введите ID виртуальной машины:", + "Enter VM/CT ID:": "Введите ID виртуальной машины или контейнера:", + "Enter ZFS pool name for the selected disk:": "Введите имя пула ZFS для выбранного диска:", + "Enter a name for the mount point (used as /mnt/):": "Введите имя точки монтирования (используется в пути /mnt/):", + "Enter a name for the new virtual machine:": "Введите имя новой виртуальной машины:", + "Enter a non-empty password or access token on a single line.": "Введите непустой пароль или токен доступа в одну строку.", + "Enter a number, or write or paste a command:": "Введите номер либо напишите или вставьте команду:", + "Enter a systemd calendar event, e.g.:": "Введите календарное выражение systemd, например:", + "Enter a usable IPv4 address with its prefix, for example": "Введите пригодный для использования IPv4-адрес с префиксом, например", + "Enter a valid registry username.": "Введите допустимое имя пользователя реестра.", + "Enter backup file (.zst):": "Введите имя файла резервной копии (.zst):", + "Enter backup path (.tar.zst):": "Введите путь к резервной копии (.tar.zst):", + "Enter backup path (.vma.zst):": "Введите путь к резервной копии (.vma.zst):", + "Enter base folder for temporary files and converter (default:": "Введите базовую папку для временных файлов и конвертера (по умолчанию:", + "Enter boot target (e.g. scsi0, sata0, ide0):": "Введите загрузочное устройство (например, scsi0, sata0, ide0):", + "Enter content types (comma-separated):": "Введите типы содержимого через запятую:", + "Enter custom CIFS mount options (open uid/gid/file_mode strongly recommended for LXC bind-mounts):": "Введите пользовательские параметры монтирования CIFS (для bind-монтирований LXC настоятельно рекомендуется задавать uid/gid/file_mode так, чтобы разрешать доступ):", + "Enter custom NFS mount options:": "Введите пользовательские параметры монтирования NFS:", + "Enter custom NFS options:": "Введите пользовательские параметры NFS:", + "Enter custom Samba configuration for this share:": "Введите пользовательскую конфигурацию Samba для этого общего ресурса:", + "Enter custom mount options:": "Введите пользовательские параметры монтирования:", + "Enter custom path": "Введите свой путь", + "Enter custom pathr": "Введите свой путь", + "Enter destination directory for exported file(s):": "Введите каталог назначения для экспортируемых файлов:", + "Enter destination path for ISO file": "Введите путь назначения для ISO-файла", + "Enter destination path:": "Введите путь назначения:", + "Enter device (e.g., sda or nvme0):": "Введите имя устройства (например, sda или nvme0):", + "Enter directory containing OVA/OVF files:": "Введите каталог, содержащий файлы OVA/OVF:", + "Enter directory path:": "Введите путь к каталогу:", + "Enter disk image path:": "Введите путь к образу диска:", + "Enter disk or partition path (prefer /dev/disk/by-id/...):": "Введите путь к диску или разделу (предпочтительно /dev/disk/by-id/...):", + "Enter domain name:": "Введите доменное имя:", + "Enter domain:": "Введите домен:", + "Enter filesystem (ext4/xfs/btrfs):": "Введите файловую систему (ext4/xfs/btrfs):", + "Enter folder name for /mnt:": "Введите имя папки для /mnt:", + "Enter full disk path as shown above (starting with /dev/disk/by-id/xxx...):": "Введите полный путь к диску, как показано выше (начинающийся с /dev/disk/by-id/xxx...):", + "Enter full path for mount point:": "Введите полный путь к точке монтирования:", + "Enter full path to the disk image (e.g., /var/lib/vz/images/xyz.img):": "Введите полный путь к образу диска (например, /var/lib/vz/images/xyz.img):", + "Enter full path to the input image (e.g., /var/lib/vz/images/disk.vmdk):": "Введите полный путь к исходному образу (например, /var/lib/vz/images/disk.vmdk):", + "Enter full path:": "Введите полный путь:", + "Enter host IP (e.g., 192.168.0.100):": "Введите IP-адрес хоста (например, 192.168.0.100):", + "Enter host or IP:": "Введите имя хоста или IP-адрес:", + "Enter hostpci slot (e.g. 0):": "Введите номер слота hostpci (например, 0):", + "Enter hostpci slot number (e.g. 0):": "Введите номер слота hostpci (например, 0):", + "Enter iSCSI target portal IP or hostname:": "Введите IP-адрес или имя хоста портала целевого устройства iSCSI:", + "Enter image full path:": "Введите полный путь к образу:", + "Enter imported disk reference (e.g. local-lvm:vm-100-disk-0):": "Введите идентификатор импортированного диска (например, local-lvm:vm-100-disk-0):", + "Enter interface (sata/scsi/virtio/ide):": "Введите интерфейс (sata/scsi/virtio/ide):", + "Enter interface name (e.g. eth0):": "Введите имя интерфейса (например, eth0):", + "Enter mount path on host:": "Введите путь монтирования на хосте:", + "Enter mount point in CT (e.g. /mnt/data):": "Введите точку монтирования в контейнере (например, /mnt/data):", + "Enter mp slot number (e.g. 0):": "Введите номер слота mp (например, 0):", + "Enter name for the imported VM:": "Введите имя импортированной ВМ:", + "Enter networks to advertise (comma-separated CIDR):": "Введите объявляемые сети (CIDR через запятую):", + "Enter new folder name:": "Введите имя новой папки:", + "Enter new group name:": "Введите имя новой группы:", + "Enter partition path (e.g. /dev/sdX1):": "Введите путь к разделу (например, /dev/sdX1):", + "Enter password for": "Введите пароль для", + "Enter password:": "Введите пароль:", + "Enter path manually": "Ввести путь вручную", + "Enter path to analyze:": "Введите путь для анализа:", + "Enter path:": "Введите путь:", + "Enter pool name to clear errors:": "Введите имя пула для сброса ошибок:", + "Enter pool name to export:": "Введите имя пула для экспорта:", + "Enter pool name to import:": "Введите имя пула для импорта:", + "Enter pool name:": "Введите имя пула:", + "Enter pool/dataset name:": "Введите имя пула/набора данных:", + "Enter pool/dataset to destroy:": "Введите пул/набор данных для уничтожения:", + "Enter pool/dataset to mount:": "Введите пул/набор данных для монтирования:", + "Enter search term (leave empty to show all scripts):": "Введите поисковый запрос (оставьте пустым, чтобы показать все скрипты):", + "Enter server IP": "Введите IP-адрес сервера", + "Enter server IP/hostname manually": "Введите IP-адрес или имя хоста сервера вручную", + "Enter server IP:": "Введите IP-адрес сервера:", + "Enter slot number (e.g. 0):": "Введите номер слота (например, 0):", + "Enter storage ID for Proxmox:": "Введите идентификатор хранилища для Proxmox:", + "Enter storage ID:": "Введите идентификатор хранилища:", + "Enter storage name:": "Введите имя хранилища:", + "Enter subnet (e.g., 192.168.0.0/24):": "Введите подсеть (например, 192.168.0.0/24):", + "Enter target disk (e.g. /dev/sdX):": "Введите целевой диск (например, /dev/sdX):", + "Enter target storage name (e.g., local-lvm):": "Введите имя целевого хранилища (например, local-lvm):", + "Enter target storage:": "Введите целевое хранилище:", + "Enter temporary folder path (default: %s):": "Введите путь к временной папке (по умолчанию: %s):", + "Enter the BORG REPOKEY passphrase for target:": "Введите парольную фразу BORG REPOKEY для целевого хранилища:", + "Enter the Samba username:": "Введите имя пользователя Samba:", + "Enter the VMID for the new VM:": "Введите VMID для новой виртуальной машины:", + "Enter the base URL clients and webhook providers will use to reach this Activepieces instance.": "Введите базовый URL, который клиенты и поставщики вебхуков будут использовать для доступа к этому экземпляру Activepieces.", + "Enter the container terminal:": "Войдите в терминал контейнера:", + "Enter the full path to the directory containing disk images:": "Введите полный путь к каталогу с образами дисков:", + "Enter the full path to the host directory:": "Введите полный путь к каталогу на хосте:", + "Enter the full path to the host folder:": "Введите полный путь к папке на хосте:", + "Enter the full path to the output image (e.g., /var/lib/vz/images/output.qcow2):": "Введите полный путь к выходному образу (например, /var/lib/vz/images/output.qcow2):", + "Enter the host mount path:": "Введите путь монтирования на хосте:", + "Enter the iperf3 server IP or hostname:": "Введите IP-адрес или имя хоста сервера iperf3:", + "Enter the maximum size (in MB) to allocate for /var/log in RAM (e.g. 128, 256, 512):": "Введите максимальный объём оперативной памяти (в МБ), выделяемый для /var/log (например, 128, 256, 512):", + "Enter the mount point for the NFS export (e.g., /mnt/mynfs):": "Введите точку монтирования для экспорта NFS (например, /mnt/mynfs):", + "Enter the mount point for the shared folder (e.g., /mnt/myshare):": "Введите точку монтирования для общей папки (например, /mnt/myshare):", + "Enter the mount point inside the CT for": "Введите точку монтирования внутри CT для", + "Enter the number or type the interface name:": "Введите номер или имя интерфейса:", + "Enter the password for Samba user:": "Введите пароль пользователя Samba:", + "Enter the recovery passphrase set when the keyfile was created:": "Введите парольную фразу восстановления, заданную при создании файла ключа:", + "Enter the size in whole GB, for example": "Введите размер в целых ГБ, например", + "Enter the value again.": "Введите значение ещё раз.", + "Enter username for Samba server:": "Введите имя пользователя для сервера Samba:", + "Enter username:": "Введите имя пользователя:", + "Enterprise Proxmox Ceph repository disabled": "Репозиторий Enterprise Proxmox Ceph отключён", + "Enterprise Proxmox repository disabled": "Репозиторий Enterprise Proxmox отключён", + "Enterprise repository present": "Репозиторий Enterprise присутствует", + "Enterprise repository returned 401 Unauthorized (no valid subscription). Switch to the no-subscription repository and retry?": "Репозиторий Enterprise вернул ошибку 401 Unauthorized (нет действующей подписки). Переключиться на репозиторий no-subscription и повторить попытку?", + "Enterprise repository unauthorized and fallback declined by user": "Доступ к репозиторию Enterprise не авторизован, пользователь отказался от перехода на резервный репозиторий", + "Enterprise shares an APT stanza with other components. Split it in the Proxmox repository UI; no repository changed.": "Enterprise находится в одной секции APT с другими компонентами. Выделите его в отдельную секцию через интерфейс управления репозиториями Proxmox; ни один репозиторий не изменён.", + "Entropy generation optimization removed": "Оптимизация генерации энтропии удалена", + "Environment entry without an explicit value": "Запись переменной окружения без явно заданного значения", + "Environment override for an unknown service:": "Переопределение переменных окружения для неизвестной службы:", + "Equivalent manual flow of disk_host.sh: partition, format, mount, persist, register in Proxmox.": "Ручной эквивалент действий disk_host.sh: создать разделы, отформатировать, смонтировать, настроить постоянное монтирование, зарегистрировать в Proxmox.", + "Equivalent manual flow of iscsi_host.sh.": "Ручной эквивалент действий iscsi_host.sh.", + "Equivalent manual flow used by Local Shared Manager.": "Эквивалентная последовательность ручных действий, используемая в Local Shared Manager.", + "Error": "Ошибка", + "Error applying patch. Backups preserved at": "Ошибка применения патча. Резервные копии сохранены в", + "Error details:": "Сведения об ошибке:", + "Error generating UUP download list.": "Ошибка формирования списка загрузок UUP.", + "Error installing": "Ошибка установки", + "Error installing build dependencies. Check": "Ошибка установки зависимостей для сборки. Проверьте", + "Error:": "Ошибка:", + "Error: Cannot create directory": "Ошибка: не удалось создать каталог", + "Error: Failed to download the script.": "Ошибка: не удалось скачать скрипт.", + "Error: No script data found for slug:": "Ошибка: не найдены данные скрипта для идентификатора slug:", + "Error: No write permissions in directory": "Ошибка: нет прав на запись в каталог", + "Essential Proxmox packages installed": "Основные пакеты Proxmox установлены", + "Estimated required free space:": "Ориентировочный требуемый объём свободного места:", + "Etherpad admin page": "Страница администрирования Etherpad", + "Every 12 hours": "Каждые 12 часов", + "Every 3 hours": "Каждые 3 часа", + "Every 6 hours": "Каждые 6 часов", + "Every fail2ban jail ships disabled. Enable the ones you need in /config/fail2ban/jail.local, taking the ready-made jails in /config/fail2ban/jail.d/ as reference, then restart the container.": "Все jail fail2ban поставляются отключёнными. Включите нужные в /config/fail2ban/jail.local, взяв за образец готовые jail из /config/fail2ban/jail.d/, затем перезапустите контейнер.", + "Every hour": "Каждый час", + "Every member of the stack is back to its previous installation.": "Для каждого компонента стека восстановлена предыдущая установка.", + "Every node of this cluster already has this file. A backup of the container does not include it: on another Proxmox host it is written again when the application is recovered from Manage installed OCI applications:": "Этот файл уже есть на каждом узле этого кластера. Он не включается в резервную копию контейнера: на другом хосте Proxmox он записывается заново при восстановлении приложения через пункт «Управление установленными приложениями OCI»:", + "Every path in this backup is kernel-tied: the restore applies these paths automatically via the safe-subset filter and re-merges the operator's tuning.": "Все пути в этой резервной копии привязаны к ядру: при восстановлении они применяются автоматически через фильтр безопасного подмножества, а настройки оператора повторно объединяются с восстанавливаемыми настройками.", + "Everything restorable in this backup will be restored": "Всё, что можно восстановить из этой резервной копии, будет восстановлено", + "Exact name of the remote": "Точное имя удалённого подключения", + "Example output: rootfs: local-lvm:vm-114-disk-0,size=8G": "Пример вывода: rootfs: local-lvm:vm-114-disk-0,size=8G", + "Example target: /dev/sdb": "Пример целевого устройства: /dev/sdb", + "Example value:": "Пример значения:", + "Example: /dev/pve/vm-114-disk-0": "Пример: /dev/pve/vm-114-disk-0", + "Example: /rpool/data/subvol-114-disk-0": "Пример: /rpool/data/subvol-114-disk-0", + "Example: MOUNT_PATH=\"/rpool/data/subvol-114-disk-0\"": "Пример: MOUNT_PATH=\"/rpool/data/subvol-114-disk-0\"", + "Example: cp /etc/pve/lxc/110.conf /etc/pve/lxc/110.conf.bak": "Пример: cp /etc/pve/lxc/110.conf /etc/pve/lxc/110.conf.bak", + "Example: cp /etc/pve/lxc/114.conf /etc/pve/lxc/114.conf.bak": "Пример: cp /etc/pve/lxc/114.conf /etc/pve/lxc/114.conf.bak", + "Example: daily or Mon..Fri 03:00": "Пример: daily или Mon..Fri 03:00", + "Example: mkdir -p /tmp/lxc_convert_114": "Пример: mkdir -p /tmp/lxc_convert_114", + "Example: pct config 110 | grep unprivileged": "Пример: pct config 110 | grep unprivileged", + "Example: pct stop 110": "Пример: pct stop 110", + "Example: pct stop 114": "Пример: pct stop 114", + "Example: pvesm add nfs nfs-nas --server 192.168.1.50 --export /volume1/proxmox --content import,backup": "Пример: pvesm add nfs nfs-nas --server 192.168.1.50 --export /volume1/proxmox --content import,backup", + "Example: pvesm path local-lvm:vm-114-disk-0": "Пример: pvesm path local-lvm:vm-114-disk-0", + "Example: sed -i '/^unprivileged: 1/d' /etc/pve/lxc/110.conf": "Пример: sed -i '/^unprivileged: 1/d' /etc/pve/lxc/110.conf", + "Examples:": "Примеры:", + "Execute destructive rollback?": "Выполнить откат с уничтожением данных?", + "Executing destructive rollback (operator confirmed) ...": "Выполняется откат с уничтожением данных (подтверждён оператором) ...", + "Executing:": "Выполняется:", + "Execution engine for Index-TTS": "Механизм выполнения для Index-TTS", + "Existing Groups": "Существующие группы", + "Existing TLS certificate reused:": "Повторно использован существующий сертификат TLS:", + "Existing ZRAM profile is active but does not match its configuration": "Существующий профиль ZRAM активен, но не соответствует своей конфигурации", + "Existing file, re-downloading...": "Файл уже существует, выполняется повторное скачивание...", + "Existing filesystem:": "Существующая файловая система:", + "Existing hostpci entries detected — they will be reused": "Обнаружены существующие записи hostpci — они будут использованы повторно", + "Existing key is at:": "Существующий ключ находится по пути:", + "Existing recovery envelopes already on PBS stay intact — they still recover the old key with its original passphrase.": "Существующие конверты восстановления на PBS остаются без изменений — они по-прежнему позволяют восстановить старый ключ с помощью его исходной парольной фразы.", + "Existing zram0 configuration is not owned by ProxMenux": "Существующая конфигурация zram0 не принадлежит ProxMenux", + "Exit": "Выход", + "Exit and repair manually": "Выйти и исправить вручную", + "Exit the container terminal:": "Выйдите из терминала контейнера:", + "Exit-Script": "Exit-Script", + "Exit: Stop to create backup manually": "Выход: остановить выполнение, чтобы создать резервную копию вручную", + "Exiting for manual repair...": "Выход для исправления вручную...", + "Expected /tmp/gasket-driver/src not found. The clone seems incomplete or uses an unknown layout.": "Ожидаемый каталог /tmp/gasket-driver/src не найден. Возможно, клонирование выполнено не полностью или используется неизвестная структура каталогов.", + "Expected Makefile not found in /tmp/gasket-driver/src. Source tree is incomplete.": "Ожидаемый Makefile не найден в /tmp/gasket-driver/src. Дерево исходного кода неполное.", + "Expected path:": "Ожидаемый путь:", + "Expected: rootfs/ directory, or /etc /var /root at archive root.": "Ожидается каталог rootfs/ либо /etc /var /root в корне архива.", + "Explore, query and monitor Redis databases in a web interface.": "Просматривайте базы данных Redis, выполняйте запросы и отслеживайте их состояние через веб-интерфейс.", + "Export Format": "Формат экспорта", + "Export Options": "Параметры экспорта", + "Export Path": "Путь экспорта", + "Export Summary": "Сводка экспорта", + "Export VM to OVA or OVF": "Экспорт виртуальной машины в OVA или OVF", + "Export a ZFS pool": "Экспорт пула ZFS", + "Export added successfully.": "Экспорт успешно добавлен.", + "Export backup data to file": "Экспорт данных резервной копии в файл", + "Export completed. The running system has not been modified.": "Экспорт завершён. Работающая система не была изменена.", + "Export completed:": "Экспорт завершён:", + "Export deleted and NFS service restarted.": "Экспорт удалён, служба NFS перезапущена.", + "Export error log": "Журнал ошибок экспорта", + "Export exists:": "Экспорт существует:", + "Export failed.": "Не удалось выполнить экспорт.", + "Export list test": "Проверка списка экспортов", + "Export list:": "Список экспортов:", + "Export mode:": "Режим экспорта:", + "Export not found on server:": "Экспорт не найден на сервере:", + "Export path:": "Путь экспорта:", + "Export permissions allow access": "Права экспорта разрешают доступ", + "Export to file (no system changes)": "Экспорт в файл (без изменений в системе)", + "Export updated successfully.": "Экспорт успешно обновлён.", + "Export:": "Экспорт:", + "Exporting ZFS pool...": "Экспорт пула ZFS...", + "Exports cleared.": "Экспорты очищены.", + "Exports:": "Экспорты:", + "Extended Filesystem 4 (recommended)": "Extended Filesystem 4 (рекомендуется)", + "External ZFS ARC settings restored:": "Внешние настройки ARC для ZFS восстановлены:", + "External ZFS configuration changed after the ProxMenux migration; current file and backup preserved:": "Внешняя конфигурация ZFS изменилась после миграции ProxMenux; текущий файл и резервная копия сохранены:", + "External credential is empty or spans multiple lines": "Внешние учётные данные пусты или занимают несколько строк", + "External disk for backup": "Внешний диск для резервного копирования", + "External field not reserved:": "Внешнее поле не зарезервировано:", + "Extra parameters for minisatip (optional)": "Дополнительные параметры minisatip (необязательно)", + "Extra paths": "Дополнительные пути", + "Extra paths to keep (unmark one to remove it)": "Дополнительные пути для сохранения (снимите отметку с пути, чтобы удалить его)", + "Extracting NVIDIA installer on host...": "Распаковка установщика NVIDIA на хосте...", + "Extracting OVA archive...": "Распаковка архива OVA...", + "Extracting archive...": "Распаковка архива...", + "Extracting data from Borg...": "Извлечение данных из Borg...", + "Extracting data from PBS...": "Извлечение данных из PBS...", + "Extraction completed.": "Извлечение завершено.", + "Extraction failed.": "Не удалось выполнить извлечение.", + "Extraction failed. Check log:": "Не удалось выполнить извлечение. Проверьте журнал:", + "Extraction successful": "Извлечение выполнено успешно", + "FAILED": "FAILED", + "FFmpeg version the node uses (7 by default)": "Версия FFmpeg, используемая узлом (по умолчанию — 7)", + "FINAL CONFIRMATION — DATA WILL BE ERASED": "ОКОНЧАТЕЛЬНОЕ ПОДТВЕРЖДЕНИЕ — ДАННЫЕ БУДУТ УДАЛЕНЫ", + "FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.": "FIleZilla Client — быстрый и надёжный кроссплатформенный клиент FTP, FTPS и SFTP с множеством полезных функций и интуитивно понятным графическим интерфейсом.", + "Fail2Ban - Intrusion Prevention": "Fail2Ban — предотвращение вторжений", + "Fail2Ban Management": "Управление Fail2Ban", + "Fail2Ban has been removed": "Fail2Ban удалён", + "Fail2Ban installation and configuration completed successfully!": "Установка и настройка Fail2Ban успешно завершены!", + "Fail2Ban installed successfully": "Fail2Ban успешно установлен", + "Fail2Ban is NOT running!": "Fail2Ban НЕ запущен!", + "Fail2Ban is currently installed.": "Fail2Ban в настоящее время установлен.", + "Fail2Ban is not installed on this system.": "Fail2Ban не установлен в этой системе.", + "Fail2Ban is running correctly": "Fail2Ban работает корректно", + "Fail2ban is a daemon to ban hosts that cause multiple authentication errors.": "Fail2ban — служба, блокирующая хосты, которые вызывают многочисленные ошибки аутентификации.", + "Failed": "Сбой", + "Failed to access log2ram directory": "Не удалось получить доступ к каталогу log2ram", + "Failed to access share with provided credentials.": "Не удалось получить доступ к общему ресурсу с указанными учётными данными.", + "Failed to access:": "Не удалось получить доступ к:", + "Failed to add CIFS storage to Proxmox.": "Не удалось добавить хранилище CIFS в Proxmox.", + "Failed to add GPU audio function": "Не удалось добавить аудиофункцию GPU", + "Failed to add GPU to target VM": "Не удалось добавить GPU в целевую ВМ", + "Failed to add IOMMU group device": "Не удалось добавить устройство из группы IOMMU", + "Failed to add NFS storage to Proxmox.": "Не удалось добавить хранилище NFS в Proxmox.", + "Failed to add bind mount:": "Не удалось добавить привязку монтирования:", + "Failed to add iSCSI storage to Proxmox.": "Не удалось добавить хранилище iSCSI в Proxmox.", + "Failed to add storage to Proxmox.": "Не удалось добавить хранилище в Proxmox.", + "Failed to allocate virtual disk %s": "Не удалось выделить место для виртуального диска %s", + "Failed to assign Controller/NVMe": "Не удалось назначить контроллер/NVMe", + "Failed to assign disk %s (%s) on %s": "Не удалось назначить диск %s (%s) на %s", + "Failed to assign loader disk": "Не удалось назначить диск загрузчика", + "Failed to assign loader disk to ide0": "Не удалось назначить диск загрузчика на ide0", + "Failed to assign virtual disk": "Не удалось назначить виртуальный диск", + "Failed to clone Lynis from GitHub": "Не удалось клонировать Lynis из GitHub", + "Failed to clone log2ram repository. Check /tmp/log2ram_install.log": "Не удалось клонировать репозиторий log2ram. Проверьте /tmp/log2ram_install.log", + "Failed to configure EFI disk": "Не удалось настроить диск EFI", + "Failed to configure IOMMU automatically.": "Не удалось автоматически настроить IOMMU.", + "Failed to configure Proxmox Backup Server repositories": "Не удалось настроить репозитории Proxmox Backup Server", + "Failed to configure Proxmox repositories": "Не удалось настроить репозитории Proxmox", + "Failed to configure TPM device in VM": "Не удалось настроить устройство TPM в ВМ", + "Failed to configure controller/NVMe: %s": "Не удалось настроить контроллер/NVMe: %s", + "Failed to configure import disk %s as %s": "Не удалось настроить импортируемый диск %s как %s", + "Failed to configure repositories.": "Не удалось настроить репозитории.", + "Failed to configure repositories. Installation aborted.": "Не удалось настроить репозитории. Установка прервана.", + "Failed to configure virtual disk as %s": "Не удалось настроить виртуальный диск как %s", + "Failed to connect to": "Не удалось подключиться к", + "Failed to connect to server.": "Не удалось подключиться к серверу.", + "Failed to copy sources into": "Не удалось скопировать исходные файлы в", + "Failed to create EFI disk": "Не удалось создать диск EFI", + "Failed to create OVA archive.": "Не удалось создать архив OVA.", + "Failed to create TPM state disk": "Не удалось создать диск состояния TPM", + "Failed to create VM": "Не удалось создать виртуальную машину", + "Failed to create base VM. Check VM ID and host configuration.": "Не удалось создать базовую виртуальную машину. Проверьте идентификатор виртуальной машины и конфигурацию хоста.", + "Failed to create directory on host:": "Не удалось создать каталог на хосте:", + "Failed to create directory:": "Не удалось создать каталог:", + "Failed to create disk": "Не удалось создать диск", + "Failed to create encryption key. Backup cancelled — fix the underlying issue and retry.": "Не удалось создать ключ шифрования. Создание резервной копии отменено — устраните причину ошибки и повторите попытку.", + "Failed to create group:": "Не удалось создать группу:", + "Failed to create mount point.": "Не удалось создать точку монтирования.", + "Failed to create mount point:": "Не удалось создать точку монтирования:", + "Failed to create partition table": "Не удалось создать таблицу разделов", + "Failed to create partition table on disk": "Не удалось создать таблицу разделов на диске", + "Failed to create partition.": "Не удалось создать раздел.", + "Failed to create temporary directory:": "Не удалось создать временный каталог:", + "Failed to create the job.": "Не удалось создать задание.", + "Failed to delete the job.": "Не удалось удалить задание.", + "Failed to destroy LXC:": "Не удалось уничтожить LXC:", + "Failed to destroy VM:": "Не удалось уничтожить виртуальную машину:", + "Failed to detect installed NVIDIA driver version.": "Не удалось определить версию установленного драйвера NVIDIA.", + "Failed to detect partition on disk": "Не удалось обнаружить раздел на диске", + "Failed to determine timezone from IP address - keeping current timezone settings": "Не удалось определить часовой пояс по IP-адресу — текущие настройки часового пояса сохранены", + "Failed to disable Start on boot for LXC": "Не удалось отключить запуск при загрузке для LXC", + "Failed to disable Start on boot for VM": "Не удалось отключить запуск при загрузке для виртуальной машины", + "Failed to disable ZFS autotrim for pool:": "Не удалось отключить autotrim ZFS для пула:", + "Failed to download Borg.": "Не удалось скачать Borg.", + "Failed to download Figurine": "Не удалось скачать Figurine", + "Failed to download Helper-Scripts logo": "Не удалось скачать логотип Helper-Scripts", + "Failed to download Home-Lab-Club logo": "Не удалось скачать логотип Home-Lab-Club", + "Failed to download ISO image": "Не удалось скачать ISO-образ", + "Failed to download JC Channel logo": "Не удалось скачать логотип JC Channel", + "Failed to download NVIDIA installer": "Не удалось скачать установщик NVIDIA", + "Failed to download ProxMenux logo": "Не удалось скачать логотип ProxMenux", + "Failed to download Proxmology logo": "Не удалось скачать логотип Proxmology", + "Failed to download VirtIO driver ISO.": "Не удалось скачать ISO-образ с драйверами VirtIO.", + "Failed to download amdgpu_top": "Не удалось скачать amdgpu_top", + "Failed to download loader image.": "Не удалось скачать образ загрузчика.", + "Failed to edit /etc/fstab — remove the line manually.": "Не удалось изменить /etc/fstab — удалите строку вручную.", + "Failed to enable ZFS autotrim for pool:": "Не удалось включить autotrim ZFS для пула:", + "Failed to enable automatic time synchronization": "Не удалось включить автоматическую синхронизацию времени", + "Failed to extract OVA file:": "Не удалось распаковать файл OVA:", + "Failed to extract a nonempty loader image.": "Не удалось извлечь непустой образ загрузчика.", + "Failed to extract package": "Не удалось распаковать пакет", + "Failed to fetch the Google Coral GPG key. Check": "Не удалось получить ключ GPG для Google Coral. Проверьте", + "Failed to format disk as": "Не удалось отформатировать диск в", + "Failed to format partition": "Не удалось отформатировать раздел", + "Failed to format the partition.": "Не удалось отформатировать раздел.", + "Failed to generate Fastfetch configuration.": "Не удалось создать конфигурацию Fastfetch.", + "Failed to get .deb download URL": "Не удалось получить URL для скачивания .deb", + "Failed to get latest version from GitHub": "Не удалось получить последнюю версию с GitHub", + "Failed to get release information from GitHub": "Не удалось получить информацию о выпуске с GitHub", + "Failed to get shares": "Не удалось получить список общих ресурсов", + "Failed to get shares from": "Не удалось получить список общих ресурсов с", + "Failed to import": "Не удалось импортировать", + "Failed to initialize Borg repository at:": "Не удалось инициализировать репозиторий Borg по адресу:", + "Failed to inspect the existing ProxMenux Bash configuration.": "Не удалось проверить существующую конфигурацию Bash для ProxMenux.", + "Failed to install Coral TPU driver inside the container.": "Не удалось установить драйвер Coral TPU внутри контейнера.", + "Failed to install Fail2Ban": "Не удалось установить Fail2Ban", + "Failed to install Fastfetch.": "Не удалось установить Fastfetch.", + "Failed to install NFS client packages.": "Не удалось установить пакеты клиента NFS.", + "Failed to install OVH RTM": "Не удалось установить OVH RTM", + "Failed to install OpenVSwitch": "Не удалось установить OpenVSwitch", + "Failed to install Samba client packages.": "Не удалось установить пакеты клиента Samba.", + "Failed to install amdgpu_top": "Не удалось установить amdgpu_top", + "Failed to install dependencies": "Не удалось установить зависимости", + "Failed to install gawk": "Не удалось установить gawk", + "Failed to install intel-gpu-tools": "Не удалось установить intel-gpu-tools", + "Failed to install libedgetpu1-std. Check": "Не удалось установить libedgetpu1-std. Проверьте", + "Failed to install pigz": "Не удалось установить pigz", + "Failed to install unzip": "Не удалось установить unzip", + "Failed to install zfs-auto-snapshot": "Не удалось установить zfs-auto-snapshot", + "Failed to install:": "Не удалось установить:", + "Failed to migrate the existing ProxMenux Bash configuration.": "Не удалось перенести существующую конфигурацию Bash для ProxMenux.", + "Failed to mount CIFS share on host.": "Не удалось смонтировать общий ресурс CIFS на хосте.", + "Failed to mount NFS share on host.": "Не удалось смонтировать общий ресурс NFS на хосте.", + "Failed to mount NFS share.": "Не удалось смонтировать общий ресурс NFS.", + "Failed to mount Samba share.": "Не удалось смонтировать общий ресурс Samba.", + "Failed to mount container filesystem.": "Не удалось смонтировать файловую систему контейнера.", + "Failed to mount disk": "Не удалось смонтировать диск", + "Failed to obtain public IP address - keeping current timezone settings": "Не удалось получить публичный IP-адрес — текущие настройки часового пояса сохранены", + "Failed to prepare loader download directory.": "Не удалось подготовить каталог для скачивания загрузчика.", + "Failed to reconcile conflicting ZFS ARC settings.": "Не удалось устранить конфликт настроек ZFS ARC.", + "Failed to refresh boot configuration": "Не удалось обновить конфигурацию загрузки", + "Failed to refresh proxmox-boot-tool": "Не удалось обновить proxmox-boot-tool", + "Failed to reinstall Proxmox packages": "Не удалось переустановить пакеты Proxmox", + "Failed to reinstall packages": "Не удалось переустановить пакеты", + "Failed to remove gateway.": "Не удалось удалить шлюз.", + "Failed to remove mount point": "Не удалось удалить точку монтирования", + "Failed to remove storage from Proxmox.": "Не удалось удалить хранилище из Proxmox.", + "Failed to remove storage.": "Не удалось удалить хранилище.", + "Failed to resolve group GID for": "Не удалось определить GID группы для", + "Failed to restart": "Не удалось перезапустить", + "Failed to restart container — restart manually": "Не удалось перезапустить контейнер — перезапустите его вручную", + "Failed to restart gateway.": "Не удалось перезапустить шлюз.", + "Failed to restart network service": "Не удалось перезапустить сетевую службу", + "Failed to restart — restart manually to activate mount": "Не удалось выполнить перезапуск — перезапустите вручную, чтобы активировать монтирование", + "Failed to restore subscription banner completely": "Не удалось полностью восстановить баннер подписки", + "Failed to retrieve Fastfetch download URL.": "Не удалось получить URL для загрузки Fastfetch.", + "Failed to retrieve loader release metadata.": "Не удалось получить метаданные выпуска загрузчика.", + "Failed to run log2ram installer. Check /tmp/log2ram_install.log": "Не удалось запустить установщик log2ram. Проверьте /tmp/log2ram_install.log", + "Failed to save loader image.": "Не удалось сохранить образ загрузчика.", + "Failed to set VM description": "Не удалось задать описание виртуальной машины", + "Failed to set timezone - keeping current settings": "Не удалось установить часовой пояс — текущие настройки сохранены", + "Failed to start CT": "Не удалось запустить контейнер", + "Failed to start container — start manually and check the mount": "Не удалось запустить контейнер — запустите его вручную и проверьте монтирование", + "Failed to start gateway.": "Не удалось запустить шлюз.", + "Failed to start long self-test on": "Не удалось запустить длительную самодиагностику на", + "Failed to start self-test on": "Не удалось запустить самодиагностику на", + "Failed to start the CT.": "Не удалось запустить контейнер.", + "Failed to start the container.": "Не удалось запустить контейнер.", + "Failed to stop gateway.": "Не удалось остановить шлюз.", + "Failed to stop the container.": "Не удалось остановить контейнер.", + "Failed to uninstall amdgpu_top": "Не удалось удалить amdgpu_top", + "Failed to uninstall intel-gpu-tools": "Не удалось удалить intel-gpu-tools", + "Failed to update GRUB": "Не удалось обновить GRUB", + "Failed to update GRUB configuration": "Не удалось обновить конфигурацию GRUB", + "Failed to update Lynis": "Не удалось обновить Lynis", + "Failed to update amdgpu_top": "Не удалось обновить amdgpu_top", + "Failed to update auth.json — restoring backup.": "Не удалось обновить auth.json — выполняется восстановление из резервной копии.", + "Failed to update cluster certificates (might not be in a cluster)": "Не удалось обновить сертификаты кластера (возможно, узел не входит в кластер)", + "Failed to update initramfs.": "Не удалось обновить initramfs.", + "Failed to update intel-gpu-tools": "Не удалось обновить intel-gpu-tools", + "Failed to update package list.": "Не удалось обновить список пакетов.", + "Failed to update package lists": "Не удалось обновить списки пакетов", + "Failed to update the job.": "Не удалось обновить задание.", + "Failed to write": "Не удалось выполнить запись", + "Failed transitions from D3cold to D0": "Неудачные переходы из D3cold в D0", + "Failed. See log:": "Ошибка. См. журнал:", + "FalkorDB": "FalkorDB", + "FalkorDB Redis server arguments (append-only persistence is enabled)": "Аргументы сервера Redis для FalkorDB (сохранение данных в режиме append-only включено)", + "Falling back to each installer with --auto-reinstall...": "В качестве запасного варианта каждый установщик будет запущен с --auto-reinstall...", + "Falling back to manual paste mode.": "Переход в режим ручной вставки.", + "Fast Usenet downloader with a SABnzbd-compatible API": "Быстрый загрузчик Usenet с API, совместимым с SABnzbd", + "Fast full-text and vector search engine.": "Быстрая система полнотекстового и векторного поиска.", + "Fast search engine with a simple HTTP API.": "Быстрая поисковая система с простым HTTP API.", + "Fast, modern web interface for qBittorrent": "Быстрый современный веб-интерфейс для qBittorrent", + "Faster-whisper is a reimplementation of OpenAI's Whisper model using CTranslate2, which is a fast inference engine for Transformer models. This container provides a Wyoming protocol server for faster-whisper.": "Faster-whisper — это повторная реализация модели Whisper от OpenAI с использованием CTranslate2 — быстрого движка инференса для моделей Transformer. Этот контейнер предоставляет сервер протокола Wyoming для faster-whisper.", + "Fastfetch Logo Selection": "Выбор логотипа Fastfetch", + "Fastfetch configuration updated": "Конфигурация Fastfetch обновлена", + "Fastfetch download URL retrieved successfully.": "URL для загрузки Fastfetch успешно получен.", + "Fastfetch installation and configuration completed": "Установка и настройка Fastfetch завершены", + "Fastfetch installed successfully": "Fastfetch успешно установлен", + "Fastfetch is not installed correctly.": "Fastfetch установлен некорректно.", + "Fastfetch is not installed.": "Fastfetch не установлен.", + "Fastfetch is not installed. Run: apt install fastfetch": "Fastfetch не установлен. Выполните: apt install fastfetch", + "Fastfetch now displays: System optimised by: ProxMenux": "Теперь Fastfetch отображает: Система оптимизирована с помощью: ProxMenux", + "Fastfetch removed from system": "Fastfetch удалён из системы", + "Fastfetch will start automatically in the console": "Fastfetch будет автоматически запускаться в консоли", + "Ferdium is a desktop app that helps you organize how you use your favourite apps by combining them into one application.": "Ferdium — настольное приложение, которое помогает упорядочить работу с вашими любимыми приложениями, объединяя их в одном приложении.", + "Fetching NVIDIA driver versions supported by your GPU...": "Получение версий драйвера NVIDIA, поддерживаемых вашим графическим процессором...", + "Figurine installation and configuration completed successfully.": "Установка и настройка Figurine успешно завершены.", + "Figurine is not installed.": "Figurine не установлен.", + "Figurine removed from system": "Figurine удалён из системы", + "File bind mounts do not support spaces:": "Монтирования файлов с привязкой не поддерживают пробелы:", + "File processing made easy!": "Обработка файлов без сложностей!", + "File transfer server with SFTP and a web administration interface.": "Сервер передачи файлов с поддержкой SFTP и веб-интерфейсом администрирования.", + "File:": "Файл:", + "FileBrowser Quantum": "FileBrowser Quantum", + "FileBrowser Quantum (new installation)": "FileBrowser Quantum (новая установка)", + "FileDrop is a free, open source file sharing service": "FileDrop — бесплатный сервис обмена файлами с открытым исходным кодом", + "FileGator": "FileGator", + "FileGator administrator": "Администратор FileGator", + "Files & Downloads": "Файлы и загрузки", + "Files & Sharing": "Файлы и общий доступ", + "Files it writes in the container:": "Файлы, которые он записывает в контейнер:", + "Files volume size in GB": "Размер тома для файлов в ГБ", + "Filesystem": "Файловая система", + "Filesystem Tools Required": "Требуются инструменты для работы с файловой системой", + "Filesystem:": "Файловая система:", + "Final Confirmation": "Окончательное подтверждение", + "Final cleanup of the stack operation completed": "Финальная очистка после операции со стеком завершена", + "Final confirmation": "Окончательное подтверждение", + "Final storage health/status check": "Итоговая проверка исправности и состояния хранилища", + "Finance & Budgeting": "Финансы и планирование бюджета", + "Find your device using https://finds.synology.com": "Найдите своё устройство с помощью https://finds.synology.com", + "Fingerprint:": "Отпечаток:", + "Firefly, the easiest using of WireGuard VPN server, plus version of wg-easy.": "Firefly — максимально простой в использовании VPN-сервер WireGuard, расширенная версия wg-easy.", + "Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.": "Firefox Browser, также известный как Mozilla Firefox или просто Firefox, — свободный веб-браузер с открытым исходным кодом, разработанный Mozilla Foundation и её дочерней компанией Mozilla Corporation. Firefox использует движок Gecko для отображения веб-страниц, реализующий действующие и перспективные веб-стандарты.", + "Firewall allows port": "Межсетевой экран разрешает доступ к порту", + "Firewall settings": "Настройки межсетевого экрана", + "Firmware :": "Прошивка:", + "First Ech0 account (becomes Owner)": "Первая учётная запись Ech0 (получает роль Owner)", + "First Jelu administrator": "Первый администратор Jelu", + "First Watcharr account (becomes administrator)": "Первая учётная запись Watcharr (получает права администратора)", + "First complete DSM setup and verify Web UI/SSH access.": "Сначала завершите настройку DSM и проверьте доступ через веб-интерфейс и SSH.", + "First complete ZimaOS setup and verify remote access (web/SSH).": "Сначала завершите настройку ZimaOS и проверьте удалённый доступ (через веб-интерфейс и SSH).", + "First install the GPU drivers inside the guest and verify remote access (RDP/SSH).": "Сначала установите драйверы GPU в гостевой системе и проверьте удалённый доступ (RDP/SSH).", + "Fix CIFS Permissions": "Исправить права доступа CIFS", + "Fix Ceph version:": "Исправить версию Ceph:", + "Fix NFS Access for Unprivileged LXC": "Исправление доступа к NFS для непривилегированных LXC", + "Fix disk space:": "Устранение нехватки места на диске:", + "Fix kernel version:": "Исправление версии ядра:", + "Fix network connectivity": "Восстановление сетевого подключения", + "Fix network:": "Исправление сети:", + "Fix package conflicts:": "Устранение конфликтов пакетов:", + "Fix repositories:": "Исправление репозиториев:", + "Fix repository configuration": "Исправление конфигурации репозиториев", + "Fix systemd-boot meta-package conflict": "Устранение конфликта метапакета systemd-boot", + "Fix systemd-boot:": "Исправление systemd-boot:", + "Fix: on the host, run": "Исправление: выполните на хосте", + "Flagr": "Flagr", + "Flame administrator": "Администратор Flame", + "Flatnotes": "Flatnotes", + "Flatnotes account": "Учётная запись Flatnotes", + "Flatnotes login name": "Имя пользователя для входа в Flatnotes", + "Flatnotes login password": "Пароль для входа в Flatnotes", + "FlexGet web interface": "Веб-интерфейс FlexGet", + "Flexget is a multipurpose automation tool for all of your media.": "Flexget — многоцелевой инструмент автоматизации для работы со всеми вашими медиафайлами.", + "Flowise 3.0.1 and later create the administrator account from the web interface, the first time it is opened.": "В Flowise версии 3.0.1 и новее учётная запись администратора создаётся через веб-интерфейс при его первом открытии.", + "Flycast is a multi-platform Sega Dreamcast, Naomi, Naomi 2, and Atomiswave emulator derived from reicast.": "Flycast — кроссплатформенный эмулятор Sega Dreamcast, Naomi, Naomi 2 и Atomiswave, созданный на основе reicast.", + "Folder Name": "Имя папки", + "Folders in /mnt": "Папки в /mnt", + "Folders to share, separated by ; (for example /downloads/incoming;/my_movies)": "Папки для общего доступа, разделённые точкой с запятой (;), например /downloads/incoming;/my_movies", + "Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.": "Folding@home — проект распределённых вычислений для моделирования динамики белков, включая процесс их сворачивания и движения белков, связанных с различными заболеваниями. Он объединяет добровольцев, которые участвуют в научных исследованиях, запуская моделирование динамики белков на своих персональных компьютерах. Результаты анализа этих данных помогают учёным лучше понимать биологические процессы и открывают новые возможности для разработки методов лечения.", + "Follow post-restore progress live from ProxMenux Monitor → Backups tab after the reboot.": "После перезагрузки следите за ходом выполнения операций после восстановления в реальном времени на вкладке ProxMenux Monitor → Backups.", + "For LVM - Create mount directory and mount:": "Для LVM — создайте каталог монтирования и выполните монтирование:", + "For ZFS, storage ID must start with a letter and use only letters, numbers, dot, dash, underscore or colon.": "Для ZFS идентификатор хранилища должен начинаться с буквы и содержать только буквы, цифры, точку, дефис, знак подчёркивания или двоеточие.", + "For ZFS/BTRFS - Set the mount path:": "Для ZFS/BTRFS — задайте путь монтирования:", + "For a consistent export, the VM should be stopped.": "Для обеспечения согласованности экспортируемых данных виртуальная машина должна быть остановлена.", + "For any question, issue or bug report, please use the official repository": "Для любых вопросов, сообщений о проблемах или ошибках используйте официальный репозиторий", + "For dedicated GPUs, FLR is required by this policy to reduce VM": "Для выделенных GPU эта политика требует FLR, чтобы уменьшить возникающие у ВМ", + "For example: pct enter 101": "Например: pct enter 101", + "For guest shares add: --options guest": "Для общих ресурсов с гостевым доступом добавьте: --options guest", + "For security reasons, the system cannot format it.": "По соображениям безопасности система не может выполнить его форматирование.", + "For unprivileged containers, use instead:": "Для непривилегированных контейнеров используйте вместо этого:", + "For your safety, a backup of the current configuration will be created automatically before restoring.": "В целях безопасности перед восстановлением будет автоматически создана резервная копия текущей конфигурации.", + "Force APT to use IPv4": "Принудительно использовать IPv4 для APT", + "Force NFSv3:": "Принудительно использовать NFSv3:", + "Force NFSv4:": "Принудительно использовать NFSv4:", + "Force stop VM now?": "Принудительно остановить виртуальную машину сейчас?", + "Force stop a container. Use the correct ": "Принудительно остановить контейнер. Используйте правильный ", + "Force stop a virtual machine. Use the correct ": "Принудительно остановить виртуальную машину. Используйте правильный ", + "Forcing removal...": "Принудительное удаление...", + "Format / Wipe Physical Disk (Safe)": "Форматирование / очистка физического диска (безопасный режим)", + "Format Mode": "Режим форматирования", + "Format USB disk?": "Форматировать USB-диск?", + "Format disk (ERASE all data)": "Форматировать диск (СТЕРЕТЬ все данные)", + "Format failed": "Не удалось выполнить форматирование", + "Format filesystem": "Форматировать файловую систему", + "Format partition:": "Форматировать раздел:", + "Format — erase and create new filesystem": "Форматировать — стереть данные и создать новую файловую систему", + "Format:": "Формат:", + "Format: ERASE all data and create new filesystem": "Форматирование: СТЕРЕТЬ все данные и создать новую файловую систему", + "Formatted and mounted": "Форматирование и монтирование выполнены", + "Formatting": "Форматирование", + "Formatting as": "Форматирование в", + "Formatting partition": "Форматирование раздела", + "Found": "Найдено", + "Found guest-accessible shares:": "Найдены общие ресурсы с гостевым доступом:", + "Free and easy to use Minecraft server management tool.": "Бесплатный и простой в использовании инструмент управления сервером Minecraft.", + "Free public Proxmox repository enabled": "Бесплатный общедоступный репозиторий Proxmox включён", + "Free space OK:": "Свободного места достаточно:", + "Free space on the host, or choose another storage for this backup from Manage installed OCI applications.": "Освободите место на хосте или выберите другое хранилище для этой резервной копии в разделе «Управление установленными приложениями OCI».", + "Free up disk space": "Освободить место на диске", + "Free:": "Свободно:", + "FreeCAD is a general-purpose parametric 3D computer-aided design (CAD) modeler and a building information modeling (BIM) software application with finite element method (FEM) support.": "FreeCAD — универсальная система автоматизированного проектирования (CAD) для параметрического 3D-моделирования и приложение для информационного моделирования зданий (BIM) с поддержкой метода конечных элементов (FEM).", + "French": "Французский", + "Freshrss is a free, self-hostable aggregator for rss feeds.": "Freshrss — бесплатный агрегатор RSS-лент, который можно разместить на собственном сервере.", + "Frigate WebUI": "Frigate WebUI", + "Frigate uses the AMD GPU for detection once /config/config.yaml defines a detector with type: onnx.": "Frigate использует графический процессор AMD для обнаружения объектов, если в /config/config.yaml задан детектор с type: onnx.", + "Frigate uses the Coral once /config/config.yaml defines a detector with type: edgetpu and device: pci.": "Frigate использует Coral, если в /config/config.yaml задан детектор с type: edgetpu и device: pci.", + "Frigate uses the Intel NPU once /config/config.yaml defines a detector with type: openvino and device: NPU.": "Frigate использует Intel NPU, если в /config/config.yaml задан детектор с type: openvino и device: NPU.", + "Full SMART Report": "Полный отчёт SMART", + "Full SMART info and attributes": "Полная информация и атрибуты SMART", + "Full format — new GPT partition + filesystem": "Полное форматирование — новый раздел GPT + файловая система", + "Full format — new GPT partition + filesystem": "Полное форматирование — новый раздел GPT + файловая система", + "Full format: clean + new GPT partition + filesystem": "Полное форматирование: очистка + новый раздел GPT + файловая система", + "Full log:": "Полный журнал:", + "Full path": "Полный путь", + "Full report — complete SMART data (scrollable)": "Полный отчёт — все данные SMART (с прокруткой)", + "Full system upgrade, including dependencies": "Полное обновление системы, включая зависимости", + "Function '%s' is not defined in the %s flow.": "Функция '%s' не определена в сценарии %s.", + "Function Level Reset (FLR) not available": "Сброс на уровне функции (FLR) недоступен", + "GID already in use:": "GID уже используется:", + "GID in CT": "GID в CT", + "GIMP is a free and open-source raster graphics editor used for image manipulation (retouching) and image editing, free-form drawing, transcoding between different image file formats, and more specialized tasks. It is extensible by means of plugins, and scriptable.": "GIMP — свободный растровый графический редактор с открытым исходным кодом, предназначенный для обработки (ретуширования) и редактирования изображений, свободного рисования, преобразования файлов изображений из одного формата в другой и решения более специализированных задач. Его возможности можно расширять с помощью плагинов и автоматизировать с помощью скриптов.", + "GPU": "GPU", + "GPU -> VM Mode Detected": "Обнаружен режим GPU -> ВМ", + "GPU Already Added": "GPU уже добавлен", + "GPU Already Assigned to Another VM": "GPU уже назначен другой ВМ", + "GPU Already Assigned to This VM": "GPU уже назначен этой ВМ", + "GPU Busy in Running VM": "GPU занят работающей ВМ", + "GPU Not Available for Reliable VM Passthrough": "GPU недоступен для надёжного проброса в ВМ", + "GPU Not Compatible with VM Passthrough": "GPU не поддерживает проброс в ВМ", + "GPU Passthrough Commands": "Команды для проброса GPU", + "GPU Passthrough Not Configured": "Проброс GPU не настроен", + "GPU Passthrough to VM": "Проброс GPU в ВМ", + "GPU Passthrough to VM (from LXC)": "Проброс GPU в ВМ (из LXC)", + "GPU Passthrough to VM (reassign from LXC and another VM)": "Проброс GPU в ВМ (переназначение из LXC и другой ВМ)", + "GPU Passthrough to VM (reassign from another VM)": "Проброс GPU в ВМ (переназначение из другой ВМ)", + "GPU ROM dump to /usr/share/kvm/": "Сохранение дампа ROM GPU в /usr/share/kvm/", + "GPU ROM dumped to": "Дамп ROM GPU сохранён в", + "GPU ROM extracted from ACPI VFCT table to": "ROM GPU извлечён из таблицы ACPI VFCT и сохранён в", + "GPU Switch Mode": "Режим переключения GPU", + "GPU Switch Mode Blocked": "Режим переключения GPU заблокирован", + "GPU Used in LXC Containers": "GPU используется в контейнерах LXC", + "GPU access removed from LXC": "Доступ к GPU из LXC удалён", + "GPU added": "GPU добавлен", + "GPU already present in target VM — existing hostpci entry reused": "GPU уже присутствует в целевой ВМ — использована существующая запись hostpci", + "GPU audio added": "Аудиоустройство GPU добавлено", + "GPU audio already present in target VM — existing hostpci entry reused": "Аудиоустройство GPU уже присутствует в целевой ВМ — использована существующая запись hostpci", + "GPU available for machine learning:": "GPU доступен для машинного обучения:", + "GPU driver blacklisted": "Драйвер GPU добавлен в чёрный список", + "GPU guard hook will block concurrent start when another VM is already using this GPU": "Защитный хук GPU заблокирует одновременный запуск, если другая ВМ уже использует этот GPU", + "GPU host driver blacklisted in /etc/modprobe.d/blacklist.conf": "Драйвер GPU на хосте добавлен в чёрный список в /etc/modprobe.d/blacklist.conf", + "GPU in VM Passthrough Mode": "GPU в режиме проброса в ВМ", + "GPU kept in source VM config": "GPU сохранён в конфигурации исходной ВМ", + "GPU not driven by this version": "Эта версия драйвера не поддерживает данный GPU", + "GPU not found with slot": "GPU не найден в слоте", + "GPU passthrough assistant not found. Later, open {menu} → {action} from the main menu to try again.": "Помощник проброса GPU не найден. Позже откройте {menu} → {action} в главном меню, чтобы повторить попытку.", + "GPU passthrough assistant not found. You can run it later from Hardware Graphics.": "Помощник проброса GPU не найден. Его можно запустить позже из раздела Hardware Graphics.", + "GPU passthrough changes require a host reboot.": "Изменения настроек проброса GPU требуют перезагрузки хоста.", + "GPU passthrough configuration will continue now and will become effective after host reboot.": "Настройка проброса GPU продолжится сейчас и вступит в силу после перезагрузки хоста.", + "GPU passthrough configured for LXC": "Проброс GPU настроен для LXC", + "GPU passthrough configured for VM": "Проброс GPU настроен для ВМ", + "GPU passthrough to VMs requires IOMMU to be enabled in the kernel.": "Для проброса GPU в ВМ необходимо включить IOMMU в ядре.", + "GPU passthrough was not applied.": "Проброс GPU не был применён.", + "GPU passthrough was skipped (no compatible GPU detected).": "Проброс GPU пропущен (совместимый GPU не обнаружен).", + "GPU recognition uses 8 GB of RAM and a limit of 4 CPU equivalents. These resources were tested in the lab and are not a universal minimum. Compatibility depends on the GPU, the models and the kernel. NVIDIA uses the GPUs of the Toolkit inventory; Intel keeps the CPU topology.": "Распознавание с использованием GPU задействует 8 ГБ оперативной памяти и ограничено эквивалентом 4 процессоров. Эти ресурсы были проверены в лабораторных условиях и не являются универсальным минимумом. Совместимость зависит от GPU, моделей и ядра. NVIDIA использует GPU из списка устройств Toolkit; Intel сохраняет топологию процессора.", + "GPU removed from VM": "GPU удалён из ВМ", + "GPU removed from VM config": "GPU удалён из конфигурации ВМ", + "GPU render device": "Устройство рендеринга GPU", + "GPU switch complete: LXC mode prepared.": "Переключение GPU завершено: режим LXC подготовлен.", + "GPU switch complete: VM mode prepared.": "Переключение GPU завершено: режим ВМ подготовлен.", + "GPU switch mode completed. No reboot required.": "Переключение режима GPU завершено. Перезагрузка не требуется.", + "GPU verified:": "GPU проверен:", + "GPU will be removed from source VM config": "GPU будет удалён из конфигурации исходной ВМ", + "GPU will remain configured in source VM": "GPU останется настроенным в исходной ВМ", + "GPU/TPU - Manual CLI Guide": "GPU/TPU — руководство по ручной настройке через CLI", + "GPU/TPU Passthrough Commands": "Команды проброса GPU/TPU", + "GPUs and Coral-TPU Menu": "Меню GPU и Coral-TPU", + "GRUB config file not found; skipping GRUB changes": "Файл конфигурации GRUB не найден; изменения GRUB пропускаются", + "GRUB configuration updated": "Конфигурация GRUB обновлена", + "GRUB_CMDLINE_LINUX_DEFAULT not found in GRUB config": "GRUB_CMDLINE_LINUX_DEFAULT не найден в конфигурации GRUB", + "GUI mode (if available)": "Режим графического интерфейса (если доступен)", + "GZDoom is a feature centric port for all Doom engine games, based on ZDoom, adding an OpenGL renderer and powerful scripting capabilities.": "GZDoom — многофункциональный порт на базе ZDoom для всех игр на движке Doom, добавляющий рендеринг OpenGL и широкие возможности написания скриптов.", + "GZIP - slower, widely compatible": "GZIP — медленнее, обладает широкой совместимостью", + "Gameyfin Web UI": "Веб-интерфейс Gameyfin", + "Gaming & Leisure": "Игры и досуг", + "Gateway is not installed.": "Шлюз не установлен.", + "Gateway removed.": "Шлюз удалён.", + "Gateway restarted.": "Шлюз перезапущен.", + "Gateway started.": "Шлюз запущен.", + "Gateway stopped.": "Шлюз остановлен.", + "Gathering container privilege information...": "Сбор информации о привилегиях контейнера...", + "Gatus": "Gatus", + "Generate RSS feeds from websites and services.": "Создавайте RSS-ленты из веб-сайтов и сервисов.", + "Generate UML diagrams from text in a self-hosted web interface.": "Создавайте UML-диаграммы из текста в веб-интерфейсе, размещённом на собственном сервере.", + "Generate a new key and authorize it on the server automatically (recommended)": "Создать новый ключ и автоматически разрешить его использование на сервере (рекомендуется)", + "Generate a new key, show me the line to paste manually": "Создать новый ключ и показать строку для вставки вручную", + "Generate a new keyfile": "Создать новый файл ключа", + "Generated Miniflux administrator": "Создана учётная запись администратора Miniflux", + "Generated Paperless administrator": "Создана учётная запись администратора Paperless", + "Generated Tandoor administrator": "Создана учётная запись администратора Tandoor", + "Generated access key": "Создан ключ доступа", + "Generated administrator login": "Создан логин администратора", + "Generated linkding administrator": "Создана учётная запись администратора linkding", + "Generated password hashing salt": "Создана соль для хеширования пароля", + "Generated signing secret": "Создан секрет для подписи", + "Generated: {generated}; failed: {failed}; family: {provider}": "Создано: {generated}; не удалось: {failed}; семейство: {provider}", + "Generating OVF descriptor...": "Создание дескриптора OVF...", + "Generating dkms.conf...": "Создание dkms.conf...", + "Generating manifest...": "Создание манифеста...", + "Generating missing locale:": "Генерация отсутствующей локали:", + "Generic SCSI device associated with the drive (e.g. /dev/sg2)": "Устройство Generic SCSI, связанное с накопителем (например, /dev/sg2)", + "German": "Немецкий", + "Get a list of all your containers:": "Получите список всех ваших контейнеров:", + "Get the actual disk path:": "Получите фактический путь к диску:", + "Get the container's storage information:": "Получите сведения о хранилище контейнера:", + "Get up and running with large language models locally": "Начните работать с большими языковыми моделями локально", + "Git installed": "Git установлен", + "GitHub returned HTTP 403 for {url}. Set GITHUB_TOKEN to raise the API rate limit.": "GitHub вернул HTTP 403 для {url}. Задайте GITHUB_TOKEN, чтобы увеличить лимит запросов к API.", + "GitHub returned HTTP {status} for {url}.": "GitHub вернул HTTP {status} для {url}.", + "GitHub returned a truncated tree for the CasaOS catalogue": "GitHub вернул неполное дерево для каталога CasaOS", + "GitQlient is a multi-platform Git client originally forked from QGit. Nowadays it goes beyond of just a fork and adds a lot of new functionality.": "GitQlient — кроссплатформенный клиент Git, изначально созданный как ответвление QGit. Теперь он выходит за рамки простого ответвления и предлагает множество новых возможностей.", + "Github Desktop is an open source Electron-based GitHub app. It is written in TypeScript and uses React.": "Github Desktop — приложение GitHub с открытым исходным кодом на базе Electron. Оно написано на TypeScript и использует React.", + "Global settings and SSH jail configured": "Глобальные параметры и jail для SSH настроены", + "Gluetun/VPN not yet available: this suite does not route downloads through a VPN.": "Gluetun/VPN пока недоступен: этот набор приложений не направляет загрузки через VPN.", + "Go HTTPBin": "Go HTTPBin", + "Go to \"Manage custom paths\" and remove your custom entry that includes the destination": "Перейдите в раздел «Управление пользовательскими путями» и удалите добавленную вами запись, которая содержит путь назначения", + "Gokapi": "Gokapi", + "Google only ships an official libedgetpu APT repository for Debian/Ubuntu. Hardware passthrough is already written to": "Google предоставляет официальный APT-репозиторий libedgetpu только для Debian/Ubuntu. Конфигурация проброса оборудования уже записана в", + "Gotify": "Gotify", + "Gotify administrator": "Администратор Gotify", + "Graceful shutdown timed out.": "Истекло время ожидания корректного завершения работы.", + "Grafana Loki": "Grafana Loki", + "Grafana Pyroscope": "Grafana Pyroscope", + "Grafana administrator": "Администратор Grafana", + "Grafana is a complete observability stack that allows you to monitor and analyze metrics, logs and traces. It allows you to query, visualize, alert on and understand your data no matter where it is stored.": "Grafana — комплексный набор средств обеспечения наблюдаемости, который позволяет отслеживать и анализировать метрики, журналы и трассировки. Он позволяет выполнять запросы к данным, визуализировать и анализировать их, а также настраивать оповещения на их основе независимо от того, где хранятся данные.", + "Grafana web interface": "Веб-интерфейс Grafana", + "Graph database for native graph queries and GraphQL.": "Графовая база данных с поддержкой нативных графовых запросов и GraphQL.", + "Graph database with a built-in browser.": "Графовая база данных со встроенным браузером.", + "Grav is a Fast, Simple, and Flexible, file-based Web-platform.": "Grav — быстрая, простая и гибкая веб-платформа на основе файлов.", + "GreptimeDB": "GreptimeDB", + "Grocy (new installation; restored data keeps its credentials)": "Grocy (новая установка; при восстановлении данных сохраняются их учётные данные)", + "Grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.": "Grocy — ERP-система для вашей кухни! Сокращайте количество пищевых отходов и управляйте домашними делами с помощью этой замечательной утилиты.", + "Group": "Группа", + "Group 'sharedfiles' already exists inside the CT": "Группа 'sharedfiles' уже существует в контейнере", + "Group GID:": "GID группы:", + "Group created:": "Создана группа:", + "Group name cannot be empty.": "Имя группы не может быть пустым.", + "Group:": "Группа:", + "Groups": "Группы", + "Groups:": "Группы:", + "Guest Access Denied": "Гостевой доступ запрещён", + "Guest Access Error": "Ошибка гостевого доступа", + "Guest Access Failed": "Не удалось получить гостевой доступ", + "Guest Access Validation Results:": "Результаты проверки гостевого доступа:", + "Guest Agent configuration applied": "Настройки гостевого агента применены", + "Guest Listing Failed": "Не удалось получить список через гостевой доступ", + "Guest access (no authentication)": "Гостевой доступ (без аутентификации)", + "Guest access confirmed for share:": "Гостевой доступ подтверждён для общего ресурса:", + "Guest access denied for share:": "Гостевой доступ к общему ресурсу запрещён:", + "Guest access failed.": "Не удалось получить гостевой доступ.", + "Guest access is not allowed on this server.": "На этом сервере гостевой доступ не разрешён.", + "Guest access test failed for share:": "Проверка гостевого доступа не удалась для общего ресурса:", + "Guest access test:": "Проверка гостевого доступа:", + "Guest access validated successfully!": "Гостевой доступ успешно проверен!", + "Guest access works for listing, but no shares are available.": "Гостевой доступ позволяет получить список, но общих ресурсов нет.", + "Guest accessible share": "Общий ресурс с гостевым доступом", + "Guest accessible:": "Гостевой доступ:", + "Guest agent detection completed": "Обнаружение гостевого агента завершено", + "Guest agent installation process completed": "Установка гостевого агента завершена", + "Guest agent packages removed": "Пакеты гостевого агента удалены", + "Guest configs restored:": "Восстановлено конфигураций гостевых систем:", + "Guest share access tests failed:": "Проверки гостевого доступа к общему ресурсу завершились ошибкой:", + "Guest share listing failed.": "Не удалось получить список общих ресурсов с гостевым доступом.", + "Guest share listing successful": "Список общих ресурсов с гостевым доступом успешно получен", + "Guestroll": "Guestroll", + "Guestroll administrator": "Администратор Guestroll", + "Guests": "Гостевые системы", + "Guided Cleanup Available": "Доступна пошаговая очистка", + "Guided Repair Available": "Доступно пошаговое исправление", + "HA groups will be migrated to HA rules automatically": "Группы HA будут автоматически преобразованы в правила HA", + "HA services disabled (configs preserved)": "Службы HA отключены (конфигурации сохранены)", + "HAOS One is a community image that runs Docker inside the container. The LXC stays unprivileged, but the inner AppArmor profiles may not be available. The first start downloads Home Assistant Core and its add-ons. If the check fails, the CT and /mnt/data are kept for diagnosis.": "HAOS One — это образ от сообщества, в котором Docker запускается внутри контейнера. Контейнер LXC остаётся непривилегированным, но внутренние профили AppArmor могут быть недоступны. При первом запуске загружаются Home Assistant Core и его дополнения. Если проверка завершится ошибкой, CT и /mnt/data сохраняются для диагностики.", + "HAOS One profile declined": "Профиль HAOS One отклонён", + "HAOS One requires an unprivileged unmanaged LXC with nesting and keyctl, 2 cores, 2048 MB RAM, rootfs of at least 12 GB and /mnt/data of at least 16 GB on a container volume included in backups": "Для HAOS One требуется непривилегированный неуправляемый контейнер LXC с включёнными nesting и keyctl, 2 ядра, 2048 МБ оперативной памяти, rootfs объёмом не менее 12 ГБ и /mnt/data объёмом не менее 16 ГБ на томе контейнера, включённом в резервные копии", + "HLS stream: port 6878, path /ace/manifest.m3u8?id= followed by the channel ID.": "Поток HLS: порт 6878, путь /ace/manifest.m3u8?id=, после которого указывается идентификатор канала.", + "HOSTNAME": "HOSTNAME", + "HTML5 Network Speed Test Server.": "Сервер проверки скорости сети на базе HTML5.", + "HTTP CONNECT proxy: use the same IP address and port 8118. These addresses are proxy settings, not web links.": "Прокси HTTP CONNECT: используйте тот же IP-адрес и порт 8118. Эти адреса предназначены для настройки прокси, а не являются веб-ссылками.", + "HTTP request and response testing service.": "Сервис для тестирования HTTP-запросов и ответов.", + "HTTP service check without a saved URL": "Проверка службы HTTP без сохранённого URL", + "Habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as On, Off and brightness commands of the hue protocol. This bridge can control most devices that have a distinct API.": "Habridge эмулирует API Philips Hue для других шлюзов домашней автоматизации, таких как Amazon Echo/Dot Gen 1 (у Gen 2 возникают проблемы с обнаружением ha-bridge), и других систем, поддерживающих Philips Hue. Мост обрабатывает основные команды протокола Hue: включение, выключение и изменение яркости. Этот мост может управлять большинством устройств, имеющих отдельный API.", + "HandBrake is an open-source tool, built by volunteers, for converting video from nearly any format to a selection of modern, widely supported codecs.": "HandBrake — инструмент с открытым исходным кодом, созданный добровольцами для преобразования видео практически из любого формата с использованием набора современных широко поддерживаемых кодеков.", + "Hardening SSH: setting MaxAuthTries to 3...": "Усиление защиты SSH: установка MaxAuthTries в 3...", + "Hardware acceleration for Emby": "Аппаратное ускорение для Emby", + "Hardware acceleration for FileFlows": "Аппаратное ускорение для FileFlows", + "Hardware acceleration for Frigate": "Аппаратное ускорение для Frigate", + "Hardware acceleration for Immich": "Аппаратное ускорение для Immich", + "Hardware acceleration for Jellyfin": "Аппаратное ускорение для Jellyfin", + "Hardware acceleration for Plex": "Аппаратное ускорение для Plex", + "Hardware acceleration for Roon Server": "Аппаратное ускорение для Roon Server", + "Hardware acceleration for Stremio": "Аппаратное ускорение для Stremio", + "Hardware acceleration for Tdarr": "Аппаратное ускорение для Tdarr", + "Hardware acceleration options:": "Параметры аппаратного ускорения:", + "Hardware compatibility — these items will be skipped to keep the boot safe:": "Совместимость оборудования — следующие пункты будут пропущены для обеспечения безопасной загрузки:", + "Hardware passthrough is already configured — the Coral device is visible inside the container as /dev/apex_0 (M.2) and/or /dev/bus/usb (USB).": "Проброс оборудования уже настроен — устройство Coral доступно внутри контейнера как /dev/apex_0 (M.2) и/или /dev/bus/usb (USB).", + "Hardware: GPUs and Coral-TPU": "Оборудование: графические процессоры и Coral-TPU", + "Have a Private Social Space Hosted on Your Site": "Создайте приватное пространство для общения на своём сайте", + "Have valid backups of all VMs and containers": "Убедитесь, что у вас есть пригодные для восстановления резервные копии всех виртуальных машин и контейнеров", + "Health check failed:": "Проверка работоспособности завершилась неудачно:", + "Health dashboards and endpoint monitoring.": "Панели состояния и мониторинг конечных точек.", + "Healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface.": "Healthchecks — система контроля выполнения заданий cron. Она включает веб-сервер, принимающий сигналы от ваших заданий cron, и веб-интерфейс.", + "HedgeDoc gives you access to all your files wherever you are.": "HedgeDoc даёт доступ ко всем вашим файлам, где бы вы ни находились.", + "HedgeDoc is a self-hosted collaborative Markdown editor for notes.": "HedgeDoc — редактор заметок в формате Markdown для совместной работы, размещаемый на собственном сервере.", + "Heimdall is a way to organise all those links to your most used web sites and web applications in a simple way.": "Heimdall позволяет легко упорядочить ссылки на наиболее часто используемые вами веб-сайты и веб-приложения.", + "Helium is a Chromium-based web browser made for people, with love. Privacy-first with unbiased ad-blocking.": "Helium — веб-браузер на базе Chromium, созданный для людей и с любовью. Конфиденциальность на первом месте, блокировка рекламы — без исключений в пользу отдельных рекламодателей.", + "Help & Info (commands)": "Справка и информация (команды)", + "Help & Information": "Справка и информация", + "Help and Info": "Справка и информация", + "Help and Info Commands": "Команды справки и получения информации", + "Helper-Scripts logo applied": "Логотип Helper-Scripts применён", + "Helper:": "Помощник:", + "Hermes WebUI": "Hermes WebUI", + "HertzBeat": "HertzBeat", + "HertzBeat administrator": "Администратор HertzBeat", + "Hidden for safety": "Скрыто в целях безопасности", + "Hidden:": "Скрыто:", + "High Availability services have been enabled successfully": "Службы высокой доступности успешно включены", + "High Availability setup completed": "Настройка высокой доступности завершена", + "High availability resources are not supported by this profile": "Ресурсы высокой доступности этим профилем не поддерживаются", + "High availability resources are not supported for stacks": "Ресурсы высокой доступности не поддерживаются для стеков", + "High risk confirmation": "Подтверждение действия с высоким риском", + "High-Risk GPU Power State": "Состояние питания GPU с высоким риском", + "Home Assistant": "Home Assistant", + "Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server": "Home Assistant Core — система домашней автоматизации с открытым исходным кодом, в которой приоритет отдан локальному управлению и конфиденциальности. Развивается благодаря всемирному сообществу энтузиастов и любителей мастерить своими руками. Идеально подходит для запуска на Raspberry Pi или локальном сервере", + "Home Assistant OS cannot be checked without an IP address": "Невозможно проверить Home Assistant OS без IP-адреса", + "Home Assistant OS did not pass the Supervisor, Core and Observer checks": "Home Assistant OS не прошла проверки Supervisor, Core и Observer", + "Home Assistant OS ready: Supervisor, Core and Observer running": "Home Assistant OS готова: Supervisor, Core и Observer работают", + "Home Assistant OS was not started: its addresses will be known once Core is running.": "Home Assistant OS не была запущена: её адреса станут известны после запуска Core.", + "Home Assistant Observer": "Home Assistant Observer", + "Home Automation systems": "Системы домашней автоматизации", + "Home automation platform for smart devices.": "Платформа домашней автоматизации для умных устройств.", + "Home automation server with an extensive module system.": "Сервер домашней автоматизации с обширной системой модулей.", + "Home-Lab-Club logo applied": "Логотип Home-Lab-Club применён", + "HomeKit support for the impatient.": "Поддержка HomeKit для нетерпеливых.", + "Homebridge UI": "Интерфейс Homebridge", + "Host": "Хост", + "Host Backup → Borg": "Резервное копирование хоста → Borg", + "Host Backup → Local archive": "Резервное копирование хоста → Локальный архив", + "Host Backup → PBS": "Резервное копирование хоста → PBS", + "Host Backup & Restore": "Резервное копирование и восстановление хоста", + "Host Config Backup": "Резервное копирование конфигурации хоста", + "Host Config Backup / Restore": "Резервное копирование / восстановление конфигурации хоста", + "Host Config Restore": "Восстановление конфигурации хоста", + "Host Coral node (e.g. /dev/apex_0)": "Узел устройства Coral на хосте (например, /dev/apex_0)", + "Host DRM node (e.g. /dev/dri/renderD128)": "Узел устройства DRM на хосте (например, /dev/dri/renderD128)", + "Host DVB tuners": "DVB-тюнеры хоста", + "Host Directory": "Каталог хоста", + "Host Directory to LXC Mount Point": "Подключение каталога хоста к точке монтирования LXC", + "Host Directory:": "Каталог хоста:", + "Host GPU binding changed — reboot required.": "Привязка GPU хоста изменена — требуется перезагрузка.", + "Host GPU detected": "Обнаружен GPU хоста", + "Host GPU is already bound to vfio-pci. Host reconfiguration/reboot should not be required for this VM-to-VM reassignment.": "GPU хоста уже привязан к vfio-pci. Для этого переназначения устройства с одной ВМ на другую изменение конфигурации или перезагрузка хоста не должны потребоваться.", + "Host IP": "IP-адрес хоста", + "Host Management": "Управление хостом", + "Host Mount Path": "Путь монтирования на хосте", + "Host NFS/Samba as Proxmox Storage (pvesm)": "NFS/Samba хоста в качестве хранилища Proxmox (pvesm)", + "Host Path": "Путь на хосте", + "Host Path:": "Путь на хосте:", + "Host Storage (NFS / Samba via Proxmox)": "Хранилище хоста (NFS / Samba через Proxmox)", + "Host USB bus": "Шина USB хоста", + "Host USB node (e.g. /dev/ttyACM0 or /dev/bus/usb/003/004)": "Узел устройства USB на хосте (например, /dev/ttyACM0 или /dev/bus/usb/003/004)", + "Host VFIO config was already up to date — no reboot needed.": "Конфигурация VFIO хоста уже актуальна — перезагрузка не требуется.", + "Host VFIO configuration already up to date": "Конфигурация VFIO хоста уже актуальна", + "Host VFIO configuration changed (initramfs updated). Reboot required before starting the VM.": "Конфигурация VFIO хоста изменена (initramfs обновлён). Перед запуском виртуальной машины требуется перезагрузка.", + "Host VFIO configuration changed — reboot required before starting the VM.": "Конфигурация VFIO хоста изменена — перед запуском виртуальной машины требуется перезагрузка.", + "Host already in VFIO mode — skipping host reconfiguration for VM reassignment": "Хост уже работает в режиме VFIO — повторная настройка хоста для переназначения виртуальной машины пропускается", + "Host audio devices": "Аудиоустройства хоста", + "Host backup attached to PVE job": "Резервная копия хоста привязана к заданию PVE", + "Host data is not restored by the backup; confirm it with --acknowledge-external-data": "Данные хоста не восстанавливаются из резервной копии; подтвердите это с помощью --acknowledge-external-data", + "Host device for /dev/kvm": "Устройство хоста для /dev/kvm", + "Host device for /dev/net/tun": "Устройство хоста для /dev/net/tun", + "Host device for /dev/ttyUSB0": "Устройство хоста для /dev/ttyUSB0", + "Host device for /dev/video10": "Устройство хоста для /dev/video10", + "Host device for /dev/video11": "Устройство хоста для /dev/video11", + "Host device for /dev/video12": "Устройство хоста для /dev/video12", + "Host device node": "Узел устройства хоста", + "Host directories are not included in the backup and are not reverted by a recovery.": "Каталоги хоста не входят в резервную копию и не возвращаются в прежнее состояние при восстановлении.", + "Host directories are not included in the backups and are not reverted by a recovery.": "Каталоги хоста не входят в резервные копии и не возвращаются в прежнее состояние при восстановлении.", + "Host directories are not reverted by the backup (confirmed beforehand)": "Каталоги хоста не возвращаются к прежнему состоянию при восстановлении из резервной копии (подтверждено заранее)", + "Host directories cannot be included in vzdump": "Каталоги хоста нельзя включить в vzdump", + "Host directories cannot be part of the vzdump backup": "Каталоги хоста не могут входить в резервную копию vzdump", + "Host directories that are kept, with their content:": "Каталоги хоста, которые сохраняются вместе с содержимым:", + "Host directory": "Каталог хоста", + "Host directory (created if it does not exist)": "Каталог хоста (будет создан, если не существует)", + "Host directory (not included in Proxmox backups)": "Каталог хоста (не включается в резервные копии Proxmox)", + "Host directory access for unprivileged containers has been prepared above": "Доступ непривилегированных контейнеров к каталогу хоста настроен выше", + "Host directory kept, with its content:": "Каталог хоста сохраняется вместе с содержимым:", + "Host directory listed in saved records (not targeted for removal):": "Каталог хоста, указанный в сохранённых записях (не подлежит удалению):", + "Host directory permissions updated — unprivileged containers can now access it": "Права доступа к каталогу хоста обновлены — теперь непривилегированные контейнеры могут получить к нему доступ", + "Host directory:": "Каталог хоста:", + "Host firewall": "Межсетевой экран хоста", + "Host firewall already allows:": "Межсетевой экран хоста уже разрешает:", + "Host firewall rule added:": "Добавлено правило межсетевого экрана хоста:", + "Host firewall rule removed:": "Удалено правило межсетевого экрана хоста:", + "Host fstab CIFS Mounts:": "Монтирования CIFS в fstab хоста:", + "Host fstab CIFS mounts (not registered with pvesm):": "Монтирования CIFS в fstab хоста (не зарегистрированы в pvesm):", + "Host fstab CIFS mounts:": "Монтирования CIFS в fstab хоста:", + "Host fstab Mount:": "Монтирование в fstab хоста:", + "Host fstab NFS Mounts:": "Монтирования NFS в fstab хоста:", + "Host fstab NFS mounts (not registered with pvesm):": "Монтирования NFS в fstab хоста (не зарегистрированы в pvesm):", + "Host fstab NFS mounts:": "Монтирования NFS в fstab хоста:", + "Host fstab mounts (not registered as Proxmox storage):": "Монтирования в fstab хоста (не зарегистрированы как хранилища Proxmox):", + "Host has an active subscription but no active {short} repository. Configure its Enterprise source in {ui}; no repository changed.": "У хоста есть действующая подписка, но нет активного репозитория {short}. Настройте соответствующий источник Enterprise в {ui}; ни один репозиторий не был изменён.", + "Host identity (hostname, hosts)": "Идентификационные данные хоста (hostname, hosts)", + "Host kernel module loaded:": "Загружен модуль ядра хоста:", + "Host monitor configured: shared PID and network namespaces, LXCFS disabled in this container": "Мониторинг хоста настроен: используются общие пространства имён PID и сети, LXCFS отключён в этом контейнере", + "Host monitor verified: PID and network namespaces and memory match the host": "Мониторинг хоста проверен: пространства имён PID и сети, а также объём памяти совпадают с данными хоста", + "Host monitor: shared PID/network and privileged access. A compromised image could affect Proxmox. Use only on trusted networks.": "Мониторинг хоста: общие пространства имён PID и сети, а также привилегированный доступ. Скомпрометированный образ может повлиять на Proxmox. Используйте только в доверенных сетях.", + "Host monitoring declined": "Мониторинг хоста отклонён", + "Host offline Wikipedia and other ZIM libraries.": "Размещайте офлайн-версию Wikipedia и другие библиотеки ZIM.", + "Host path for": "Путь на хосте для", + "Host paths found in container configs or saved records (not targeted for removal):": "Пути на хосте, найденные в конфигурациях контейнеров или сохранённых записях (не подлежат удалению):", + "Host permissions applied (o+rwx + default ACL) — unprivileged LXCs can read/write through bind-mounts": "Права доступа на хосте применены (o+rwx + ACL по умолчанию) — непривилегированные контейнеры LXC могут читать и записывать данные через bind-монтирования", + "Host system path": "Путь в файловой системе хоста", + "Host update lock is unavailable.": "Блокировка обновления хоста недоступна.", + "Host write access confirmed.": "Доступ на запись на хосте подтверждён.", + "Hostname": "Имя хоста", + "Hostname or IP address clients will use for this GoToSocial instance": "Имя хоста или IP-адрес, который клиенты будут использовать для подключения к этому экземпляру GoToSocial", + "Hot changes applied. No reboot needed for these paths.": "Изменения применены без перезагрузки. Для этих путей перезагрузка не требуется.", + "Hours between claiming runs (0 disables interval runs)": "Интервал между запусками получения наград в часах (0 отключает запуски по интервалу)", + "How do you want to add it?": "Как вы хотите это добавить?", + "How do you want to authenticate this backup target?": "Какой способ аутентификации вы хотите использовать для этого целевого ресурса резервного копирования?", + "How do you want to select the": "Как вы хотите выбрать", + "How do you want to select the HOST folder to mount?": "Как вы хотите выбрать папку на ХОСТЕ для монтирования?", + "How do you want to select the NFS server?": "Как вы хотите выбрать сервер NFS?", + "How do you want to select the Samba server?": "Как вы хотите выбрать сервер Samba?", + "How do you want to select the folder to export?": "Как вы хотите выбрать папку для экспорта?", + "How do you want to select the folder to share?": "Как вы хотите выбрать папку для общего доступа?", + "How is it installed?": "Каким способом выполнена установка?", + "How is the image described?": "Как описан образ?", + "How to Access an LXC Terminal": "Как открыть терминал LXC", + "How to Access an LXC Terminal from Proxmox Host": "Как открыть терминал LXC с хоста Proxmox", + "How to schedule": "Как настроить расписание", + "Htpcmanager is a front end for many htpc related applications.": "Htpcmanager — интерфейс для многих приложений, связанных с HTPC.", + "I Hate Money": "I Hate Money", + "I have read this": "Я прочитал(а) это", + "I/O priority configured": "Приоритет ввода-вывода настроен", + "ID %s is already in use": "Идентификатор %s уже используется", + "ID already in use. Please choose another.": "Идентификатор уже используется. Выберите другой.", + "IGDB": "IGDB", + "IGDB Client ID": "Идентификатор клиента IGDB", + "IGDB Client Secret": "Секрет клиента IGDB", + "IMPORTANT": "IMPORTANT", + "IMPORTANT NOTES:": "ВАЖНЫЕ ПРИМЕЧАНИЯ:", + "IMPORTANT PREREQUISITES:": "ВАЖНЫЕ ПРЕДВАРИТЕЛЬНЫЕ ТРЕБОВАНИЯ:", + "IMPORTANT — Save this passphrase": "ВАЖНО — сохраните эту парольную фразу", + "IOMMU Group": "Группа IOMMU", + "IOMMU Group Error": "Ошибка группы IOMMU", + "IOMMU Group Pending": "Группа IOMMU: ожидание", + "IOMMU Pending Reboot": "IOMMU: требуется перезагрузка", + "IOMMU Required": "Требуется IOMMU", + "IOMMU already configured in /etc/kernel/cmdline": "IOMMU уже настроен в /etc/kernel/cmdline", + "IOMMU already configured in GRUB": "IOMMU уже настроен в GRUB", + "IOMMU already configured in kernel parameters": "IOMMU уже настроен в параметрах ядра", + "IOMMU already enabled in GRUB configuration": "IOMMU уже включён в конфигурации GRUB", + "IOMMU and VFIO setup completed": "Настройка IOMMU и VFIO завершена", + "IOMMU configured successfully.": "IOMMU успешно настроен.", + "IOMMU configured. GPU passthrough setup will continue now and will be effective after reboot.": "IOMMU настроен. Настройка проброса GPU продолжится сейчас и вступит в силу после перезагрузки.", + "IOMMU enabled in GRUB configuration": "IOMMU включён в конфигурации GRUB", + "IOMMU groups are not available yet because reboot is pending.": "Группы IOMMU пока недоступны, поскольку требуется перезагрузка.", + "IOMMU has been enabled on this system.": "IOMMU включён в этой системе.", + "IOMMU has been enabled on this system. A reboot is required to apply the changes. Reboot now?": "IOMMU включён в этой системе. Для применения изменений требуется перезагрузка. Перезагрузить сейчас?", + "IOMMU has been enabled — a system reboot is required": "IOMMU включён — требуется перезагрузка системы", + "IOMMU interrupt remapping configured": "Переназначение прерываний IOMMU настроено", + "IOMMU is already active on this system": "IOMMU уже активен в этой системе", + "IOMMU is already configured for next boot, but it is not active yet.": "IOMMU уже настроен для следующей загрузки, но пока не активен.", + "IOMMU is enabled on the system": "IOMMU включён в системе", + "IOMMU is not active on this host.": "IOMMU не активен на этом хосте.", + "IOMMU is not active on this system.": "IOMMU не активен в этой системе.", + "IOMMU is not active. Skipping Controller + NVMe assignment.": "IOMMU не активен. Назначение контроллера и NVMe пропускается.", + "IOMMU kernel parameters configured": "Параметры ядра для IOMMU настроены", + "IOMMU parameters added to /etc/kernel/cmdline": "Параметры IOMMU добавлены в /etc/kernel/cmdline", + "IOMMU parameters added to GRUB": "Параметры IOMMU добавлены в GRUB", + "IOMMU parameters removed from /etc/kernel/cmdline": "Параметры IOMMU удалены из /etc/kernel/cmdline", + "IOMMU parameters removed from GRUB": "Параметры IOMMU удалены из GRUB", + "IOMMU was configured during this wizard and a reboot is pending.": "IOMMU был настроен в ходе работы этого мастера; требуется перезагрузка.", + "IOMMU/VFIO configuration reverted": "Изменения конфигурации IOMMU/VFIO отменены", + "IP": "IP", + "IP address": "IP-адрес", + "IP address and firewall of the host": "IP-адрес и межсетевой экран хоста", + "IP address of this container for the certificate (0.0.0.0 if unknown)": "IP-адрес этого контейнера для сертификата (0.0.0.0, если неизвестен)", + "IP address:": "IP-адрес:", + "IP or hostname of the PVE node hosting the Borg server LXC:": "IP-адрес или имя хоста узла PVE, на котором размещён контейнер LXC с сервером Borg:", + "IPv4 address of the container": "IPv4-адрес контейнера", + "IPv4 address of the containers": "IPv4-адрес контейнеров", + "IPv4 gateway (empty = no outbound route)": "Шлюз IPv4 (пустое поле = нет исходящего маршрута)", + "ISO": "ISO", + "ISO created successfully:": "ISO успешно создан:", + "ISO image — installation images": "Образ ISO — установочные образы", + "ISO image downloaded": "Образ ISO загружен", + "ISO not found to mount on device": "Не найден образ ISO для монтирования на устройстве", + "Icecast administrator": "Администратор Icecast", + "Icecast source client": "Клиент-источник Icecast", + "Icecast status page": "Страница состояния Icecast", + "Icons resolved: {resolved}; cleared: {cleared}; unchanged: {unchanged}; with a theme variant: {themed}": "Значков определено: {resolved}; сброшено: {cleared}; без изменений: {unchanged}; с вариантом для темы: {themed}", + "Identical:": "Совпадают:", + "Identify candidate disk (never use system disk):": "Определите подходящий диск (никогда не используйте системный диск):", + "Identify persistent disk paths": "Определите постоянные пути к дискам", + "Identity provider for single sign-on and access control": "Поставщик удостоверений для единого входа и управления доступом", + "If 'proxmox-ve' removal warning:": "Если появится предупреждение об удалении 'proxmox-ve':", + "If Code 43 error appears, KVM hiding is already configured.": "Если появляется ошибка Code 43, скрытие KVM уже настроено.", + "If GUI does not load:": "Если графический интерфейс не загружается:", + "If ZFS errors occur:": "Если возникают ошибки ZFS:", + "If a newer application image is available, the container is stopped and backed up, and the backup integrity is verified. The container is then updated using the new image.\n\nIf the update fails after the container was changed, ProxMenux attempts to restore the previous installation from the backup. If the operation remains incomplete, select the application in OCI management and choose \"Recover the previous installation\".\n\nHost directories mounted in the container are not restored by the container backup.": "Если доступен более новый образ приложения, контейнер останавливается, создаётся его резервная копия и проверяется её целостность. Затем контейнер обновляется с использованием нового образа.\n\nЕсли обновление завершается с ошибкой после изменения контейнера, ProxMenux пытается восстановить предыдущую установку из резервной копии. Если операция остаётся незавершённой, выберите приложение в разделе управления OCI и выберите «Восстановить предыдущую установку».\n\nКаталоги хоста, смонтированные в контейнере, не восстанавливаются из резервной копии контейнера.", + "If booting in EFI mode with root on LVM: install GRUB for EFI": "При загрузке в режиме EFI с корневой файловой системой на LVM: установите GRUB для EFI", + "If config issues occur:": "Если возникают проблемы с конфигурацией:", + "If container won't start:": "Если контейнер не запускается:", + "If imported from ESXi: install qemu-guest-agent inside the guest OS": "Если система импортирована из ESXi: установите qemu-guest-agent в гостевой ОС", + "If it does not work well, the acceleration can be changed back from Manage installed OCI applications, without reinstalling.": "Если ускорение работает некорректно, его настройку можно вернуть к прежнему значению в разделе «Управление установленными приложениями OCI» без переустановки.", + "If it still fails, the NFS server export options must be changed on the server.": "Если ошибка сохраняется, необходимо изменить параметры экспорта сервера NFS на самом сервере.", + "If it warns about 'systemd-boot' meta-package, remove it:": "Если появляется предупреждение о метапакете 'systemd-boot', удалите его:", + "If mount fails (LVM):": "Если монтирование не удаётся (LVM):", + "If needed again, re-add GPU to LXC from GPUs and Coral-TPU Menu → Add GPU to LXC.": "При необходимости снова добавьте GPU в LXC через GPUs and Coral-TPU Menu → Add GPU to LXC.", + "If network does not work:": "Если сеть не работает:", + "If not 19.x, upgrade Ceph (Reef→Squid) first per the official guide:": "Если версия отличается от 19.x, сначала обновите Ceph (Reef→Squid) согласно официальному руководству:", + "If notifications are enabled (Telegram/Discord/ntfy/...), you will receive a \"Host restore finished\" message when all background tasks complete.": "Если уведомления включены (Telegram/Discord/ntfy/...), после завершения всех фоновых задач вы получите сообщение «Восстановление хоста завершено».", + "If passthrough fails on Windows: install RadeonResetBugFix.": "Если проброс не работает в Windows: установите RadeonResetBugFix.", + "If path not accessible (ZFS/BTRFS):": "Если путь недоступен (ZFS/BTRFS):", + "If pvesm path returned a DEVICE (LVM):": "Если команда pvesm path вернула УСТРОЙСТВО (LVM):", + "If pvesm path returned a DIRECTORY (ZFS/BTRFS):": "Если команда pvesm path вернула КАТАЛОГ (ZFS/BTRFS):", + "If repositories error:": "Если возникают ошибки репозиториев:", + "If the USB/IP service stops unexpectedly, stop sharing while the device is still connected to release it. In rare cases only a host reboot releases it.": "Если служба USB/IP неожиданно остановится, отключите общий доступ, пока устройство ещё подключено, чтобы освободить его. В редких случаях освободить устройство удаётся только перезагрузкой хоста.", + "If the container had already been changed, its previous native backup is restored. Shared host directories are not reverted. The disks of the failed attempt are removed when the cleanup succeeds.": "Если контейнер уже был изменён, он восстанавливается из предыдущей резервной копии, созданной штатными средствами. Изменения в общих каталогах хоста не отменяются. Диски, созданные при неудачной попытке, удаляются после успешной очистки.", + "If the host freezes, remove hostpci entries from": "Если хост зависает, удалите записи hostpci из", + "If the image channel has a new version, the CT is stopped, backed up and verified, and replaced with the new image to update the container. If the update fails after the container was changed, the backup is restored. An update that stops halfway is recovered from the OCI management menu.": "Если в канале образа есть новая версия, CT останавливается, для него создаётся и проверяется резервная копия, после чего он заменяется новым образом. Если обновление завершится с ошибкой после изменения контейнера, восстанавливается резервная копия. Обновление, прерванное на полпути, восстанавливается из меню управления OCI.", + "If this happens, you can restore the backup from the 'Subscription Banner Removal' option in 'Uninstall optimizations'.": "Если это произойдёт, вы сможете выполнить восстановление из резервной копии с помощью пункта «Удаление баннера подписки» в разделе «Удаление оптимизаций».", + "If this node runs hyper-converged Ceph: ensure Ceph is 19.x (Squid) BEFORE upgrading PVE.": "Если на этом узле используется гиперконвергентная конфигурация Ceph: убедитесь, что версия Ceph — 19.x (Squid), ПРЕЖДЕ ЧЕМ обновлять PVE.", + "If upgrade fails:": "Если обновление не удаётся:", + "If you answer No, Glances is installed without privileges and monitors ONLY its own LXC, not Proxmox.": "Если вы ответите «Нет», Glances будет установлен без привилегий и будет отслеживать ТОЛЬКО собственный контейнер LXC, а не Proxmox.", + "If you are sure you want to use it, please remove the": "Если вы уверены, что хотите его использовать, удалите", + "If you are sure you want to use it, remove the RAID metadata or format it manually using external tools.": "Если вы уверены, что хотите использовать этот диск, удалите метаданные RAID или отформатируйте его вручную с помощью внешних инструментов.", + "If you choose No, install": "Если вы выберете «Нет», установите", + "If you continue, some adjustments may be duplicated or conflict with those already made by xshok.": "Если вы продолжите, некоторые настройки могут дублировать настройки, уже выполненные xshok, или конфликтовать с ними.", + "If you do not know what a variable does, answer No: the image keeps its own value.": "Если вы не знаете, что делает переменная, ответьте «Нет»: в образе сохранится её исходное значение.", + "If you have a Coral M.2 / PCIe device that is physically installed but not detected by lspci, cancel here and check your hardware first before proceeding.": "Если устройство Coral M.2 / PCIe физически установлено, но не обнаруживается командой lspci, отмените операцию на этом этапе и проверьте оборудование, прежде чем продолжать.", + "If you lose connectivity, you can restore from backup using the console.": "Если соединение будет потеряно, вы сможете выполнить восстановление из резервной копии через консоль.", + "If you lose or reinstall this host without a copy of the passphrase somewhere else (password manager, offline note, another host, USB stick...), every encrypted archive in this Borg repository becomes UNRECOVERABLE.": "Если вы потеряете этот хост или переустановите его, не сохранив копию парольной фразы в другом месте (в менеджере паролей, в записи на бумаге, на другом хосте, на USB-накопителе...), восстановить любой из зашифрованных архивов в этом репозитории Borg станет НЕВОЗМОЖНО.", + "If you restore this container on another Proxmox host, copy this file to the same path first, because the container backup does not include it:": "Если вы восстанавливаете этот контейнер на другом хосте Proxmox, сначала скопируйте этот файл по тому же пути, так как резервная копия контейнера его не включает:", + "If you want HDMI/analog audio inside the VM, select the audio controller(s) to pass through along with the GPU.": "Если вам нужен звук через HDMI или аналоговый аудиовыход в виртуальной машине, выберите аудиоконтроллеры для проброса вместе с GPU.", + "If you want to use a physical monitor on the passthrough GPU:": "Если вы хотите использовать физический монитор, подключённый к проброшенному GPU:", + "If your DHCP has a static reservation for the old MAC, update it.": "Если на вашем DHCP-сервере настроено статическое резервирование для старого MAC-адреса, обновите его.", + "Image": "Образ", + "Image Source Directory": "Исходный каталог образов", + "Image access confirmed.\n\n{reference}\n\nArchitecture: {architecture}\nVersion: {version}\nDownload size: {size}\nDigest: {digest}": "Доступ к образу подтверждён.\n\n{reference}\n\nАрхитектура: {architecture}\nВерсия: {version}\nРазмер загрузки: {size}\nХеш: {digest}", + "Image cache": "Кеш образов", + "Image compatibility restored:": "Совместимость образа восстановлена:", + "Image compatibility verified:": "Совместимость образа подтверждена:", + "Image directory:": "Каталог образов:", + "Image download failed:": "Не удалось загрузить образ:", + "Image downloaded": "Образ загружен", + "Image downloaded and verified.\n\n{reference}\n\nStorage: {storage}\nArchive size: {size}\nArchive: {archive}\n\nNo container was created.\nProxMenux removes unused cached images after successful updates.": "Образ загружен и проверен.\n\n{reference}\n\nХранилище: {storage}\nРазмер архива: {size}\nАрхив: {archive}\n\nКонтейнер не был создан.\nProxMenux удаляет неиспользуемые кешированные образы после успешных обновлений.", + "Image file not found:": "Файл образа не найден:", + "Image imported:": "Образ импортирован:", + "Image integrity verification failed. The partial download was discarded; try again.": "Проверка целостности образа не пройдена. Частично загруженный файл удалён; повторите попытку.", + "Image integrity verified": "Целостность образа подтверждена", + "Image not allowed for the host monitor profile": "Образ не разрешён для профиля мониторинга хоста", + "Image reference": "Ссылка на образ", + "Image reference (for example ghcr.io/user/application:latest)": "Ссылка на образ (например, ghcr.io/user/application:latest)", + "Image selection was cancelled": "Выбор образа отменён", + "Image that is not in the catalog": "Образ, отсутствующий в каталоге", + "Image:": "Образ:", + "ImageSilo": "ImageSilo", + "Images directory created: %s": "Каталог образов создан: %s", + "Images to import:": "Образы для импорта:", + "Imaging": "Обработка изображений", + "Immich CUDA requires NVIDIA driver 545 or later": "Для работы Immich с CUDA требуется драйвер NVIDIA версии 545 или новее", + "Immich GPU profile not validated": "Профиль GPU для Immich не прошёл проверку", + "Immich configuration cancelled": "Настройка Immich отменена", + "Immich device without a validated translation": "Устройство Immich без проверенного преобразования", + "Immich machine learning": "Машинное обучение Immich", + "Immich requires CUDA compute capability 5.2 or later": "Для Immich требуется поддержка CUDA Compute Capability версии 5.2 или выше", + "Immich runtime without a validated translation": "Среда выполнения Immich без проверенного преобразования", + "Immich server": "Сервер Immich", + "Import — disk image imports": "Импорт — импорт образов дисков", + "Import Disk Image to VM": "Импорт образа диска в ВМ", + "Import Disk to LXC": "Импорт диска в LXC", + "Import Disk to VM": "Импорт диска в ВМ", + "Import Disks Selected:": "Выбранные для импорта диски:", + "Import PBS keyfile": "Импорт файла ключа PBS", + "Import Summary": "Сводка импорта", + "Import VM from OVA or OVF": "Импорт ВМ из OVA или OVF", + "Import a ZFS pool": "Импорт пула ZFS", + "Import a keyfile from an absolute path (replaces the current one)": "Импорт файла ключа по абсолютному пути (заменяет текущий файл ключа)", + "Import disk assigned": "Диск для импорта назначен", + "Import disk image to VM": "Импорт образа диска в ВМ", + "Import disks": "Импорт дисков", + "Import encryption keyfile": "Импорт файла ключа шифрования", + "Import failed": "Не удалось выполнить импорт", + "Import failed for:": "Не удалось выполнить импорт для:", + "Important: both VMs cannot be running at the same time with the same GPU.": "Важно: обе ВМ не могут работать одновременно с одним и тем же GPU.", + "Important: some GPUs may still fail in passthrough and can affect host stability or overall performance depending on hardware/firmware quality.": "Важно: при сквозной передаче некоторые GPU всё же могут работать некорректно и влиять на стабильность хоста или общую производительность в зависимости от качества оборудования и прошивки.", + "Imported (foreign hostid, forced):": "Импортировано (чужой hostid, принудительно):", + "Imported:": "Импортировано:", + "Importing": "Выполняется импорт", + "Importing disk": "Выполняется импорт диска", + "Importing loader disk:": "Выполняется импорт диска загрузчика:", + "Importing:": "Выполняется импорт:", + "Improve log rotation and limit log size to save space and extend disk life": "Улучшить ротацию журналов и ограничить их размер для экономии места и продления срока службы диска", + "In an LXC": "В контейнере LXC", + "In the loader interface, follow the instructions to select your Synology model": "В интерфейсе загрузчика следуйте инструкциям, чтобы выбрать модель Synology", + "In use": "Используется", + "In use by VM/LXC config": "Используется в конфигурации ВМ/LXC", + "In use by running VM/LXC — stop it first": "Используется работающей ВМ или контейнером LXC — сначала остановите ВМ или контейнер", + "Inaccessible device during VM startup": "Устройство недоступно при запуске ВМ", + "Inactive": "Неактивно", + "Inactive (entry in fstab, not currently mounted)": "Неактивно (есть запись в fstab, сейчас не смонтировано)", + "Include these changes in oci-compose?": "Включить эти изменения в oci-compose?", + "Include these resources in oci-compose?": "Включить эти ресурсы в oci-compose?", + "Includes /etc/network (may drop SSH immediately)": "Включает /etc/network (может немедленно оборвать соединение SSH)", + "Includes /etc/zfs": "Включает /etc/zfs", + "Includes cluster data (/etc/pve, /var/lib/pve-cluster)": "Включает данные кластера (/etc/pve, /var/lib/pve-cluster)", + "Incompatible GPU for VM Passthrough": "Несовместимый GPU для проброса в виртуальную машину", + "Incompatible Machine Type": "Несовместимый тип машины", + "Incompatible Reset Capability for AMD dGPU": "Несовместимый механизм сброса AMD dGPU", + "Incompatible Reset Capability for Intel GPU": "Несовместимый механизм сброса Intel GPU", + "Incompatible Reset Capability for Intel dGPU": "Несовместимый механизм сброса Intel dGPU", + "Incompatible archive": "Несовместимый архив", + "Incompatible image platform": "Несовместимая платформа образа", + "Incompatible instance directory": "Несовместимый каталог экземпляра", + "Incompatible instance record": "Несовместимая запись экземпляра", + "Incompatible record": "Несовместимая запись", + "Incompatible stack assembly": "Несовместимая сборка стека", + "Incompatible version": "Несовместимая версия", + "Incomplete NVIDIA identity": "Неполные идентификационные данные NVIDIA", + "Incomplete NVIDIA inventory": "Неполные данные инвентаризации NVIDIA", + "Incomplete Proxmox inventory": "Неполные данные инвентаризации Proxmox", + "Incomplete Proxmox inventory; recovery blocked": "Неполные данные инвентаризации Proxmox; восстановление заблокировано", + "Incomplete container removed:": "Незавершённый контейнер удалён:", + "Incomplete dependency order": "Неполный порядок зависимостей", + "Incomplete device configuration": "Неполная конфигурация устройства", + "Incomplete file recipe or unknown paths": "Неполное описание сборки файла или неизвестные пути", + "Incomplete gzip layer": "Неполный слой gzip", + "Incomplete mount configuration": "Неполная конфигурация монтирования", + "Incomplete or incompatible Proxmox inventory": "Неполные или несовместимые данные инвентаризации Proxmox", + "Incomplete primary network": "Неполная конфигурация основной сети", + "Incomplete stack order": "Неполный порядок компонентов стека", + "Incomplete stack removed": "Неполный стек удалён", + "Inconsistent adaptation profile and recipe": "Несоответствие профиля адаптации и рецепта", + "Inconsistent host monitor profile": "Несогласованный профиль мониторинга хоста", + "Inconsistent stack identity": "Несогласованные идентификационные данные стека", + "Inconsistent stack membership for": "Несогласованная принадлежность к стеку для", + "Increase container RAM temporarily to": "Временно увеличьте объём оперативной памяти контейнера до", + "Increase file and process limits for advanced workloads": "Увеличить лимиты файлов и процессов для сложных рабочих нагрузок", + "Increase various system limits": "Увеличить различные системные лимиты", + "Increase vzdump backup speed": "Увеличить скорость резервного копирования vzdump", + "Increasing maximum file system open files...": "Увеличение максимального числа открытых файлов в файловой системе...", + "Increasing various system limits...": "Увеличение различных системных лимитов...", + "Independent LXC applications installed": "Установлены независимые приложения LXC", + "Independent LXCs: no main container or hookscript. Each one keeps its own Start with Proxmox setting.": "Независимые контейнеры LXC: без основного контейнера и hookscript. Каждый сохраняет собственную настройку «Запускать вместе с Proxmox».", + "Independent applications, without a main container.": "Независимые приложения без основного контейнера.", + "Index updated: {count} candidate applications": "Индекс обновлён: приложений-кандидатов — {count}", + "Indexers and quality profiles still need to be configured.": "Индексаторы и профили качества ещё необходимо настроить.", + "Inherited retention:": "Унаследованные правила хранения:", + "Inherited schedule:": "Унаследованное расписание:", + "Initial Mealie account": "Начальная учётная запись Mealie", + "Initial Nextcloud administrator": "Начальный администратор Nextcloud", + "Initial Nextcloud settings applied": "Начальные настройки Nextcloud применены", + "Initial Paperless-ngx administrator": "Первоначальный администратор Paperless-ngx", + "Initial Redmine administrator": "Первоначальный администратор Redmine", + "Initial Stirling-PDF account": "Первоначальная учётная запись Stirling-PDF", + "Initial Tandoor administrator": "Первоначальный администратор Tandoor", + "Initial Umami administrator": "Первоначальный администратор Umami", + "Initial Z-Wave JS UI admin password": "Первоначальный пароль администратора Z-Wave JS UI", + "Initial administrator created:": "Первоначальный администратор создан:", + "Initial administrator user": "Первоначальная учётная запись администратора", + "Initializing Borg repository if needed...": "Инициализация репозитория Borg при необходимости...", + "Initiator IQN is authorised on the target": "Инициатору с указанным IQN разрешён доступ к целевому устройству", + "Initiator IQN:": "IQN инициатора:", + "Inkscape is professional quality vector graphics software which runs on Linux, Mac OS X and Windows desktop computers.": "Inkscape — программа профессионального уровня для работы с векторной графикой на настольных компьютерах под управлением Linux, Mac OS X и Windows.", + "Input": "Ввод", + "Inside the LXC, create the administrator: console kimai:user:create YOUR_USERNAME YOUR_EMAIL ROLE_SUPER_ADMIN": "Внутри LXC создайте администратора: console kimai:user:create YOUR_USERNAME YOUR_EMAIL ROLE_SUPER_ADMIN", + "Inspect disks before any action": "Проверить диски перед любыми действиями", + "Inspect host device nodes": "Проверить узлы устройств на хосте", + "Inspect passthrough/kernel events": "Проверить события проброса устройств и ядра", + "Inspect storage config block:": "Проверить блок конфигурации хранилища:", + "Inspection commands run directly. Template commands [T] require parameter substitution.": "Команды проверки выполняются напрямую. Шаблонные команды [T] требуют подстановки параметров.", + "Install": "Установить", + "Install (experimental)": "Установить (экспериментально)", + "Install ALL utilities": "Установить ВСЕ утилиты", + "Install AMD GPU drivers inside the guest.": "Установите драйверы графического процессора AMD в гостевой системе.", + "Install CIFS client packages inside CT:": "Установите пакеты клиента CIFS внутри CT:", + "Install Coral TPU in LXC": "Установить Coral TPU в LXC", + "Install Fail2Ban": "Установить Fail2Ban", + "Install Figurine": "Установить Figurine", + "Install Intel Graphics Driver inside the guest.": "Установить драйвер Intel Graphics в гостевой системе.", + "Install Lynis": "Установить Lynis", + "Install NFS client packages inside CT:": "Установить пакеты клиента NFS внутри CT:", + "Install NVIDIA Container Toolkit (GPU support for OCI containers)": "Установить NVIDIA Container Toolkit (поддержка GPU для контейнеров OCI)", + "Install NVIDIA Drivers on Host": "Установить драйверы NVIDIA на хосте", + "Install NVIDIA drivers from nvidia.com inside the guest.": "Установить драйверы NVIDIA с nvidia.com в гостевой системе.", + "Install NVIDIA proprietary drivers": "Установить проприетарные драйверы NVIDIA", + "Install OVH Real Time Monitoring": "Установить OVH Real Time Monitoring", + "Install Open vSwitch": "Установить Open vSwitch", + "Install Samba inside CT:": "Установить Samba внутри CT:", + "Install ZFS auto-snapshot": "Установить ZFS auto-snapshot", + "Install a version from the branch the kernel names.": "Установить версию из ветки, указанной в названии ядра.", + "Install an image as a native LXC": "Установить образ как нативный контейнер LXC", + "Install an image that is not in the catalog": "Установить образ, которого нет в каталоге", + "Install analysis tools": "Установить инструменты анализа", + "Install and configure": "Установить и настроить", + "Install and configure Fastfetch": "Установить и настроить Fastfetch", + "Install and configure Log2RAM": "Установить и настроить Log2RAM", + "Install and start iSCSI initiator:": "Установить и запустить инициатор iSCSI:", + "Install basic utilities": "Установить базовые утилиты", + "Install common system utilities": "Установить стандартные системные утилиты", + "Install compression tools": "Установить инструменты сжатия", + "Install development tools": "Установить инструменты разработки", + "Install maintainer's version (Y)": "Установить версию сопровождающего пакета (Y)", + "Install manually and retry: apt-get install -y exfatprogs": "Установите вручную и повторите попытку: apt-get install -y exfatprogs", + "Install manually with:": "Установите вручную с помощью команды:", + "Install network tools": "Установить сетевые инструменты", + "Install podman or docker to continue.": "Установите podman или docker, чтобы продолжить.", + "Install relevant guest agent": "Установить соответствующий гостевой агент", + "Install server packages inside CT:": "Установите серверные пакеты внутри CT:", + "Install terminal multiplexers": "Установить терминальные мультиплексоры", + "Install the Edge TPU runtime (libedgetpu1-std)": "Установить среду выполнения Edge TPU (libedgetpu1-std)", + "Install the USB/IP dependencies from the configured Debian repositories?": "Установить зависимости USB/IP из настроенных репозиториев Debian?", + "Install this image?": "Установить этот образ?", + "Install with Cloud-Init script": "Установить с помощью скрипта Cloud-Init", + "Install with ISO from UUP Dump": "Установить с использованием ISO из UUP Dump", + "Install with advanced settings": "Установить с расширенными настройками", + "Install with default settings": "Установить с настройками по умолчанию", + "Install with personal ISO": "Установить с использованием собственного ISO", + "Install with this configuration?": "Установить с этой конфигурацией?", + "Install with traditional method": "Установить традиционным способом", + "Install with: apt-get install open-iscsi": "Установите с помощью команды: apt-get install open-iscsi", + "Install/Update Coral TPU on Host": "Установить/обновить Coral TPU на хосте", + "Install/Update NVIDIA Drivers (Host + LXC)": "Установить/обновить драйверы NVIDIA (хост + LXC)", + "Install? [y/N]:": "Установить? [y/N]:", + "Installation Complete": "Установка завершена", + "Installation blocked:": "Установка заблокирована:", + "Installation cancelled.": "Установка отменена.", + "Installation completed": "Установка завершена", + "Installation completed.": "Установка завершена.", + "Installation completed. Please reboot the server manually as soon as possible.": "Установка завершена. Перезагрузите сервер вручную как можно скорее.", + "Installation completed. Press Enter to continue...": "Установка завершена. Нажмите Enter, чтобы продолжить...", + "Installation failed": "Ошибка установки", + "Installation finished but drivers are not loaded. A reboot may be required.": "Установка завершена, но драйверы не загружены. Может потребоваться перезагрузка.", + "Installation incomplete. These containers and their data are kept:": "Установка не завершена. Следующие контейнеры и их данные сохранены:", + "Installation log:": "Журнал установки:", + "Installation settings": "Параметры установки", + "Installation summary": "Сводка установки", + "Installed": "Установлено", + "Installed at:": "Место установки:", + "Installed components:": "Установленные компоненты:", + "Installed unzip successfully.": "unzip успешно установлен.", + "Installed:": "Установлено:", + "Installer already downloaded and verified.": "Установщик уже скачан и проверен.", + "Installer copied to container.": "Установщик скопирован в контейнер.", + "Installer downloaded.": "Установщик скачан.", + "Installer file not found:": "Файл установщика не найден:", + "Installer finished with errors.": "Установщик завершил работу с ошибками.", + "Installer not found:": "Установщик не найден:", + "Installing": "Установка", + "Installing AMD mesa drivers in container...": "Установка драйверов AMD mesa в контейнере...", + "Installing Ceph packages...": "Установка пакетов Ceph...", + "Installing Ceph support...": "Установка поддержки Ceph...", + "Installing Coral TPU driver inside the container...": "Установка драйвера Coral TPU внутри контейнера...", + "Installing Edge TPU runtime (libedgetpu1-std)...": "Установка среды выполнения Edge TPU (libedgetpu1-std)...", + "Installing Fail2Ban...": "Установка Fail2Ban...", + "Installing Git as a prerequisite...": "Установка Git в качестве необходимого компонента...", + "Installing Intel VA-API drivers in container...": "Установка драйверов Intel VA-API в контейнере...", + "Installing Log2RAM": "Установка Log2RAM", + "Installing Log2RAM from GitHub...": "Установка Log2RAM с GitHub...", + "Installing Log2RAM from source...": "Установка Log2RAM из исходного кода...", + "Installing NFS Client in LXC": "Установка клиента NFS в LXC", + "Installing NFS client packages...": "Установка пакетов клиента NFS...", + "Installing NFS client tools...": "Установка клиентских утилит NFS...", + "Installing NFS server packages inside the CT...": "Установка пакетов сервера NFS внутри контейнера...", + "Installing NVIDIA Container Toolkit...": "Установка NVIDIA Container Toolkit...", + "Installing NVIDIA drivers in container. This may take several minutes...": "Установка драйверов NVIDIA в контейнере. Это может занять несколько минут...", + "Installing NVIDIA udev rules and persistence service...": "Установка правил udev и службы сохранения состояния NVIDIA...", + "Installing NVIDIA utils (Alpine)...": "Установка утилит NVIDIA (Alpine)...", + "Installing NVIDIA utils (Arch)...": "Установка утилит NVIDIA (Arch)...", + "Installing OVH RTM (Real Time Monitoring)...": "Установка OVH RTM (мониторинг в реальном времени)...", + "Installing OpenVSwitch for virtual internal network...": "Установка OpenVSwitch для виртуальной внутренней сети...", + "Installing OpenVSwitch packages...": "Установка пакетов OpenVSwitch...", + "Installing Samba Client": "Установка клиента Samba", + "Installing Samba Client in LXC": "Установка клиента Samba в LXC", + "Installing Samba client tools...": "Установка клиентских утилит Samba...", + "Installing Samba server packages inside the CT...": "Установка пакетов сервера Samba внутри контейнера...", + "Installing Samba/CIFS client packages...": "Установка пакетов клиента Samba/CIFS...", + "Installing amdgpu_top...": "Установка amdgpu_top...", + "Installing and configuring Fail2Ban to protect Proxmox web interface and SSH...": "Установка и настройка Fail2Ban для защиты веб-интерфейса Proxmox и SSH...", + "Installing and configuring Fastfetch...": "Установка и настройка Fastfetch...", + "Installing and configuring Figurine...": "Установка и настройка Figurine...", + "Installing and configuring ZFS auto-snapshot...": "Установка и настройка автоматического создания снимков ZFS...", + "Installing build dependencies...": "Установка зависимостей для сборки...", + "Installing dependencies:": "Установка зависимостей:", + "Installing dependency:": "Установка зависимости:", + "Installing essential Proxmox packages...": "Установка основных пакетов Proxmox...", + "Installing gawk (required for OVF parsing)...": "Установка gawk (необходим для разбора OVF)...", + "Installing group": "Установка группы", + "Installing host drivers while the GPU is assigned to a VM could break passthrough and destabilize the system.": "Установка драйверов на хосте, когда GPU назначен виртуальной машине, может нарушить проброс GPU и привести к нестабильной работе системы.", + "Installing iSCSI initiator tools...": "Установка инструментов инициатора iSCSI...", + "Installing intel-gpu-tools...": "Установка intel-gpu-tools...", + "Installing kernel headers:": "Установка заголовочных файлов ядра:", + "Installing kexec-tools...": "Установка kexec-tools...", + "Installing latest Lynis security scan tool...": "Установка последней версии инструмента проверки безопасности Lynis...", + "Installing packages...": "Установка пакетов...", + "Installing pigz...": "Установка pigz...", + "Installing required dependencies...": "Установка необходимых зависимостей...", + "Installing required package: git": "Установка необходимого пакета: git", + "Installing required packages...": "Установка необходимых пакетов...", + "Installing required tools...": "Установка необходимых инструментов...", + "Installing selected utilities": "Установка выбранных утилит", + "Installing system utilities...": "Установка системных утилит...", + "Installing the new image": "Установка нового образа", + "Installing the new image...": "Установка нового образа...", + "Installing the new image:": "Установка нового образа:", + "Installing the stack startup hook...": "Установка хука запуска стека...", + "Installing unzip...": "Установка unzip...", + "Installing zfs-auto-snapshot package...": "Установка пакета zfs-auto-snapshot...", + "Installs essential packages if missing": "Устанавливает необходимые пакеты, если они отсутствуют", + "Instatic": "Instatic", + "Insufficient Disk Space": "Недостаточно места на диске", + "Insufficient disk space. Available:": "Недостаточно места на диске. Доступно:", + "Insufficient disk space. Skipping LXC": "Недостаточно места на диске. Пропуск LXC", + "Insufficient memory. NVIDIA install aborted.": "Недостаточно памяти. Установка NVIDIA прервана.", + "Insufficient memory. Skipping LXC": "Недостаточно памяти. Пропуск LXC", + "Insufficient space:": "Недостаточно места:", + "Integrity check failed on": "Не пройдена проверка целостности для", + "Intel (SYCL)": "Intel (SYCL)", + "Intel CPU detected": "Обнаружен процессор Intel", + "Intel GPU Tools installation completed!": "Установка Intel GPU Tools завершена!", + "Intel GPU(s) detected:": "Обнаружены графические процессоры Intel:", + "Intel NPU": "Intel NPU", + "Intel VA-API + OpenCL (official mod)": "Intel VA-API + OpenCL (официальный мод)", + "Intel VA-API drivers installed.": "Драйверы Intel VA-API установлены.", + "Intel iGPU passthrough configured.": "Проброс Intel iGPU настроен.", + "Intel render device for recognition": "Устройство рендеринга Intel для распознавания", + "Intel/AMD (VA-API and QSV)": "Intel/AMD (VA-API и QSV)", + "Intel/AMD (VA-API)": "Intel/AMD (VA-API)", + "Intel/AMD (Vulkan)": "Intel/AMD (Vulkan)", + "Intel/AMD (streaming rendering and encoding)": "Intel/AMD (рендеринг и кодирование потокового видео)", + "Intel/AMD DRM node (device only)": "Узел DRM Intel/AMD (только устройство)", + "Intel/AMD VA-API": "Intel/AMD VA-API", + "Intel/AMD VA-API (no OpenCL mod)": "Intel/AMD VA-API (без модификации OpenCL)", + "Intel/AMD render node": "Узел рендеринга Intel/AMD", + "IntelliJ IDEA helps you write code faster with tools that eliminate tedious tasks and let you focus on what matters – building great software.": "IntelliJ IDEA помогает быстрее писать код благодаря инструментам, которые избавляют от рутинных задач и позволяют сосредоточиться на главном — создании качественного программного обеспечения.", + "Intentionally vulnerable web application for security training.": "Веб-приложение с намеренно внедрёнными уязвимостями для обучения информационной безопасности.", + "Interactive (guided, prompts visible)": "Интерактивный режим (пошаговое выполнение с отображением запросов)", + "Interactive browser for OpenAPI definitions.": "Интерактивный инструмент просмотра определений OpenAPI.", + "Interactive notebooks for Elixir and data workflows.": "Интерактивные блокноты для Elixir и работы с данными.", + "Interactive process viewer (press q to exit)": "Интерактивный просмотр процессов (нажмите q для выхода)", + "Interface": "Интерфейс", + "Interface MTU": "MTU интерфейса", + "Interface Names (persistent)": "Имена интерфейсов (постоянные)", + "Interface Type": "Тип интерфейса", + "Interface design and prototyping in your browser": "Проектирование и прототипирование интерфейсов в браузере", + "Interface names will return to default systemd behavior.": "Для именования интерфейсов будет восстановлено стандартное поведение systemd.", + "Interface type:": "Тип интерфейса:", + "Interfaces configured": "Интерфейсы настроены", + "Interfaces defined with 'auto' but no 'iface' block": "Интерфейсы, указанные в 'auto', но без блока 'iface'", + "Interfaces to Remove": "Интерфейсы для удаления", + "Internal error: NVIDIA installer path is empty or file not found.": "Внутренняя ошибка: путь к установщику NVIDIA пуст или файл не найден.", + "Internal error: missing arguments in pmx_prepare_host_shared_dir": "Внутренняя ошибка: отсутствуют аргументы в pmx_prepare_host_shared_dir", + "Internal installer operation; not legacy adoption": "Внутренняя операция установщика, а не принятие под управление существующей установки", + "Internal subnet of the tunnel (change it only if it clashes)": "Внутренняя подсеть туннеля (изменяйте её только при конфликте)", + "Interrupted operation": "Операция прервана", + "Interrupted operation:": "Операция прервана:", + "Interrupted stack operation found": "Обнаружена прерванная операция со стеком", + "Invalid 'proxmox-ve' candidate (not 9.x or none). Please verify your repository configuration and network, then retry.": "Недопустимая версия-кандидат пакета 'proxmox-ve' (не 9.x или отсутствует). Проверьте настройки репозиториев и сетевое подключение, затем повторите попытку.", + "Invalid ALLOWED_HOSTS value": "Недопустимое значение ALLOWED_HOSTS", + "Invalid Compose port:": "Недопустимый порт Compose:", + "Invalid Compose volume path:": "Недопустимый путь тома Compose:", + "Invalid Home Assistant OS check timeout": "Недопустимое время ожидания проверки Home Assistant OS", + "Invalid ID": "Недопустимый ID", + "Invalid IPv4 address": "Недопустимый IPv4-адрес", + "Invalid IPv4 gateway": "Недопустимый шлюз IPv4", + "Invalid Intel render path": "Недопустимый путь рендеринга Intel", + "Invalid Jellyfin path:": "Недопустимый путь Jellyfin:", + "Invalid MAC address:": "Недопустимый MAC-адрес:", + "Invalid NVIDIA destination": "Недопустимое назначение NVIDIA", + "Invalid NVIDIA device:": "Недопустимое устройство NVIDIA:", + "Invalid Nextcloud volume": "Недопустимый том Nextcloud", + "Invalid OCI Entrypoint": "Недопустимое значение Entrypoint OCI", + "Invalid OCI digest": "Недопустимый дайджест OCI", + "Invalid OCR language:": "Недопустимый язык OCR:", + "Invalid Option": "Недопустимый вариант", + "Invalid Path": "Недопустимый путь", + "Invalid Proxmox inventory": "Некорректные данные инвентаризации Proxmox", + "Invalid Proxmox volume ID": "Некорректный идентификатор тома Proxmox", + "Invalid Python index:": "Некорректный индекс Python:", + "Invalid Python module:": "Некорректный модуль Python:", + "Invalid Python package:": "Некорректный пакет Python:", + "Invalid Python path in the repair:": "Некорректный путь к Python при исправлении:", + "Invalid ROCm generation override": "Некорректное значение переопределения поколения ROCm", + "Invalid Unpackerr variable": "Некорректная переменная Unpackerr", + "Invalid VFS cache mode": "Некорректный режим кэша VFS", + "Invalid VMID": "Некорректный VMID", + "Invalid VMID or timeout": "Некорректный VMID или тайм-аут", + "Invalid VMID:": "Некорректный VMID:", + "Invalid ZFS pool name.": "Некорректное имя пула ZFS.", + "Invalid absolute mount path": "Некорректный абсолютный путь монтирования", + "Invalid absolute path; avoid spaces, commas and relative segments": "Некорректный абсолютный путь; не используйте пробелы, запятые и относительные сегменты пути", + "Invalid acceleration profile": "Некорректный профиль ускорения", + "Invalid access address:": "Некорректный адрес доступа:", + "Invalid action": "Некорректное действие", + "Invalid administrator email": "Некорректный адрес электронной почты администратора", + "Invalid administrator user name": "Некорректное имя пользователя администратора", + "Invalid application identifier:": "Некорректный идентификатор приложения:", + "Invalid base VMID": "Некорректный базовый VMID", + "Invalid bridge": "Некорректный сетевой мост", + "Invalid check package:": "Некорректный пакет для проверки:", + "Invalid configuration path:": "Недопустимый путь к конфигурации:", + "Invalid consume/export volumes": "Недопустимые тома для использования/экспорта", + "Invalid container device GID": "Недопустимый GID устройства контейнера", + "Invalid container path:": "Недопустимый путь в контейнере:", + "Invalid credential file path:": "Недопустимый путь к файлу учётных данных:", + "Invalid declarative entrypoint": "Недопустимая декларативная точка входа", + "Invalid declarative stop signal": "Недопустимый декларативный сигнал остановки", + "Invalid declarative working directory": "Недопустимый декларативный рабочий каталог", + "Invalid device UID": "Недопустимый UID устройства", + "Invalid device UID:": "Недопустимый UID устройства:", + "Invalid device mode": "Недопустимый режим доступа к устройству", + "Invalid device mode:": "Недопустимый режим доступа к устройству:", + "Invalid device path:": "Недопустимый путь к устройству:", + "Invalid device paths for": "Недопустимые пути к устройствам для", + "Invalid device permissions": "Недопустимые права доступа к устройству", + "Invalid environment variable name:": "Недопустимое имя переменной окружения:", + "Invalid group name. Use letters, digits, underscore or hyphen, and start with a letter or underscore.": "Недопустимое имя группы. Используйте буквы, цифры, знак подчёркивания или дефис. Имя должно начинаться с буквы или знака подчёркивания.", + "Invalid health check": "Недопустимая проверка работоспособности", + "Invalid healthcheck path": "Недопустимый путь для проверки работоспособности", + "Invalid healthcheck port": "Недопустимый порт для проверки работоспособности", + "Invalid healthcheck request timeout": "Недопустимое время ожидания запроса проверки работоспособности", + "Invalid healthcheck scheme": "Недопустимая схема протокола для проверки работоспособности", + "Invalid healthcheck stability period": "Недопустимый период стабильной работы для проверки работоспособности", + "Invalid healthcheck timeout": "Недопустимое время ожидания проверки работоспособности", + "Invalid host kernel module name:": "Недопустимое имя модуля ядра хоста:", + "Invalid host monitor PID": "Недопустимый PID монитора хоста", + "Invalid host path:": "Недопустимый путь на хосте:", + "Invalid host-monitor firewall plan": "Недопустимый план настройки межсетевого экрана для host-monitor", + "Invalid image probe descriptor": "Недопустимый дескриптор проверки образа", + "Invalid image tag.": "Недопустимый тег образа.", + "Invalid input": "Некорректные входные данные", + "Invalid internal volume": "Недопустимый внутренний том", + "Invalid list:": "Недопустимый список:", + "Invalid machine learning CPU allocation:": "Недопустимое выделение ресурсов ЦП для машинного обучения:", + "Invalid machine learning resources": "Недопустимые ресурсы для машинного обучения", + "Invalid main member or duplicated members": "Недопустимый основной участник или повторяющиеся участники", + "Invalid media path": "Недопустимый путь к медиафайлам", + "Invalid media volume": "Недопустимый том для медиафайлов", + "Invalid mediafiles volume": "Недопустимый том mediafiles", + "Invalid minimum version:": "Недопустимая минимальная версия:", + "Invalid mount name": "Недопустимое имя точки монтирования", + "Invalid mount type": "Недопустимый тип монтирования", + "Invalid name": "Недопустимое имя", + "Invalid name. Use only letters, numbers, hyphens and underscores.": "Недопустимое имя. Используйте только буквы, цифры, дефисы и символы подчёркивания.", + "Invalid native entrypoint": "Недопустимая нативная точка входа", + "Invalid octal permissions": "Недопустимые восьмеричные права", + "Invalid option": "Недопустимый вариант", + "Invalid option, please try again.": "Недопустимый вариант, попробуйте ещё раз.", + "Invalid option. Skipping.": "Недопустимый вариант. Пропускается.", + "Invalid or duplicated mount path": "Недопустимый или повторяющийся путь монтирования", + "Invalid or duplicated network sysctl": "Недопустимый или повторяющийся сетевой параметр sysctl", + "Invalid parameters for bind mount": "Недопустимые параметры bind-монтирования", + "Invalid path": "Недопустимый путь", + "Invalid path in the NVIDIA inventory": "Недопустимый путь в списке оборудования NVIDIA", + "Invalid post-start timeout in the configuration:": "Недопустимое время ожидания после запуска в конфигурации:", + "Invalid private bridge": "Недопустимый частный сетевой мост", + "Invalid private network": "Недопустимая частная сеть", + "Invalid prlimit value": "Недопустимое значение prlimit", + "Invalid process limits format": "Недопустимый формат ограничений процесса", + "Invalid read-only option": "Недопустимый параметр режима «только для чтения»", + "Invalid registry digest": "Недопустимая контрольная сумма из реестра", + "Invalid remote name": "Недопустимое имя удалённого ресурса", + "Invalid remote path": "Недопустимый удалённый путь", + "Invalid repair version:": "Недопустимая версия для исправления:", + "Invalid resource value": "Недопустимое значение ресурса", + "Invalid resources": "Недопустимые ресурсы", + "Invalid restored volume path": "Недопустимый путь восстановленного тома", + "Invalid running state": "Недопустимое состояние выполнения", + "Invalid saved image digest": "Недопустимая контрольная сумма сохранённого образа", + "Invalid security.unprivileged value:": "Недопустимое значение security.unprivileged:", + "Invalid selection": "Недопустимый выбор", + "Invalid service alias": "Недопустимый псевдоним службы", + "Invalid service check URL": "Недопустимый URL проверки службы", + "Invalid service check arguments": "Недопустимые аргументы проверки службы", + "Invalid service check timeout": "Недопустимое время ожидания проверки службы", + "Invalid shared path": "Недопустимый путь к общему ресурсу", + "Invalid shutdown timeout": "Недопустимое время ожидания завершения работы", + "Invalid size. Please enter a number in MB (e.g., 128, 256, 512).": "Недопустимый размер. Введите число в МБ (например, 128, 256, 512).", + "Invalid stack contract": "Недопустимый контракт стека", + "Invalid stack journal": "Недопустимый журнал стека", + "Invalid stack members": "Недопустимые участники стека", + "Invalid stack name": "Недопустимое имя стека", + "Invalid stack operation": "Недопустимая операция со стеком", + "Invalid storage": "Недопустимое хранилище", + "Invalid storage ID. Use only letters, numbers, hyphens and underscores.": "Недопустимый идентификатор хранилища. Используйте только буквы, цифры, дефисы и знаки подчёркивания.", + "Invalid storage name": "Недопустимое имя хранилища", + "Invalid suite application": "Недопустимое приложение набора", + "Invalid sysctl value:": "Недопустимое значение sysctl:", + "Invalid template storage": "Недопустимое хранилище шаблонов", + "Invalid template storage name.": "Недопустимое имя хранилища шаблонов.", + "Invalid tmpfs options:": "Недопустимые параметры tmpfs:", + "Invalid tmpfs path:": "Недопустимый путь tmpfs:", + "Invalid tmpfs size:": "Недопустимый размер tmpfs:", + "Invalid username or password.": "Неверное имя пользователя или пароль.", + "Invalid variable name": "Недопустимое имя переменной", + "Invalid variable name:": "Недопустимое имя переменной:", + "Invalid volume size": "Недопустимый размер тома", + "Invalid volume size:": "Недопустимый размер тома:", + "Invalid volume target": "Недопустимый целевой путь тома", + "InvoiceShelf": "InvoiceShelf", + "IoT & Smart Home": "IoT и умный дом", + "Is the value a password or secret?": "Является ли значение паролем или секретом?", + "Issue": "Проблема", + "Issues found": "Обнаруженные проблемы", + "Issues were found. Would you like to use the Guided Cleanup Assistant?": "Обнаружены проблемы. Хотите воспользоваться пошаговым помощником по очистке?", + "Issues were found. Would you like to use the Guided Repair Assistant?": "Обнаружены проблемы. Хотите воспользоваться пошаговым помощником по исправлению?", + "It appears that you have already executed the xshok-proxmox post-install script on this system.": "Похоже, вы уже запускали сценарий постустановочной настройки xshok-proxmox в этой системе.", + "It asks for a system directory of the host:": "Запрашивается доступ к системному каталогу хоста:", + "It asks for capabilities or a relaxed confinement profile.": "Он запрашивает дополнительные возможности (capabilities) или ослабленный профиль изоляции.", + "It asks to see the processes of the host.": "Запрашивается возможность просмотра процессов хоста.", + "It can be made on another storage of this host. This backup is temporary: it is deleted when the operation ends. The choice is remembered for the next operations of this application.": "Резервную копию можно создать в другом хранилище этого хоста. Эта резервная копия временная: она удаляется по завершении операции. Выбор сохраняется для последующих операций с этим приложением.", + "It cannot be removed on its own, because the application would stop working: continuing removes the whole application.": "Его нельзя удалить отдельно, так как приложение перестанет работать: при продолжении будет удалено всё приложение.", + "It cannot be removed on its own, because the application would stop working: continuing targets the whole application for removal.": "Этот компонент нельзя удалить отдельно, поскольку приложение перестанет работать: при продолжении будет удалено всё приложение.", + "It is created empty; existing data is not migrated automatically.": "Создаётся пустым; существующие данные не переносятся автоматически.", + "It is recommended to create a backup before continuing.": "Перед продолжением рекомендуется создать резервную копию.", + "It is strongly recommended to create a backup of your container before proceeding with the conversion.": "Перед началом преобразования настоятельно рекомендуется создать резервную копию контейнера.", + "It needs a privileged container, which is not isolated from the host.": "Ему нужен привилегированный контейнер, который не изолирован от хоста.", + "It will be installed from the official GitHub repository.": "Установка будет выполнена из официального репозитория GitHub.", + "It works through the Docker engine of the host, and a native OCI container does not have one.": "Для работы используется движок Docker engine хоста, которого нет у нативного контейнера OCI.", + "Italian": "Итальянский", + "Its Compose file asks for privileged mode; the container is created unprivileged and that mode is only offered as an option.": "В файле Compose запрашивается привилегированный режим; контейнер создаётся непривилегированным, а привилегированный режим предлагается лишь как опция.", + "Its ROCm profile is not offered.": "Его профиль ROCm не предлагается.", + "Its addresses are fixed and are not changed.": "Его адреса фиксированы и не изменяются.", + "Its final cleanup did not complete. Select the stack again in the OCI management menu to complete it.": "Заключительная очистка стека не завершена. Чтобы завершить её, снова выберите стек в меню управления OCI.", + "Its labels are not applied: they are read by other Docker tools.": "Его метки не применяются: они считываются другими инструментами Docker.", + "JC Channel logo applied": "Логотип JC Channel применён", + "JDownloader 2 with browser GUI and MyJDownloader support": "JDownloader 2 с графическим интерфейсом в браузере и поддержкой MyJDownloader", + "JDownloader WebUI": "JDownloader WebUI", + "JSON output for scripts": "Вывод в формате JSON для сценариев", + "Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.": "Jackett работает как прокси-сервер: он преобразует запросы приложений (Sonarr, SickRage, CouchPotato, Mylar и т. д.) в HTTP-запросы, соответствующие конкретным сайтам-трекерам, разбирает HTML-ответ и возвращает результаты программе, отправившей запрос. Это позволяет получать сведения о недавних загрузках (как через RSS) и выполнять поиск. Jackett объединяет в одном репозитории поддерживаемую логику сбора данных с индексаторов и преобразования запросов, избавляя другие приложения от этой задачи.", + "Jaeger": "Jaeger", + "Jellyfin WebUI": "Jellyfin WebUI", + "Jellyfin configuration already applied:": "Конфигурация Jellyfin уже применена:", + "Jellyfin configuration applied:": "Конфигурация Jellyfin применена:", + "Jellyfin configuration updated:": "Конфигурация Jellyfin обновлена:", + "Jellyfin did not create encoding.xml before the timeout": "Jellyfin не создал encoding.xml до истечения времени ожидания", + "Jellyfin has not created encoding.xml in any declared path": "Jellyfin не создал encoding.xml ни по одному из указанных путей", + "Jellyseerr is a free and open source software application for managing requests for your media library.": "Jellyseerr — бесплатное приложение с открытым исходным кодом для управления запросами на добавление контента в вашу медиатеку.", + "Jenkins Continuous Integration and Delivery server.": "Jenkins — сервер непрерывной интеграции и доставки.", + "Jenkins unlock": "Разблокировка Jenkins", + "Job": "Задание", + "Job ID (letters, numbers, - _)": "Идентификатор задания (буквы, цифры, - _)", + "Job ID (optional)": "Идентификатор задания (необязательно)", + "Job ID:": "Идентификатор задания:", + "Job deleted.": "Задание удалено.", + "Job deleted:": "Задание удалено:", + "Job disabled.": "Задание отключено.", + "Job disabled:": "Задание отключено:", + "Job enabled.": "Задание включено.", + "Job enabled:": "Задание включено:", + "Job selection returned empty id — aborting.": "При выборе задания получен пустой идентификатор — операция прервана.", + "Job updated successfully.": "Задание успешно обновлено.", + "Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks.": "Joplin — бесплатное приложение с открытым исходным кодом для ведения заметок и списков дел, позволяющее работать с большим количеством заметок, организованных в блокноты.", + "Journald configuration adjusted to": "Конфигурация journald изменена на", + "Journald configuration is already optimized": "Конфигурация Journald уже оптимизирована", + "Journald configuration updated and service restarted": "Конфигурация Journald обновлена, служба перезапущена", + "Journald optimization completed": "Оптимизация Journald завершена", + "Journald optimized - Max size: 64M": "Journald оптимизирован — максимальный размер: 64M", + "Jupyter Lab (token only)": "Jupyter Lab (только по токену)", + "JupyterLab": "JupyterLab", + "JupyterLab access token": "Токен доступа к JupyterLab", + "KDE's twin-panel file manager in a browser-based desktop.": "Двухпанельный файловый менеджер KDE в рабочей среде, доступной через браузер.", + "KDF:": "KDF:", + "KROMA": "KROMA", + "KVM MSR options added to /etc/modprobe.d/kvm.conf": "Параметры KVM MSR добавлены в /etc/modprobe.d/kvm.conf", + "KVM MSR options ensured in /etc/modprobe.d/kvm.conf": "Наличие параметров KVM MSR в /etc/modprobe.d/kvm.conf обеспечено", + "KVM MSR options not present, nothing to revert": "Параметры KVM MSR отсутствуют, отменять нечего", + "Kali-linux - is an Advanced Penetration Testing Linux distribution used for Penetration Testing, Ethical Hacking and network security assessments. KALI LINUX ™ is a trademark of OffSec.": "Kali-linux — специализированный дистрибутив Linux для тестирования на проникновение, этичного хакинга и оценки сетевой безопасности. KALI LINUX ™ — товарный знак OffSec.", + "Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections.": "Kasm Workspaces — платформа потоковой передачи контейнеров docker, предоставляющая доступ к рабочим столам, приложениям и веб-сервисам через браузер. Kasm использует инфраструктуру контейнеризированных рабочих столов (CDI) с поддержкой DevOps для создания по запросу одноразовых контейнеров docker, доступных через веб-браузер. Примеры применения включают удалённую изоляцию браузера (RBI), предотвращение утечек данных (DLP), рабочий стол как услугу (DaaS), службы безопасного удалённого доступа (RAS) и сбор разведывательных данных из открытых источников (OSINT).", + "Kavita is a fast, feature rich, cross platform reading server. Built with a focus for being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family!": "Kavita — быстрый, многофункциональный кроссплатформенный сервер для чтения. Он создан как комплексное решение для всех ваших потребностей в чтении. Настройте собственный сервер и делитесь своей коллекцией книг с друзьями и семьёй!", + "Kavita is a free and open source web based Comic and Book Server.": "Kavita — бесплатный веб-сервер с открытым исходным кодом для комиксов и книг.", + "Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.": "Kdenlive — мощная бесплатная кроссплатформенная программа для видеомонтажа с открытым исходным кодом, созданная сообществом KDE. Она обладает широкими возможностями и готова к использованию в производстве видеоматериалов.", + "KeePassXC is a free and open-source password manager. It started as a community fork of KeePassX (itself a cross-platform port of KeePass).": "KeePassXC — бесплатный менеджер паролей с открытым исходным кодом. Он появился как ответвление KeePassX, развиваемое сообществом (сам KeePassX является кроссплатформенным портом KeePass).", + "Keep GPU in LXC config (disable Start on boot)": "Оставить GPU в конфигурации LXC (отключить запуск при загрузке)", + "Keep GPU in LXC config + disable Start on boot": "Оставить GPU в конфигурации LXC + отключить запуск при загрузке", + "Keep GPU in VM config (disable Start on boot)": "Оставить GPU в конфигурации виртуальной машины (отключить запуск при загрузке)", + "Keep GPU in source VM config (disable Start on boot if enabled)": "Оставить GPU в конфигурации исходной виртуальной машины (отключить запуск при загрузке, если он включён)", + "Keep GPU in source VM config + disable Start on boot if enabled": "Оставить GPU в конфигурации исходной виртуальной машины + отключить запуск при загрузке, если он включён", + "Keep current version (N)": "Сохранить текущую версию (N)", + "Keep current version (N) if modified": "Сохранить текущую версию (N), если она изменена", + "Keep in source VM(s) + disable onboot + add to target VM": "Оставить в исходных ВМ + отключить onboot + добавить в целевую ВМ", + "Keep the backup taken before the update in this Proxmox storage": "Сохранить резервную копию, созданную перед обновлением, в этом хранилище Proxmox", + "Keeping GPU in source VM config": "Сохранение GPU в конфигурации исходной ВМ", + "Keeping the settings changed in Proxmox:": "Сохранение настроек, изменённых в Proxmox:", + "Kept sharedfiles group (has regular users assigned).": "Группа sharedfiles сохранена (в ней есть обычные пользователи).", + "Kept sharedfiles group (it still has members that are not remapped users).": "Группа sharedfiles сохранена (в ней ещё есть участники, не относящиеся к пользователям с переназначенными идентификаторами).", + "Kernel and architecture info": "Информация о ядре и архитектуре", + "Kernel headers and build tools verified.": "Заголовочные файлы ядра и инструменты сборки проверены.", + "Kernel headers install failed — DKMS rebuild will likely fail:": "Не удалось установить заголовочные файлы ядра — пересборка DKMS, скорее всего, завершится ошибкой:", + "Kernel headers installed": "Заголовочные файлы ядра установлены", + "Kernel max Key limit configured": "Максимальное количество ключей в ядре настроено", + "Kernel panic behavior configuration completed": "Настройка поведения при панике ядра завершена", + "Kernel panic configuration removed": "Настройки поведения при панике ядра удалены", + "Kernel panic configuration updated and applied": "Настройки поведения при панике ядра обновлены и применены", + "Kernel, modules and boot config": "Ядро, модули и конфигурация загрузки", + "Kernel/boot-tied files (boot config, /etc/systemd/system, initramfs config, apt sources, ZFS state, ...) are NOT copied verbatim to keep the target's boot safe. The operator's own tuning inside them (IOMMU cmdline, VFIO IDs, custom quirks, GRUB timeout, ...) is merged into the target's fresh copies automatically via kernel-agnostic merge.": "Файлы, связанные с ядром и загрузкой (конфигурация загрузки, /etc/systemd/system, конфигурация initramfs, источники apt, состояние ZFS и т. д.), НЕ копируются дословно, чтобы не нарушить загрузку целевой системы. Пользовательские настройки администратора в этих файлах (параметры командной строки IOMMU, идентификаторы VFIO, индивидуальные настройки совместимости, время ожидания GRUB и т. д.) автоматически объединяются с новыми версиями файлов целевой системы способом, не зависящим от версии ядра.", + "Keyfile copied": "Файл ключа скопирован", + "Keyfile copied to:": "Файл ключа скопирован в:", + "Keyfile passphrase": "Парольная фраза файла ключа", + "Keyfile passphrase stored:": "Парольная фраза файла ключа сохранена:", + "Keyfile recovered": "Файл ключа восстановлен", + "Keyfile recovered successfully.": "Файл ключа успешно восстановлен.", + "Keyfile recovery available": "Доступно восстановление файла ключа", + "Keyfile recovery — pick source host": "Восстановление файла ключа — выберите исходный узел", + "Keyfile removed.": "Файл ключа удалён.", + "Keyrings method failed; trying apt-key fallback": "Метод с использованием связок ключей не сработал; пробуем резервный вариант с apt-key", + "KiCad - A Cross Platform and Open Source Electronics Design Automation Suite.": "KiCad — кроссплатформенный пакет автоматизации проектирования электроники с открытым исходным кодом.", + "Kimai has no default account. Enter the container with: pct enter {main_vmid}": "В Kimai нет учётной записи по умолчанию. Войдите в контейнер с помощью команды: pct enter {main_vmid}", + "Kimai is a professional grade time-tracking application, free and open-source.": "Kimai — бесплатное приложение профессионального уровня для учёта рабочего времени с открытым исходным кодом.", + "KitchenOwl": "KitchenOwl", + "Kometa is a powerful tool designed to give you complete control over your media libraries. With Kometa, you can take your customization to the next level, with granular control over metadata, collections, overlays, and much more.": "Kometa — мощный инструмент для полного управления вашими медиатеками. Kometa позволяет вывести их настройку на новый уровень благодаря детальному управлению метаданными, коллекциями, наложениями и многим другим.", + "Kometa reads its configuration from /config/config.yml and the container only ships /config/config.yml.template. Copy the template to config.yml, fill in the required Plex and TMDb connections, then restart the container.": "Kometa считывает конфигурацию из /config/config.yml, но в контейнере поставляется только /config/config.yml.template. Скопируйте шаблон в config.yml, укажите необходимые параметры подключения к Plex и TMDb, затем перезапустите контейнер.", + "Komga is a media server for your comics, mangas, BDs, magazines and eBooks.": "Komga — медиасервер для ваших комиксов, манги, BD, журналов и eBooks.", + "Kopia Web UI": "Веб-интерфейс Kopia", + "Kopia Web UI login": "Вход в веб-интерфейс Kopia", + "Krita is a professional FREE and open source painting program. It is made by artists that want to see affordable art tools for everyone.": "Krita — профессиональная БЕСПЛАТНАЯ программа для рисования с открытым исходным кодом. Она создана художниками, которые хотят сделать инструменты для творчества доступными каждому.", + "Krusader Web UI": "Веб-интерфейс Krusader", + "LAN access to the kept containers (stack configuration incomplete):": "Доступ по локальной сети к сохранённым контейнерам (настройка стека не завершена):", + "LAN address applied to the application URLs": "Адрес локальной сети применён к URL-адресам приложений", + "LLDAP": "LLDAP", + "LLDAP administrator": "Администратор LLDAP", + "LLM App Development Platform": "Платформа разработки приложений на основе больших языковых моделей", + "LM Studio can run local AI models like gpt-oss, Llama, Gemma, Qwen, and DeepSeek privately on your computer.": "LM Studio позволяет запускать локальные модели ИИ, такие как gpt-oss, Llama, Gemma, Qwen и DeepSeek, на вашем компьютере с сохранением конфиденциальности.", + "LUNs appear as block devices assignable to VMs": "LUN отображаются как блочные устройства, которые можно назначать виртуальным машинам", + "LVM PV headers check completed": "Проверка заголовков физических томов LVM завершена", + "LVM physical volume detected": "Обнаружен физический том LVM", + "LVM tools not available, skipping LVM check": "Инструменты LVM недоступны, проверка LVM пропускается", + "LVM:": "LVM:", + "LXC Conflict Policy": "Политика разрешения конфликтов LXC", + "LXC Container Privilege Status": "Статус привилегий контейнера LXC", + "LXC Conversion Manual Guides": "Руководства по ручному преобразованию LXC", + "LXC Management": "Управление LXC", + "LXC Mount Manager": "Менеджер монтирования LXC", + "LXC Privileged to Unprivileged conversion": "Преобразование привилегированного контейнера LXC в непривилегированный", + "LXC Unprivileged to Privileged conversion": "Преобразование непривилегированного контейнера LXC в привилегированный", + "LXC already stopped": "Контейнер LXC уже остановлен", + "LXC containers with NVIDIA passthrough:": "Контейнеры LXC с пробросом NVIDIA:", + "LXC conversion from privileged to unprivileged completed successfully!": "Преобразование привилегированного контейнера LXC в непривилегированный успешно завершено!", + "LXC conversion from unprivileged to privileged completed successfully!": "Преобразование непривилегированного контейнера LXC в привилегированный успешно завершено!", + "LXC entries outside the NVIDIA inventory of the journal": "Записи LXC, не входящие в перечень NVIDIA в журнале", + "LXC entries outside the selected acceleration profile": "Записи LXC, не входящие в выбранный профиль ускорения", + "LXC entry outside the read-only NVIDIA profile": "Запись LXC, не входящая в профиль NVIDIA с доступом только для чтения", + "LXC removed:": "Контейнер LXC удалён:", + "LXC stopped": "Контейнер LXC остановлен", + "LXC update skipped by user.": "Обновление LXC пропущено пользователем.", + "LXCs to destroy:": "Контейнеры LXC для уничтожения:", + "LZO - fastest, weaker ratio": "LZO — самое быстрое сжатие, но меньшая степень сжатия", + "Lab interruption after installing the new container": "Прерывание лабораторной работы после установки нового контейнера", + "Lab interruption after protecting the data": "Прерывание лабораторной работы после защиты данных", + "Label Studio is an open source data labeling tool. It lets you label data types like audio, text, images, videos, and time series with a simple and straightforward UI and export to various model formats. It can be used to prepare raw data or improve existing training data to get more accurate ML models.": "Label Studio — инструмент для разметки данных с открытым исходным кодом. Он позволяет размечать аудио, тексты, изображения, видео и временные ряды с помощью простого и понятного интерфейса, а также экспортировать данные в различные форматы моделей. Его можно использовать для подготовки исходных данных или улучшения существующих обучающих данных, чтобы повысить точность моделей машинного обучения.", + "Label:": "Метка:", + "Language Change": "Смена языка", + "Language changed to": "Язык изменён на", + "Language/locale (e.g. es_ES.UTF-8; translation of every application is not guaranteed)": "Язык/локаль (например, es_ES.UTF-8; перевод каждого приложения не гарантируется)", + "Language:": "Язык:", + "Last 50 kernel log lines": "Последние 50 строк журнала ядра", + "Last run:": "Последний запуск:", + "Last system boot time": "Время последней загрузки системы", + "Latest version:": "Последняя версия:", + "Launching GPU passthrough assistant for VM": "Запуск помощника по пробросу GPU в виртуальную машину", + "Lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork.": "Lazylibrarian — программа для отслеживания авторов и получения метаданных для вашей электронной библиотеки. В качестве источников информации об авторах и книгах она использует Goodreads, Librarything и, при необходимости, GoogleBooks. Этот контейнер основан на форке DobyTang.", + "Ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user’s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012).": "Ldap-auth — программное обеспечение для аутентификации пользователей, запрашивающих защищённые ресурсы с серверов, доступ к которым осуществляется через прокси nginx. Оно включает службу (ldap-auth), которая взаимодействует с сервером аутентификации, и службу веб-сервера, которая создаёт файл cookie аутентификации на основе учётных данных пользователя. Службы написаны на Python и предназначены для работы с сервером аутентификации по протоколу LDAP (Lightweight Directory Access Protocol): OpenLDAP или Microsoft Windows Active Directory 2003 и 2012.", + "Leave empty to auto-generate one.": "Оставьте поле пустым для автоматического создания.", + "Leave empty to use the retention of the storage.": "Оставьте поле пустым, чтобы использовать политику хранения, заданную для хранилища.", + "Legacy PVE 8 .list files commented or not present": "Устаревшие файлы .list для PVE 8 закомментированы или отсутствуют", + "Legacy ceph.list commented or not present": "Устаревший файл ceph.list закомментирован или отсутствует", + "Legacy gasket-dkms cleanup could not be verified as complete.": "Не удалось подтвердить полное завершение удаления устаревшего gasket-dkms.", + "Legacy gasket-dkms detected": "Обнаружен устаревший gasket-dkms", + "Legacy network tools (e.g., ifconfig)": "Устаревшие сетевые инструменты (например, ifconfig)", + "Legend:": "Условные обозначения:", + "Let's review your current network configuration.": "Давайте проверим текущую конфигурацию сети.", + "Liberate your videos and unleash infinite possibilities.": "Освободите свои видео от ограничений и откройте безграничные возможности.", + "Libraries: /data/media/movies, /data/media/series and /data/media/music. Select them in the media server.": "Медиатеки: /data/media/movies, /data/media/series и /data/media/music. Выберите их на медиасервере.", + "Library": "Библиотека", + "Library size in GB": "Размер библиотеки в ГБ", + "Libre Closet": "Libre Closet", + "LibreDB Studio": "LibreDB Studio", + "LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.": "LibreOffice — бесплатный мощный офисный пакет, преемник OpenOffice.org (широко известного как OpenOffice). Его лаконичный интерфейс и многофункциональные инструменты помогают раскрыть творческий потенциал и повысить продуктивность.", + "LibreWolf is a custom and independent version of Firefox, with the primary goals of privacy, security and user freedom. LibreWolf also aims to remove all the telemetry, data collection and annoyances, as well as disabling anti-freedom features like DRM.": "LibreWolf — модифицированная независимая версия Firefox, основные цели которой — конфиденциальность, безопасность и свобода пользователей. LibreWolf также стремится полностью устранить телеметрию, сбор данных и раздражающие элементы, а также отключить функции, ограничивающие свободу, такие как DRM.", + "Librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.": "Librespeed — очень легковесный тест скорости, реализованный на Javascript с использованием XMLHttpRequest и Web Workers.", + "Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.": "Lidarr — менеджер музыкальной коллекции для пользователей Usenet и BitTorrent. Он может отслеживать несколько RSS-лент в поисках новых треков ваших любимых исполнителей, загружать, сортировать и переименовывать их. Его также можно настроить на автоматическую замену уже загруженных файлов версиями более высокого качества, когда они становятся доступны.", + "LiftTrace": "LiftTrace", + "Lightweight DNS forwarder and cache.": "Легковесный сервер пересылки и кэширования DNS-запросов.", + "Lightweight Docker management UI": "Легковесный интерфейс управления Docker", + "Lightweight LDAP server with a web administration UI.": "Легковесный LDAP-сервер с веб-интерфейсом администрирования.", + "Lightweight XMPP messaging server.": "Лёгкий сервер обмена сообщениями XMPP.", + "Lightweight messaging server with JetStream persistence.": "Легковесный сервер обмена сообщениями с постоянным хранением данных в JetStream.", + "Lightweight, privacy-focused web analytics with SQLite storage.": "Легковесная веб-аналитика с упором на конфиденциальность и хранением данных в SQLite.", + "Likely cause: host directory permissions deny the container's mapped UID.": "Вероятная причина: права доступа к каталогу на хосте запрещают доступ для UID, сопоставленного контейнеру.", + "Limiting size and optimizing journald": "Ограничение размера и оптимизация journald", + "Limiting size and optimizing journald...": "Ограничение размера и оптимизация journald...", + "Limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.": "Limnoria — надёжный, полнофункциональный IRC-бот на Python, удобный для пользователей и программистов, с множеством готовых плагинов. Преемник известного Supybot.", + "Limnoria joins no IRC network until its configuration file exists. Create it with the setup wizard from the Proxmox host: pct exec -- bash -c 'cd /config && limnoria-wizard'": "Limnoria не подключается ни к одной сети IRC, пока не создан файл конфигурации. Создайте его с помощью мастера настройки, запустив на хосте Proxmox: pct exec -- bash -c 'cd /config && limnoria-wizard'", + "Line to paste (single line, including \"command=...\" prefix):": "Строка для вставки (одной строкой, включая префикс \"command=...\"):", + "LinkStack": "LinkStack", + "Linux Installation Options": "Варианты установки Linux", + "Linux guest setup and migration notes": "Примечания по настройке и миграции гостевых систем Linux", + "Linux/Mac path:": "Путь в Linux/Mac:", + "LinuxServer Jellyfin with optional GPU passthrough": "LinuxServer Jellyfin с возможностью проброса GPU", + "LinuxServer MariaDB requires a user, database and password": "Для LinuxServer MariaDB требуются пользователь, база данных и пароль", + "LinuxServer Nextcloud with MariaDB and Redis": "LinuxServer Nextcloud с MariaDB и Redis", + "List Available Disks": "Показать доступные диски", + "List IOMMU group mapping": "Показать распределение устройств по группам IOMMU", + "List NVMe devices": "Показать устройства NVMe", + "List SMART-capable devices": "Показать список устройств с поддержкой SMART", + "List VM/CT IDs to operate on": "Показать список идентификаторов ВМ/контейнеров для выполнения операций", + "List ZFS datasets and snapshots": "Показать список наборов данных и снимков ZFS", + "List all LXC containers": "Показать список всех контейнеров LXC", + "List all ZFS pools": "Показать список всех пулов ZFS", + "List all containers to identify the privileged one:": "Показать список всех контейнеров, чтобы найти привилегированный контейнер:", + "List all containers to identify the unprivileged one:": "Показать список всех контейнеров, чтобы найти непривилегированный контейнер:", + "List all virtual machines": "Показать список всех виртуальных машин", + "List applications": "Показать список приложений", + "List backups in a specific storage": "Показать список резервных копий в указанном хранилище", + "List block devices and partitions": "Показать список блочных устройств и разделов", + "List configured storages:": "Показать список настроенных хранилищ:", + "List containers:": "Показать список контейнеров:", + "List content of specific storage": "Показать содержимое указанного хранилища", + "List disk persistent identifiers": "Показать список постоянных идентификаторов дисков", + "List disks with detailed info": "Показать список дисков с подробной информацией", + "List importable ZFS pools": "Показать список пулов ZFS, доступных для импорта", + "List local backups": "Показать список локальных резервных копий", + "List storages valid for image import": "Показать список хранилищ, подходящих для импорта образов", + "Listening Ports": "Прослушиваемые порты", + "Listening on:": "Прослушивание на:", + "Listening ports:": "Прослушиваемые порты:", + "Listing relevant CT users and their mapped UID/GID on host...": "Вывод списка соответствующих пользователей контейнера и сопоставленных им UID/GID на хосте...", + "Livebook": "Livebook", + "Livebook password": "Пароль Livebook", + "Livebook password (minimum 12 characters)": "Пароль Livebook (не менее 12 символов)", + "Load and verify the WireGuard module on the Proxmox host": "Загрузите и проверьте модуль WireGuard на хосте Proxmox", + "Loader": "Загрузчик", + "Loader configured as boot device.": "Загрузчик настроен как загрузочное устройство.", + "Loader import failed. No disk detected in config.": "Не удалось импортировать загрузчик. В конфигурации не обнаружен диск.", + "Loader import failed. No disk detected.": "Не удалось импортировать загрузчик. Диск не обнаружен.", + "Loader imported successfully to %s": "Загрузчик успешно импортирован в %s", + "Loader storage selection failed or was cancelled.": "Не удалось выбрать хранилище для загрузчика, либо выбор был отменён.", + "Loader:": "Загрузчик:", + "Loading modules...": "Загрузка модулей...", + "Loading the Helper-Scripts catalog...": "Загрузка каталога Helper-Scripts...", + "Loading the host kernel module:": "Загрузка модуля ядра хоста:", + "Local Disk Manager - Proxmox Host": "Диспетчер локальных дисков — хост Proxmox", + "Local Disk Storages": "Локальные дисковые хранилища", + "Local Shared Directory on Host": "Локальный общий каталог на хосте", + "Local archive targets (paths + USB mount/unmount)": "Локальные места хранения архивов (пути + монтирование/размонтирование USB)", + "Local backup error log": "Журнал ошибок локального резервного копирования", + "Local backup failed.": "Не удалось создать локальную резервную копию.", + "Local directory (single-machine — only use if it is a SEPARATE disk)": "Локальный каталог (на одной машине — используйте только на ОТДЕЛЬНОМ диске)", + "Local keyfile is missing but a recovery copy was found in PBS.": "Локальный файл ключа отсутствует, но в PBS найдена копия для восстановления.", + "Local network only (192.168.0.0/16)": "Только локальная сеть (192.168.0.0/16)", + "Local public URL has no matching published port; use an explicit URL": "Для локального публичного URL нет соответствующего опубликованного порта; укажите URL явно", + "Local restore error log": "Журнал ошибок локального восстановления", + "Local storage for PostgreSQL": "Локальное хранилище для PostgreSQL", + "Locale generated": "Локаль сгенерирована", + "Location:": "Расположение:", + "Log": "Журнал", + "Log aggregation server for Grafana.": "Сервер агрегации журналов для Grafana.", + "Log file": "Файл журнала", + "Log2RAM already registered — updating to latest configuration": "Log2RAM уже зарегистрирован — обновление конфигурации до актуальной версии", + "Log2RAM could not be downloaded": "Не удалось скачать Log2RAM", + "Log2RAM installation and configuration completed successfully.": "Установка и настройка Log2RAM успешно завершены.", + "Log2RAM installation cancelled by user": "Установка Log2RAM отменена пользователем", + "Log2RAM installation verification failed. Check /tmp/log2ram_install.log": "Проверка установки Log2RAM не пройдена. Проверьте /tmp/log2ram_install.log", + "Log2RAM installed successfully": "Log2RAM успешно установлен", + "Log2RAM installed:": "Log2RAM установлен:", + "Log2RAM is removed at the next reboot, after writing /var/log to disk": "Log2RAM будет удалён при следующей перезагрузке после записи /var/log на диск", + "Log2RAM keeps /var/log in RAM; the journal stays on disk from the next boot": "Log2RAM хранит /var/log в оперативной памяти; начиная со следующей загрузки системный журнал будет храниться на диске", + "Log2RAM keeps the journal in order from the next reboot": "Log2RAM поддерживает журнал в порядке начиная со следующей перезагрузки", + "Log2RAM size set to:": "Размер Log2RAM установлен:", + "Log2RAM write scheduled every": "Запись Log2RAM запланирована каждые", + "Log:": "Журнал:", + "Logged-in users": "Пользователи, вошедшие в систему", + "Login email used by every store (optional)": "Адрес электронной почты для входа во все магазины (необязательно)", + "Login password used by every store (optional)": "Пароль для входа во все магазины (необязательно)", + "Login to {registry} timed out. Saved credentials were not changed.": "Время ожидания входа в {registry} истекло. Сохранённые учётные данные не изменены.", + "Logout from {registry} timed out. Saved file credentials were not changed.": "Время ожидания выхода из {registry} истекло. Учётные данные, сохранённые в файле, не изменены.", + "Logrotate optimization completed": "Оптимизация Logrotate завершена", + "Logrotate service restarted successfully": "Служба Logrotate успешно перезапущена", + "Lollypop is a lightweight modern music player designed to work excellently on the GNOME desktop environment.": "Lollypop — лёгкий современный музыкальный проигрыватель, разработанный для оптимальной работы в среде рабочего стола GNOME.", + "Long Test — Background": "Длительный тест — в фоновом режиме", + "Long self-test started on": "Длительная самопроверка запущена на", + "Long test — full scan, runs in background if closed": "Длительный тест — полное сканирование, продолжается в фоновом режиме после закрытия", + "Look for containers with 'unprivileged: 1' in their config": "Найдите контейнеры с 'unprivileged: 1' в конфигурации", + "Look for containers without 'unprivileged: 1' in their config": "Найдите контейнеры без 'unprivileged: 1' в конфигурации", + "Lookup domain registration info": "Получить сведения о регистрации домена", + "Low Container Memory": "Мало памяти в контейнере", + "Low free space warning": "Предупреждение о нехватке свободного места", + "Low-code programming for event-driven applications": "Разработка событийно-ориентированных приложений с минимальным написанием кода", + "Low-latency voice chat server.": "Сервер голосового чата с низкой задержкой.", + "Low-power CPU platform": "Процессорная платформа с низким энергопотреблением", + "Luanti (formerly Minetest) is an open source voxel game-creation platform with easy modding and game creation": "Luanti (ранее Minetest) — платформа с открытым исходным кодом для создания воксельных игр, позволяющая легко создавать игры и модификации", + "Lucky web interface": "Веб-интерфейс Lucky", + "Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.": "Lychee — бесплатный инструмент для управления фотографиями, работающий на вашем сервере или хостинге. Установка занимает считаные секунды. Загружайте фотографии, управляйте ими и делитесь ими так же, как в нативном приложении. В Lychee есть всё необходимое, а все ваши фотографии надёжно хранятся.", + "Lynis - Security Audit": "Lynis — Audit безопасности", + "Lynis Management": "Управление Lynis", + "Lynis command not found": "Команда Lynis не найдена", + "Lynis has been removed": "Lynis удалён", + "Lynis installation could not be verified": "Не удалось проверить установку Lynis", + "Lynis installed successfully from GitHub": "Lynis успешно установлен из GitHub", + "Lynis is a security auditing tool that performs comprehensive system scans including:": "Lynis — инструмент аудита безопасности, который выполняет комплексные проверки системы, включая:", + "Lynis is currently installed.": "Lynis уже установлен.", + "Lynis is not installed on this system.": "Lynis не установлен в этой системе.", + "Lynis is not installed. Run: apt install lynis": "Lynis не установлен. Выполните: apt install lynis", + "Lynis is ready to use": "Lynis готов к использованию", + "Lynis updated to version:": "Lynis обновлён до версии:", + "Lynis version:": "Версия Lynis:", + "Lynis was not installed from Git. Reinstalling...": "Lynis не был установлен из Git. Выполняется переустановка...", + "Lyrion Music Server is a streaming audio server for Squeezebox audio players.": "Lyrion Music Server — сервер потокового аудио для аудиоплееров Squeezebox.", + "M.2 / PCIe devices:": "Устройства M.2 / PCIe:", + "M3U proxy server": "Прокси-сервер M3U", + "MAC ADDRESS": "MAC-АДРЕС", + "MAC Address": "MAC-адрес", + "MAC address": "MAC-адрес", + "MACHINE TYPE": "ТИП МАШИНЫ", + "MAME is a free and open-source emulator designed to emulate the hardware of arcade games, video game consoles, old computers and other systems in software on modern personal computers.": "MAME — свободный эмулятор с открытым исходным кодом, предназначенный для программной эмуляции аппаратного обеспечения игровых автоматов, игровых консолей, старых компьютеров и других систем на современных персональных компьютерах.", + "MDBList lists synced to Radarr and Sonarr.": "Списки MDBList синхронизированы с Radarr и Sonarr.", + "MDBListarr": "MDBListarr", + "MOTD configuration updated successfully": "Конфигурация MOTD успешно обновлена", + "MOTD configuration was already up to date": "Конфигурация MOTD уже была актуальной", + "MPEG-TS stream: port 6878, path /ace/getstream?id= followed by the channel ID.": "Поток MPEG-TS: порт 6878, путь /ace/getstream?id=, после которого указывается идентификатор канала.", + "MQTT broker with a built-in management dashboard.": "Брокер MQTT со встроенной панелью управления.", + "MTU SIZE": "РАЗМЕР MTU", + "Machine Type": "Тип машины", + "Machine i440fx": "Машина i440fx", + "Machine learning": "Машинное обучение", + "Machine learning container prepared": "Контейнер для машинного обучения подготовлен", + "Machine learning profile not implemented; it is not replaced by CPU:": "Профиль машинного обучения не реализован; замена на профиль CPU не выполняется:", + "Machine q35": "Машина q35", + "Machine type: q35": "Тип машины: q35", + "Machine: q35": "Машина: q35", + "Main endpoint not yet defined": "Основная конечная точка ещё не определена", + "Main menu": "Главное меню", + "Maintainerr": "Maintainerr", + "Major version differs:": "Основная версия отличается:", + "Make sure IOMMU is properly enabled and the system has been rebooted after activation.": "Убедитесь, что IOMMU включён правильно и после его включения система была перезагружена.", + "Make sure there are no critical services running as they will be interrupted. Ensure your server can be safely rebooted.": "Убедитесь, что критически важные службы не запущены, поскольку их работа будет прервана. Убедитесь, что сервер можно безопасно перезагрузить.", + "Make sure you have SSH or Web UI access before rebooting.": "Перед перезагрузкой убедитесь, что у вас есть доступ по SSH или через веб-интерфейс.", + "Makefile missing in": "Makefile отсутствует в", + "Malformed repository entries cleaned": "Некорректные записи репозиториев удалены", + "Maloja": "Maloja", + "Maloja admin password": "Пароль администратора Maloja", + "Manage OCI": "Управление OCI", + "Manage OCI stack": "Управление стеком OCI", + "Manage PBS encryption keyfile": "Управление файлом ключа шифрования PBS", + "Manage Secure Gateway": "Управление Secure Gateway", + "Manage a Z-Wave network from a web dashboard and WebSocket gateway.": "Управляйте сетью Z-Wave через веб-панель и шлюз WebSocket.", + "Manage and inspect VM disk images": "Управление образами дисков виртуальных машин и их проверка", + "Manage custom backup paths": "Управление пользовательскими путями резервного копирования", + "Manage custom paths (add / remove your folders)": "Управление пользовательскими путями (добавление и удаление ваших папок)", + "Manage data and APIs with a modern visual interface.": "Управляйте данными и API с помощью современного визуального интерфейса.", + "Manage database changes, access and workflows.": "Управляйте изменениями баз данных, доступом и рабочими процессами.", + "Manage installed OCI applications": "Управление установленными приложениями OCI", + "Manage local backup target": "Управление локальным местом хранения резервных копий", + "Manage private image registries.\nSaved credentials let ProxMenux access your private images.": "Управление частными реестрами образов.\nСохранённые учётные данные позволяют ProxMenux получать доступ к вашим частным образам.", + "Manage registry accounts as root on the Proxmox node.": "Управляйте учётными записями реестров от имени root на узле Proxmox.", + "Manage teams of AI agents from a web dashboard.": "Управляйте командами ИИ-агентов через веб-панель.", + "Managed disks must have backup enabled and a valid size": "Для управляемых дисков должно быть включено резервное копирование и указан допустимый размер", + "Managed public route include is missing": "Отсутствует подключаемый файл конфигурации управляемого публичного маршрута", + "Managed public route installation failed": "Не удалось установить управляемый публичный маршрут", + "Managing Nginx proxy hosts with a simple, powerful interface.": "Управление прокси-хостами Nginx через простой и функциональный интерфейс.", + "Manticore Search": "Manticore Search", + "Manual CLI Guide (Disk and Storage Manager)": "Руководство по работе вручную через CLI (управление дисками и хранилищами)", + "Manual CLI Guide (GPU/TPU)": "Руководство по работе вручную через CLI (GPU/TPU)", + "Manual Guide: Convert LXC Privileged to Unprivileged": "Руководство по ручному преобразованию привилегированного контейнера LXC в непривилегированный", + "Manual Guide: Convert LXC Unprivileged to Privileged": "Руководство по ручному преобразованию непривилегированного контейнера LXC в привилегированный", + "Manual Path Entry": "Ручной ввод пути", + "Manual backup of a VM or CT": "Резервное копирование ВМ или контейнера вручную", + "Manual command template (copy/paste):": "Шаблон команды для ручного выполнения (скопируйте и вставьте):", + "Manual destination path": "Путь назначения, указанный вручную", + "Manual guide script not found": "Скрипт с руководством по ручному выполнению не найден", + "Manual install required inside CT": "Требуется ручная установка внутри контейнера", + "Manual path entry": "Ручной ввод пути", + "Manual review is required.": "Требуется ручная проверка.", + "Manual steps recommended after import": "После импорта рекомендуется выполнить дополнительные действия вручную", + "Manual upgrade guide step by step": "Пошаговое руководство по ручному обновлению", + "Manyfold is an open source, self-hosted web application for managing a collection of 3D models, particularly focused on 3D printing.": "Manyfold — веб-приложение с открытым исходным кодом для размещения на собственном сервере и управления коллекцией 3D-моделей, ориентированное прежде всего на 3D-печать.", + "Mapped GID on host": "Сопоставленный GID на хосте", + "Mapped UID on host": "Сопоставленный UID на хосте", + "MariaDB has no web interface: applications and clients connect to port 3306 of this container.": "У MariaDB нет веб-интерфейса: приложения и клиенты подключаются к порту 3306 этого контейнера.", + "Mariadb is one of the most popular database servers. Made by the original developers of MySQL.": "Mariadb — один из самых популярных серверов баз данных. Создан первоначальными разработчиками MySQL.", + "Mark the VMs/CTs to include in this job:": "Отметьте ВМ/контейнеры, которые нужно включить в это задание:", + "Markdown-based personal knowledge management.": "Управление личной базой знаний на основе Markdown.", + "Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones..": "Mastodon — свободный сервер социальной сети с открытым исходным кодом на основе ActivityPub, где пользователи могут подписываться на друзей и находить новых.", + "Max FD limit / ulimit configured": "Максимальный лимит файловых дескрипторов / ulimit настроен", + "Max FS open files configuration created successfully": "Конфигурация максимального числа открытых файлов в файловой системе успешно создана", + "Max user watches configured": "Максимальное число объектов наблюдения на пользователя настроено", + "Maximum auto-repair attempts reached (3). Please review the log and run any remaining commands manually.": "Достигнуто максимальное число попыток автоматического исправления (3). Просмотрите журнал и выполните оставшиеся команды вручную.", + "May need to restart terminal": "Может потребоваться перезапуск терминала", + "Media & Streaming": "Мультимедиа и потоковое вещание", + "Media discovery and request management for Jellyfin, Plex and Emby.": "Поиск медиаконтента и управление запросами для Jellyfin, Plex и Emby.", + "Media library transcoding and health checking, with an internal worker node.": "Перекодирование медиатеки и проверка её состояния со встроенным рабочим узлом.", + "Media server": "Медиасервер", + "Media server selection cancelled or invalid": "Выбор медиасервера отменён или недопустим", + "MediaElch is a MediaManager for Kodi. Information about Movies, TV Shows, Concerts and Music are stored as nfo files. Fanarts are downloaded automatically from fanart.tv. Using the nfo generator, MediaElch can be used with other MediaCenters as well.": "MediaElch — это MediaManager для Kodi. Информация о фильмах, сериалах, концертах и музыке хранится в файлах nfo. Фан-арт автоматически загружается с fanart.tv. Благодаря генератору nfo MediaElch можно использовать и с другими MediaCenters.", + "Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.": "Medusa — автоматический менеджер видеотеки сериалов. Он отслеживает новые эпизоды ваших любимых сериалов и творит свою магию, когда они появляются.", + "Meilisearch master API key": "Главный ключ API Meilisearch", + "Memory": "Память", + "Memory in MB": "Память в МБ", + "Memory optimization completed.": "Оптимизация памяти завершена.", + "Memory optimizations removed": "Оптимизации памяти удалены", + "Memory restored.": "Память восстановлена.", + "Memory settings optimized successfully": "Параметры памяти успешно оптимизированы", + "Memory:": "Память:", + "Memos is a lightweight, self-hosted memo hub. Open Source and Free forever.": "Memos — легковесный сервис для заметок, размещаемый на собственном сервере. С открытым исходным кодом и навсегда бесплатный.", + "MeshCentral": "MeshCentral", + "Messaging & Notifications": "Обмен сообщениями и уведомления", + "Messaging & Queues": "Сообщения и очереди", + "Messenger for the Decentralized Web": "Мессенджер для децентрализованного интернета", + "Method:": "Метод:", + "Metrics collection and time-series monitoring.": "Сбор метрик и мониторинг временных рядов.", + "MicroBin administrator": "Администратор MicroBin", + "Microsoft Edge is a cross-platform web browser developed by Microsoft and based on Chromium.": "Microsoft Edge — кроссплатформенный веб-браузер, разработанный Microsoft на основе Chromium.", + "Migrate VMs away from node being upgraded": "Перенесите виртуальные машины с обновляемого узла на другие узлы", + "Migrate away any guests that must keep running": "Перенесите на другие узлы все гостевые системы, которые должны продолжать работать", + "Migrated": "Перенесено", + "Migrated legacy ProxMenux NVIDIA blacklist state — module will reload after reboot": "Перенесено состояние устаревшего чёрного списка модулей NVIDIA в ProxMenux — модуль будет загружен повторно после перезагрузки", + "Migration jobs cannot safely restore database or unclassified backend data from host directories": "Задания миграции не могут безопасно восстановить из каталогов хоста базы данных или неклассифицированные данные серверной части", + "MineOS web interface": "Веб-интерфейс MineOS", + "Minimal self-hosted bookmark manager.": "Минималистичный менеджер закладок для размещения на собственном сервере.", + "Minimalist self-hosted RSS reader.": "Минималистичный RSS-ридер для размещения на собственном сервере.", + "Minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards.": "Minisatip — многопоточный сервер satip версии 1.2, работающий под Linux и протестированный с картами DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC и ISDB-T.", + "Mirror URL not available for this script.": "URL зеркала для этого скрипта недоступен.", + "Miscellaneous": "Разное", + "Missing": "Отсутствует", + "Missing OCI metadata:": "Отсутствуют метаданные OCI:", + "Missing commands after installation:": "Команды, отсутствующие после установки:", + "Missing dependency": "Отсутствует зависимость", + "Missing native directive:": "Отсутствует нативная директива:", + "Missing on target:": "Отсутствует на целевой системе:", + "Missing or invalid parameter": "Параметр отсутствует или недопустим", + "Missing required command:": "Отсутствует необходимая команда:", + "Missing required parameter": "Отсутствует обязательный параметр", + "Mixed GPU Modes": "Разные режимы GPU", + "Mixed current mode detected in selected GPU(s).": "Выбранные GPU работают в разных режимах.", + "Mobile UI backup created": "Резервная копия мобильного интерфейса создана", + "Mock HTTP and HTTPS APIs for development and testing.": "Имитация API HTTP и HTTPS для разработки и тестирования.", + "MockServer": "MockServer", + "Mode": "Режим", + "Model": "Модель", + "Modern resource monitor (press q to exit)": "Современный монитор ресурсов (нажмите q для выхода)", + "Modern, easy to use download automation for torrents and usenet.": "Современное и простое в использовании средство автоматизации загрузок из торрентов и Usenet.", + "Modify": "Изменить", + "Modify OCI": "Изменить OCI", + "Modify OCI stack": "Изменить стек OCI", + "Modify extra paths and devices": "Изменить дополнительные пути и устройства", + "Modify: edit resources, network, paths and GPU": "Изменить: редактирование ресурсов, сети, путей и GPU", + "Modifying Fastfetch configuration...": "Изменение конфигурации Fastfetch...", + "Modules configuration updated.": "Конфигурация модулей обновлена.", + "Modules loaded.": "Модули загружены.", + "MongoDB 4.4, the last series that runs on a CPU without AVX.": "MongoDB 4.4 — последняя серия версий, работающая на процессорах без AVX.", + "Monica is an open source personal relationship management system, that lets you document your life.": "Monica — система управления личными отношениями с открытым исходным кодом, позволяющая вести записи о своей жизни.", + "Monitor Activated": "Монитор активирован", + "Monitor Deactivated": "Монитор отключён", + "Monitor URL": "URL монитора", + "Monitor disk I/O usage (press q to exit)": "Мониторинг дискового ввода-вывода (нажмите q для выхода)", + "Monitor disk health and SMART metrics.": "Отслеживайте состояние дисков и показатели SMART.", + "Monitor progress:": "Отслеживание хода выполнения:", + "Monitor, analyze, and alert on network performance.": "Отслеживайте и анализируйте производительность сети и получайте оповещения о ней.", + "Monitoring": "Мониторинг", + "Monitoring & Analytics": "Мониторинг и аналитика", + "Most common cause: the archive is corrupted (interrupted write, partial copy, or storage issue).": "Наиболее частая причина: архив повреждён (прерванная запись, неполное копирование или проблема с хранилищем).", + "Motion graphics and compositing in your browser": "Моушн-дизайн и композитинг в вашем браузере", + "Mount Added Successfully:": "Монтирование успешно добавлено:", + "Mount CIFS share:": "Смонтировать общий ресурс CIFS:", + "Mount Configuration Summary:": "Сводка настроек монтирования:", + "Mount Details:": "Сведения о монтировании:", + "Mount Examples:": "Примеры монтирования:", + "Mount Host Directory to LXC": "Смонтировать каталог хоста в LXC", + "Mount Host Directory to LXC Container": "Смонтировать каталог хоста в контейнер LXC", + "Mount Information:": "Информация о монтировании:", + "Mount Method": "Способ монтирования", + "Mount NFS Client in LXC": "Монтирование через клиент NFS в LXC", + "Mount NFS Share": "Смонтировать общий ресурс NFS", + "Mount NFS Share on Host": "Смонтировать общий ресурс NFS на хосте", + "Mount NFS share:": "Смонтировать общий ресурс NFS:", + "Mount Name": "Имя монтирования", + "Mount Name:": "Имя монтирования:", + "Mount Options": "Параметры монтирования", + "Mount Path": "Путь монтирования", + "Mount Path:": "Путь монтирования:", + "Mount Point": "Точка монтирования", + "Mount Point ID": "Идентификатор точки монтирования", + "Mount Point Removal Summary:": "Сводка удаления точки монтирования:", + "Mount Point:": "Точка монтирования:", + "Mount Samba Share": "Смонтировать общий ресурс Samba", + "Mount Samba Share on Host": "Смонтировать общий ресурс Samba на хосте", + "Mount USB disk?": "Смонтировать USB-диск?", + "Mount a USB drive now": "Смонтировать USB-накопитель сейчас", + "Mount activation cancelled": "Активация монтирования отменена", + "Mount all datasets": "Смонтировать все наборы данных", + "Mount already exists for this path in container": "Монтирование для этого пути в контейнере уже существует", + "Mount and persist with UUID:": "Смонтировать и сохранить настройку монтирования с использованием UUID:", + "Mount configuration cancelled": "Настройка монтирования отменена", + "Mount failed": "Не удалось выполнить монтирование", + "Mount mode applied": "Режим монтирования применён", + "Mount name": "Имя монтирования", + "Mount not authorized by the operation": "Монтирование не разрешено этой операцией", + "Mount options:": "Параметры монтирования:", + "Mount or create it with its data and run the recovery again.": "Смонтируйте или создайте его вместе с его данными и запустите восстановление повторно.", + "Mount path must be an absolute path starting with /": "Путь монтирования должен быть абсолютным и начинаться с /", + "Mount path:": "Путь монтирования:", + "Mount paths must not overlap": "Пути монтирования не должны пересекаться", + "Mount point created": "Точка монтирования создана", + "Mount point created.": "Точка монтирования создана.", + "Mount point is visible but NOT writable from inside the container": "Точка монтирования видна внутри контейнера, но запись в неё НЕВОЗМОЖНА", + "Mount point is writable from inside the container": "Запись в точку монтирования из контейнера возможна", + "Mount point not visible inside the container yet": "Точка монтирования пока не видна внутри контейнера", + "Mount point ready:": "Точка монтирования готова:", + "Mount point removed successfully": "Точка монтирования успешно удалена", + "Mount point:": "Точка монтирования:", + "Mount points added:": "Добавленные точки монтирования:", + "Mount read-only": "Монтировать только для чтения", + "Mount shares on HOST first": "Сначала смонтируйте общие ресурсы на ХОСТЕ", + "Mount specific dataset": "Смонтировать определённый набор данных", + "Mount status:": "Состояние монтирования:", + "Mount this device and use it as the backup destination?": "Смонтировать это устройство и использовать его для хранения резервных копий?", + "Mount was busy — performed lazy unmount": "Точка монтирования была занята — выполнено отложенное размонтирование", + "Mount your cloud drive on your home NAS": "Смонтируйте свой облачный диск на домашнем NAS", + "Mounted": "Смонтировано", + "Mounted ISO on device": "ISO-образ смонтирован на устройстве", + "Mounted at": "Смонтировано в", + "Mounted external disk": "Смонтированный внешний диск", + "Mounted external disk (no network needed, single-machine dedup)": "Смонтированный внешний диск (сеть не требуется, дедупликация в пределах одного компьютера)", + "Mounted external disk (offline-safe, single-machine dedup)": "Подключённый внешний диск (работает без сети, дедупликация в пределах одной машины)", + "Mounted filesystem detected": "Обнаружена смонтированная файловая система", + "Mounting CIFS share...": "Монтирование общего ресурса CIFS...", + "Mounting NFS share...": "Монтирование общего ресурса NFS...", + "Mounting container filesystem": "Монтирование файловой системы контейнера", + "Mounting disk...": "Монтирование диска...", + "Mounting existing": "Подключение существующего", + "Mounting existing filesystem ({filesystem})...": "Монтирование существующей файловой системы ({filesystem})...", + "Mounting here will hide existing files until unmounted.": "Монтирование в этой точке скроет существующие файлы до размонтирования.", + "Move that copy offsite (USB, password manager, another host). Delete it from this path when done.": "Перенесите эту копию за пределы текущей системы (на USB-накопитель, в менеджер паролей или на другой хост). После этого удалите её из этого расположения.", + "Move to target VM (remove from source VM config)": "Переместить в целевую ВМ (удалить из конфигурации исходной ВМ)", + "Moving the data volumes aside": "Перемещение томов данных во временное расположение", + "Moving the data volumes aside...": "Перемещение томов данных во временное расположение...", + "Multi-container application": "Многоконтейнерное приложение", + "Multi-container application (experimental)": "Многоконтейнерное приложение (экспериментально)", + "Multi-line variables are not supported": "Многострочные переменные не поддерживаются", + "Multiple networks or external networks are not yet supported": "Использование нескольких сетей или внешних сетей пока не поддерживается", + "Multiple recovery groups found in PBS. Pick the one that originally created the keyfile:": "В PBS найдено несколько групп восстановления. Выберите ту, в которой изначально был создан файл ключа:", + "Multiple rootfs directories were found in this archive. Restore cannot continue automatically.": "В этом архиве найдено несколько каталогов rootfs. Автоматическое продолжение восстановления невозможно.", + "Mumble SuperUser administrator": "Администратор SuperUser в Mumble", + "Music Collection and Streaming Server": "Сервер для хранения музыкальной коллекции и потоковой передачи музыки", + "Music software that transforms your listening experience": "Музыкальное ПО, которое меняет ваше восприятие музыки", + "Must finish successfully (exit code 0)": "Должно завершиться успешно (код выхода 0)", + "MyIP": "MyIP", + "MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.": "MySQL Workbench — единый визуальный инструмент для архитекторов баз данных, разработчиков и администраторов баз данных. MySQL Workbench предоставляет средства моделирования данных, разработки SQL и комплексные инструменты администрирования для настройки сервера, управления пользователями, создания резервных копий и многого другого.", + "MySQL root account": "Учётная запись root в MySQL", + "Mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL.": "Mylar3 — написанный на Python инструмент для автоматической загрузки комиксов (cbr/cbz) с использованием NZB и торрентов. Помимо DDL, он поддерживает SABnzbd, NZBGET и множество торрент-клиентов.", + "NAS Systems": "Системы NAS", + "NATS Server": "Сервер NATS", + "NETWORK CONFIGURATION ANALYSIS": "АНАЛИЗ КОНФИГУРАЦИИ СЕТИ", + "NFS Access Restricted": "Доступ к NFS ограничен", + "NFS Client Error": "Ошибка клиента NFS", + "NFS Client Manager - CT": "Диспетчер клиента NFS — CT", + "NFS Client Status in CT": "Состояние клиента NFS в CT", + "NFS Client Tools: AVAILABLE": "Клиентские инструменты NFS: ДОСТУПНЫ", + "NFS Client Tools: NOT AVAILABLE": "Клиентские инструменты NFS: НЕДОСТУПНЫ", + "NFS Client in LXC (Privileged)": "Клиент NFS в LXC (привилегированный контейнер)", + "NFS Client in LXC (privileged)": "Клиент NFS в LXC (привилегированный контейнер)", + "NFS Client: INSTALLED": "Клиент NFS: УСТАНОВЛЕН", + "NFS Client: NOT INSTALLED": "Клиент NFS: НЕ УСТАНОВЛЕН", + "NFS Error": "Ошибка NFS", + "NFS Host Manager - Proxmox Host": "Диспетчер NFS на хосте — хост Proxmox", + "NFS LXC Manager - CT": "Диспетчер NFS в LXC — CT", + "NFS Mounts on Host": "Монтирования NFS на хосте", + "NFS Not Installed": "NFS не установлен", + "NFS Port Error": "Ошибка порта NFS", + "NFS Proxmox storages (pvesm):": "Хранилища NFS в Proxmox (pvesm):", + "NFS Server": "Сервер NFS", + "NFS Server Selection": "Выбор сервера NFS", + "NFS Server in LXC (Privileged)": "Сервер NFS в LXC (привилегированный контейнер)", + "NFS Server in LXC (privileged)": "Сервер NFS в LXC (привилегированный контейнер)", + "NFS Server: INSTALLED": "Сервер NFS: УСТАНОВЛЕН", + "NFS Server: NOT INSTALLED": "Сервер NFS: НЕ УСТАНОВЛЕН", + "NFS Service Status in CT": "Состояние службы NFS в CT", + "NFS Service: RUNNING": "Служба NFS: РАБОТАЕТ", + "NFS Service: STOPPED": "Служба NFS: ОСТАНОВЛЕНА", + "NFS Version Configuration:": "Настройка версии NFS:", + "NFS Version:": "Версия NFS:", + "NFS Version: Auto-negotiation (NFSv3/NFSv4)": "Версия NFS: автоматическое согласование (NFSv3/NFSv4)", + "NFS client installed successfully.": "Клиент NFS успешно установлен.", + "NFS client tools installed": "Клиентские утилиты NFS установлены", + "NFS directory permissions set — containers should now be able to write": "Права доступа к каталогу NFS настроены — теперь контейнеры должны иметь возможность записи", + "NFS export": "Экспорт NFS", + "NFS export Selected": "Экспорт NFS выбран", + "NFS export created successfully!": "Экспорт NFS успешно создан!", + "NFS export:": "Экспорт NFS:", + "NFS is recommended for VM disk image storage.": "NFS рекомендуется для хранения образов дисков виртуальных машин.", + "NFS mounts in CT": "Монтирования NFS в CT", + "NFS packages removed.": "Пакеты NFS удалены.", + "NFS port (2049) is not accessible on": "Порт NFS (2049) недоступен на", + "NFS port 2049": "Порт NFS 2049", + "NFS server Selected": "Сервер NFS выбран", + "NFS server installed successfully.": "Сервер NFS успешно установлен.", + "NFS server is already installed.": "Сервер NFS уже установлен.", + "NFS server is not installed in this CT.": "Сервер NFS не установлен в этом CT.", + "NFS server is running": "Сервер NFS работает", + "NFS server:": "Сервер NFS:", + "NFS servers detected": "Обнаружены серверы NFS", + "NFS service is enabled": "Служба NFS включена", + "NFS services stopped and disabled.": "Службы NFS остановлены и отключены.", + "NFS share mounted at:": "Общий ресурс NFS смонтирован в:", + "NFS share mounted successfully!": "Общий ресурс NFS успешно смонтирован!", + "NFS share unmount completed.": "Размонтирование общего ресурса NFS завершено.", + "NFS storage added successfully!": "Хранилище NFS успешно добавлено!", + "NFS storage adding in progress...": "Выполняется добавление хранилища NFS...", + "NFSv4 needs a privileged container without AppArmor or seccomp confinement: a compromised image could affect the host. NFSv3, SMB and Time Machine work without it.\n\nPrepare this container for NFSv4?": "Для NFSv4 требуется привилегированный контейнер без ограничений AppArmor или seccomp: скомпрометированный образ может повлиять на хост. NFSv3, SMB и Time Machine работают без этого.\n\nПодготовить этот контейнер для NFSv4?", + "NIC": "NIC", + "NIC changes detected — adjusted automatically": "Обнаружены изменения сетевых адаптеров — настройки скорректированы автоматически", + "NICs:": "Сетевые адаптеры:", + "NOT FOUND": "НЕ НАЙДЕНО", + "NOTE: The host directory and its contents will remain unchanged.": "ПРИМЕЧАНИЕ: Каталог на хосте и его содержимое останутся без изменений.", + "NTP time server for the network.": "Сервер времени NTP для сети.", + "NUT server user for clients such as PeaNUT": "Пользователь сервера NUT для клиентов, таких как PeaNUT", + "NVENC patch detected — list narrowed to versions supported by keylase/nvidia-patch.": "Обнаружен патч NVENC — список ограничен версиями, поддерживаемыми keylase/nvidia-patch.", + "NVIDIA (CUDA)": "NVIDIA (CUDA)", + "NVIDIA (CUDA; official GPU image)": "NVIDIA (CUDA; официальный образ с поддержкой GPU)", + "NVIDIA (NVDEC/CUDA)": "NVIDIA (NVDEC/CUDA)", + "NVIDIA (NVENC/NVDEC)": "NVIDIA (NVENC/NVDEC)", + "NVIDIA (Selkies rendering and NVENC)": "NVIDIA (рендеринг Selkies и NVENC)", + "NVIDIA Actions": "Действия с NVIDIA", + "NVIDIA CPU hiding already configured": "Скрытие CPU NVIDIA уже настроено", + "NVIDIA Container Toolkit": "NVIDIA Container Toolkit", + "NVIDIA Container Toolkit could not generate the runtime inventory": "NVIDIA Container Toolkit не удалось сформировать список ресурсов среды выполнения", + "NVIDIA Container Toolkit installed. GPU validation pending until the host restarts.": "NVIDIA Container Toolkit установлен. Проверка GPU отложена до перезагрузки хоста.", + "NVIDIA Container Toolkit is incomplete. Missing:": "NVIDIA Container Toolkit установлен не полностью. Отсутствуют:", + "NVIDIA Container Toolkit is installed but its command line did not answer.": "NVIDIA Container Toolkit установлен, но его интерфейс командной строки не отвечает.", + "NVIDIA Container Toolkit is missing on the host (nvidia-container-cli)": "На хосте отсутствует NVIDIA Container Toolkit (nvidia-container-cli)", + "NVIDIA Container Toolkit verified against the running driver.": "NVIDIA Container Toolkit проверен на совместимость с работающим драйвером.", + "NVIDIA DKMS entries removed.": "Записи NVIDIA DKMS удалены.", + "NVIDIA Driver Uninstall": "Удаление драйвера NVIDIA", + "NVIDIA Driver Version": "Версия драйвера NVIDIA", + "NVIDIA Drivers": "Драйверы NVIDIA", + "NVIDIA Drivers Not Found": "Драйверы NVIDIA не найдены", + "NVIDIA GPU / CUDA (Toolkit on the host)": "NVIDIA GPU / CUDA (Toolkit на хосте)", + "NVIDIA GPU Driver Installation": "Установка драйвера GPU NVIDIA", + "NVIDIA GPU passthrough configured.": "Проброс GPU NVIDIA настроен.", + "NVIDIA GPU prepared:": "GPU NVIDIA подготовлен:", + "NVIDIA KVM args configured (kvm=off, vendor_id spoof)": "Параметры KVM для NVIDIA настроены (kvm=off, подмена vendor_id)", + "NVIDIA KVM hiding (cpu hidden=1)": "Скрытие KVM для NVIDIA (cpu hidden=1)", + "NVIDIA KVM hiding already configured": "Скрытие KVM для NVIDIA уже настроено", + "NVIDIA Patch": "Патч NVIDIA", + "NVIDIA device outside the expected native profile": "Устройство NVIDIA не соответствует ожидаемому нативному профилю", + "NVIDIA driver": "Драйвер NVIDIA", + "NVIDIA driver installed successfully.": "Драйвер NVIDIA успешно установлен.", + "NVIDIA driver installed:": "Установленный драйвер NVIDIA:", + "NVIDIA driver not installed": "Драйвер NVIDIA не установлен", + "NVIDIA driver verification in container:": "Проверка драйвера NVIDIA в контейнере:", + "NVIDIA drivers are not installed or not loaded on this host.": "Драйверы NVIDIA не установлены или не загружены на этом хосте.", + "NVIDIA host services disabled for VFIO mode": "Службы NVIDIA на хосте отключены для режима VFIO", + "NVIDIA host services/autoload already aligned for native mode": "Службы NVIDIA и их автозагрузка на хосте уже настроены для нативного режима", + "NVIDIA inside the container does not match the host driver or GPU": "Компоненты NVIDIA в контейнере не соответствуют драйверу хоста или графическому процессору", + "NVIDIA install incomplete. Check log:": "Установка NVIDIA не завершена. Проверьте журнал:", + "NVIDIA installer downloaded successfully": "Установщик NVIDIA успешно скачан", + "NVIDIA installer extracted.": "Установщик NVIDIA распакован.", + "NVIDIA installer not found at": "Установщик NVIDIA не найден по пути", + "NVIDIA installer reported an error. Check /tmp/nvidia_install.log": "Установщик NVIDIA сообщил об ошибке. Проверьте /tmp/nvidia_install.log", + "NVIDIA installer returned error": "Установщик NVIDIA вернул ошибку", + "NVIDIA is already attached": "NVIDIA уже подключена", + "NVIDIA kernel modules unloaded successfully.": "Модули ядра NVIDIA успешно выгружены.", + "NVIDIA libs require approximately 1.5GB of free space.": "Для библиотек NVIDIA требуется примерно 1,5 ГБ свободного места.", + "NVIDIA mount with an unauthorized source or target": "Монтирование NVIDIA с неразрешённым источником или целевым путём", + "NVIDIA patch applied - check README for supported versions.": "Патч NVIDIA применён — список поддерживаемых версий см. в README.", + "NVIDIA patch not applied.": "Патч NVIDIA не применён.", + "NVIDIA per-BDF VFIO binding configured": "Привязка устройств NVIDIA к VFIO по адресам BDF настроена", + "NVIDIA permissions or device nodes differ from the official inventory": "Права доступа или узлы устройств NVIDIA отличаются от официального перечня", + "NVIDIA refresh validated; the container is stopped and its settings are kept": "Обновление NVIDIA проверено; контейнер остановлен, его настройки сохранены", + "NVIDIA runtime (device and host driver libraries)": "Среда выполнения NVIDIA (устройство и библиотеки драйвера хоста)", + "NVIDIA runtime libraries or components are missing": "Отсутствуют библиотеки или компоненты среды выполнения NVIDIA", + "NVIDIA runtime rebuilt for the driver of this host": "Среда выполнения NVIDIA пересобрана под драйвер этого хоста", + "NVIDIA selection not supported by this profile": "Выбранный вариант NVIDIA не поддерживается этим профилем", + "NVIDIA services stopped and disabled.": "Службы NVIDIA остановлены и отключены.", + "NVIDIA udev rules and persistence service installed.": "Правила udev и служба persistence для NVIDIA установлены.", + "NVIDIA uninstallation steps completed.": "Этапы удаления NVIDIA завершены.", + "NVIDIA uninstaller completed.": "Программа удаления NVIDIA завершила работу.", + "NVIDIA update failed for LXC": "Не удалось обновить NVIDIA для LXC", + "NVIDIA userspace libraries installed.": "Библиотеки NVIDIA для пользовательского пространства установлены.", + "NVML does not match the current host driver": "NVML не соответствует текущему драйверу хоста", + "NVMe Disk Detected": "Обнаружен диск NVMe", + "NVMe critical_warning is 0 (no critical warnings reported).": "Значение critical_warning для NVMe равно 0 (критических предупреждений нет).", + "NVMe health status: PASSED": "Состояние NVMe: PASSED", + "NVMe health status: WARNING (critical_warning =": "Состояние NVMe: ПРЕДУПРЕЖДЕНИЕ (critical_warning =", + "NVMe skipped (to add as PCIe use 'Add Controller or NVMe PCIe to VM'):": "NVMe пропущен (для добавления в качестве устройства PCIe используйте пункт «Добавить контроллер или NVMe PCIe в ВМ»):", + "NVMe-specific SMART log": "Журнал SMART для NVMe", + "NVR & Cameras": "Сетевые видеорегистраторы и камеры", + "NVR with optional VA-API video acceleration and hardware object detectors": "Сетевой видеорегистратор с опциональным ускорением видео VA-API и аппаратными детекторами объектов", + "NZBGet web interface": "Веб-интерфейс NZBGet", + "Name": "Имя", + "Name for this application": "Имя этого приложения", + "Name for this machine in Folding@home (no spaces)": "Имя этой машины в Folding@home (без пробелов)", + "Name for this target:": "Имя этой цели:", + "Name of the PostgreSQL user created on the first start": "Имя пользователя PostgreSQL, создаваемого при первом запуске", + "Name of the Twingate network (the part before .twingate.com)": "Имя сети Twingate (часть перед .twingate.com)", + "Name of the database created on the first start": "Имя базы данных, создаваемой при первом запуске", + "Name of the database on the MariaDB server": "Имя базы данных на сервере MariaDB", + "Name of the directory to share (lowercase letters, digits, - or _)": "Имя каталога для общего доступа (строчные буквы, цифры, - или _)", + "Name of the internal worker node": "Имя внутреннего рабочего узла", + "Name of this wallabag instance, shown in the interface and in 2FA codes": "Имя этого экземпляра wallabag, отображаемое в интерфейсе и в кодах 2FA", + "Name or address NetBox will be opened at (for example netbox.example.com)": "Имя или адрес, по которому будет доступен NetBox (например, netbox.example.com)", + "Name or part of the description of the application": "Название приложения или часть его описания", + "Name or part of the option or of the application": "Название или часть названия параметра или приложения", + "Name:": "Имя:", + "Named accounts need private mode. Stop the container, set public: false in /config/config.js, start it again and create each user with: pct exec -- env THELOUNGE_HOME=/config s6-setuidgid abc thelounge add ": "Для именных учётных записей требуется приватный режим. Остановите контейнер, установите public: false в /config/config.js, запустите его снова и создайте каждого пользователя командой: pct exec -- env THELOUNGE_HOME=/config s6-setuidgid abc thelounge add ", + "Native Borg is unavailable. Install the native borgbackup package on this host to use Borg backups.": "Нативный Borg недоступен. Установите пакет borgbackup на этом хосте, чтобы создавать резервные копии с помощью Borg.", + "Needed:": "Требуется:", + "Needs": "Требуется", + "Neither /etc/kernel/cmdline nor /etc/default/grub found.": "Не найден ни /etc/kernel/cmdline, ни /etc/default/grub.", + "Nesting feature enabled": "Функция вложенности включена", + "NetBIOS Service: RUNNING": "Служба NetBIOS: РАБОТАЕТ", + "NetBIOS Service: STOPPED": "Служба NetBIOS: ОСТАНОВЛЕНА", + "NetBIOS port 139:": "Порт 139 NetBIOS:", + "NetBox": "NetBox", + "Netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.": "Netbox — инструмент для управления IP-адресами (IPAM) и инфраструктурой центров обработки данных (DCIM). Идея NetBox изначально возникла у команды сетевых инженеров DigitalOcean; инструмент был разработан специально для нужд сетевых инженеров и инженеров по инфраструктуре. Он предназначен для использования в качестве единого достоверного источника данных о сетевой инфраструктуре при её эксплуатации.", + "Network": "Сеть", + "Network :": "Сеть :", + "Network & Firewall": "Сеть и межсетевой экран", + "Network (interfaces, DNS)": "Сеть (интерфейсы, DNS)", + "Network Bridge": "Сетевой мост", + "Network Commands": "Сетевые команды", + "Network Configuration": "Настройка сети", + "Network Configuration Analysis": "Анализ конфигурации сети", + "Network Configuration File": "Файл конфигурации сети", + "Network Diagnostics": "Диагностика сети", + "Network Error": "Ошибка сети", + "Network Interface Setup": "Настройка сетевого интерфейса", + "Network Interfaces": "Сетевые интерфейсы", + "Network Management": "Управление сетью", + "Network Management - SAFE MODE": "Управление сетью — БЕЗОПАСНЫЙ РЕЖИМ", + "Network Restart": "Перезапуск сети", + "Network Restart Failed": "Не удалось перезапустить сеть", + "Network Restarted": "Сеть перезапущена", + "Network Tools": "Сетевые инструменты", + "Network UPS Tools server for a UPS connected to the host by USB.": "Сервер Network UPS Tools для ИБП, подключённого к хосту через USB.", + "Network access:": "Сетевой доступ:", + "Network bridge": "Сетевой мост", + "Network configuration backed up": "Создана резервная копия конфигурации сети", + "Network configuration has been restored from backup.": "Конфигурация сети восстановлена из резервной копии.", + "Network connection failed to": "Не удалось установить сетевое соединение с", + "Network connectivity": "Сетевое подключение", + "Network connectivity to": "Сетевое подключение к", + "Network interfaces added:": "Добавленные сетевые интерфейсы:", + "Network monitoring tool (iptraf-ng)": "Инструмент мониторинга сети (iptraf-ng)", + "Network optimization completed": "Оптимизация сети завершена", + "Network optimizations removed": "Оптимизации сети удалены", + "Network service restarted successfully": "Сетевая служба успешно перезапущена", + "Network service restarted successfully.": "Сетевая служба успешно перезапущена.", + "Network share mounting (NFS/Samba) requires a PRIVILEGED container.": "Для подключения сетевых ресурсов (NFS/Samba) требуется ПРИВИЛЕГИРОВАННЫЙ контейнер.", + "Network sysctls prepared:": "Сетевые параметры sysctl подготовлены:", + "Network throughput test (client/server)": "Тест пропускной способности сети (клиент/сервер)", + "Network-wide Ad Blocking": "Блокировка рекламы во всей сети", + "Network-wide ad and tracker blocking": "Блокировка рекламы и трекеров во всей сети", + "NetworkManager Detected": "Обнаружен NetworkManager", + "NetworkManager has been removed successfully": "NetworkManager успешно удалён", + "NetworkManager is running (may cause conflicts)": "NetworkManager запущен (может вызывать конфликты)", + "NetworkManager is running, which may conflict with Proxmox.": "NetworkManager запущен, что может привести к конфликту с Proxmox.", + "NetworkManager not running": "NetworkManager не запущен", + "Networks the peers reach through the tunnel (0.0.0.0/0 = all traffic)": "Сети, доступные узлам через туннель (0.0.0.0/0 = весь трафик)", + "New Folder in /mnt": "Новая папка в /mnt", + "New Group": "Новая группа", + "New Search": "Новый поиск", + "New VM:": "Новая ВМ:", + "New Virtual Machine": "Новая виртуальная машина", + "New applications ({count})": "Новые приложения ({count})", + "New applications since your last visit: {count}": "Новые приложения с вашего последнего посещения: {count}", + "New backup job": "Новое задание резервного копирования", + "New backups on this host will be unencrypted until a new keyfile is set up.": "Новые резервные копии на этом хосте не будут зашифрованы, пока не будет настроен новый файл ключа.", + "New image compatible:": "Совместимость нового образа:", + "New image installed": "Новый образ установлен", + "New image installed, not verified yet": "Новый образ установлен, но ещё не проверен", + "New image verified, not saved yet": "Новый образ проверен, но ещё не сохранён", + "New kernel staged; rebuilding DKMS drivers:": "Новое ядро подготовлено; выполняется пересборка драйверов DKMS:", + "New mount options to apply:": "Новые параметры монтирования для применения:", + "New scheduled job (own timer + retention)": "Новое задание по расписанию (собственный таймер и политика хранения)", + "New value for": "Новое значение для", + "New version available": "Доступна новая версия", + "New version:": "Новая версия:", + "Next Step Required": "Требуется следующий шаг", + "Next Steps:": "Дальнейшие шаги:", + "Next step: stop that VM first, then run": "Следующий шаг: сначала остановите эту VM, затем запустите", + "Nextcloud Web UI": "Веб-интерфейс Nextcloud", + "Nextcloud configuration cancelled": "Настройка Nextcloud отменена", + "Nextcloud gives you access to all your files wherever you are.": "Nextcloud предоставляет доступ ко всем вашим файлам, где бы вы ни находились.", + "Nextcloud volume size in GB": "Размер тома Nextcloud в ГБ", + "Nextcloud with private PostgreSQL and Redis dependencies": "Nextcloud с отдельными экземплярами PostgreSQL и Redis в качестве зависимостей", + "Nginx is an HTTP web server, reverse proxy, content cache, load balancer, TCP/UDP proxy server, and mail proxy server.": "Nginx — это HTTP-сервер, обратный прокси-сервер, кеш содержимого, балансировщик нагрузки, прокси-сервер TCP/UDP и почтовый прокси-сервер.", + "Nginx webserver and reverse proxy with php support and a built-in Certbot (Let's Encrypt) client. It also contains fail2ban for intrusion prevention.": "Веб-сервер и обратный прокси-сервер Nginx с поддержкой php и встроенным клиентом Certbot (Let's Encrypt). Также включает fail2ban для предотвращения вторжений.", + "Ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd.": "Ngircd — свободный, переносимый и легковесный сервер Internet Relay Chat для небольших или частных сетей, разрабатываемый под лицензией GNU General Public License (GPL). Он прост в настройке, может работать с динамическими IP-адресами и поддерживает IPv6, соединения с защитой SSL, а также PAM для аутентификации. Он написан с нуля и не основан на оригинальном IRCd.", + "No": "Нет", + "No .ova or .ovf files found in:": "Файлы .ova или .ovf не найдены в:", + "No .ovf descriptor found inside OVA.": "Внутри OVA не найден дескриптор .ovf.", + "No .pxar archives were found in this backup:": "В этой резервной копии не найдены архивы .pxar:", + "No AMD CPU detected. Skipping AMD fixes.": "Процессор AMD не обнаружен. Исправления для AMD пропускаются.", + "No AMD GPU detected on this system.": "В этой системе не обнаружен графический процессор AMD.", + "No Available Exports": "Нет доступных экспортируемых ресурсов", + "No Available Shares": "Нет доступных общих ресурсов", + "No Backups": "Нет резервных копий", + "No CIFS Proxmox storage and no CIFS fstab mount found on this host.": "На этом узле не обнаружены ни хранилища CIFS Proxmox, ни точки монтирования CIFS в fstab.", + "No CIFS Proxmox storage configured.": "Хранилище CIFS Proxmox не настроено.", + "No CIFS Proxmox storages configured.": "Хранилища CIFS Proxmox не настроены.", + "No CIFS mounts active.": "Нет активных подключений CIFS.", + "No CT was selected.": "Контейнер CT не выбран.", + "No CTs available in the system.": "В системе нет доступных контейнеров CT.", + "No Changes Needed": "Изменения не требуются", + "No Cleanup Needed": "Очистка не требуется", + "No Compose file was given": "Файл Compose не указан", + "No Compose files were found in the CasaOS catalogue": "В каталоге CasaOS не найдены файлы Compose", + "No Controller/NVMe selected for now.": "Контроллер/NVMe пока не выбран.", + "No Coral Detected": "Coral не обнаружен", + "No Coral TPU device was found on this host (neither PCIe/M.2 nor USB).": "На этом узле не найдено устройство Coral TPU (ни PCIe/M.2, ни USB).", + "No Custom Logos Found": "Пользовательские логотипы не найдены", + "No Disk Images Found": "Образы дисков не найдены", + "No Disk Storage": "Нет дискового хранилища", + "No Disks Available": "Нет доступных дисков", + "No Disks Found": "Диски не найдены", + "No Exports": "Нет экспортируемых ресурсов", + "No Exports Found": "Экспортируемые ресурсы не найдены", + "No Folders": "Нет папок", + "No GPU (CPU)": "Без GPU (CPU)", + "No GPU Detected": "GPU не обнаружен", + "No GPU selected.": "GPU не выбран.", + "No GPU selected. Please select at least one GPU to continue.": "GPU не выбран. Выберите хотя бы один GPU, чтобы продолжить.", + "No GPUs detected on this host.": "На этом узле GPU не обнаружены.", + "No Guest Shares": "Нет общих ресурсов с гостевым доступом", + "No IP": "Нет IP-адреса", + "No IP assigned": "IP-адрес не назначен", + "No IPv4 address was detected after 30 seconds.": "За 30 секунд IPv4-адрес не обнаружен.", + "No ISO file detected after UUP Dump process.": "После завершения процесса UUP Dump файл ISO не обнаружен.", + "No ISO images found in Proxmox ISO storages.": "В хранилищах ISO Proxmox образы ISO не найдены.", + "No ISO selected.": "Образ ISO не выбран.", + "No ISO was generated.": "Образ ISO не был создан.", + "No Images Found": "Образы не найдены", + "No Intel GPU detected on this system.": "В этой системе GPU Intel не обнаружен.", + "No LAN address was obtained": "Адрес в локальной сети не получен", + "No LAN address was obtained for the service:": "Не получен адрес в локальной сети для службы:", + "No LXC containers available": "Нет доступных контейнеров LXC", + "No LXC containers found": "Контейнеры LXC не найдены", + "No LXC containers found on this system.": "В этой системе контейнеры LXC не найдены.", + "No MAC": "Нет MAC-адреса", + "No Method Selected": "Метод не выбран", + "No Mounts": "Нет точек монтирования", + "No NFS Proxmox storage and no NFS fstab mount found on this host.": "На этом узле не найдены ни хранилище NFS в Proxmox, ни точка монтирования NFS в fstab.", + "No NFS Proxmox storage configured.": "Хранилище NFS в Proxmox не настроено.", + "No NFS Proxmox storages configured.": "Хранилища NFS в Proxmox не настроены.", + "No NFS mounts active.": "Нет активных подключений NFS.", + "No NFS mounts found.": "Подключения NFS не найдены.", + "No NFS ports found": "Порты NFS не найдены", + "No NFS servers configured to test.": "Нет настроенных серверов NFS для проверки.", + "No NFS servers found on the network.": "Серверы NFS в сети не найдены.", + "No NFS shares currently mounted.": "Сейчас нет смонтированных общих ресурсов NFS.", + "No NVIDIA GPU detected on this system.": "В этой системе не обнаружен графический процессор NVIDIA.", + "No NVIDIA GPU has been detected on this system. The installer will now exit.": "В этой системе не обнаружен графический процессор NVIDIA. Программа установки завершит работу.", + "No NVIDIA GPU is available": "Нет доступного графического процессора NVIDIA", + "No NVIDIA driver installed.": "Драйвер NVIDIA не установлен.", + "No OCI instances are registered.": "Экземпляры OCI не зарегистрированы.", + "No PBS keyfile is installed on this host and no automatic recovery was possible.": "На этом узле не установлен файл ключа PBS, и автоматическое восстановление оказалось невозможным.", + "No PVE vzdump job uses a": "Ни одно задание vzdump PVE не использует", + "No PVs with old headers found.": "Физические тома (PV) со старыми заголовками не найдены.", + "No ProxMenux ZFS autotrim state file found.": "Файл состояния autotrim для ZFS в ProxMenux не найден.", + "No ProxMenux host-backup archives were found in:": "Архивы резервных копий узла, созданные ProxMenux, не найдены в:", + "No ProxMenux-installed utility package list is available": "Список пакетов утилит, установленных ProxMenux, недоступен", + "No ProxMenux-managed .link files found — nothing to remove.": "Файлы .link, управляемые ProxMenux, не найдены — удалять нечего.", + "No Recent Servers": "Нет недавних серверов", + "No Samba mounts found.": "Подключения Samba не найдены.", + "No Samba ports found": "Порты Samba не найдены", + "No Samba servers configured to test.": "Нет настроенных серверов Samba для проверки.", + "No Samba servers found on the network.": "Серверы Samba в сети не найдены.", + "No Samba shares currently mounted.": "Сейчас нет смонтированных общих ресурсов Samba.", + "No Samba users found": "Пользователи Samba не найдены", + "No Selection": "Ничего не выбрано", + "No Servers Found": "Серверы не найдены", + "No Shares": "Нет общих ресурсов", + "No Shares Available": "Нет доступных общих ресурсов", + "No Shares Found": "Общие ресурсы не найдены", + "No Shares to Test": "Нет общих ресурсов для проверки", + "No Storage Found": "Хранилища не найдены", + "No UPS was found on a USB port of this host. Connect it and start the installation again.": "ИБП не найден на USB-порту этого хоста. Подключите его и запустите установку снова.", + "No USB drives detected. Enter the mountpoint path manually:": "USB-накопители не обнаружены. Введите путь к точке монтирования вручную:", + "No USB drives mounted by ProxMenux yet. Mount one first to use it as a target.": "Пока нет USB-накопителей, смонтированных с помощью ProxMenux. Сначала смонтируйте накопитель, чтобы использовать его как целевой.", + "No UUP folder found.": "Папка UUP не найдена.", + "No VM was selected.": "Виртуальная машина не выбрана.", + "No VMID defined. Cannot apply guest agent config.": "VMID не задан. Невозможно применить настройки гостевого агента.", + "No VMs Found": "Виртуальные машины не найдены", + "No VMs available in the system.": "В системе нет доступных виртуальных машин.", + "No VMs available on this host.": "На этом хосте нет доступных виртуальных машин.", + "No VMs found": "Виртуальные машины не найдены", + "No VMs or CTs found on this cluster.": "В этом кластере не найдены виртуальные машины или контейнеры.", + "No Valid Servers": "Нет подходящих серверов", + "No VirtIO ISO found. Please download one.": "ISO-образ VirtIO не найден. Загрузите его.", + "No VirtIO ISO selected. Please choose again.": "ISO-образ VirtIO не выбран. Повторите выбор.", + "No Virtual Machines found on this system.": "В этой системе виртуальные машины не найдены.", + "No ZFS pools detected. Skipping ZFS ARC optimization.": "Пулы ZFS не обнаружены. Оптимизация ARC для ZFS пропускается.", + "No ZFS pools detected. Skipping ZFS autotrim.": "Пулы ZFS не обнаружены. Настройка autotrim для ZFS пропускается.", + "No acceleration (CPU)": "Без ускорения (CPU)", + "No accessible": "Нет доступных", + "No accessible NFS servers found.": "Доступные серверы NFS не найдены.", + "No accessible Samba servers found.": "Доступные серверы Samba не найдены.", + "No accessible exports found.": "Доступные экспортируемые ресурсы не найдены.", + "No accessible shares found.": "Доступные общие ресурсы не найдены.", + "No active Debian base repository for this suite; configure it in the Proxmox repository UI before continuing.": "Для этого выпуска нет активного базового репозитория Debian; прежде чем продолжить, настройте его в интерфейсе управления репозиториями Proxmox.", + "No active Proxmox storage accepts OCI template archives.": "Ни одно активное хранилище Proxmox не поддерживает размещение архивов шаблонов OCI.", + "No active exports or showmount not available": "Нет активных экспортируемых ресурсов или команда showmount недоступна", + "No active session": "Нет активного сеанса", + "No active subscription and no usable PBS repository. Noninteractive mode cannot change APT sources; configure them in Administration > Repositories.": "Нет активной подписки и пригодного для использования репозитория PBS. В неинтерактивном режиме невозможно изменить источники APT; настройте их в разделе «Администрирование > Репозитории».", + "No active subscription and no usable PVE repository. Noninteractive mode cannot change APT sources; configure them in Node > Updates > Repositories.": "Нет активной подписки и пригодного для использования репозитория PVE. В неинтерактивном режиме невозможно изменить источники APT; настройте их в разделе «Узел > Обновления > Репозитории».", + "No additional GPU can be added.": "Нельзя добавить ещё один GPU.", + "No additional device needs to be added.": "Добавлять ещё одно устройство не требуется.", + "No applications match": "Нет подходящих приложений", + "No archives": "Нет архивов", + "No archives found in this Borg repository.": "В этом репозитории Borg архивы не найдены.", + "No available Controllers/NVMe devices were found.": "Доступные контроллеры или устройства NVMe не найдены.", + "No available disks found.": "Доступные диски не найдены.", + "No backup found, logrotate configuration not changed": "Резервная копия не найдена, конфигурация logrotate не изменена", + "No backup is scheduled: the rsnapshot lines in /config/crontabs/root are commented out. Uncomment or adjust the intervals you want, then restart the container.": "Резервное копирование не запланировано: строки rsnapshot в /config/crontabs/root закомментированы. Раскомментируйте строки с нужными интервалами или измените интервалы, затем перезапустите контейнер.", + "No backups": "Нет резервных копий", + "No backups found": "Резервные копии не найдены", + "No bridge configuration issues found": "Проблем с конфигурацией сетевых мостов не обнаружено", + "No bridges found in system": "В системе не найдены сетевые мосты", + "No changes are required for": "Изменения не требуются для", + "No changes are required.": "Изменения не требуются.", + "No changes have been made to your system": "В вашу систему не внесено никаких изменений", + "No changes were needed in vfio.conf.": "Изменения в vfio.conf не потребовались.", + "No changes will be made to the running system.": "В работающую систему не будет внесено никаких изменений.", + "No compatible GPU detected for VM passthrough. Skipping GPU wizard option.": "Совместимый GPU для проброса в виртуальную машину не обнаружен. Пункт мастера настройки GPU будет пропущен.", + "No compatible GPU was detected on this host.": "На этом узле не обнаружен совместимый GPU.", + "No compatible GPUs detected on this host.": "На этом узле не обнаружены совместимые GPU.", + "No compatible GPUs were detected on this host.": "На этом узле не обнаружены совместимые GPU.", + "No compatible PVE jobs": "Нет совместимых заданий PVE", + "No compatible disk images found in:": "Совместимые образы дисков не найдены в:", + "No compatible images found in %s\n\nSupported formats: .img, .iso, .qcow2, .vmdk\n\nPlease add some images and try again.": "В %s не найдены совместимые образы\n\nПоддерживаемые форматы: .img, .iso, .qcow2, .vmdk\n\nДобавьте образы и повторите попытку.", + "No configuration issues found": "Проблем с конфигурацией не обнаружено", + "No container of the stack was modified.": "Ни один контейнер стека не был изменён.", + "No container runtime available.": "Среда выполнения контейнеров недоступна.", + "No container selected. Exiting.": "Контейнер не выбран. Завершение работы.", + "No controller/NVMe selected.": "Контроллер/NVMe не выбран.", + "No controllers remaining after conflict resolution.": "После разрешения конфликтов контроллеров не осталось.", + "No custom image selected": "Пользовательский образ не выбран", + "No custom key (rely on default SSH config)": "Без пользовательского ключа (использовать конфигурацию SSH по умолчанию)", + "No custom logos were found in /usr/local/share/fastfetch/logos/.\n\nPlease add a logo and try again.": "В /usr/local/share/fastfetch/logos/. не найдено пользовательских логотипов.\n\nДобавьте логотип и повторите попытку.", + "No desktop UI backup found, will reinstall packages": "Резервная копия интерфейса рабочего стола не найдена, пакеты будут переустановлены", + "No detector device (CPU)": "Нет устройства обнаружения (CPU)", + "No directories found in": "Каталоги не найдены в", + "No disk images found in /var/lib/vz/images/. Please add an image first.": "В /var/lib/vz/images/. не найдены образы дисков. Сначала добавьте образ.", + "No disk shares were selected from the guest listing.": "В списке гостевой системы не выбрано ни одного общего дискового ресурса.", + "No disks available for this CT.": "Для этого CT нет доступных дисков.", + "No disks available for this VM.": "Для этой VM нет доступных дисков.", + "No disks were added.": "Диски не добавлены.", + "No disks were configured for processing.": "Диски для обработки не настроены.", + "No disks were selected.": "Диски не выбраны.", + "No disks/controllers configured.": "Диски и контроллеры не настроены.", + "No docker run command was given": "Команда docker run не указана", + "No duplicate IP addresses": "Повторяющихся IP-адресов нет", + "No duplicate repositories found": "Дублирующиеся репозитории не найдены", + "No eligible Controller/NVMe devices remain after SR-IOV filtering. Skipping.": "После фильтрации по SR-IOV не осталось подходящих контроллеров или устройств NVMe. Операция пропускается.", + "No eligible USB devices found. Hubs, mass storage and network adapters are excluded.": "Подходящие USB-устройства не найдены. Концентраторы, накопители и сетевые адаптеры исключены.", + "No eligible controllers remain after SR-IOV filtering.": "После фильтрации по SR-IOV не осталось подходящих контроллеров.", + "No encryption key is stored on this host. Choose how to set one up:": "На этом узле не сохранён ключ шифрования. Выберите способ его настройки:", + "No exportable VM disks were found (CD-ROM/cloud-init are excluded).": "Диски VM, доступные для экспорта, не найдены (CD-ROM/cloud-init исключены).", + "No exportable disks": "Нет дисков, доступных для экспорта", + "No exports configured.": "Экспортируемые ресурсы не настроены.", + "No exports file found.": "Файл экспортируемых ресурсов не найден.", + "No exports found in /etc/exports.": "Экспортируемые ресурсы не найдены в /etc/exports.", + "No exports found on server": "На сервере не найдены экспортируемые ресурсы", + "No files found": "Файлы не найдены", + "No folders found in /mnt.": "Папки не найдены в /mnt.", + "No folders found in /mnt. Please create a new folder.": "Папки не найдены в /mnt. Создайте новую папку.", + "No folders found inside /mnt in the CT.": "В CT внутри /mnt не найдены папки.", + "No format-safe disks are available.": "Нет дисков, которые можно безопасно отформатировать.", + "No free ProxMenux private /24 network is available": "Нет свободной частной сети ProxMenux с маской /24", + "No gasket DKMS registrations remain.": "Регистраций gasket в DKMS больше не осталось.", + "No group creation required — uses world-writable sticky bit permissions.": "Создание группы не требуется — используется доступ на запись для всех с установленным sticky bit.", + "No guest selected.": "Гостевая система не выбрана.", + "No host VFIO reconfiguration expected": "Изменение конфигурации VFIO на хосте не ожидается", + "No host VFIO/native binding changes were required.": "Изменять привязку устройств к VFIO или штатным драйверам на хосте не потребовалось.", + "No host backups were found in this PBS repository:": "В этом репозитории PBS не найдено резервных копий хоста:", + "No host directories found in the available container configs or saved records.": "В доступных конфигурациях контейнеров и сохранённых записях не найдено каталогов хоста.", + "No host directory is used by this application.": "Это приложение не использует каталоги хоста.", + "No host reboot expected": "Перезагрузка хоста не ожидается", + "No host write access — server-side ACL or root_squash. Continuing anyway.": "У хоста нет доступа на запись — на стороне сервера действует ACL или root_squash. Продолжаем, несмотря на это.", + "No host write access — server-side ACL. Continuing anyway.": "У хоста нет доступа на запись — на стороне сервера действует ACL. Продолжаем, несмотря на это.", + "No iSCSI Storage": "Нет хранилища iSCSI", + "No iSCSI storage configured in Proxmox.": "В Proxmox не настроено хранилище iSCSI.", + "No iSCSI storage configured.": "Хранилище iSCSI не настроено.", + "No iSCSI storage found in Proxmox.": "В Proxmox не найдено хранилище iSCSI.", + "No iSCSI targets found on portal": "На портале не найдены цели iSCSI", + "No image was given": "Образ не указан", + "No import disks selected for now.": "Диски для импорта пока не выбраны.", + "No importable disks available. System disks and protected disks are hidden.": "Нет дисков, доступных для импорта. Системные и защищённые диски скрыты.", + "No installation information available.": "Информация об установке недоступна.", + "No interface type was selected for the disks.": "Тип интерфейса для дисков не выбран.", + "No jobs": "Нет заданий", + "No language selected.": "Язык не выбран.", + "No local disk storage configured.": "Локальное дисковое хранилище не настроено.", + "No main sources.list present (skipped)": "Основной файл sources.list отсутствует (пропущено)", + "No matches for:": "Нет совпадений для:", + "No matching PVE vzdump jobs were found for the PBS backend.": "Для бэкенда PBS не найдено подходящих заданий vzdump в PVE.", + "No matching PVE vzdump jobs were found for the local archive backend.": "Для бэкенда локальных архивов не найдено подходящих заданий vzdump в PVE.", + "No mount point was specified.": "Точка монтирования не указана.", + "No mount points found in any container": "Ни в одном контейнере не найдено точек монтирования", + "No mount points found in container": "В контейнере не найдено точек монтирования", + "No name was given": "Имя не указано", + "No network configuration backups found.": "Резервные копии сетевой конфигурации не найдены.", + "No network interfaces configured (besides loopback)": "Сетевые интерфейсы не настроены (кроме loopback)", + "No new Controller/NVMe entries were added.": "Новые записи контроллеров/NVMe не добавлены.", + "No oci-compose was given": "oci-compose не указан", + "No online node has a guest of this job.": "Ни на одном доступном узле нет гостевой системы, включённой в это задание.", + "No optimizations detected to uninstall.": "Оптимизации для удаления не обнаружены.", + "No other storage of this host that accepts backups has that much free space. Free space and try again; the application was not modified.": "Ни в одном другом хранилище этого хоста, поддерживающем резервные копии, нет столько свободного места. Освободите место и повторите попытку; приложение не было изменено.", + "No partitions found on disk. Nothing was wiped.": "На диске не найдено разделов. Ничего не было стёрто.", + "No password provided.": "Пароль не указан.", + "No paths available": "Нет доступных путей", + "No paths selected. Select at least one path.": "Пути не выбраны. Выберите хотя бы один путь.", + "No pending changes": "Нет ожидающих применения изменений", + "No pending paths to schedule for reboot.": "Нет путей, обработку которых нужно запланировать на перезагрузку.", + "No permanent NFS mounts configured.": "Постоянные подключения NFS не настроены.", + "No permanent Samba mounts configured.": "Постоянные подключения Samba не настроены.", + "No persistent path found for": "Постоянный путь не найден для", + "No physical disks detected for SMART testing.": "Физические диски для тестирования SMART не обнаружены.", + "No physical interfaces found": "Физические интерфейсы не найдены", + "No ports configured": "Порты не настроены", + "No privileged containers available in Proxmox.": "В Proxmox нет доступных привилегированных контейнеров.", + "No pve-enterprise.list present (skipped)": "pve-enterprise.list отсутствует (пропущено)", + "No reboot was started. Review the log before retrying:": "Перезагрузка не была запущена. Перед повторной попыткой просмотрите журнал:", + "No recent": "Нет недавних", + "No recent Samba servers found.": "Недавние серверы Samba не найдены.", + "No registered OCI containers are available for selection on this host.": "На этом узле нет зарегистрированных контейнеров OCI, доступных для выбора.", + "No registry API was found at {registry}. Check the hostname and port.": "API реестра не найден по адресу {registry}. Проверьте имя хоста и порт.", + "No restored OCI application is waiting to be recovered.": "Нет приложений OCI, восстановленных из резервной копии и ожидающих восстановления работоспособности.", + "No results": "Нет результатов", + "No routing information found.": "Информация о маршрутизации не найдена.", + "No scheduled backup jobs configured.": "Задания резервного копирования по расписанию не настроены.", + "No scheduled backup jobs found.": "Задания резервного копирования по расписанию не найдены.", + "No scripts found for:": "Не найдены скрипты для:", + "No security relaxation is required for the reviewed profile.": "Для проверенного профиля ослабление мер безопасности не требуется.", + "No selectable USB device was found. Type the host node by hand.": "USB-устройство, доступное для выбора, не найдено. Укажите узел хоста вручную.", + "No self-test history found for": "Не найдена история самотестирования для", + "No self-test log available for": "Журнал самотестирования недоступен для", + "No server IP or hostname provided.": "IP-адрес или имя хоста сервера не указаны.", + "No share access test succeeded with guest authentication.": "Ни одна проверка доступа к общему ресурсу с гостевой аутентификацией не завершилась успешно.", + "No shared devices are available on this server.": "На этом сервере нет доступных общих устройств.", + "No shared media content.": "Нет медиаконтента в общем доступе.", + "No shared mount detected. Applying standard local access.": "Общая точка монтирования не обнаружена. Применяются стандартные настройки локального доступа.", + "No shares configured.": "Общие ресурсы не настроены.", + "No shares found in smb.conf.": "В smb.conf не найдены общие ресурсы.", + "No shares found on server": "На сервере не найдены общие ресурсы", + "No smb.conf file found.": "Файл smb.conf не найден.", + "No specific LXC action selected": "Конкретное действие для LXC не выбрано", + "No specific VM action selected": "Конкретное действие для ВМ не выбрано", + "No storage": "Нет хранилища", + "No storage volumes available for VM images.": "Нет доступных томов хранения для образов ВМ.", + "No storage volumes available for disk images.": "Нет доступных томов хранения для образов дисков.", + "No storage with 'backup' content enabled was found.\n\nAdd one from Datacenter > Storage first (PBS, or a directory/NFS with the Backup content type).": "Не найдено хранилище с включённым типом содержимого «Резервная копия».\n\nСначала добавьте его в разделе «Датацентр > Хранилище» (PBS или каталог/NFS с типом содержимого «Резервная копия»).", + "No stored credentials found.": "Сохранённые учётные данные не найдены.", + "No suitable disks found.": "Подходящие диски не найдены.", + "No supported NVIDIA versions found for this GPU": "Поддерживаемые версии NVIDIA для этого графического процессора не найдены", + "No sysfs ROM entry — trying ACPI VFCT table...": "Запись ROM в sysfs отсутствует — пробуем использовать таблицу ACPI VFCT...", + "No target configured.": "Цель не настроена.", + "No template is available for '{app_id}'": "Для «{app_id}» нет доступного шаблона", + "No test currently running": "Сейчас ни один тест не выполняется", + "No unambiguous loader download found in release metadata.": "Не удалось однозначно определить файл загрузчика для скачивания по метаданным выпуска.", + "No uninstaller found for:": "Не найдена программа удаления для:", + "No unprivileged containers available in Proxmox.": "В Proxmox нет доступных непривилегированных контейнеров.", + "No updates available — run a scan first or wait for the Monitor to refresh.": "Нет доступных обновлений — сначала запустите сканирование или дождитесь обновления данных Monitor.", + "No updates or failed to fetch templates": "Нет обновлений или не удалось получить шаблоны", + "No usable GPU was found on this host. Immich will be installed on the CPU.": "На этом хосте не найден подходящий графический процессор. Immich будет установлен для работы на центральном процессоре.", + "No usable GPU was found on this host. Recognition stays on the CPU.": "На этом узле не найден подходящий GPU. Распознавание продолжит выполняться на CPU.", + "No usable GPU was found on this host. The application will be installed without hardware acceleration.": "На этом узле не найден подходящий GPU. Приложение будет установлено без аппаратного ускорения.", + "No user groups found.": "Группы пользователей не найдены.", + "No user-created disk storage or fstab mount found.": "Не найдено ни созданного пользователем дискового хранилища, ни точки монтирования в fstab.", + "No username provided.": "Имя пользователя не указано.", + "No utilities selected": "Утилиты не выбраны", + "No utilities were selected": "Ни одна утилита не была выбрана", + "No valid containers found": "Не найдено подходящих контейнеров", + "No valid mount points found": "Не найдено допустимых точек монтирования", + "No version in this branch is currently supported by keylase/nvidia-patch — the NVENC patch will not reapply after reinstall.": "В настоящее время ни одна версия в этой ветке не поддерживается keylase/nvidia-patch — патч NVENC не будет применён повторно после переустановки.", + "No virtual machines were found on this host.": "На этом узле не найдено виртуальных машин.", + "No working NVIDIA GPU was found": "Работающий GPU NVIDIA не найден", + "No write permissions on:": "Нет прав на запись в:", + "No, keep local only": "Нет, оставить только локально", + "No-subscription repository present": "Репозиторий без подписки присутствует", + "No: the key stays only at": "Нет: ключ остаётся только в", + "Node octal permissions (e.g. 0660)": "Восьмеричные права узла (например, 0660)", + "Non-Debian container detected": "Обнаружен контейнер не на базе Debian", + "Non-free firmware warnings disabled": "Предупреждения о несвободных прошивках отключены", + "None": "Нет", + "Normalizing stable monitor service...": "Приведение службы стабильной версии монитора к стандартной конфигурации...", + "Nostr relay.": "Ретранслятор Nostr.", + "Not Mounted": "Не смонтировано", + "Not a JSON object:": "Не является объектом JSON:", + "Not all platforms support Controller/NVMe passthrough reliably.": "Не все платформы обеспечивают надёжный проброс контроллера/NVMe.", + "Not all shared directories were verified": "Не все общие каталоги были проверены", + "Not an OVH server, skipping RTM installation": "Это не сервер OVH, установка RTM пропускается", + "Not applicable": "Неприменимо", + "Not currently mounted": "Сейчас не смонтировано", + "Not currently mounted — skipping umount.": "Сейчас не смонтировано — umount пропускается.", + "Not declared": "Не объявлено", + "Not enough free space on {storage}. Free some space or select another storage.": "Недостаточно свободного места в хранилище {storage}. Освободите место или выберите другое хранилище.", + "Not found": "Не найдено", + "Not found in the OCI archive:": "Не найдено в архиве OCI:", + "Not imported:": "Не импортировано:", + "Not mounted": "Не смонтировано", + "Not portable:": "Не поддерживает перенос:", + "Not registered as Proxmox storage — use 'LXC Mount Manager' to bind-mount": "Не зарегистрировано как хранилище Proxmox — используйте «LXC Mount Manager» для bind-монтирования", + "Not required": "Не требуется", + "Not required (access code only)": "Не требуется (только код доступа)", + "Not required (password only)": "Не требуется (только пароль)", + "Not required (token only)": "Не требуется (только токен)", + "Not yet verified by ProxMenux (beta)": "Ещё не проверено ProxMenux (бета)", + "Notara": "Notara", + "Note-taking with tags, workspaces, attachments and a REST API.": "Ведение заметок с тегами, рабочими пространствами, вложениями и REST API.", + "Note: A system reboot will be required after enabling IOMMU.": "Примечание: после включения IOMMU потребуется перезагрузка системы.", + "Note: this only works if the NFS server does NOT use 'all_squash' for root.": "Примечание: это работает только в том случае, если сервер NFS НЕ использует 'all_squash' для root.", + "NoteTrace": "NoteTrace", + "Notes": "Заметки", + "Notes Template": "Шаблон заметок", + "Notes template": "Шаблон примечаний", + "Notes template shown next to each backup (optional).": "Шаблон примечаний, отображаемых рядом с каждой резервной копией (необязательно).", + "Nothing has been changed and the current driver is untouched. It will not be offered again while this kernel is running.": "Ничего не изменено, текущий драйвер остался нетронутым. Пока работает это ядро, предложение больше не появится.", + "Nothing inside the container is modified": "Внутри контейнера ничего не изменяется", + "Nothing selectable": "Нет доступных для выбора элементов", + "Nothing selected": "Ничего не выбрано", + "Nothing to Clean": "Нечего очищать", + "Nothing to apply — none of the selected updates have a runnable function on disk.": "Нечего применять — ни для одного из выбранных обновлений на диске нет функции, которую можно выполнить.", + "Nothing to remove": "Нечего удалять", + "Nothing to restore": "Нечего восстанавливать", + "Nothing to schedule for reboot from selected paths.": "По выбранным путям нет элементов для планирования обработки при перезагрузке.", + "Nothing was changed.": "Ничего не изменено.", + "Nouveau module is loaded, attempting to unload...": "Модуль Nouveau загружен, выполняется попытка выгрузки...", + "Number of CPU cores (default: 2)": "Количество ядер CPU (по умолчанию: 2)", + "NutriTrace": "NutriTrace", + "Nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.": "Nzbget — загрузчик для Usenet, написанный на C++ и разработанный с упором на производительность, чтобы обеспечивать максимальную скорость загрузки при минимальном использовании системных ресурсов.", + "Nzbhydra2 is a meta search application for NZB indexers, the spiritual successor to NZBmegasearcH, and an evolution of the original application NZBHydra.": "Nzbhydra2 — приложение для метапоиска по индексаторам NZB, идейный преемник NZBmegasearcH и дальнейшее развитие исходного приложения NZBHydra.", + "OCI application": "Приложение OCI", + "OCI container, configuration kept. Remove its GPU from OCI manager Apps: CT": "Контейнер OCI, конфигурация сохранена. Удалите назначенный ему GPU из OCI manager Apps: CT", + "OCI containers keep their configuration: they are stopped and their Start on boot is disabled. Their GPU is removed from OCI manager Apps.": "Конфигурация контейнеров OCI сохраняется: контейнеры останавливаются, а их автоматический запуск при загрузке отключается. Назначенные им GPU удаляются из OCI manager Apps.", + "OCI containers require Proxmox VE 9.1 or later.": "Для контейнеров OCI требуется Proxmox VE версии 9.1 или новее.", + "OCI management": "Управление OCI", + "OCI management could not be completed. Check the backend status; no additional cleanup has been authorized.": "Не удалось завершить управление OCI. Проверьте состояние серверной части; дополнительная очистка не была разрешена.", + "OCI manager Apps (Technology Preview)": "OCI manager Apps (предварительная версия технологии)", + "OCI manager Apps is a Technology Preview: if something does not work as expected, please report it on GitHub with the application name.": "OCI manager Apps находится на стадии предварительного ознакомления с технологией: если что-то работает не так, как ожидалось, сообщите об этом на GitHub, указав название приложения.", + "OCI metadata integrity mismatch": "Нарушение целостности метаданных OCI", + "OCI metadata too large": "Слишком большой размер метаданных OCI", + "OCI stack management": "Управление стеками OCI", + "OCI verification failed:": "Проверка OCI не пройдена:", + "OCR language (Tesseract code)": "Язык распознавания текста (код Tesseract)", + "OK": "OK", + "ONLYOFFICE provides a full range of tools to create, edit and collaborate on text documents, spreadsheets, presentations, PDF forms and regular PDF files on web, desktop and mobile platforms.": "ONLYOFFICE предоставляет полный набор инструментов для создания, редактирования и совместной работы с текстовыми документами, электронными таблицами, презентациями, PDF-формами и обычными PDF-файлами на веб-платформах, настольных компьютерах и мобильных устройствах.", + "OR add new PVE 9 no-subscription repository:": "ИЛИ добавьте новый репозиторий PVE 9 без подписки:", + "OS hint:": "Подсказка об ОС:", + "OS release details": "Сведения о выпуске ОС", + "OS type :": "Тип ОС :", + "OS type:": "Тип ОС:", + "OS:": "OS:", + "OVA (single portable file)": "OVA (один переносимый файл)", + "OVF (descriptor + VMDK files)": "OVF (дескриптор + файлы VMDK)", + "OVF parsed:": "OVF разобран:", + "OVH RTM installed successfully": "OVH RTM успешно установлен", + "OVH RTM removed (Puppet artefacts may need manual cleanup)": "OVH RTM удалён (может потребоваться ручное удаление оставшихся компонентов Puppet)", + "OVH server detected": "Обнаружен сервер OVH", + "OVH server detection and RTM installation process completed": "Процесс обнаружения сервера OVH и установки RTM завершён", + "OWASP Juice Shop": "OWASP Juice Shop", + "OWASP WebGoat": "OWASP WebGoat", + "Object detector": "Детектор объектов", + "Object detector for Frigate": "Детектор объектов для Frigate", + "Observer is not responding on port 4357": "Observer не отвечает на порту 4357", + "Obsidian is a note-taking app that lets you create, link, and organize your notes on your device, with hundreds of plugins and themes to customize your workflow. You can also publish your notes online, access them offline, and sync them securely with end-to-end encryption.": "Obsidian — приложение для заметок, которое позволяет создавать, связывать и упорядочивать заметки на вашем устройстве, а сотни плагинов и тем помогают настроить рабочий процесс под ваши потребности. Вы также можете публиковать заметки в интернете, работать с ними без подключения к сети и безопасно синхронизировать их со сквозным шифрованием.", + "OctoPrint": "OctoPrint", + "Offer as exit node?": "Предлагать как выходной узел?", + "Official Duplicati image: encrypted, incremental backups to local, network and cloud storage.": "Официальный образ Duplicati: зашифрованные инкрементальные резервные копии в локальных, сетевых и облачных хранилищах.", + "Official Emby Media Server image with optional VA-API or NVIDIA acceleration.": "Официальный образ Emby Media Server с возможностью использования ускорения VA-API или NVIDIA.", + "Official Jellyfin image with optional VA-API or NVIDIA acceleration.": "Официальный образ Jellyfin с возможностью использования ускорения VA-API или NVIDIA.", + "Official Linux Distributions": "Официальные дистрибутивы Linux", + "Official Plex Media Server image with optional hardware transcoding.": "Официальный образ Plex Media Server с возможностью аппаратного транскодирования.", + "Official image": "Официальный образ", + "Old debian.sources file removed to prevent duplication": "Старый файл debian.sources удалён во избежание дублирования", + "Old memory configuration detected. Replacing with balanced optimization...": "Обнаружена старая конфигурация памяти. Применяется сбалансированная оптимизация...", + "Old time services removed successfully": "Старые службы синхронизации времени успешно удалены", + "Ollama API (no Web UI)": "Ollama API (без веб-интерфейса)", + "Ollama runs large language models locally through a command-line interface and an HTTP API. The Ollama server does not include an interactive Web UI; pair it with a frontend such as Open WebUI if you want browser-based chat.\n\nIt supports many models, including Llama, Mistral, Gemma, and Qwen, and provides an API for applications and integrations. Local models run on your own hardware; cloud models require an internet connection.\n\n**Key Features:**\n- **Local model execution**: Run supported models on your own hardware\n- **Model management**: Pull, run, and manage models with the CLI or API\n- **API integration**: Connect other applications to the Ollama server\n- **Privacy options**: Keep inference local when using local models\n\n**Learn More:**\n- [Ollama Official Website](https://ollama.com/)\n- [Ollama GitHub Repository](https://github.com/ollama/ollama)\n- [Model Library](https://ollama.com/library)": "Ollama запускает большие языковые модели локально через интерфейс командной строки и HTTP API. Сервер Ollama не включает интерактивный веб-интерфейс; для чата в браузере используйте его вместе с интерфейсным приложением, например Open WebUI.\n\nОн поддерживает множество моделей, включая Llama, Mistral, Gemma и Qwen, и предоставляет API для приложений и интеграций. Локальные модели работают на вашем оборудовании; для облачных моделей требуется подключение к интернету.\n\n**Основные возможности:**\n- **Локальный запуск моделей**: запуск поддерживаемых моделей на вашем оборудовании\n- **Управление моделями**: загрузка, запуск моделей и управление ими через CLI или API\n- **Интеграция через API**: подключение других приложений к серверу Ollama\n- **Возможности защиты конфиденциальности**: локальное выполнение вычислений при использовании локальных моделей\n\n**Подробнее:**\n- [Официальный сайт Ollama](https://ollama.com/)\n- [Репозиторий Ollama на GitHub](https://github.com/ollama/ollama)\n- [Библиотека моделей](https://ollama.com/library)", + "Ombi allows you to host your own Plex Request and user management system.": "Ombi позволяет разместить собственную систему запросов контента для Plex и управления пользователями.", + "On a privileged CT the mount options carry the only permissions.": "В привилегированном контейнере права доступа определяются исключительно параметрами монтирования.", + "On some systems, when starting the VM the host may slow down for several minutes until it stabilizes, or freeze completely.": "На некоторых системах при запуске виртуальной машины хост может замедлиться на несколько минут, пока его работа не стабилизируется, или полностью зависнуть.", + "On the Borg server, append the following line to:": "На сервере Borg добавьте следующую строку в конец файла:", + "On the host": "На хосте", + "Once finished, re-run 'PVE 8 to 9 check' to verify that all issues are resolved \n before executing the PVE 8 → PVE 9 upgrade.": "После завершения снова запустите 'PVE 8 to 9 check', чтобы убедиться, что все проблемы устранены, \n прежде чем выполнять обновление PVE 8 → PVE 9.", + "Once finished, re-run the script 'PVE 8 to 9 check' to verify that all issues are resolved \n before rebooting.": "После завершения снова запустите скрипт 'PVE 8 to 9 check', чтобы убедиться, что все проблемы устранены, \n прежде чем перезагружаться.", + "Once finished, re-run the script 'PVE 8 to 9 check' to verify that all issues.": "После завершения снова запустите скрипт 'PVE 8 to 9 check', чтобы проверить, что все проблемы устранены.", + "Once finished, repeat the check ({check}) to review any remaining issues before rebooting.": "После завершения повторите проверку ({check}), чтобы выявить оставшиеся проблемы перед перезагрузкой.", + "Once finished, repeat the check ({check}) to review any remaining issues before starting the PVE 8 → PVE 9 upgrade.": "После завершения повторите проверку ({check}), чтобы выявить оставшиеся проблемы перед началом обновления PVE 8 → PVE 9.", + "Once finished, repeat the check ({check}) to review any remaining issues.": "После завершения повторите проверку ({check}), чтобы выявить оставшиеся проблемы.", + "Once installed, open the VirtIO ISO and run the installer to complete driver setup.": "После установки откройте ISO-образ VirtIO и запустите установщик, чтобы завершить установку драйверов.", + "One or more NVIDIA GPUs are currently configured for VM passthrough (vfio-pci):": "Один или несколько графических процессоров NVIDIA сейчас настроены для прямой передачи виртуальным машинам (vfio-pci):", + "Online retro games emulator": "Онлайн-эмулятор ретроигр", + "Only Intel/AMD DRM, Coral and USB nodes can be adopted automatically": "Автоматически можно принять только узлы Intel/AMD DRM, Coral и USB", + "Only Intel/AMD DRM, Coral, NPU and USB nodes can be adopted automatically": "Автоматически можно подключить только узлы Intel/AMD DRM, Coral, NPU и USB", + "Only a Docker Swarm uses these settings, so they are not applied:": "Эти настройки используются только в Docker Swarm, поэтому они не применяются:", + "Only a full sha256 image digest is supported.": "Поддерживается только полный дайджест образа sha256.", + "Only an installed standalone OCI instance can adopt external changes": "Только установленный автономный экземпляр OCI может принять внешние изменения", + "Only applications configured to use this proxy send their traffic through Tor.": "Только приложения, настроенные на использование этого прокси, направляют свой трафик через Tor.", + "Only backed-up Proxmox volumes can be adopted": "Принять можно только тома Proxmox, включённые в резервное копирование", + "Only convert to privileged if absolutely necessary for your use case.": "Преобразуйте контейнер в привилегированный только в том случае, если это совершенно необходимо для вашего сценария использования.", + "Only fully free disks are shown (not system-used and not referenced by VM/LXC).": "Показаны только полностью свободные диски (не используемые системой и не связанные с ВМ/LXC).", + "Only if using enterprise subscription": "Только при использовании подписки enterprise", + "Only if using no-subscription repository": "Только при использовании репозитория no-subscription", + "Only needed if you mounted the filesystem in step 6b": "Требуется только в том случае, если вы смонтировали файловую систему на шаге 6b", + "Only one image at a time can be installed this way.": "Таким способом можно установить только один образ за раз.", + "Only one service at a time can be installed this way.": "Таким способом можно установить только одну службу за раз.", + "Only removes storage definition, not remote data.": "Удаляется только определение хранилища, а не данные на удалённом сервере.", + "Only run this if you used LVM (step 6b):": "Выполняйте это только в том случае, если вы использовали LVM (шаг 6b):", + "Only the applications that need no question: the ones the cluster keeps a record of": "Только приложения, не вызывающие вопросов: те, о которых кластер хранит записи", + "Only the host backup hook is removed — PVE vzdump jobs targeting this storage stay intact.": "Удаляется только хук резервного копирования хоста — задания vzdump в PVE, использующие это хранилище, остаются без изменений.", + "Only the image reference, with no Compose file": "Только ссылка на образ, без файла Compose", + "Only the update of the image runs unattended.": "Только обновление образа выполняется без участия пользователя.", + "Open": "Открыть", + "Open Source realtime backend in 1 file": "Серверная часть с открытым исходным кодом для работы в реальном времени в одном файле", + "Open rwx + default inheritance for new files": "Полный доступ rwx + наследование прав по умолчанию для новых файлов", + "Open source chat UI for AI models": "Интерфейс чата с открытым исходным кодом для моделей ИИ", + "Open source home automation that puts local control and privacy first.": "Система домашней автоматизации с открытым исходным кодом, в которой локальное управление и конфиденциальность стоят на первом месте.", + "Open source, lightweight, native, supports (HTTP, BitTorrent, Magnet, etc.) for downloading.": "Лёгкое нативное приложение с открытым исходным кодом и поддержкой загрузок по HTTP, BitTorrent, Magnet и другим протоколам.", + "Open the VM console and wait for the installer to boot": "Откройте консоль ВМ и дождитесь запуска установщика", + "Open the VM console and wait for the loader to boot": "Откройте консоль ВМ и дождитесь запуска загрузчика", + "Open the dashboard from this host on port 8008 to create a new admin account.": "Откройте панель управления на этом хосте через порт 8008, чтобы создать новую учётную запись администратора.", + "Open the dashboard to create a new admin account:": "Откройте панель управления, чтобы создать новую учётную запись администратора:", + "Open the page of an application in the menu": "Откройте страницу приложения в меню", + "Open the web address and create the first account: the daemon registers by itself and starts the first scan.": "Откройте указанный веб-адрес и создайте первую учётную запись: демон зарегистрируется автоматически и запустит первое сканирование.", + "Open the web address and create the password of the akadmin user in the first-run setup.": "Откройте указанный веб-адрес и задайте пароль пользователя akadmin при первоначальной настройке.", + "Open the web address and follow KitchenOwl’s onboarding to create the first account; no default account is configured.": "Откройте указанный веб-адрес и следуйте инструкциям первоначальной настройки KitchenOwl, чтобы создать первую учётную запись; учётная запись по умолчанию не настроена.", + "Open the web dashboard and link your Movistar/O2 account using its SMS flow.": "Откройте веб-панель управления и привяжите свою учётную запись Movistar/O2, следуя процедуре подтверждения по SMS.", + "Open-source AI-powered coding assistant": "Помощник по программированию на базе ИИ с открытым исходным кодом", + "Open-source UI for building and debugging multi-agent and RAG applications": "Пользовательский интерфейс с открытым исходным кодом для создания и отладки мультиагентных и RAG-приложений", + "Open-source in-memory data store.": "Хранилище данных в оперативной памяти с открытым исходным кодом.", + "Open-source self-hosted SQL IDE.": "Среда разработки SQL с открытым исходным кодом для размещения на собственном сервере.", + "OpenClaw is a personal AI assistant you run on your own devices": "OpenClaw — персональный ИИ-помощник, который вы запускаете на собственных устройствах", + "OpenHabitTracker": "OpenHabitTracker", + "OpenHabitTracker account": "Учётная запись OpenHabitTracker", + "OpenHabitTracker initial username": "Начальное имя пользователя OpenHabitTracker", + "OpenList": "OpenList", + "OpenObserve administrator": "Администратор OpenObserve", + "OpenShot Video Editor is an award-winning free and open-source video editor for Linux, Mac, and Windows, and is dedicated to delivering high quality video editing and animation solutions to the world.": "OpenShot Video Editor — отмеченный наградами бесплатный видеоредактор с открытым исходным кодом для Linux, Mac и Windows, призванный предоставлять пользователям по всему миру высококачественные решения для видеомонтажа и анимации.", + "OpenTask": "OpenTask", + "OpenVINO requires a CPU quota to keep the CPU topology": "Для сохранения топологии процессора OpenVINO требуется квота процессорного времени", + "OpenVINO requires the render device of an Intel GPU": "Для OpenVINO требуется устройство рендеринга графического процессора Intel", + "OpenVSwitch installation could not be verified": "Не удалось проверить установку OpenVSwitch", + "OpenVSwitch installed successfully": "OpenVSwitch успешно установлен", + "OpenVSwitch is ready to use": "OpenVSwitch готов к использованию", + "OpenVSwitch removed": "OpenVSwitch удалён", + "Opengist": "Opengist", + "Openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server.": "Openssh-server — это изолированная среда, которая позволяет получать доступ по ssh, не предоставляя ключи ко всему серверу.", + "Openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.": "Openvscode-server предоставляет версию VS Code, сервер которой работает на удалённом компьютере и доступ к которой осуществляется через современный веб-браузер.", + "Opera is a multi-platform web browser developed by its namesake company Opera. The browser is based on Chromium, but distinguishes itself from other Chromium-based browsers (Chrome, Edge, etc.) through its user interface and other features.": "Opera — кроссплатформенный веб-браузер, разработанный одноимённой компанией Opera. Браузер основан на Chromium, но отличается от других браузеров на базе Chromium (Chrome, Edge и т. д.) пользовательским интерфейсом и другими возможностями.", + "Operation": "Операция", + "Operation cancelled by user": "Операция отменена пользователем", + "Operation cancelled by user to create backup.": "Операция отменена пользователем для создания резервной копии.", + "Operation cancelled by user.": "Операция отменена пользователем.", + "Operation cancelled.": "Операция отменена.", + "Operation cancelled. Cannot continue with an unprivileged container.": "Операция отменена. Невозможно продолжить работу с непривилегированным контейнером.", + "Operation log": "Журнал операций", + "Operator config re-applied via kernel-agnostic merge": "Конфигурация оператора повторно применена путём слияния, не зависящего от ядра", + "Operator config that WILL be re-applied via kernel-agnostic merge": "Конфигурация оператора, которая БУДЕТ повторно применена путём слияния, не зависящего от ядра", + "Optical block device (e.g. /dev/sr0)": "Оптическое блочное устройство (например, /dev/sr0)", + "Optimizations detected and ready to revert.": "Обнаружены оптимизации, которые можно отменить.", + "Optimize": "Оптимизировать", + "Optimize Memory": "Оптимизировать память", + "Optimize ZFS ARC size": "Оптимизировать размер ARC ZFS", + "Optimize journald": "Оптимизировать journald", + "Optimize logrotate": "Оптимизировать logrotate", + "Optimizing ZFS ARC maximum size...": "Оптимизация максимального размера ARC ZFS...", + "Optimizing logrotate configuration...": "Оптимизация конфигурации logrotate...", + "Optimizing memory settings...": "Оптимизация настроек памяти...", + "Optimizing network settings...": "Оптимизация сетевых настроек...", + "Optimizing vzdump backup speed...": "Оптимизация скорости резервного копирования vzdump...", + "Optional": "Необязательно", + "Optional GID of the plex group": "Необязательный GID группы plex", + "Optional GPU Passthrough": "Необязательный проброс GPU", + "Optional public URL when using a reverse proxy": "Необязательный публичный URL при использовании обратного прокси", + "Optional published URL for Jellyfin": "Необязательный публикуемый URL для Jellyfin", + "Optional safety helper if you ever need to re-apply manually:": "Необязательное вспомогательное средство для подстраховки на случай, если потребуется повторное применение вручную:", + "Optional token from https://www.plex.tv/claim": "Необязательный токен с https://www.plex.tv/claim", + "Optional, not mounted by default": "Необязательно, по умолчанию не монтируется", + "Optional: Modernize repository sources:": "Необязательно: обновите формат источников репозиториев:", + "Optional: apply default ACL so new files inherit permissions:": "Необязательно: примените ACL по умолчанию, чтобы новые файлы наследовали права доступа:", + "Optional: register this path as Proxmox dir storage:": "Необязательно: зарегистрируйте этот путь в Proxmox как хранилище типа dir:", + "Optionally remove": "При желании удалите", + "Optionally update NVIDIA libs in LXC containers with passthrough": "При желании обновите библиотеки NVIDIA в контейнерах LXC с пробросом GPU", + "Options:": "Параметры:", + "Or press CTRL + D": "Или нажмите CTRL + D", + "Or re-run this script and accept the 'apply host permissions' prompt.": "Или повторно запустите этот скрипт и согласитесь с запросом «применить права доступа на хосте».", + "Or use ProxMenux update function": "Или воспользуйтесь функцией обновления ProxMenux", + "Or, if your terminal can't select text, copy it from:": "Или, если ваш терминал не поддерживает выделение текста, скопируйте его отсюда:", + "Orca Slicer is an open source slicer for FDM printers. OrcaSlicer is fork of Bambu Studio, it was previously known as BambuStudio-SoftFever, Bambu Studio is forked from PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community": "Orca Slicer — слайсер с открытым исходным кодом для FDM-принтеров. OrcaSlicer — форк Bambu Studio, ранее известный как BambuStudio-SoftFever. Bambu Studio — форк PrusaSlicer от Prusa Research, который, в свою очередь, основан на Slic3r, разработанном Алессандро Ранеллуччи и сообществом RepRap.", + "Organize and browse a self-hosted video game library.": "Упорядочивайте и просматривайте библиотеку видеоигр на собственном сервере.", + "Organizr": "Organizr", + "Original ZFS ARC config restored from .bak": "Исходная конфигурация ARC для ZFS восстановлена из .bak", + "Original bashrc restored": "Исходный bashrc восстановлен", + "Original logrotate configuration restored": "Исходная конфигурация logrotate восстановлена", + "Orphan stack contract archived:": "Контракт стека без владельца помещён в архив:", + "Oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client.": "Oscam — программный модуль условного доступа с открытым исходным кодом, используемый для декодирования передач DVB с помощью смарт-карт. Он работает и как сервер, и как клиент.", + "Other Prebuilt Linux VMs": "Другие готовые виртуальные машины Linux", + "Output archive:": "Выходной архив:", + "Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.": "Overseerr — инструмент для управления запросами и поиска медиаконтента, предназначенный для работы с вашей существующей экосистемой Plex.", + "Owncast": "Owncast", + "Owncast administrator": "Администратор Owncast", + "Owner:": "Владелец:", + "Ownership set to root:sharedfiles with 2775 on:": "Установлены владелец и группа root:sharedfiles и права доступа 2775 для:", + "P2P bittorrent download": "Загрузка по протоколу P2P BitTorrent", + "PAM limits configured": "Лимиты PAM настроены", + "PBS API log rotation configured (hourly, size-based)": "Ротация журналов API PBS настроена (ежечасно, по размеру)", + "PBS backup error log": "Журнал ошибок резервного копирования PBS", + "PBS backup failed.": "Не удалось выполнить резервное копирование PBS.", + "PBS certificate": "Сертификат PBS", + "PBS datastores": "Хранилища данных PBS", + "PBS encryption keyfile (show / replace / remove)": "Файл ключа шифрования PBS (показать / заменить / удалить)", + "PBS encryption keyfile — detailed info": "Файл ключа шифрования PBS — подробная информация", + "PBS extraction failed": "Не удалось извлечь PBS", + "PBS host or IP address:": "Имя узла или IP-адрес PBS:", + "PBS package update": "Обновление пакетов PBS", + "PBS package upgrade completed. Check whether a reboot is required before your next backup window.": "Обновление пакетов PBS завершено. Проверьте, требуется ли перезагрузка перед следующим окном резервного копирования.", + "PBS package upgrade failed. Review the APT output before retrying.": "Не удалось обновить пакеты PBS. Перед повторной попыткой просмотрите вывод APT.", + "PBS upload": "Загрузка в PBS", + "PBS version and packages": "Версия и пакеты PBS", + "PBS: using the configured APT repositories without changing sources.": "PBS: используются настроенные репозитории APT без изменения источников.", + "PCI Address": "Адрес PCI", + "PCI passthrough, TPM state, cloud-init configuration, Proxmox hooks": "Проброс PCI, состояние TPM, конфигурация cloud-init, хуки Proxmox", + "PCI passthrough, TPM state, cloud-init, snapshots, Proxmox-specific hooks": "Проброс PCI, состояние TPM, cloud-init, снимки, специфичные для Proxmox хуки", + "PCI reset method": "Метод сброса PCI", + "PCIe GPU passthrough requires:": "Для проброса GPU PCIe требуется:", + "PCIe/M.2 gasket-dkms": "PCIe/M.2 gasket-dkms", + "PCSX2 is an open source PS2 Emulator.": "PCSX2 — эмулятор PS2 с открытым исходным кодом.", + "POSIX ACLs applied (access + default for inheritance).": "Применены ACL POSIX (для доступа и по умолчанию для наследования).", + "PPSSPP is a free and open-source PSP emulator for Windows, macOS, Linux, iOS, Android, Nintendo Wii U, Nintendo Switch, BlackBerry 10, MeeGo, Pandora, Xbox Series and Symbian with a focus on speed and portability.": "PPSSPP — бесплатный эмулятор PSP с открытым исходным кодом для Windows, macOS, Linux, iOS, Android, Nintendo Wii U, Nintendo Switch, BlackBerry 10, MeeGo, Pandora, Xbox Series и Symbian, ориентированный на скорость и переносимость.", + "PVE application manager updated": "Менеджер приложений PVE обновлён", + "PVE cache regenerated": "Кэш PVE создан заново", + "PVE host (where the Borg LXC lives)": "Хост PVE (на котором размещён контейнер LXC с Borg)", + "PVE host, VMID and password are all required for this mode.": "Для этого режима необходимо указать хост PVE, VMID и пароль.", + "PVE9: udev rules reloaded — new interfaces will get correct names without reboot": "PVE9: правила udev перезагружены — новые интерфейсы получат правильные имена без перезагрузки системы", + "Package Updates Available": "Доступны обновления пакетов", + "Package configurations completed.": "Настройка пакетов завершена.", + "Package lists": "Списки пакетов", + "Package lists updated after GPG fix": "Списки пакетов обновлены после исправления GPG", + "Package lists updated successfully": "Списки пакетов успешно обновлены", + "Package update completed with warnings, continuing...": "Обновление пакетов завершено с предупреждениями, продолжаем...", + "Package update had issues, checking details...": "При обновлении пакетов возникли проблемы, проверяем подробности...", + "Packages from backup to install:": "Пакеты из резервной копии для установки:", + "Packages installed: {count}.": "Установлено пакетов: {count}.", + "Packages to be upgraded": "Пакеты для обновления", + "Packages upgrade successfull": "Пакеты успешно обновлены", + "Packages upgraded": "Пакеты обновлены", + "Packages:": "Пакеты:", + "Packaging OVA file...": "Упаковка файла OVA...", + "Packing installer archive...": "Упаковка архива установщика...", + "Page layout and publishing in your browser": "Вёрстка и публикация страниц в браузере", + "PairDrop is a sublime alternative to AirDrop that works on all platforms. Send images, documents or text via peer to peer connection to devices in the same local network/Wi-Fi or to paired devices.": "PairDrop — отличная альтернатива AirDrop, работающая на всех платформах. Отправляйте изображения, документы или текст через прямое соединение между устройствами в одной локальной сети или сети Wi-Fi либо на сопряжённые устройства.", + "Paperless configuration cancelled": "Настройка Paperless отменена", + "Paperless-ngx WebUI": "Веб-интерфейс Paperless-ngx WebUI", + "Papra": "Papra", + "Parsing OVF descriptor...": "Разбор дескриптора OVF...", + "Partial VM removed": "Не полностью созданная виртуальная машина удалена", + "Partition": "Раздел", + "Partition created": "Раздел создан", + "Partition created:": "Раздел создан:", + "Partition table wiped": "Таблица разделов очищена", + "Pass /dev/kvm to the LXC": "Пробросить /dev/kvm в LXC", + "Pass /dev/net/tun to the LXC": "Пробросить /dev/net/tun в LXC", + "Pass /dev/ttyUSB0 to the LXC": "Пробросить /dev/ttyUSB0 в LXC", + "Pass /dev/video10 to the LXC": "Пробросить /dev/video10 в LXC", + "Pass /dev/video11 to the LXC": "Пробросить /dev/video11 в LXC", + "Pass /dev/video12 to the LXC": "Пробросить /dev/video12 в LXC", + "Pass a host device to the LXC": "Пробросить устройство хоста в LXC", + "Pass the UPS to the LXC": "Пробросить ИБП в LXC", + "Pass through a Z-Wave USB or serial controller": "Пробросить USB-контроллер или последовательный контроллер Z-Wave", + "Passing NVIDIA does not enable acceleration inside the application. The host needs NVIDIA Container Toolkit and a compatible image. Continue?": "Проброс NVIDIA не включает ускорение внутри приложения. На хосте нужны NVIDIA Container Toolkit и совместимый образ. Продолжить?", + "Passkey-based identity provider for self-hosted apps.": "Поставщик удостоверений на основе ключей доступа для приложений на собственном сервере.", + "Passphrase used to unlock the imported keyfile (leave blank if the keyfile is unencrypted / kdf=none):": "Парольная фраза для разблокировки импортированного файла ключа (оставьте поле пустым, если файл ключа не зашифрован / kdf=none):", + "Passphrases do not match.": "Парольные фразы не совпадают.", + "Passphrases do not match. Try again.": "Парольные фразы не совпадают. Повторите попытку.", + "Passthrough may fail depending on hardware/firmware implementation.": "Проброс может не работать в зависимости от реализации оборудования или прошивки.", + "Passthrough may still work without a ROM file.": "Проброс может работать и без файла ROM.", + "Passthrough may work, but startup/restart reliability is not guaranteed.": "Проброс может работать, но надёжность запуска и перезапуска не гарантируется.", + "Password": "Пароль", + "Password / access token (image pull permission)": "Пароль / токен доступа (с правом скачивания образов)", + "Password Mismatch": "Пароли не совпадают", + "Password cannot be empty.": "Пароль не может быть пустым.", + "Password confirmation cannot be empty.": "Поле подтверждения пароля не может быть пустым.", + "Password confirmation is required.": "Необходимо подтвердить пароль.", + "Password for": "Пароль для", + "Password for aMule external connections (remote client)": "Пароль для внешних подключений к aMule (удалённый клиент)", + "Password for the SSH login": "Пароль для входа по SSH", + "Password for:": "Пароль для:", + "Password is correct": "Пароль верный", + "Password must be 8-128 characters and include lowercase, uppercase, a number and a special character.": "Пароль должен содержать от 8 до 128 символов, включая строчные и прописные буквы, цифру и специальный символ.", + "Password of the AdGuard Home that receives the settings": "Пароль для AdGuard Home, принимающего настройки", + "Password of the Adguardhome Sync web interface": "Пароль веб-интерфейса Adguardhome Sync", + "Password of the Duplicati web interface": "Пароль веб-интерфейса Duplicati", + "Password of the Etherpad admin user": "Пароль администратора Etherpad", + "Password of the FlexGet web interface": "Пароль веб-интерфейса FlexGet", + "Password of the LibreDB Studio administrator": "Пароль администратора LibreDB Studio", + "Password of the MariaDB user": "Пароль пользователя MariaDB", + "Password of the MineOS web interface user": "Пароль пользователя веб-интерфейса MineOS", + "Password of the NUT server user": "Пароль пользователя сервера NUT", + "Password of the NetBox admin account": "Пароль учётной записи администратора NetBox", + "Password of the OpenList admin user": "Пароль администратора OpenList", + "Password of the PhotoPrism admin user (at least 8 characters)": "Пароль администратора PhotoPrism (не менее 8 символов)", + "Password of the PostgreSQL user": "Пароль пользователя PostgreSQL", + "Password of the ShareCoveX panel administrator (8 characters or more)": "Пароль администратора панели ShareCoveX (8 символов или больше)", + "Password of the SnapOtter admin user": "Пароль администратора SnapOtter", + "Password of the admin account": "Пароль учётной записи администратора", + "Password of the deprecated Flowise application login (only read by Flowise versions before 3.0.1)": "Пароль для устаревшего способа входа в приложение Flowise (используется только версиями Flowise до 3.0.1)", + "Password of the main AdGuard Home": "Пароль основного экземпляра AdGuard Home", + "Password of the noVNC browser session": "Пароль сеанса noVNC в браузере", + "Password of the superuser account": "Пароль учётной записи суперпользователя", + "Password or API token secret:": "Пароль или секрет токена API:", + "Password or secret": "Пароль или секрет", + "Password reset completed.": "Сброс пароля завершён.", + "Password to access the aMule web interface": "Пароль для доступа к веб-интерфейсу aMule", + "Password-only login": "Вход только по паролю", + "Passwords do not match. Please try again.": "Пароли не совпадают. Попробуйте ещё раз.", + "Paste an oci-compose in the terminal": "Вставьте oci-compose в терминал", + "Paste it here and press Ctrl+D on an empty line.": "Вставьте его сюда и нажмите Ctrl+D на пустой строке.", + "Paste it here and press Ctrl+D.": "Вставьте его сюда и нажмите Ctrl+D.", + "Paste its Compose file in the terminal": "Вставьте его файл Compose в терминал", + "Paste its docker run command in the terminal": "Вставьте его команду docker run в терминал", + "Paste the UUP Dump URL here": "Вставьте сюда URL UUP Dump", + "Patching source for kernel compatibility...": "Применение исправлений к исходному коду для совместимости с ядром...", + "Path added:": "Путь добавлен:", + "Path does not exist.": "Путь не существует.", + "Path inside the container": "Путь внутри контейнера", + "Path inside the container (e.g. /media-extra)": "Путь внутри контейнера (например, /media-extra)", + "Path inside the remote (empty = root)": "Путь в удалённом ресурсе (пустое значение = корневой каталог)", + "Path must be absolute (start with /)": "Путь должен быть абсолютным (начинаться с /)", + "Path must be absolute (start with /).": "Путь должен быть абсолютным (начинаться с /).", + "Path not found": "Путь не найден", + "Path of environment file": "Путь к файлу переменных окружения", + "Path of the Compose file": "Путь к файлу Compose", + "Path of the oci-compose file": "Путь к файлу oci-compose", + "Path removed:": "Путь удалён:", + "Path to the client SSH public key on this server:": "Путь к открытому ключу SSH клиента на этом сервере:", + "Path:": "Путь:", + "Paths applied:": "Применённые пути:", + "Paths included in backup": "Пути, включённые в резервную копию", + "Paths not found at backup time": "Пути, не найденные на момент резервного копирования", + "Paths skipped:": "Пропущенные пути:", + "Paths to back up:": "Пути для резервного копирования:", + "Paths:": "Пути:", + "Peers reach the server through the public address and the UDP port given during the installation, so that port must be forwarded to this container.": "Пиры подключаются к серверу через публичный адрес и UDP-порт, указанный при установке, поэтому этот порт необходимо перенаправить на этот контейнер.", + "Peers to create: a number (3) or a list of names (phone,laptop)": "Пиры для создания: количество (3) или список имён (phone,laptop)", + "Pelorus is an AI navigator for Selkies-powered Linux desktops. Pelorus runs a FastAPI server that gives an LLM agent (Ollama, OpenAI-compatible, or Gemini) control over mouse, keyboard, screenshot, and window management via the Pixelflux computer-use backend, a Linux accessibility tree (AT-SPI), and optional KWin D-Bus integration.": "Pelorus — ИИ-навигатор для рабочих столов Linux на базе Selkies. Pelorus запускает сервер FastAPI, который позволяет LLM-агенту (Ollama, OpenAI-совместимому агенту или Gemini) управлять мышью, клавиатурой, созданием снимков экрана и окнами с помощью бэкенда Pixelflux для взаимодействия с компьютером, дерева специальных возможностей Linux (AT-SPI) и необязательной интеграции с KWin через D-Bus.", + "Pending components:": "Компоненты, ожидающие обработки:", + "Pending restore ID:": "Идентификатор ожидающего восстановления:", + "Pending restore dir:": "Каталог ожидающего восстановления:", + "Pending restore prepared. A reboot is required to complete it.": "Отложенное восстановление подготовлено. Для его завершения требуется перезагрузка.", + "Pending restore prepared. It will run automatically at next boot.": "Отложенное восстановление подготовлено. Оно запустится автоматически при следующей загрузке.", + "Pending restore script not found or not executable:": "Скрипт отложенного восстановления не найден или не имеет права на выполнение:", + "Pending restore source is missing:": "Источник отложенного восстановления отсутствует:", + "Pending upgrades detected on a clustered node.\n\nTo proceed safely, update this node to the latest Proxmox VE 8.x before switching to Trixie/PVE 9.\n\nSelect Yes for AUTOMATIC upgrade (recommended), or No for MANUAL instructions.": "На узле кластера обнаружены неустановленные обновления.\n\nДля безопасного продолжения обновите этот узел до последней версии Proxmox VE 8.x перед переходом на Trixie/PVE 9.\n\nВыберите «Да» для АВТОМАТИЧЕСКОГО обновления (рекомендуется) или «Нет» для получения инструкций по обновлению ВРУЧНУЮ.", + "Pending upgrades detected on a clustered node. Perform AUTOMATIC upgrade now? (y = automatic, n = manual):": "На узле кластера обнаружены неустановленные обновления. Выполнить АВТОМАТИЧЕСКОЕ обновление сейчас? (y = автоматически, n = вручную):", + "Per official known issues; ensures proper boot after upgrade": "С учётом официального списка известных проблем; обеспечивает корректную загрузку после обновления", + "Performance": "Производительность", + "Performance optimized": "Оптимизировано для повышения производительности", + "Performing complete package reinstallation...": "Выполняется полная переустановка пакетов...", + "Performing packages upgrade...": "Выполняется обновление пакетов...", + "Performing system cleanup...": "Выполняется очистка системы...", + "Performs automatic cleanup after updating": "Выполняет автоматическую очистку после обновления", + "Permanent Mount": "Постоянное монтирование", + "Permanent Mounts (fstab):": "Постоянные монтирования (fstab):", + "Permanent:": "Постоянно:", + "Permanently delete saved target:": "Безвозвратно удалить сохранённое целевое устройство:", + "Permanently delete this archive and its sidecar?": "Безвозвратно удалить этот архив и его сопутствующий файл?", + "Permission error": "Ошибка прав доступа", + "Permissions:": "Права доступа:", + "Persist mount in CT /etc/fstab (optional):": "Сохранить монтирование в /etc/fstab контейнера (необязательно):", + "Persistence for": "Постоянное хранение для", + "Persistence for the new path": "Постоянное хранение для нового пути", + "Persistent data:": "Постоянные данные:", + "Persistent disk reused:": "Повторно использован постоянный диск:", + "Persistent:": "Постоянное хранение:", + "Personal finance management application": "Приложение для управления личными финансами", + "Personal media server for browsing and playing a local video library, with direct play and optional modules.": "Персональный медиасервер для просмотра и воспроизведения локальной видеотеки с прямым воспроизведением и дополнительными модулями.", + "Photo and video library with optional GPU transcoding and machine learning": "Библиотека фото и видео с возможностью транскодирования на GPU и использования машинного обучения", + "Photo editing in your browser": "Редактирование фотографий в браузере", + "Photo library and RAW development in your browser": "Фотобиблиотека и обработка RAW в браузере", + "PhotoPrism": "PhotoPrism", + "Photofield": "Photofield", + "Phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.": "Phpmyadmin — свободный программный инструмент, написанный на PHP и предназначенный для администрирования MySQL через веб-интерфейс. phpMyAdmin поддерживает широкий спектр операций с MySQL и MariaDB.", + "Physical Function with": "Физическая функция с", + "Physical interface": "Физический интерфейс", + "Physical interfaces available": "Доступные физические интерфейсы", + "Pick PVE vzdump job": "Выберите задание vzdump в PVE", + "Pick USB target": "Выберите целевое USB-устройство", + "Pick Yes to destroy them now (before reboot). Pick No to keep the additive restore and clean up manually later.": "Выберите «Да», чтобы уничтожить их сейчас (до перезагрузки). Выберите «Нет», чтобы сохранить результат восстановления с добавлением данных и выполнить очистку вручную позже.", + "Pick a USB disk:": "Выберите USB-диск:", + "Pick a drive to unmount:": "Выберите накопитель для размонтирования:", + "Pick a mounted USB as target": "Выберите смонтированный USB-накопитель в качестве целевого", + "Pick a target to remove:": "Выберите целевой объект для удаления:", + "Pick an SSH private key (auto-detected on this host):": "Выберите закрытый ключ SSH (автоматически обнаруженный на этом узле):", + "Pick an alternative way to authorize the new key:": "Выберите альтернативный способ авторизации нового ключа:", + "PicoShare": "PicoShare", + "PicoShare administrator passphrase": "Парольная фраза администратора PicoShare", + "Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.": "Pidgin — программа для обмена сообщениями, позволяющая одновременно входить в учётные записи в нескольких сетях общения. Это означает, что вы можете общаться с друзьями в XMPP и одновременно находиться на канале IRC.", + "Pinry": "Pinry", + "Piper is a fast, local neural text to speech system that sounds great and is optimized for the Raspberry Pi 4. This container provides a Wyoming protocol server for Piper.": "Piper — быстрая локальная нейросетевая система синтеза речи с высоким качеством звучания, оптимизированная для Raspberry Pi 4. Этот контейнер предоставляет сервер протокола Wyoming для Piper.", + "Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.": "Piwigo — программное обеспечение для создания веб-фотогалерей с широкими возможностями публикации и управления коллекцией изображений.", + "Placeholders: {{guestname}} {{node}} {{vmid}}": "Подстановочные обозначения: {{guestname}} {{node}} {{vmid}}", + "Planka is an elegant open source project tracking tool.": "Planka — элегантный инструмент отслеживания проектов с открытым исходным кодом.", + "Plants": "Растения", + "Please check network connectivity.": "Проверьте подключение к сети.", + "Please check permissions and try again.": "Проверьте права доступа и повторите попытку.", + "Please check the installation.": "Проверьте установку.", + "Please check:": "Проверьте:", + "Please choose another path.": "Выберите другой путь.", + "Please configure it manually and reboot.": "Выполните настройку вручную и перезагрузите систему.", + "Please expand the container disk and run this option again.": "Увеличьте размер диска контейнера и снова запустите этот пункт меню.", + "Please install the NVIDIA drivers first using the option:": "Сначала установите драйверы NVIDIA с помощью пункта меню:", + "Please mark at least one option, or press Cancel to exit.": "Отметьте хотя бы один пункт или нажмите «Отмена» для выхода.", + "Please reboot manually and run the passthrough step again.": "Перезагрузите систему вручную и повторите этап проброса устройств.", + "Please reboot manually to complete the switch.": "Перезагрузите систему вручную, чтобы завершить переключение.", + "Please reboot the system manually to complete the GPU switch.": "Перезагрузите систему вручную, чтобы завершить переключение GPU.", + "Please reselect GPU(s) and choose only compatible devices for VM mode.": "Повторно выберите GPU, указав только устройства, совместимые с режимом VM.", + "Please resolve the problem(s) as described above, then re-run the upgrade script.": "Устраните проблемы, как описано выше, затем повторно запустите скрипт обновления.", + "Please select GPU(s) that are currently in the same mode and try again.": "Выберите GPU, которые сейчас работают в одном и том же режиме, и повторите попытку.", + "Please select a valid option": "Выберите допустимый вариант", + "Please use an SSH session (Linux, macOS, Windows/PuTTY) or a physical console to perform the upgrade.": "Для выполнения обновления используйте сеанс SSH (Linux, macOS, Windows/PuTTY) или физическую консоль.", + "Plex WebUI": "Plex WebUI", + "Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. Straightforward design and bulk actions mean getting things done faster.": "Plex упорядочивает видео, музыку и фотографии из личных медиатек и транслирует их на смарт-телевизоры, ТВ-приставки и мобильные устройства. В этом контейнере развёрнут самостоятельный сервер Plex Media Server. Простой интерфейс и массовые действия позволяют быстрее выполнять задачи.", + "Pocket ID": "Pocket ID", + "PocketBase admin UI": "Интерфейс администрирования PocketBase", + "Podcast synchronization service": "Сервис синхронизации подкастов", + "Pool does not appear to use SSD/NVMe devices with discard support. Skipping ZFS autotrim for pool:": "По всей видимости, пул не использует устройства SSD/NVMe с поддержкой discard. Автоматический TRIM ZFS пропускается для пула:", + "Pool exists": "Пул существует", + "Pool name matches but GUID differs (fresh ZFS install):": "Имя пула совпадает, но GUID отличается (новая установка ZFS):", + "Pool:": "Пул:", + "Port": "Порт", + "Port must be a number between 1 and 65535.": "Порт должен быть числом от 1 до 65535.", + "Port of the database server (mysql and pgsql only)": "Порт сервера базы данных (только для mysql и pgsql)", + "Port:": "Порт:", + "Portal IP and port are correct": "IP-адрес и порт портала указаны верно", + "Portal is reachable": "Портал доступен", + "Portal:": "Портал:", + "Ports": "Порты", + "Portuguese": "Португальский", + "Post-Installation Options": "Параметры после установки", + "Post-Installation Scripts": "Скрипты после установки", + "Postfix configuration": "Настройка Postfix", + "PostgreSQL": "PostgreSQL", + "PostgreSQL URL without an associated service:": "URL PostgreSQL без связанного сервиса:", + "PostgreSQL creates the database named in POSTGRES_DB on the first start. The installer default is postgresql.": "PostgreSQL при первом запуске создаёт базу данных с именем, указанным в POSTGRES_DB. По умолчанию установщик использует имя postgresql.", + "PostgreSQL is an advanced, enterprise-class, and open-source relational database system. PostgreSQL supports both SQL (relational) and JSON (non-relational) querying.": "PostgreSQL — передовая реляционная система управления базами данных корпоративного класса с открытым исходным кодом. PostgreSQL поддерживает как SQL-запросы (реляционные), так и JSON-запросы (нереляционные).", + "PostgreSQL requires a password": "Для PostgreSQL требуется пароль", + "PostgreSQL volume size in GB": "Размер тома PostgreSQL в ГБ", + "Potential QEMU startup/assertion failures": "Возможные сбои запуска QEMU или ошибки проверки утверждений", + "Power state D3cold/D0 transitions may be inaccessible": "Переходы между состояниями питания D3cold/D0 могут быть недоступны", + "Powerful OCR powered by DeepSeek AI": "Мощное распознавание текста (OCR) на базе ИИ DeepSeek", + "Powerful networking tool": "Мощный инструмент для работы с сетью", + "Poznote": "Poznote", + "Poznote administrator": "Администратор Poznote", + "Pre-check found": "Предварительная проверка обнаружила", + "Pre-configure destinations so you don't have to enter them every time you back up.": "Заранее настройте места назначения, чтобы не указывать их при каждом создании резервной копии.", + "Pre-existing gasket-dkms package removed.": "Ранее установленный пакет gasket-dkms удалён.", + "Pre-restore backup:": "Резервная копия перед восстановлением:", + "Pre-upgrade check FAILED: the simulation shows that 'proxmox-ve' would be REMOVED.\n This indicates a repository or dependency issue and upgrading now could break your Proxmox installation.": "Проверка перед обновлением НЕ ПРОЙДЕНА: моделирование показывает, что пакет 'proxmox-ve' будет УДАЛЁН.\n Это указывает на проблему с репозиториями или зависимостями, и обновление сейчас может нарушить работу вашей установки Proxmox.", + "Pre-upgrade simulation failed. See log:": "Моделирование обновления завершилось с ошибкой. См. журнал:", + "Pre-upgrade simulation passed: 'proxmox-ve' will be kept or upgraded safely.": "Моделирование обновления прошло успешно: пакет 'proxmox-ve' будет сохранён или безопасно обновлён.", + "Prepared; the container was not modified yet": "Подготовлено; изменения в контейнер ещё не внесены", + "Preparing Log2RAM configuration": "Подготовка конфигурации Log2RAM", + "Preparing files for backup...": "Подготовка файлов для резервного копирования...", + "Preparing host mount...": "Подготовка монтирования на хосте...", + "Preparing pending restore (network-safe)": "Подготовка отложенного восстановления (без нарушения работы сети)", + "Preparing staging area...": "Подготовка промежуточной области...", + "Preparing the NVIDIA GPU...": "Подготовка графического процессора NVIDIA...", + "Preparing the changes...": "Подготовка изменений...", + "Preparing the machine learning container for the new choice...": "Подготовка контейнера машинного обучения в соответствии с новым выбором...", + "Preparing the update...": "Подготовка обновления...", + "Presentations and slide decks in your browser": "Презентации и наборы слайдов в вашем браузере", + "Preserving logs to /var/log.hdd before unmounting...": "Сохранение журналов в /var/log.hdd перед размонтированием...", + "Press 'q' to exit": "Нажмите 'q' для выхода", + "Press Ctrl+C to stop the server and return to menu.": "Нажмите Ctrl+C, чтобы остановить сервер и вернуться в меню.", + "Press ENTER to continue...": "Нажмите ENTER, чтобы продолжить...", + "Press ENTER to return to the menu...": "Нажмите ENTER, чтобы вернуться в меню...", + "Press ENTER to return...": "Нажмите ENTER, чтобы вернуться...", + "Press Enter to close this terminal...": "Нажмите Enter, чтобы закрыть этот терминал...", + "Press Enter to close...": "Нажмите Enter, чтобы закрыть...", + "Press Enter to continue": "Нажмите Enter, чтобы продолжить", + "Press Enter to continue...": "Нажмите Enter, чтобы продолжить...", + "Press Enter to exit and repair": "Нажмите Enter, чтобы выйти и выполнить исправление", + "Press Enter to exit the script after reading instructions...": "Прочитав инструкции, нажмите Enter, чтобы завершить скрипт...", + "Press Enter to exit...": "Нажмите Enter для выхода...", + "Press Enter to return": "Нажмите Enter, чтобы вернуться", + "Press Enter to return to menu...": "Нажмите Enter, чтобы вернуться в меню...", + "Press Enter to return to the main menu...": "Нажмите Enter, чтобы вернуться в главное меню...", + "Press Enter to return to the menu...": "Нажмите Enter, чтобы вернуться в меню...", + "Press Enter to return...": "Нажмите Enter, чтобы вернуться...", + "Press Enter when the line has been pasted on the server...": "Нажмите Enter после вставки строки на сервере...", + "Press OK to see the preview, then confirm": "Нажмите OK для предварительного просмотра, затем подтвердите", + "Press Space to select applications to update. Select all includes every application in this list.": "Нажимайте пробел, чтобы выбрать приложения для обновления. Пункт «Выбрать все» включает все приложения в этом списке.", + "Press any key to continue...": "Нажмите любую клавишу, чтобы продолжить...", + "Pretty uptime format": "Удобочитаемый формат времени работы", + "Preview Backup": "Предварительный просмотр резервной копии", + "Preview Changes": "Предварительный просмотр изменений", + "Preview changes (diff)": "Предварительный просмотр изменений (diff)", + "Preview: changes that would be applied": "Предварительный просмотр: изменения, которые будут применены", + "Previous DKMS tree cleared.": "Предыдущее дерево DKMS очищено.", + "Previous Rclone configuration restored": "Предыдущая конфигурация Rclone восстановлена", + "Previous installation cleaned": "Предыдущая установка очищена", + "Previous installation removed": "Предыдущая установка удалена", + "Previous installation restored": "Предыдущая установка восстановлена", + "Previous shutdowns": "Предыдущие выключения", + "Primary GID for Emby": "Основной GID для Emby", + "Primary upstream DNS server": "Основной вышестоящий DNS-сервер", + "Printer": "Принтер", + "Privacy-first finance app with envelope budgeting and multi-device sync.": "Финансовое приложение с приоритетом конфиденциальности, ведением бюджета по методу конвертов и синхронизацией между устройствами.", + "Privacy-first, self-hosted PDF toolkit": "Набор инструментов для работы с PDF с размещением на собственном сервере и приоритетом конфиденциальности", + "Privacy-focused, self-hosted web analytics.": "Веб-аналитика с размещением на собственном сервере и акцентом на конфиденциальность.", + "Private installation record saved": "Конфиденциальная запись об установке сохранена", + "Private network assigned automatically:": "Частная сеть назначена автоматически:", + "Private network kept, because other guests still use it:": "Частная сеть сохранена, поскольку её всё ещё используют другие гостевые системы:", + "Private network of the application released:": "Частная сеть приложения освобождена:", + "Private network of the application that is released:": "Освобождаемая частная сеть приложения:", + "Private network release attempted:": "Попытка освободить частную сеть:", + "Private network targeted for release if no other guest uses it:": "Частная сеть, которая будет освобождена, если её не использует ни одна другая гостевая система:", + "Private network:": "Частная сеть:", + "Private personal knowledge management": "Конфиденциальное управление личными знаниями", + "Privileged": "Привилегированный", + "Privileged Container": "Привилегированный контейнер", + "Privileged Container Required": "Требуется привилегированный контейнер", + "Privileged container": "Привилегированный контейнер", + "Privileged container selected:": "Выбран привилегированный контейнер:", + "Privileged container — UID-shift remapping skipped (not applicable)": "Привилегированный контейнер — переназначение UID со смещением пропущено (неприменимо)", + "Privileged container — direct root access": "Привилегированный контейнер — прямой доступ с правами root", + "Privileged container — host root maps directly, no permission changes needed": "Привилегированный контейнер — root хоста сопоставляется напрямую, изменение прав доступа не требуется", + "Privileged containers can access host devices directly": "Привилегированные контейнеры могут напрямую обращаться к устройствам хоста", + "Privileged containers have full root access to the host system!": "Привилегированные контейнеры имеют полный доступ к системе хоста с правами root!", + "Privileged installation declined": "Установка с привилегиями отклонена", + "Privileged: Full host access (less secure)": "Привилегированный: полный доступ к хосту (менее безопасно)", + "Probe failed": "Проверка не удалась", + "Proceed": "Продолжить", + "Proceed with removal": "Продолжить удаление", + "Proceed?": "Продолжить?", + "Proceeding with Log2RAM setup on non-SSD disk as requested by user.": "По запросу пользователя настройка Log2RAM продолжается на диске, который не является SSD.", + "Process may take several minutes depending on container size": "Процесс может занять несколько минут в зависимости от размера контейнера", + "Process may take several minutes for large containers": "Для больших контейнеров процесс может занять несколько минут", + "Process running only (no health check declared)": "Только работающий процесс (проверка работоспособности не задана)", + "Processes using NVIDIA:": "Процессы, использующие NVIDIA:", + "Productivity & Workflows": "Продуктивность и рабочие процессы", + "Profile": "Профиль", + "Profile:": "Профиль:", + "Project environment file (.env), or leave empty to enter values": "Файл переменных окружения проекта (.env); оставьте поле пустым, чтобы ввести значения вручную", + "Project tracking with issues, wikis and time tracking.": "Управление проектами с отслеживанием задач, вики и учётом времени.", + "Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files.": "Projectsend — приложение для размещения на собственном сервере, которое позволяет загружать файлы и назначать их конкретным клиентам, которых вы создаёте самостоятельно. Безопасно, конфиденциально и просто. Больше не нужно зависеть от внешних сервисов или электронной почты для отправки этих файлов.", + "Proposed Changes": "Предлагаемые изменения", + "Proposed ZFS ARC maximum:": "Предлагаемый максимальный размер ARC ZFS:", + "Provided by newer version — skipping": "Предоставляется более новой версией — пропускаем", + "Prowlarr does not offer the application schema:": "Prowlarr не предоставляет схему приложения:", + "Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).": "Prowlarr — менеджер и прокси индексаторов, построенный на популярном стеке arr .net/reactjs для интеграции с различными PVR-приложениями. Prowlarr поддерживает как торрент-трекеры, так и индексаторы Usenet. Он легко интегрируется с Sonarr, Radarr, Lidarr и Readarr, обеспечивая полное управление индексаторами без необходимости настраивать их отдельно в каждом приложении (мы берём всё на себя).", + "ProxMenux Information": "Информация о ProxMenux", + "ProxMenux Monitor": "ProxMenux Monitor", + "ProxMenux Monitor Service Verification": "Проверка службы ProxMenux Monitor", + "ProxMenux Monitor authentication is not configured on this host — there is no password to reset.": "Аутентификация ProxMenux Monitor на этом узле не настроена — пароль для сброса отсутствует.", + "ProxMenux Monitor filter configured": "Фильтр ProxMenux Monitor настроен", + "ProxMenux Monitor has been activated.": "ProxMenux Monitor активирован.", + "ProxMenux Monitor has been deactivated.": "ProxMenux Monitor деактивирован.", + "ProxMenux Monitor is not installed": "ProxMenux Monitor не установлен", + "ProxMenux Monitor is not installed.": "ProxMenux Monitor не установлен.", + "ProxMenux Monitor jail configured": "Jail ProxMenux Monitor настроен", + "ProxMenux Monitor protection": "Защита ProxMenux Monitor", + "ProxMenux Monitor unit repaired and restarted": "Юнит ProxMenux Monitor восстановлен и перезапущен", + "ProxMenux Monitor → Backups tab (live progress card with estimated time, logs, rollback delta)": "Вкладка ProxMenux Monitor → Backups (карточка хода выполнения с обновлением в реальном времени, оценкой времени, журналами и изменениями для отката)", + "ProxMenux OCI manager Apps (Technology Preview)": "ProxMenux OCI manager Apps (предварительная технологическая версия)", + "ProxMenux attaches directories, not single files, so this image cannot be installed yet.": "ProxMenux подключает каталоги, а не отдельные файлы, поэтому этот образ пока нельзя установить.", + "ProxMenux can apply open permissions on this NFS directory from the host so the container can read and write:": "ProxMenux может с хоста предоставить всем права доступа к этому каталогу NFS, чтобы контейнер мог читать и записывать данные:", + "ProxMenux can remount it with open permissions so any LXC can read and write.": "ProxMenux может повторно смонтировать его с правами доступа для всех, чтобы любой LXC мог читать и записывать данные.", + "ProxMenux cannot install this image automatically. Import its Compose file instead.": "ProxMenux не может установить этот образ автоматически. Вместо этого импортируйте его файл Compose.", + "ProxMenux cannot override NFS server-side permissions from the host.": "ProxMenux не может переопределить с хоста права доступа, заданные на сервере NFS.", + "ProxMenux could not translate this image. Try importing its Compose file from OCI manager Apps.": "ProxMenux не удалось преобразовать этот образ. Попробуйте импортировать его файл Compose через OCI manager Apps.", + "ProxMenux customizations removed from bashrc": "Настройки ProxMenux удалены из bashrc", + "ProxMenux does not give a container the system of its host.": "ProxMenux не предоставляет контейнеру систему его хоста.", + "ProxMenux does not install them. The installation asks how to connect to them.": "ProxMenux не устанавливает их. Во время установки запрашивается способ подключения к ним.", + "ProxMenux does not validate the contents; any keyfile your PBS accepts is accepted here.": "ProxMenux не проверяет содержимое; здесь принимается любой файл ключа, который принимает ваш PBS.", + "ProxMenux files:": "Файлы ProxMenux:", + "ProxMenux generates the administrator password and shows it at the end of the installation. Change it after the first login.": "ProxMenux создаёт пароль администратора и показывает его в конце установки. Измените его после первого входа.", + "ProxMenux logo applied": "Логотип ProxMenux применён", + "ProxMenux only acts as a launcher — once the script starts, control leaves ProxMenux.": "ProxMenux служит только для запуска — после запуска скрипта управление выходит за пределы ProxMenux.", + "ProxMenux saved it locally at:": "ProxMenux сохранил это локально по пути:", + "ProxMenux-managed .link file(s). User-authored .link files were left in place.": "файл(ов) .link, управляемых ProxMenux. Файлы .link, созданные пользователем, оставлены на месте.", + "ProxMenux-managed .link files removed: {count}. User-authored .link files were left in place.": "Удалено файлов .link, управляемых ProxMenux: {count}. Созданные пользователем файлы .link оставлены без изменений.", + "Proxmology logo applied": "Логотип Proxmology применён", + "Proxmox 9 system update allready": "Система Proxmox 9 уже обновлена", + "Proxmox APT repositories configured": "Репозитории APT Proxmox настроены", + "Proxmox APT repository inventory is invalid or reports parse errors. Fix sources in {ui}; no repository changed.": "Список репозиториев APT Proxmox некорректен или содержит сообщения об ошибках разбора. Исправьте источники в {ui}; ни один репозиторий не изменён.", + "Proxmox Backup Server": "Proxmox Backup Server", + "Proxmox Backup Server (PBS) destinations": "Места назначения Proxmox Backup Server (PBS)", + "Proxmox Backup Server APT repositories configured": "Репозитории APT Proxmox Backup Server настроены", + "Proxmox Backup Server Microcode": "Proxmox Backup Server Microcode", + "Proxmox Backup Server Post Install": "Послеустановочная настройка Proxmox Backup Server", + "Proxmox Backup Server Subscription Banner Removal": "Удаление баннера о подписке Proxmox Backup Server", + "Proxmox Backup Server Update": "Обновление Proxmox Backup Server", + "Proxmox Backup Server update completed.": "Обновление Proxmox Backup Server завершено.", + "Proxmox CIFS Storage Status:": "Состояние хранилища CIFS в Proxmox:", + "Proxmox NFS Storage Status:": "Состояние хранилища NFS в Proxmox:", + "Proxmox System Update": "Обновление системы Proxmox", + "Proxmox Update": "Обновление Proxmox", + "Proxmox VE": "Proxmox VE", + "Proxmox VE 8 package upgrade failed. Review the APT output before retrying.": "Не удалось обновить пакеты Proxmox VE 8. Перед повторной попыткой проверьте вывод APT.", + "Proxmox VE 8 system update completed successfully": "Обновление системы Proxmox VE 8 успешно завершено", + "Proxmox VE 8 to 9 Manual Upgrade Guide": "Руководство по ручному обновлению Proxmox VE с версии 8 до версии 9", + "Proxmox VE 9.x no-subscription repository created": "Репозиторий no-subscription для Proxmox VE 9.x создан", + "Proxmox VE Helper Scripts": "Вспомогательные скрипты Proxmox VE", + "Proxmox VE cannot create a container from this image: it declares a user but does not include /etc/passwd and /etc/group. Nothing was created.": "Proxmox VE не может создать контейнер из этого образа: в нём объявлен пользователь, но отсутствуют /etc/passwd и /etc/group. Ничего не создано.", + "Proxmox VE configuration completed.": "Настройка Proxmox VE завершена.", + "Proxmox VE safe update completed": "Безопасное обновление Proxmox VE завершено", + "Proxmox auth logger service created and started": "Служба журналирования событий аутентификации Proxmox создана и запущена", + "Proxmox could not apply the container settings": "Proxmox не удалось применить настройки контейнера", + "Proxmox enterprise repo might be missing or inaccessible. Trying to switch to no-subscription...": "Репозиторий enterprise Proxmox может отсутствовать или быть недоступен. Выполняется попытка переключения на no-subscription...", + "Proxmox filter configured": "Фильтр Proxmox настроен", + "Proxmox iSCSI Storage Status:": "Состояние хранилища iSCSI в Proxmox:", + "Proxmox jail configured": "Правило блокировки (jail) Proxmox настроено", + "Proxmox local storages:": "Локальные хранилища Proxmox:", + "Proxmox no-subscription standard repository handle unavailable; no repository changed.": "Идентификатор стандартного репозитория Proxmox no-subscription недоступен; ни один репозиторий не изменён.", + "Proxmox repository": "Репозиторий Proxmox", + "Proxmox repository OK (candidate is 9.x)": "Репозиторий Proxmox в порядке (версия-кандидат — 9.x)", + "Proxmox repository configuration completed": "Настройка репозитория Proxmox завершена", + "Proxmox repository fixed (no-subscription, candidate is 9.x)": "Репозиторий Proxmox исправлен (no-subscription, версия-кандидат — 9.x)", + "Proxmox status:": "Состояние Proxmox:", + "Proxmox storage for the volume": "Хранилище Proxmox для тома", + "Proxmox storages:": "Хранилища Proxmox:", + "Proxmox system repair completed successfully!": "Восстановление системы Proxmox успешно завершено!", + "Proxmox system repair completed with some issues.": "Восстановление системы Proxmox завершено с некоторыми проблемами.", + "Proxmox volume adoption requires backup=1 and a volume ID": "Для подключения существующего тома к Proxmox требуются backup=1 и идентификатор тома", + "Proxmox web interface protection": "Защита веб-интерфейса Proxmox", + "Proxmox web interface: Datacenter > Storage > Add > Directory": "Веб-интерфейс Proxmox: Датацентр > Хранилище > Добавить > Каталог", + "Proxmox web interface: Datacenter > Storage > Add > NFS": "Веб-интерфейс Proxmox: Датацентр > Хранилище > Добавить > NFS", + "Proxmox web interface: Datacenter > Storage > Add > SMB/CIFS": "Веб-интерфейс Proxmox: Датацентр > Хранилище > Добавить > SMB/CIFS", + "Proxmox web interface: Datacenter > Storage > Add > ZFS": "Веб-интерфейс Proxmox: Датацентр > Хранилище > Добавить > ZFS", + "Proxmox web interface: Datacenter > Storage > Add > iSCSI": "Веб-интерфейс Proxmox: Датацентр > Хранилище > Добавить > iSCSI", + "Proxy address to reach the API (optional)": "Адрес прокси для доступа к API (необязательно)", + "Public HTTPS URL used to open this Authelia portal (for example https://auth.example.com)": "Публичный HTTPS URL для открытия этого портала Authelia (например https://auth.example.com)", + "Public UDP port clients connect to": "Публичный UDP-порт, к которому подключаются клиенты", + "Public UDP port peers connect to": "Публичный UDP-порт, к которому подключаются пиры", + "Public URL of phpMyAdmin when it is served behind a reverse proxy": "Публичный URL phpMyAdmin при работе за обратным прокси", + "Public URL used to access Baserow (for example https://baserow.example.com)": "Публичный URL для доступа к Baserow (например, https://baserow.example.com)", + "Public address clients connect to (vpn.example.com or a public IP)": "Публичный адрес, к которому подключаются клиенты (vpn.example.com или публичный IP-адрес)", + "Public address peers connect to, or auto to detect it (vpn.example.com)": "Публичный адрес, к которому подключаются пиры, или auto для его автоматического определения (vpn.example.com)", + "Publish each directory from Resources: open it, switch on SMB, NFS or both, and save.": "Опубликуйте каждый каталог в разделе Resources: откройте его, включите SMB, NFS или оба протокола и сохраните изменения.", + "Pulling latest changes from GitHub...": "Получение последних изменений из GitHub...", + "Purge the gasket-dkms package": "Полностью удалить пакет gasket-dkms", + "Purging gasket-dkms package...": "Полное удаление пакета gasket-dkms...", + "Purging log2ram apt package...": "Полное удаление пакета apt log2ram...", + "Put this application under watchdog? It is restarted automatically when it crashes.": "Включить контроль этого приложения с помощью watchdog? При сбое оно будет автоматически перезапущено.", + "Put this application under watchdog? It is restarted automatically when it crashes. A stop or a shutdown you ask for is never undone.": "Включить контроль этого приложения с помощью watchdog? При сбое оно будет автоматически перезапущено. Если вы сами остановите или выключите приложение, watchdog не запустит его снова.", + "Pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.": "Pwndrop — сервис файлового хостинга для самостоятельного развёртывания, предназначенный для распространения полезных нагрузок при тестировании методом red teaming или безопасного обмена личными файлами по HTTP и WebDAV.", + "PyCharm offers out-of-the-box support for Python, databases, Jupyter, Git, Conda, PyTorch, TensorFlow, Hugging Face, Django, Flask, FastAPI, and more.": "PyCharm изначально поддерживает Python, базы данных, Jupyter, Git, Conda, PyTorch, TensorFlow, Hugging Face, Django, Flask, FastAPI и многое другое.", + "Pydio Cells needs an external MySQL or MariaDB database. The setup wizard asks for its address, database name and user on the first start.": "Для Pydio Cells нужна внешняя база данных MySQL или MariaDB. При первом запуске мастер настройки запрашивает её адрес, имя базы данных и пользователя.", + "Pydio Cells redirects to the address given in EXTERNALURL. If the container changes address, edit lxc.environment.runtime: EXTERNALURL and SERVER_IP in /etc/pve/lxc/.conf with the container stopped, and delete /config/keys/cert.crt to regenerate the certificate.": "Pydio Cells перенаправляет на адрес, указанный в EXTERNALURL. Если адрес контейнера изменится, остановите контейнер, измените lxc.environment.runtime: EXTERNALURL и SERVER_IP в /etc/pve/lxc/.conf и удалите /config/keys/cert.crt, чтобы заново создать сертификат.", + "Pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.": "Pydio-cells — платформа нового поколения для обмена файлами в организациях. Это полностью переписанный на языке Go проект Pydio с микросервисной архитектурой.", + "QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.": "QDirStat — статистика каталогов на базе Qt: KDirStat без каких-либо компонентов KDE — от автора оригинального KDirStat.", + "Qdrant": "Qdrant", + "Quick health check (PASSED / FAILED)": "Быстрая проверка состояния (ПРОЙДЕНА / НЕ ПРОЙДЕНА)", + "Quick health status — overall SMART result + key attributes": "Краткая сводка состояния — общий результат SMART и основные атрибуты", + "RAID Detected": "Обнаружен RAID", + "RAID member detected": "Обнаружен участник RAID-массива", + "RAM Size": "Объём оперативной памяти", + "RAM and swap usage": "Использование оперативной памяти и подкачки", + "RAM in MiB": "Оперативная память в MiB", + "REPAIR SUMMARY": "СВОДКА ИСПРАВЛЕНИЙ", + "REQUIREMENTS:": "REQUIREMENTS:", + "REST API Basic Authentication user": "Пользователь для базовой аутентификации REST API", + "ROCm does not support this GPU officially. The application can use it by presenting it as another generation of its family: it is faster than the CPU, but under load the GPU can stop responding, and then the application does not answer until its container is restarted. The ROCm image is also larger than the others.": "ROCm официально не поддерживает этот GPU. Приложение может использовать его, представляя его как GPU другого поколения того же семейства: он работает быстрее CPU, но под нагрузкой GPU может перестать отвечать, после чего приложение не будет отвечать до перезапуска его контейнера. Образ ROCm также больше остальных.", + "ROCm requires /dev/kfd on the host": "Для ROCm требуется /dev/kfd на хосте", + "ROCm requires the render device of an AMD GPU": "Для ROCm требуется устройство рендеринга графического процессора AMD", + "ROM dump not available — configuring without romfile.": "Дамп ROM недоступен — настройка без romfile.", + "ROM file used": "Используемый файл ROM", + "RPC Bind Service: RUNNING": "Служба RPC Bind: РАБОТАЕТ", + "RPC Bind Service: STOPPED": "Служба RPC Bind: ОСТАНОВЛЕНА", + "RPC Bind Service: STOPPED - starting...": "Служба RPC Bind: ОСТАНОВЛЕНА — запуск...", + "RPCS3 is a multi-platform open-source Sony PlayStation 3 emulator and debugger written in C++ for Windows, Linux, macOS and FreeBSD.": "RPCS3 — кроссплатформенный эмулятор и отладчик Sony PlayStation 3 с открытым исходным кодом, написанный на C++ для Windows, Linux, macOS и FreeBSD.", + "RabbitMQ": "RabbitMQ", + "RabbitMQ administrator": "Администратор RabbitMQ", + "Radarr - A fork of Sonarr to work with movies à la Couchpotato.": "Radarr — форк Sonarr для работы с фильмами по аналогии с Couchpotato.", + "Radarr added to Prowlarr": "Radarr добавлен в Prowlarr", + "Radarr connected to qBittorrent": "Radarr подключён к qBittorrent", + "Radarr root folder configured": "Корневая папка Radarr настроена", + "RagFlow is an open-source RAG engine based on deep document understanding.": "RagFlow — движок RAG с открытым исходным кодом, основанный на глубоком понимании документов.", + "Raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.": "Raneto — платформа базы знаний с открытым исходным кодом, использующая статические файлы Markdown для организации вашей базы знаний.", + "Raneto web interface": "Веб-интерфейс Raneto", + "RawTherapee is a free, cross-platform raw image processing program!": "RawTherapee — бесплатная кроссплатформенная программа для обработки изображений в формате RAW!", + "Rclone WebUI": "Rclone WebUI", + "Rclone mount": "Монтирование Rclone", + "Rclone mount active": "Монтирование Rclone активно", + "Rclone mount needs a privileged LXC with FUSE access. The container is dedicated to Rclone and its web UI must not be exposed to untrusted networks.": "Для монтирования Rclone требуется привилегированный контейнер LXC с доступом к FUSE. Контейнер предназначен исключительно для Rclone, и доступ к его веб-интерфейсу из недоверенных сетей должен быть запрещён.", + "Rclone mount requires a privileged LXC with FUSE access. Use this profile only on a trusted node and network.": "Для монтирования Rclone требуется привилегированный контейнер LXC с доступом к FUSE. Используйте этот профиль только на доверенном узле и в доверенной сети.", + "Rclone mount requires a privileged container": "Для монтирования Rclone требуется привилегированный контейнер", + "Rclone remote": "Удалённый ресурс Rclone", + "Re-enter the BORG REPOKEY passphrase to confirm:": "Повторно введите парольную фразу BORG REPOKEY для подтверждения:", + "Re-running pre-check after repairs...": "Повторная предварительная проверка после исправлений...", + "Reachable": "Доступен", + "Read an oci-compose from a file of this host": "Прочитать oci-compose из файла на этом хосте", + "Read and edit PDF documents in your browser": "Читайте и редактируйте PDF-документы в браузере", + "Read its Compose file from a file of this host": "Прочитать его файл Compose из файла на этом хосте", + "Read manga through a self-hosted server and web UI.": "Читайте мангу с помощью сервера на собственном хостинге и веб-интерфейса.", + "Read the link with pct console CTID on the Proxmox host, or from the Console panel of the container in the Proxmox web interface, then open the https://playit.gg/claim/ address it shows in a browser and sign in to playit.gg. Ctrl+a q leaves pct console.": "Посмотрите ссылку с помощью pct console CTID на хосте Proxmox или на панели Console контейнера в веб-интерфейсе Proxmox, затем откройте указанный адрес https://playit.gg/claim/ в браузере и войдите в playit.gg. Для выхода из pct console нажмите Ctrl+a q.", + "Read-Only": "Только для чтения", + "Read-Only access": "Доступ только для чтения", + "Read-Write (universal)": "Чтение и запись (универсальный режим)", + "Read-Write access": "Доступ на чтение и запись", + "Read-only": "Только для чтения", + "Read-only access (or no write permissions).": "Доступ только для чтения (или без прав на запись).", + "Read-only mount": "Монтирование только для чтения", + "Read/Write (default)": "Чтение и запись (по умолчанию)", + "Read/write": "Чтение и запись", + "Read/write CPU model-specific registers": "Чтение и запись регистров, специфичных для модели процессора", + "Readable user table (UID, shell, etc.)": "Таблица пользователей в удобочитаемом виде (UID, оболочка и т. д.)", + "Reading NVMe SMART data...": "Чтение данных SMART NVMe...", + "Reading NVMe self-test log...": "Чтение журнала самотестирования NVMe...", + "Reading SMART data...": "Чтение данных SMART...", + "Reading SMART self-test log...": "Чтение журнала самотестирования SMART...", + "Reading full SMART report...": "Чтение полного отчёта SMART...", + "Reading image metadata. Please wait...": "Чтение метаданных образа. Подождите...", + "Ready to create a %s?": "Готовы создать %s?", + "Real-time Performance Monitoring": "Мониторинг производительности в реальном времени", + "Real-time bandwidth usage (press q to exit)": "Использование пропускной способности в реальном времени (нажмите q для выхода)", + "Real-time collaborative document editor": "Редактор документов для совместной работы в реальном времени", + "Real-time network monitoring (press q to exit)": "Мониторинг сети в реальном времени (нажмите q для выхода)", + "Real-time network usage (iftop)": "Использование сети в реальном времени (iftop)", + "Reason: Access denied": "Причина: доступ запрещён", + "Reason: Authentication required": "Причина: требуется аутентификация", + "Reason: Permission denied": "Причина: недостаточно прав", + "Reboot Recommended": "Рекомендуется перезагрузка", + "Reboot Required": "Требуется перезагрузка", + "Reboot is required to apply the scheduled restore.": "Для применения запланированного восстановления требуется перезагрузка.", + "Reboot is required to complete the pending restore.": "Для завершения ожидающего восстановления требуется перезагрузка.", + "Reboot now?": "Перезагрузить сейчас?", + "Reboot pending — changes will take full effect after the next restart.": "Ожидается перезагрузка — изменения полностью вступят в силу после следующей перезагрузки.", + "Reboot the VM to complete the driver installation.": "Перезагрузите виртуальную машину, чтобы завершить установку драйвера.", + "Reboot the system:": "Перезагрузите систему:", + "Rebooting the system...": "Перезагрузка системы...", + "Rebuilding initramfs after vfio.conf cleanup...": "Пересборка initramfs после очистки vfio.conf...", + "Rebuilding initramfs to apply nouveau blacklist before installation...": "Пересборка initramfs для применения блокировки nouveau перед установкой...", + "Rebuilding the container and recovering it from its backup are tested on the same image; the first update to a newer image is still to be observed.": "Пересоздание контейнера и его восстановление из резервной копии проверены на одном и том же образе; первое обновление до более нового образа ещё предстоит проверить.", + "Recent": "Недавние", + "Recent PBS tasks": "Недавние задачи PBS", + "Recent Samba Servers": "Недавние серверы Samba", + "Recent Samba server": "Недавний сервер Samba", + "Recent logs:": "Последние журналы:", + "Recent test results:": "Последние результаты тестирования:", + "Recognition": "Распознавание", + "Recognition already runs on that choice": "Распознавание уже работает с выбранным вариантом", + "Recognition is not offered on the AMD GPU; video transcoding is.": "Распознавание на графическом процессоре AMD недоступно; перекодирование видео доступно.", + "Recognition of Immich changed; the application was updated with the new choice.": "Настройки распознавания в Immich изменены; приложение обновлено с учётом нового выбора.", + "Recognition on AMD uses ROCm. Its image is several times larger than the others, so the first installation takes longer, and whether a GPU works with it depends on its model.": "Распознавание на AMD использует ROCm. Его образ в несколько раз больше остальных, поэтому первая установка занимает больше времени, а работа конкретного GPU зависит от его модели.", + "Recognition on AMD uses ROCm. Its image is several times larger than the others, so the first installation takes longer.": "Для распознавания на AMD используется ROCm. Его образ в несколько раз больше остальных, поэтому первая установка занимает больше времени.", + "Recognition profile not implemented": "Профиль распознавания не реализован", + "Recognition runs on the CPU.": "Распознавание выполняется на CPU.", + "Recommendation: reformat the disk to ext4 for a robust setup — see docs.": "Рекомендация: для надёжной работы переформатируйте диск в ext4 — см. документацию.", + "Recommendation: start with Complete restore.": "Рекомендация: начните с полного восстановления.", + "Recommendation: use 'Export to file' for these paths and apply manually during a maintenance window.": "Рекомендация: используйте «Экспорт в файл» для этих путей и примените изменения вручную в период технического обслуживания.", + "Recommended": "Рекомендуется", + "Recommended diagnostic commands": "Рекомендуемые команды диагностики", + "Recommended: Install the QEMU Guest Agent in the VM": "Рекомендуется: установите QEMU Guest Agent в виртуальной машине", + "Recommended: run": "Рекомендуется выполнить", + "Recommended: schedule these paths for next boot to avoid immediate SSH disconnection.": "Рекомендуется: запланируйте применение изменений для этих путей при следующей загрузке, чтобы избежать немедленного разрыва соединения SSH.", + "Recommended: use GPU -> LXC mode for these devices.": "Рекомендуется: используйте режим GPU -> LXC для этих устройств.", + "Recommended: use GPU with LXC workloads instead of VM passthrough on this hardware.": "Рекомендуется: на этом оборудовании используйте GPU для рабочих нагрузок LXC вместо проброса в виртуальную машину.", + "Reconciled": "Согласовано", + "Recover OCI": "Восстановить OCI", + "Recover OCI stack": "Восстановить стек OCI", + "Recover now?": "Восстановить сейчас?", + "Recover or complete the operation?": "Восстановить или завершить операцию?", + "Recover restored OCI applications": "Восстановить работоспособность приложений OCI, восстановленных из резервной копии", + "Recover the keyfile using your recovery passphrase?": "Восстановить файл ключа с помощью вашей парольной фразы восстановления?", + "Recover the previous installation": "Восстановить предыдущую установку", + "Recover them now?": "Восстановить их сейчас?", + "Recoverable:": "Можно восстановить:", + "Recovering the previous installation": "Восстановление предыдущей установки", + "Recovery blob upload failed — main backup is OK, but keyfile recovery from PBS will not be available for this backup.": "Не удалось загрузить блок данных для восстановления — основная резервная копия в порядке, но восстановление файла ключа из PBS для этой резервной копии будет недоступно.", + "Recovery blob:": "Блок данных для восстановления:", + "Recovery completed. The container had not been modified yet.": "Восстановление завершено. Контейнер ещё не был изменён.", + "Recovery completed. The disks of the failed attempt were removed; the backup is kept.": "Восстановление завершено. Диски, созданные при неудачной попытке, удалены; резервная копия сохранена.", + "Recovery completed; the backup is kept.": "Восстановление завершено; резервная копия сохранена.", + "Recovery failed": "Не удалось выполнить восстановление", + "Recovery passphrase": "Парольная фраза для восстановления", + "Recovery setup failed": "Не удалось настроить восстановление", + "Recreate": "Пересоздать", + "Recreate OCI stack": "Пересоздать стек OCI", + "Recreate every container with its saved configuration": "Пересоздать каждый контейнер с его сохранённой конфигурацией", + "Recreate the whole stack?": "Пересоздать весь стек?", + "Recreated stack checked": "Пересозданный стек проверен", + "Recreated:": "Пересоздано:", + "Recreating": "Пересоздание", + "Recreating requires a confirmed proposal": "Для пересоздания требуется подтверждённый план", + "Recreating the container...": "Пересоздание контейнера...", + "Recreating the container:": "Пересоздание контейнера:", + "Recursive DNS resolver.": "Рекурсивный DNS-резолвер.", + "Recursive and authoritative DNS server.": "Рекурсивный и авторитативный DNS-сервер.", + "Redis locking is configured automatically. Existing Nextcloud configuration files are preserved.": "Блокировки Redis настраиваются автоматически. Существующие файлы конфигурации Nextcloud сохраняются.", + "Redmine": "Redmine", + "Refresh APT index and verify repositories:": "Обновить индекс APT и проверить репозитории:", + "Refresh catalog": "Обновить каталог", + "Refresh the configured APT repositories and review the PBS package upgrade? Repository files will be preserved.": "Обновить настроенные репозитории APT и проверить обновление пакетов PBS? Файлы репозиториев будут сохранены.", + "Refresh the index from the image sources": "Обновить индекс из источников образов", + "Refresh token of the connector, from the Twingate admin console": "Токен обновления коннектора из консоли администратора Twingate", + "Refresh your browser (Ctrl+Shift+R) to see changes": "Обновите страницу в браузере (Ctrl+Shift+R), чтобы увидеть изменения", + "Refresh your browser to see changes (server restart may be required)": "Обновите страницу в браузере, чтобы увидеть изменения (может потребоваться перезапуск сервера)", + "Refreshing apt cache...": "Обновление кэша apt...", + "Refreshing the NVIDIA runtime...": "Обновление среды выполнения NVIDIA...", + "Refreshing the application catalog...": "Обновление каталога приложений...", + "Refusing an unexpected rootfs path:": "Отказ от использования неожиданного пути rootfs:", + "Regenerate the catalog templates": "Повторно создать шаблоны каталога", + "Regenerate the template of one application": "Повторно создать шаблон одного приложения", + "Regenerating PVE package cache...": "Повторное создание кэша пакетов PVE...", + "Regenerating boot artifacts for the merged kernel-agnostic changes...": "Повторное создание загрузочных файлов для объединённых изменений, не зависящих от ядра...", + "Regenerating certificates and restarting services...": "Повторное создание сертификатов и перезапуск служб...", + "Register again the OCI applications restored from a backup": "Повторно зарегистрировать приложения OCI, восстановленные из резервной копии", + "Register mount path in Proxmox:": "Зарегистрировать путь монтирования в Proxmox:", + "Registering disk as Proxmox storage...": "Регистрация диска в качестве хранилища Proxmox...", + "Registering module with DKMS...": "Регистрация модуля в DKMS...", + "Registry accounts": "Учётные записи реестра", + "Registry hostname": "Имя хоста реестра", + "Registry: {registry}\nAccount: {account}\nAuthentication: {method}\n\nSaved credentials are verified when an image is accessed.": "Реестр: {registry}\nУчётная запись: {account}\nАутентификация: {method}\n\nСохранённые учётные данные проверяются при обращении к образу.", + "Reinstall / update Coral drivers": "Переустановить / обновить драйверы Coral", + "Reinstall Fail2Ban": "Переустановить Fail2Ban", + "Reinstall Lynis": "Переустановить Lynis", + "Reinstall and reconfigure Fail2Ban": "Переустановить и заново настроить Fail2Ban", + "Reinstall/Update NVIDIA drivers": "Переустановить/обновить драйверы NVIDIA", + "Reinstalled": "Переустановлено", + "Reinstalled Proxmox packages successfully": "Пакеты Proxmox успешно переустановлены", + "Reinstalling": "Переустановка", + "Reinstalling core Proxmox packages...": "Переустановка основных пакетов Proxmox...", + "Relational database server.": "Сервер реляционной базы данных.", + "Relative CPU priority (cpuunits)": "Относительный приоритет ЦП (cpuunits)", + "Release Channel": "Канал обновлений", + "Release channel set to Beta.": "Выбран канал обновлений Beta.", + "Release channel set to Stable.": "Выбран канал обновлений Stable.", + "Release channel:": "Канал обновлений:", + "Reload Proxmox firewall rules": "Перезагрузить правила межсетевого экрана Proxmox", + "Reload network configuration (ifupdown2)": "Перезагрузить конфигурацию сети (ifupdown2)", + "Remapped Users:": "Пользователи с переназначенными идентификаторами:", + "Remapped users:": "Пользователи с переназначенными идентификаторами:", + "Reminder: You must install the QEMU Guest Agent inside the Windows VM": "Напоминание: необходимо установить QEMU Guest Agent внутри виртуальной машины Windows", + "Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, SSH and EXEC are supported.": "Remmina — клиент удалённого рабочего стола, написанный с использованием GTK. Он предназначен для системных администраторов и тех, кто работает в поездках и кому нужен доступ к множеству удалённых компьютеров как с больших, так и с маленьких экранов. Remmina поддерживает несколько сетевых протоколов в едином интерфейсе. В настоящее время поддерживаются RDP, VNC, SPICE, SSH и EXEC.", + "Remote Access & VPN": "Удалённый доступ и VPN", + "Remote dry run completed; no container was created.": "Пробный запуск на удалённом сервере завершён; контейнер не был создан.", + "Remote repository path:": "Путь к удалённому репозиторию:", + "Remote server via SSH (recommended — off-host, dedup across machines)": "Удалённый сервер через SSH (рекомендуется — хранение вне текущего хоста, дедупликация данных с разных машин)", + "Remote verified:": "Удалённый ресурс проверен:", + "Remounting CIFS share with open permissions...": "Повторное монтирование общего ресурса CIFS с неограниченными правами доступа...", + "Removal command finished; review any warnings above.": "Команда удаления завершена; проверьте предупреждения выше.", + "Remove CIFS Mount": "Удалить подключение CIFS", + "Remove CIFS Mount (pvesm or fstab)": "Удалить подключение CIFS (pvesm или fstab)", + "Remove CIFS Storage": "Удалить хранилище CIFS", + "Remove CIFS fstab Mount": "Удалить подключение CIFS из fstab", + "Remove CIFS fstab mount:": "Удалить подключение CIFS из fstab:", + "Remove CIFS storage:": "Удалить хранилище CIFS:", + "Remove Disk Storage": "Удалить дисковое хранилище", + "Remove Disk from fstab": "Удалить диск из fstab", + "Remove FS labels — partitions and data preserved": "Удалить метки файловых систем — разделы и данные сохраняются", + "Remove FS labels — partitions and data preserved": "Удалить метки файловых систем — разделы и данные сохраняются", + "Remove Fail2Ban": "Удалить Fail2Ban", + "Remove GPU from LXC config (keep Start on boot)": "Удалить GPU из конфигурации LXC (сохранить настройку запуска при загрузке)", + "Remove GPU from LXC config + keep Start on boot unchanged": "Удалить GPU из конфигурации LXC + оставить настройку запуска при загрузке без изменений", + "Remove GPU from VM config (keep Start on boot)": "Удалить GPU из конфигурации ВМ (сохранить настройку запуска при загрузке)", + "Remove GPU from source VM config (keep Start on boot)": "Удалить GPU из конфигурации исходной ВМ (сохранить настройку запуска при загрузке)", + "Remove GPU from source VM config + keep Start on boot unchanged": "Удалить GPU из конфигурации исходной ВМ + оставить настройку запуска при загрузке без изменений", + "Remove LXC Mount Point": "Удалить точку монтирования LXC", + "Remove Lynis": "Удалить Lynis", + "Remove Mount Point": "Удалить точку монтирования", + "Remove Mount Point Confirmation:": "Подтверждение удаления точки монтирования:", + "Remove NFS Mount": "Удалить подключение NFS", + "Remove NFS Mount (pvesm or fstab)": "Удалить подключение NFS (pvesm или fstab)", + "Remove NFS Storage": "Удалить хранилище NFS", + "Remove NFS fstab Mount": "Удалить запись монтирования NFS из fstab", + "Remove NFS fstab mount:": "Удалить запись монтирования NFS из fstab:", + "Remove NFS storage:": "Удалить хранилище NFS:", + "Remove OCI": "Удалить OCI", + "Remove Proxmox CIFS storage:": "Удалить хранилище CIFS из Proxmox:", + "Remove Proxmox NFS storage:": "Удалить хранилище NFS из Proxmox:", + "Remove Proxmox iSCSI storage:": "Удалить хранилище iSCSI из Proxmox:", + "Remove Secure Gateway? State will be preserved.": "Удалить Secure Gateway? Состояние будет сохранено.", + "Remove a remote USB connection": "Удалить удалённое USB-подключение", + "Remove custom paths": "Удалить пользовательские пути", + "Remove disk references from affected VM(s)/CT(s) config": "Удалить ссылки на диски из конфигураций затронутых VM/CT", + "Remove every registered gasket DKMS version": "Удалить все зарегистрированные версии gasket в DKMS", + "Remove iSCSI Storage": "Удалить хранилище iSCSI", + "Remove iSCSI storage definition:": "Удалить определение хранилища iSCSI:", + "Remove invalid port": "Удалить недопустимый порт", + "Remove invalid port(s)": "Удалить недопустимые порты", + "Remove it? The data of its containers cannot be recovered afterwards.": "Удалить его? Данные его контейнеров потом невозможно будет восстановить.", + "Remove keyfile from this host": "Удалить файл ключа с этого узла", + "Remove mount point:": "Удалить точку монтирования:", + "Remove obsolete systemd-boot meta-package": "Удалить устаревший метапакет systemd-boot", + "Remove old repository files:": "Удалить старые файлы репозиториев:", + "Remove passthrough device from VM": "Удалить проброшенное устройство из ВМ", + "Remove saved credentials": "Удалить сохранённые учётные данные", + "Remove subscription banner": "Убрать баннер подписки", + "Remove the application? Its container disks are deleted, and only a backup can bring them back.": "Удалить приложение? Диски его контейнера будут удалены, и восстановить их можно будет только из резервной копии.", + "Remove the lock left on a VM by an interrupted task": "Снять блокировку ВМ, оставшуюся после прерванной задачи", + "Remove the lock left on a container by an interrupted task": "Снять блокировку контейнера, оставленную прерванной задачей", + "Remove the saved credentials for {registry}?\nRunning apps will keep working.": "Удалить сохранённые учётные данные для {registry}?\nЗапущенные приложения продолжат работать.", + "Remove the unprivileged flag from configuration:": "Удалить флаг unprivileged из конфигурации:", + "Remove this connection and detach its USB device?": "Удалить это подключение и отсоединить связанное с ним USB-устройство?", + "Remove unused packages and their config": "Удалить неиспользуемые пакеты и их конфигурацию", + "Remove: delete the application and its containers": "Удаление: удалить приложение и его контейнеры", + "Removed": "Удалено", + "Removed KVM MSR options from configuration": "Параметры KVM MSR удалены из конфигурации", + "Removed Mount:": "Монтирование удалено:", + "Removed bwlimit/ionice tuning (no .bak found)": "Настройки bwlimit/ionice удалены (файл .bak не найден)", + "Removed configurations for": "Удалены конфигурации для", + "Removed credentials file:": "Удалён файл учётных данных:", + "Removed empty KVM configuration file": "Удалён пустой файл конфигурации KVM", + "Removed empty mount directory:": "Удалён пустой каталог монтирования:", + "Removed entry from /etc/fstab": "Удалена запись из /etc/fstab", + "Removed from /etc/fstab": "Удалено из /etc/fstab", + "Removed from /etc/fstab.": "Удалено из /etc/fstab.", + "Removed idle=nomwait from /etc/kernel/cmdline (ZFS)": "Параметр idle=nomwait удалён из /etc/kernel/cmdline (ZFS)", + "Removed idle=nomwait from GRUB configuration": "Параметр idle=nomwait удалён из конфигурации GRUB", + "Removed remapped user:": "Удалён пользователь с переназначенным идентификатором:", + "Removed sharedfiles group.": "Группа sharedfiles удалена.", + "Removed:": "Удалено:", + "Removing APT IPv4 configuration...": "Удаление конфигурации IPv4 для APT...", + "Removing Coral packages...": "Удаление пакетов Coral...", + "Removing Fail2Ban...": "Удаление Fail2Ban...", + "Removing GPU from VM": "Удаление GPU из виртуальной машины", + "Removing Lynis...": "Удаление Lynis...", + "Removing NVIDIA DKMS entries...": "Удаление записей NVIDIA DKMS...", + "Removing NVIDIA packages...": "Удаление пакетов NVIDIA...", + "Removing OVH RTM...": "Удаление OVH RTM...", + "Removing OpenVSwitch...": "Удаление OpenVSwitch...", + "Removing ProxMenux persistent NIC .link files...": "Удаление файлов .link ProxMenux для постоянного именования сетевых интерфейсов...", + "Removing VFIO ownership for selected GPU(s)...": "Отмена привязки выбранных GPU к VFIO...", + "Removing any pre-existing gasket-dkms package...": "Удаление ранее установленного пакета gasket-dkms, если он существует...", + "Removing conflicting utilities...": "Удаление конфликтующих утилит...", + "Removing entropy generation optimization...": "Удаление оптимизации генерации энтропии...", + "Removing every registered gasket DKMS version...": "Удаление всех зарегистрированных версий gasket в DKMS...", + "Removing filesystem signatures...": "Удаление сигнатур файловых систем...", + "Removing from /etc/fstab...": "Удаление из /etc/fstab...", + "Removing gasket DKMS modules...": "Удаление модулей gasket DKMS...", + "Removing gateway...": "Удаление шлюза...", + "Removing guest agent...": "Удаление гостевого агента...", + "Removing invalid configurations...": "Удаление некорректных конфигураций...", + "Removing invalid existing file...": "Удаление существующего некорректного файла...", + "Removing kernel panic configuration...": "Удаление настроек паники ядра...", + "Removing memory optimizations...": "Удаление оптимизаций памяти...", + "Removing mount point": "Удаление точки монтирования", + "Removing network optimizations...": "Удаление сетевых оптимизаций...", + "Removing no longer required packages and purging old cached updates...": "Удаление пакетов, которые больше не нужны, и очистка кэша от старых обновлений...", + "Removing partial VM": "Удаление частично созданной ВМ", + "Removing previous DKMS source tree...": "Удаление предыдущего дерева исходного кода DKMS...", + "Removing previous Lynis installation...": "Удаление предыдущей установки Lynis...", + "Removing remapped users...": "Удаление пользователей с переназначенными идентификаторами...", + "Removing stale VFIO entries from vfio.conf...": "Удаление устаревших записей VFIO из vfio.conf...", + "Removing storage from Proxmox...": "Удаление хранилища из Proxmox...", + "Removing system limits optimizations...": "Удаление настроек оптимизации системных лимитов...", + "Removing the containers...": "Удаление контейнеров...", + "Removing the incomplete stack...": "Удаление неполного стека...", + "Removing the previous container": "Удаление предыдущего контейнера", + "Removing this path deletes its container volume and the data in it:": "Удаление этого пути приведёт к удалению соответствующего тома контейнера и содержащихся в нём данных:", + "Removing utilities installed by ProxMenux...": "Удаление утилит, установленных ProxMenux...", + "Removing zfs-auto-snapshot...": "Удаление zfs-auto-snapshot...", + "Renamed": "Переименовано", + "Renamed NIC:": "Переименованный сетевой интерфейс:", + "Repair Complete": "Исправление завершено", + "Repair Options:": "Варианты исправления:", + "Repairs and optimizes repositories": "Исправляет и оптимизирует репозитории", + "Repeat to confirm": "Повторите для подтверждения", + "Replace": "Заменить", + "Replace with the actual ID.": "Замените фактическим идентификатором.", + "Replace with your actual container ID": "Замените фактическим идентификатором вашего контейнера", + "Replace with the value from step 4": "Замените значением из шага 4", + "Replace invalid port(s)": "Заменить недопустимые порты", + "Replace it?": "Заменить?", + "Replace paths with your actual values from step 5": "Замените пути фактическими значениями из шага 5", + "Replace with your actual path from step 5": "Замените фактическим путём из шага 5", + "Replacing gzip with pigz wrapper...": "Замена gzip обёрткой для pigz...", + "Repositories switched to no-subscription": "Репозитории переключены на no-subscription", + "Repository check failed. NVIDIA installation stopped.": "Не удалось проверить репозитории. Установка NVIDIA остановлена.", + "Repository check failed. Update stopped.": "Не удалось проверить репозитории. Обновление остановлено.", + "Repository encryption password": "Пароль шифрования репозитория", + "Repository helper unavailable. NVIDIA installation stopped.": "Вспомогательный компонент для работы с репозиториями недоступен. Установка NVIDIA остановлена.", + "Repository policy returned an unexpected result.": "Политика репозиториев вернула неожиданный результат.", + "Repository ready.": "Репозиторий готов.", + "Repository sources changed, but APT package-list refresh failed. Operation stopped; sources were not rolled back. Inspect Administration > Repositories and retry apt-get update before continuing.": "Источники репозиториев изменены, но обновить списки пакетов APT не удалось. Операция остановлена; изменения источников не отменены. Проверьте раздел «Администрирование > Репозитории» и повторите команду apt-get update, прежде чем продолжить.", + "Repository sources changed, but APT package-list refresh failed. Operation stopped; sources were not rolled back. Inspect Node > Updates > Repositories and retry apt-get update before continuing.": "Источники репозиториев изменены, но обновить списки пакетов APT не удалось. Операция остановлена; изменения источников не отменены. Проверьте раздел «Узел > Обновления > Репозитории» и повторите команду apt-get update, прежде чем продолжить.", + "Repository switch declined; no APT source changed.": "Переключение репозиториев отклонено; ни один источник APT не изменён.", + "Repository:": "Репозиторий:", + "Request a staging certificate for testing: true or false": "Запросить сертификат тестовой среды для проверки: true или false", + "Require reboot": "Требуется перезагрузка", + "Required command not found:": "Не найдена необходимая команда:", + "Required if using a VirtIO or SCSI disk.": "Требуется при использовании диска VirtIO или SCSI.", + "Required install helpers not available.": "Необходимые вспомогательные компоненты установки недоступны.", + "Required new path cancelled": "Ввод обязательного нового пути отменён", + "Required persistent paths cannot be removed": "Нельзя удалить обязательные постоянные пути", + "Required update helpers unavailable. Update stopped.": "Необходимые вспомогательные компоненты обновления недоступны. Обновление остановлено.", + "Requires acl package. Skip if setfacl is not available.": "Требуется пакет acl. Пропустите, если setfacl недоступна.", + "Requires authentication": "Требуется аутентификация", + "Reserving a private network...": "Резервирование частной сети...", + "Reset Capability Blocked": "Возможность сброса заблокирована", + "Reset Capability Warning": "Предупреждение о возможности сброса", + "Reset Monitor Password": "Сбросить пароль Monitor", + "Reset ProxMenux Monitor Password": "Сбросить пароль ProxMenux Monitor", + "Reset current storage selection": "Сбросить текущий выбор хранилища", + "Resetting time synchronization...": "Сброс синхронизации времени...", + "Residual Bookworm entries commented where applicable": "Оставшиеся записи Bookworm закомментированы там, где это применимо", + "Resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.": "Resilio-sync (ранее BitTorrent Sync) использует протокол BitTorrent для синхронизации файлов и папок между всеми вашими устройствами. Существуют бесплатная и платная версии; этот контейнер поддерживает обе. Существует официальный образ sync, но мы создали этот образ, поскольку он поддерживает сопоставление пользователей, упрощающее настройку прав доступа к томам.", + "Resolve catalog icons against the jsdelivr icon sets": "Найти значки каталога в наборах значков jsdelivr", + "Resolve package conflicts": "Разрешить конфликты пакетов", + "Resources": "Ресурсы", + "Restart Network": "Перезапустить сеть", + "Restart Network Service": "Перезапустить сетевую службу", + "Restart Web UI proxy": "Перезапустить прокси веб-интерфейса", + "Restart aMule automatically on a schedule (true or false)": "Автоматически перезапускать aMule по расписанию (true или false)", + "Restart and enable Samba:": "Перезапустите Samba и включите её автозапуск:", + "Restart container to activate mount?": "Перезапустить контейнер, чтобы активировать монтирование?", + "Restarting ProxMenux Monitor service...": "Перезапуск службы ProxMenux Monitor...", + "Restarting Proxmox services...": "Перезапуск служб Proxmox...", + "Restarting container...": "Перезапуск контейнера...", + "Restarting gateway...": "Перезапуск шлюза...", + "Restarting network service...": "Перезапуск сетевой службы...", + "Restarting the server...": "Перезапуск сервера...", + "Restore Backup": "Восстановление из резервной копии", + "Restore Network Backup": "Восстановление сети из резервной копии", + "Restore a CT from backup": "Восстановить контейнер из резервной копии", + "Restore a VM from backup": "Восстановить виртуальную машину из резервной копии", + "Restore actions": "Действия по восстановлению", + "Restore applied:": "Восстановление выполнено:", + "Restore can now proceed.": "Теперь можно продолжить восстановление.", + "Restore failed": "Не удалось выполнить восстановление", + "Restore from Borg → staging": "Восстановление из Borg → промежуточный каталог", + "Restore from Borg repository": "Восстановление из репозитория Borg", + "Restore from PBS → staging": "Восстановление из PBS → промежуточный каталог", + "Restore from Proxmox Backup Server (PBS)": "Восстановление из Proxmox Backup Server (PBS)", + "Restore from local archive (.tar.gz / .tar.zst)": "Восстановление из локального архива (.tar.gz / .tar.zst)", + "Restore from local archive → staging": "Восстановление из локального архива → промежуточный каталог", + "Restore host configuration": "Восстановить конфигурацию хоста", + "Restore it ONLY if the target host has the same pools and disks as the source. Otherwise Proxmox may try to import non-existent pools at next boot.": "Восстанавливайте это ТОЛЬКО в том случае, если на целевом хосте те же пулы и диски, что и на исходном. Иначе при следующей загрузке Proxmox может попытаться импортировать несуществующие пулы.", + "Restore plan": "План восстановления", + "Restore plan summary": "Сводка плана восстановления", + "Restore source location": "Расположение источника восстановления", + "Restored OCI applications": "Восстановленные приложения OCI", + "Restored config is on disk; reboot the host to apply.": "Восстановленная конфигурация сохранена на диске; перезагрузите хост, чтобы применить её.", + "Restored installation checked": "Восстановленная установка проверена", + "Restored original /bin/gzip": "Исходный файл /bin/gzip восстановлен", + "Restored original /etc/vzdump.conf from .bak": "Исходный файл /etc/vzdump.conf восстановлен из .bak", + "Restored:": "Восстановлено:", + "Restoring": "Восстановление", + "Restoring APT language downloads...": "Восстановление загрузки языковых файлов APT...", + "Restoring container memory to": "Восстановление объёма памяти контейнера до", + "Restoring default journald configuration...": "Восстановление конфигурации journald по умолчанию...", + "Restoring guest configs (LXC + QEMU)...": "Восстановление конфигураций гостевых систем (LXC + QEMU)...", + "Restoring original bashrc...": "Восстановление исходного bashrc...", + "Restoring original logrotate configuration...": "Восстановление исходной конфигурации logrotate...", + "Restoring subscription banner...": "Восстановление баннера подписки...", + "Restoring the backup": "Восстановление из резервной копии", + "Restoring the original rpcbind service state...": "Восстановление исходного состояния службы rpcbind...", + "Restoring the previous Rclone configuration...": "Восстановление предыдущей конфигурации Rclone...", + "Restoring the previous backup...": "Восстановление из предыдущей резервной копии...", + "Restoring the previous state of the stack...": "Восстановление предыдущего состояния стека...", + "Restoring the stack records...": "Восстановление записей стека...", + "Results will be saved automatically to:": "Результаты будут автоматически сохранены в:", + "Results will be saved to:": "Результаты будут сохранены в:", + "Results:": "Результаты:", + "Retention": "Хранение", + "Retention policy (prune-backups syntax).": "Политика хранения (синтаксис prune-backups).", + "Retrieving the URL for the %s loader": "Получение URL загрузчика %s", + "RetroArch is a frontend for emulators, game engines and media players. It enables you to run classic games on a wide range of computers and consoles through its slick graphical interface.": "RetroArch — это графическая оболочка для эмуляторов, игровых движков и медиаплееров. Она позволяет запускать классические игры на самых разных компьютерах и консолях с помощью удобного графического интерфейса.", + "Return": "Назад", + "Return to Main Menu": "Вернуться в главное меню", + "Return to Share Menu": "Вернуться в меню общих ресурсов", + "Return to main menu": "Вернуться в главное меню", + "Returning the containers to their previous state...": "Возврат контейнеров в предыдущее состояние...", + "Reused the encryption key from the PVE storage entry.": "Повторно использован ключ шифрования из записи хранилища PVE.", + "Reverse proxy samples for other applications are in /config/nginx/proxy_confs inside the container.": "Примеры конфигурации обратного прокси для других приложений находятся в /config/nginx/proxy_confs внутри контейнера.", + "Reverting AMD (Ryzen/EPYC) fixes...": "Отмена исправлений для AMD (Ryzen/EPYC)...", + "Reverting IOMMU/VFIO configuration...": "Отмена настройки IOMMU/VFIO...", + "Reverting TCP BBR + Fast Open...": "Отмена настройки TCP BBR + Fast Open...", + "Reverting ZFS ARC tuning...": "Отмена оптимизации ARC ZFS...", + "Reverting pigz wrapper...": "Отмена использования обёртки pigz...", + "Reverting vzdump speed tuning...": "Отмена оптимизации скорости vzdump...", + "Review and apply": "Проверить и применить", + "Review and update these applications?": "Проверить и обновить эти приложения?", + "Review external OCI changes": "Проверить внешние изменения OCI", + "Review package upgrade": "Проверить обновление пакетов", + "Review passthrough config files": "Проверить файлы конфигурации проброса устройств", + "Review what will be removed": "Проверить, что будет удалено", + "Rip DVD and Blu-ray media from a browser": "Копировать содержимое дисков DVD и Blu-ray через браузер", + "Rollback: nothing to remove (host matches backup)": "Откат: удалять нечего (состояние хоста соответствует резервной копии)", + "Rolling back the incomplete container": "Откат незавершённого создания контейнера", + "RomM is a self-hosted ROM manager for managing and playing game collections.": "RomM — менеджер образов ROM, размещаемый на собственном сервере, для управления коллекциями игр и их запуска.", + "Root SSH keys/config": "Ключи и конфигурация SSH пользователя root", + "Root inside container = root on host system": "root внутри контейнера = root на хост-системе", + "Root privileges are required": "Требуются права root", + "Root privileges on the Proxmox node are required": "Требуются права root на узле Proxmox", + "Root shell/profile config": "Настройка оболочки/профиля root", + "Root user on the PVE host (default 'root'):": "Пользователь с правами root на хосте PVE (по умолчанию 'root'):", + "Rootfs size in GB": "Размер корневой файловой системы в ГБ", + "Rotate and write /var/log to disk when it passes 85% of its size?": "Выполнять ротацию /var/log и записывать данные на диск, когда заполнение превысит 85% выделенного объёма?", + "Rotate the recovery passphrase": "Сменить парольную фразу восстановления", + "Routing Information": "Информация о маршрутизации", + "Routing Table": "Таблица маршрутизации", + "Rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.": "Rsnapshot — утилита для создания снимков файловой системы на основе rsync. rsnapshot позволяет легко создавать периодические снимки локальных машин и удалённых машин через ssh. Код по возможности активно использует жёсткие ссылки, что значительно сокращает необходимое дисковое пространство.", + "Run 'Mount NFS Share' to install NFS client automatically.": "Выберите «Подключить общий ресурс NFS», чтобы автоматически установить клиент NFS.", + "Run 'Mount Samba Share' to install CIFS client automatically.": "Выберите «Подключить общий ресурс Samba», чтобы автоматически установить клиент CIFS.", + "Run GGUF LLMs locally with GPU acceleration": "Запускайте языковые модели в формате GGUF локально с ускорением на GPU", + "Run Now": "Запустить сейчас", + "Run PVE 8 to 9": "Запустить PVE 8 to 9", + "Run PVE 8 to 9 check": "Выполнить проверку перехода с PVE 8 на 9", + "Run \\\"Install NVIDIA Drivers on Host\\\" first so the installer is cached.": "Сначала выберите \\\"Установить драйверы NVIDIA на хосте\\\", чтобы установщик сохранился в кэше.", + "Run a full security audit": "Выполнить полный аудит безопасности", + "Run a job now": "Запустить задание сейчас", + "Run a self-hosted audio streaming server.": "Запустите сервер потокового аудио на собственной инфраструктуре.", + "Run apt-get install -f to complete any pending package configurations": "Выполните apt-get install -f, чтобы завершить все незавершённые настройки пакетов", + "Run as root on the Proxmox node; the registry contains private data": "Запускайте от имени root на узле Proxmox; реестр содержит конфиденциальные данные", + "Run as server or client? [s/c]:": "Запустить как сервер или клиент? [s/c]:", + "Run checklist again to verify upgrade:": "Повторно выполните проверку по контрольному списку, чтобы проверить обновление:", + "Run from console, or SSH inside tmux/screen": "Запускайте из консоли или через SSH в сеансе tmux/screen", + "Run job": "Запустить задание", + "Run job now": "Запустить задание сейчас", + "Run mode selected: Automatic": "Выбран режим запуска: автоматический", + "Run mode selected: Automatic/Unattended": "Выбран режим запуска: автоматический / без участия пользователя", + "Run mode selected: Interactive": "Выбран режим запуска: интерактивный", + "Run mode: Unattended": "Режим запуска: без участия пользователя", + "Run now": "Запустить сейчас", + "Run security audit now": "Запустить аудит безопасности сейчас", + "Run the client inside the Linux VM that needs the USB device. Install usbip, openssh-client and kmod, then copy usbip_manager.py to the same path as on the server. Configure key authentication and verify the server host key before adding a connection. The client uses the guest kernel and can reconnect after migration while the physical USB device stays on the server. Unprivileged LXC and Home Assistant OS need their own kernel/device or add-on setup. A physical device supports one attached client at a time.": "Запустите клиент внутри виртуальной машины Linux, которой требуется USB-устройство. Установите usbip, openssh-client и kmod, затем скопируйте usbip_manager.py по тому же пути, что и на сервере. Настройте аутентификацию по ключу и проверьте ключ хоста сервера перед добавлением подключения. Клиент использует ядро гостевой системы и может повторно подключиться после миграции, при этом физическое USB-устройство остаётся на сервере. Для непривилегированных контейнеров LXC и Home Assistant OS требуется отдельная настройка ядра и устройств либо дополнений. К физическому устройству одновременно может быть подключён только один клиент.", + "Run the following inside the VM:": "Выполните следующие команды внутри виртуальной машины:", + "Run the release-channel switch from an SSH session or the Proxmox host console with:": "Выполните переключение канала выпусков из сеанса SSH или консоли хоста Proxmox с помощью команды:", + "Run the update from an SSH session or the Proxmox host console with:": "Запустите обновление из сеанса SSH или консоли хоста Proxmox с помощью команды:", + "Run this menu as root.": "Запустите это меню от имени root.", + "Run this operation as root.": "Выполните эту операцию от имени root.", + "Run upgrade checklist script:": "Запустите скрипт проверки готовности к обновлению:", + "Running": "Выполняется", + "Running Lynis security audit...": "Выполняется аудит безопасности Lynis...", + "Running NVIDIA installer in container. This may take several minutes...": "В контейнере выполняется программа установки NVIDIA. Это может занять несколько минут...", + "Running NVIDIA uninstaller...": "Выполняется программа удаления NVIDIA...", + "Running VM detected": "Обнаружена работающая виртуальная машина", + "Running backup job:": "Выполняется задание резервного копирования:", + "Running cleanup": "Выполняется очистка", + "Running containers detected": "Обнаружены работающие контейнеры", + "Running dkms autoinstall for kernel": "Выполняется dkms autoinstall для ядра", + "Running kernel:": "Текущее ядро:", + "Running pre-upgrade simulation to verify 'proxmox-ve' will remain installed...": "Выполняется имитация обновления, чтобы убедиться, что пакет 'proxmox-ve' останется установленным...", + "RustDesk is a full-featured open source remote control alternative for self-hosting and security with minimal configuration.": "RustDesk — полнофункциональное альтернативное решение с открытым исходным кодом для удалённого управления, самостоятельного размещения и обеспечения безопасности с минимальной настройкой.", + "RustFS Console": "Консоль RustFS", + "RustFS Console and S3 root credentials": "Учётные данные root для консоли RustFS и S3", + "S3 API": "S3 API", + "SATA (standard - high compatibility)": "SATA (стандартный вариант — высокая совместимость)", + "SCSI (recommended for Linux and Windows)": "SCSI (рекомендуется для Linux и Windows)", + "SCSI (recommended for Linux)": "SCSI (рекомендуется для Linux)", + "SECURITY CONSIDERATIONS:": "СООБРАЖЕНИЯ БЕЗОПАСНОСТИ:", + "SECURITY WARNING:": "ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ:", + "SELECT CUSTOM IMAGE": "ВЫБРАТЬ ПОЛЬЗОВАТЕЛЬСКИЙ ОБРАЗ", + "SELECT LOADER": "ВЫБРАТЬ ЗАГРУЗЧИК", + "SELinux volume labels are not applied on this Proxmox host.": "На этом хосте Proxmox метки SELinux для томов не применяются.", + "SELinux volume labels cannot be ignored while SELinux is enforcing.": "Метки SELinux для томов нельзя игнорировать, пока SELinux работает в принудительном режиме.", + "SETTINGS": "SETTINGS", + "SFTPGo": "SFTPGo", + "SMART Action": "Действие SMART", + "SMART Disk Health & Test": "Состояние и проверка диска по SMART", + "SMART health status: PASSED": "Состояние по SMART: ПРОВЕРКА ПРОЙДЕНА", + "SMB Client Error": "Ошибка клиента SMB", + "SMB Client Tools: AVAILABLE": "Клиентские инструменты SMB: ДОСТУПНЫ", + "SMB Client Tools: NOT AVAILABLE": "Клиентские инструменты SMB: НЕДОСТУПНЫ", + "SMB Error": "Ошибка SMB", + "SMB port 445:": "Порт 445 SMB:", + "SMB ports:": "Порты SMB:", + "SMB, NFS and Time Machine shares from a web panel": "Общие ресурсы SMB, NFS и Time Machine через веб-панель", + "SOCKS5 proxy: configure your application with the LXC IP address shown above and port 9050.": "Прокси SOCKS5: укажите в настройках приложения показанный выше IP-адрес LXC и порт 9050.", + "SQLPage": "SQLPage", + "SR-IOV Configuration Detected": "Обнаружена конфигурация SR-IOV", + "SSD Emulation": "Эмуляция SSD", + "SSH access": "Доступ по SSH", + "SSH access (host + root)": "Доступ по SSH (хост + root)", + "SSH auth logger service created and started": "Служба журналирования аутентификации SSH создана и запущена", + "SSH hardening: MaxAuthTries set to 3 (Lynis recommendation)": "Усиление защиты SSH: для MaxAuthTries установлено значение 3 (рекомендация Lynis)", + "SSH host or IP:": "Имя хоста или IP-адрес для SSH:", + "SSH key strategy": "Стратегия использования ключей SSH", + "SSH login failed": "Не удалось войти по SSH", + "SSH network risk": "Сетевой риск SSH", + "SSH password auth refused on server": "Сервер отклонил аутентификацию по паролю для SSH", + "SSH port (default 22):": "Порт SSH (по умолчанию 22):", + "SSH protection (aggressive mode)": "Защита SSH (агрессивный режим)", + "STEP 6: Choose commands based on your storage type": "ШАГ 6: Выберите команды в зависимости от типа хранилища", + "STEP 9: Cleanup (LVM only)": "ШАГ 9: Очистка (только для LVM)", + "STORAGE PLAN": "ПЛАН ХРАНЕНИЯ", + "STORAGE TYPE IDENTIFICATION:": "ОПРЕДЕЛЕНИЕ ТИПА ХРАНИЛИЩА:", + "SUGGESTION FOR": "РЕКОМЕНДАЦИЯ ДЛЯ", + "SWAG serves HTTPS on port 443. Plain HTTP on port 80 is disabled in /config/nginx/site-confs/default.conf.": "SWAG обслуживает HTTPS на порту 443. Обычный HTTP на порту 80 отключён в /config/nginx/site-confs/default.conf.", + "Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.": "Sabnzbd делает работу с Usenet максимально простой и удобной, автоматизируя всё, что возможно. Вам достаточно добавить файл .nzb. Дальше SABnzbd всё сделает сам: автоматически загрузит данные, проверит их, исправит ошибки, распакует и разместит файлы в нужном месте без участия пользователя.", + "Safe design: no automatic ACL/ownership mutation on host or CT.": "Безопасность заложена в архитектуру: ACL и владельцы объектов на хосте или в CT автоматически не изменяются.", + "Safe to apply now": "Можно безопасно применить сейчас", + "Safety Backup": "Страховочная резервная копия", + "Safety backup created": "Страховочная резервная копия создана", + "Safety check failed: selected disk is now used by host/system.": "Проверка безопасности не пройдена: выбранный диск теперь используется хостом или системой.", + "Safety check failed: selected disk is referenced by a VM/LXC config.": "Проверка безопасности не пройдена: выбранный диск указан в конфигурации виртуальной машины или LXC.", + "Samba Client Manager - CT": "Управление клиентом Samba — CT", + "Samba Client in LXC (Privileged)": "Клиент Samba в LXC (привилегированный контейнер)", + "Samba Client in LXC (privileged)": "Клиент Samba в LXC (привилегированный контейнер)", + "Samba Credentials": "Учётные данные Samba", + "Samba Host Manager - Proxmox Host": "Управление Samba на хосте — хост Proxmox", + "Samba LXC Manager": "Управление Samba в LXC", + "Samba Manager - CT": "Управление Samba — CT", + "Samba Not Installed": "Samba не установлена", + "Samba Password": "Пароль Samba", + "Samba Server": "Сервер Samba", + "Samba Server Selection": "Выбор сервера Samba", + "Samba Server in LXC (Privileged)": "Сервер Samba в LXC (привилегированный контейнер)", + "Samba Server in LXC (privileged)": "Сервер Samba в LXC (привилегированный контейнер)", + "Samba Server: INSTALLED": "Сервер Samba: УСТАНОВЛЕН", + "Samba Server: NOT INSTALLED": "Сервер Samba: НЕ УСТАНОВЛЕН", + "Samba Service Status in CT": "Состояние службы Samba в CT", + "Samba Service: RUNNING": "Служба Samba: РАБОТАЕТ", + "Samba Service: STOPPED": "Служба Samba: ОСТАНОВЛЕНА", + "Samba User": "Пользователь Samba", + "Samba Username": "Имя пользователя Samba", + "Samba access setup did not complete.": "Настройка доступа к Samba не завершена.", + "Samba client tools installed": "Клиентские инструменты Samba установлены", + "Samba configuration backed up.": "Создана резервная копия конфигурации Samba.", + "Samba group kept (has users assigned).": "Группа Samba сохранена (в ней есть пользователи).", + "Samba group removed.": "Группа Samba удалена.", + "Samba packages removed.": "Пакеты Samba удалены.", + "Samba server has been completely uninstalled!": "Сервер Samba полностью удалён!", + "Samba server installed successfully.": "Сервер Samba успешно установлен.", + "Samba server is already installed.": "Сервер Samba уже установлен.", + "Samba server is not installed in this CT.": "Сервер Samba не установлен в этом CT.", + "Samba server is running": "Сервер Samba работает", + "Samba servers detected": "Обнаружены серверы Samba", + "Samba services stopped and disabled.": "Службы Samba остановлены и отключены.", + "Samba share": "Общий ресурс Samba", + "Samba share created successfully!": "Общий ресурс Samba успешно создан!", + "Samba share mounted successfully!": "Общий ресурс Samba успешно смонтирован!", + "Samba share unmount successfully. Reboot LXC required to take effect.": "Общий ресурс Samba успешно размонтирован. Для вступления изменений в силу требуется перезагрузка LXC.", + "Samba users removed.": "Пользователи Samba удалены.", + "Samba users:": "Пользователи Samba:", + "Samba/CIFS Client Status in CT": "Состояние клиента Samba/CIFS в CT", + "Samba/CIFS client installed successfully.": "Клиент Samba/CIFS успешно установлен.", + "Samba/CIFS mounts in CT": "Точки монтирования Samba/CIFS в CT", + "Samba/NFS clients will likely receive 'permission denied'. Review the steps above.": "Клиенты Samba/NFS, скорее всего, получат сообщение «Отказано в доступе». Проверьте описанные выше шаги.", + "Same Version Detected": "Обнаружена та же версия", + "Same host:": "Тот же хост:", + "Same major series:": "Та же основная серия версий:", + "Same major.minor:": "Та же основная и дополнительная версии:", + "Sanitizing NVIDIA host services for VFIO mode...": "Подготовка служб NVIDIA на хосте к режиму VFIO...", + "Save and classify articles. Read them later. Freely.": "Сохраняйте и систематизируйте статьи. Читайте их позже. Без ограничений.", + "Save and organize images, videos and web pages on visual boards.": "Сохраняйте и упорядочивайте изображения, видео и веб-страницы на визуальных досках.", + "Save the passphrase somewhere safe NOW, before continuing.": "Сохраните парольную фразу в безопасном месте ПРЯМО СЕЙЧАС, прежде чем продолжить.", + "Save this Borg target so you don't need to enter the details again?": "Сохранить это назначение Borg, чтобы не вводить данные повторно?", + "Saved credentials for {registry} were removed.\nOther Skopeo/Docker credential files are managed separately.": "Сохранённые учётные данные для {registry} удалены.\nУправление другими файлами учётных данных Skopeo/Docker осуществляется отдельно.", + "Saved record removed": "Сохранённая запись удалена", + "Saving changes...": "Сохранение изменений...", + "Saving the new configuration": "Сохранение новой конфигурации", + "Saving the new configuration of the application...": "Сохранение новой конфигурации приложения...", + "Saving the new configuration...": "Сохранение новой конфигурации...", + "Saving the record of the application...": "Сохранение записи приложения...", + "Saving the stack records...": "Сохранение записей стека...", + "Scalable XMPP messaging server.": "Масштабируемый сервер обмена сообщениями по протоколу XMPP.", + "Scan storage for new content": "Сканировать хранилище на наличие нового содержимого", + "Scanning available physical disks...": "Сканирование доступных физических дисков...", + "Scanning network for NFS servers...": "Поиск серверов NFS в сети...", + "Scanning network for Samba servers...": "Поиск серверов Samba в сети...", + "Schedule": "Расписание", + "Schedule of the automatic restart, in cron format (for example 0 6 * * * for every day at 6:00)": "Расписание автоматического перезапуска в формате cron (например, 0 6 * * * — ежедневно в 6:00)", + "Schedule of the tests in cron format": "Расписание тестов в формате cron", + "Schedule:": "Расписание:", + "Scheduled backup job created": "Задание резервного копирования по расписанию создано", + "Scheduled backup jobs": "Задания резервного копирования по расписанию", + "Scheduled backups and retention policies": "Резервное копирование по расписанию и политики хранения", + "Scheduled run: no questions; stops where a person has to decide": "Запуск по расписанию: без вопросов; выполнение останавливается, если требуется решение человека", + "Scheduled tasks (cron)": "Задания по расписанию (cron)", + "Scheduler script not found:": "Скрипт планировщика не найден:", + "ScreenScraper": "ScreenScraper", + "ScreenScraper password": "Пароль ScreenScraper", + "ScreenScraper username": "Имя пользователя ScreenScraper", + "Script Information": "Информация о скрипте", + "Script not found:": "Скрипт не найден:", + "Scripts in": "Скрипты в", + "Scrypted Web UI": "Веб-интерфейс Scrypted", + "ScummVM is a program which allows you to run certain classic graphical adventure and role-playing games, provided you already have their data files. The clever part about this: ScummVM just replaces the executables shipped with the games, allowing you to play them on systems for which they were never designed! ScummVM is a complete rewrite of these games' executables and is not an emulator.": "ScummVM — это программа, позволяющая запускать некоторые классические графические приключенческие и ролевые игры при условии, что у вас уже есть файлы данных этих игр. Особенность в том, что ScummVM просто заменяет исполняемые файлы, поставляемые с играми, позволяя играть в них на системах, для которых они никогда не предназначались! ScummVM представляет собой полностью переписанную реализацию исполняемых файлов этих игр и не является эмулятором.", + "SeaBIOS (Legacy)": "SeaBIOS (устаревший режим)", + "Sealskin is a self-hosted, client-server platform that enables users to run powerful, containerized desktop applications streamed directly to a web browser. It uses a browser extension to intercept user actions—such as clicking a link or downloading a file and redirects them to a secure, isolated application environment running on a remote server.": "Sealskin — это клиент-серверная платформа для размещения на собственном сервере, позволяющая запускать мощные настольные приложения в контейнерах с потоковой передачей изображения непосредственно в веб-браузер. Она использует расширение браузера для перехвата действий пользователя, таких как переход по ссылке или скачивание файла, и перенаправляет их в безопасную изолированную среду приложений, работающую на удалённом сервере.", + "Search": "Поиск", + "Search Results for:": "Результаты поиска по запросу:", + "Search and share files over the Soulseek network.": "Поиск файлов и обмен ими в сети Soulseek.", + "Search applications": "Поиск приложений", + "Search options and applications": "Поиск параметров и приложений", + "Search results for:": "Результаты поиска по запросу:", + "Search/Filter Scripts": "Поиск и фильтрация скриптов", + "Searchable document archive with OCR": "Архив документов с OCR и возможностью поиска", + "Secondary upstream DNS server": "Вторичный вышестоящий DNS-сервер", + "Secure Boot Enabled": "Secure Boot включён", + "Secure Boot is enabled on this host.": "На этом хосте включён Secure Boot.", + "Secure Disk Formatter": "Безопасное форматирование дисков", + "Secure Gateway (Tailscale VPN)": "Secure Gateway (Tailscale VPN)", + "Secure Gateway deployed successfully!": "Secure Gateway успешно развёрнут!", + "Secure Gateway is already installed.": "Secure Gateway уже установлен.", + "Security": "Безопасность", + "Security Updates": "Обновления безопасности", + "Security Warning — read before applying": "Предупреждение о безопасности — прочитайте перед применением", + "Security directive outside the dynamic profile": "Директива безопасности вне динамического профиля", + "Security relaxation declined": "Ослабление мер безопасности отклонено", + "See": "См.", + "See /tmp/proxmenux-mount.log for details.": "Подробности см. в /tmp/proxmenux-mount.log.", + "Seerr WebUI": "Seerr WebUI", + "Seerr/Bazarr connections, the SABnzbd client and the Lidarr profiles, root folder and client are configured manually in this version.": "В этой версии подключения Seerr/Bazarr, клиент SABnzbd, а также профили, корневая папка и клиент Lidarr настраиваются вручную.", + "Select": "Выберите", + "Select Borg target": "Выберите целевое расположение Borg", + "Select CPU model": "Выберите модель процессора", + "Select CT": "Выберите контейнер", + "Select CT for destination disk": "Выберите контейнер для целевого диска", + "Select Disk": "Выберите диск", + "Select Disk Images": "Выберите образы дисков", + "Select Disk Interface": "Выберите интерфейс диска", + "Select Disks": "Выберите диски", + "Select Existing Folder": "Выберите существующую папку", + "Select Filesystem": "Выберите файловую систему", + "Select Folder": "Выберите папку", + "Select GPU for VM Passthrough": "Выберите GPU для проброса в виртуальную машину", + "Select GPU(s)": "Выберите один или несколько GPU", + "Select Guests": "Выберите гостевые системы", + "Select Host Directory": "Выберите каталог на хосте", + "Select Host Folder": "Выберите папку на хосте", + "Select LXC Container": "Выберите контейнер LXC", + "Select Mount Point": "Выберите точку монтирования", + "Select Mount Point to Remove": "Выберите точку монтирования для удаления", + "Select NFS Export": "Выберите экспорт NFS", + "Select NFS Server": "Выберите сервер NFS", + "Select OVA/OVF file": "Выберите файл OVA/OVF", + "Select PBS repository": "Выберите репозиторий PBS", + "Select Privileged Container": "Выберите привилегированный контейнер", + "Select SSH private key": "Выберите закрытый ключ SSH", + "Select SSH private key file": "Выберите файл закрытого ключа SSH", + "Select Samba Server": "Выберите сервер Samba", + "Select Samba Share": "Выберите общий ресурс Samba", + "Select Shared Directory Location": "Выберите расположение общего каталога", + "Select Storage": "Выберите хранилище", + "Select Storage Volume": "Выберите том хранилища", + "Select System Type": "Выберите тип системы", + "Select Unprivileged Container": "Выберите непривилегированный контейнер", + "Select VM": "Выберите виртуальную машину", + "Select VM to export:": "Выберите виртуальную машину для экспорта:", + "Select Virtual Machine": "Выберите виртуальную машину", + "Select a Custom Logo": "Выберите собственный логотип", + "Select a VirtIO ISO to use:": "Выберите ISO-образ VirtIO для использования:", + "Select a category of useful commands:": "Выберите категорию полезных команд:", + "Select a category or search for applications:": "Выберите категорию или найдите приложения:", + "Select a category or search for scripts:": "Выберите категорию или найдите скрипты:", + "Select a custom ISO to use:": "Выберите собственный ISO-образ для использования:", + "Select a job to view/edit, or create a new one:": "Выберите задание для просмотра или редактирования либо создайте новое:", + "Select a job:": "Выберите задание:", + "Select a network management option:": "Выберите действие для управления сетью:", + "Select a new language for the menu:": "Выберите новый язык меню:", + "Select a post-installation script:": "Выберите скрипт для выполнения после установки:", + "Select a pre-configured Linux VM script to execute:": "Выберите скрипт предварительно настроенной виртуальной машины Linux для выполнения:", + "Select a saved USB/IP device:": "Выберите сохранённое устройство USB/IP:", + "Select a script or action:": "Выберите скрипт или действие:", + "Select a share to delete:": "Выберите общий ресурс для удаления:", + "Select a specific Coral or USB node, not the whole /dev": "Выберите конкретный узел Coral или USB, а не весь /dev", + "Select access mode": "Выберите режим доступа", + "Select all": "Выбрать всё", + "Select an existing group": "Выберите существующую группу", + "Select an existing group:": "Выберите существующую группу:", + "Select an export to delete:": "Выберите экспорт для удаления:", + "Select an option": "Выберите вариант", + "Select an option:": "Выберите вариант:", + "Select another source path and try again.": "Выберите другой исходный путь и повторите попытку.", + "Select archive": "Выберите архив", + "Select archive to restore": "Выберите архив для восстановления", + "Select at least one path to continue.": "Выберите хотя бы один путь для продолжения.", + "Select at least one stack container": "Выберите хотя бы один контейнер стека", + "Select at least one suite application": "Выберите хотя бы одно приложение из набора", + "Select authentication mode:": "Выберите режим аутентификации:", + "Select authentication type:": "Выберите тип аутентификации:", + "Select available Controllers/NVMe to add:": "Выберите доступные контроллеры/NVMe для добавления:", + "Select backup archive": "Выберите архив резервной копии", + "Select backup archive to restore": "Выберите архив резервной копии для восстановления", + "Select backup backend:": "Выберите подсистему резервного копирования:", + "Select backup method and profile:": "Выберите метод и профиль резервного копирования:", + "Select backup profile:": "Выберите профиль резервного копирования:", + "Select backup to restore": "Выберите резервную копию для восстановления", + "Select backup to restore:": "Выберите резервную копию для восстановления:", + "Select bridge for network interface(s):": "Выберите мост для сетевых интерфейсов:", + "Select compression:": "Выберите сжатие:", + "Select container:": "Выберите контейнер:", + "Select content types for this storage:": "Выберите типы содержимого для этого хранилища:", + "Select conversion guide:": "Выберите руководство по преобразованию:", + "Select conversion option:": "Выберите вариант преобразования:", + "Select destination": "Выберите место назначения", + "Select disk interface type:": "Выберите тип интерфейса диска:", + "Select driver version": "Выберите версию драйвера", + "Select export format:": "Выберите формат экспорта:", + "Select export permissions:": "Выберите права доступа для экспорта:", + "Select from /mnt directories": "Выберите из каталогов в /mnt", + "Select from existing folders in /mnt": "Выберите из существующих папок в /mnt", + "Select from folders inside /mnt": "Выберите из папок внутри /mnt", + "Select from recent servers": "Выберите из недавно использованных серверов", + "Select help topic:": "Выберите тему справки:", + "Select how to provide VirtIO drivers": "Выберите способ предоставления драйверов VirtIO", + "Select iSCSI Target": "Выберите целевое устройство iSCSI", + "Select local archive format:": "Выберите формат локального архива:", + "Select machine type": "Выберите тип машины", + "Select mount configuration:": "Выберите конфигурацию монтирования:", + "Select mount options. Open uid/gid/file_mode are always applied so unprivileged LXC bind-mounts can write:": "Выберите параметры монтирования. Разрешающие доступ значения uid/gid/file_mode применяются всегда, чтобы обеспечить запись через bind-монтирования в непривилегированных контейнерах LXC:", + "Select mount options:": "Выберите параметры монтирования:", + "Select mount point to remove from container": "Выберите точку монтирования для удаления из контейнера", + "Select mount point to unmount:": "Выберите точку монтирования для размонтирования:", + "Select network access level:": "Выберите уровень сетевого доступа:", + "Select one of the ready-to-run Linux VMs:": "Выберите одну из готовых к запуску виртуальных машин Linux:", + "Select one or more GPU(s) to switch mode:": "Выберите один или несколько GPU для переключения режима:", + "Select one or more disk images to import:": "Выберите один или несколько образов дисков для импорта:", + "Select operation:": "Выберите операцию:", + "Select optimizations to uninstall:": "Выберите оптимизации для удаления:", + "Select option": "Выберите вариант", + "Select option [1-2] (default: 2):": "Выберите вариант [1-2] (по умолчанию: 2):", + "Select option [1-3] (default: 3):": "Выберите вариант [1-3] (по умолчанию: 3):", + "Select repository destination:": "Выберите расположение репозитория:", + "Select restore source:": "Выберите источник для восстановления:", + "Select run mode": "Выберите режим запуска", + "Select share permissions:": "Выберите права доступа к общему ресурсу:", + "Select storage for imported disk(s):": "Выберите хранилище для импортируемых дисков:", + "Select storage to remove:": "Выберите хранилище для удаления:", + "Select target IQN:": "Выберите IQN целевого устройства:", + "Select target mode for selected GPU(s):": "Выберите целевой режим для выбранных GPU:", + "Select the CT to manage NFS/Samba client:": "Выберите контейнер CT для управления клиентом NFS/Samba:", + "Select the CT to which you want to add disks:": "Выберите контейнер CT, в который хотите добавить диски:", + "Select the GPU to pass through to the VM:": "Выберите GPU для проброса в виртуальную машину:", + "Select the GPU(s) to add to LXC": "Выберите GPU для добавления в LXC", + "Select the LXC container:": "Выберите контейнер LXC:", + "Select the LXC. OCI containers are not included.": "Выберите контейнер LXC. Контейнеры OCI не включены в список.", + "Select the Linux distribution to install:": "Выберите дистрибутив Linux для установки:", + "Select the NAS system to install:": "Выберите систему NAS для установки:", + "Select the NVIDIA driver version to install:": "Выберите версию драйвера NVIDIA для установки:", + "Select the USB device to share:": "Выберите USB-устройство для предоставления общего доступа:", + "Select the VM to add the GPU to:": "Выберите виртуальную машину, в которую нужно добавить GPU:", + "Select the VM to which you want to add disks:": "Выберите виртуальную машину, в которую хотите добавить диски:", + "Select the VM where you want to import the disk image:": "Выберите виртуальную машину, в которую хотите импортировать образ диска:", + "Select the backup mode:": "Выберите режим резервного копирования:", + "Select the bus type for the disks:": "Выберите тип шины для дисков:", + "Select the directory containing disk images:": "Выберите каталог с образами дисков:", + "Select the directory to bind to container:": "Выберите каталог для привязки к контейнеру:", + "Select the disk to add as Proxmox storage:": "Выберите диск для добавления в качестве хранилища Proxmox:", + "Select the disk to test or inspect:": "Выберите диск для тестирования или проверки:", + "Select the disk you want to format:": "Выберите диск для форматирования:", + "Select the disks you want to add:": "Выберите диски для добавления:", + "Select the disks you want to import (use spacebar to toggle):": "Выберите диски для импорта (нажимайте пробел, чтобы выбрать диск или снять выбор):", + "Select the entry to remove. [pvesm] entries are removed from Proxmox storage; [fstab] entries are unmounted and removed from /etc/fstab.": "Выберите запись для удаления. Записи [pvesm] удаляются из хранилища Proxmox; для записей [fstab] выполняется размонтирование и удаление из /etc/fstab.", + "Select the entry to remove. [pvesm] entries are removed from Proxmox storage; [fstab] entries are unmounted, removed from /etc/fstab and have their credentials file deleted.": "Выберите запись для удаления. Записи [pvesm] удаляются из хранилища Proxmox; для записей [fstab] выполняется размонтирование, удаление из /etc/fstab и удаление соответствующего файла учётных данных.", + "Select the file to import:": "Выберите файл для импорта:", + "Select the filesystem for": "Выберите файловую систему для", + "Select the folder to mount:": "Выберите папку для монтирования:", + "Select the interface type for all disks:": "Выберите тип интерфейса для всех дисков:", + "Select the interface type for:": "Выберите тип интерфейса для:", + "Select the mounted USB to use as backup target:": "Выберите смонтированный USB-накопитель для сохранения резервных копий:", + "Select the optimizations to update. Each one re-runs its post-install function and registers the new version.": "Выберите оптимизации для обновления. Для каждой из них повторно выполняется функция послеустановочной настройки и регистрируется новая версия.", + "Select the parent job to attach to:": "Выберите родительское задание для присоединения:", + "Select the paths to restore (one per backup entry):": "Выберите пути для восстановления (по одному на каждую запись резервной копии):", + "Select the privileged LXC container to convert:": "Выберите привилегированный контейнер LXC для преобразования:", + "Select the remote USB device:": "Выберите удалённое USB-устройство:", + "Select the storage that will receive the backups:": "Выберите хранилище для сохранения резервных копий:", + "Select the storage volume for disk import:": "Выберите том хранилища для импорта диска:", + "Select the sync interval (in hours):": "Выберите интервал синхронизации (в часах):", + "Select the target VM for PCI passthrough:": "Выберите целевую виртуальную машину для проброса PCI:", + "Select the type of Linux installation:": "Выберите тип установки Linux:", + "Select the type of Windows installation:": "Выберите тип установки Windows:", + "Select the unprivileged LXC container to convert:": "Выберите непривилегированный контейнер LXC для преобразования:", + "Select utilities to install": "Выберите утилиты для установки", + "Select what to do with this disk:": "Выберите действие для этого диска:", + "Select where to export VM files (OVA/OVF + temporary workspace):": "Выберите место для экспорта файлов ВМ (OVA/OVF + временная рабочая область):", + "Selected GPU function": "Выбранная функция GPU", + "Selected GPU(s)": "Выбранные GPU", + "Selected GPU(s):": "Выбранные GPU:", + "Selected LXC action": "Выбранное действие для LXC", + "Selected Loader:": "Выбранный загрузчик:", + "Selected VM": "Выбранная ВМ", + "Selected VM action": "Выбранное действие для ВМ", + "Selected bridge:": "Выбранный мост:", + "Selected container": "Выбранный контейнер", + "Selected controller/NVMe is already assigned to other VM(s):": "Выбранный контроллер/NVMe уже назначен другим ВМ:", + "Selected device is already assigned to other VM(s):": "Выбранное устройство уже назначено другим ВМ:", + "Selected devices": "Выбранные устройства", + "Selected optimizations have been uninstalled.": "Выбранные оптимизации удалены.", + "Selected paths produced no entries to apply.": "В выбранных путях не найдено записей для применения.", + "Selected utilities installation completed": "Установка выбранных утилит завершена", + "Selection": "Выбор", + "Self-custodial Bitcoin Lightning wallet with integrated node and app connections.": "Некастодиальный кошелёк Bitcoin Lightning со встроенным узлом и подключением к приложениям.", + "Self-hosted Git forge for code, issues and collaboration.": "Платформа Git на собственном сервере для работы с кодом, задачами и совместной разработки.", + "Self-hosted Git hosting and CI/CD in one server.": "Хостинг Git и CI/CD на одном собственном сервере.", + "Self-hosted Git-powered pastebin for snippets with syntax highlighting, history, and optional Git-over-SSH access.": "Сервис для самостоятельного размещения и обмена фрагментами кода на базе Git с подсветкой синтаксиса, историей изменений и необязательным доступом Git через SSH.", + "Self-hosted IP, DNS and network diagnostics toolbox.": "Набор инструментов для диагностики IP, DNS и сетей, размещаемый на собственном сервере.", + "Self-hosted PDF tools for editing, converting and signing documents.": "Инструменты для редактирования, преобразования и подписания PDF-документов, размещаемые на собственном сервере.", + "Self-hosted S3-compatible object storage.": "S3-совместимое объектное хранилище, размещаемое на собственном сервере.", + "Self-hosted ZeroTier network controller with web UI for centralized management.": "Сетевой контроллер ZeroTier, размещаемый на собственном сервере, с веб-интерфейсом для централизованного управления.", + "Self-hosted cloud data migration & sync manager": "Менеджер миграции и синхронизации облачных данных, размещаемый на собственном сервере", + "Self-hosted coding activity statistics for WakaTime-compatible clients.": "Сервис статистики активности программирования для клиентов, совместимых с WakaTime, размещаемый на собственном сервере.", + "Self-hosted collaborative bookmark manager to collect, read, annotate, and fully preserve what matters, all in one place.": "Менеджер закладок для совместной работы, размещаемый на собственном сервере: собирайте, читайте, комментируйте и полностью сохраняйте важные материалы в одном месте.", + "Self-hosted collaborative notes and knowledge base with pages, inline databases, and SQLite storage.": "Совместные заметки и база знаний, размещаемые на собственном сервере, со страницами, встроенными базами данных и хранением данных в SQLite.", + "Self-hosted comment server for blogs and websites, with a browser-based dashboard.": "Сервер комментариев для блогов и сайтов, размещаемый на собственном сервере, с панелью управления в браузере.", + "Self-hosted diagrams.net editor for flowcharts and technical diagrams.": "Редактор diagrams.net для блок-схем и технических диаграмм, размещаемый на собственном сервере.", + "Self-hosted document management for storing, organizing, searching, and sharing personal documents.": "Система управления документами, размещаемая на собственном сервере, для хранения, упорядочивания, поиска личных документов и предоставления к ним общего доступа.", + "Self-hosted email archival and search server that downloads mailboxes over IMAP into encrypted local storage.": "Сервер архивирования и поиска электронной почты, размещаемый на собственном сервере, который загружает содержимое почтовых ящиков по IMAP в зашифрованное локальное хранилище.", + "Self-hosted event photo gallery for guests, with moderation, QR-code sharing, and local SQLite storage.": "Фотогалерея мероприятий для гостей, размещаемая на собственном сервере, с модерацией, доступом по QR-коду и локальным хранением данных в SQLite.", + "Self-hosted feature-flag and experimentation service with a web interface and SQLite defaults.": "Сервис флагов функций и экспериментов, размещаемый на собственном сервере, с веб-интерфейсом и использованием SQLite по умолчанию.", + "Self-hosted file management and sharing with multiple storage providers.": "Система управления файлами и общего доступа к ним, размещаемая на собственном сервере, с поддержкой нескольких поставщиков хранилищ.", + "Self-hosted file sharing with a modern web interface": "Сервис обмена файлами с современным веб-интерфейсом, размещаемый на собственном сервере", + "Self-hosted file sync and sharing.": "Сервис синхронизации файлов и общего доступа к ним, размещаемый на собственном сервере.", + "Self-hosted file toolkit for images, video, audio, PDFs, and files": "Набор инструментов для работы с изображениями, видео, аудио, PDF и другими файлами, размещаемый на собственном сервере", + "Self-hosted forms and workflows.": "Сервис форм и рабочих процессов, размещаемый на собственном сервере.", + "Self-hosted grocery list and recipe manager": "Менеджер списков покупок и рецептов, размещаемый на собственном сервере", + "Self-hosted household plant-care tracker with reminders, photos, and multiple user accounts.": "Сервис отслеживания ухода за домашними растениями, размещаемый на собственном сервере, с напоминаниями, фотографиями и поддержкой нескольких учётных записей пользователей.", + "Self-hosted image-hosting service with authenticated uploads, image processing, public links, and local storage.": "Сервис размещения изображений на собственном сервере с аутентификацией при загрузке, обработкой изображений, общедоступными ссылками и локальным хранилищем.", + "Self-hosted internet archiving solution": "Решение для архивирования интернет-ресурсов, размещаемое на собственном сервере", + "Self-hosted inventory and home organization.": "Учёт имущества и организация домашнего хозяйства на собственном сервере.", + "Self-hosted invoicing and estimates with customer portals, recurring billing, payments, and expense tracking.": "Система на собственном сервере для выставления счетов и составления смет с клиентскими порталами, регулярным выставлением счетов, приёмом платежей и учётом расходов.", + "Self-hosted live streaming and chat.": "Прямые трансляции и чат на собственном сервере.", + "Self-hosted media-library cleanup and maintenance dashboard for Plex, Jellyfin, or Emby.": "Панель на собственном сервере для очистки и обслуживания медиатеки Plex, Jellyfin или Emby.", + "Self-hosted movie and TV tracker with watch history, recommendations, and media-server integrations.": "Система на собственном сервере для отслеживания фильмов и сериалов с историей просмотров, рекомендациями и интеграциями с медиасерверами.", + "Self-hosted notes and notebooks with attachments, backups, and optional multi-user accounts.": "Заметки и блокноты на собственном сервере с вложениями, резервными копиями и возможностью использования нескольких учётных записей.", + "Self-hosted nutrition and meal tracker with food logging, recipes, and nutrition data.": "Система на собственном сервере для отслеживания питания с дневником приёмов пищи, рецептами и данными о пищевой ценности продуктов.", + "Self-hosted personal task manager with a Todoist-compatible workflow, search, and automatic account-registration lock.": "Персональный менеджер задач на собственном сервере с рабочим процессом, совместимым с Todoist, поиском и автоматической блокировкой регистрации учётных записей.", + "Self-hosted photo library that indexes local photo collections and keeps its thumbnail cache in persistent storage.": "Фототека на собственном сервере, которая индексирует локальные коллекции фотографий и сохраняет кэш миниатюр в постоянном хранилище.", + "Self-hosted push notification server.": "Сервер push-уведомлений для размещения на собственной инфраструктуре.", + "Self-hosted push notifications with a web interface.": "Push-уведомления на собственном сервере с веб-интерфейсом.", + "Self-hosted recipe manager and meal planner": "Менеджер рецептов и планировщик питания на собственном сервере", + "Self-hosted recipe manager and meal planner.": "Менеджер рецептов и планировщик питания на собственном сервере.", + "Self-hosted recipe manager for collecting, organizing, and sharing recipes.": "Менеджер рецептов для размещения на собственном сервере, предназначенный для сбора и систематизации рецептов, а также обмена ими.", + "Self-hosted remote device management.": "Система удалённого управления устройствами на собственном сервере.", + "Self-hosted scheduling and booking app with a built-in admin interface and SQLite database.": "Приложение для планирования и бронирования на собственном сервере со встроенным интерфейсом администрирования и базой данных SQLite.", + "Self-hosted shared-expense and group-budget manager for tracking purchases and settling who owes whom.": "Менеджер совместных расходов и группового бюджета на собственном сервере для учёта покупок и взаиморасчётов между участниками.", + "Self-hosted smart home video platform.": "Видеоплатформа для умного дома на собственном сервере.", + "Self-hosted software development service": "Сервис разработки программного обеспечения на собственном сервере", + "Self-hosted strength-training tracker with workout logs, programs, progress photos, and a mobile PWA.": "Система на собственном сервере для отслеживания силовых тренировок с журналами тренировок, программами, фотографиями прогресса и мобильным PWA.", + "Self-hosted task and project management.": "Управление задачами и проектами на собственном сервере.", + "Self-hosted wardrobe catalog for organizing clothing, outfits, and personal style with SQLite and local file storage.": "Каталог гардероба на собственном сервере для упорядочивания одежды, комплектов и личного стиля с использованием SQLite и локального хранения файлов.", + "Self-hosted website diagnostics for checking DNS, TLS certificates, HTTP headers, and other web properties.": "Система диагностики веб-сайтов на собственном сервере для проверки DNS, сертификатов TLS, заголовков HTTP и других параметров веб-сайтов.", + "Self-signed TLS certificate created:": "Создан самоподписанный сертификат TLS:", + "Selfhosted PDF manager, viewer and editor": "Менеджер, просмотрщик и редактор PDF для самостоятельного размещения", + "Selkies desktop and streaming acceleration": "Ускорение рабочего стола и потоковой передачи Selkies", + "Sending backup to Borg repository...": "Отправка резервной копии в репозиторий Borg...", + "Sending backup to PBS...": "Отправка резервной копии в PBS...", + "Server": "Сервер", + "Server (listen for incoming tests on TCP 5201)": "Сервер (ожидание входящих тестов на TCP-порту 5201)", + "Server IDs to test against, separated by commas (optional)": "Идентификаторы серверов для тестирования через запятую (необязательно)", + "Server IP/hostname is correct": "IP-адрес или имя хоста сервера указаны верно", + "Server IP:": "IP-адрес сервера:", + "Server SSH port:": "Порт SSH сервера:", + "Server is accessible:": "Сервер доступен:", + "Server is online": "Сервер в сети", + "Server is running": "Сервер работает", + "Server response:": "Ответ сервера:", + "Server stopped. Press Enter to return to menu...": "Сервер остановлен. Нажмите Enter, чтобы вернуться в меню...", + "Server will listen on TCP port 5201.": "Сервер будет ожидать подключения на TCP-порту 5201.", + "Server:": "Сервер:", + "Servers": "Серверы", + "Service": "Служба", + "Service Status": "Состояние службы", + "Service is active and running": "Служба активна и работает", + "Service is inactive": "Служба неактивна", + "Service ready:": "Служба готова:", + "Service responding:": "Служба отвечает:", + "Service restarted.": "Служба перезапущена.", + "Service restarts:": "Перезапуски службы:", + "Service stopped.": "Служба остановлена.", + "Service:": "Служба:", + "Services failed": "Службы с ошибками", + "Services restarted": "Службы перезапущены", + "Services that depend on the main service are not yet supported": "Службы, зависящие от основной службы, пока не поддерживаются", + "Services:": "Службы:", + "Set Display > Graphic card (VGA, SPICE or VirtIO) to match the guest": "Настройте Дисплей > Видеокарта (VGA, SPICE или VirtIO) в соответствии с гостевой системой", + "Set Hostname": "Задать имя хоста", + "Set Interface MTU Size (leave blank for default)": "Задать размер MTU интерфейса (оставьте поле пустым для значения по умолчанию)", + "Set MAC Address (leave empty for automatic)": "Задать MAC-адрес (оставьте поле пустым для автоматического назначения)", + "Set MTU (leave empty for default)": "Задать MTU (оставьте поле пустым для значения по умолчанию)", + "Set VLAN (leave empty for none)": "Задать VLAN (оставьте поле пустым, чтобы не использовать VLAN)", + "Set VM boot order": "Задать порядок загрузки виртуальной машины", + "Set Virtual Machine ID": "Задать ID виртуальной машины", + "Set a Bridge": "Задать сетевой мост", + "Set a MAC Address": "Задать MAC-адрес", + "Set a Vlan(leave blank for default)": "Задать VLAN (оставьте поле пустым для значения по умолчанию)", + "Set in SB_USER": "Задать в SB_USER", + "Set network bridge (default: vmbr0)": "Задать сетевой мост (по умолчанию: vmbr0)", + "Set ownership and permissions:": "Задать владельца и права доступа:", + "Set the initial Technitium DNS administrator password": "Задать начальный пароль администратора Technitium DNS", + "Set this disk as the primary boot disk?": "Сделать этот диск основным загрузочным диском?", + "Set to 1 only for a private HTTP-only LAN; use HTTPS otherwise.": "Установите значение 1 только для частной локальной сети, использующей исключительно HTTP; в остальных случаях используйте HTTPS.", + "Set up custom MOTD banner": "Настроить собственный баннер MOTD", + "Set up the apex group and udev rules": "Настроить группу apex и правила udev", + "Set up time synchronization and entropy generation": "Настроить синхронизацию времени и генерацию энтропии", + "Setting APT language configuration...": "Настройка языковых параметров APT...", + "Setting VM description": "Задание описания виртуальной машины", + "Setting boot order...": "Настройка порядка загрузки...", + "Setting directory ownership and permissions...": "Настройка владельца и прав доступа к каталогу...", + "Setting sharedfiles group with UID remapping...": "Настройка группы sharedfiles с переназначением UID...", + "Setting systemd ulimits...": "Настройка ограничений ресурсов systemd...", + "Setting ulimit for the shell user...": "Настройка ограничений ресурсов для пользователя командной оболочки...", + "Setting up persistent network interfaces": "Настройка постоянных сетевых интерфейсов", + "Setting up persistent network interfaces successfully.": "Постоянные сетевые интерфейсы успешно настроены.", + "Setting up the Google Coral APT repository...": "Настройка репозитория APT Google Coral...", + "Settings": "Настройки", + "Settings post-install Proxmox": "Настройка Proxmox после установки", + "Setup Persistent Network Names": "Настроить постоянные имена сетевых интерфейсов", + "Setup Web UI": "Настроить веб-интерфейс", + "Setup key from the NetBird dashboard": "Ключ настройки из панели управления NetBird", + "Shaarli": "Shaarli", + "Share Access Error": "Ошибка доступа к общему ресурсу", + "Share Name": "Имя общего ресурса", + "Share Options": "Параметры общего ресурса", + "Share a local USB device": "Предоставить общий доступ к локальному USB-устройству", + "Share added successfully.": "Общий ресурс успешно добавлен.", + "Share deleted and Samba service restarted.": "Общий ресурс удалён, служба Samba перезапущена.", + "Share exists:": "Общий ресурс существует:", + "Share folders automatically (true or false)": "Автоматически предоставлять общий доступ к папкам (true или false)", + "Share name:": "Имя общего ресурса:", + "Share not found on server:": "Общий ресурс не найден на сервере:", + "Share path:": "Путь к общему ресурсу:", + "Share selected USB devices through SSH, or connect this Linux machine to a USB/IP server.": "Предоставьте общий доступ к выбранным USB-устройствам через SSH или подключите этот компьютер с Linux к серверу USB/IP.", + "Share updated successfully.": "Общий ресурс успешно обновлён.", + "Share:": "Общий ресурс:", + "ShareCoveX panel": "Панель ShareCoveX", + "Shared Directory Ready:": "Общий каталог готов:", + "Shared Group": "Общая группа", + "Shared directories": "Общие каталоги", + "Shared directory created:": "Общий каталог создан:", + "Shared directory for consume and export": "Общий каталог для приёма и экспорта", + "Shared directory for copy/sync operations": "Общий каталог для операций копирования и синхронизации", + "Shared group: CONFIGURED": "Общая группа: НАСТРОЕНА", + "Shared group: sharedfiles (GID:": "Общая группа: sharedfiles (GID:", + "Shared host content (not included in LXC backups):": "Общие данные хоста (не включаются в резервные копии LXC):", + "Shared host data is not reverted by the backup. Continue?": "Общие данные хоста не возвращаются в прежнее состояние из резервной копии. Продолжить?", + "Shared host data is not reverted by the backups. Continue?": "Общие данные хоста не возвращаются в прежнее состояние из резервных копий. Продолжить?", + "Shared host directories (not included in Proxmox backups)": "Общие каталоги хоста (не включаются в резервные копии Proxmox)", + "Shared host directory": "Общий каталог хоста", + "Shared host directory (not included in Proxmox backups)": "Общий каталог хоста (не включается в резервные копии Proxmox)", + "Shared host files are kept as they are; the backup does not restore their content.": "Общие файлы хоста остаются без изменений; их содержимое не восстанавливается из резервной копии.", + "Shared host media directory": "Общий каталог медиафайлов на хосте", + "Shared memory size for the GPU workload in MB": "Размер общей памяти для рабочей нагрузки GPU в МБ", + "Sharedfiles group already exists (GID: 101000)": "Группа Sharedfiles уже существует (GID: 101000)", + "Shares found:": "Найдены общие ресурсы:", + "Shares selected from guest listing:": "Общие ресурсы, выбранные из списка, полученного при гостевом доступе:", + "Shell user ulimit set": "Лимиты ulimit для пользователя оболочки заданы", + "Short name for this job (letters, numbers, hyphens).": "Краткое имя задания (буквы, цифры, дефисы).", + "Short self-test started on": "Короткая самопроверка запущена на", + "Short test — ~2 minutes, basic surface check": "Короткий тест — ~2 минуты, базовая проверка поверхности", + "Shotcut is a free, open source, cross-platform video editor.": "Shotcut — бесплатный кроссплатформенный видеоредактор с открытым исходным кодом.", + "Should show 'unprivileged: 0' or no unprivileged line": "Должно отображаться 'unprivileged: 0', либо строка unprivileged должна отсутствовать", + "Should show 'unprivileged: 1'": "Должно отображаться 'unprivileged: 1'", + "Should show 'unprivileged: 1' if it's unprivileged": "Должно отображаться 'unprivileged: 1', если контейнер непривилегированный", + "Should show fewer or no issues": "Должно отображаться меньше проблем, либо они должны отсутствовать", + "Should show pve-manager/9.x.x": "Должно отображаться pve-manager/9.x.x", + "Shoutrrr addresses for the notifications (optional)": "Адреса Shoutrrr для уведомлений (необязательно)", + "Show All Scripts": "Показать все скрипты", + "Show CT users and their UID/GID on the host": "Показать пользователей CT и их UID/GID на хосте", + "Show CT users in table format": "Показать пользователей CT в виде таблицы", + "Show Container Privilege Status": "Показать статус привилегированности контейнера", + "Show DNS resolution status": "Показать состояние разрешения DNS-имён", + "Show Ethernet device info": "Показать сведения об устройстве Ethernet", + "Show GPU frequency": "Показать частоту GPU", + "Show GPU kernel driver in use": "Показать используемый драйвер ядра для GPU", + "Show GPU time": "Показать время работы GPU", + "Show Monitor Service Status": "Показать состояние службы мониторинга", + "Show Network Config File": "Показать файл конфигурации сети", + "Show Proxmox storage configuration": "Показать конфигурацию хранилищ Proxmox", + "Show Proxmox version": "Показать версию Proxmox", + "Show Routing Table": "Показать таблицу маршрутизации", + "Show UUID and filesystem type of block devices": "Показать UUID и тип файловой системы блочных устройств", + "Show VM configuration. Use the correct ": "Показать конфигурацию виртуальной машины. Используйте правильный ", + "Show Version Information": "Показать сведения о версии", + "Show ZFS pool status": "Показать состояние пула ZFS", + "Show active firewall rules (iptables)": "Показать активные правила межсетевого экрана (iptables)", + "Show all active mounts from the kernel": "Показать все активные монтирования по данным ядра", + "Show available Proxmox upgrades": "Показать доступные обновления Proxmox", + "Show configured network bridges": "Показать настроенные сетевые мосты", + "Show container configuration. Use the correct ": "Показать конфигурацию контейнера. Используйте правильный ", + "Show detailed keyfile info": "Показать подробные сведения о файле ключа", + "Show disk usage by mount point": "Показать использование дискового пространства по точкам монтирования", + "Show jobs and last run status": "Показать задания и состояние их последнего запуска", + "Show listening ports (TCP/UDP)": "Показать прослушиваемые порты (TCP/UDP)", + "Show manual repair commands": "Показать команды для исправления вручную", + "Show me the line to paste manually on the server": "Показать строку для ручной вставки на сервере", + "Show mounted storage devices": "Показать смонтированные устройства хранения", + "Show network interfaces and IPs": "Показать сетевые интерфейсы и IP-адреса", + "Show nftables rules": "Показать правила nftables", + "Show raw network configuration": "Показать конфигурацию сети в исходном виде", + "Show routing table": "Показать таблицу маршрутизации", + "Show size of a directory": "Показать размер каталога", + "Show standard exclude patterns": "Показать стандартные шаблоны исключения", + "Show status of all storage pools": "Показать состояние всех пулов хранения", + "Show the QR code of a peer again with: pct exec -- /app/show-peer 1": "Повторно показать QR-код узла с помощью команды: pct exec -- /app/show-peer 1", + "Show the summary of a template": "Показать сводную информацию о шаблоне", + "Show traffic statistics per interface": "Показать статистику трафика по интерфейсам", + "Show vzdump backup configuration": "Показать конфигурацию резервного копирования vzdump", + "Shows status and type (nfs/cifs/dir/iscsi...).": "Показывает состояние и тип (nfs/cifs/dir/iscsi...).", + "Shutdown timeout": "Тайм-аут завершения работы", + "SiYuan access code": "Код доступа SiYuan", + "SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more..": "SickGear позволяет управлять сериалами и/или аниме, обнаруживает новые эпизоды, интегрируется с приложениями для загрузки и предоставляет другие возможности.", + "Sign in to a registry": "Войти в реестр", + "Sign in to the panel and create a Samba user in Settings before publishing a directory over SMB.": "Войдите в панель и создайте пользователя Samba в настройках, прежде чем предоставлять доступ к каталогу по SMB.", + "Signal is a messaging app with privacy at its core. It is free and easy to use, with strong end-to-end encryption that keeps your communication completely private.": "Signal — приложение для обмена сообщениями, в основе которого лежит конфиденциальность. Оно бесплатное и простое в использовании, а надёжное сквозное шифрование обеспечивает полную конфиденциальность вашего общения.", + "Signatures removed. Partition table preserved.": "Сигнатуры удалены. Таблица разделов сохранена.", + "Signed in to {registry} as {username}.\n\nCredentials are saved for ProxMenux.\nSelect the account to check, download or install an image.": "Вход в {registry} выполнен под именем {username}.\n\nУчётные данные сохранены для ProxMenux.\nВыберите учётную запись, чтобы проверить, загрузить или установить образ.", + "SilverBullet": "SilverBullet", + "SilverBullet login": "Вход в SilverBullet", + "SilverBullet login in username:password format": "Учётные данные для входа в SilverBullet в формате username:password", + "Simple and easy to use DDNS": "Простой и удобный в использовании DDNS", + "Simple self-hosted file sharing.": "Простой обмен файлами на собственном сервере.", + "Single GPU Warning": "Предупреждение о единственном GPU", + "Single sign-on and multi-factor authentication": "Единый вход и многофакторная аутентификация", + "Single target found — selected automatically:": "Найден единственный целевой объект — выбран автоматически:", + "Single-node log storage and query UI.": "Хранение журналов на одном узле и интерфейс для запросов к ним.", + "Single-node observability database for metrics, logs and traces.": "Одноузловая база данных для мониторинга метрик, журналов и трассировок.", + "Single-server website CMS and visual editor with SQLite-backed content, media uploads, forms, and publishing.": "CMS для веб-сайта на одном сервере и визуальный редактор с хранением содержимого в SQLite, загрузкой медиафайлов, формами и публикацией.", + "Size": "Размер", + "Size in GB of": "Размер в ГБ для", + "Size of each consume/export volume in GB": "Размер каждого тома consume/export в ГБ", + "Size of the /dev/shm shared memory in MB": "Размер разделяемой памяти /dev/shm в МБ", + "Size of the Frigate temporary cache in MB": "Размер временного кэша Frigate в МБ", + "Size:": "Размер:", + "Skip downloading additional languages": "Пропустить загрузку дополнительных языков", + "Skip this device": "Пропустить это устройство", + "Skip this step for ZFS/BTRFS": "Пропустите этот шаг для ZFS/BTRFS", + "Skip this step if using no-subscription repository": "Пропустите этот шаг, если используете репозиторий no-subscription", + "Skip — I will add it as PCIe device": "Пропустить — я добавлю его как устройство PCIe", + "Skip — leave as-is": "Пропустить — оставить как есть", + "Skipped (no disks of the pool are present on this host):": "Пропущено (на этом хосте нет ни одного диска пула):", + "Skipped (some disks missing):": "Пропущено (некоторые диски отсутствуют):", + "Skipped because Jellyfin did not create encoding.xml:": "Пропущено, поскольку Jellyfin не создал encoding.xml:", + "Skipped device": "Пропущенное устройство", + "Skipped to protect target system (would cascade-remove packages)": "Пропущено для защиты целевой системы (это привело бы к каскадному удалению пакетов)", + "Skipped, not in apt cache:": "Пропущено, отсутствует в кэше apt:", + "Skipping LXC": "Пропуск LXC", + "Skipping SR-IOV device": "Пропуск устройства SR-IOV", + "Skipping installation.": "Установка пропускается.", + "Skipping manual patches — feranick fork already supports this kernel.": "Пропускаем применение патчей вручную — форк feranick уже поддерживает это ядро.", + "Skopeo is not available. Restore the ProxMenux OCI dependencies and try again.": "Skopeo недоступен. Восстановите зависимости OCI для ProxMenux и повторите попытку.", + "Skopeo returned an invalid credential file; saved credentials were not changed.": "Skopeo вернул некорректный файл учётных данных; сохранённые учётные данные не были изменены.", + "Sleek podcast downloader with GPodder sync": "Элегантное приложение для загрузки подкастов с синхронизацией с GPodder", + "Smart Card": "Смарт-карта", + "Smart home automation with a broad adapter ecosystem.": "Автоматизация умного дома с широкой экосистемой адаптеров.", + "Smart restore plan — hardware compatibility check": "Умный план восстановления — проверка совместимости оборудования", + "Smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis.": "Smokeping отслеживает задержку в вашей сети. Подробный пример возможностей этого приложения можно посмотреть на сайте UCDavis.", + "SnapOtter": "SnapOtter", + "Snapshot - no downtime (recommended)": "Снимок — без простоя (рекомендуется)", + "Snippets — hook scripts / config": "Фрагменты — скрипты-хуки / конфигурация", + "SoC-integrated GPU: tight coupling with other SoC components": "GPU, встроенный в SoC: тесная связь с другими компонентами SoC", + "Sofa": "Sofa", + "Some DKMS removals reported errors; final verification will determine the result.": "При удалении некоторых модулей DKMS возникли ошибки; результат будет определён при итоговой проверке.", + "Some applications could not be checked ({count}). Try again later.": "Не удалось проверить некоторые приложения ({count}). Повторите попытку позже.", + "Some changes require a reboot to take effect. Do you want to restart now?": "Для применения некоторых изменений требуется перезагрузка. Перезагрузить сейчас?", + "Some essential Proxmox packages may not have been installed": "Некоторые необходимые пакеты Proxmox, возможно, не были установлены", + "Some log2ram files may still exist. Manual cleanup may be required.": "Некоторые файлы log2ram могут остаться. Может потребоваться ручная очистка.", + "Some old time services could not be removed (not installed)": "Не удалось удалить некоторые старые службы синхронизации времени (не установлены)", + "Some operations failed — review messages above. Press Enter to continue...": "Некоторые операции завершились с ошибкой — ознакомьтесь с сообщениями выше. Нажмите Enter, чтобы продолжить...", + "Some optimizations could not be uninstalled; their configuration was preserved.": "Не удалось удалить некоторые оптимизации; их конфигурация сохранена.", + "Some packages still need attention; review": "Некоторые пакеты всё ещё требуют внимания; проверьте", + "Some projects publish a Dockerfile and not an image: it has to be built and published to a registry before it can be installed this way. An image of a private registry needs credentials, which are not supported yet.": "Некоторые проекты публикуют Dockerfile, а не образ: его нужно собрать и опубликовать в реестре, прежде чем устанавливать таким способом. Для образа из частного реестра нужны учётные данные, которые пока не поддерживаются.", + "Some repairs failed. Please fix manually and re-run the script.": "Некоторые исправления не удалось выполнить. Устраните проблемы вручную и повторно запустите скрипт.", + "Some repositories are not available, continuing with available ones...": "Некоторые репозитории недоступны, продолжаем работу с доступными...", + "Some selected GPUs are already configured in this container.": "Некоторые из выбранных GPU уже настроены в этом контейнере.", + "Some signatures could not be removed (see warnings above).": "Не удалось удалить некоторые сигнатуры (см. предупреждения выше).", + "Some utility packages could not be removed; the remaining list has been preserved": "Некоторые служебные пакеты не удалось удалить; список оставшихся пакетов сохранён", + "Something is already mounted at": "Уже есть смонтированный ресурс в", + "Something is already mounted at:": "По этому пути уже смонтирован ресурс:", + "Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.": "Sonarr (ранее NZBdrone) — это персональный видеорекордер (PVR) для пользователей Usenet и BitTorrent. Он может отслеживать несколько RSS-лент, находить новые эпизоды ваших любимых сериалов, загружать, сортировать и переименовывать их. Также можно настроить автоматическую замену уже загруженных файлов версиями более высокого качества, когда они становятся доступны.", + "Sonarr added to Prowlarr": "Sonarr добавлен в Prowlarr", + "Sonarr connected to qBittorrent": "Sonarr подключён к qBittorrent", + "Sonarr root folder configured": "Корневая папка Sonarr настроена", + "Source": "Источник", + "Source VM": "Исходная ВМ", + "Source patched successfully.": "Патч успешно применён к исходному коду.", + "Source:": "Источник:", + "Sources copied to": "Исходные файлы скопированы в", + "Spanish": "Испанский", + "Specific host (enter IP)": "Конкретный узел (введите IP-адрес)", + "Specific subnet (enter manually)": "Конкретная подсеть (введите вручную)", + "Speedtest Tracker web interface": "Веб-интерфейс Speedtest Tracker", + "Speedtest-tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla's Speedtest service.": "Speedtest-tracker — это приложение для самостоятельного размещения, которое отслеживает производительность интернет-соединения, выполняя проверки скорости через сервис Speedtest от Ookla.", + "Spoolman web interface": "Веб-интерфейс Spoolman", + "Spotube is an open source, cross-platform Spotify client compatible across multiple platforms utilizing Spotify's data API and YouTube, Piped.video or JioSaavn as an audio source, eliminating the need for Spotify Premium": "Spotube — это кроссплатформенный клиент Spotify с открытым исходным кодом, который использует API Spotify для получения данных, а YouTube, Piped.video или JioSaavn — в качестве источника аудио, что позволяет обойтись без Spotify Premium", + "Spreadsheets in your browser": "Электронные таблицы в вашем браузере", + "Sshwifty": "Sshwifty", + "Sshwifty web access (password only)": "Веб-доступ к Sshwifty (только по паролю)", + "Stable (main branch)": "Стабильная версия (ветка main)", + "Stable monitor service normalized.": "Служба мониторинга стабильной версии приведена к стандартному состоянию.", + "Stack": "Стек", + "Stack adapter not recognized by the translator": "Адаптер стека не распознан транслятором", + "Stack backups are missing; a partial restore is not allowed": "Резервные копии стека отсутствуют; частичное восстановление не допускается", + "Stack checked:": "Стек проверен:", + "Stack members are missing; recreate them after verifying their volumes": "Компоненты стека отсутствуют; создайте их заново после проверки их томов", + "Stack members are updated together with their stack": "Компоненты стека обновляются вместе со своим стеком", + "Stack name": "Имя стека", + "Stack records restored": "Записи стека восстановлены", + "Stack records saved": "Записи стека сохранены", + "Stack records saved; no container was reinstalled.": "Записи стека сохранены; ни один контейнер не был переустановлен.", + "Stack recovery completed; every member is back to its previous installation.": "Восстановление стека завершено; все его компоненты возвращены к предыдущим установкам.", + "Stack recreation completed. Data kept.": "Повторное создание стека завершено. Данные сохранены.", + "Stack startup hook installed": "Хук запуска стека установлен", + "Stack stopped": "Стек остановлен", + "Stack update completed. Data kept.": "Обновление стека завершено. Данные сохранены.", + "Stack:": "Стек:", + "Staging directory:": "Каталог промежуточной подготовки:", + "Staging ready.": "Промежуточная подготовка завершена.", + "Staging source:": "Источник для промежуточной подготовки:", + "Stale VFIO Config Cleaned": "Устаревшая конфигурация VFIO очищена", + "Stale VFIO Config Detected": "Обнаружена устаревшая конфигурация VFIO", + "Stale VFIO entries removed and initramfs rebuilt.": "Устаревшие записи VFIO удалены, initramfs пересобран.", + "Standard NAS (backup, iso, vztmpl)": "Стандартное NAS (backup, iso, vztmpl)", + "Start": "Запустить", + "Start VM": "Запустить ВМ", + "Start VM after creation": "Запустить ВМ после создания", + "Start VM after creation?": "Запустить ВМ после создания?", + "Start VM when completed:": "Запустить ВМ после завершения:", + "Start a container. Use the correct ": "Запустите контейнер. Используйте правильный ", + "Start a virtual machine. Use the correct ": "Запустите виртуальную машину. Используйте правильный ", + "Start command": "Команда запуска", + "Start each LXC with Proxmox (no coordinated startup)": "Запускать каждый LXC при запуске Proxmox (без согласованного запуска)", + "Start long self-test (hours)": "Запустить длительную самопроверку (несколько часов)", + "Start long test now?": "Запустить длительный тест сейчас?", + "Start on boot already disabled for VM": "Автозапуск ВМ при загрузке уже отключён", + "Start on boot disabled for LXC": "Автозапуск LXC при загрузке отключён", + "Start on boot disabled for VM": "Автозапуск ВМ при загрузке отключён", + "Start on boot enabled": "Автозапуск при загрузке включён", + "Start on boot enabled (onboot=1)": "Автозапуск при загрузке включён (onboot=1)", + "Start on boot will be disabled on source VM only if currently enabled": "Автозапуск исходной ВМ при загрузке будет отключён, только если он сейчас включён", + "Start order of the dependencies restored": "Порядок запуска зависимостей восстановлен", + "Start scrub for a ZFS pool": "Запустить проверку целостности (scrub) для пула ZFS", + "Start short self-test (~2 min)": "Запустить короткую самопроверку (~2 мин)", + "Start terminal multiplexer (recommended):": "Запустите терминальный мультиплексор (рекомендуется):", + "Start the LXC when finished to apply the selected configuration?": "Запустить LXC после завершения, чтобы применить выбранную конфигурацию?", + "Start the VM": "Запустить ВМ", + "Start the VM to begin Windows installation from the mounted ISO.": "Запустите ВМ, чтобы начать установку Windows с подключённого ISO-образа.", + "Start the applications once they are registered? Answer No if the original containers are still running on another host: both would use the same addresses.": "Запустить приложения после их регистрации? Ответьте «Нет», если исходные контейнеры всё ещё работают на другом узле: иначе и исходные, и зарегистрированные контейнеры будут использовать одни и те же адреса.", + "Start the converted container:": "Запустите преобразованный контейнер:", + "Start the interactive Proxmox package upgrade": "Запустить интерактивное обновление пакетов Proxmox", + "Start the main system upgrade:": "Запустите основное обновление системы:", + "Start the stack with Proxmox": "Запускать стек вместе с Proxmox", + "Start uploading to PBS — sets a recovery passphrase": "Начать загрузку в PBS — задаёт парольную фразу для восстановления", + "Start when finished": "Запустить по завершении", + "Start with Proxmox": "Запускать вместе с Proxmox", + "Starting": "Запуск", + "Starting Borg backup...": "Начинается резервное копирование с помощью Borg...", + "Starting CT": "Запуск CT", + "Starting ISO conversion...": "Начинается преобразование ISO...", + "Starting LXC Privileged to Unprivileged conversion process...": "Начинается преобразование привилегированного контейнера LXC в непривилегированный...", + "Starting LXC Unprivileged to Privileged conversion process...": "Начинается преобразование непривилегированного контейнера LXC в привилегированный...", + "Starting NVIDIA installer. This may take several minutes...": "Запускается установщик NVIDIA. Это может занять несколько минут...", + "Starting NVMe long self-test...": "Запускается длительная самопроверка NVMe...", + "Starting NVMe short self-test...": "Запускается короткая самопроверка NVMe...", + "Starting ProxMenux update...": "Начинается обновление ProxMenux...", + "Starting Proxmox storage integration...": "Начинается интеграция хранилища с Proxmox...", + "Starting Proxmox system repair...": "Начинается восстановление системы Proxmox...", + "Starting Rclone and waiting for the FUSE mount...": "Запускается Rclone, ожидается монтирование FUSE...", + "Starting SMART long self-test...": "Запускается длительная самопроверка SMART...", + "Starting SMART short self-test...": "Запускается короткая самопроверка SMART...", + "Starting container": "Запуск контейнера", + "Starting container...": "Запуск контейнера...", + "Starting direct conversion of container": "Начинается прямое преобразование контейнера", + "Starting gateway...": "Запуск шлюза...", + "Starting installation...": "Запуск установки...", + "Starting installer...": "Запуск установщика...", + "Starting privileged container...": "Запуск привилегированного контейнера...", + "Starting rpcbind service...": "Запуск службы rpcbind...", + "Starting the backup...": "Запуск резервного копирования...", + "Starting the container...": "Запуск контейнера...", + "Starting the main container and its dependencies...": "Запуск основного контейнера и его зависимостей...", + "Starting the service:": "Запуск службы:", + "Starting unprivileged container...": "Запуск непривилегированного контейнера...", + "Startup check": "Проверка при запуске", + "Startup: coordinated by the stack startup hook": "Запуск: координируется хуком запуска стека", + "Startup: independent, without hookscript": "Запуск: независимый, без hookscript", + "Static IP": "Статический IP-адрес", + "Static IPv4 address": "Статический IPv4-адрес", + "Static IPv4 address for": "Статический IPv4-адрес для", + "Statping": "Statping", + "Status": "Состояние", + "Status page and uptime monitoring.": "Страница состояния и мониторинг доступности.", + "Status:": "Состояние:", + "Steam is the ultimate destination for playing, discussing, and creating games.": "Steam — универсальная платформа для игр, их обсуждения и создания.", + "SteamGridDB": "SteamGridDB", + "SteamGridDB API key": "Ключ API для SteamGridDB", + "Step": "Шаг", + "Step 2: Testing actual share access with guest...": "Шаг 2: Проверка фактического доступа к общему ресурсу в гостевом режиме...", + "Steps that will run:": "Шаги, которые будут выполнены:", + "Still has issues": "Проблемы сохраняются", + "Stop - shuts the guest down during backup": "Остановка — выключает гостевую систему на время создания резервной копии", + "Stop it first and run this option again.": "Сначала остановите её и снова выберите этот пункт.", + "Stop sharing a USB device": "Прекратить общий доступ к USB-устройству", + "Stop sharing this device? An attached remote client will disconnect.": "Прекратить общий доступ к этому устройству? Подключённый удалённый клиент будет отключён.", + "Stop that VM, then choose:": "Остановите эту ВМ, затем выберите:", + "Stop the CT, unmount the disk on the HOST, and remount with:": "Остановите CT, размонтируйте диск на ХОСТЕ и смонтируйте его заново с помощью:", + "Stop the VM/CT before formatting this disk.": "Остановите ВМ/CT перед форматированием этого диска.", + "Stop the container before the NVIDIA refresh": "Остановите контейнер перед обновлением NVIDIA", + "Stop the container if it's running:": "Остановите контейнер, если он запущен:", + "Stop them first and run this script again.": "Сначала остановите их и запустите этот скрипт снова.", + "Stop uploading to PBS": "Остановить загрузку в PBS", + "Stop uploading?": "Остановить загрузку?", + "Stopped": "Остановлено", + "Stopped and disabled": "Остановлено и отключено", + "Stopped at:": "Время остановки:", + "Stopping Coral kernel modules...": "Остановка модулей ядра Coral...", + "Stopping LXC": "Остановка LXC", + "Stopping NFS services...": "Остановка служб NFS...", + "Stopping ProxMenux Monitor service...": "Остановка службы ProxMenux Monitor...", + "Stopping Samba services...": "Остановка служб Samba...", + "Stopping VM": "Остановка ВМ", + "Stopping and disabling NVIDIA services...": "Остановка и отключение служб NVIDIA...", + "Stopping container": "Остановка контейнера", + "Stopping gateway...": "Остановка шлюза...", + "Stopping the container before applying configuration...": "Остановка контейнера перед применением конфигурации...", + "Stopping the container before conversion...": "Остановка контейнера перед преобразованием...", + "Stopping the container...": "Остановка контейнера...", + "Stopping the stack...": "Остановка стека...", + "Storage": "Хранилище", + "Storage & Share Manager": "Управление хранилищами и общими ресурсами", + "Storage Added:": "Добавлено хранилище:", + "Storage Exists": "Хранилище существует", + "Storage ID": "Идентификатор хранилища", + "Storage ID already exists. Do you want to remove and recreate it?": "Хранилище с таким идентификатором уже существует. Удалить его и создать заново?", + "Storage ID already exists:": "Хранилище с таким идентификатором уже существует:", + "Storage ID is available": "Идентификатор хранилища доступен", + "Storage ID:": "Идентификатор хранилища:", + "Storage IDs:": "Идентификаторы хранилищ:", + "Storage and Disks Commands": "Команды для работы с хранилищами и дисками", + "Storage controller: VirtIO SCSI": "Контроллер хранения: VirtIO SCSI", + "Storage disk identifier:": "Идентификатор диска хранилища:", + "Storage for": "Хранилище для", + "Storage for Nextcloud files, configuration and data": "Хранилище для файлов, конфигурации и данных Nextcloud", + "Storage for Paperless data and documents": "Хранилище для данных и документов Paperless", + "Storage for Tandoor files": "Хранилище для файлов Tandoor", + "Storage for persistent data": "Хранилище для постоянных данных", + "Storage for recipe images and files": "Хранилище для изображений и файлов рецептов", + "Storage for rootfs": "Хранилище для rootfs", + "Storage for rootfs and private configuration": "Хранилище для rootfs и приватной конфигурации", + "Storage for staticfiles": "Хранилище для staticfiles", + "Storage for the Immich library": "Хранилище для библиотеки Immich", + "Storage for the Nextcloud data": "Хранилище для данных Nextcloud", + "Storage for the OCI image cache": "Хранилище для кэша образов OCI", + "Storage for the backup of this operation": "Хранилище для резервной копии этой операции", + "Storage for the consume and export folders": "Хранилище для папок consume и export", + "Storage for the container and its data": "Хранилище для контейнера и его данных", + "Storage for the containers and their data": "Хранилище для контейнеров и их данных", + "Storage for the persistent configuration": "Хранилище для постоянной конфигурации", + "Storage is now available in Proxmox web interface under Datacenter > Storage": "Хранилище теперь доступно в веб-интерфейсе Proxmox в разделе «Датацентр > Хранилище»", + "Storage plan selection cancelled.": "Выбор плана хранения отменён.", + "Storage plan selection failed or cancelled": "Не удалось выбрать план хранения, либо выбор был отменён", + "Storage selection cancelled": "Выбор хранилища отменён", + "Storage:": "Хранилище:", + "Stored Credentials:": "Сохранённые учётные данные:", + "Stored credentials:": "Сохранённые учётные данные:", + "Stores to run, separated by commas (empty runs the default stores)": "Хранилища для запуска, через запятую (если оставить поле пустым, будут запущены хранилища по умолчанию)", + "Stream torrent video through a local web player.": "Потоковое воспроизведение видео из торрентов через локальный веб-плеер.", + "Stremio is a modern media center that gives you the freedom to watch everything you want.": "Stremio — современный медиацентр, который позволяет смотреть всё, что вы хотите.", + "Subdomains for the certificate, comma separated (wildcard for *.domain)": "Поддомены для сертификата, через запятую (подстановочный сертификат для *.domain)", + "Subnet": "Подсеть", + "Subscription banner removal failed": "Не удалось удалить баннер подписки", + "Subscription banner removed successfully": "Баннер подписки успешно удалён", + "Subscription banner restored successfully (desktop and mobile)": "Баннер подписки успешно восстановлен (в настольной и мобильной версиях)", + "Subscription status is not unambiguously active, notfound or expired. Check proxmox-backup-manager subscription get locally; no repository changed.": "Статус подписки нельзя однозначно определить как active, notfound или expired. Выполните локально команду proxmox-backup-manager subscription get для проверки; ни один репозиторий не был изменён.", + "Success": "Успешно", + "Successful": "Успешно", + "Supervisor does not confirm healthy and supported yet": "Supervisor пока не подтверждает исправное и поддерживаемое состояние системы", + "Supervisor reports no connectivity; retrying to get versions and install components": "Supervisor сообщает об отсутствии подключения; повторная попытка получить версии и установить компоненты", + "Supported formats: .img, .qcow2, .vmdk, .raw": "Поддерживаемые форматы: .img, .qcow2, .vmdk, .raw", + "Suspend - pauses the guest during backup": "Приостановка — приостанавливает работу гостевой системы на время создания резервной копии", + "Suwayomi web UI administrator": "Администратор веб-интерфейса Suwayomi", + "Swagger UI": "Swagger UI", + "Swap": "Подкачка", + "Swap in MB": "Объём подкачки в МБ", + "Swap partition detected": "Обнаружен раздел подкачки", + "Swappiness configuration created successfully": "Конфигурация swappiness успешно создана", + "Swing Music is a beautifully designed, self-hosted music streaming server. Like a cooler Spotify ... but bring your own music.": "Swing Music — сервер потоковой передачи музыки с продуманным дизайном для размещения на собственном оборудовании. Как Spotify, только круче… но со своей музыкой.", + "Switch GPU Mode (VM <-> LXC)": "Переключить режим GPU (VM <-> LXC)", + "Switch Mode": "Переключить режим", + "Switch Script Not Found": "Скрипт переключения не найден", + "Switch to GPU -> LXC (native driver mode)": "Переключить на GPU -> LXC (режим штатного драйвера)", + "Switch to GPU -> VM (VFIO passthrough mode)": "Переключить на GPU -> VM (режим проброса через VFIO)", + "Switches to the free no-subscription repository": "Переключает на бесплатный репозиторий no-subscription", + "Switching to": "Переключение на", + "Switching to GPU -> LXC mode removes VFIO exclusivity.": "Переключение в режим GPU -> LXC отменяет исключительное использование GPU через VFIO.", + "Switching to GPU -> VM mode requires exclusive VFIO binding.": "Переключение в режим GPU -> VM требует привязки GPU исключительно к VFIO.", + "Symbolic link in a restored volume path": "Символическая ссылка в пути восстановленного тома", + "Symbolic link in the path of an adaptation": "Символическая ссылка в пути адаптации", + "Symbolic link loop in the new image": "Цикл символических ссылок в новом образе", + "Symbolic link outside the rootfs of the new image": "Символическая ссылка за пределами rootfs нового образа", + "Synchronize time automatically": "Автоматически синхронизировать время", + "Synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.": "Synclounge — сторонний инструмент, позволяющий синхронно смотреть Plex с друзьями и семьёй, где бы вы ни находились.", + "Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.": "Syncthing заменяет проприетарные сервисы синхронизации и облачные сервисы открытым, надёжным и децентрализованным решением. Ваши данные принадлежат только вам, и вы вправе выбирать, где они хранятся, передаются ли третьим лицам и как передаются через Интернет.", + "Synology VM Creator": "Создание виртуальных машин Synology", + "Sysctl not namespaced or not valid:": "Параметр sysctl не изолирован в пространстве имён или недопустим:", + "System": "Система", + "System CLI Tools": "Системные инструменты командной строки", + "System Disk Size (GB)": "Размер системного диска (ГБ)", + "System Update Information": "Информация об обновлении системы", + "System Utilities Installer": "Установщик системных утилит", + "System disk is SSD or M.2. Proceeding with Log2RAM setup.": "Системный диск — SSD или M.2. Продолжается настройка Log2RAM.", + "System error:": "Системная ошибка:", + "System errors and logs": "Системные ошибки и журналы", + "System group apex already exists.": "Системная группа apex уже существует.", + "System group apex created.": "Системная группа apex создана.", + "System hardening scoring (0-100)": "Оценка защищённости системы (0–100)", + "System hostname and kernel info": "Имя хоста системы и сведения о ядре", + "System is already up to date": "Система уже обновлена до актуальной версии", + "System is already up to date. No update needed.": "Система уже обновлена до актуальной версии. Обновление не требуется.", + "System limits increase completed.": "Увеличение системных лимитов завершено.", + "System limits optimizations removed": "Оптимизации системных лимитов удалены", + "System must be updated to latest PVE 8.4+ before starting": "Перед началом необходимо обновить систему до последней версии PVE, не ниже 8.4", + "System path mounts are not yet supported": "Монтирование системных путей пока не поддерживается", + "System reboot required": "Требуется перезагрузка системы", + "System upgrade completed": "Обновление системы завершено", + "System upgrade failed. Check log:": "Не удалось обновить систему. Проверьте журнал:", + "System uptime": "Время непрерывной работы системы", + "Systemd ulimits set": "Лимиты ресурсов systemd настроены", + "TCP BBR configuration created successfully": "Конфигурация TCP BBR успешно создана", + "TCP Fast Open configuration created successfully": "Конфигурация TCP Fast Open успешно создана", + "TCP optimizations configuration completed": "Настройка оптимизаций TCP завершена", + "TCP optimizations reverted (defaults restored on next reboot)": "Оптимизации TCP отменены (настройки по умолчанию будут восстановлены при следующей перезагрузке)", + "TCP port 5201 is reachable (firewall on server)": "TCP-порт 5201 доступен (межсетевой экран на сервере)", + "TCP proxy for testing network failures and latency.": "TCP-прокси для тестирования сетевых сбоев и задержек.", + "TDengine": "TDengine", + "TLS tunnel for a TCP service.": "TLS-туннель для TCP-службы.", + "TLS verification failed for {registry}. Install the registry CA in /etc/containers/certs.d/{registry}/ca.crt.": "Проверка TLS для {registry} не пройдена. Установите сертификат центра сертификации реестра в /etc/containers/certs.d/{registry}/ca.crt.", + "TPM device added to VM": "Устройство TPM добавлено в виртуальную машину", + "TPM storage selection failed or was cancelled. VM creation aborted.": "Не удалось выбрать хранилище TPM или выбор был отменён. Создание виртуальной машины прервано.", + "TROUBLESHOOTING:": "TROUBLESHOOTING:", + "TUI mode": "Режим TUI", + "TUI mode (requires root)": "Режим TUI (требуются права root)", + "Take control of your Minecraft servers.": "Возьмите управление своими серверами Minecraft в свои руки.", + "Tandoor WebUI": "Tandoor WebUI", + "Tandoor configuration cancelled": "Настройка Tandoor отменена", + "Tandoor needs at least 1 GB for staticfiles and 4 GB for PostgreSQL": "Tandoor требуется не менее 1 ГБ для staticfiles и 4 ГБ для PostgreSQL", + "Tandoor needs to complete its first start to create the initial administrator": "Для создания первого администратора необходимо дождаться завершения первого запуска Tandoor", + "Target IQN:": "IQN целевого устройства:", + "Target Storage": "Целевое хранилище", + "Target VM": "Целевая ВМ", + "Target VM validated": "Целевая ВМ проверена", + "Target channel:": "Целевой канал:", + "Target disk": "Целевой диск", + "Target host runs": "На целевом хосте работает", + "Target mode": "Целевой режим", + "Target server:": "Целевой сервер:", + "Target:": "Цель:", + "Tasks.md": "Tasks.md", + "Tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.": "Tautulli — веб-приложение на Python для мониторинга, аналитики и уведомлений Plex Media Server.", + "Teable adopts a concise spreadsheet interface, yet creates powerful database applications": "Teable позволяет создавать мощные приложения для работы с базами данных с помощью лаконичного интерфейса электронных таблиц", + "Technitium administrator": "Администратор Technitium", + "Telegram is a cloud-based mobile and desktop messaging app.": "Telegram — облачное приложение для обмена сообщениями на мобильных устройствах и компьютерах.", + "Temporary data container:": "Временный контейнер данных:", + "Temporary login": "Временный вход", + "Temporary password retrieved": "Временный пароль получен", + "Temporary working directory (if present):": "Временный рабочий каталог (если существует):", + "Terminal Multiplexers": "Терминальные мультиплексоры", + "Terminal multiplexer (Ctrl+b then d to detach, or type exit)": "Терминальный мультиплексор (нажмите Ctrl+b, затем d для отсоединения или введите exit)", + "Tesla data logger with Grafana dashboards": "Регистратор данных Tesla с панелями мониторинга Grafana", + "Test Connectivity": "Проверить подключение", + "Test NFS Connectivity": "Проверить подключение NFS", + "Test Samba Connectivity": "Проверить подключение Samba", + "Test iSCSI Connectivity": "Проверить подключение iSCSI", + "Test in progress:": "Тест выполняется:", + "Test output mentions authentication or access denial.": "В выводе теста упоминается аутентификация или отказ в доступе.", + "Test output reports permission denied.": "В выводе теста сообщается об отказе в доступе.", + "Test runs on the drive hardware — safe to close this terminal.": "Тест выполняется на самом накопителе — этот терминал можно безопасно закрыть.", + "Test share visibility:": "Проверка видимости общего ресурса:", + "Test typically completes in ~2 minutes.": "Тест обычно завершается примерно за 2 минуты.", + "Testing": "Тестирование", + "Testing NFS connection...": "Проверка подключения NFS...", + "Testing comprehensive guest access to server": "Комплексная проверка гостевого доступа к серверу", + "Testing connectivity to portal...": "Проверка подключения к порталу...", + "Testing guest listing and share access on server": "Проверка получения списка общих ресурсов и доступа к ним на сервере в гостевом режиме", + "Testing network connectivity...": "Проверка сетевого подключения...", + "Text that new pads start with (empty = the text of the image)": "Начальный текст новых блокнотов (пустое значение = текст из образа)", + "Thank you for using ProxMenux. Goodbye!": "Спасибо за использование ProxMenux. До свидания!", + "That VM is currently stopped, so the GPU can be reassigned now.": "Эта ВМ сейчас остановлена, поэтому GPU можно переназначить.", + "That doesn't look like an SSH private key. Pick the private key file (no .pub extension, parseable by ssh-keygen).": "Это не похоже на закрытый ключ SSH. Выберите файл закрытого ключа (без расширения .pub, в формате, распознаваемом ssh-keygen).", + "The .conf files under /config/fail2ban are rewritten on every start. Keep customizations in the matching .local file, for example jail.local for jail.conf.": "Файлы .conf в /config/fail2ban перезаписываются при каждом запуске. Храните свои изменения в соответствующем файле .local, например jail.local для jail.conf.", + "The AMD GPU did not complete a test inference with ROCm": "GPU AMD не завершил тестовый инференс с использованием ROCm", + "The AMD driver does not offer its compute interface (/dev/kfd) on this host.": "Драйвер AMD не предоставляет вычислительный интерфейс (/dev/kfd) на этом хосте.", + "The AppArmor/seccomp relaxation does not include the required consent": "Для ослабления ограничений AppArmor/seccomp отсутствует необходимое согласие", + "The Bookmark Everything App": "Приложение для сохранения любых материалов в закладки", + "The Brave browser is a fast, private and secure web browser for PC, Mac and mobile.": "Brave — быстрый и безопасный браузер с защитой конфиденциальности для ПК, Mac и мобильных устройств.", + "The CT already exists:": "Контейнер уже существует:", + "The Compose document must be a mapping.": "Документ Compose должен представлять собой отображение ключей в значения.", + "The Compose file declares no service": "В файле Compose не объявлено ни одного сервиса", + "The Compose file describes several images:": "Файл Compose описывает несколько образов:", + "The Compose file describes several services:": "Файл Compose описывает несколько служб:", + "The Compose file does not contain a Compose document": "Файл Compose не содержит документа Compose", + "The Compose file has no services.": "В файле Compose нет сервисов.", + "The Compose file has no x-casaos metadata.": "В файле Compose нет метаданных x-casaos.", + "The Compose file is not valid YAML:": "Файл Compose содержит некорректный YAML:", + "The Compose file is too large": "Файл Compose слишком велик", + "The Compose offers an optional AppArmor or seccomp relaxation; it will stay disabled unless the user selects it. Continue only if you trust the image and accept this risk.": "В Compose предусмотрено необязательное ослабление ограничений AppArmor или seccomp; оно останется отключённым, пока пользователь явно его не выберет. Продолжайте только в том случае, если вы доверяете образу и принимаете этот риск.", + "The Compose value must be text or a list:": "Значение в Compose должно быть текстом или списком:", + "The DRM node is not an Intel or AMD GPU; NVIDIA requires its library profile": "Узел DRM не относится к GPU Intel или AMD; для NVIDIA требуется профиль её библиотек", + "The Entrypoint/Cmd combination is empty": "Комбинация Entrypoint/Cmd пуста", + "The FUSE publication helper was not found": "Вспомогательная программа для публикации FUSE не найдена", + "The GPU evidence does not match the verified devices": "Данные о GPU не соответствуют проверенным устройствам", + "The GPU has been moved out of VM": "GPU отсоединён от виртуальной машины", + "The GPU identity or permissions changed; the container is not modified": "Идентификационные данные GPU или права доступа изменились; контейнер не изменён", + "The GPU is being detached from VM": "GPU отсоединяется от виртуальной машины", + "The GPU vendor differs from the requested profile": "Производитель GPU не соответствует запрошенному профилю", + "The GPU vendor does not match the selected GPU profile:": "Производитель GPU не соответствует выбранному профилю GPU:", + "The Immich CPU quota cannot be reproduced": "Не удалось воспроизвести квоту процессорного времени Immich", + "The Immich library needs at least 8 GB": "Для библиотеки Immich требуется не менее 8 ГБ", + "The Immich startup was modified or cannot be reproduced": "Конфигурация запуска Immich изменена или не может быть воспроизведена", + "The LXC changed during verification; nothing was adopted": "Контейнер LXC изменился во время проверки; ничего не принято под управление", + "The LXC changed while reviewing; nothing was adopted": "Контейнер LXC изменился во время рассмотрения; ничего не принято под управление", + "The LXC could not be started.": "Не удалось запустить контейнер LXC.", + "The LXC has no Bash to run this script with. The addon was not run.": "В контейнере LXC нет Bash, необходимого для выполнения этого скрипта. Дополнение не было запущено.", + "The LXC has stopped": "Контейнер LXC остановился", + "The LXC is stopped. Do you want to start it to run the addon?": "Контейнер LXC остановлен. Запустить его для выполнения дополнения?", + "The Lounge starts in public mode: anyone who reaches the address opens the client without logging in, and the IRC networks added are lost when the session ends.": "The Lounge запускается в публичном режиме: любой, кто откроет этот адрес, получит доступ к клиенту без входа в систему, а добавленные сети IRC будут потеряны после завершения сеанса.", + "The MAC address of the container cannot be kept": "Не удаётся сохранить MAC-адрес контейнера", + "The NVIDIA Container Toolkit repository definition was empty.": "Определение репозитория NVIDIA Container Toolkit оказалось пустым.", + "The NVIDIA Container Toolkit signing key could not be read.": "Не удалось прочитать ключ подписи NVIDIA Container Toolkit.", + "The NVIDIA Container Toolkit version cannot be identified": "Не удаётся определить версию NVIDIA Container Toolkit", + "The NVIDIA destination cannot be replaced": "Не удаётся заменить целевой объект NVIDIA", + "The NVIDIA destination escapes the rootfs": "Целевой путь NVIDIA выходит за пределы rootfs", + "The NVIDIA driver is installed, but the Container Toolkit phase did not complete. GPU support for OCI containers is unavailable until it does.": "Драйвер NVIDIA установлен, но этап установки Container Toolkit не завершён. Пока этот этап не завершится, поддержка GPU для контейнеров OCI недоступна.", + "The NVIDIA driver or inventory changed; the operation was stopped": "Драйвер NVIDIA или сведения об оборудовании изменились; операция остановлена", + "The NVIDIA hook or environment differs from the declared one": "Хук NVIDIA или окружение отличаются от заявленных", + "The NVIDIA hook path does not belong to the installer": "Путь к хуку NVIDIA не принадлежит установщику", + "The NVIDIA installer needs at least": "Установщику NVIDIA требуется не менее", + "The NVIDIA installer stopped with this error:": "Установщик NVIDIA остановился со следующей ошибкой:", + "The NVIDIA runtime is up to date; the container is not modified or started": "Среда выполнения NVIDIA актуальна; контейнер не изменяется и не запускается", + "The Nextcloud volume needs at least 8 GB": "Для тома Nextcloud требуется не менее 8 ГБ", + "The OCI archive contains no SHA-256 blobs": "Архив OCI не содержит объектов данных SHA-256", + "The OCI archive does not contain exactly one manifest": "Архив OCI должен содержать ровно один манифест, но это условие не выполнено", + "The OCI archive does not exist or is empty:": "Архив OCI не существует или пуст:", + "The OCI archive verifier was not found": "Средство проверки архива OCI не найдено", + "The OCI catalog is not installed. Update ProxMenux and try again.": "Каталог OCI не установлен. Обновите ProxMenux и повторите попытку.", + "The OCI contract changed while reviewing; nothing was adopted": "Контракт OCI изменился во время проверки; ничего не было принято", + "The OCI engine is not installed. Update ProxMenux and try again.": "Движок OCI не установлен. Обновите ProxMenux и повторите попытку.", + "The OCI image storage was not kept": "Хранилище образов OCI не было сохранено", + "The OCI image user or group is ambiguous": "Пользователь или группа образа OCI определены неоднозначно", + "The OCI image user or group is not numeric": "Пользователь или группа в образе OCI указаны не в числовом формате", + "The OCI image user or group is outside the supported range": "Пользователь или группа в образе OCI указаны числом вне поддерживаемого диапазона", + "The OCR language must use Tesseract codes, for example eng or eng+spa": "Для языка OCR необходимо использовать коды Tesseract, например eng или eng+spa", + "The PATH of the new image is outside the reproducible profile": "Значение PATH нового образа выходит за рамки воспроизводимого профиля", + "The Paperless persistent volumes need at least 8 GB": "Для постоянных томов Paperless требуется не менее 8 ГБ", + "The PostgreSQL volume needs at least 4 GB": "Для тома PostgreSQL требуется не менее 4 ГБ", + "The PostgreSQL volume needs at least 8 GB": "Для тома PostgreSQL требуется не менее 8 ГБ", + "The ProxMenux Monitor update checker is not available. Start or update ProxMenux Monitor and try again.": "Средство проверки обновлений ProxMenux Monitor недоступно. Запустите или обновите ProxMenux Monitor и повторите попытку.", + "The ProxMenux application catalogue is not a list": "Каталог приложений ProxMenux не является списком", + "The Proxmox VE 8 update did not finish. The upgrade to Proxmox VE 9 was not started.": "Обновление Proxmox VE 8 не завершено. Переход на Proxmox VE 9 не был начат.", + "The Proxmox archive keyring is missing; Ceph installation cannot continue safely": "Отсутствует набор ключей архива Proxmox; безопасное продолжение установки Ceph невозможно", + "The Proxmox inventory and the local configurations differ": "Данные инвентаризации Proxmox и локальные конфигурации различаются", + "The README has no recognisable docker-compose section": "В README нет распознаваемого раздела docker-compose", + "The ROCm image has no support for the AMD GPU of this host:": "Образ ROCm не поддерживает графический процессор AMD этого хоста:", + "The ROCm image of this application has no support for the AMD GPU of this host:": "Образ ROCm этого приложения не поддерживает GPU AMD этого хоста:", + "The Rclone configuration needs at least 1 GB": "Для конфигурации Rclone требуется не менее 1 ГБ", + "The Rclone rootfs needs at least 2 GB": "Для rootfs Rclone требуется не менее 2 ГБ", + "The Selkies profile requires a verified LinuxServer image": "Для профиля Selkies требуется проверенный образ LinuxServer", + "The Tandoor files volume needs at least 2 GB": "Для тома файлов Tandoor требуется не менее 2 ГБ", + "The URL does not contain the required parameters (id, pack, edition).": "URL не содержит обязательных параметров (id, pack, edition).", + "The USB number can change after reconnecting or rebooting. This profile does not remap it automatically or handle Coral USB re-enumeration. Do not share a dongle already used by another service.": "Номер USB может измениться после переподключения или перезагрузки. Этот профиль не переназначает его автоматически и не обрабатывает повторное перечисление Coral USB. Не используйте совместно адаптер, который уже занят другой службой.", + "The Unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.": "Unifi-controller — мощная программная платформа корпоративного класса для беспроводных сетей, идеально подходящая для сред с высокой плотностью клиентов, где требуются низкая задержка и высокая доступность.", + "The VA-API device does not exist:": "Устройство VA-API не существует:", + "The VLAN tag must be a number from 1 to 4094": "Тег VLAN должен быть числом от 1 до 4094", + "The VM also has these audio devices assigned via PCI passthrough — typically added together with the GPU. Remove them too?": "Этой ВМ также назначены следующие аудиоустройства через проброс PCI — обычно их добавляют вместе с графическим процессором. Удалить их тоже?", + "The VM guest will have exclusive access to the GPU.": "Гостевая система ВМ получит исключительный доступ к графическому процессору.", + "The VM is powered on. Turn it off before adding disks.": "Виртуальная машина включена. Выключите её перед добавлением дисков.", + "The VM/LXC will lose access to this disk after formatting.": "Виртуальная машина/LXC потеряет доступ к этому диску после форматирования.", + "The VMID belongs to another container now and is not touched:": "VMID теперь принадлежит другому контейнеру и не изменяется:", + "The VMID or its contract is already in use; it is not adopted": "VMID или его контракт уже используется; принятие под управление не выполняется", + "The VMID was reused or its identity is unknown; the operation is blocked": "VMID был использован повторно или его принадлежность неизвестна; операция заблокирована", + "The VMID was reused or the container is on another node; it is not overwritten": "VMID был использован повторно или контейнер находится на другом узле; перезапись не выполняется", + "The VMID was taken during the installation:": "VMID был занят во время установки:", + "The Valkey volume needs at least 1 GB": "Для тома Valkey требуется не менее 1 ГБ", + "The acceleration evidence differs from the verified inventory": "Данные об ускорении отличаются от проверенных сведений об оборудовании", + "The acceleration profile does not support this architecture:": "Профиль ускорения не поддерживает эту архитектуру:", + "The access rule added to this host directory is kept:": "Правило доступа, добавленное для этого каталога хоста, сохраняется:", + "The active kernel driver is not vfio-pci, but the entry in": "Активный драйвер ядра — не vfio-pci, но запись в", + "The active kernel driver is not vfio-pci, but the entry will rebind the GPU to vfio-pci on the next reboot, breaking the LXC passthrough about to be configured.": "Активный драйвер ядра — не vfio-pci, но при следующей перезагрузке эта запись повторно привяжет GPU к vfio-pci, что нарушит работу проброса в LXC, который сейчас будет настроен.", + "The active kernel driver is not vfio-pci, but the entry will rebind the GPU to vfio-pci on the next reboot.": "Активный драйвер ядра — не vfio-pci, но при следующей перезагрузке эта запись повторно привяжет GPU к vfio-pci.", + "The adaptation content was modified": "Содержимое адаптации было изменено", + "The added disk needs a whole-GiB size recorded by Proxmox": "Размер добавленного диска, зарегистрированный в Proxmox, должен составлять целое число GiB", + "The added disk size is not a whole GiB": "Размер добавленного диска не составляет целое число GiB", + "The additional path hides a system directory": "Дополнительный путь скрывает системный каталог", + "The address is already assigned on this host or cluster:": "Адрес уже назначен на этом хосте или в этом кластере:", + "The address must start with http:// or https://": "Адрес должен начинаться с http:// или https://", + "The administrator account, the public address and the UDP port are created on the first start, so the web interface opens directly on its login page.": "Учётная запись администратора, публичный адрес и порт UDP создаются при первом запуске, поэтому веб-интерфейс сразу открывает страницу входа.", + "The administrator email is not valid": "Некорректный адрес электронной почты администратора", + "The administrator user contains characters that are not allowed": "Имя пользователя администратора содержит недопустимые символы", + "The all-in-one AI application.": "Универсальное приложение для работы с ИИ.", + "The application '{app_id}' does not come from LinuxServer": "Приложение '{app_id}' получено не из LinuxServer", + "The application '{app_id}' is not in the index": "Приложение '{app_id}' отсутствует в индексе", + "The application configuration needs a first start to complete.": "Для завершения настройки приложения требуется первый запуск.", + "The application could not be modified:": "Не удалось изменить приложение:", + "The application could not be recovered:": "Не удалось восстановить приложение:", + "The application did not complete its initial setup:": "Приложение не завершило первоначальную настройку:", + "The application did not get an address on the access network:": "Приложение не получило адрес в сети доступа:", + "The application did not pass its HTTP check:": "Приложение не прошло проверку HTTP:", + "The application did not respond in time:": "Приложение не ответило вовремя:", + "The application has been modified with the new options.": "Приложение изменено с учётом новых параметров.", + "The application needs it for": "Приложению это необходимо для", + "The application stopped during its first start:": "Приложение остановилось во время первого запуска:", + "The application user or group is not numeric": "Идентификатор пользователя или группы приложения не является числом", + "The application user or group is outside the supported range": "Идентификатор пользователя или группы приложения находится вне поддерживаемого диапазона", + "The application was not modified.": "Приложение не было изменено.", + "The application was removed": "Приложение удалено", + "The archive could not be extracted.": "Не удалось распаковать архив.", + "The archive destination directory is INSIDE one of the paths you are about to back up. Writing the archive there would copy the backup into itself — producing a corrupted archive, or growing without limit until the disk fills up.": "Каталог назначения архива находится ВНУТРИ одного из путей, для которых вы собираетесь создать резервную копию. Запись архива в этот каталог приведёт к включению резервной копии в саму себя — в результате архив будет повреждён или будет расти без ограничений, пока диск не заполнится.", + "The backup could not be identified; the image is not replaced": "Не удалось определить резервную копию; образ не заменён", + "The backup could not be started on node": "Не удалось запустить резервное копирование на узле", + "The backup did not pass its integrity check; creating it again...": "Резервная копия не прошла проверку целостности; создаём её заново...", + "The backup made before changing the application does not fit on the system disk of the host.": "Резервная копия, созданная перед изменением приложения, не помещается на системном диске хоста.", + "The backup metadata was compared against this host. The following items will be SKIPPED to keep the boot safe:": "Метаданные резервной копии сопоставлены с конфигурацией этого хоста. Чтобы обеспечить безопасную загрузку, следующие элементы будут ПРОПУЩЕНЫ:", + "The backup of a member could not be identified": "Не удалось определить резервную копию участника", + "The backup of this operation cannot be read. If it is on another storage, make it available and recover the operation again:": "Не удаётся прочитать резервную копию этой операции. Если она находится в другом хранилище, обеспечьте к ней доступ и повторите восстановление операции:", + "The backup runs as a Proxmox task; follow it in the task log of Proxmox.": "Резервное копирование выполняется как задача Proxmox; отслеживайте его в журнале задач Proxmox.", + "The backup storage does not exist:": "Хранилище резервных копий не существует:", + "The backup was altered; recovery blocked": "Резервная копия была изменена; восстановление заблокировано", + "The backup was taken on a different PVE or kernel major.minor. These paths will be SKIPPED to keep the boot safe:": "Резервная копия создана при другой основной или дополнительной версии PVE или ядра (major.minor). Следующие пути будут ПРОПУЩЕНЫ, чтобы обеспечить безопасную загрузку:", + "The bind mount target escapes the rootfs:": "Целевой путь bind-монтирования выходит за пределы rootfs:", + "The block device does not exist:": "Блочное устройство не существует:", + "The block found does not look like a Docker Compose file": "Найденный блок не похож на файл Docker Compose", + "The build could not be checked beforehand; continuing without that check.": "Не удалось предварительно проверить сборку; выполнение продолжается без этой проверки.", + "The cached image does not match the current digest": "Кэшированный образ не соответствует текущему дайджесту", + "The cached image is damaged; it will be downloaded again.": "Кэшированный образ повреждён; он будет загружен повторно.", + "The carried record could not be verified before the backup": "Не удалось проверить перенесённую запись перед резервным копированием", + "The changes need the application installer": "Для внесения изменений требуется установщик приложения", + "The character device does not exist:": "Символьное устройство не существует:", + "The command asks for a password that is not echoed. After creating the users, the web interface asks for a user name and a password.": "Команда запрашивает пароль, который не отображается при вводе. После создания пользователей веб-интерфейс запрашивает имя пользователя и пароль.", + "The command does not name an image": "В команде не указан образ", + "The command reads its variables from a file; write them in the command or use a Compose file": "Команда считывает переменные из файла; укажите их в команде или используйте файл Compose", + "The command runs the container as the user of the host; the container uses the user of its image instead.": "Команда запускает контейнер от имени пользователя хоста; вместо этого контейнер использует пользователя, заданного в его образе.", + "The command uses options that cannot be translated:": "Команда использует параметры, которые невозможно преобразовать:", + "The command works out a value by running another command:": "Команда вычисляет значение, выполняя другую команду:", + "The compatibility check raised failures that may break the system after restore.": "Проверка совместимости выявила проблемы, которые могут нарушить работу системы после восстановления.", + "The configuration changed after the backup was restored; the recovery is not confirmed": "Конфигурация изменилась после восстановления резервной копии; восстановление не подтверждено", + "The configuration changed after the new container was validated": "Конфигурация изменилась после проверки нового контейнера", + "The configuration changed during the NVIDIA refresh": "Конфигурация изменилась во время обновления NVIDIA", + "The configuration evidence does not match": "Контрольные данные конфигурации не совпадают", + "The configuration must run as root on Proxmox VE": "Настройку необходимо выполнять от имени root на Proxmox VE", + "The configuration of a new member changed after it was created": "Конфигурация нового участника изменилась после его создания", + "The configuration stopped because of an unexpected error": "Настройка остановлена из-за непредвиденной ошибки", + "The configured credential helper could not be used. Check its installation and credential store.": "Не удалось использовать настроенный помощник для работы с учётными данными. Проверьте его установку и хранилище учётных данных.", + "The console of the container could not be configured": "Не удалось настроить консоль контейнера", + "The consume/export volumes need at least 1 GB": "Для томов consume/export требуется не менее 1 ГБ", + "The container could not be removed automatically:": "Не удалось автоматически удалить контейнер:", + "The container could not be started:": "Не удалось запустить контейнер:", + "The container creation does not match the prepared instance": "Создание контейнера не соответствует подготовленному экземпляру", + "The container device settings changed since the last recorded operation": "Настройки устройств контейнера изменились с момента последней зарегистрированной операции", + "The container devices do not match the saved record": "Устройства контейнера не соответствуют сохранённой записи", + "The container did not stop to update its persistent configuration:": "Контейнер не остановился для обновления его постоянной конфигурации:", + "The container did not stop; its disks are not touched": "Контейнер не остановился; его диски не затрагиваются", + "The container disks do not match the saved record": "Диски контейнера не соответствуют сохранённой записи", + "The container does not exist:": "Контейнер не существует:", + "The container does not have the fuse=1 feature enabled": "В контейнере не включена функция fuse=1", + "The container does not need it any more; an update downloads the new version when there is one.": "Контейнеру это больше не требуется; при обновлении загружается новая версия, если она доступна.", + "The container gets its own address and its own volumes, so the networks and volumes declared in the file are not used.": "Контейнер получает собственный адрес и собственные тома, поэтому сети и тома, объявленные в файле, не используются.", + "The container has advanced Proxmox settings outside the supported profile": "У контейнера заданы расширенные настройки Proxmox, выходящие за рамки поддерживаемого профиля", + "The container has an operation pending; finish or recover it first": "У контейнера есть незавершённая операция; сначала завершите её или выполните восстановление после неё", + "The container identity changed; nothing was adopted": "Идентификационные данные контейнера изменились; ничего не принято под управление", + "The container identity changed; the container is not replaced": "Идентификационные данные контейнера изменились; контейнер не заменяется", + "The container identity does not match": "Идентификационные данные контейнера не совпадают", + "The container identity or configuration changed": "Идентификационные данные или конфигурация контейнера изменились", + "The container is currently stopped. Do you want to start it now to install the package?": "Контейнер сейчас остановлен. Запустить его сейчас для установки пакета?", + "The container is not modified because a host directory is not available:": "Контейнер не изменён, поскольку каталог хоста недоступен:", + "The container no longer exists:": "Контейнер больше не существует:", + "The container of a member was replaced; the assembly is not resumed": "Контейнер одного из участников был заменён; сборка не возобновлена", + "The container runs on another node of the cluster; migrate it back to this node to remove it:": "Контейнер работает на другом узле кластера; чтобы удалить его, перенесите его обратно на этот узел:", + "The container should now start as privileged": "Теперь контейнер должен запускаться как привилегированный", + "The container should now start as unprivileged": "Теперь контейнер должен запускаться как непривилегированный", + "The container stopped after starting:": "Контейнер остановился после запуска:", + "The container stopped before publishing the mount": "Контейнер остановился до публикации точки монтирования", + "The container stopped before the GPU permissions were verified:": "Контейнер остановился до проверки прав доступа к GPU:", + "The container stopped before the application responded:": "Контейнер остановился до получения ответа от приложения:", + "The container stopped:": "Контейнер остановился:", + "The container takes its time zone from Proxmox, so the time files of the host are not attached to it.": "Контейнер получает часовой пояс из Proxmox, поэтому файлы хоста с настройками времени к нему не подключаются.", + "The container was changed outside ProxMenux and an update would discard those changes:": "Контейнер был изменён вне ProxMenux, и обновление приведёт к потере этих изменений:", + "The container was created from a downloaded OCI image": "Контейнер создан из загруженного образа OCI", + "The containers do not need them any more; an update downloads the new versions when there are any.": "Контейнерам они больше не нужны; при обновлении новые версии загружаются, если они доступны.", + "The containers were created from downloaded OCI images": "Контейнеры созданы из загруженных образов OCI", + "The coordinated backup was modified": "Согласованная резервная копия была изменена", + "The credential file changed during this operation. Try again; it was not overwritten.": "Файл учётных данных изменился во время этой операции. Повторите попытку; файл не был перезаписан.", + "The current driver will be completely uninstalled before installing the new version. Continue?": "Текущий драйвер будет полностью удалён перед установкой новой версии. Продолжить?", + "The current image of the saved channel will be checked and downloaded. Resources, paths and GPU are kept. The CT is stopped during the replacement and a native backup is created first.": "Будет проверен и загружен текущий образ сохранённого канала. Ресурсы, пути и GPU сохраняются. На время замены CT останавливается, а перед этим создаётся встроенная резервная копия.", + "The current record is missing for": "Текущая запись отсутствует для", + "The current template changes the image or identity; an explicit migration is required": "Текущий шаблон меняет образ или идентичность; требуется явная миграция", + "The current template changes the template identity or image repository; an explicit migration is required": "Текущий шаблон изменяет идентификатор шаблона или репозиторий образов; требуется явная миграция", + "The current template requires a new persistent path:": "Текущему шаблону требуется новый путь для постоянного хранения данных:", + "The custom path cannot hide system directories": "Пользовательский путь не должен скрывать системные каталоги", + "The custom path overlaps another mount": "Указанный путь пересекается с другой точкой монтирования", + "The data and document volumes need at least 8 GB": "Для томов данных и документов требуется не менее 8 ГБ", + "The database server must accept connections from the IP address of this container, with a user that is not limited to localhost.": "Сервер базы данных должен принимать подключения с IP-адреса этого контейнера от пользователя, доступ которого не ограничен localhost.", + "The dedicated adapter still requires replaying its rootfs changes": "Для специализированного адаптера по-прежнему требуется повторное применение изменений rootfs", + "The dependency hook and the stack recipe differ": "Хук зависимостей и рецепт стека различаются", + "The dependency hook was modified; review it before updating": "Хук зависимостей был изменён; проверьте его перед обновлением", + "The developer-friendly cloud platform for building and running LLM agents for AI-native applications.": "Удобная для разработчиков облачная платформа для создания и запуска LLM-агентов для приложений, изначально построенных на основе ИИ.", + "The device directory does not exist:": "Каталог устройств не существует:", + "The device must keep its /dev path inside the LXC:": "Устройство должно сохранять свой путь /dev внутри LXC:", + "The device must keep its native path without duplicates": "Устройство должно сохранять свой исходный путь без дубликатов", + "The device to remove is not attached:": "Удаляемое устройство не подключено:", + "The directory contains no character devices:": "В каталоге нет символьных устройств:", + "The directory does not exist in the CT.": "Каталог не существует в CT.", + "The disk": "Диск", + "The disk does not belong to this CT; automatic adoption is unsafe": "Диск не принадлежит этому CT; автоматическое принятие небезопасно", + "The disk size cannot be reproduced": "Не удаётся воспроизвести размер диска", + "The disk usage of the container could not be read": "Не удалось получить данные об использовании дискового пространства контейнера", + "The disks of the failed attempt could not be removed and stay in the temporary container:": "Не удалось удалить диски, созданные во время неудачной попытки; они остаются во временном контейнере:", + "The docker-compose block is not closed": "Блок docker-compose не закрыт", + "The docker-compose section contains no code block": "Раздел docker-compose не содержит блока кода", + "The domain must resolve to the public address of this network before the certificate can be issued.": "Прежде чем можно будет выпустить сертификат, доменное имя должно разрешаться в публичный адрес этой сети.", + "The download client still needs to be configured.": "Клиент загрузки ещё необходимо настроить.", + "The download stopped progressing; cancelling this attempt.": "Загрузка перестала продвигаться; текущая попытка отменяется.", + "The downloaded Log2RAM does not match the expected release": "Загруженный Log2RAM не соответствует ожидаемому выпуску", + "The downloaded image does not match its manifest": "Загруженный образ не соответствует своему манифесту", + "The downloaded image is corrupt:": "Загруженный образ повреждён:", + "The dpkg package database is clean.": "База данных пакетов dpkg в порядке.", + "The driver installed but does not drive this GPU.": "Драйвер установлен, но не управляет этим GPU.", + "The dynamic NVIDIA hook is missing": "Динамический хук NVIDIA отсутствует", + "The dynamic NVIDIA hook is missing or duplicated": "Динамический хук NVIDIA отсутствует или продублирован", + "The dynamic NVIDIA profile requires an unprivileged LXC": "Для динамического профиля NVIDIA требуется непривилегированный контейнер LXC", + "The dynamic profile does not support static driver mounts": "Динамический профиль не поддерживает статические монтирования драйвера", + "The file could not be read:": "Не удалось прочитать файл:", + "The file does not exist, is empty or is not readable.": "Файл не существует, пуст или недоступен для чтения.", + "The file does not exist:": "Файл не существует:", + "The file is not a ProxMenux oci-compose.": "Файл не является файлом oci-compose ProxMenux.", + "The file is too large to be a Compose file": "Файл слишком велик для файла Compose", + "The file is too large to be an oci-compose": "Файл слишком велик для файла oci-compose", + "The filesystem": "Файловая система", + "The final cleanup did not complete:": "Заключительная очистка не завершена:", + "The following DKMS-managed drivers will now be rebuilt against it so they keep working after reboot:": "Следующие драйверы, управляемые DKMS, сейчас будут пересобраны для этого ядра, чтобы они продолжали работать после перезагрузки:", + "The following LXC containers have NVIDIA passthrough configured:": "Для следующих контейнеров LXC настроен проброс NVIDIA:", + "The following backup paths are kernel-tied and are excluded from the picker to keep the target's boot safe. The operator's own tuning inside these paths (IOMMU cmdline, VFIO IDs, custom quirks) is merged back automatically via kernel-agnostic merge:": "Следующие пути в резервной копии привязаны к ядру и исключены из списка выбора, чтобы обеспечить безопасную загрузку целевой системы. Пользовательские настройки администратора по этим путям (параметры командной строки IOMMU, идентификаторы VFIO, особые настройки совместимости) автоматически переносятся обратно при слиянии, не зависящем от ядра:", + "The following changes will be applied": "Будут применены следующие изменения", + "The following devices were excluded because they are part of an SR-IOV configuration:": "Следующие устройства исключены, поскольку они входят в конфигурацию SR-IOV:", + "The following devices were excluded from Controller/NVMe passthrough because they are part of an SR-IOV configuration:": "Следующие устройства исключены из проброса контроллеров/NVMe, поскольку они входят в конфигурацию SR-IOV:", + "The following drivers could not be rebuilt for the new kernel — run their installer manually after reboot:": "Не удалось пересобрать следующие драйверы для нового ядра — запустите их установщик вручную после перезагрузки:", + "The following entries exist on the host but were NOT in the backup. To make the host EXACTLY match the backup state, they must be removed:": "Следующие записи существуют на хосте, но их НЕ БЫЛО в резервной копии. Чтобы состояние хоста ТОЧНО соответствовало состоянию резервной копии, их необходимо удалить:", + "The following selected GPU(s) are currently in GPU -> VM mode (vfio-pci):": "Следующие выбранные GPU сейчас находятся в режиме GPU -> VM (vfio-pci):", + "The following selected GPU(s) still have a VFIO passthrough entry in": "Для следующих выбранных GPU всё ещё имеется запись проброса VFIO в", + "The following selected device(s) are Physical Functions with active Virtual Functions:": "Следующие выбранные устройства являются физическими функциями (PF) с активными виртуальными функциями (VF):", + "The following selected device(s) are SR-IOV Virtual Functions (VFs):": "Следующие выбранные устройства являются виртуальными функциями (VF) SR-IOV:", + "The fstab entry will still be removed; reboot or manual umount needed.": "Запись fstab всё равно будет удалена; потребуется перезагрузка или ручное размонтирование с помощью umount.", + "The gateway must be another usable address in the same subnet.": "Адрес шлюза должен быть другим допустимым адресом в той же подсети.", + "The gateway should appear in your Tailscale admin console shortly.": "Вскоре шлюз должен появиться в консоли администратора Tailscale.", + "The generated template does not match the schema:": "Созданный шаблон не соответствует схеме:", + "The guest access test did not succeed.": "Проверка гостевого доступа завершилась неудачно.", + "The healthcheck cannot run without an IP address": "Проверка работоспособности невозможна без IP-адреса", + "The host NVIDIA driver is not responding correctly": "Драйвер NVIDIA на хосте отвечает некорректно", + "The host bind source does not exist:": "Исходный путь для bind-монтирования на хосте не существует:", + "The host bind source is not a regular file or directory:": "Исходный путь для bind-монтирования на хосте не является обычным файлом или каталогом:", + "The host directory changed before it was mounted": "Каталог на хосте изменился до его монтирования", + "The host directory does not exist": "Каталог на хосте не существует", + "The host directory may not be accessible from an unprivileged container.": "Каталог на хосте может быть недоступен из непривилегированного контейнера.", + "The host has no IPv4 address on the selected bridge": "У хоста нет IPv4-адреса на выбранном мосту", + "The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.": "Хост потеряет к ним доступ. Если в группу входит сетевой контроллер или контроллер хранения данных, необходимый хосту, отмените операцию на этапе просмотра сводки.", + "The host monitor does not see the real host memory": "Монитор хоста не видит фактическую память хоста", + "The host monitor does not share this host namespace:": "Монитор хоста не использует общее с хостом пространство имён:", + "The host monitor include is unknown or differs from the saved record": "Подключаемая конфигурация монитора хоста неизвестна или отличается от сохранённой записи", + "The host monitor needs consent for privileged access to the host": "Для привилегированного доступа монитора хоста к хосту требуется согласие", + "The host monitor profile does not support another sysctl include": "Профиль монитора хоста не поддерживает дополнительную подключаемую конфигурацию sysctl", + "The host monitor uses the host network, without DHCP or its own gateway": "Монитор хоста использует сеть хоста, без DHCP и собственного шлюза", + "The host port is already in use:": "Порт хоста уже используется:", + "The host-monitor firewall bridge does not match the selected bridge": "Мост межсетевого экрана монитора хоста не совпадает с выбранным мостом", + "The host-monitor firewall declaration is invalid": "Объявление межсетевого экрана монитора хоста некорректно", + "The host-monitor firewall port does not match exactly one TCP port in the container contract": "Порт межсетевого экрана host-monitor не соответствует ровно одному TCP-порту в контракте контейнера", + "The host-monitor firewall port is invalid": "Недопустимый порт межсетевого экрана host-monitor", + "The host-monitor firewall port is not declared as the web port": "Порт брандмауэра host-monitor не объявлен как веб-порт", + "The host-monitor firewall port is not declared by this profile": "Порт межсетевого экрана host-monitor не объявлен в этом профиле", + "The host-monitor firewall subnet changed; no firewall rule was added": "Подсеть межсетевого экрана host-monitor изменилась; правило межсетевого экрана не было добавлено", + "The host-monitor web interface uses the host network.": "Веб-интерфейс host-monitor использует сеть хоста.", + "The identity of a member was replaced": "Идентификационные данные одного из участников были заменены", + "The image cache path is unsafe. Check the template storage before trying again.": "Путь к кэшу образов небезопасен. Проверьте хранилище шаблонов перед повторной попыткой.", + "The image changes the user expected by the adapter": "Образ изменяет пользователя, которого ожидает адаптер", + "The image could not be downloaded or verified. Check registry and storage access, then try again.": "Не удалось загрузить или проверить образ. Проверьте доступ к реестру и хранилищу, затем повторите попытку.", + "The image could not be read from its registry:": "Не удалось прочитать образ из его реестра:", + "The image declares data paths that are still stored in the rootfs": "Образ объявляет пути к данным, которые по-прежнему хранятся в rootfs", + "The image did not grant the application user access to the devices; check its native init. Host permissions were not relaxed.": "Образ не предоставил пользователю приложения доступ к устройствам; проверьте встроенную систему инициализации образа. Ограничения прав доступа на хосте не были ослаблены.", + "The image did not pass the integrity check": "Образ не прошёл проверку целостности", + "The image documentation describes them:": "Они описаны в документации образа:", + "The image does not declare support for this architecture:": "В образе не заявлена поддержка этой архитектуры:", + "The image download did not complete correctly; downloading it again...": "Загрузка образа завершилась некорректно; выполняется повторная загрузка...", + "The image expects files that are given to it one by one:": "Образ ожидает файлы, передаваемые ему по одному:", + "The image is already up to date; nothing was changed.": "Образ уже обновлён до актуальной версии; никаких изменений не внесено.", + "The image is in its registry, for one architecture.": "Образ доступен в своём реестре для одной архитектуры.", + "The image is in its registry.": "Образ доступен в своём реестре.", + "The image is in its registry:": "Образ доступен в своём реестре:", + "The image manifest failed integrity verification. Try again or contact the image publisher.": "Манифест образа не прошёл проверку целостности. Повторите попытку или обратитесь к издателю образа.", + "The image or its tag does not exist in the registry.": "Образа или его тега нет в реестре.", + "The image or tag was not found on {registry}, or this account cannot access it. Check the reference.": "Образ или тег не найден в {registry}, либо у этой учётной записи нет к нему доступа. Проверьте ссылку на образ.", + "The image requests NVIDIA, but the host has no working NVIDIA driver": "Образ запрашивает NVIDIA, но на хосте нет работающего драйвера NVIDIA", + "The image requests disabling part of the AppArmor or seccomp confinement. Continue only if you trust the image and accept this risk.": "Образ запрашивает отключение части ограничений AppArmor или seccomp. Продолжайте, только если доверяете образу и принимаете этот риск.", + "The image requests disabling part of the AppArmor or seccomp confinement. The Compose offers an optional AppArmor or seccomp relaxation; it will stay disabled unless the user selects it. Continue only if you trust the image and accept this risk.": "Образ запрашивает отключение части ограничений AppArmor или seccomp. В Compose предусмотрено необязательное ослабление ограничений AppArmor или seccomp; оно останется отключённым, если пользователь его не выберет. Продолжайте, только если вы доверяете образу и принимаете этот риск.", + "The image user is not numeric:": "Пользователь образа указан не числовым идентификатором:", + "The image was not found in its registry, or it is private:": "Образ не найден в реестре или является частным:", + "The imported Compose requests privileged, but the official jlesage/handbrake documentation does not require it; ProxMenux keeps the LXC unprivileged.": "Импортированный Compose запрашивает привилегированный режим, но официальная документация jlesage/handbrake его не требует; ProxMenux оставляет LXC непривилегированным.", + "The imported OCI groups are not numeric": "Импортированные группы OCI указаны не числовыми идентификаторами", + "The imported OCI user or group is not numeric": "Импортированный пользователь или группа OCI указаны не числовым идентификатором", + "The initial user name and password stay written in /etc/pve/lxc/.conf as INIT_USERNAME and INIT_PASSWORD. They can be removed after the first login, with the container stopped.": "Первоначальные имя пользователя и пароль остаются записанными в /etc/pve/lxc/.conf как INIT_USERNAME и INIT_PASSWORD. Их можно удалить после первого входа, остановив контейнер.", + "The installation asks which one to use for these paths.": "Во время установки будет предложено выбрать, какой вариант использовать для этих путей.", + "The installation ended with exit code": "Установка завершилась с кодом выхода", + "The installation requires a server restart to apply changes. Do you want to restart now?": "Для применения изменений после установки требуется перезагрузка сервера. Перезагрузить сейчас?", + "The installation runs on the Proxmox node itself, as root": "Установка выполняется непосредственно на узле Proxmox от имени root", + "The installation stopped because of an unexpected error": "Установка остановлена из-за непредвиденной ошибки", + "The installation/changes require a server restart to apply correctly. Do you want to reboot now?": "Для корректного применения результатов установки или изменений требуется перезагрузка сервера. Перезагрузить сейчас?", + "The installer must run as root on Proxmox VE": "Программа установки должна запускаться от имени root на Proxmox VE", + "The instance changed while it was being edited; open Modify again": "Экземпляр изменился во время редактирования; снова откройте «Изменить»", + "The instance does not use NVIDIA": "Экземпляр не использует NVIDIA", + "The instance has a pending operation": "У экземпляра есть незавершённая операция", + "The instance identity or status must be reviewed before updating.": "Перед обновлением необходимо проверить идентификационные данные или состояние экземпляра.", + "The instance is not ready to be updated": "Экземпляр не готов к обновлению", + "The instance is not ready; review its pending operation": "Экземпляр не готов; проверьте его незавершённую операцию", + "The instance record operation did not complete; no container was modified.": "Операция с записью экземпляра не завершена; ни один контейнер не был изменён.", + "The instance registry is not safe": "Реестр экземпляров небезопасен", + "The journal belongs to another VMID": "Журнал относится к другому VMID", + "The journal belongs to another stack": "Журнал относится к другому стеку", + "The journal has an incomplete recovery state": "В журнале сохранено неполное состояние восстановления", + "The kernel module is not active:": "Модуль ядра не активен:", + "The kernel module of version": "Модуль ядра версии", + "The kernel only loads signed modules and this installer builds the NVIDIA module unsigned, so the installation would fail.": "Ядро загружает только подписанные модули, а этот установщик собирает модуль NVIDIA без подписи, поэтому установка завершится ошибкой.", + "The local envelope is dropped and future backups do not upload anything. Uploaded envelopes already on PBS stay intact and remain recoverable with their original passphrase.": "Локальный конверт удаляется, и при последующем резервном копировании ничего не загружается. Конверты, уже загруженные на PBS, остаются нетронутыми и могут быть восстановлены с помощью исходной парольной фразы.", + "The local storage does not accept snippets": "Локальное хранилище не поддерживает сниппеты", + "The long test runs directly on the disk hardware.": "Длительный тест выполняется непосредственно аппаратными средствами диска.", + "The machine learning container is rebuilt with the image of the new choice. Its model cache, the library and the database are kept. The whole application is stopped and updated, as in an update. If the operation fails after a container was changed, the previous containers and the previous choice are restored. An operation that stops halfway is recovered from the OCI management menu.": "Контейнер машинного обучения пересоздаётся с использованием образа, соответствующего новому выбору. Кэш моделей, библиотека и база данных сохраняются. Всё приложение останавливается и обновляется, как при обычном обновлении. Если операция завершится ошибкой после изменения контейнера, прежние контейнеры и предыдущий выбор будут восстановлены. Восстановление после операции, прерванной на полпути, выполняется через меню управления OCI.", + "The main Compose service cannot be identified unambiguously": "Не удаётся однозначно определить основной сервис Compose", + "The main Compose service has no image.": "У основного сервиса Compose не указан образ.", + "The main container of this application is not on this host. Restore it too.": "Основной контейнер этого приложения отсутствует на этом узле. Восстановите и его.", + "The main member must stop first and start last": "Основной компонент должен останавливаться первым и запускаться последним", + "The main member of the stack is missing": "Основной компонент стека отсутствует", + "The managed host firewall rule could not be removed and was left unchanged.": "Не удалось удалить управляемое правило брандмауэра хоста; оно оставлено без изменений.", + "The manifest does not match its digest": "Манифест не соответствует своей контрольной сумме", + "The member journal belongs to another stack operation": "Журнал компонента относится к другой операции со стеком", + "The member journal is outside the registry": "Журнал компонента находится за пределами реестра", + "The mode of this job is stop: its guests are shut down during the backup.": "Для этого задания выбран режим stop: гостевые системы выключаются на время резервного копирования.", + "The mount evidence does not match the verified directories": "Данные о монтировании не соответствуют проверенным каталогам", + "The mount source or options were not kept": "Источник или параметры монтирования не были сохранены", + "The mounted source differs from the configured directory": "Подключённый источник отличается от настроенного каталога", + "The mounts of the new container do not match the proposal": "Точки монтирования нового контейнера не соответствуют предложенной конфигурации", + "The name must start with a lowercase letter and use only lowercase letters, digits, - or _": "Имя должно начинаться со строчной буквы и содержать только строчные буквы, цифры, - или _", + "The native GPU permissions were not kept": "Исходные права доступа к GPU не были сохранены", + "The native unprivileged idmap is required": "Требуется штатное сопоставление идентификаторов idmap для непривилегированного контейнера", + "The new SSH key was installed and is now authorized on the server.\nKey file:": "Новый ключ SSH установлен и теперь авторизован на сервере.\nФайл ключа:", + "The new SSH key was pushed to the LXC via 'pct exec' on": "Новый ключ SSH передан в LXC через 'pct exec' на", + "The new Valkey volume contains unexpected data": "Новый том Valkey содержит неожиданные данные", + "The new container did not pass validation": "Новый контейнер не прошёл проверку", + "The new container is not authorized by the operation journal": "Новый контейнер не разрешён журналом операций", + "The new image adds a symbolic link in a generated path": "Новый образ добавляет символическую ссылку в создаваемый путь", + "The new image changes the PostgreSQL major version; the data must be migrated before updating": "Новый образ меняет основную версию PostgreSQL; перед обновлением необходимо выполнить миграцию данных", + "The new image could not be installed": "Не удалось установить новый образ", + "The new image could not be installed:": "Не удалось установить новый образ:", + "The new image does not fit on the storage where images are downloaded:": "Для нового образа недостаточно места в хранилище, куда загружаются образы:", + "The new image does not keep a required executable": "Новый образ не сохраняет необходимый исполняемый файл", + "The new image is more recent than the minimum age set for scheduled updates; it is not installed yet.": "С момента выпуска нового образа прошло меньше времени, чем задано минимальным сроком для плановых обновлений; образ пока не установлен.", + "The new image requires additional persistent paths": "Новому образу требуются дополнительные пути для постоянного хранения данных", + "The new image requires additional persistent paths; use Modify": "Новому образу требуются дополнительные пути для постоянного хранения данных; используйте «Изменить»", + "The new prompt will be used in new terminal sessions.": "Новое приглашение командной строки будет использоваться в новых сеансах терминала.", + "The next visit to the dashboard will show the initial setup wizard.": "При следующем посещении панели управления откроется мастер первоначальной настройки.", + "The observed inventory differs from the validated runtime": "Обнаруженный состав компонентов отличается от проверенной среды выполнения", + "The oci-compose has errors:": "В oci-compose есть ошибки:", + "The oci-compose is incomplete: it does not say which image to install.": "oci-compose неполон: не указано, какой образ устанавливать.", + "The oci-compose is not valid JSON:": "oci-compose не является корректным JSON:", + "The official Tandoor startup executable is missing": "Отсутствует официальный исполняемый файл запуска Tandoor", + "The official Umami and PostgreSQL Compose services do not request privileged mode or relaxed host confinement.": "Официальные сервисы Compose для Umami и PostgreSQL не запрашивают привилегированный режим или ослабление ограничений изоляции на хосте.", + "The official inventory contains no NVIDIA devices": "В официальном перечне оборудования нет устройств NVIDIA", + "The official inventory contains no NVIDIA driver components": "В официальном перечне компонентов нет компонентов драйвера NVIDIA", + "The official startup cannot be reproduced": "Не удаётся воспроизвести официальный способ запуска", + "The official startup of the application is missing": "Отсутствует официальный механизм запуска приложения", + "The operation already finished; it is not restored automatically": "Операция уже завершена; она не восстанавливается автоматически", + "The operation could not be completed": "Не удалось завершить операцию", + "The operation stopped halfway. Choose \"Recover\" for this container in the OCI management menu to restore the previous installation.": "Операция прервалась на полпути. Выберите «Восстановить» для этого контейнера в меню управления OCI, чтобы вернуть предыдущую установку.", + "The operation stopped halfway. Choose \"{choice}\" for this container in the OCI management menu.": "Операция остановилась на полпути. Выберите «{choice}» для этого контейнера в меню управления OCI.", + "The operation was stopped because a shared directory changed its identity:": "Операция остановлена, поскольку изменились идентификационные данные общего каталога:", + "The original MOTD backup is unavailable; no changes were made": "Резервная копия исходного MOTD недоступна; изменения не внесены", + "The original MOTD configuration has been restored": "Исходная конфигурация MOTD восстановлена", + "The original MOTD state is unavailable; no changes were made": "Исходное состояние MOTD недоступно; изменения не внесены", + "The original rpcbind service state has been restored": "Исходное состояние службы rpcbind восстановлено", + "The original rpcbind state could not be restored completely": "Не удалось полностью восстановить исходное состояние rpcbind", + "The original rpcbind state is unavailable; no service state was changed": "Исходное состояние rpcbind недоступно; состояние служб не изменено", + "The package is currently in a broken state and is blocking apt updates on this system.": "Пакет сейчас находится в неисправном состоянии и блокирует обновления через apt в этой системе.", + "The parent of an NVIDIA destination is not a directory": "Родительский путь целевого объекта NVIDIA не является каталогом", + "The parent of the target is not a directory:": "Родительский путь целевого объекта не является каталогом:", + "The password could not be retrieved automatically": "Не удалось автоматически получить пароль", + "The passwords do not match. Please try again.": "Пароли не совпадают. Повторите попытку.", + "The path escapes the rootfs:": "Путь выходит за пределы rootfs:", + "The path must be absolute and normalized": "Путь должен быть абсолютным и нормализованным", + "The path overlaps an existing mount": "Путь пересекается с существующей точкой монтирования", + "The path to remove is not mounted:": "Удаляемый путь не смонтирован:", + "The persistent NVIDIA hook does not match the installer:": "Постоянный хук NVIDIA не соответствует установщику:", + "The persistent WebUI credentials were not found": "Сохранённые учётные данные WebUI не найдены", + "The physical NVIDIA selection changed": "Выбор физических устройств NVIDIA изменился", + "The post-start configuration cannot be applied with the LXC stopped": "Невозможно применить настройки, выполняемые после запуска, пока LXC остановлен", + "The postgres user was not found in the image": "Пользователь postgres не найден в образе", + "The prepared directory escapes the rootfs:": "Подготовленный каталог выходит за пределы rootfs:", + "The preselected VMID does not exist on this host:": "Предварительно выбранный VMID не существует на этом узле:", + "The previous recognition choice could not be put back:": "Не удалось восстановить предыдущий вариант распознавания:", + "The previous stack contract is not safe; review it before reusing it": "Предыдущий контракт стека небезопасен; проверьте его перед повторным использованием", + "The previous stack contract is not valid; it is not archived automatically": "Предыдущий контракт стека недействителен; он не архивируется автоматически", + "The previous stack contract still has containers or VMs:": "В предыдущем контракте стека всё ещё есть контейнеры или виртуальные машины:", + "The private address is already assigned to another container:": "Частный адрес уже назначен другому контейнеру:", + "The private bridge does not have the expected address:": "У частного сетевого моста отсутствует ожидаемый адрес:", + "The private journal has an unsafe owner or permissions": "Владелец или права доступа частного журнала не соответствуют требованиям безопасности", + "The private network allocator was not found": "Модуль выделения частных сетей не найден", + "The private network is still used by another guest and is kept:": "Частная сеть всё ещё используется другой гостевой системой и сохраняется:", + "The private network must be assigned automatically": "Частная сеть должна назначаться автоматически", + "The private network of the application is already in use on this host:": "Частная сеть приложения уже используется на этом узле:", + "The privilege mode of the container does not match the saved record": "Режим привилегий контейнера не соответствует сохранённой записи", + "The privileged deployment does not include the required explicit consent": "Для привилегированного развёртывания отсутствует обязательное явное согласие", + "The prlimit soft value exceeds the hard value": "Мягкий лимит prlimit превышает жёсткий лимит", + "The profile sets SETUP_PORT=8123. Port 80 is only used when that variable is emptied.": "В профиле задано SETUP_PORT=8123. Порт 80 используется только при пустом значении этой переменной.", + "The proposal changes the identity of the instance": "Предложение изменяет идентификационные данные экземпляра", + "The proposed ARC maximum is below Proxmox VE's pool-size guideline:": "Предлагаемый максимальный размер ARC ниже значения, рекомендуемого Proxmox VE с учётом размера пула:", + "The proposed changes no longer match; nothing was adopted": "Предлагаемые изменения больше не соответствуют текущему состоянию; ничего не было применено", + "The published views must be inside the common root": "Публикуемые представления должны находиться внутри общего корневого каталога", + "The read-only view does not apply the expected protection": "В представлении только для чтения не применяется ожидаемая защита", + "The read-only view was not published": "Представление только для чтения не было опубликовано", + "The read/write view was not published": "Представление с доступом на чтение и запись не было опубликовано", + "The recipe requires configuration at startup; its coordinated replay is not available": "Рецепт требует настройки при запуске; его согласованное повторное выполнение недоступно", + "The recognition change of Immich did not complete:": "Изменение распознавания Immich не завершено:", + "The recognition of Immich was not changed:": "Распознавание Immich не изменено:", + "The record belongs to another container": "Запись принадлежит другому контейнеру", + "The record does not belong to this operation": "Запись не относится к этой операции", + "The record no longer belongs to this operation": "Запись больше не относится к этой операции", + "The record of a member was replaced; the assembly is not resumed": "Запись одного из участников заменена; сборка не возобновляется", + "The record or diagnosis could not be completed; no update was run.": "Не удалось завершить запись или диагностику; обновление не запускалось.", + "The recorded container device GID does not match its configuration": "Записанный GID устройства контейнера не соответствует его конфигурации", + "The recovery did not complete. Review the log and choose \"Recover\" again for this container in the OCI management menu.": "Восстановление не завершилось. Просмотрите журнал и снова выберите «Восстановить» для этого контейнера в меню управления OCI.", + "The recovery did not complete. Review the log and choose \"{choice}\" again for this container in the OCI management menu.": "Восстановление не завершено. Просмотрите журнал и снова выберите «{choice}» для этого контейнера в меню управления OCI.", + "The registry authentication file is invalid; it was not changed.": "Файл аутентификации в реестре некорректен; он не был изменён.", + "The registry authentication file must be owned by root with mode 600.": "Владельцем файла аутентификации в реестре должен быть root, а права доступа должны быть 600.", + "The registry authentication file must have an absolute path.": "Путь к файлу аутентификации в реестре должен быть абсолютным.", + "The registry authentication path cannot contain symbolic links.": "Путь к файлу аутентификации в реестре не должен содержать символических ссылок.", + "The registry authentication path has an unsafe parent directory.": "Путь к файлу аутентификации в реестре содержит небезопасный родительский каталог.", + "The registry could not be reached. Check the connection and try again.": "Не удалось подключиться к реестру. Проверьте соединение и повторите попытку.", + "The registry credential directory must be owned by root with mode 700.": "Владельцем каталога учётных данных реестра должен быть root, а права доступа должны быть 700.", + "The registry did not return the saved image digest": "Реестр не вернул сохранённый дайджест образа", + "The registry limited the requests. Try again later, or add an account for this registry.": "Реестр ограничил количество запросов. Повторите попытку позже или добавьте учётную запись для этого реестра.", + "The registry refused access to the image.": "Реестр отказал в доступе к образу.", + "The registry returned incomplete or unsupported image metadata.": "Реестр вернул неполные или неподдерживаемые метаданные образа.", + "The registry returned invalid or unsupported image metadata.": "Реестр вернул некорректные или неподдерживаемые метаданные образа.", + "The remote does not exist; create and authorize it first in the WebUI:": "Удалённое подключение не существует; сначала создайте и авторизуйте его в WebUI:", + "The remote installer must run as root on Proxmox VE": "Удалённый установщик необходимо запускать от имени root на Proxmox VE", + "The remote must already be created and authorized in the Rclone web UI. This operation restarts the CT and publishes two FUSE views on the host.": "Удалённое хранилище уже должно быть создано и авторизовано в веб-интерфейсе Rclone. Эта операция перезапускает CT и публикует на хосте два представления FUSE.", + "The remote path must be relative and cannot contain line breaks": "Удалённый путь должен быть относительным и не должен содержать переносов строк", + "The removal could not be prepared:": "Не удалось подготовить удаление:", + "The render device does not belong to the GPU of that choice": "Устройство рендеринга не относится к GPU выбранного варианта", + "The render device does not exist:": "Устройство рендеринга не существует:", + "The repair must preserve the image dependencies:": "При исправлении необходимо сохранить зависимости образа:", + "The requested VMID block is already in use": "Запрошенный блок VMID уже используется", + "The requested machine learning GPU profile is not working; it is not replaced by CPU": "Запрошенный профиль GPU для машинного обучения не работает; замена GPU на CPU не выполняется", + "The resource edit could not be fully rolled back. Open Manage again to review and import the current Proxmox settings.": "Не удалось полностью отменить изменения ресурсов. Снова откройте раздел управления, чтобы проверить и импортировать текущие настройки Proxmox.", + "The restored service did not pass its health check": "Восстановленная служба не прошла проверку работоспособности", + "The restored service stopped; the recovery is not confirmed": "Восстановленная служба остановилась; восстановление не подтверждено", + "The reviewed Tandoor stack does not require a privileged LXC.": "Проверенный стек Tandoor не требует привилегированного LXC.", + "The root password is asked for when connecting from another machine. Inside the container, the mariadb command opens as root without a password.": "При подключении с другого компьютера запрашивается пароль root. Внутри контейнера команда mariadb открывает сеанс от имени root без пароля.", + "The rootfs capture only belongs to the running installation": "Снимок rootfs относится только к работающей установке", + "The rootfs is not managed by Proxmox": "rootfs не управляется Proxmox", + "The rootfs is not mounted": "rootfs не смонтирована", + "The same GPU cannot be used by two VMs at the same time.": "Один и тот же GPU нельзя использовать в двух виртуальных машинах одновременно.", + "The same connection can be given as container variables instead of the file: UN_SONARR_0_URL and UN_SONARR_0_API_KEY, or the UN_RADARR_0_ equivalents.": "Те же параметры подключения можно задать через переменные контейнера вместо файла: UN_SONARR_0_URL и UN_SONARR_0_API_KEY или их аналоги с префиксом UN_RADARR_0_.", + "The saved MOTD state is invalid; no changes were made": "Сохранённое состояние MOTD недопустимо; изменения не внесены", + "The saved OCI record is incomplete or has an unexpected format.": "Сохранённая запись OCI неполна или имеет неожиданный формат.", + "The saved image channel is checked for a newer image. If replacement is needed, the CT is stopped and a native backup is verified before its root is replaced. Host directories are outside that backup.": "В сохранённом канале образа проверяется наличие более нового образа. Если замена нужна, CT останавливается, и перед заменой его корня проверяется встроенная резервная копия. Каталоги хоста в эту резервную копию не входят.", + "The saved projection does not match the native evidence": "Сохранённая проекция не соответствует исходным данным", + "The saved record was replaced for": "Сохранённая запись заменена для", + "The saved utility package list is invalid; no packages were removed": "Сохранённый список пакетов утилит недопустим; пакеты не удалены", + "The script clones the osx-proxmox.com repository and once the setup is complete, the server will automatically reboot.": "Скрипт клонирует репозиторий osx-proxmox.com, и после завершения настройки сервер автоматически перезагрузится.", + "The script will continue to restore VM passthrough mode on the host and reuse existing hostpci entries.": "Скрипт продолжит восстановление режима проброса устройств в виртуальные машины на хосте и повторно использует существующие записи hostpci.", + "The script will preconfigure the selected GPU now and finalize hardware binding after reboot.": "Скрипт сейчас выполнит предварительную настройку выбранного GPU и завершит привязку оборудования после перезагрузки.", + "The selected AMD GPU does not report FLR reset support": "Выбранный GPU AMD не сообщает о поддержке сброса FLR", + "The selected AMD GPU is currently in power state D3cold": "Выбранный GPU AMD сейчас находится в состоянии питания D3cold", + "The selected AMD render device does not exist:": "Выбранное устройство рендеринга AMD не существует:", + "The selected CT does not match its OCI record. Its configuration will not be modified or deleted.": "Выбранный CT не соответствует своей записи OCI. Его конфигурация не будет изменена или удалена.", + "The selected GPU changed": "Выбранный GPU изменился", + "The selected GPU configuration already exists in this container.": "Выбранная конфигурация GPU уже существует в этом контейнере.", + "The selected GPU device does not exist:": "Выбранное устройство GPU не существует:", + "The selected GPU directory does not exist:": "Выбранный каталог GPU не существует:", + "The selected GPU has no dedicated .1 audio sibling function.": "У выбранного GPU нет отдельной сопутствующей аудиофункции .1.", + "The selected GPU is already assigned to another VM that is currently running:": "Выбранный GPU уже назначен другой ВМ, которая сейчас запущена:", + "The selected GPU is already assigned to this VM, but the host is not currently using vfio-pci for this device.": "Выбранный GPU уже назначен этой ВМ, но хост сейчас не использует vfio-pci для этого устройства.", + "The selected GPU is already assigned to this VM.": "Выбранный GPU уже назначен этой ВМ.", + "The selected GPU is already configured for passthrough to:": "Для выбранного GPU уже настроен проброс в:", + "The selected GPU is already present in this VM. Select another GPU to continue:": "Выбранный GPU уже присутствует в этой ВМ. Чтобы продолжить, выберите другой GPU:", + "The selected GPU is currently used by the following LXC container(s):": "Выбранный GPU сейчас используется следующими контейнерами LXC:", + "The selected GPU(s) are configured in these VM(s)": "Выбранные GPU настроены в следующих ВМ", + "The selected GPU(s) are configured in these VM(s):": "Выбранные GPU настроены в следующих ВМ:", + "The selected GPU(s) are used in these LXC container(s)": "Выбранные GPU используются в следующих контейнерах LXC", + "The selected GPU(s) are used in these LXC container(s):": "Выбранные GPU используются в следующих контейнерах LXC:", + "The selected Intel GPU belongs to Apollo Lake generation and is blocked by policy for VM passthrough due to host instability risk.": "Выбранный GPU Intel относится к поколению Apollo Lake, и его проброс в ВМ запрещён политикой из-за риска нестабильной работы хоста.", + "The selected Intel GPU does not expose a PCI reset interface": "Выбранный GPU Intel не предоставляет интерфейс сброса PCI", + "The selected Intel GPU has non-FLR reset support and unknown subtype": "Выбранный GPU Intel поддерживает сброс без FLR и имеет неизвестный подтип", + "The selected Intel GPU is currently in power state D3cold": "Выбранный GPU Intel сейчас находится в состоянии питания D3cold", + "The selected Intel render device does not exist:": "Выбранное устройство рендеринга Intel не существует:", + "The selected USB device will become unavailable to local applications and guests. Only one remote client can use it at a time. Share this device?": "Выбранное USB-устройство станет недоступно локальным приложениям и гостевым системам. Одновременно его сможет использовать только один удалённый клиент. Предоставить общий доступ к этому устройству?", + "The selected VM": "Выбранная ВМ", + "The selected VM is running.": "Выбранная ВМ запущена.", + "The selected base folder does not exist and could not be created:": "Выбранная базовая папка не существует, и создать её не удалось:", + "The selected bridge does not exist": "Выбранный мост не существует", + "The selected bridge has no IPv4 subnet for the host-monitor firewall": "У выбранного моста нет подсети IPv4 для межсетевого экрана host-monitor", + "The selected configuration needs to start the LXC during the installation": "Выбранная конфигурация требует запуска LXC во время установки", + "The selected container is unprivileged. A privileged container is required for direct device passthrough.": "Выбранный контейнер является непривилегированным. Для прямого проброса устройства требуется привилегированный контейнер.", + "The selected device": "Выбранное устройство", + "The selected device is not a block device": "Выбранное устройство не является блочным устройством", + "The selected device is not a character device": "Выбранное устройство не является символьным устройством", + "The selected directory does not exist:": "Выбранный каталог не существует:", + "The selected disk has an active swap partition. Aborting.": "На выбранном диске есть активный раздел подкачки. Операция прервана.", + "The selected disk is currently used by a RUNNING VM or CT. Stop it before formatting.": "Выбранный диск сейчас используется РАБОТАЮЩЕЙ виртуальной машиной или контейнером. Остановите виртуальную машину или контейнер перед форматированием.", + "The selected disk is now part of the system ZFS pool. Aborting.": "Выбранный диск теперь входит в состав системного пула ZFS. Операция прервана.", + "The selected disk now contains a system-critical mount. Aborting.": "На выбранном диске теперь находится критически важная для системы точка монтирования. Операция прервана.", + "The selected path does not exist on this host:": "Указанный путь не существует на этом узле:", + "The selected path is not a valid directory:": "Указанный путь не является допустимым каталогом:", + "The selected render device does not exist:": "Выбранное устройство рендеринга не существует:", + "The server connected you as guest instead of the specified user.": "Сервер подключил вас как гостя, а не как указанного пользователя.", + "The server may not have accessible shares.": "Возможно, на сервере нет доступных общих ресурсов.", + "The server may require authentication for actual share access.": "Для фактического доступа к общим ресурсам сервер может требовать аутентификацию.", + "The server refused password authentication for": "Сервер отклонил аутентификацию по паролю для", + "The server rejected": "Сервер отклонил", + "The service builds its own image; only a published image can be installed": "Сервис собирает собственный образ; установить можно только опубликованный образ", + "The service declares no image:": "Для сервиса не указан образ:", + "The setting has no final value:": "У параметра нет окончательного значения:", + "The settings could not be fully rolled back. Review the container and its saved modification before continuing.": "Не удалось полностью откатить настройки. Перед продолжением проверьте контейнер и сохранённое изменение его конфигурации.", + "The share already exists in smb.conf:": "Общий ресурс уже существует в smb.conf:", + "The shared destination is not a directory": "Целевой путь общего ресурса не является каталогом", + "The shared directory points to a protected host path": "Общий каталог указывает на защищённый путь хоста", + "The shared path exists but is not a directory:": "Путь общего ресурса существует, но не является каталогом:", + "The size of existing disks is not rounded": "Размер существующих дисков не округляется", + "The source Compose requests privileged: true, but this does not prove that the image needs a privileged LXC. ProxMenux will use an unprivileged LXC by default and will offer the broad mode only as an option. Continue only if you trust the image and accept this risk.": "В исходном файле Compose указано privileged: true, но это не доказывает, что образу требуется привилегированный контейнер LXC. По умолчанию ProxMenux будет использовать непривилегированный контейнер LXC и предложит режим с расширенными правами только как дополнительный вариант. Продолжайте, только если вы доверяете образу и принимаете этот риск.", + "The source Compose requests privileged: true, but this does not prove that the image needs a privileged LXC. ProxMenux will use an unprivileged LXC by default and will offer the broad mode only as an option. The Compose offers an optional AppArmor or seccomp relaxation; it will stay disabled unless the user selects it. The Docker rootlesskit profile does not exist in LXC and will be replaced by AppArmor unconfined, which is less restrictive. Continue only if you trust the image and accept this risk.": "В исходном файле Compose указано privileged: true, но это не доказывает, что образу требуется привилегированный контейнер LXC. По умолчанию ProxMenux будет использовать непривилегированный контейнер LXC и предложит режим с расширенными правами только как дополнительный вариант. В Compose предусмотрено необязательное ослабление ограничений AppArmor или seccomp; оно останется отключённым, пока пользователь его не выберет. Профиль rootlesskit для Docker отсутствует в LXC и будет заменён на AppArmor unconfined с менее строгими ограничениями. Продолжайте, только если вы доверяете образу и принимаете этот риск.", + "The source VM also has these audio devices, likely added together with the GPU. Remove them too?": "В исходной виртуальной машине также есть следующие аудиоустройства, вероятно, добавленные вместе с GPU. Удалить их тоже?", + "The specified directory does not exist:": "Указанный каталог не существует:", + "The stability period must be shorter than the healthcheck timeout": "Период стабильности должен быть короче тайм-аута проверки работоспособности", + "The stack contains devices or directives without a translation": "Стек содержит устройства или директивы, для которых нет преобразования", + "The stack does not have the expected native hook": "В стеке отсутствует ожидаемый нативный хук", + "The stack journal is outside the registry": "Журнал стека находится вне реестра", + "The stack member has no declared adaptation profile": "Для компонента стека не объявлен профиль адаптации", + "The stack name only accepts lowercase letters, numbers and hyphens": "Имя стека может содержать только строчные латинские буквы, цифры и дефисы", + "The stack needs member adaptations or a verification of missing volumes": "Для стека требуется адаптация компонентов или проверка отсутствующих томов", + "The stack operation had already finished": "Операция со стеком уже завершилась", + "The stack operation has not finished yet": "Операция со стеком ещё не завершилась", + "The stack operation stopped halfway. Select the stack again in the OCI management menu to recover it.": "Операция со стеком прервалась до завершения. Чтобы восстановить стек, выберите его снова в меню управления OCI.", + "The stack registry is incomplete; review the private contracts.": "Реестр стека неполон; проверьте внутренние контракты.", + "The stack startup hook was not found": "Хук запуска стека не найден", + "The stack update was saved.": "Обновление стека сохранено.", + "The startup differs from the declared Nextcloud adapter": "Запуск отличается от предусмотренного объявленным адаптером Nextcloud", + "The startup differs from the declared adapter": "Запуск отличается от предусмотренного объявленным адаптером", + "The staticfiles volume needs at least 1 GB": "Для тома staticfiles требуется не менее 1 ГБ", + "The storage chosen for this backup cannot be written:": "Запись в хранилище, выбранное для этой резервной копии, невозможна:", + "The storage chosen for this backup has no room either:": "В хранилище, выбранном для этой резервной копии, также нет свободного места:", + "The storage does not accept backups:": "Хранилище не поддерживает хранение резервных копий:", + "The storage has been removed and the disk unmounted.": "Хранилище удалено, диск размонтирован.", + "The storage has less than 40 GB free for the ROCm image.": "В хранилище доступно менее 40 ГБ для образа ROCm.", + "The sysctl content was modified outside the saved record": "Содержимое sysctl изменено вне сохранённой записи", + "The sysctl include is a link:": "Подключаемый файл sysctl является ссылкой:", + "The sysctl include is not a safe host file": "Подключаемый файл sysctl не является безопасным файлом хоста", + "The sysctl include is not restored over a symbolic link": "Подключаемый файл sysctl не восстанавливается поверх символической ссылки", + "The sysctl include is unknown or differs from the saved record": "Подключаемый файл sysctl неизвестен или отличается от сохранённой записи", + "The temporary password could not be retrieved.": "Не удалось получить временный пароль.", + "The test will continue even if you close this terminal.": "Тест продолжится, даже если вы закроете этот терминал.", + "The tmpfs mode is specified more than once": "Режим tmpfs указан более одного раза", + "The tmpfs mounts of the container differ from the saved record": "Монтирования tmpfs контейнера отличаются от сохранённой записи", + "The tmpfs path or size is outside the supported profile": "Путь или размер tmpfs не соответствует поддерживаемому профилю", + "The translated recipe changed during the preparation": "Переведённый рецепт изменился во время подготовки", + "The update check could not be completed. Try again later.": "Не удалось завершить проверку обновлений. Повторите попытку позже.", + "The value contains an unsupported character": "Значение содержит неподдерживаемый символ", + "The value must be a number:": "Значение должно быть числом:", + "The values do not match. Enter them again.": "Значения не совпадают. Введите их ещё раз.", + "The variable contains control characters:": "Переменная содержит управляющие символы:", + "The variable contains line breaks:": "Переменная содержит переводы строк:", + "The vfio.conf entries have been removed and initramfs rebuilt.": "Записи vfio.conf удалены, initramfs пересобран.", + "The volume ID does not contain a disk name for this CT; automatic adoption is unsafe": "Идентификатор тома не содержит имени диска для этого CT; автоматическое принятие под управление небезопасно", + "The watchdog could not be enabled. Turn it on from Manage installed OCI applications.": "Не удалось включить сторожевой таймер. Включите его в разделе «Управление установленными приложениями OCI».", + "The web UI password must have at least 24 characters": "Пароль веб-интерфейса должен содержать не менее 24 символов", + "The web UI user contains characters that are not allowed": "Имя пользователя веб-интерфейса содержит недопустимые символы", + "The web interface is served over plain HTTP on port 51821 (INSECURE=true). Keep it inside the local network or publish it through a reverse proxy with TLS.": "Веб-интерфейс доступен по незашифрованному HTTP на порту 51821 (INSECURE=true). Ограничьте доступ к нему локальной сетью или опубликуйте его через обратный прокси с TLS.", + "The web interface uses a self-signed certificate, so the browser shows a warning the first time.": "Веб-интерфейс использует самоподписанный сертификат, поэтому при первом обращении браузер показывает предупреждение.", + "The wizard writes a .conf file in /config. Restart the container afterwards so the bot starts with that configuration.": "Мастер записывает файл .conf в /config. После этого перезапустите контейнер, чтобы бот запустился с этой конфигурацией.", + "The world's fastest framework for building websites": "Самый быстрый в мире фреймворк для создания веб-сайтов", + "Thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.": "Thelounge (форк shoutIRC) — это веб-клиент IRC, который вы размещаете на собственном сервере.", + "Then bind-mount to container": "Затем подключите к контейнеру с помощью bind-монтирования", + "Then change the VM display to none (vga: none) when the guest is stable.": "Затем, когда гостевая система будет работать стабильно, установите для дисплея ВМ значение none (vga: none).", + "Then change the VM display to none (vga: none) when the system is stable.": "Затем, когда система будет работать стабильно, установите для дисплея ВМ значение none (vga: none).", + "Then restart the container so the new model appears in the list.": "Затем перезапустите контейнер, чтобы новая модель появилась в списке.", + "Then run this option again:": "Затем снова запустите этот пункт меню:", + "Then update /etc/fstab on the host with the same options.": "Затем обновите /etc/fstab на хосте, указав те же параметры.", + "There are extra disks or bind mounts outside the journal; the rootfs is not replaced": "Обнаружены дополнительные диски или bind-монтирования, не учтённые в журнале; rootfs не заменяется", + "There are no LXC containers available. OCI containers are not included.": "Нет доступных контейнеров LXC. Контейнеры OCI не учитываются.", + "There is no temporary container of this operation to keep the current disks": "Отсутствует временный контейнер этой операции для сохранения текущих дисков", + "There is no verified backup; a modified container is not touched": "Нет проверенной резервной копии; изменённый контейнер остаётся нетронутым", + "These Proxmox resources were added outside ProxMenux:": "Эти ресурсы Proxmox были добавлены вне ProxMenux:", + "These VMIDs are not free:": "Эти VMID уже заняты:", + "These are the changes that will be made": "Будут внесены следующие изменения", + "These changes were made in Proxmox outside ProxMenux:": "Эти изменения были внесены в Proxmox вне ProxMenux:", + "These container mount paths have an extension-like suffix:": "Следующие пути монтирования в контейнере имеют суффикс, похожий на расширение файла:", + "These containers were restored from a backup and this host has no record of their OCI application:": "Эти контейнеры были восстановлены из резервной копии, и на этом хосте нет записей об их приложениях OCI:", + "These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:": "Эти устройства входят в ту же группу IOMMU, что и выбранный GPU, и будут переданы виртуальной машине вместе с ним:", + "These host backups run with this job and expect its storage:": "Эти задания резервного копирования хоста выполняются вместе с данным заданием и требуют его хранилища:", + "These interface configurations will be removed": "Эти конфигурации интерфейсов будут удалены", + "These manual changes cannot be adopted safely:": "Эти изменения, внесённые вручную, невозможно безопасно принять:", + "These paths will not be restored live and will be extracted for manual recovery.": "Эти пути не будут восстановлены непосредственно в работающей системе; их содержимое будет извлечено для восстановления вручную.", + "These settings require an application-specific adaptation. The image was not downloaded and the container was not recreated.": "Эти настройки требуют адаптации под конкретное приложение. Образ не загружался, а контейнер не пересоздавался.", + "These values are asked during the installation:": "Во время установки запрашиваются следующие значения:", + "They are described in the image documentation:": "Они описаны в документации образа:", + "They will be added to oci-compose before continuing. Unsupported or changed resources are not imported.": "Перед продолжением они будут добавлены в oci-compose. Неподдерживаемые или изменённые ресурсы не импортируются.", + "They will be saved in oci-compose before continuing.": "Перед продолжением они будут сохранены в oci-compose.", + "This CIFS share is mounted with restrictive permissions.": "Этот общий ресурс CIFS смонтирован с ограниченными правами доступа.", + "This GPU is considered incompatible with GPU passthrough to a VM in ProxMenux.": "Этот GPU считается несовместимым с пробросом GPU в виртуальную машину в ProxMenux.", + "This NFS share is fully restricted — even the host root cannot write to it.": "Этот общий ресурс NFS имеет строгие ограничения доступа — даже пользователь root хоста не может записывать в него.", + "This Proxmox Backup Server has no active subscription, switch to the no-subscription repository? The inaccessible Enterprise PBS source will be disabled.": "У этого Proxmox Backup Server нет активной подписки. Переключиться на репозиторий без подписки? Недоступный источник Enterprise PBS будет отключён.", + "This VM requires extra installation steps, see install guide at:\nhttps://github.com/community-scripts/ProxmoxVE/discussions/144": "Для этой виртуальной машины требуются дополнительные шаги установки. См. руководство по установке:\nhttps://github.com/community-scripts/ProxmoxVE/discussions/144", + "This account is for {registry}. Enter an image from that registry.": "Эта учётная запись предназначена для {registry}. Укажите образ из этого реестра.", + "This action will:": "Это действие приведёт к следующему:", + "This application cannot be recovered yet:": "Это приложение пока невозможно восстановить:", + "This application cannot be recovered yet; nothing was changed:": "Это приложение пока нельзя восстановить; ничего не изменено:", + "This application is not an Immich installed by ProxMenux": "Это приложение не является экземпляром Immich, установленным с помощью ProxMenux", + "This application is not in the OCI catalog.": "Этого приложения нет в каталоге OCI.", + "This application is under watchdog: it is restarted automatically when it crashes. Turn the watchdog off?": "Это приложение находится под контролем сторожевого таймера: при сбое оно автоматически перезапускается. Отключить сторожевой таймер?", + "This archive does not contain a recognized backup layout.": "Этот архив не содержит распознаваемой структуры резервной копии.", + "This backup does not contain any restorable paths.": "Эта резервная копия не содержит путей, доступных для восстановления.", + "This backup does not fit on the system disk of the host; it is made on the storage:": "Эта резервная копия не помещается на системном диске хоста; она создаётся в хранилище:", + "This backup includes /etc/zfs/zpool.cache (host-specific ZFS state).": "Эта резервная копия включает /etc/zfs/zpool.cache (состояние ZFS, специфичное для хоста).", + "This backup is encrypted.": "Эта резервная копия зашифрована.", + "This backup was taken on kernel": "Эта резервная копия создана при работе с ядром", + "This cleanup will:": "В ходе этой очистки будут выполнены следующие действия:", + "This container belongs to a stack; publish the whole stack": "Этот контейнер входит в стек; опубликуйте весь стек", + "This container belongs to a stack; recover the whole stack": "Этот контейнер входит в стек; восстановите весь стек", + "This container does not have apt-get. NFS client installation only supports Debian/Ubuntu containers.": "В этом контейнере отсутствует apt-get. Установка клиента NFS поддерживается только в контейнерах Debian/Ubuntu.", + "This container does not have apt-get. Samba client installation only supports Debian/Ubuntu containers.": "В этом контейнере отсутствует apt-get. Установка клиента Samba поддерживается только в контейнерах Debian/Ubuntu.", + "This container has no GPU configured. Coral TPU works best alongside hardware video decoding (Quick Sync, VA-API, NVENC) for apps like Frigate.": "В этом контейнере не настроен GPU. Coral TPU работает лучше всего в сочетании с аппаратным декодированием видео (Quick Sync, VA-API, NVENC) в таких приложениях, как Frigate.", + "This container is managed by high availability. Remove ct:{vmid} from HA (Datacenter → HA, or ha-manager remove ct:{vmid}), repeat the operation and add it back to HA with the same settings.": "Этот контейнер управляется системой высокой доступности. Удалите ct:{vmid} из HA (Datacenter → HA или ha-manager remove ct:{vmid}), повторите операцию и снова добавьте его в HA с теми же настройками.", + "This container is not a member of a multi-container application": "Этот контейнер не входит в состав многоконтейнерного приложения", + "This container is not a registered OCI instance.": "Этот контейнер не является зарегистрированным экземпляром OCI.", + "This container was restored or came back from another host after its record on this host was written. Open this menu again to recover it; nothing was changed.": "Этот контейнер был восстановлен или вернулся с другого хоста после того, как его запись на этом хосте была сохранена. Откройте это меню снова, чтобы восстановить его; ничего не изменено.", + "This container was restored or came back from another host after its record on this host was written. Open this menu again to recover it; the container was not modified.": "Этот контейнер был восстановлен или возвращён с другого хоста после сохранения записи о нём на этом хосте. Откройте это меню ещё раз, чтобы восстановить его; контейнер не был изменён.", + "This converts all directory UIDs/GIDs by adding 100000": "При этом ко всем UID/GID каталогов прибавляется 100000", + "This converts all file UIDs/GIDs by adding 100000": "При этом ко всем UID/GID файлов прибавляется 100000", + "This creates a backup in case you need to revert changes": "При этом создаётся резервная копия на случай, если потребуется отменить изменения", + "This device is already attached": "Это устройство уже подключено", + "This directory is already shared:": "К этому каталогу уже предоставлен общий доступ:", + "This erases existing metadata.": "Это приведёт к удалению существующих метаданных.", + "This explicitly marks the container as privileged": "При этом контейнер явно помечается как привилегированный", + "This file decides what is mounted and with which privileges. Install it only if it comes from a source you trust.": "Этот файл определяет, что монтируется и с какими правами. Устанавливайте его только в том случае, если он получен из источника, которому вы доверяете.", + "This guarantees that device nodes are available before applying LXC GPU config.": "Это гарантирует доступность файлов устройств до применения конфигурации GPU для LXC.", + "This host architecture is not supported by the OCI image importer.": "Архитектура этого хоста не поддерживается средством импорта образов OCI.", + "This host has no active subscription, switch to the no-subscription repository? The inaccessible Enterprise PVE source will be disabled. Enterprise Ceph sources, if present, will be disabled without choosing a replacement Ceph channel; configure Ceph separately if needed.": "У этого хоста нет активной подписки. Переключиться на репозиторий no-subscription? Недоступный источник Enterprise PVE будет отключён. Источники Enterprise Ceph, если они есть, будут отключены без выбора другого канала Ceph; при необходимости настройте Ceph отдельно.", + "This host runs {name} on {suite}, but these {name} repositories are for another suite: {details}. Disable or remove them in {ui} and run the update again; no repository changed.": "На этом хосте используется {name} на базе {suite}, но следующие репозитории {name} предназначены для другого выпуска: {details}. Отключите или удалите их в {ui} и запустите обновление снова; ни один репозиторий не был изменён.", + "This image cannot be installed as it is described:": "Этот образ невозможно установить в соответствии с его описанием:", + "This image has no compatible Linux image for this host ({architecture}).": "В этом образе нет совместимого образа Linux для данного хоста ({architecture}).", + "This image requires the host module": "Для этого образа требуется модуль хоста", + "This import rejects these paths without checking whether they are files or directories.": "При этом импорте указанные пути отклоняются без проверки того, являются ли они файлами или каталогами.", + "This installation will:": "В ходе этой установки будут выполнены следующие действия:", + "This installer will:": "Этот установщик выполнит следующие действия:", + "This interface is configured but doesn't exist physically": "Этот интерфейс настроен, но физически не существует", + "This interface runs on the Proxmox node as root. Open OCI manager Apps from the ProxMenux menu on the Proxmox host.": "Этот интерфейс работает на узле Proxmox от имени root. Откройте OCI manager Apps из меню ProxMenux на хосте Proxmox.", + "This is IRREVERSIBLE.": "Это НЕОБРАТИМО.", + "This is a destructive action": "Это разрушительное действие", + "This is a simple configuration change": "Это простое изменение конфигурации", + "This is an external community script maintained by": "Это внешний скрипт сообщества. Его сопровождением занимается", + "This is an external script that creates a macOS VM in Proxmox VE in just a few steps, whether you are using AMD or Intel hardware.": "Это внешний скрипт, который за несколько шагов создаёт виртуальную машину macOS в Proxmox VE независимо от того, используете ли вы оборудование AMD или Intel.", + "This is not a coordinated stack": "Это не согласованно управляемый стек", + "This is not a valid image reference:": "Недопустимая ссылка на образ:", + "This is unexpected since credentials were validated.": "Это неожиданно, поскольку учётные данные прошли проверку.", + "This is what ProxMenux understood from the": "Вот что ProxMenux удалось понять из", + "This is what the oci-compose installs:": "Вот что устанавливает oci-compose:", + "This job will no longer start these host backups:": "Это задание больше не будет запускать создание следующих резервных копий хоста:", + "This marks the container as unprivileged": "Это помечает контейнер как непривилегированный", + "This may be normal for a fresh installation": "Для новой установки это может быть нормальным", + "This may take a few minutes. Press OK to proceed.": "Это может занять несколько минут. Нажмите OK, чтобы продолжить.", + "This may take a few seconds...": "Это может занять несколько секунд...", + "This may take several minutes...": "Это может занять несколько минут...", + "This means Proxmox handles mount lifecycle natively (no manual /etc/fstab needed for NFS/CIFS host storages).": "Это означает, что Proxmox самостоятельно управляет жизненным циклом монтирования (для хранилищ NFS/CIFS на хосте не требуется ручная настройка /etc/fstab).", + "This means the credentials are incorrect.": "Это означает, что учётные данные неверны.", + "This menu requires Proxmox Backup Server.": "Для работы этого меню требуется Proxmox Backup Server.", + "This might indicate network connectivity issues.": "Это может указывать на проблемы с сетевым подключением.", + "This monitor uses a privileged LXC, shares processes and network with Proxmox and disables AppArmor in the CT. It uses the IP address and firewall of the host. A compromised image could affect the host; do not expose its web UI to the Internet.": "Этот монитор использует привилегированный контейнер LXC, разделяет процессы и сеть с Proxmox и отключает AppArmor в контейнере CT. Он использует IP-адрес и межсетевой экран хоста. Скомпрометированный образ может повлиять на хост; не открывайте доступ к его веб-интерфейсу из Интернета.", + "This only removes the schedule. Existing backup archives are NOT deleted.": "При этом удаляется только расписание. Существующие архивы резервных копий НЕ удаляются.", + "This operation may take several minutes and requires internet connectivity.": "Эта операция может занять несколько минут и требует подключения к Интернету.", + "This operation requires a Proxmox VE host. Use the PBS menu on Proxmox Backup Server.": "Для этой операции требуется хост Proxmox VE. На Proxmox Backup Server используйте меню PBS.", + "This operation supports PBS 3 on Debian 12 and PBS 4 on Debian 13.": "Эта операция поддерживает PBS 3 на Debian 12 и PBS 4 на Debian 13.", + "This package was installed by older versions of the ProxMenux Coral installer that placed the M.2 kernel driver on every system, including USB-only setups. It is not needed for Coral USB devices, which use libedgetpu1-std / libedgetpu1-max only.": "Этот пакет устанавливался старыми версиями установщика Coral в ProxMenux, которые устанавливали драйвер ядра для M.2 во всех системах, включая системы только с USB-устройствами. Он не нужен для USB-устройств Coral, которые используют только libedgetpu1-std / libedgetpu1-max.", + "This passphrase is the ONLY way to access encrypted Borg backups.": "Эта парольная фраза — ЕДИНСТВЕННЫЙ способ получить доступ к зашифрованным резервным копиям Borg.", + "This path is already used as a mount point in this container.": "Этот путь уже используется как точка монтирования в этом контейнере.", + "This path is not a registered mount point. Use it anyway?": "Этот путь не зарегистрирован как точка монтирования. Всё равно использовать его?", + "This process changes file ownership inside the container": "Этот процесс изменяет владельцев файлов внутри контейнера", + "This profile only supports directory bind mounts": "Этот профиль поддерживает только bind-монтирование каталогов", + "This profile requires a privileged LXC, which reduces isolation from the host.": "Для этого профиля требуется привилегированный контейнер LXC, что снижает изоляцию от хоста.", + "This release channel is already active.": "Этот канал выпусков уже активен.", + "This removes the 'unprivileged: 1' line from the config": "При этом из конфигурации удаляется строка 'unprivileged: 1'", + "This removes the storage from Proxmox. The iSCSI target is not affected.": "При этом хранилище удаляется из Proxmox. Целевой объект iSCSI не затрагивается.", + "This replaces the currently installed keyfile.": "При этом заменяется установленный в данный момент файл ключа.", + "This returns available IQNs.": "При этом возвращаются доступные IQN.", + "This schedule is not valid.": "Это расписание недопустимо.", + "This script cannot be executed from the Proxmox web terminal.": "Этот скрипт нельзя запускать из веб-терминала Proxmox.", + "This script must be run as root.": "Этот скрипт необходимо запускать от имени root.", + "This script must be run on a Proxmox host.": "Этот скрипт необходимо запускать на хосте Proxmox.", + "This script will apply the following optimizations and advanced adjustments to your Proxmox Backup Server": "Этот скрипт применит следующие оптимизации и расширенные настройки к вашему серверу Proxmox Backup Server", + "This script will apply the following optimizations and advanced adjustments to your Proxmox VE server": "Этот скрипт применит следующие оптимизации и расширенные настройки к вашему серверу Proxmox VE", + "This script will update your Proxmox VE system with advanced options:": "Этот скрипт обновит вашу систему Proxmox VE с использованием расширенных параметров:", + "This session is running in the Monitor terminal. Running it from here would cut the connection mid-install and leave the switch in a broken state.": "Этот сеанс запущен в терминале Monitor. Выполнение отсюда приведёт к разрыву соединения во время установки и оставит переключение в незавершённом, неработоспособном состоянии.", + "This session is running in the Monitor terminal. Updating from here would restart the Monitor service and cut the connection mid-install, leaving the update in a broken state.": "Этот сеанс запущен в терминале Monitor. Обновление отсюда приведёт к перезапуску службы Monitor и разрыву соединения во время установки, в результате чего обновление останется в незавершённом, неработоспособном состоянии.", + "This shows the storage type and disk identifier": "Здесь показаны тип хранилища и идентификатор диска", + "This stack has no saved members to update.": "В этом стеке нет сохранённых компонентов для обновления.", + "This stack needs rootfs adaptations that coordinated updates cannot replay yet.": "Для этого стека требуются изменения rootfs, которые механизм согласованного обновления пока не может повторно применить.", + "This stack requires replaying specific rootfs adaptations. Coordinated updates are not yet enabled for it.": "Для этого стека требуется повторное применение особых адаптаций rootfs. Координируемые обновления для него пока не включены.", + "This state has a high probability of VM startup/reset failures.": "В этом состоянии высока вероятность сбоев при запуске или сбросе виртуальной машины.", + "This state indicates a high risk of passthrough failure due to": "Это состояние указывает на высокий риск сбоя проброса из-за", + "This template requests the host PID namespace, which has no validated safe LXC translation yet": "Этот шаблон запрашивает пространство имён PID хоста, для которого пока нет проверенного безопасного преобразования в конфигурацию LXC", + "This tool is designed for systems with AMD GPUs.": "Этот инструмент предназначен для систем с графическими процессорами AMD.", + "This tool is designed for systems with Intel GPUs.": "Этот инструмент предназначен для систем с графическими процессорами Intel.", + "This translator only supports the Nextcloud stack": "Этот преобразователь поддерживает только стек Nextcloud", + "This value is required.": "Это значение обязательно.", + "This variant requires the device": "Для этого варианта требуется устройство", + "This version does not build against the running kernel.": "Эта версия не собирается для текущего работающего ядра.", + "This will RESET the ProxMenux Monitor login credentials on this host:": "Это действие СБРОСИТ учётные данные для входа в ProxMenux Monitor на этом хосте:", + "This will add the mount to /etc/fstab so it persists after reboot.": "Это действие добавит запись монтирования в /etc/fstab, чтобы оно сохранялось после перезагрузки.", + "This will completely remove Fail2Ban and its configuration. Continue?": "Это действие полностью удалит Fail2Ban и его конфигурацию. Продолжить?", + "This will completely remove Lynis from the system. Continue?": "Это действие полностью удалит Lynis из системы. Продолжить?", + "This will create a New %s. Proceed?": "Будет создан новый объект %s. Продолжить?", + "This will create a new VM": "Это действие создаст новую виртуальную машину", + "This will deploy a Tailscale VPN gateway for secure remote access.": "Будет развёрнут VPN-шлюз Tailscale для безопасного удалённого доступа.", + "This will install and configure Fail2Ban with:": "Это действие установит и настроит Fail2Ban со следующими параметрами:", + "This will install the Beta version from the develop branch and enable beta update checks.\n\nBeta builds may contain bugs or incomplete features.\n\nContinue?": "Будет установлена бета-версия из ветки develop и включена проверка бета-обновлений.\n\nБета-сборки могут содержать ошибки или незавершённые функции.\n\nПродолжить?", + "This will launch the GPU assistant after VM creation and may require a host reboot.": "После создания виртуальной машины будет запущен помощник по настройке GPU. Может потребоваться перезагрузка хоста.", + "This will reinstall and reconfigure Fail2Ban with the default ProxMenux settings. Continue?": "Будет выполнена переустановка и повторная настройка Fail2Ban со стандартными настройками ProxMenux. Продолжить?", + "This will reinstall core Proxmox packages and regenerate certificates": "Будут переустановлены основные пакеты Proxmox и заново созданы сертификаты", + "This will reinstall the Stable version from the main branch and disable beta update checks.\n\nContinue?": "Будет переустановлена стабильная версия из ветки main и отключена проверка бета-обновлений.\n\nПродолжить?", + "This will remove NVIDIA drivers and related configuration. Do you want to continue?": "Будут удалены драйверы NVIDIA и связанные с ними настройки. Продолжить?", + "This will remove and reinstall Lynis from the latest GitHub source. Continue?": "Lynis будет удалён и переустановлен из последней версии исходного кода на GitHub. Продолжить?", + "This will remove the Coral TPU drivers (gasket DKMS + libedgetpu) and related configuration. Any LXC container with apex passthrough will lose access to /dev/apex_* after reboot. Continue?": "Будут удалены драйверы TPU Coral (gasket DKMS + libedgetpu) и связанные с ними настройки. После перезагрузки все контейнеры LXC с пробросом apex потеряют доступ к /dev/apex_*. Продолжить?", + "This will remove the mount from /etc/fstab and delete credentials if present.": "Из /etc/fstab будет удалена запись монтирования, а также будут удалены учётные данные, если они есть.", + "This will remove the mount from /etc/fstab.": "Из /etc/fstab. будет удалена запись монтирования.", + "This will restart the network service and may cause a brief disconnection. Continue?": "Сетевая служба будет перезапущена, что может привести к кратковременному разрыву соединения. Продолжить?", + "This will take time. Answer prompts carefully - see notes below.": "Это займёт некоторое время. Внимательно отвечайте на запросы — см. примечания ниже.", + "This will upgrade this node to Proxmox VE 9 on Debian Trixie.": "Этот узел будет обновлён до Proxmox VE 9 на базе Debian Trixie.", + "Thunderbird is a free and open-source personal information manager primarily used as an e-mail client with a calendar and contactbook, as well as an RSS feed reader, chat client, and news client.": "Thunderbird — свободный менеджер персональной информации с открытым исходным кодом, который используется преимущественно как почтовый клиент с календарём и адресной книгой, а также как приложение для чтения RSS-лент, клиент чата и клиент групп новостей.", + "Tick the paths to include in this backup. Press \"Add custom path\" to add a folder or file of your own to the list.": "Отметьте пути, которые нужно включить в эту резервную копию. Нажмите «Добавить свой путь», чтобы добавить в список нужную папку или файл.", + "Tick the paths to remove (they will not be deleted from disk — only from this list):": "Отметьте пути для удаления (они будут удалены только из этого списка, но не с диска):", + "Time is up; Home Assistant OS could not be confirmed as running": "Время ожидания истекло; не удалось подтвердить, что Home Assistant OS работает", + "Time settings configured - Timezone:": "Настройки времени применены — часовой пояс:", + "Time synchronization reset to UTC": "Синхронизация времени сброшена на UTC", + "Time zone of the fixed daily run times": "Часовой пояс для фиксированного времени ежедневных запусков", + "Time-series database for telemetry and IoT workloads.": "База данных временных рядов для телеметрии и рабочих нагрузок IoT.", + "Timezone": "Часовой пояс", + "Tip: Also mount the VirtIO ISO for drivers and guest agent installer": "Совет: также подключите ISO-образ VirtIO с драйверами и установщиком гостевого агента", + "Tip: You can install the QEMU Guest Agent inside the VM with:": "Совет: вы можете установить гостевой агент QEMU внутри виртуальной машины с помощью:", + "Tip: zfs set acltype=posixacl xattr=sa / enables full ACL support.": "Совет: zfs set acltype=posixacl xattr=sa / включает полную поддержку ACL.", + "Tmpfs size in MiB for": "Размер tmpfs в MiB для", + "To add a model, open the console of the container in Proxmox and download it into /models, for example:": "Чтобы добавить модель, откройте консоль контейнера в Proxmox и загрузите её в /models, например:", + "To allow LXC write access, change the NFS export on the server to include:": "Чтобы разрешить LXC доступ на запись, измените параметры экспорта NFS на сервере, добавив:", + "To apply it to the current shell now, run:": "Чтобы применить это к текущей оболочке прямо сейчас, выполните:", + "To assign VFs to VMs or LXCs, edit the configuration manually via the Proxmox web interface. The Physical Function will remain bound to the native driver.": "Чтобы назначить VF виртуальным машинам или контейнерам LXC, вручную измените конфигурацию через веб-интерфейс Proxmox. Физическая функция останется привязанной к штатному драйверу.", + "To continue with Add GPU to LXC, first switch the host to GPU -> LXC mode and reboot.": "Чтобы продолжить добавление GPU в LXC, сначала переключите хост в режим GPU -> LXC и перезагрузите его.", + "To copy any of these files verbatim, restore this backup on a host with the same kernel major.minor.": "Чтобы скопировать любой из этих файлов без изменений, восстановите эту резервную копию на хосте с той же основной и дополнительной версией ядра (major.minor).", + "To exit iftop, press q": "Чтобы выйти из iftop, нажмите q", + "To exit iptraf-ng, press x": "Чтобы выйти из iptraf-ng, нажмите x", + "To fix this, do ONE of the following:": "Чтобы исправить это, выполните ОДНО из следующих действий:", + "To install host drivers, first remove the GPU from VM passthrough configuration and reboot.": "Чтобы установить драйверы на хосте, сначала удалите GPU из конфигурации проброса в виртуальную машину и перезагрузите хост.", + "To install the monitor, reinstall ProxMenux with the latest version": "Чтобы установить монитор, переустановите ProxMenux, используя последнюю версию", + "To pass SR-IOV Virtual Functions to a VM, edit the VM configuration manually via the Proxmox web interface.": "Чтобы пробросить виртуальные функции SR-IOV в виртуальную машину, вручную измените её конфигурацию через веб-интерфейс Proxmox.", + "To pass SR-IOV Virtual Functions to a container, edit the LXC configuration manually via the Proxmox web interface. The Physical Function will remain bound to the native driver.": "Чтобы пробросить виртуальные функции SR-IOV в контейнер, вручную измените конфигурацию LXC через веб-интерфейс Proxmox. Физическая функция останется привязанной к штатному драйверу.", + "To remove partial VM:": "Чтобы удалить частично созданную виртуальную машину:", + "To restore": "Для восстановления", + "To restore it on another host, keep this file (not included in the vzdump backup):": "Чтобы восстановить его на другом хосте, сохраните этот файл (он не входит в резервную копию vzdump):", + "To revert changes:": "Чтобы отменить изменения:", + "To start the VM:": "Чтобы запустить виртуальную машину:", + "To stop:": "Чтобы остановить:", + "To use Coral from a regular app, install the libedgetpu runtime via the usual method for your distro (community package or build from source). The simplest path is to run an app container that bundles the runtime — e.g. the Frigate Docker image — passing the device through with": "Чтобы использовать Coral в обычном приложении, установите среду выполнения libedgetpu обычным для вашего дистрибутива способом (пакет сообщества или сборка из исходного кода). Самый простой способ — запустить контейнер приложения со встроенной средой выполнения, например образ Frigate для Docker, пробросив устройство с помощью", + "To use GPU passthrough, please create a new VM configured with:": "Чтобы использовать проброс GPU, создайте новую виртуальную машину со следующими параметрами:", + "To use a custom Fastfetch logo, place your ASCII logo file in:\n\n/usr/local/share/fastfetch/logos/\n\nThe file should not exceed 35 lines to fit properly in the terminal.\n\nPress OK to continue and select your logo.": "Чтобы использовать собственный логотип Fastfetch, поместите файл с логотипом в формате ASCII в:\n\n/usr/local/share/fastfetch/logos/\n\nФайл должен содержать не более 35 строк, чтобы логотип корректно помещался в терминале.\n\nНажмите OK, чтобы продолжить и выбрать логотип.", + "To use the GPU again in LXC, run Add GPU to LXC from GPUs and Coral-TPU Menu": "Чтобы снова использовать GPU в LXC, выберите «Добавить GPU в LXC» в меню GPU и Coral-TPU", + "To use the VM without issues, the host must be restarted before starting it.": "Для корректной работы ВМ необходимо перезагрузить хост перед её запуском.", + "To use this share from an LXC, bind-mount it via:": "Чтобы использовать этот общий ресурс из LXC, подключите его с помощью bind-монтирования:", + "Token": "Токен", + "Tool exit code:": "Код завершения инструмента:", + "Tool output:": "Вывод инструмента:", + "Tools": "Инструменты", + "Top memory processes in CT": "Процессы с наибольшим потреблением памяти в CT", + "Top-level configs, secrets and other global options are not yet supported": "Конфигурации, секреты и другие глобальные параметры верхнего уровня пока не поддерживаются", + "Top-level volume options are not yet supported": "Параметры томов верхнего уровня пока не поддерживаются", + "Tor SOCKS5 and HTTP proxy.": "SOCKS5- и HTTP-прокси Tor.", + "Tor is a proxy, not a website. It has no web interface.": "Tor — это прокси, а не веб-сайт. У него нет веб-интерфейса.", + "TorrServer": "TorrServer", + "Total": "Всего", + "Total members:": "Всего участников:", + "Total routes": "Всего маршрутов", + "Total size:": "Общий размер:", + "Toxiproxy": "Toxiproxy", + "Track 3D printer filament spools and usage.": "Учёт катушек филамента для 3D-принтера и его расхода.", + "Track movies, television, anime and games you want to enjoy.": "Ведите список фильмов, телепередач и аниме, которые хотите посмотреть, и игр, в которые хотите поиграть.", + "Track subscriptions and recurring expenses.": "Отслеживайте подписки и регулярные расходы.", + "Track your music listening history on your own server.": "Храните историю прослушивания музыки на собственном сервере.", + "Track your reading, books and history in a private library.": "Ведите учёт книг и историю чтения в личной библиотеке.", + "Traefik ping endpoint": "Конечная точка ping в Traefik", + "Transaction log:": "Журнал транзакций:", + "Translation files:": "Файлы перевода:", + "Transmission is designed for easy, powerful use. Transmission has the features you want from a BitTorrent client: encryption, a web interface, peer exchange, magnet links, DHT, µTP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more.": "Transmission сочетает простоту использования с широкими возможностями. Transmission предлагает все необходимые функции клиента BitTorrent: шифрование, веб-интерфейс, обмен пирами, magnet-ссылки, DHT, µTP, перенаправление портов с помощью UPnP и NAT-PMP, поддержку веб-сидов, отслеживание каталогов, редактирование трекеров, общие ограничения скорости и ограничения для отдельных торрентов и многое другое.", + "Tried pvesm path and manual detection methods": "Опробованы команда pvesm path и методы ручного обнаружения", + "Trivy Server": "Сервер Trivy", + "Trust this certificate and save it for scheduled backups?": "Доверять этому сертификату и сохранить его для резервного копирования по расписанию?", + "Trusted origins for a hostname or reverse proxy, with scheme and port (optional)": "Доверенные источники для имени хоста или обратного прокси с указанием схемы и порта (необязательно)", + "Try Again": "Повторить попытку", + "Try a different search term.": "Попробуйте другой поисковый запрос.", + "Try accessing": "Попробуйте открыть", + "Try another archive": "Попробуйте другой архив", + "Try automatic repair of detected issues": "Попробовать автоматически устранить обнаруженные проблемы", + "Try username and password authentication.": "Попробуйте аутентификацию по имени пользователя и паролю.", + "Turn databases into collaborative no-code apps.": "Превратите базы данных в приложения для совместной работы без написания кода.", + "Tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.": "Tvheadend работает как прокси-сервер: это сервер потокового телевещания и записи телепередач для Linux, FreeBSD и Android с поддержкой DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP и HDHomeRun в качестве источников входного сигнала.", + "Twingate Connector for self-hosted server": "Twingate Connector для самостоятельно размещённого сервера", + "Two-factor authentication and backup codes will be removed.": "Двухфакторная аутентификация и резервные коды будут удалены.", + "Type": "Тип", + "Type the device path EXACTLY to confirm formatting:": "Введите путь к устройству В ТОЧНОСТИ, чтобы подтвердить форматирование:", + "Type the full disk path to confirm": "Введите полный путь к диску для подтверждения", + "Type:": "Тип:", + "Type: attached to PVE storage": "Тип: подключён к хранилищу PVE", + "Typed value does not match selected disk. Operation cancelled.": "Введённое значение не соответствует выбранному диску. Операция отменена.", + "Typesense": "Typesense", + "Typesense API key": "Ключ API Typesense", + "UID in CT": "UID в CT", + "UID of the plex user (also owner of the GPU device)": "UID пользователя plex (также владельца устройства GPU)", + "UID that Emby runs as": "UID пользователя, от имени которого работает Emby", + "UPGRADE PROMPTS - RECOMMENDED ANSWERS:": "ЗАПРОСЫ ПРИ ОБНОВЛЕНИИ — РЕКОМЕНДУЕМЫЕ ОТВЕТЫ:", + "UPS monitoring and power outage notification system": "Система мониторинга ИБП и уведомлений об отключении электропитания", + "USB Accelerators:": "USB-ускорители:", + "USB bus directory": "Каталог шины USB", + "USB bus numbers can change after reconnecting or rebooting.": "Номера шин USB могут измениться после повторного подключения или перезагрузки.", + "USB device of the UPS": "USB-устройство ИБП", + "USB device to attach": "USB-устройство для подключения", + "USB disk target": "Целевой USB-диск", + "USB drives mounted now:": "Смонтированные USB-накопители:", + "USB libedgetpu1": "libedgetpu1 для USB", + "USB or serial device node": "Узел USB-устройства или устройства последовательного порта", + "USB/IP configuration updated. Open status to check the connection.": "Конфигурация USB/IP обновлена. Откройте раздел состояния, чтобы проверить подключение.", + "USB/IP over SSH": "USB/IP через SSH", + "USB/IP server IP address or DNS hostname:": "IP-адрес или DNS-имя сервера USB/IP:", + "UUP Dump script not found.": "Скрипт UUP Dump не найден.", + "UUp Dump ISO creator Custom": "Создание пользовательского ISO с помощью UUp Dump", + "Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.": "Ubooquity — бесплатный, лёгкий и простой в использовании домашний сервер для комиксов и электронных книг. Он позволяет получать доступ к вашим файлам из любого места с планшета, электронной книги, телефона или компьютера.", + "Udev rules for Coral USB devices added and rules reloaded.": "Правила Udev для USB-устройств Coral добавлены, и правила перезагружены.", + "Udev rules for Coral USB devices already exist.": "Правила Udev для USB-устройств Coral уже существуют.", + "Udev rules for Coral USB devices appended and rules reloaded.": "Правила Udev для USB-устройств Coral добавлены в конец файла, и правила перезагружены.", + "UltiMaker Cura is free, easy-to-use 3D printing software trusted by millions of users. Fine-tune your 3D model with 400+ settings for the best slicing and printing results.": "UltiMaker Cura — бесплатная и простая в использовании программа для 3D-печати, которой доверяют миллионы пользователей. Более 400 настроек позволяют точно настроить 3D-модель для получения наилучших результатов нарезки на слои и печати.", + "Umbrel OS installer script by Helper Scripts\n\nVisit the GitHub repo to learn more, contribute, or support the project:\n\nhttps://community-scripts.github.io/ProxmoxVE/scripts?id=umbrel-os-vm": "Скрипт установки Umbrel OS от Helper Scripts\n\nПосетите репозиторий на GitHub, чтобы узнать больше, внести свой вклад или поддержать проект:\n\nhttps://community-scripts.github.io/ProxmoxVE/scripts?id=umbrel-os-vm", + "Unable to detect Proxmox version": "Не удалось определить версию Proxmox", + "Unable to detect Proxmox version.": "Не удалось определить версию Proxmox.", + "Unable to detect a valid storage location for EFI disk.": "Не удалось найти подходящее хранилище для диска EFI.", + "Unable to detect a valid storage location.": "Не удалось найти подходящее хранилище.", + "Unable to determine the installed memory.": "Не удалось определить объём установленной оперативной памяти.", + "Unable to identify the root filesystem. Aborting.": "Не удалось определить корневую файловую систему. Операция прервана.", + "Unable to resolve system ZFS pool disks. Aborting.": "Не удалось определить диски системного пула ZFS. Операция прервана.", + "Unable to resolve system disk topology. Aborting.": "Не удалось определить топологию системных дисков. Операция прервана.", + "Unapplied changes": "Неприменённые изменения", + "Understand the security implications of privileged containers": "Ознакомьтесь с рисками для безопасности при использовании привилегированных контейнеров", + "Unexpected Proxmox inventory; recovery blocked": "Обнаружен неожиданный состав ресурсов Proxmox; восстановление заблокировано", + "Unexpected formatting directory in the new Valkey volume": "В новом томе Valkey обнаружен неожиданный каталог форматирования", + "Ungoogled Chromium is Google Chromium, sans dependency on Google web services.": "Ungoogled Chromium — это Google Chromium без зависимости от веб-сервисов Google.", + "Unified LLM Fine-Tuning with 100+ Models": "Единый подход к дообучению более 100 моделей LLM", + "Uninstall Coral drivers and configuration": "Удалить драйверы и конфигурацию Coral", + "Uninstall Fail2Ban": "Удалить Fail2Ban", + "Uninstall Lynis": "Удалить Lynis", + "Uninstall NFS Server": "Удалить сервер NFS", + "Uninstall NVIDIA drivers and configuration": "Удалить драйверы и конфигурацию NVIDIA", + "Uninstall Optimizations": "Удалить оптимизации", + "Uninstall ProxMenux": "Удалить ProxMenux", + "Uninstall Samba Server": "Удалить сервер Samba", + "Uninstall optimizations": "Удалить оптимизации", + "Uninstallation Summary:": "Итоги удаления:", + "Uninstallation completed. Press Enter to continue...": "Удаление завершено. Нажмите Enter, чтобы продолжить...", + "Uninstalling Ceph...": "Удаление Ceph...", + "Uninstalling Fastfetch...": "Удаление Fastfetch...", + "Uninstalling Figurine...": "Удаление Figurine...", + "Uninstalling Log2RAM...": "Удаление Log2RAM...", + "Uninstalling amdgpu_top...": "Удаление amdgpu_top...", + "Uninstalling current NVIDIA driver before installing new version": "Удаление текущего драйвера NVIDIA перед установкой новой версии", + "Uninstalling intel-gpu-tools...": "Удаление intel-gpu-tools...", + "Uninstalling kexec-tools and removing custom service...": "Удаление kexec-tools и пользовательской службы...", + "Uninstalling log2ram (all versions)...": "Удаление log2ram (все версии)...", + "Universal Group Configuration:": "Настройка универсальной группы:", + "Universal Group:": "Универсальная группа:", + "Universal NFS server has been completely uninstalled!": "Универсальный сервер NFS полностью удалён!", + "Universal compatibility: ENABLED": "Универсальная совместимость: ВКЛЮЧЕНА", + "Universal group: NOT CONFIGURED": "Универсальная группа: НЕ НАСТРОЕНА", + "Universal sharedfiles group configured with": "Универсальная группа sharedfiles настроена с", + "Unknown": "Неизвестно", + "Unknown CPU type. IOMMU might not be properly enabled.": "Неизвестный тип процессора. Возможно, IOMMU включён некорректно.", + "Unknown CPU vendor. Cannot determine IOMMU parameter.": "Неизвестный производитель процессора. Невозможно определить параметр IOMMU.", + "Unknown GPU": "Неизвестный графический процессор", + "Unknown adapter role": "Неизвестная роль адаптера", + "Unknown credential service:": "Неизвестная служба учётных данных:", + "Unknown dependency:": "Неизвестная зависимость:", + "Unknown host monitor": "Неизвестный монитор хоста", + "Unknown model": "Неизвестная модель", + "Unknown size": "Неизвестный размер", + "Unknown storage controller": "Неизвестный контроллер хранилища", + "Unmount NFS Share": "Отмонтировать общий ресурс NFS", + "Unmount Samba Share": "Отмонтировать общий ресурс Samba", + "Unmount USB drive": "Отмонтировать USB-накопитель", + "Unmount a USB drive": "Отмонтировать USB-накопитель", + "Unmount and cleanup (LVM only):": "Отмонтирование и очистка (только LVM):", + "Unmount failed": "Не удалось отмонтировать", + "Unmount it before proceeding. The script will verify this at execution.": "Отмонтируйте его, прежде чем продолжить. Скрипт проверит это при выполнении.", + "Unmounted": "Отмонтировано", + "Unmounted successfully": "Успешно отмонтировано", + "Unmounted:": "Отмонтировано:", + "Unmounting": "Отмонтирование", + "Unmounting disk...": "Отмонтирование диска...", + "Unpackerr configured": "Unpackerr настроен", + "Unpackerr has no web interface and extracts nothing until it is pointed at a Starr application. Uncomment the [sonarr.0] or [radarr.0] section in /config/unpackerr.conf inside the container, set its url and api_key, then restart the container.": "У Unpackerr нет веб-интерфейса, и он ничего не распаковывает, пока не будет настроено подключение к приложению Starr. Раскомментируйте раздел [sonarr.0] или [radarr.0] в файле /config/unpackerr.conf внутри контейнера, задайте для него url и api_key, затем перезапустите контейнер.", + "Unpackerr requires Sonarr, Radarr or Lidarr in this suite": "Для работы Unpackerr требуется Sonarr, Radarr или Lidarr из этого набора приложений", + "Unpackerr stopped during its first start": "Unpackerr остановился при первом запуске", + "Unprivileged": "Непривилегированный", + "Unprivileged Container Access": "Доступ для непривилегированных контейнеров", + "Unprivileged container": "Непривилегированный контейнер", + "Unprivileged container selected:": "Выбран непривилегированный контейнер:", + "Unprivileged container — UID offset:": "Непривилегированный контейнер — смещение UID:", + "Unprivileged containers map their UIDs to high host UIDs (e.g. 100000+), which appear as 'others' on the host filesystem.": "Непривилегированные контейнеры сопоставляют свои UID с высокими значениями UID на хосте (например, 100000 и выше), которые в файловой системе хоста относятся к категории «остальные».", + "Unprivileged: Limited access (more secure)": "Непривилегированный: ограниченный доступ (более безопасно)", + "Unreachable": "Недоступен", + "Unrecognized Immich adapter": "Нераспознанный адаптер Immich", + "Unrecognized adaptation format": "Нераспознанный формат адаптации", + "Unrecognized adaptation recipe": "Нераспознанный рецепт адаптации", + "Unrecognized dependency order of the stack:": "Нераспознанный порядок зависимостей стека:", + "Unrecognized host monitor profile": "Нераспознанный профиль мониторинга хоста", + "Unrecognized native configuration": "Нераспознанная нативная конфигурация", + "Unrecognized qBittorrent configuration format": "Нераспознанный формат конфигурации qBittorrent", + "Unrecognized stack adapter or role": "Нераспознанный адаптер или роль стека", + "Unrecognized stack adapter:": "Нераспознанный адаптер стека:", + "Unrecognized stack structure:": "Нераспознанная структура стека:", + "Unrecognized volume definition": "Нераспознанное определение тома", + "Unresolved variable:": "Переменная, значение которой не удалось определить:", + "Unsafe OCI archive path": "Небезопасный путь к архиву OCI", + "Unsafe dependency contract": "Небезопасный контракт зависимости", + "Unsafe dependency hook contract": "Небезопасный контракт хука зависимости", + "Unsafe instance directory": "Небезопасный каталог экземпляра", + "Unsafe instance record": "Небезопасная запись экземпляра", + "Unsafe journal or lock file": "Небезопасный файл журнала или блокировки", + "Unsafe private configuration path": "Небезопасный путь к закрытой конфигурации", + "Unsafe qBittorrent configuration path": "Небезопасный путь к конфигурации qBittorrent", + "Unsafe record": "Небезопасная запись", + "Unsafe registry credential lock.": "Небезопасная блокировка учётных данных реестра.", + "Unsafe registry directory": "Небезопасный каталог реестра", + "Unsafe registry lock": "Небезопасная блокировка реестра", + "Unsafe rootfs for the capture": "Небезопасная rootfs для захвата", + "Unsafe stack assembly": "Небезопасная сборка стека", + "Unsafe volume path": "Небезопасный путь к тому", + "Unsupported CPU allocation mode:": "Неподдерживаемый режим выделения ресурсов CPU:", + "Unsupported GID strategy:": "Неподдерживаемая стратегия GID:", + "Unsupported NVIDIA mode:": "Неподдерживаемый режим NVIDIA:", + "Unsupported OCI digest:": "Неподдерживаемый дайджест OCI:", + "Unsupported OCI-LXC AppArmor profile:": "Неподдерживаемый профиль AppArmor для OCI-LXC:", + "Unsupported OCI-LXC seccomp profile:": "Неподдерживаемый профиль seccomp для OCI-LXC:", + "Unsupported Proxmox suite; no repository changed.": "Неподдерживаемый выпуск Proxmox; ни один репозиторий не изменён.", + "Unsupported Terminal": "Неподдерживаемый терминал", + "Unsupported architecture for Figurine:": "Неподдерживаемая архитектура для Figurine:", + "Unsupported architecture:": "Неподдерживаемая архитектура:", + "Unsupported backup compression": "Неподдерживаемый метод сжатия резервной копии", + "Unsupported credential pattern:": "Неподдерживаемый шаблон учётных данных:", + "Unsupported declarative ostype:": "Неподдерживаемое декларативное значение ostype:", + "Unsupported device GID strategy": "Неподдерживаемая стратегия GID устройства", + "Unsupported device options": "Неподдерживаемые параметры устройства", + "Unsupported device type:": "Неподдерживаемый тип устройства:", + "Unsupported dynamic NVIDIA capabilities:": "Неподдерживаемые динамические возможности NVIDIA:", + "Unsupported format. Only .ova and .ovf files are supported.": "Неподдерживаемый формат. Поддерживаются только файлы .ova и .ovf.", + "Unsupported host architecture:": "Неподдерживаемая архитектура хоста:", + "Unsupported kept setting:": "Неподдерживаемый сохраняемый параметр:", + "Unsupported media storage mode:": "Неподдерживаемый режим хранения медиафайлов:", + "Unsupported mount options": "Неподдерживаемые параметры монтирования", + "Unsupported mount type": "Неподдерживаемый тип монтирования", + "Unsupported mount type:": "Неподдерживаемый тип монтирования:", + "Unsupported native device type:": "Неподдерживаемый тип нативного устройства:", + "Unsupported network settings": "Неподдерживаемые сетевые настройки", + "Unsupported operation": "Неподдерживаемая операция", + "Unsupported or unknown Proxmox version; no repository changed.": "Неподдерживаемая или неизвестная версия Proxmox; ни один репозиторий не изменён.", + "Unsupported output format:": "Неподдерживаемый формат вывода:", + "Unsupported owner strategy:": "Неподдерживаемая стратегия назначения владельца:", + "Unsupported post-start configuration:": "Неподдерживаемая настройка после запуска:", + "Unsupported pre-start check:": "Неподдерживаемая проверка перед запуском:", + "Unsupported pre-start repair:": "Неподдерживаемое исправление перед запуском:", + "Unsupported prlimit resource": "Неподдерживаемый ресурс prlimit", + "Unsupported secret generator:": "Неподдерживаемый генератор секретов:", + "Unsupported storage mode:": "Неподдерживаемый режим хранения:", + "Unsupported tmpfs mode": "Неподдерживаемый режим tmpfs", + "Unsupported tmpfs options": "Неподдерживаемые параметры tmpfs", + "Unsupported tmpfs owner strategy": "Неподдерживаемая стратегия назначения владельца tmpfs", + "Unsupported volume options:": "Неподдерживаемые параметры тома:", + "Until they are registered again they cannot be updated or managed from here. The recovery checks first what prevents their registration; an application with such a problem is not registered. A Rclone mount that has to be enabled again does not prevent it, but then the applications are not started automatically.": "Пока приложения не будут зарегистрированы повторно, их нельзя будет обновлять или управлять ими отсюда. При восстановлении сначала проверяется, что препятствует их регистрации; приложение с такой проблемой не регистрируется. Монтирование Rclone, которое необходимо включить повторно, не препятствует регистрации, но в этом случае приложения не запускаются автоматически.", + "Untrusted or modified NVIDIA hook": "Недоверенный или изменённый хук NVIDIA", + "Unused image removed from the cache:": "Неиспользуемый образ удалён из кэша:", + "Unused images removed from the cache:": "Неиспользуемые образы удалены из кэша:", + "Unused local loopback TCP port for this device:": "Свободный локальный TCP-порт на интерфейсе loopback для этого устройства:", + "Update": "Обновить", + "Update Available": "Доступно обновление", + "Update Ceph repository (Only if using Ceph):": "Обновите репозиторий Ceph (только если используется Ceph):", + "Update Debian repositories to Trixie:": "Переключите репозитории Debian на Trixie:", + "Update Export": "Обновить экспорт", + "Update Lynis to latest version": "Обновить Lynis до последней версии", + "Update NVIDIA in LXC Containers": "Обновить NVIDIA в контейнерах LXC", + "Update OCI": "Обновить OCI", + "Update OCI stack": "Обновить стек OCI", + "Update PBS using configured repositories": "Обновить PBS с использованием настроенных репозиториев", + "Update PVE enterprise repository (Only if using enterprise):": "Обновите репозиторий PVE enterprise (только если используется enterprise):", + "Update Proxmox VE Appliance Manager": "Обновить Proxmox VE Appliance Manager", + "Update Proxmox package lists": "Обновить списки пакетов Proxmox", + "Update Share": "Обновить общий ресурс", + "Update Status": "Статус обновления", + "Update and upgrade all system packages": "Обновить списки пакетов и все системные пакеты", + "Update and upgrade system": "Обновить списки пакетов и систему", + "Update cancelled by user": "Обновление отменено пользователем", + "Update completed. Data kept.": "Обновление завершено. Данные сохранены.", + "Update completed. Press Enter to continue...": "Обновление завершено. Нажмите Enter для продолжения...", + "Update credentials": "Обновить учётные данные", + "Update every container of the application": "Обновить все контейнеры приложения", + "Update for %s completed.": "Обновление %s завершено.", + "Update for %s exited with status %s.": "Обновление %s завершилось с кодом состояния %s.", + "Update kernel to compatible version": "Обновить ядро до совместимой версии", + "Update now?": "Обновить сейчас?", + "Update package index:": "Обновить индекс пакетов:", + "Update prepared": "Обновление подготовлено", + "Update selected OCI applications": "Обновить выбранные приложения OCI", + "Update system to latest PVE 8.4+ (if not done already):": "Обновите систему до последней версии PVE 8.4 или новее (если это ещё не сделано):", + "Update the image with the saved configuration": "Обновить образ с сохранённой конфигурацией", + "Update the whole stack?": "Обновить весь стек?", + "Update, modify or recreate one installed OCI instance": "Обновить, изменить или пересоздать один установленный экземпляр OCI", + "Updated": "Обновлено", + "Updated recipes since your last visit: {count}": "Обновлённые рецепты с вашего последнего посещения: {count}", + "Updated sharedfiles group to GID: 101000": "GID группы sharedfiles изменён на 101000", + "Updated stack checked": "Обновлённый стек проверен", + "Updated:": "Обновлено:", + "Updates all Proxmox and Debian packages": "Обновляет все пакеты Proxmox и Debian", + "Updates and Packages Commands": "Команды обновления и управления пакетами", + "Updates are not available yet for this application in this beta": "В этой бета-версии обновления для этого приложения пока недоступны", + "Updates are not available yet in this beta for applications that use a privileged container or advanced LXC settings": "В этой бета-версии обновления пока недоступны для приложений, использующих привилегированный контейнер или расширенные настройки LXC", + "Updates available": "Доступны обновления", + "Updates file is empty or unreadable.": "Файл обновлений пуст или недоступен для чтения.", + "Updating": "Обновление", + "Updating %s (running %s from %s flow)...": "Обновление %s (выполняется %s в рамках процесса %s)...", + "Updating APT package lists...": "Обновление списков пакетов APT...", + "Updating Debian Bookworm → Trixie in sources.list...": "Updating Debian Bookworm → Trixie в sources.list...", + "Updating Figurine binary...": "Обновление исполняемого файла Figurine...", + "Updating Lynis to the latest version...": "Обновление Lynis до последней версии...", + "Updating PVE application manager...": "Обновление менеджера приложений PVE...", + "Updating amdgpu_top...": "Обновление amdgpu_top...", + "Updating cluster certificates...": "Обновление сертификатов кластера...", + "Updating initramfs (this may take a minute)...": "Обновление initramfs (это может занять минуту)...", + "Updating initramfs for all kernels...": "Обновление initramfs для всех ядер...", + "Updating initramfs so the ARC cap applies at next boot...": "Обновление initramfs для применения ограничения ARC при следующей загрузке...", + "Updating initramfs, GRUB, and EFI boot, patience...": "Обновление initramfs, GRUB и загрузки EFI, подождите...", + "Updating job status...": "Обновление состояния задания...", + "Updating journald to store info-level messages...": "Обновление journald для сохранения сообщений уровня info...", + "Updating kernel panic configuration...": "Обновление настроек паники ядра...", + "Updating package lists...": "Обновление списков пакетов...", + "Updating pve-enterprise.list (if present) to Trixie...": "Обновление pve-enterprise.list (при наличии) для перехода на Trixie...", + "Updating release channel configuration...": "Обновление конфигурации канала выпусков...", + "Updating the copy of the record...": "Обновление копии записи...", + "Upgrade Ceph to compatible version": "Обновить Ceph до совместимой версии", + "Upgrade PVE 8 to PVE 9": "Обновить PVE 8 до PVE 9", + "Upgrade assistant: Proxmox VE 8 → 9 (Trixie)": "Помощник обновления: Proxmox VE 8 → 9 (Trixie)", + "Upgrade canceled by user": "Обновление отменено пользователем", + "Upgrade one node at a time": "Обновляйте узлы по одному", + "Upgrade the system, offering the": "Обновить систему, предлагая", + "Upgrade to Proxmox VE 9": "Обновить до Proxmox VE 9", + "Upgrading NVIDIA utils (Arch)...": "Обновление утилит NVIDIA (Arch)...", + "Upload an encrypted copy of the key to PBS so you can recover it on a reinstalled host with just a passphrase?": "Загрузить зашифрованную копию ключа в PBS, чтобы его можно было восстановить на хосте после переустановки, используя только парольную фразу?", + "Upload key to PBS?": "Загрузить ключ на PBS?", + "Upload to PBS disabled.": "Загрузка на PBS отключена.", + "Upload to PBS enabled. The envelope is uploaded on every encrypted backup.": "Загрузка на PBS включена. Конверт загружается при каждом создании зашифрованной резервной копии.", + "Upload to PBS is currently: no. Pick an action:": "Загрузка на PBS сейчас отключена. Выберите действие:", + "Upload to PBS is currently: yes. Pick an action:": "Загрузка на PBS сейчас включена. Выберите действие:", + "Upload to PBS: enable, disable or rotate the recovery passphrase": "Загрузка на PBS: включение, отключение или смена парольной фразы восстановления", + "Upstream NTP servers": "Вышестоящие серверы NTP", + "Uptime and who is logged in": "Время непрерывной работы и пользователи, вошедшие в систему", + "UrBackup Server": "Сервер UrBackup", + "Usage:": "Использование:", + "Use \"Check test progress\" to see results.": "Выберите «Проверить ход тестирования», чтобы увидеть результаты.", + "Use 'Export to file' to save it and inspect manually.": "Выберите «Экспорт в файл», чтобы сохранить и проверить вручную.", + "Use 'pct restore' / 'qmrestore' to recover their disks from your VM backups.": "Используйте 'pct restore' / 'qmrestore', чтобы восстановить их диски из резервных копий ваших виртуальных машин.", + "Use Custom backup and uncheck the conflicting path from the list": "Выберите выборочное резервное копирование и снимите отметку с конфликтующего пути в списке", + "Use Default Settings?": "Использовать настройки по умолчанию?", + "Use Download first if you want to save a copy of the current key. Continue?": "Сначала выберите «Скачать», если хотите сохранить копию текущего ключа. Продолжить?", + "Use SPACE to select, ENTER to confirm": "Нажмите SPACE для выбора, ENTER для подтверждения", + "Use SPACE to select/deselect, ENTER to confirm": "Нажмите SPACE для выбора или снятия выбора, ENTER для подтверждения", + "Use SSH or terminal access (SSH recommended)": "Используйте SSH или доступ через терминал (рекомендуется SSH)", + "Use Spacebar to select.": "Нажмите пробел для выбора.", + "Use a USB disk": "Использовать USB-диск", + "Use a custom path": "Указать свой путь", + "Use a privileged LXC for NFS server/client workflows.": "Используйте привилегированный контейнер LXC для работы в качестве сервера или клиента NFS.", + "Use a privileged LXC for Samba client/server workflows.": "Используйте привилегированный контейнер LXC для работы в качестве клиента или сервера Samba.", + "Use a registry hostname, for example ghcr.io or registry.example.com:5000.": "Укажите имя хоста реестра, например ghcr.io или registry.example.com:5000.", + "Use a trusted HTTPS reverse proxy. Upgrade Nextcloud one major version at a time.": "Используйте доверенный обратный прокси с HTTPS. Обновляйте Nextcloud по одной основной версии за раз.", + "Use an existing SSH private key file on this host": "Использовать существующий файл закрытого ключа SSH на этом хосте", + "Use an existing keyfile": "Использовать существующий файл ключа", + "Use an image reference, for example ghcr.io/owner/app:latest.": "Укажите ссылку на образ, например ghcr.io/owner/app:latest.", + "Use as-is — keep data and filesystem": "Использовать как есть — сохранить данные и файловую систему", + "Use content types according to your use case.": "Выберите типы содержимого в соответствии с вашими задачами.", + "Use default": "Использовать значение по умолчанию", + "Use default (Yes)": "Использовать значение по умолчанию (Да)", + "Use default group:": "Использовать группу по умолчанию:", + "Use enterprise URL if you have subscription.": "Используйте URL корпоративного репозитория, если у вас есть подписка.", + "Use existing VirtIO ISO from storage": "Использовать существующий ISO-образ VirtIO из хранилища", + "Use existing filesystem": "Использовать существующую файловую систему", + "Use existing: mount without formatting": "Использовать существующую файловую систему: смонтировать без форматирования", + "Use images only if the directory is on suitable storage.": "Используйте образы только в том случае, если каталог находится в подходящем хранилище.", + "Use managed storage for /config and MariaDB. A host/NAS directory can be selected for /data and needs a separate backup.": "Используйте управляемое хранилище для /config и MariaDB. Для /data можно выбрать каталог хоста или NAS; для него нужна отдельная резервная копия.", + "Use mp1/mp2/... for extra mount points.": "Используйте mp1/mp2/... для дополнительных точек монтирования.", + "Use only when unprivileged containers cannot meet your needs": "Используйте только в том случае, если непривилегированные контейнеры не отвечают вашим требованиям", + "Use option 1 to add a local disk (as Proxmox storage and/or as a host mount).": "Используйте пункт 1, чтобы добавить локальный диск (как хранилище Proxmox и/или смонтировать его на хосте).", + "Use option 1 to add an iSCSI target as Proxmox storage.": "Используйте пункт 1, чтобы добавить целевой ресурс iSCSI как хранилище Proxmox.", + "Use pigz for faster gzip compression": "Использовать pigz для ускорения сжатия gzip", + "Use the GPU with ROCm anyway?": "Всё равно использовать GPU с ROCm?", + "Use the Guided Cleanup option to fix issues safely": "Используйте функцию пошаговой очистки для безопасного устранения проблем", + "Use the Guided Repair option to fix issues safely": "Используйте функцию пошагового исправления для безопасного устранения проблем", + "Use these commands on your Proxmox host to access an LXC container's terminal:": "Используйте эти команды на хосте Proxmox для доступа к терминалу контейнера LXC:", + "Use tmux or screen to avoid interruptions": "Используйте tmux или screen, чтобы избежать прерываний", + "Use:": "Использование:", + "Useful System Commands": "Полезные системные команды", + "Useful to verify options/content after script execution.": "Полезно для проверки параметров и содержимого после выполнения скрипта.", + "User": "Пользователь", + "User account exists on server": "Учётная запись пользователя существует на сервере", + "User activity and uptime": "Активность пользователей и время непрерывной работы", + "User chose not to remove NetworkManager": "Пользователь решил не удалять NetworkManager", + "User chose to exit for manual backup creation.": "Пользователь решил выйти, чтобы создать резервную копию вручную.", + "User name for the SSH login": "Имя пользователя для входа по SSH", + "User name of the administrator of the web interface": "Имя пользователя администратора веб-интерфейса", + "User name of the deprecated Flowise application login (only read by Flowise versions before 3.0.1)": "Имя пользователя для устаревшего способа входа в приложение Flowise (используется только версиями Flowise до 3.0.1)", + "User of the AdGuard Home that receives the settings": "Пользователь AdGuard Home, получающего настройки", + "User of the MariaDB server": "Пользователь сервера MariaDB", + "User of the PostgreSQL server": "Пользователь сервера PostgreSQL", + "User of the database server (mysql and pgsql only)": "Пользователь сервера базы данных (только mysql и pgsql)", + "User of the main AdGuard Home": "Пользователь основного AdGuard Home", + "User-friendly WebUI for LLMs (Formerly Ollama WebUI)": "Удобный WebUI для LLM (ранее Ollama WebUI)", + "Username": "Имя пользователя", + "Username (e.g. root@pam or user@pbs!token):": "Имя пользователя (например, root@pam или user@pbs!token):", + "Username / token": "Имя пользователя / токен", + "Username and password": "Имя пользователя и пароль", + "Username and password will be cleared.": "Имя пользователя и пароль будут очищены.", + "Username cannot be empty.": "Имя пользователя не может быть пустым.", + "Username is correct": "Имя пользователя указано верно", + "Username on the Borg server that runs \"borg serve\" (typically \"borg\"). This is NOT the admin/root user of the server — that one is asked later only if you choose \"Generate a new key and authorize it\".": "Имя пользователя на сервере Borg, от имени которого выполняется \"borg serve\" (обычно \"borg\"). Это НЕ администратор или пользователь root сервера — его имя будет запрошено позже, только если вы выберете «Создать новый ключ и авторизовать его».", + "Username:": "Имя пользователя:", + "Users:": "Пользователи:", + "Using Advanced Settings": "Используются расширенные настройки", + "Using BIOS Type:": "Используемый тип BIOS:", + "Using Bridge:": "Используемый сетевой мост:", + "Using CPU Model:": "Используемая модель процессора:", + "Using Custom Image:": "Используемый пользовательский образ:", + "Using Default Settings": "Используются настройки по умолчанию", + "Using Hostname:": "Используемое имя хоста:", + "Using Interface MTU Size:": "Используемый размер MTU интерфейса:", + "Using MAC Address:": "Используемый MAC-адрес:", + "Using Machine Type:": "Используемый тип машины:", + "Using UUID is recommended over /dev/sdX.": "Рекомендуется использовать UUID вместо /dev/sdX.", + "Using VLAN:": "Используемая VLAN:", + "Using Virtual Machine ID:": "Используемый идентификатор виртуальной машины:", + "Using Vlan:": "Используемая VLAN:", + "Using advanced configuration": "Используется расширенная конфигурация", + "Using default Proxmox logo...": "Используется логотип Proxmox по умолчанию...", + "Using existing encryption key:": "Используется существующий ключ шифрования:", + "Using the image verified by the transaction": "Используется образ, проверенный в рамках транзакции", + "Using the verified image from the cache": "Используется проверенный образ из кэша", + "Utilities": "Утилиты", + "Utilities Installation Menu": "Меню установки утилит", + "Utilities Menu": "Меню утилит", + "Utilities Verification": "Проверка утилит", + "Utilities and Tools": "Утилиты и инструменты", + "Utilities installation completed": "Установка утилит завершена", + "Utilities installed by ProxMenux have been removed": "Утилиты, установленные ProxMenux, удалены", + "VA-API driver": "Драйвер VA-API", + "VA-API render device": "Устройство рендеринга VA-API", + "VA-API video acceleration": "Аппаратное ускорение видео VA-API", + "VFIO device IDs removed from /etc/modprobe.d/vfio.conf": "Идентификаторы устройств VFIO удалены из /etc/modprobe.d/vfio.conf", + "VFIO modules configured in /etc/modules": "Модули VFIO настроены в /etc/modules", + "VFIO modules configured.": "Модули VFIO настроены.", + "VFIO modules in /etc/modules": "Модули VFIO в /etc/modules", + "VFIO modules removed from /etc/modules": "Модули VFIO удалены из /etc/modules", + "VFIO orphans cleared and initramfs rebuilt — next boot will free the GPU.": "Остаточные записи VFIO удалены, initramfs пересобран — при следующей загрузке GPU будет освобождён.", + "VFIO orphans cleared but initramfs rebuild failed; check /var/log/proxmenux logs.": "Остаточные записи VFIO удалены, но пересборка initramfs не удалась; проверьте журналы в /var/log/proxmenux.", + "VFS cache mode": "Режим кэширования VFS", + "VIRTUAL DISK": "ВИРТУАЛЬНЫЙ ДИСК", + "VIRTUAL MACHINE ID": "ИДЕНТИФИКАТОР ВИРТУАЛЬНОЙ МАШИНЫ", + "VLAN": "VLAN", + "VLAN tag": "Тег VLAN", + "VLAN tag (empty = none)": "Тег VLAN (пусто = без тега)", + "VLC Media Player is a free and open source cross-platform multimedia player and framework that delivers dependable performance across multiple devices.": "VLC Media Player — бесплатный кроссплатформенный мультимедийный проигрыватель и фреймворк с открытым исходным кодом, обеспечивающий надёжную работу на различных устройствах.", + "VM": "VM", + "VM Conflict Policy": "Политика разрешения конфликтов виртуальных машин", + "VM ID": "ID виртуальной машины", + "VM ID:": "ID виртуальной машины:", + "VM Must Be Stopped": "ВМ должна быть остановлена", + "VM Name": "Имя ВМ", + "VM Storage (images, backup)": "Хранилище ВМ (образы, резервные копии)", + "VM and CT Management Commands": "Команды управления ВМ и контейнерами", + "VM and CT backup jobs (Datacenter > Backup)": "Задания резервного копирования ВМ и контейнеров (Датацентр > Резервное копирование)", + "VM created with errors. Check configuration.": "ВМ создана с ошибками. Проверьте конфигурацию.", + "VM creation cancelled before disk planning.": "Создание ВМ отменено до планирования дисков.", + "VM creation cancelled by user.": "Создание ВМ отменено пользователем.", + "VM creation completed": "Создание ВМ завершено", + "VM creation completed with GPU passthrough configured.": "Создание ВМ завершено, проброс GPU настроен.", + "VM creation completed. GPU passthrough was not applied.": "Создание ВМ завершено. Проброс GPU не применён.", + "VM creation completed. GPU passthrough was skipped (no compatible GPU detected).": "Создание ВМ завершено. Проброс GPU пропущен (совместимый GPU не обнаружен).", + "VM creation failed or was cancelled during storage setup.": "Создание ВМ завершилось ошибкой или было отменено во время настройки хранилища.", + "VM description configured": "Описание ВМ настроено", + "VM imported successfully": "ВМ успешно импортирована", + "VM is running": "ВМ работает", + "VM is still running. Export cancelled.": "ВМ всё ещё работает. Экспорт отменён.", + "VM passthrough configuration failed. Review the log and VM config.": "Не удалось настроить проброс устройств в ВМ. Проверьте журнал и конфигурацию ВМ.", + "VM passthrough requires exclusive VFIO binding of the GPU.": "Для проброса GPU в ВМ требуется его исключительная привязка к VFIO.", + "VM removed:": "ВМ удалена:", + "VM selected:": "Выбрана ВМ:", + "VM shell created:": "Создана заготовка ВМ:", + "VM started": "ВМ запущена", + "VM stopped": "ВМ остановлена", + "VM/CT Backup Jobs (Datacenter > Backup)": "Задания резервного копирования ВМ/контейнеров (Дата-центр > Резервное копирование)", + "VM:": "VM:", + "VMID (empty = next free)": "VMID (пусто = следующий свободный)", + "VMID in use": "VMID уже используется", + "VMID must be a number.": "VMID должен быть числом.", + "VMID of the Borg server LXC on": "VMID сервера Borg в LXC на", + "VMID of the Rclone OCI container": "VMID OCI-контейнера Rclone", + "VMs to destroy:": "ВМ для уничтожения:", + "VMs, LXCs, network, /etc/pve, users, cron, packages, drivers, ProxMenux state, etc.": "ВМ, контейнеры LXC, сеть, /etc/pve, пользователи, cron, пакеты, драйверы, состояние ProxMenux и т. д.", + "VS Code is an integrated development environment developed by Microsoft. This container runs the full desktop application, for a web native version see Code Server.": "VS Code — интегрированная среда разработки, созданная Microsoft. В этом контейнере запускается полноценное настольное приложение; если нужна версия для работы в браузере, см. Code Server.", + "VSCodium is a community-driven, freely-licensed binary distribution of Microsoft’s editor VS Code.": "VSCodium — поддерживаемый сообществом дистрибутив редактора VS Code от Microsoft, распространяемый в двоичном виде по свободной лицензии.", + "Valid backups for all VMs/CTs": "Пригодные для восстановления резервные копии всех ВМ/контейнеров", + "Validating Proxmox 9 repositories (checking 'proxmox-ve' candidate)...": "Проверка репозиториев Proxmox 9 (проверка версии-кандидата пакета 'proxmox-ve')...", + "Validating credentials with server": "Проверка учётных данных на сервере", + "Validating disk safety...": "Проверка безопасности операций с диском...", + "Validation method: http (port 80 forwarded) or dns (DNS provider plugin)": "Способ проверки: http (с перенаправлением порта 80) или dns (с плагином DNS-провайдера)", + "Value for": "Значение для", + "Variable name": "Имя переменной", + "Variables": "Переменные", + "Variables the installation asks for:": "Переменные, запрашиваемые при установке:", + "Vaultwarden Web Vault": "Веб-хранилище Vaultwarden", + "Vector illustration in your browser": "Создание векторных иллюстраций в браузере", + "Vector search engine with a built-in dashboard.": "Система векторного поиска со встроенной панелью управления.", + "Vendor Specific": "Специфичный для производителя", + "Verbose pool status": "Подробные сведения о состоянии пула", + "Verification": "Проверка", + "Verified": "Проверено", + "Verify IOMMU group for PCI device": "Проверьте группу IOMMU для PCI-устройства", + "Verify Options > OS Type — currently set to:": "Проверьте «Параметры > Тип ОС» — текущее значение:", + "Verify PVE version (must be 8.4.1 or newer):": "Проверьте версию PVE (должна быть 8.4.1 или новее):", + "Verify active exports:": "Проверьте активные экспорты:", + "Verify bridge assignment and NIC model — change to VirtIO if guest drivers are available": "Проверьте назначение моста и модель сетевого адаптера — выберите VirtIO, если доступны драйверы для гостевой ОС", + "Verify iSCSI sessions and storage status:": "Проверьте сеансы iSCSI и состояние хранилища:", + "Verify inside container:": "Выполните проверку внутри контейнера:", + "Verify installations": "Проверьте установку компонентов", + "Verify mount:": "Проверьте монтирование:", + "Verify the conversion:": "Проверьте результат преобразования:", + "Verify the credentials. Switching to manual paste mode so you can finish the setup without re-typing the password.": "Проверьте учётные данные. Выполняется переключение в режим ручной вставки, чтобы вы могли завершить настройку без повторного ввода пароля.", + "Verifying Ceph installation...": "Проверка установки Ceph...", + "Verifying Ceph packages availability...": "Проверка доступности пакетов Ceph...", + "Verifying all utilities status": "Проверка состояния всех утилит", + "Verifying disk accessibility in CT": "Проверка доступности диска в контейнере", + "Verifying registry access. Please wait...": "Проверка доступа к реестру. Пожалуйста, подождите...", + "Verifying the backups...": "Проверка резервных копий...", + "Verifying the image integrity...": "Проверка целостности образа...", + "Version": "Версия", + "Version Change Detected": "Обнаружено изменение версии", + "Version info not available": "Информация о версии недоступна", + "Version:": "Версия:", + "Version: Auto-negotiation (NFSv3/NFSv4)": "Версия: автоматическое согласование (NFSv3/NFSv4)", + "Versions shown belong to maintained NVIDIA branches that list your GPU PCI ID and are new enough to build against the running kernel. DKMS compilation is the final validation. The recommended version keeps the current branch, or uses the NVIDIA Production Branch on a fresh install.": "Показанные версии относятся к поддерживаемым веткам NVIDIA, в которых указан PCI ID вашего графического процессора и которые достаточно новые для сборки с текущим ядром. Окончательная проверка — компиляция DKMS. Рекомендуемая версия сохраняет текущую ветку, а при новой установке используется NVIDIA Production Branch.", + "VictoriaLogs": "VictoriaLogs", + "Video": "Видео", + "Video acceleration and object detection are independent choices; the installer does not write camera or detector YAML.": "Аппаратное ускорение видео и обнаружение объектов выбираются независимо друг от друга; установщик не записывает YAML-конфигурацию камер или детекторов.", + "Video editing in your browser": "Редактирование видео в браузере", + "Video transcoding acceleration": "Ускорение перекодирования видео", + "Video transcoding profile not implemented:": "Профиль перекодирования видео не реализован:", + "View CIFS Mounts (pvesm + fstab)": "Просмотр монтирований CIFS (pvesm + fstab)", + "View Current Exports": "Просмотр текущих экспортируемых ресурсов", + "View Current Mounts": "Просмотр текущих монтирований", + "View Current Shares": "Просмотр текущих общих ресурсов", + "View Disk Storages": "Просмотр дисковых хранилищ", + "View Mount Points": "Просмотр точек монтирования", + "View NFS Mounts (pvesm + fstab)": "Просмотр монтирований NFS (pvesm + fstab)", + "View USB/IP status": "Просмотр состояния USB/IP", + "View backup metadata": "Просмотр метаданных резервной копии", + "View current paths": "Просмотр текущих путей", + "View existing folders in /mnt": "Просмотр существующих папок в /mnt", + "View iSCSI Storages": "Просмотр хранилищ iSCSI", + "View raw CT configuration file": "Просмотр файла конфигурации CT в исходном виде", + "View raw VM configuration file": "Просмотр файла конфигурации VM в исходном виде", + "View restore plan": "Просмотр плана восстановления", + "View self-test log": "Просмотр журнала самотестирования", + "View status": "Просмотр состояния", + "VirtIO (advanced - high performance)": "VirtIO (расширенный вариант — высокая производительность)", + "VirtIO ISO not found after selection.": "ISO-образ VirtIO не найден после выбора.", + "VirtIO ISO selection cancelled.": "Выбор ISO-образа VirtIO отменён.", + "VirtIO driver ISO downloaded successfully.": "ISO-образ с драйверами VirtIO успешно загружен.", + "Virtual DSM in a container.": "Virtual DSM в контейнере.", + "Virtual Disks Created:": "Созданные виртуальные диски:", + "Virtual Function": "Виртуальная функция", + "Virtual Function (parent PF:": "Виртуальная функция (родительская PF:", + "Virtual Machine ID": "ID виртуальной машины", + "Virtual Machine ID:": "ID виртуальной машины:", + "Virtual disk": "Виртуальный диск", + "Virtual disks": "Виртуальные диски", + "Virtual display already set to": "Для виртуального дисплея уже установлено значение", + "Virtual display changed from": "Настройка виртуального дисплея изменена с", + "Virtual display normalized to vga: std (compatibility)": "Настройка виртуального дисплея приведена к vga: std (для совместимости)", + "Virtual display set to": "Для виртуального дисплея установлено значение", + "Virtual interface (normal)": "Виртуальный интерфейс (обычный)", + "Virtual whiteboard for sketching hand-drawn like diagrams": "Виртуальная доска для создания схем в стиле рисунков от руки", + "Virtualization": "Виртуализация", + "Visit https://osx-proxmox.com for more information.": "Дополнительная информация доступна на https://osx-proxmox.com.", + "Visit the website to discover more scripts, stay updated with the latest updates, and support the project:": "Посетите сайт, чтобы найти больше скриптов, следить за последними обновлениями и поддержать проект:", + "Visit the website to discover more scripts, stay updated with the latest updates, and support the project:\n\nhttps://community-scripts.github.io/ProxmoxVE": "Посетите сайт, чтобы найти больше скриптов, следить за последними обновлениями и поддержать проект:\n\nhttps://community-scripts.github.io/ProxmoxVE", + "Vivaldi is a Norwegian freeware, cross-platform web browser with a built-in email client developed by Vivaldi Technologies.": "Vivaldi — норвежский бесплатный кроссплатформенный веб-браузер со встроенным почтовым клиентом, разработанный компанией Vivaldi Technologies.", + "Volume configuration cancelled": "Настройка тома отменена", + "Volume options are not yet supported": "Параметры тома пока не поддерживаются", + "Volume size in GB": "Размер тома в ГБ", + "Volumes": "Тома", + "Volumes attached": "Подключённые тома", + "Volumes prepared for the first start:": "Тома, подготовленные к первому запуску:", + "Volumes shared between services are not yet supported": "Совместное использование томов несколькими сервисами пока не поддерживается", + "Vscodium-web is a community-driven, freely-licensed binary distribution of the remote host web component of Microsoft's editor VS Code.": "Vscodium-web — развиваемый сообществом дистрибутив двоичных файлов веб-компонента редактора VS Code от Microsoft для удалённого хоста, распространяемый по свободной лицензии.", + "Vulnerability detection": "Обнаружение уязвимостей", + "Vulnerability scanning API for container images.": "API для сканирования образов контейнеров на наличие уязвимостей.", + "WARNING": "WARNING", + "WARNING — This backup contains paths that are risky to restore on a running system:": "ПРЕДУПРЕЖДЕНИЕ — Эта резервная копия содержит пути, восстановление которых в работающей системе сопряжено с риском:", + "WARNING — You selected risky paths for live restore:": "ПРЕДУПРЕЖДЕНИЕ — Вы выбрали пути, восстановление которых в работающей системе сопряжено с риском:", + "WARNING: All data on selected disk will be ERASED if formatted.": "ПРЕДУПРЕЖДЕНИЕ: При форматировании все данные на выбранном диске будут УДАЛЕНЫ.", + "WARNING: The NFS server is not affected. The mount directory contents are NOT deleted (data stays on the server).": "ПРЕДУПРЕЖДЕНИЕ: Сервер NFS не затрагивается. Содержимое каталога монтирования НЕ удаляется (данные остаются на сервере).", + "WARNING: The Samba server is not affected. The mount directory contents are NOT deleted.": "ПРЕДУПРЕЖДЕНИЕ: Сервер Samba не затрагивается. Содержимое каталога монтирования НЕ удаляется.", + "WARNING: The selected directory is not empty!": "ПРЕДУПРЕЖДЕНИЕ: Выбранный каталог не пуст!", + "WARNING: This disk has a mounted partition.": "ПРЕДУПРЕЖДЕНИЕ: На этом диске есть смонтированный раздел.", + "WARNING: This disk is also assigned to:": "ПРЕДУПРЕЖДЕНИЕ: Этот диск также назначен следующим объектам:", + "WARNING: This disk is referenced in a stopped VM/LXC config.": "ПРЕДУПРЕЖДЕНИЕ: Этот диск указан в конфигурации остановленной виртуальной машины или остановленного контейнера LXC.", + "WARNING: This is a single GPU system": "ПРЕДУПРЕЖДЕНИЕ: В этой системе только один графический процессор", + "WARNING: This may cause a brief disconnection.": "ПРЕДУПРЕЖДЕНИЕ: Это может привести к кратковременному разрыву соединения.", + "WARNING: This removes the storage from Proxmox. The NFS server is not affected.": "ПРЕДУПРЕЖДЕНИЕ: Это удалит хранилище из Proxmox. Сервер NFS не затрагивается.", + "WARNING: This removes the storage from Proxmox. The Samba server is not affected.": "ПРЕДУПРЕЖДЕНИЕ: Это удалит хранилище из Proxmox. Сервер Samba не затрагивается.", + "WARNING: This will ERASE all data on this disk.": "ПРЕДУПРЕЖДЕНИЕ: Это УДАЛИТ все данные на этом диске.", + "WARNING: This will FORMAT the disk": "ПРЕДУПРЕЖДЕНИЕ: Это приведёт к ФОРМАТИРОВАНИЮ диска", + "WARNING: This will completely remove NFS server from the CT.": "ПРЕДУПРЕЖДЕНИЕ: Это полностью удалит сервер NFS из контейнера.", + "WARNING: This will completely remove Samba server from the CT.": "ПРЕДУПРЕЖДЕНИЕ: Это полностью удалит сервер Samba из контейнера.", + "WARNING: You are about to remove this Proxmox storage:": "ПРЕДУПРЕЖДЕНИЕ: Вы собираетесь удалить следующее хранилище Proxmox:", + "WARNING: You are about to remove this disk mount:": "ПРЕДУПРЕЖДЕНИЕ: Вы собираетесь удалить следующее подключение диска:", + "WARNING: this will ERASE EVERYTHING on the disk.": "ПРЕДУПРЕЖДЕНИЕ: Это действие УДАЛИТ ВСЕ ДАННЫЕ на диске.", + "WBO": "WBO", + "WEB UI to manage WireGuard VPN.": "Веб-интерфейс для управления VPN WireGuard.", + "WILL BE PERMANENTLY ERASED.": "БУДЕТ УДАЛЕНО БЕЗВОЗВРАТНО.", + "WPS Office is a lightweight, feature-rich comprehensive office suite with high compatibility. As a handy and professional office software, WPS Office allows you to edit files in Writer, Presentation, Spreadsheet, and PDF to improve your work efficiency.": "WPS Office — лёгкий многофункциональный офисный пакет с высокой совместимостью. Удобный и профессиональный WPS Office позволяет редактировать файлы в Writer, Presentation, Spreadsheet и PDF, повышая эффективность работы.", + "Wait for each node to complete before starting next": "Дождитесь завершения операции на каждом узле, прежде чем запускать её на следующем", + "Waiting for Home Assistant OS...": "Ожидание Home Assistant OS...", + "Waiting for the FUSE mount:": "Ожидание монтирования FUSE:", + "Waiting for the application to respond...": "Ожидание ответа приложения...", + "Waiting for the initial Jellyfin configuration...": "Ожидание первоначальной настройки Jellyfin...", + "Waiting for the network address...": "Ожидание сетевого адреса...", + "Waiting for the password of the application...": "Ожидание пароля приложения...", + "Waiting for the temporary password...": "Ожидание временного пароля...", + "Wakapi": "Wakapi", + "Wallos": "Wallos", + "Warning": "Предупреждение", + "Warning: Auth key should start with 'tskey-'": "Внимание: ключ аутентификации должен начинаться с 'tskey-'", + "Warning: Disk Images on CIFS": "Предупреждение: образы дисков на CIFS", + "Warning: Limited PCI Reset Support": "Предупреждение: ограниченная поддержка сброса PCI", + "Warning: both VMs have autostart enabled (onboot=1).": "Предупреждение: у обеих виртуальных машин включён автозапуск (onboot=1).", + "Warnings": "Предупреждения", + "Watch history, ratings and watchlists synced between media servers and trackers.": "История просмотров, оценки и списки для просмотра синхронизируются между медиасерверами и трекерами.", + "Watcharr": "Watcharr", + "Watchdog": "Watchdog", + "Watchdog (off): restart the application when it crashes": "Сторожевой таймер (выкл.): перезапуск приложения при сбое", + "Watchdog (on): restart the application when it crashes": "Сторожевой таймер (вкл.): перезапуск приложения при сбое", + "Watchdog disabled.": "Сторожевой таймер отключён.", + "Watchdog enabled: the application is restarted when it crashes.": "Сторожевой таймер включён: приложение перезапускается при сбое.", + "WeKnora is an LLM-powered framework designed for deep document understanding and semantic retrieval, especially for handling complex, heterogeneous documents.": "WeKnora — платформа на базе больших языковых моделей, предназначенная для глубокого понимания документов и семантического поиска, особенно при работе со сложными разнородными документами.", + "Web Check": "Web Check", + "Web UI": "Веб-интерфейс", + "Web UI 1": "Веб-интерфейс 1", + "Web UI 2": "Веб-интерфейс 2", + "Web UI and scheduler for restic backups.": "Веб-интерфейс и планировщик резервного копирования с помощью restic.", + "Web UI password": "Пароль веб-интерфейса", + "Web UI user": "Пользователь веб-интерфейса", + "Web access": "Доступ через веб-интерфейс", + "Web address of the AdGuard Home that receives the settings (e.g. http://192.168.1.3)": "Веб-адрес AdGuard Home, который получает настройки (например, http://192.168.1.3)", + "Web address of the main AdGuard Home, whose settings are copied (e.g. http://192.168.1.2)": "Веб-адрес основного AdGuard Home, настройки которого копируются (например, http://192.168.1.2)", + "Web dashboard": "Веб-панель управления", + "Web dashboard and WebDAV": "Веб-панель управления и WebDAV", + "Web interface": "Веб-интерфейс", + "Web interface for Borg Backup repositories and jobs.": "Веб-интерфейс для репозиториев и заданий Borg Backup.", + "Web interface for managing 3D printers.": "Веб-интерфейс для управления 3D-принтерами.", + "Web interface to manage devices running Tasmota firmware.": "Веб-интерфейс для управления устройствами с прошивкой Tasmota.", + "Web reverse proxy with an administration interface.": "Обратный веб-прокси с интерфейсом администрирования.", + "WebCord can be summarized as a pack of security and privacy hardenings, Discord features reimplementations, Electron / Chromium / Discord bugs workarounds, stylesheets, internal pages and wrapped https://discord.com page, designed to conform with ToS as much as it is possible (or hide the changes that might violate it from Discord's eyes).": "WebCord можно кратко описать как набор улучшений безопасности и конфиденциальности, повторных реализаций функций Discord, обходных решений для ошибок Electron / Chromium / Discord, таблиц стилей, внутренних страниц и страницы https://discord.com в оболочке, призванный максимально соответствовать ToS (или скрывать от Discord изменения, которые могут нарушать эти условия).", + "WebDAV": "WebDAV", + "WebDAV and dashboard password (leave empty to generate)": "Пароль для WebDAV и панели управления (оставьте пустым для автоматического создания)", + "WebDAV is available on container port 8080. Account linking is required before cloud file operations.": "WebDAV доступен на порту 8080 контейнера. Перед выполнением операций с облачными файлами необходимо привязать учётную запись.", + "Webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.": "Webgrabplus — программа для инкрементального сбора данных электронной программы передач (EPG) в формате XMLTV с нескольких сайтов. Она собирает программу передач для ваших любимых каналов с выбранных сайтов телепрограмм.", + "Webservers & Proxies": "Веб-серверы и прокси", + "Website": "Веб-сайт", + "Webstation is a web native emulation focused LXQt desktop based on Ubuntu.": "Webstation — рабочий стол LXQt на базе Ubuntu, предназначенный для работы в браузере и ориентированный на эмуляцию.", + "Webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.": "Webtop — контейнеры на базе Alpine, Ubuntu, Fedora и Arch с полноценными рабочими окружениями в официально поддерживаемых вариантах, доступными через любой современный веб-браузер.", + "Weekly, Sunday 02:00": "Еженедельно, в воскресенье в 02:00", + "Weixin (WeChat) is an instant messaging, social media, and mobile payment app developed by Tencent.": "Weixin (WeChat) — разработанное Tencent приложение для обмена мгновенными сообщениями, общения в социальных сетях и мобильных платежей.", + "What cannot be translated:": "Что нельзя переводить:", + "What do you want to change?": "Что вы хотите изменить?", + "What do you want to do?": "Что вы хотите сделать?", + "What runs the recognition of Immich": "Что выполняет распознавание в Immich", + "What to modify": "Что изменить", + "What would you like to do?": "Что вы хотели бы сделать?", + "When asked to select a disk, click Load Driver and load the VirtIO drivers.": "Когда появится запрос на выбор диска, нажмите «Загрузить драйвер» и загрузите драйверы VirtIO.", + "When this GPU is passed through to a VM, the Proxmox host will lose all video output on the physical monitor.": "При пробросе этого GPU в виртуальную машину хост Proxmox полностью потеряет возможность вывода изображения на физический монитор.", + "Where are the backup archives stored?": "Где хранятся архивы резервных копий?", + "Where do you want the host folder?": "Где вы хотите разместить папку на хосте?", + "Where do you want to mount inside container?": "Где внутри контейнера вы хотите выполнить монтирование?", + "Where do you want to mount the NFS export?": "Где вы хотите смонтировать экспорт NFS?", + "Where do you want to mount the Samba share?": "Где вы хотите смонтировать общий ресурс Samba?", + "Where do you want to run this addon?": "Где вы хотите запустить это дополнение?", + "Where is the OVA/OVF file located?": "Где находится файл OVA/OVF?", + "Where to mount inside container?": "Куда монтировать внутри контейнера?", + "Where to store": "Где хранить", + "Where to store the Immich library": "Где хранить библиотеку Immich", + "Where to store the Nextcloud files, configuration and data": "Где хранить файлы, конфигурацию и данные Nextcloud", + "Where to store the consume and export folders": "Где хранить папки consume и export", + "Where to store the recipe images and files": "Где хранить изображения и файлы рецептов", + "Which guests should this job back up?": "Для каких гостевых систем это задание должно создавать резервные копии?", + "While the server allows guest listing, no shares are actually accessible without authentication.": "Хотя сервер разрешает гостю получать список, ни один общий ресурс фактически недоступен без аутентификации.", + "Whoogle Search": "Whoogle Search", + "Whoogle Search login": "Вход в Whoogle Search", + "Wikijs A modern, lightweight and powerful wiki app built on NodeJS.": "Wikijs — современное, легковесное и мощное вики-приложение на базе NodeJS.", + "Will be configured now": "Сейчас будет выполнена настройка", + "Windows Installation Options": "Параметры установки Windows", + "Windows path:": "Путь Windows:", + "WineGUI is a user-interface friendly Wine manager that provides a graphical frontend for creating and managing Wine bottles.": "WineGUI — удобный менеджер Wine с графическим интерфейсом для создания окружений Wine (bottles) и управления ими.", + "Wipe all — erase partitions + metadata": "Стереть всё — удалить разделы и метаданные", + "Wipe all — remove partitions + metadata": "Стереть всё — удалить разделы и метаданные", + "Wipe old signatures and partition table (DESTRUCTIVE):": "Стереть старые сигнатуры и таблицу разделов (УНИЧТОЖЕНИЕ ДАННЫХ):", + "Wiping existing partition table...": "Стирание существующей таблицы разделов...", + "Wiping partitions and metadata...": "Стирание разделов и метаданных...", + "WireGuard Easy web interface": "Веб-интерфейс WireGuard Easy", + "WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.": "WireGuard® — предельно простой, но при этом быстрый и современный VPN, использующий передовые криптографические технологии. Его цель — быть быстрее, проще, компактнее и полезнее, чем IPsec, без лишней головной боли. Он также призван обеспечивать значительно более высокую производительность, чем OpenVPN. WireGuard разработан как универсальный VPN, пригодный для самых разных условий: от встроенных интерфейсов до суперкомпьютеров. Изначально выпущенный для ядра Linux, теперь он поддерживает разные платформы (Windows, macOS, BSD, iOS, Android) и широкие возможности развёртывания. Сейчас он активно разрабатывается, но уже может считаться самым безопасным, удобным в использовании и простым VPN-решением в отрасли.", + "Wired NICs in backup missing on target:": "Проводные сетевые интерфейсы из резервной копии, отсутствующие на целевой системе:", + "Wireless Controller": "Беспроводной контроллер", + "Wireshark is the world’s foremost and widely-used network protocol analyzer. It lets you see what’s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.": "Wireshark — ведущий и широко используемый во всём мире анализатор сетевых протоколов. Он позволяет увидеть происходящее в сети в мельчайших деталях и является стандартом де-факто (а нередко и де-юре) во многих коммерческих и некоммерческих организациях, государственных ведомствах и учебных заведениях. Wireshark активно развивается благодаря добровольному вкладу сетевых специалистов со всего мира и продолжает проект, начатый Джеральдом Комбсом в 1998 году.", + "With another storage this job no longer starts them. Another job that writes to the original storage still does.": "При использовании другого хранилища это задание больше не запускает их. Другое задание, которое записывает данные в исходное хранилище, по-прежнему их запускает.", + "With dns validation, the DNSPLUGIN variable names the provider plugin. The advanced installation asks for it; otherwise add the line lxc.environment.runtime: DNSPLUGIN= to /etc/pve/lxc/.conf with the container stopped.": "При проверке через dns переменная DNSPLUGIN задаёт плагин провайдера. При расширенной установке запрашивается его имя; в противном случае добавьте строку lxc.environment.runtime: DNSPLUGIN= в /etc/pve/lxc/.conf, предварительно остановив контейнер.", + "With dns validation, write the provider credentials in /config/dns-conf/.ini inside the container and restart it.": "При проверке через dns запишите учётные данные провайдера в /config/dns-conf/.ini внутри контейнера и перезапустите контейнер.", + "With http validation, port 80 of the router must be forwarded to port 80 of this container.": "При проверке через http порт 80 маршрутизатора должен быть перенаправлен на порт 80 этого контейнера.", + "With warnings": "С предупреждениями", + "Without Function Level Reset (FLR), passthrough is not considered reliable": "Без Function Level Reset (FLR) проброс не считается надёжным", + "Without a usable reset path, passthrough reliability is poor and VM": "Без доступного механизма сброса надёжность проброса низкая, и виртуальная машина", + "Wizard cancelled": "Работа мастера отменена", + "Wolfenstein: Blade of Agony is a story-driven WWII shooter inspired by Wolfenstein and Doom.": "Wolfenstein: Blade of Agony — сюжетный шутер о Второй мировой войне, созданный под влиянием Wolfenstein и Doom.", + "Word processing in your browser": "Работа с текстовыми документами в браузере", + "Workflow automation tool": "Инструмент автоматизации рабочих процессов", + "Working directory:": "Рабочий каталог:", + "Works with LVM, ZFS, and BTRFS storage types": "Работает с хранилищами типов LVM, ZFS и BTRFS", + "Worth knowing before installing it:": "Что стоит знать перед установкой:", + "Would you like to continue in passthrough-only mode? The libedgetpu APT install will be skipped, the Coral device will still be visible inside the container (e.g. /dev/apex_0), and you can install the runtime yourself or use an app container that bundles it (e.g. the Frigate Docker image).": "Продолжить в режиме только проброса устройства? Установка libedgetpu через APT будет пропущена, но устройство Coral по-прежнему будет видно внутри контейнера (например, /dev/apex_0). Вы сможете установить среду выполнения самостоятельно или использовать контейнер приложения, в который она уже включена (например, образ Frigate Docker).", + "Would you like to see the current": "Хотите посмотреть текущие", + "Write access confirmed for user:": "Доступ на запись подтверждён для пользователя:", + "Write access confirmed.": "Доступ на запись подтверждён.", + "Write access test FAILED for user:": "Проверка доступа на запись НЕ ПРОЙДЕНА для пользователя:", + "Write access verified for user:": "Доступ на запись проверен для пользователя:", + "Write the value it produces instead.": "Вместо этого впишите полученное значение.", + "Wrong SHA-256 in": "Неверная контрольная сумма SHA-256 в", + "Wrong inherited registry lock": "Неверная унаследованная блокировка реестра", + "Wrong passphrase": "Неверная парольная фраза", + "Wrong size in": "Неверный размер в", + "Xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.": "Xbackbone — простой и легковесный файловый менеджер на PHP для размещения на собственном сервере, поддерживающий инструмент мгновенного обмена файлами ShareX и системы *NIX. Он позволяет загружать и просматривать изображения, GIF, видео, код и форматированный текст, а также скачивать и загружать файлы. Веб-интерфейс поддерживает управление несколькими пользователями, историю загрузок и поиск.", + "Yaak is a desktop API client for organizing and executing REST, GraphQL, and gRPC requests. It's built using Tauri, Rust, and ReactJS.": "Yaak — настольный клиент API для организации и выполнения запросов REST, GraphQL и gRPC. Он создан с использованием Tauri, Rust и ReactJS.", + "Yes": "Да", + "Yes, upload": "Да, загрузить", + "Yes: set a recovery passphrase now; the encrypted key envelope is uploaded with every backup.": "Да: задайте парольную фразу для восстановления сейчас; зашифрованный контейнер ключа загружается с каждой резервной копией.", + "You are connected via SSH and selected network-related restore paths.": "Вы подключены по SSH и выбрали для восстановления пути, связанные с сетью.", + "You can add it manually through:": "Вы можете добавить это вручную через:", + "You can add servers manually.": "Вы можете добавить серверы вручную.", + "You can enter the export path manually.": "Вы можете ввести путь экспорта вручную.", + "You can enter the share name manually.": "Вы можете ввести имя общего ресурса вручную.", + "You can keep using ProxMenux from this terminal.": "Вы можете продолжить использовать ProxMenux из этого терминала.", + "You can now monitor your AMD GPU using:": "Теперь вы можете отслеживать работу графического процессора AMD с помощью:", + "You can now monitor your Intel GPU using:": "Теперь вы можете отслеживать работу графического процессора Intel с помощью:", + "You can now select Controller/NVMe devices in Storage Plan.": "Теперь в плане хранения можно выбирать контроллеры и устройства NVMe.", + "You can reboot later manually with: reboot": "Вы можете перезагрузить систему позже вручную командой: reboot", + "You can reboot later manually.": "Вы можете перезагрузить систему позже вручную.", + "You can restore it anytime with": "Вы можете восстановить это в любое время с помощью", + "You can restore the backup with": "Вы можете восстановить резервную копию с помощью", + "You can run a security audit with:": "Вы можете выполнить аудит безопасности с помощью:", + "You can still install amdgpu_top if needed.": "При необходимости вы по-прежнему можете установить amdgpu_top.", + "You can still install intel-gpu-tools if needed.": "При необходимости вы по-прежнему можете установить intel-gpu-tools.", + "You can still mount this share for READ-ONLY access.": "Вы по-прежнему можете смонтировать этот общий ресурс в режиме ТОЛЬКО ДЛЯ ЧТЕНИЯ.", + "You can use the following credentials to login to the Nextcloud vm:": "Вы можете использовать следующие учётные данные для входа в виртуальную машину Nextcloud:", + "You haven't added any custom paths yet.": "Вы ещё не добавили ни одного пользовательского пути.", + "You may need to run 'pveceph install' manually": "Возможно, потребуется вручную выполнить 'pveceph install'", + "You must select a logo to continue.": "Для продолжения необходимо выбрать логотип.", + "You must select at least one mount method to continue.": "Для продолжения необходимо выбрать хотя бы один способ монтирования.", + "You need to use username and password authentication.": "Необходимо использовать аутентификацию по имени пользователя и паролю.", + "You selected 'Disk image' content on a CIFS/SMB storage.": "Вы выбрали тип содержимого «Образ диска» для хранилища CIFS/SMB.", + "You should now be able to access the Proxmox web interface.": "Теперь веб-интерфейс Proxmox должен быть доступен.", + "You will need a Tailscale auth key from: https://login.tailscale.com/admin/settings/keys": "Вам понадобится ключ аутентификации Tailscale со страницы: https://login.tailscale.com/admin/settings/keys", + "Your Coral USB device and its runtime (libedgetpu1) will NOT be affected.": "Ваше USB-устройство Coral и его среда выполнения (libedgetpu1) НЕ будут затронуты.", + "Your machine learning Env work with Jupyter Lab": "Ваша среда машинного обучения с Jupyter Lab", + "Your next YouTube media manager": "Ваш следующий менеджер медиаконтента YouTube", + "Your_spotify is a self-hosted application that tracks what you listen and offers you a dashboard to explore statistics about it! It's composed of a web server which polls the Spotify API every now and then and a web application on which you can explore your statistics.": "Your_spotify — это приложение для самостоятельного размещения, которое отслеживает, что вы слушаете, и предоставляет панель для просмотра статистики! Оно состоит из веб-сервера, который периодически опрашивает API Spotify, и веб-приложения, в котором можно изучать свою статистику.", + "Z-Wave JS UI": "Z-Wave JS UI", + "Z-Wave JS UI admin login": "Вход администратора Z-Wave JS UI", + "ZFS ARC config removed (kernel defaults will apply on reboot)": "Конфигурация ARC ZFS удалена (после перезагрузки будут применены настройки ядра по умолчанию)", + "ZFS ARC maximum configured:": "Настроен максимальный размер ARC ZFS:", + "ZFS ARC optimization completed": "Оптимизация ARC ZFS завершена", + "ZFS Management Commands": "Команды управления ZFS", + "ZFS Pool Name": "Имя пула ZFS", + "ZFS auto-snapshot installation and configuration completed": "Установка и настройка auto-snapshot для ZFS завершены", + "ZFS autotrim already enabled for pool:": "Функция autotrim ZFS уже включена для пула:", + "ZFS autotrim disabled for pool:": "Функция autotrim ZFS отключена для пула:", + "ZFS autotrim enabled for pool:": "Функция autotrim ZFS включена для пула:", + "ZFS autotrim is not supported for pool:": "Функция autotrim ZFS не поддерживается для пула:", + "ZFS autotrim setup completed": "Настройка autotrim ZFS завершена", + "ZFS command history": "История команд ZFS", + "ZFS configuration": "Конфигурация ZFS", + "ZFS member detected": "Обнаружен компонент ZFS", + "ZFS not detected. Nothing to disable.": "ZFS не обнаружена. Отключать нечего.", + "ZFS not detected. Skipping ZFS ARC optimization.": "ZFS не обнаружена. Оптимизация ARC для ZFS пропущена.", + "ZFS not detected. Skipping ZFS autotrim.": "ZFS не обнаружена. Автоматический TRIM для ZFS пропущен.", + "ZFS pool": "Пул ZFS", + "ZFS pool created": "Пул ZFS создан", + "ZFS pool created and mounted at": "Пул ZFS создан и смонтирован в", + "ZFS pool exported:": "Пул ZFS экспортирован:", + "ZFS pool is not available after creation:": "Пул ZFS недоступен после создания:", + "ZFS pool not found:": "Пул ZFS не найден:", + "ZFS pool:": "Пул ZFS:", + "ZFS storage added successfully to Proxmox!": "Хранилище ZFS успешно добавлено в Proxmox!", + "ZFS tools not found. Install zfsutils-linux and retry.": "Инструменты ZFS не найдены. Установите zfsutils-linux и повторите попытку.", + "ZFS:": "ZFS:", + "ZNC web interface": "Веб-интерфейс ZNC", + "ZRAM ownership state is incomplete; inspect it before retrying": "Сведения о принадлежности ZRAM неполны; проверьте их перед повторной попыткой", + "ZRAM ownership state is incomplete; no files were removed": "Сведения о принадлежности ZRAM неполны; файлы не удалены", + "ZRAM profile activation failed; details:": "Не удалось активировать профиль ZRAM; подробности:", + "ZRAM profile helpers are missing": "Вспомогательные компоненты профиля ZRAM отсутствуют", + "ZRAM profile is already active": "Профиль ZRAM уже активен", + "ZRAM profile removed, but package purge failed": "Профиль ZRAM удалён, но полностью удалить пакет не удалось", + "ZRAM still holds pages; configuration was preserved": "В ZRAM всё ещё находятся страницы памяти; конфигурация сохранена", + "ZRAM still holds pages; profile remains active": "В ZRAM всё ещё находятся страницы памяти; профиль остаётся активным", + "ZRAM swap profile": "Профиль подкачки ZRAM", + "ZRAM swap profile enabled": "Профиль подкачки ZRAM включён", + "ZRAM swap profile removed": "Профиль подкачки ZRAM удалён", + "ZSTD - fast, good ratio (recommended)": "ZSTD — быстрое сжатие, хорошая степень сжатия (рекомендуется)", + "Zen Browser is a free and open-source fork of Mozilla Firefox with a focus on privacy, customizability and design.": "Zen Browser — свободный браузер с открытым исходным кодом на основе Mozilla Firefox, ориентированный на конфиденциальность, гибкую настройку и дизайн.", + "Zero all data — partition table preserved, data wiped": "Обнулить все данные — таблица разделов сохраняется, данные стираются", + "Zero all data — partition table preserved": "Обнулить все данные — таблица разделов сохраняется", + "Zeroing partition": "Обнуление раздела", + "Zipkin": "Zipkin", + "Znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.": "Znc — это промежуточный сервер для сети IRC, или BNC. Он позволяет отключать клиент от фактического сервера IRC, а также от выбранных каналов. Несколько клиентов из разных мест могут одновременно подключаться к одной учётной записи ZNC и таким образом использовать один и тот же ник в IRC.", + "Zoraxy Management": "Управление Zoraxy", + "Zotero is a free, easy-to-use tool to help you collect, organize, annotate, cite, and share research.": "Zotero — бесплатный и простой в использовании инструмент для сбора, упорядочивания, аннотирования и цитирования исследовательских материалов, а также обмена ими.", + "a device it asks for cannot be translated:": "не удаётся сопоставить запрашиваемое устройство:", + "a different host monitor include already exists:": "уже существует другой подключаемый файл конфигурации монитора хоста:", + "a value is required": "необходимо указать значение", + "aMule WebUI (password only, no username)": "aMule WebUI (только пароль, без имени пользователя)", + "aMule is a multi-platform client for the ED2K file sharing network and based on the windows client eMule. aMule started in August 2003, as a fork of xMule, which is a fork of lMule.": "aMule — кроссплатформенный клиент файлообменной сети ED2K, основанный на клиенте eMule для Windows. Разработка aMule началась в августе 2003 года как ответвление xMule, который, в свою очередь, является ответвлением lMule.", + "active VF(s)": "активных VF", + "active VFs": "активные VF", + "active Virtual Functions. Changing its driver binding would destroy every VF.": "активных виртуальных функций. Изменение привязки этого устройства к драйверу уничтожит все VF.", + "added in Proxmox": "добавлено в Proxmox", + "after copy; source tree is incomplete.": "после копирования; исходное дерево файлов неполное.", + "after update.": "после обновления.", + "all guests": "все гостевые системы", + "all_squash,anonuid=65534,anongid=65534": "all_squash,anonuid=65534,anongid=65534", + "allow TCP {port} from {subnet} via {bridge}": "разрешить TCP {port} из {subnet} через {bridge}", + "amdgpu_top installed successfully": "amdgpu_top успешно установлен", + "amdgpu_top is already installed:": "amdgpu_top уже установлен:", + "amdgpu_top is not installed": "amdgpu_top не установлен", + "amdgpu_top is up to date": "amdgpu_top уже обновлён до актуальной версии", + "amdgpu_top uninstalled successfully": "amdgpu_top успешно удалён", + "amdgpu_top updated to": "amdgpu_top обновлён до", + "and": "и", + "and could not be unmounted — disk may be busy.": "и не удалось размонтировать — возможно, диск занят.", + "and upgrade the system (disables the enterprise repo)": "и обновить систему (отключает корпоративный репозиторий)", + "and, read-only, at": "и, в режиме только для чтения, по пути", + "another container of this host already uses the address": "другой контейнер на этом хосте уже использует адрес", + "apex device node not found yet; a reboot may be required.": "Узел устройства apex пока не найден; может потребоваться перезагрузка.", + "apex group and udev rules are in place.": "Группа apex и правила udev настроены.", + "apex group removed.": "Группа apex удалена.", + "apex group still has members; left in place:": "В группе apex всё ещё есть участники; группа сохранена:", + "apex kernel module not loaded on host. Run \"Install Coral on Host\" first or the container will not see /dev/apex_0.": "Модуль ядра apex не загружен на хосте. Сначала выполните «Установить Coral на хосте», иначе контейнер не увидит /dev/apex_0.", + "appears to be part of a": "по всей видимости, является частью", + "apply requires the OCI archive of the resolved image": "Для apply требуется OCI-архив определённого образа", + "applying minimal banner patch": "применение минимального исправления баннера", + "apt cache refreshed.": "Кэш apt обновлён.", + "apt-get exited": "apt-get завершился", + "apt-get update returned warnings. Continuing anyway; check": "apt-get update вернул предупреждения. Продолжаем; проверьте", + "as": "как", + "assembling": "сборка", + "automatically. Install it manually inside the container.": "автоматически. Установите его вручную внутри контейнера.", + "automatically. Reboot LXC to fully release.": "автоматически. Перезагрузите LXC для полного освобождения.", + "available": "доступно", + "available for LXC bind-mounts via 'LXC Mount Manager'": "доступно для bind-монтирований LXC через «LXC Mount Manager»", + "available in this same GPU and TPU menu.": "доступно в этом же меню GPU и TPU.", + "backup at /etc/fstab.proxmenux.bak": "резервная копия в /etc/fstab.proxmenux.bak", + "ban": "заблокировать", + "belongs to another OCI installation": "принадлежит другой установке OCI", + "blocking issue(s).": "проблем, препятствующих продолжению.", + "btrfs — Proxmox dir storage (snapshots, compression)": "btrfs — хранилище Proxmox типа dir (снимки, сжатие)", + "btrfs — snapshots and compression": "btrfs — снимки и сжатие", + "budge is an open source 'budgeting with envelopes' personal finance app.": "budge — приложение с открытым исходным кодом для управления личными финансами по методу конвертов.", + "builds against kernel": "собирается для ядра", + "but it does not match the one used to create the backup. Replace it with the correct keyfile from the source host and retry.": "но он не совпадает с тем, который использовался для создания резервной копии. Замените его правильным файлом ключа с исходного узла и повторите попытку.", + "bytes": "байт", + "can write to": "может записывать в", + "chmod 1777 + setfacl o::rwx (applied on the NFS share from this host)": "chmod 1777 + setfacl o::rwx (применяется к общему ресурсу NFS с этого узла)", + "chmod failed — NFS server may be restricting changes from root": "Не удалось выполнить chmod — сервер NFS может ограничивать изменения от имени root", + "chown/chmod failed — likely unprivileged CT against host bind mount. Falling back to ACL.": "Не удалось выполнить chown/chmod — вероятно, непривилегированный контейнер CT использует bind-монтирование с узла. Вместо этого используется ACL.", + "clone source mount tree": "клонировать исходное дерево монтирования", + "containers": "контейнеры", + "containers of": "контейнеров из", + "content:": "содержимое:", + "copyparty web interface": "веб-интерфейс copyparty", + "could not be compiled for kernel": "не удалось скомпилировать для ядра", + "could not validate NVIDIA; exit code": "не удалось проверить NVIDIA; код выхода", + "cpuunits must be between 8 and 10000": "Значение cpuunits должно быть от 8 до 10000", + "curl -L -o /models/gemma-3-1b-it-Q4_K_M.gguf https://huggingface.co/ggml-org/gemma-3-1b-it-GGUF/resolve/main/gemma-3-1b-it-Q4_K_M.gguf": "curl -L -o /models/gemma-3-1b-it-Q4_K_M.gguf https://huggingface.co/ggml-org/gemma-3-1b-it-GGUF/resolve/main/gemma-3-1b-it-Q4_K_M.gguf", + "custom": "пользовательский", + "custom dependency commands are not yet supported": "пользовательские команды для зависимостей пока не поддерживаются", + "custom path(s) saved.": "собственных путей сохранено.", + "darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.": "darktable — приложение с открытым исходным кодом для организации работы с фотографиями и обработки изображений в формате RAW. Это виртуальный световой стол и фотолаборатория для фотографов. Приложение хранит сведения о ваших цифровых негативах в базе данных, позволяет просматривать их на световом столе с изменяемым масштабом, а также обрабатывать и улучшать изображения в формате RAW.", + "ddclient starts with the example configuration and updates nothing yet. Write your provider, login and domains in /config/ddclient.conf inside the container, then restart it.": "ddclient запускается с примером конфигурации и пока ничего не обновляет. Укажите своего провайдера, логин и домены в /config/ddclient.conf внутри контейнера, затем перезапустите ddclient.", + "default": "по умолчанию", + "delete the credentials file (if any)": "удалите файл с учётными данными (если он существует)", + "delete the matching line from /etc/fstab": "удалите соответствующую строку из /etc/fstab", + "descriptor + VMDK files": "дескриптор + файлы VMDK", + "device(s) added to VM": "устройств добавлено в VM", + "devices": "устройства", + "devices (dynamic runtime)": "устройства (динамически во время выполнения)", + "did not become ready. Skipping.": "не перешёл в состояние готовности. Пропускается.", + "digiKam: Professional Photo Management with the Power of Open Source": "digiKam: профессиональное управление фотографиями с возможностями открытого исходного кода", + "disabled": "отключено", + "disk(s) added to CT": "дисков добавлено в CT", + "disk(s) added to VM": "дисков добавлено в VM", + "diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.": "diskover — индексатор файловых систем с открытым исходным кодом, использующий Elasticsearch для индексации данных и управления ими в разнородных системах хранения.", + "disks present": "диски присутствуют", + "dkms autoinstall did not activate:": "Команда dkms autoinstall не активировалась:", + "dkms.conf generated.": "Файл dkms.conf создан.", + "docker run command": "команда docker run", + "docker run command of the application": "команда docker run для запуска приложения", + "does not exist on this host. Path not added.": "не существует на этом узле. Путь не добавлен.", + "does not exist. Exiting.": "не существует. Завершение работы.", + "doplarr_rs starts from the example configuration and connects to nothing. Write the token of your Discord bot in discord_token in /config/config.toml inside the container.": "doplarr_rs запускается с примером конфигурации и ни к чему не подключается. Укажите токен своего бота Discord в параметре discord_token файла /config/config.toml внутри контейнера.", + "downloaded Compose file": "загруженный файл Compose", + "dpkg still reports unfinished package work; review": "dpkg всё ещё сообщает о незавершённых операциях с пакетами; проверьте", + "draw.io": "draw.io", + "driver components": "компоненты драйвера", + "driver:": "драйвер:", + "e.g.": "например,", + "empty = generate": "пустое значение = сгенерировать", + "enter container namespace": "войти в пространство имён контейнера", + "exFAT (portable: Windows/Linux/macOS)": "exFAT (переносимость между Windows/Linux/macOS)", + "exFAT tools installed successfully.": "Инструменты exFAT успешно установлены.", + "experimental on this GPU": "экспериментальная поддержка на этом GPU", + "ext4 — Proxmox dir storage (recommended)": "ext4 — хранилище Proxmox типа dir (рекомендуется)", + "ext4 — recommended, most compatible": "ext4 — рекомендуется, наилучшая совместимость", + "external, already running": "внешний, уже запущен", + "fail2ban-client could not communicate with the server": "fail2ban-client не удалось связаться с сервером", + "fail2ban-client successfully communicated with the server": "fail2ban-client успешно связался с сервером", + "failed": "ошибка", + "failed with exit code": "завершилось с кодом выхода", + "failed:": "ошибка:", + "feranick fork unreachable. Falling back to google/gasket-driver...": "Форк feranick недоступен. Переключение на google/gasket-driver...", + "feranick/gasket-driver cloned (actively maintained, kernel 6.12+ ready).": "Репозиторий feranick/gasket-driver клонирован (активно поддерживается, готов к работе с ядром 6.12 и новее).", + "file?": "файл?", + "files": "файлы", + "files/folders": "файлы/папки", + "filesystem. Skipping format.": "файловая система. Форматирование пропускается.", + "filesystem...": "файловая система...", + "first of every month": "первого числа каждого месяца", + "for better performance and stability": "для повышения производительности и стабильности", + "for next boot (needs reboot to take effect)": "для следующей загрузки (для применения требуется перезагрузка)", + "for this policy and may fail after first use or on subsequent VM starts.": "для этой политики и может дать сбой после первого использования или при последующих запусках ВМ.", + "formatted as": "отформатирован в", + "found": "найдено", + "free": "free", + "from": "из", + "from Proxmox web interface (you will be asked)": "из веб-интерфейса Proxmox (вам будет предложено это сделать)", + "from container": "из контейнера", + "from the GPUs and Coral-TPU menu first, then run this option again.": "сначала в меню GPU и Coral-TPU, затем запустите этот пункт ещё раз.", + "fstab entry exists": "запись в fstab существует", + "fstab line:": "строка fstab:", + "fstab references UUIDs/devices not present on this host:": "fstab ссылается на UUID или устройства, отсутствующие на этом узле:", + "function '%s' is not defined in the %s flow.": "функция '%s' не определена в процессе %s.", + "gasket DKMS entries removed.": "Записи gasket DKMS удалены.", + "gasket-dkms has been fully removed from this system.": "gasket-dkms полностью удалён из этой системы.", + "gasket-dkms is still reported by dpkg in state:": "dpkg по-прежнему сообщает, что gasket-dkms находится в состоянии:", + "gawk installed": "gawk установлен", + "genisoimage/mkisofs not found.": "genisoimage/mkisofs не найден.", + "go2rtc WebUI": "go2rtc WebUI", + "google/gasket-driver cloned (fallback — will apply local patches).": "google/gasket-driver клонирован (резервный вариант — будут применены локальные исправления).", + "gpg not found; trying apt-key fallback": "gpg не найден; попытка использовать apt-key в качестве резервного варианта", + "gzip could not be verified; the change was not completed": "не удалось проверить gzip; изменение не было завершено", + "gzip replaced with pigz wrapper successfully": "gzip успешно заменён обёрткой pigz", + "has": "имеет", + "has a different MAC than the backup — update any DHCP static reservation": "имеет MAC-адрес, отличающийся от указанного в резервной копии — обновите соответствующее статическое резервирование DHCP", + "has a new MAC": "имеет новый MAC-адрес", + "has only": "имеет только", + "health and persistence profile not yet defined": "профиль работоспособности и сохранения данных ещё не определён", + "hiSHtory is a better shell history. It stores your shell history in context (what directory you ran the command in, whether it succeeded or failed, how long it took, etc). This is all stored locally and end-to-end encrypted for syncing to to all your other computers.": "hiSHtory — улучшенная история команд оболочки. Она сохраняет историю команд вместе с контекстом: в каком каталоге выполнялась команда, завершилась ли она успешно или с ошибкой, сколько времени заняло её выполнение и т. д. Все данные хранятся локально и защищены сквозным шифрованием при синхронизации со всеми вашими другими компьютерами.", + "host directory": "каталог хоста", + "host fstab only (not registered as Proxmox storage)": "только в fstab хоста (не зарегистрировано как хранилище Proxmox)", + "hostpci entries for all IOMMU group devices": "записи hostpci для всех устройств группы IOMMU", + "hostpci entries for selected GPU functions (full IOMMU group will be enforced after reboot)": "записи hostpci для выбранных функций GPU (после перезагрузки будет принудительно задействована вся группа IOMMU)", + "hour(s)": "ч.", + "https if the image serves TLS": "https, если образ обслуживает подключения по TLS", + "iSCSI Content Type": "Тип содержимого iSCSI", + "iSCSI Daemon (iscsid): RUNNING": "Служба iSCSI (iscsid): ЗАПУЩЕНА", + "iSCSI Daemon (iscsid): STOPPED": "Служба iSCSI (iscsid): ОСТАНОВЛЕНА", + "iSCSI Host Manager - Proxmox Host": "Менеджер iSCSI на хосте — хост Proxmox", + "iSCSI Initiator: AVAILABLE": "Инициатор iSCSI: ДОСТУПЕН", + "iSCSI Initiator: NOT INSTALLED": "Инициатор iSCSI: НЕ УСТАНОВЛЕН", + "iSCSI Portal": "Портал iSCSI", + "iSCSI Storages in Proxmox": "Хранилища iSCSI в Proxmox", + "iSCSI Storages:": "Хранилища iSCSI:", + "iSCSI discovery failed": "Не удалось выполнить обнаружение iSCSI", + "iSCSI port": "порт iSCSI", + "iSCSI service is running on the target": "служба iSCSI запущена на целевом устройстве", + "iSCSI storage added successfully to Proxmox!": "Хранилище iSCSI успешно добавлено в Proxmox!", + "iSCSI storage provides raw block devices for VM disk images.": "Хранилище iSCSI предоставляет необработанные блочные устройства для образов дисков виртуальных машин.", + "iSCSI tools installed": "Инструменты iSCSI установлены", + "iftop usage": "использование iftop", + "image cache on": "кэш образов на", + "image itself": "сам образ", + "imported:": "импортировано:", + "in CT": "в CT", + "in backups": "в резервных копиях", + "incompatible qBittorrent schema": "несовместимая схема qBittorrent", + "individual template is blocked": "отдельный шаблон заблокирован", + "initramfs updated": "initramfs обновлён", + "initramfs updated.": "initramfs обновлён.", + "installable": "доступно для установки", + "installed": "установлено", + "installed but command not immediately available": "установлено, но команда доступна не сразу", + "installed correctly and available": "установлено корректно и доступно", + "installed in CT": "установлено в CT", + "installed inside CT": "установлено внутри CT", + "installed successfully.": "успешно установлено.", + "installed.": "установлено.", + "installing": "установка", + "intel-gpu-tools installed successfully": "intel-gpu-tools успешно установлен", + "intel-gpu-tools is already installed:": "intel-gpu-tools уже установлен:", + "intel-gpu-tools is up to date": "intel-gpu-tools актуален", + "intel-gpu-tools uninstalled successfully": "intel-gpu-tools успешно удалён", + "intel-gpu-tools updated to": "intel-gpu-tools обновлён до", + "intel_iommu/amd_iommu is set in cmdline but no IOMMU groups exist — IOMMU appears disabled in BIOS. Enable VT-d / AMD-Vi in firmware before continuing.": "intel_iommu/amd_iommu задан в параметрах командной строки ядра, но группы IOMMU отсутствуют — вероятно, IOMMU отключён в BIOS. Прежде чем продолжить, включите VT-d / AMD-Vi в настройках прошивки.", + "interfaces": "интерфейсы", + "into an LXC.": "в LXC.", + "invalid source '%s' (must be 'auto', 'custom', or 'detected')": "недопустимый источник '%s' (допустимые значения: 'auto', 'custom' или 'detected')", + "iperf3 - Bandwidth test": "iperf3 — проверка пропускной способности", + "iperf3 - Bandwidth test (Client mode)": "iperf3 — проверка пропускной способности (режим клиента)", + "iperf3 - Bandwidth test (Server mode)": "iperf3 — проверка пропускной способности (режим сервера)", + "iperf3 client": "Клиент iperf3", + "iperf3 client output": "Вывод клиента iperf3", + "iperf3 server": "Сервер iperf3", + "iperf3 server is running on": "Сервер iperf3 работает на", + "iperf3 server output": "Вывод сервера iperf3", + "iperf3 test failed": "Проверка iperf3 завершилась с ошибкой", + "iptraf-ng usage": "Использование iptraf-ng", + "is UNPRIVILEGED.": "является НЕПРИВИЛЕГИРОВАННЫМ.", + "is a Physical Function with": "является физической функцией (PF) с", + "is already assigned to the following VM(s) or CT(s):": "уже назначено следующим виртуальным машинам или контейнерам:", + "is already installed. Do you want to reinstall it? This will perform a clean uninstall first.": "уже установлено. Хотите переустановить? Сначала будет выполнено полное удаление.", + "is already unprivileged.": "уже является непривилегированным.", + "is an SR-IOV Virtual Function (VF). Its parent Physical Function is": "является виртуальной функцией SR-IOV (VF). Родительская физическая функция (PF):", + "is in use by running VM": "используется работающей виртуальной машиной", + "is in use by the following running VM(s) or CT(s):": "используется следующими работающими виртуальными машинами или контейнерами:", + "is mounted at": "смонтировано в", + "is not configured as machine type q35.": "не настроена на использование типа машины q35.", + "is not in the patch.sh supported list. The patch may no-op or fail; review keylase/nvidia-patch README before continuing.": "не входит в список поддерживаемых версий patch.sh. Применение патча может не дать эффекта или завершиться ошибкой; перед продолжением ознакомьтесь с README проекта keylase/nvidia-patch.", + "is not supported by the official Google libedgetpu APT repository.": "не поддерживается официальным APT-репозиторием Google libedgetpu.", + "is now": "теперь имеет состояние", + "is one of the": "— один из", + "is referenced in the following stopped VM(s)/CT(s):": "упоминается в следующих остановленных VM /CT:", + "it asks for the network of the host; the container gets its own address instead": "запрашивается использование сети хоста; вместо этого контейнер получает собственный адрес", + "it asks for two different memory limits": "запрашиваются два разных ограничения памяти", + "it could not be started:": "не удалось запустить:", + "it describes more than one image": "описывается более одного образа", + "it is locked or its disk could not be mounted": "контейнер заблокирован или не удалось смонтировать его диск", + "it publishes no other architecture": "другие архитектуры не публикуются", + "it uses Compose configs, which have no equivalent here": "используются конфигурации Compose, для которых здесь нет эквивалента", + "it uses an NVIDIA GPU and this host has no working NVIDIA driver and Container Toolkit. Install them and run the recovery again.": "используется GPU NVIDIA, а на этом хосте нет работающего драйвера NVIDIA и Container Toolkit. Установите их и повторите восстановление.", + "it uses the Compose option": "используется параметр Compose", + "its NVIDIA runtime could not be rebuilt for the driver of this host; the container will not start until it is installed again:": "не удалось пересоздать среду выполнения NVIDIA для драйвера этого хоста; контейнер не запустится, пока она не будет установлена заново:", + "its Rclone mount is published again on this host at": "его точка монтирования Rclone снова доступна на этом хосте по пути", + "its Rclone mount is published by a host script that a backup does not include. Enable the mount again from the Rclone entry of the catalog before starting it.": "его точка монтирования Rclone предоставляется скриптом хоста, который не входит в резервную копию. Перед запуском контейнера снова включите монтирование через пункт Rclone в каталоге.", + "its backup was made before ProxMenux kept the record inside the container": "его резервная копия была создана до того, как ProxMenux начал сохранять запись внутри контейнера", + "its configuration could not be read": "не удалось прочитать его конфигурацию", + "its health check is not written in a way that can be read": "его проверка работоспособности записана в формате, который невозможно прочитать", + "its hookscript does not exist on this host:": "его скрипт-хук отсутствует на этом хосте:", + "its host firewall rule was not added:": "его правило межсетевого экрана хоста не было добавлено:", + "its include exists with other content:": "его включаемый файл уже существует с другим содержимым:", + "its record is missing and it was not found among the restored containers": "запись о нём отсутствует, и он не найден среди восстановленных контейнеров", + "its shared memory size is not written in a way that can be read": "размер его разделяемой памяти записан в формате, который невозможно прочитать", + "its stop timeout is not written in a way that can be read": "его тайм-аут остановки записан в нечитаемом формате", + "journald MaxLevelStore is adequate for auth logging": "Значение MaxLevelStore в journald подходит для регистрации событий аутентификации", + "journald drop-in created: /etc/systemd/journald.conf.d/proxmenux-loglevel.conf": "Создан файл дополнительной конфигурации journald: /etc/systemd/journald.conf.d/proxmenux-loglevel.conf", + "journald log level restored": "Уровень журналирования journald восстановлен", + "journald restarted - auth messages will now be stored": "journald перезапущен — теперь сообщения аутентификации будут сохраняться", + "jq is required for this menu and is not installed.": "Для работы этого меню требуется jq, но он не установлен.", + "jq is required for this operation but is not installed.": "Для этой операции требуется jq, но он не установлен.", + "jq is required to apply updates from this menu.": "Для применения обновлений из этого меню требуется jq.", + "jq not available — skipping rollback execution": "jq недоступен — выполнение отката пропускается", + "keep-daily (0 disables)": "keep-daily (0 — отключить)", + "keep-hourly (0 disables)": "keep-hourly (0 — отключить)", + "keep-last (0 disables)": "keep-last (0 — отключить)", + "keep-monthly (0 disables)": "keep-monthly (0 — отключить)", + "keep-weekly (0 disables)": "keep-weekly (0 — отключить)", + "keep-yearly (0 disables)": "keep-yearly (0 — отключить)", + "keeping current settings": "текущие настройки сохраняются", + "kernel": "ядро", + "kexec configured successfully. Use the command: reboot-quick": "kexec успешно настроен. Используйте команду: reboot-quick", + "kexec-pve service enabled": "Служба kexec-pve включена", + "kexec-pve service file created": "Файл службы kexec-pve создан", + "kexec-pve service file is already configured": "Файл службы kexec-pve уже настроен", + "kexec-pve service is already enabled": "Служба kexec-pve уже включена", + "kexec-tools and related settings removed": "kexec-tools и связанные настройки удалены", + "kexec-tools installed successfully": "kexec-tools успешно установлен", + "kexec-tools is already installed": "kexec-tools уже установлен", + "kexec-tools is not installed or already removed.": "kexec-tools не установлен или уже удалён.", + "layers": "слои", + "legacy .link file(s) to the ProxMenux-managed format": "устаревшие файлы .link в формат, управляемый ProxMenux", + "llama.cpp shows every GGUF model saved in /models in its web UI and loads the one you choose.": "llama.cpp отображает в своём веб-интерфейсе все модели GGUF, сохранённые в /models, и загружает выбранную вами модель.", + "log2ram completely removed from system": "log2ram полностью удалён из системы", + "main container of the application": "основной контейнер приложения", + "make cloned mount tree read-only": "сделать клонированное дерево монтирования доступным только для чтения", + "manually inside the container before starting it.": "вручную внутри контейнера перед его запуском.", + "manually inside the container.": "вручную внутри контейнера.", + "master key": "главный ключ", + "maximum performance": "максимальная производительность", + "may be closed — trying discovery anyway...": "может быть закрыт — всё равно пробуем выполнить обнаружение...", + "melonDS aims at providing fast and accurate Nintendo DS emulation.": "melonDS нацелен на обеспечение быстрой и точной эмуляции Nintendo DS.", + "members:": "участников:", + "memory": "память", + "minimum": "минимум", + "missing": "отсутствует", + "mkfs.btrfs not found. Install btrfs-progs and retry.": "mkfs.btrfs не найден. Установите btrfs-progs и повторите попытку.", + "more": "ещё", + "more packages; the full list is in the update log": "дополнительных пакетов; полный список приведён в журнале обновления", + "motionEye web interface": "веб-интерфейс motionEye", + "mount.cifs command not found after installation.": "Команда mount.cifs не найдена после установки.", + "mount.nfs command not found after installation.": "Команда mount.nfs не найдена после установки.", + "mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.": "mstream — персональный сервер потоковой передачи музыки. С помощью mStream можно транслировать музыку с домашнего компьютера на любое устройство, где бы вы ни находились. Доступны мобильные приложения для Android и iPhone.", + "must contain a valid numeric UID for the GPU": "должно содержать допустимый числовой UID для GPU", + "needed": "требуется", + "needs a privileged LXC": "требуется привилегированный LXC", + "needs a relaxed AppArmor or seccomp profile": "требуется профиль AppArmor или seccomp с ослабленными ограничениями", + "needs stack review": "требуется проверка стека", + "needs these external services, already running:": "требуются следующие уже работающие внешние службы:", + "network": "сеть", + "never": "никогда", + "next free": "следующий свободный", + "next free block": "следующий свободный блок", + "nftables not available - using iptables ban action": "nftables недоступен — для блокировки используется iptables", + "no": "нет", + "no (kdf=none, not needed)": "нет (kdf=none, не требуется)", + "no (no escrow blob — set a recovery passphrase to enable recovery)": "нет (данные депонирования отсутствуют — задайте парольную фразу восстановления, чтобы включить восстановление)", + "no declarative value": "нет декларативного значения", + "no passphrase": "нет парольной фразы", + "no password": "нет пароля", + "no-subscription repository": "репозиторий no-subscription", + "noVNC browser session": "сеанс noVNC в браузере", + "noVNC browser session (password only)": "сеанс noVNC в браузере (только пароль)", + "no_root_squash": "no_root_squash", + "non-ProxMenux .tar archive(s) in this path": "архивы .tar, не относящиеся к ProxMenux, по этому пути", + "none": "нет", + "not available yet": "пока недоступно", + "not changed": "без изменений", + "not found.": "не найдено.", + "not generated": "не сгенерировано", + "not installed": "не установлен", + "not reliable on this hardware due to the following limitations": "работает ненадёжно на этом оборудовании из-за следующих ограничений", + "nouveau driver has been blacklisted.": "Драйвер nouveau добавлен в чёрный список.", + "nouveau module unloaded after initramfs rebuild.": "Модуль nouveau выгружен после пересборки initramfs.", + "nouveau module unloaded successfully.": "Модуль nouveau успешно выгружен.", + "nouveau still active. Proceeding with installation. A reboot will be required for the driver to work.": "nouveau всё ещё активен. Установка продолжается. Для работы драйвера потребуется перезагрузка.", + "now": "сейчас", + "now, with its current settings?": "сейчас, с текущими настройками?", + "now?": "сейчас?", + "ntfy": "ntfy", + "nvidia-smi not found after install. Check log:": "nvidia-smi не найден после установки. Проверьте журнал:", + "nvidia-smi not found in PATH. Please verify the driver installation.": "nvidia-smi не найден в PATH. Проверьте установку драйвера.", + "nvidia-smi not found in container": "nvidia-smi не найден в контейнере", + "oci-compose of the application": "oci-compose приложения", + "of": "из", + "of free disk space.": "свободного места на диске.", + "older firmware may increase passthrough instability": "устаревшая прошивка может повысить нестабильность проброса устройств", + "oldest driver offered:": "самый старый из предлагаемых драйверов:", + "on": "на", + "on SSD/NVMe pools that support discard": "на пулах SSD/NVMe с поддержкой discard", + "one of its services declares no image": "для одного из сервисов не указан образ", + "one of its services is not written as a service": "один из сервисов не оформлен как сервис", + "openssl encryption failed.": "Не удалось выполнить шифрование с помощью openssl.", + "openssl is not installed — cannot create recovery copy. Install openssl and retry.": "openssl не установлен — невозможно создать копию для восстановления. Установите openssl и повторите попытку.", + "optional": "необязательно", + "optional dependencies are not yet supported": "необязательные зависимости пока не поддерживаются", + "or format it manually using external tools.": "или отформатируйте его вручную с помощью внешних инструментов.", + "or none": "или ни одного", + "or use the ProxMenux LXC Mount Manager.": "или используйте менеджер монтирования ProxMenux LXC.", + "orphan iface lines, no impact on restore": "строки iface без соответствующих интерфейсов, не влияют на восстановление", + "other .tar archive(s) — not ProxMenux host backups (e.g. PVE vzdump or unrelated tarballs).": "другие архивы .tar — не резервные копии хоста ProxMenux (например, архивы vzdump PVE или посторонние tar-архивы).", + "ownCloud Infinite Scale": "ownCloud Infinite Scale", + "ownCloud administrator": "администратор ownCloud", + "packages (this may take a few minutes)...": "пакеты (это может занять несколько минут)...", + "packages.": "пакетов.", + "parent PF:": "родительская PF:", + "partition(s). Partition table preserved.": "разделов. Таблица разделов сохранена.", + "pasted Compose file": "вставленный файл Compose", + "paths for next boot (/etc/pve, guests, drivers, ...)": "пути для следующей загрузки (/etc/pve, гостевые системы, драйверы, ...)", + "pct exec authorization failed": "ошибка авторизации pct exec", + "pct push failed. Check log:": "не удалось выполнить pct push. Проверьте журнал:", + "pending (reboot required to enumerate full group)": "ожидание (для определения полного состава группы требуется перезагрузка)", + "pending adaptation": "ожидает адаптации", + "pgAdmin administrator": "администратор pgAdmin", + "phpMyAdmin is installed with arbitrary server connections enabled: the login page has a Server field where the address of the MySQL or MariaDB server is entered, together with its user and password.": "phpMyAdmin установлен с разрешением подключения к произвольным серверам: на странице входа есть поле «Сервер», в котором указывается адрес сервера MySQL или MariaDB, а также поля для имени пользователя и пароля этого сервера.", + "pigz configuration completed": "настройка pigz завершена", + "pigz enabled in vzdump configuration": "pigz включён в конфигурации vzdump", + "pigz installed successfully": "pigz успешно установлен", + "pigz removed": "pigz удалён", + "pigz wrapper script created": "скрипт-обёртка для pigz создан", + "playit.gg has to claim this agent before it forwards anything. The agent prints a one-time claim link on the container console and keeps it there until the link is opened.": "Прежде чем агент начнёт перенаправлять трафик, его необходимо привязать к учётной записи playit.gg. Агент выводит одноразовую ссылку для привязки в консоли контейнера и оставляет её там, пока ссылка не будет открыта.", + "port": "порт", + "portmapper/rpcbind has been disabled": "portmapper/rpcbind отключён", + "print the estimated unpacked size in MiB (0 when unknown)": "вывести предполагаемый размер после распаковки в MiB (0, если неизвестен)", + "private network assigned automatically": "частная сеть назначена автоматически", + "privileged LXC": "привилегированный LXC", + "provide either SOURCE_TYPE+FUNCTION_NAME (single mode) or FUNCTIONS_BATCH (batch mode).": "укажите либо SOURCE_TYPE+FUNCTION_NAME (одиночный режим), либо FUNCTIONS_BATCH (пакетный режим).", + "proxmox-backup-client reported:": "proxmox-backup-client сообщил:", + "proxmox-boot-tool refreshed": "Обновление с помощью proxmox-boot-tool выполнено", + "publish mount tree": "опубликовать дерево монтирования", + "pve-enterprise.list update skipped (no change)": "Обновление pve-enterprise.list пропущено (изменений нет)", + "pve-enterprise.list updated to Trixie": "pve-enterprise.list обновлён для Trixie", + "pvecm command not found (might not be in a cluster)": "Команда pvecm не найдена (возможно, узел не входит в кластер)", + "pvesh not found. This must run on a Proxmox VE node.": "pvesh не найден. Необходимо запускать на узле Proxmox VE.", + "pvesm command found": "Команда pvesm найдена", + "pvesm command not found. This should not happen on Proxmox.": "Команда pvesm не найдена. На Proxmox такого быть не должно.", + "pvesm not available.": "pvesm недоступен.", + "pvesm not found.": "pvesm не найден.", + "pvesm path failed, trying manual detection...": "Не удалось выполнить pvesm path, выполняется попытка определения вручную...", + "pvesm status failed": "Не удалось выполнить pvesm status", + "pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.": "pyLoad — свободный менеджер загрузок с открытым исходным кодом, написанный на Python. Он разработан так, чтобы потреблять минимум ресурсов, легко расширяться и полностью управляться через веб-интерфейс.", + "pyLoad web interface": "Веб-интерфейс pyLoad", + "python3-jsonschema is required to generate templates": "Для создания шаблонов требуется python3-jsonschema", + "qBittorrent WebUI password (user: admin)": "Пароль qBittorrent WebUI (пользователь: admin)", + "qBittorrent already has a configuration; it is not overwritten": "qBittorrent уже имеет конфигурацию; она не перезаписывается", + "qBittorrent configured": "qBittorrent настроен", + "qBittorrent did not apply the category:": "qBittorrent не применил категорию:", + "qBittorrent did not apply the download paths": "qBittorrent не применил пути загрузки", + "qBittorrent requires a non-empty password": "qBittorrent требует непустой пароль", + "qBittorrent: authenticated access to the preferences could not be verified": "qBittorrent: не удалось проверить доступ к настройкам после аутентификации", + "qBittorrent: invalid login response or missing session cookie": "qBittorrent: некорректный ответ при входе или отсутствует файл cookie сеанса", + "raw USB disk — no filesystem (will be FORMATTED)": "USB-диск без файловой системы — будет ОТФОРМАТИРОВАН", + "read-only": "только для чтения", + "reboot-quick alias added": "Псевдоним reboot-quick добавлен", + "reboot-quick alias is already configured": "Псевдоним reboot-quick уже настроен", + "recognition": "распознавание", + "recognition only": "только распознавание", + "recommended": "рекомендуется", + "recovering": "восстановление", + "remapped users": "пользователи с переназначенными идентификаторами", + "remove the (now-empty) directory if possible": "по возможности удалить каталог (теперь пустой)", + "removed from Proxmox": "удалено из Proxmox", + "removed in Proxmox": "удалено в Proxmox", + "removed successfully from Proxmox.": "успешно удалено из Proxmox.", + "removed unused image archive: {path} ({size} bytes)": "удалён неиспользуемый архив образа: {path} ({size} байт)", + "requires running the official installer, which restarts the Monitor service.": "требует запуска официального установщика, который перезапускает службу Monitor.", + "requires the package": "требует пакет", + "restarted successfully": "успешно перезапущено", + "restoring /etc/network would lose connectivity": "восстановление /etc/network приведёт к потере сетевого подключения", + "restoring on:": "восстановление на:", + "retries": "повторные попытки", + "return to host namespace": "возврат в пространство имён хоста", + "reverse proxy": "обратный прокси-сервер", + "root and real users only": "только root и обычные пользователи", + "rpcbind could not be disabled completely": "не удалось полностью отключить rpcbind", + "rpcbind service and socket have been disabled and stopped": "служба и сокет rpcbind отключены и остановлены", + "rpcbind units were not found; no changes were made": "юниты rpcbind не найдены; изменения не внесены", + "rqlite": "rqlite", + "rsnapshot starts with the default configuration, which backs up /data into /.snapshots. Edit /config/rsnapshot.conf inside the container to set your own backup points, snapshot root and retention intervals.": "rsnapshot запускается с конфигурацией по умолчанию, которая создаёт резервную копию /data в /.snapshots. Отредактируйте /config/rsnapshot.conf внутри контейнера, чтобы задать собственные пути для резервного копирования, корневой каталог снимков и интервалы хранения.", + "running": "работает", + "runs in": "работает в", + "safe paths now (configs, packages, /etc, /root, ...)": "сейчас — безопасные пути (конфигурации, пакеты, /etc, /root, ...)", + "same MAC": "тот же MAC-адрес", + "saved": "сохранено", + "seconds (default)": "секунд (по умолчанию)", + "see log:": "см. журнал:", + "selected by default": "выбрано по умолчанию", + "selected path(s):": "выбранные пути:", + "server": "сервер", + "server IP or hostname:": "IP-адрес или имя хоста сервера:", + "server?": "сервер?", + "servers found on the network.": "серверов найдено в сети.", + "servers found.": "серверов найдено.", + "several containers of this host carry the same installation:": "в нескольких контейнерах этого узла установлено одно и то же приложение:", + "sha256sum not found. Cannot verify Borg binary.": "sha256sum не найден. Невозможно проверить исполняемый файл Borg.", + "shadPS4 is an early PlayStation 4 emulator for Windows, Linux and macOS written in C++.": "shadPS4 — эмулятор PlayStation 4 для Windows, Linux и macOS, написанный на C++ и находящийся на ранней стадии разработки.", + "showmount command is not working properly.": "Команда showmount работает некорректно.", + "showmount command not found after installation.": "Команда showmount не найдена после установки.", + "single portable archive": "единый переносимый архив", + "skipped (already exist)": "пропущено (уже существуют)", + "slskd web UI administrator": "администратор веб-интерфейса slskd", + "smbclient command is not working properly.": "Команда smbclient работает некорректно.", + "smbclient command not found after installation.": "Команда smbclient не найдена после установки.", + "sources.list update skipped (no change)": "Обновление sources.list пропущено (нет изменений)", + "sources.list updated to Trixie": "sources.list обновлён для Trixie", + "ssh-keygen failed. Cannot create a new SSH key.": "Сбой ssh-keygen. Невозможно создать новый ключ SSH.", + "stale entry/entries for interfaces no longer present": "устаревшие записи для интерфейсов, которые больше не существуют", + "standard performance": "стандартная производительность", + "start/restart failures and reset instability.": "сбои запуска и перезапуска, а также нестабильность при сбросе.", + "started successfully.": "успешно запущено.", + "started.": "запущено.", + "startup/restart errors are likely.": "вероятны ошибки запуска и перезапуска.", + "staticfiles volume size in GB": "размер тома staticfiles в ГБ", + "stop source VM first": "сначала остановите исходную ВМ", + "stopped": "остановлено", + "storage yet.": "хранилище.", + "storage(s) from backup exist on target": "хранилища, указанные в резервной копии, существуют на целевом узле", + "storage.": "хранилище.", + "subscription banner": "баннер подписки", + "successfully formatted with": "успешно отформатировано с использованием", + "suggested:": "рекомендуется:", + "switch_gpu_mode.sh was not found.": "switch_gpu_mode.sh не найден.", + "sysfs ROM dump failed — trying ACPI VFCT table...": "Не удалось получить дамп ROM через sysfs — пробуем таблицу ACPI VFCT...", + "syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.": "syslog-ng позволяет гибко собирать, разбирать, классифицировать, перезаписывать и сопоставлять журналы со всей инфраструктуры, а также сохранять их или направлять в инструменты анализа журналов.", + "systemctl restart networking failed:": "Не удалось выполнить systemctl restart networking:", + "systemd OnCalendar expression": "выражение OnCalendar для systemd", + "the API key was not generated on the first start": "ключ API не был создан при первом запуске", + "the GPU did not answer in time": "GPU не ответил вовремя", + "the NVIDIA hook of the container is not available:": "хук NVIDIA для контейнера недоступен:", + "the bridge does not exist on this host:": "мост не существует на этом хосте:", + "the bridge exists on this host with another network:": "мост существует на этом хосте, но связан с другой сетью:", + "the container has its own address, so the port Docker published on the host is not needed": "у контейнера есть собственный адрес, поэтому порт, опубликованный Docker на хосте, не нужен", + "the containers do not agree on the private network of": "у контейнеров не совпадают настройки частной сети для", + "the device does not exist on this host:": "устройство не существует на этом хосте:", + "the devices it asks for are not written in a way that can be read": "запрошенные устройства указаны в нечитаемом формате", + "the host directory does not exist:": "каталог на хосте не существует:", + "the host firewall rule of the installation is not added again; allow its port in the firewall of this host if you use it.": "правило межсетевого экрана хоста, созданное при установке, не добавляется повторно; если вы используете межсетевой экран на этом хосте, разрешите в нём соответствующий порт.", + "the memory limit it asks for cannot be applied": "невозможно применить запрошенное ограничение памяти", + "the minimum number of characters is": "минимальное количество символов —", + "the qBittorrent schema is not available": "схема qBittorrent недоступна", + "the record it carries does not belong to this container": "содержащаяся в нём запись не относится к этому контейнеру", + "the record of the application does not list this container": "в записи приложения не указан этот контейнер", + "the resource limits it asks for cannot be applied": "невозможно применить запрошенные ограничения ресурсов", + "the settings of its include are not in the record:": "параметры включаемого файла отсутствуют в записи:", + "the start order of its dependencies is not in the record": "порядок запуска зависимостей отсутствует в записи", + "this configuration needs the device": "для этой конфигурации требуется устройство", + "this container of the application is not on this host. Restore it too.": "этот контейнер приложения отсутствует на этом хосте. Восстановите и его.", + "this distribution": "этот дистрибутив", + "this host keeps a record of another installation with an operation pending": "на этом хосте хранится запись о другой установке с незавершённой операцией", + "this host keeps an unreadable record for this ID": "на этом хосте хранится нечитаемая запись для этого ID", + "tmpfs size in MB for": "размер tmpfs в МБ для", + "tmpfs size too small for": "размер tmpfs слишком мал для", + "to": "в", + "to CT": "в CT", + "to VM": "в VM", + "to move the GPU safely.": "чтобы безопасно перенести GPU.", + "to run without being killed by the OOM killer.": "для работы без принудительного завершения механизмом OOM killer.", + "to sharedfiles group": "в группу sharedfiles", + "total": "всего", + "umount the path if currently mounted": "размонтировать путь, если он сейчас смонтирован", + "unknown include:": "неизвестный включаемый файл:", + "unknown mount hook:": "неизвестный хук монтирования:", + "unprivileged LXC": "непривилегированный LXC", + "unsupported credential generator": "неподдерживаемый генератор учётных данных", + "unsupported dependency condition": "неподдерживаемое условие зависимости", + "unsupported external credential or boolean": "неподдерживаемые внешние учётные данные или логическое значение", + "unsupported variable": "неподдерживаемая переменная", + "update for %s exited with status %s.": "обновление для %s завершилось со статусом %s.", + "updating": "обновление", + "updating NVIDIA userspace libs": "обновление библиотек NVIDIA пользовательского пространства", + "user packages missing — will be installed automatically:": "отсутствуют пакеты пользовательского пространства — они будут установлены автоматически:", + "users": "пользователи", + "users (for unprivileged compatibility)": "пользователи (для совместимости с непривилегированными контейнерами)", + "using": "с использованием", + "using direct path (not guaranteed to survive reboots).": "используется прямой путь (его сохранение после перезагрузок не гарантируется).", + "vCPUs:": "vCPUs:", + "value changed in Proxmox": "значение изменено в Proxmox", + "vfio-pci IDs configured": "идентификаторы vfio-pci настроены", + "vfio-pci IDs in /etc/modprobe.d/vfio.conf": "идентификаторы vfio-pci в /etc/modprobe.d/vfio.conf", + "video": "видео", + "video + recognition": "видео + распознавание", + "video only": "только видео", + "vzdump backup speed optimization completed": "оптимизация скорости резервного копирования vzdump завершена", + "wallabag builds its links from the address given during the installation. If it does not match the address of the container, edit lxc.environment.runtime: SYMFONY__ENV__DOMAIN_NAME in /etc/pve/lxc/.conf with the container stopped, and start it again.": "wallabag формирует ссылки на основе адреса, указанного при установке. Если он не совпадает с адресом контейнера, остановите контейнер, измените lxc.environment.runtime: SYMFONY__ENV__DOMAIN_NAME в /etc/pve/lxc/.conf и снова запустите контейнер.", + "wallabag listens on port 80 of the container and stores its data in SQLite.": "wallabag прослушивает порт 80 контейнера и хранит данные в SQLite.", + "wallabag web interface": "веб-интерфейс wallabag", + "was": "было", + "was installed, but the kernel reports:": "установка выполнена, но ядро сообщает:", + "when finished": "после завершения", + "when the server has no subscription (you will be asked)": "если у сервера нет подписки (вам будет предложено подтвердить действие)", + "will rebind the GPU to vfio-pci on the next reboot, breaking the driver that is about to be installed.": "при следующей перезагрузке снова привяжет GPU к vfio-pci, нарушив работу драйвера, который будет установлен.", + "wipefs failed on": "сбой wipefs на", + "with": "с", + "with Proxmox": "с Proxmox", + "with prefix, e.g.": "с префиксом, например", + "with the password you provided.": "с указанным вами паролем.", + "x-casaos.main must name an existing service.": "В x-casaos.main должно быть указано имя существующего сервиса.", + "xemu is a free and open-source application that emulates the original Microsoft Xbox game console, enabling people to play their original Xbox games on Windows, macOS, and Linux systems.": "xemu — бесплатное приложение с открытым исходным кодом, эмулирующее оригинальную игровую консоль Microsoft Xbox и позволяющее запускать игры для неё в системах Windows, macOS и Linux.", + "xfs — Proxmox dir storage (large files and VMs)": "xfs — хранилище Proxmox типа dir (большие файлы и виртуальные машины)", + "xfs — better for large files": "xfs — лучше подходит для больших файлов", + "years old": "лет", + "yes": "да", + "yes (scrypt-unlock passphrase stored)": "да (парольная фраза для разблокировки scrypt сохранена)", + "yes (survives reboot)": "да (сохраняется после перезагрузки)", + "yes (via PBS escrow + recovery passphrase)": "да (через депонирование ключа в PBS и парольную фразу восстановления)", + "zeroed.": "обнулено.", + "zfs — Proxmox ZFS pool storage": "zfs — хранилище Proxmox на основе пула ZFS", + "zfs-auto-snapshot installed successfully": "zfs-auto-snapshot успешно установлен", + "zfs-auto-snapshot is already installed": "zfs-auto-snapshot уже установлен", + "zfs-auto-snapshot removed (existing snapshots preserved on the pool)": "zfs-auto-snapshot удалён (существующие снимки сохранены в пуле)", + "zpool command not found. Install zfsutils-linux and retry.": "Команда zpool не найдена. Установите zfsutils-linux и повторите попытку.", + "zpool not found. Install zfsutils-linux and retry.": "zpool не найден. Установите zfsutils-linux и повторите попытку.", + "{application} runs in {count} containers.": "{application} работает в контейнерах: {count}.", + "{count} saved account.": "Сохранённых учётных записей: {count}.", + "{count} saved accounts.": "Сохранённых учётных записей: {count}.", + "{path} already exists and belongs to another user of the host, so {app} cannot write to it.\n\nProxMenux can add access rules (ACL) to this directory, to everything inside it and to what is created there later, for the users and groups {app} runs as on the host (IDs {ids}). The owner of the files does not change and whatever reads or writes them today keeps doing so; the owner of the directory also gets access to the files {app} creates.\n\nGrant {app} access to this directory?": "{path} уже существует и принадлежит другому пользователю хоста, поэтому {app} не может выполнять запись в этот каталог.\n\nProxMenux может добавить правила доступа (ACL) к этому каталогу, всему его содержимому и всему, что будет создано в нём в дальнейшем, для пользователей и групп, от имени которых {app} работает на хосте (идентификаторы {ids}). Владелец файлов не изменится, а все, кто сейчас может читать эти файлы или записывать в них данные, сохранят свои права; владелец каталога также получит доступ к файлам, создаваемым {app}.\n\nПредоставить {app} доступ к этому каталогу?", + "{registry} answered with plain HTTP. Use a registry with HTTPS; TLS verification remains enabled.": "{registry} ответил по обычному HTTP. Используйте реестр с HTTPS; проверка TLS остаётся включённой.", + "{registry} did not respond within {timeout} seconds. Try again later.": "{registry} не ответил в течение {timeout} секунд. Повторите попытку позже.", + "{registry} is rate limiting requests. Wait a while and try again.": "{registry} ограничивает частоту запросов. Подождите немного и повторите попытку.", + "{registry} refused access to this image:\n{reference}\n\nIf the image is private, sign in with an account that can pull it.\n\nSign in now?": "{registry} отказал в доступе к этому образу:\n{reference}\n\nЕсли образ приватный, войдите с учётной записью, у которой есть право скачивать этот образ.\n\nВойти сейчас?", + "{registry} reported a server error. Try again later.": "{registry} сообщил об ошибке сервера. Повторите попытку позже.", + "{registry} returned invalid or unsupported image metadata.": "{registry} вернул некорректные или неподдерживаемые метаданные образа.", + "— Full/Custom restore will skip kernel-tied paths": "— При полном или выборочном восстановлении пути, связанные с ядром, будут пропущены", + "— disk may be busy. Skipping fstab removal.": "— диск может быть занят. Удаление записи из fstab пропускается.", + "— restore proceeds as same-version (verified safe)": "— восстановление продолжается как для той же версии (безопасность проверена)", + "— safe restore mode will skip boot/kernel/apt config": "— в безопасном режиме восстановления настройки загрузки, ядра и apt будут пропущены", + "— that part works on any distro and is harmless.": "— эта часть работает в любом дистрибутиве и не причиняет вреда.", + "• Both: mounts twice (pvesm + an independent fstab entry)": "• Оба варианта: монтирование выполняется дважды (pvesm + отдельная запись в fstab)", + "• Both: registers as Proxmox storage AND keeps the mount available for LXC bind-mounts": "• Оба варианта: ресурс регистрируется как хранилище Proxmox И остаётся доступным для bind-монтирований LXC", + "• Both: two independent CIFS mounts (one for Proxmox UI, one for LXC bind-mounts with open perms)": "• Оба варианта: два независимых монтирования CIFS (одно для интерфейса Proxmox, другое — для bind-монтирований LXC с открытыми правами доступа)", + "• Clean up remapped users": "• Выполнить очистку учётных записей переназначенных пользователей", + "• Host fstab: mounted at a path you choose, NOT visible as Proxmox storage": "• fstab хоста: монтирование по выбранному вами пути, БЕЗ отображения в качестве хранилища Proxmox", + "• Host fstab: mounted at host path only, for LXC bind-mounts (NOT visible as Proxmox storage)": "• fstab хоста: монтирование только по пути на хосте для bind-монтирований LXC (НЕ отображается как хранилище Proxmox)", + "• Host fstab: mounted with open uid/gid/file_mode at a path you choose, ideal for LXC bind-mounts": "• fstab хоста: монтирование по выбранному вами пути с параметрами uid/gid/file_mode, обеспечивающими открытый доступ; идеально подходит для bind-монтирований LXC", + "• Proxmox storage (pvesm): visible in Datacenter > Storage, mount at /mnt/pve/": "• Хранилище Proxmox (pvesm): отображается в разделе «Датацентр > Хранилище», монтируется в /mnt/pve/", + "• Proxmox storage (pvesm): visible in Datacenter > Storage, usable for VMs/backups/ISOs": "• Хранилище Proxmox (pvesm): отображается в разделе «Датацентр > Хранилище», подходит для виртуальных машин, резервных копий и ISO-образов", + "• Remove Samba groups": "• Удалить группы Samba", + "• Remove all Samba users": "• Удалить всех пользователей Samba", + "• Remove all exports": "• Удалить все экспорты", + "• Remove all shares": "• Удалить все общие ресурсы", + "• Remove universal sharedfiles group": "• Удалить общую группу sharedfiles", + "• Stop all NFS services": "• Остановить все службы NFS", + "• Stop all Samba services": "• Остановить все службы Samba", + "• Uninstall NFS packages": "• Удалить пакеты NFS", + "• Uninstall Samba packages": "• Удалить пакеты Samba", + "← Return": "← Назад", + "− Remove a path": "− Удалить путь", + "──── [ Finish and continue ] ────": "──── [ Завершить и продолжить ] ────", + "─────── Custom profile (choose paths manually) ───────": "─────── Пользовательский профиль (выбрать пути вручную) ───────", + "────────────────── Default profile ───────────────────": "────────────────── Профиль по умолчанию ───────────────────", + "⚠ Disk data will NOT be erased.": "⚠ Данные на диске НЕ будут удалены.", + "⚠ Disk will be unmounted and removed from /etc/fstab.": "⚠ Диск будет отмонтирован и удалён из /etc/fstab.", + "⚠ The /etc/fstab entry will be removed.": "⚠ Запись в /etc/fstab будет удалена.", + "⚠ The disk will be unmounted.": "⚠ Диск будет отмонтирован." +} diff --git a/scripts/global/repository_policy.py b/scripts/global/repository_policy.py index 00829730..4725634f 100644 --- a/scripts/global/repository_policy.py +++ b/scripts/global/repository_policy.py @@ -49,7 +49,7 @@ def cli_error(error, product): return str(error) try: language = json.loads((BASE / 'config.json').read_text()).get('language', 'en') - if language not in ('sk', 'de', 'es', 'fr', 'it', 'pt', 'sv'): + if language not in ('sk', 'de', 'es', 'fr', 'it', 'pt', 'sv', 'ru'): return str(error) catalog = json.loads((BASE / 'lang' / f'{language}.json').read_text()) message = catalog.get(error.template) diff --git a/scripts/menus/config_menu.sh b/scripts/menus/config_menu.sh index bde1536d..2c4e7f65 100644 --- a/scripts/menus/config_menu.sh +++ b/scripts/menus/config_menu.sh @@ -708,7 +708,7 @@ change_language() { local new_language new_language=$(dialog --clear --backtitle "$BACKTITLE" \ --title "$(translate "Change Language")" \ - --menu "$(translate "Select a new language for the menu:")" 22 60 8 \ + --menu "$(translate "Select a new language for the menu:")" 22 60 9 \ "en" "$(translate "English")" \ "de" "$(translate "German")" \ "es" "$(translate "Spanish")" \ @@ -716,7 +716,8 @@ change_language() { "it" "$(translate "Italian")" \ "pt" "$(translate "Portuguese")" \ "sk" "Slovenčina" \ - "sv" "Svenska" 3>&1 1>&2 2>&3) + "sv" "Svenska" \ + "ru" "Русский" 3>&1 1>&2 2>&3) if [ -z "$new_language" ]; then dialog --clear --backtitle "$BACKTITLE" \ diff --git a/web/CONTRIBUTING-TRANSLATIONS.md b/web/CONTRIBUTING-TRANSLATIONS.md index 583b8240..21bbe8ad 100644 --- a/web/CONTRIBUTING-TRANSLATIONS.md +++ b/web/CONTRIBUTING-TRANSLATIONS.md @@ -11,6 +11,7 @@ serves every published page under locale-prefixed URLs: - `/pt/` — Portuguese - `/sk/` — Slovak, with English fallback where needed - `/sv/` — Swedish +- `/ru/` — Russian We use [`next-intl`](https://next-intl.dev) for the i18n plumbing. Anyone can translate the docs without writing TypeScript: most of the work is diff --git a/web/components/language-switcher.tsx b/web/components/language-switcher.tsx index cede72da..21bc53f5 100644 --- a/web/components/language-switcher.tsx +++ b/web/components/language-switcher.tsx @@ -35,6 +35,7 @@ export function LanguageSwitcher() { pt: t("pt"), sk: t("sk"), sv: t("sv"), + ru: t("ru"), } return ( diff --git a/web/i18n/routing.ts b/web/i18n/routing.ts index ffc11c7f..0319b9bd 100644 --- a/web/i18n/routing.ts +++ b/web/i18n/routing.ts @@ -19,7 +19,7 @@ import { defineRouting } from "next-intl/routing" * `CONTRIBUTING-TRANSLATIONS.md`. */ export const routing = defineRouting({ - locales: ["en", "es", "de", "fr", "it", "pt", "sk", "sv"], + locales: ["en", "es", "de", "fr", "it", "pt", "sk", "sv", "ru"], defaultLocale: "en", localePrefix: "always", }) diff --git a/web/messages/de/common.json b/web/messages/de/common.json index 91f3ce99..9e29f3f5 100644 --- a/web/messages/de/common.json +++ b/web/messages/de/common.json @@ -33,7 +33,8 @@ "fr": "Français", "it": "Italiano", "pt": "Português", - "sv": "Svenska" + "sv": "Svenska", + "ru": "Русский" }, "resources": { "documentation": { diff --git a/web/messages/en/common.json b/web/messages/en/common.json index 6a974fb9..da3d7840 100644 --- a/web/messages/en/common.json +++ b/web/messages/en/common.json @@ -33,7 +33,8 @@ "fr": "Français", "it": "Italiano", "pt": "Português", - "sv": "Svenska" + "sv": "Svenska", + "ru": "Русский" }, "resources": { "documentation": { diff --git a/web/messages/es/common.json b/web/messages/es/common.json index 517d2556..68bd8033 100644 --- a/web/messages/es/common.json +++ b/web/messages/es/common.json @@ -33,7 +33,8 @@ "fr": "Français", "it": "Italiano", "pt": "Português", - "sv": "Svenska" + "sv": "Svenska", + "ru": "Русский" }, "resources": { "documentation": { diff --git a/web/messages/fr/common.json b/web/messages/fr/common.json index c524c4d6..e6b14218 100644 --- a/web/messages/fr/common.json +++ b/web/messages/fr/common.json @@ -33,7 +33,8 @@ "fr": "Français", "it": "Italiano", "pt": "Português", - "sv": "Svenska" + "sv": "Svenska", + "ru": "Русский" }, "resources": { "documentation": { diff --git a/web/messages/it/common.json b/web/messages/it/common.json index 16d035ec..ba7dc226 100644 --- a/web/messages/it/common.json +++ b/web/messages/it/common.json @@ -33,7 +33,8 @@ "fr": "Français", "it": "Italiano", "pt": "Português", - "sv": "Svenska" + "sv": "Svenska", + "ru": "Русский" }, "resources": { "documentation": { diff --git a/web/messages/pt/common.json b/web/messages/pt/common.json index 257089f1..7dce18b1 100644 --- a/web/messages/pt/common.json +++ b/web/messages/pt/common.json @@ -33,7 +33,8 @@ "fr": "Français", "it": "Italiano", "pt": "Português", - "sv": "Svenska" + "sv": "Svenska", + "ru": "Русский" }, "resources": { "documentation": { diff --git a/web/messages/ru/common.json b/web/messages/ru/common.json new file mode 100644 index 00000000..2f9bfbde --- /dev/null +++ b/web/messages/ru/common.json @@ -0,0 +1,257 @@ +{ + "site": { + "name": "ProxMenux", + "tagline": "Интерактивное меню и веб-панель управления для Proxmox VE" + }, + "nav": { + "home": "Главная", + "docs": "Документация", + "documentation": "Документация", + "guides": "Руководства", + "changelog": "Журнал изменений", + "github": "GitHub", + "rss": "RSS", + "rssTitle": "RSS-лента", + "menuOpen": "Открыть меню" + }, + "footer": { + "sponsorHeading": "Поддержка проекта", + "sponsorBody": "Если вы хотите поддержать проект.", + "sponsorAlt": "Поддержите меня на Ko-fi", + "connectHeading": "Сообщество", + "connectBody": "Присоединяйтесь к обсуждениям сообщества на GitHub, чтобы получить помощь, поделиться идеями и внести свой вклад в проект. Мы рады любым идеям!", + "joinDiscussion": "Присоединиться к обсуждению", + "copyrightPrefix": "ProxMenux — совместный проект с открытым исходным кодом, созданный", + "copyrightSuffix": "." + }, + "language": { + "switcher": "Язык", + "en": "English", + "es": "Español", + "sk": "Slovenčina", + "de": "Deutsch", + "fr": "Français", + "it": "Italiano", + "pt": "Português", + "sv": "Svenska", + "ru": "Русский" + }, + "resources": { + "documentation": { + "title": "Документация", + "description": "Описание системы и руководства пользователя" + }, + "changelog": { + "title": "Журнал изменений", + "description": "Информация о последних обновлениях" + }, + "guides": { + "title": "Руководства", + "description": "Пошаговые инструкции и руководства по типовым задачам" + }, + "github": { + "title": "Репозиторий GitHub", + "description": "Изучите исходный код." + } + }, + "docSidebar": { + "documentation": "Документация", + "items": { + "introduction": "Введение", + "installation": "Установка", + "proxmenuxMonitor": "ProxMenux Monitor", + "monitorOverview": "Обзор", + "architecture": "Архитектура", + "accessAuth": "Доступ и аутентификация", + "dashboard": "Панель мониторинга", + "dashboardSystemOverview": "Вкладка «Обзор системы»", + "dashboardApps": "Вкладка «Приложения»", + "dashboardStorage": "Вкладка «Хранилище»", + "dashboardNetwork": "Вкладка «Сеть»", + "dashboardVmsLxcs": "Вкладка «Виртуальные машины и контейнеры LXC»", + "dashboardVmsLxcsApp": "Приложение", + "dashboardVmsLxcsUpdates": "Обновления", + "dashboardHardware": "Вкладка «Оборудование»", + "dashboardSystemLogs": "Вкладка «Системные журналы»", + "dashboardTerminal": "Вкладка «Терминал»", + "dashboardSecurity": "Вкладка «Безопасность»", + "dashboardSettings": "Вкладка «Настройки»", + "healthMonitor": "Мониторинг состояния", + "auditReport": "Audit и отчёт", + "auditReportOverview": "Обзор", + "auditReportAssessment": "Оценка и инвентаризация", + "auditReportPolicy": "Политика", + "auditReportChanges": "Изменения", + "auditReportReports": "Отчёты и сравнения", + "auditReportScope": "Область действия и гарантии", + "notifications": "Уведомления", + "aiAssistant": "ИИ-ассистент", + "apiReference": "Справочник API", + "integrations": "Интеграции", + "ociManager": "Приложения менеджера OCI", + "ociOverview": "Обзор", + "ociArchitecture": "Как преобразуется образ OCI", + "ociCustomImage": "Образ не из каталога", + "ociStorageNetwork": "Данные, пути и сеть", + "ociHardware": "Устройства и ускорение", + "ociStacks": "Многоконтейнерные приложения", + "ociContributeApp": "Установка приложения и добавление его в проект", + "ociLifecycle": "Установка, обновление и изменение", + "ociMonitor": "В ProxMenux Monitor", + "proxmenuxScripts": "ProxMenux Scripts", + "postInstallScript": "Скрипт послеустановочной настройки", + "postInstallOverview": "Обзор", + "postInstallAutomated": "Автоматическая настройка", + "postInstallCustomizable": "Настройка с выбором параметров", + "postInstallBasicSettings": "Основные настройки", + "postInstallSystem": "Система", + "postInstallVirtualization": "Виртуализация", + "postInstallNetwork": "Сеть", + "postInstallStorage": "Хранилище", + "postInstallSecurity": "Безопасность", + "postInstallCustomization": "Персонализация", + "postInstallMonitoring": "Мониторинг", + "postInstallPerformance": "Производительность", + "postInstallOptional": "Дополнительные настройки", + "postInstallUpdates": "Применить доступные обновления", + "postInstallUninstall": "Удалить оптимизации", + "gpusCoralTpu": "GPU и Coral-TPU", + "nvidiaHost": "Установить драйверы NVIDIA на хосте", + "coralHost": "Установить Coral TPU на хосте", + "addGpuLxc": "Добавить GPU в LXC", + "addCoralLxc": "Добавить Coral TPU в LXC", + "addGpuVm": "Добавить GPU в ВМ (прямой проброс)", + "switchGpuMode": "Переключить режим GPU (ВМ ↔ LXC)", + "createVm": "Создать ВМ", + "createVmOverview": "Обзор", + "createVmSystemNas": "Системы NAS", + "createVmSynology": "ВМ Synology", + "createVmNasOthers": "Другие системы NAS", + "createVmSystemWindows": "Системы Windows", + "createVmSystemLinux": "Системы Linux", + "diskManager": "Диспетчер дисков", + "diskManagerOverview": "Обзор", + "diskImportVm": "Импортировать диск в ВМ", + "diskImportImageVm": "Импортировать образ диска в ВМ", + "diskAddController": "Добавить контроллер или NVMe в ВМ", + "diskImportLxc": "Импортировать диск в LXC", + "diskFormat": "Форматировать / стереть физический диск", + "diskSmart": "Состояние и проверка диска по SMART", + "storageShareManager": "Управление хранилищами и общими ресурсами", + "storageShareOverview": "Обзор", + "hostStorage": "Интеграция хранилищ хоста", + "hostNfs": "Добавление общего ресурса NFS в качестве хранилища Proxmox", + "hostSamba": "Добавление общего ресурса Samba в качестве хранилища Proxmox", + "hostIscsi": "Добавление целевого устройства iSCSI в качестве хранилища Proxmox", + "hostLocalDisk": "Добавление локального диска в качестве хранилища Proxmox", + "hostLocalShared": "Добавление общего каталога на хосте", + "lxcMountPoints": "Точки монтирования LXC (хост ↔ CT)", + "lxcNetworkSharing": "Общий доступ по сети в LXC", + "lxcNfsClient": "Клиент NFS в LXC", + "lxcSambaClient": "Клиент Samba в LXC", + "lxcNfsServer": "Сервер NFS в LXC", + "lxcSambaServer": "Сервер Samba в LXC", + "network": "Сеть", + "networkOverview": "Обзор", + "networkDiagnostics": "Диагностика", + "networkMonitoring": "Инструменты мониторинга в реальном времени", + "networkBridge": "Анализ и исправление сетевых мостов", + "networkConfig": "Анализ и очистка конфигурации", + "networkPersistent": "Постоянные имена интерфейсов", + "networkBackup": "Резервное копирование конфигурации и перезапуск интерфейсов", + "security": "Безопасность", + "securityOverview": "Обзор", + "securityFail2ban": "Fail2Ban", + "securityLynis": "Lynis", + "utilities": "Утилиты", + "utilsOverview": "Обзор", + "utilsUupDump": "Создание ISO с помощью UUP Dump", + "utilsSystemUtils": "Установка системных утилит", + "utilsSystemUpdate": "Обновление системы Proxmox", + "utilsUpgradePve": "Обновление PVE 8 до PVE 9", + "utilsExportVm": "Экспорт ВМ в OVA / OVF", + "utilsImportVm": "Импорт ВМ из OVA / OVF", + "settingsProxmenux": "Настройки ProxMenux", + "settingsOverview": "Обзор", + "settingsMonitor": "ProxMenux Monitor", + "settingsBeta": "Изменение канала обновлений", + "settingsLanguage": "Изменение языка", + "settingsVersion": "Просмотр информации о версии", + "settingsUninstall": "Удаление ProxMenux", + "commandsReference": "Справочник команд", + "commandsOverview": "Обзор", + "commandsSystem": "Полезные системные команды", + "commandsVmCt": "Управление ВМ и контейнерами", + "commandsStorage": "Хранилища и диски", + "commandsNetwork": "Сетевые команды", + "commandsUpdates": "Обновления и пакеты", + "commandsGpu": "Проброс GPU", + "commandsZfs": "Управление ZFS", + "commandsBackup": "Резервное копирование и восстановление", + "commandsTools": "Системные инструменты командной строки", + "glossary": "Глоссарий", + "about": "О проекте", + "aboutOverview": "Обзор", + "aboutFaq": "FAQ", + "aboutContributors": "Участники проекта", + "aboutContributing": "Участие в проекте", + "aboutCodeOfConduct": "Кодекс поведения", + "externalRepositories": "Внешние репозитории", + "backupRestore": "Резервное копирование и восстановление", + "backupRestoreOverview": "Обзор", + "backupRestoreHowItWorks": "Как это работает", + "backupRestoreDestinations": "Места хранения", + "backupRestoreDestOverview": "Обзор", + "backupRestoreDestLocal": "Локальный архив", + "backupRestoreDestPbs": "Proxmox Backup Server", + "backupRestoreDestBorg": "Borg", + "backupRestoreCreating": "Создание резервных копий", + "backupRestoreJobs": "Задания по расписанию", + "backupRestoreRestoring": "Восстановление", + "backupRestoreCrossKernel": "Восстановление с другой версией ядра", + "backupRestoreGlossary": "Глоссарий" + } + }, + "hero": { + "title": "ProxMenux", + "tagline": "Интерактивное меню и веб-панель для Proxmox VE", + "description": "ProxMenux — это интерактивное меню и веб-панель для Proxmox VE: запускайте команды, скрипты и пошаговые мастера из меню в терминале или отслеживайте состояние хоста, метрики и уведомления в браузере.", + "installButton": "Установить сейчас", + "whatIsButton": "Что такое ProxMenux?", + "logoAlt": "Логотип ProxMenux" + }, + "docNav": { + "previous": "Назад", + "next": "Далее" + }, + "tocPanel": { + "onThisPage": "На этой странице" + }, + "supportProject": { + "heading": "Поддержите проект!", + "body": "Если ProxMenux полезен для вас, поставьте ему ⭐ на GitHub, чтобы помочь другим узнать о нём!", + "button": "Поставить звезду на GitHub" + }, + "rssLink": { + "heading": "Будьте в курсе!", + "body": "Подпишитесь на нашу RSS-ленту, чтобы получать уведомления об изменениях.", + "copy": "Копировать", + "copied": "Скопировано!", + "copyTitle": "Скопировать URL RSS-ленты", + "openFeed": "Открыть RSS-ленту", + "openTitle": "Открыть RSS-ленту" + }, + "changelog": { + "pageTitle": "Журнал изменений", + "meta": { + "title": "ProxMenux — журнал изменений", + "titleSuffix": "Примечания к выпускам", + "latest": "Последний", + "mostRecent": "Самый новый выпуск", + "description": "Примечания к выпускам и история обновлений ProxMenux — скрипта с управлением через меню для администрирования Proxmox VE.", + "descriptionTail": "Новые функции, исправления ошибок, обновления безопасности, улучшения ProxMenux Monitor, совместимость с поставщиками ИИ, усиление безопасности проброса GPU и многое другое.", + "ogDescription": "Примечания к выпускам ProxMenux.", + "ogTail": "Подпишитесь на RSS-ленту или заходите на страницу, чтобы узнать о новых версиях." + } + } +} diff --git a/web/messages/ru/docs/about/code-of-conduct.json b/web/messages/ru/docs/about/code-of-conduct.json new file mode 100644 index 00000000..1ef5f739 --- /dev/null +++ b/web/messages/ru/docs/about/code-of-conduct.json @@ -0,0 +1,13 @@ +{ + "meta": { + "title": "Кодекс поведения | Документация ProxMenux", + "description": "Кодекс поведения ProxMenux и рекомендации для участников разработки, тестировщиков и пользователей.", + "ogTitle": "Кодекс поведения | Документация ProxMenux", + "ogDescription": "Требования к ответственности за код, раскрытию информации об уязвимостях и объёму изменений в запросах на слияние для проекта ProxMenux." + }, + "errors": { + "notFound": "Ошибка: файл CODE_OF_CONDUCT.md не найден.", + "loadFailed": "Ошибка: не удалось загрузить содержимое кодекса поведения." + }, + "contentMarkdown": "# 📝 Кодекс поведения и рекомендации\n\nЭтот документ определяет **принципы и правила** использования **ProxMenux**, направленные на поддержание **уважения, сотрудничества и безопасности** при разработке.\n\n## 📌 1. Указание авторства кода и признание вклада\n\n- При использовании **скриптов, фрагментов кода или идей** из других репозиториев или от других разработчиков всегда указывается первоначальный автор. \n- В код или документацию добавляется комментарий с указанием источника и, по возможности, ссылкой на исходный репозиторий. \n- При использовании кода с определённой **лицензией** необходимо соблюдать её условия. \n\n### ✅ Пример корректного указания авторства в коде:\n\n```bash\n# Script based on the work of [Author] at [Repository Link]\n```\n\n## 🔒 2. Безопасность и ответственность за код\n\n- Весь код в этом репозитории соответствует рекомендациям по безопасной разработке.\n- Не допускаются изменения, намеренно добавляющие уязвимости или небезопасные практики.\n- Скрипты ни при каких обстоятельствах не должны ставить под угрозу безопасность системы или пользовательских данных.\n- Перед внедрением предлагаемые изменения следует проверять на безопасность и стабильность.\n\n### ⚠️ Ответственное раскрытие информации об уязвимостях\n\nЕсли вы обнаружили уязвимость безопасности, НЕ сообщайте о ней в публичных Issues или на форумах.\n\nВместо этого сообщите о ней конфиденциально по электронной почте:\n\n📧 proxmenux@macrimi.pro\n\nПодробную информацию об уязвимостях безопасности и порядке сообщения о них см. в нашей [Политике безопасности](./SECURITY.md).\n\n## 🤝 3. Правила сообщества\n\nЧтобы поддерживать уважительную и профессиональную атмосферу, все пользователи должны соблюдать следующие правила:\n\n- ✅ Будьте уважительны и конструктивны в обсуждениях.\n- ❌ Преследование, высказывания, разжигающие ненависть, и оскорбительное поведение недопустимы.\n- ✅ Оставляйте отзывы профессионально, избегая перехода на личности.\n- ❌ Нарушение этих правил может привести к предупреждению или блокировке в зависимости от тяжести нарушения.\n\n\n##\n\nЭтим документом мы поддерживаем этичное использование кода, осведомлённость о безопасности и уважительные отношения в сообществе.\n\n📢 Давайте вместе создадим нечто замечательное!\n\n" +} diff --git a/web/messages/ru/docs/about/contributing.json b/web/messages/ru/docs/about/contributing.json new file mode 100644 index 00000000..8cd818fe --- /dev/null +++ b/web/messages/ru/docs/about/contributing.json @@ -0,0 +1,293 @@ +{ + "meta": { + "title": "Участие в разработке ProxMenux | Документация ProxMenux", + "description": "Как участвовать в разработке ProxMenux — модель ветвления (main / develop / feature/*), порядок работы с запросами на слияние, шаблон заголовка скрипта с указанием авторства и необязательной ссылкой для спонсорской поддержки, двухэтапная политика проектирования интерфейса, функции вывода сообщений и путь от ветки разработки функции до стабильного выпуска.", + "ogTitle": "Участие в разработке ProxMenux", + "ogDescription": "Модель ветвления, рабочий процесс, указание авторства в заголовках скриптов и двухэтапная политика проектирования интерфейса, которую должны соблюдать участники разработки." + }, + "header": { + "title": "Участие в разработке ProxMenux", + "description": "ProxMenux открыт для вклада сообщества: новых скриптов, исправлений существующих, улучшений диалоговых окон, переводов и интеграций. Эта страница — официальное руководство для участников: структура репозитория, модель ветвления и порядок работы с запросами на слияние, заголовок скрипта с указанием авторства и необязательной ссылкой для спонсорской поддержки, а также правила проектирования, которым должны соответствовать все предлагаемые изменения.", + "section": "О проекте" + }, + "twoPagesCallout": { + "title": "Две связанные страницы, один проект", + "body": "Не путайте эту страницу со страницей Участники проекта: та посвящена людям, которые уже вносят свой вклад в проект (тестировщикам, рецензентам, разработчикам). Эта страница предназначена для вас — будущего участника проекта — и объясняет, как отправить PR, который будет принят." + }, + "branching": { + "heading": "Модель ветвления", + "intro": "В ProxMenux используется трёхуровневая модель ветвления:", + "headerBranch": "Ветка", + "headerPurpose": "Назначение", + "rows": [ + { + "branch": "main", + "purposeRich": "Стабильный код, готовый к эксплуатации. Сюда попадают только изменения, готовые к выпуску. Именно этот код получают конечные пользователи при обычной установке ProxMenux." + }, + { + "branch": "develop", + "purposeRich": "Ветка активной разработки. Все новые изменения сначала попадают сюда; это «бета»-канал. Когда выпуск готов, стабильную версию из этой ветки сливают в main." + }, + { + "branch": "feature/*", + "purposeRich": "Краткоживущие ветки для отдельных функций, исправлений или улучшений. Создаются на основе develop и после проверки сливаются обратно в develop через Pull Request." + } + ], + "calloutTitle": "Что это означает для пользователей", + "calloutBody": "Конечные пользователи, использующие ветку main, получают проверенные выпуски. Те, кто хочет раньше получать новые функции и готов мириться с отдельными недоработками, могут использовать develop. Новые функции всегда сначала проходят через develop; ничто не попадает в main, минуя этот цикл." + }, + "workflow": { + "heading": "Порядок работы с Pull Request", + "intro": "От идеи до включения изменений в выпуск за пять шагов:", + "step1Lead": "Создайте ветку для новой функции на основе develop:", + "step1Code": "git clone https://github.com/MacRimi/ProxMenux.git\ncd ProxMenux\ngit checkout develop\ngit pull origin develop\ngit checkout -b feature/your-feature-name", + "step1Trail": "Используйте содержательное имя ветки: feature/zfs-arc-tuning, feature/fix-iommu-detection, feature/add-tailscale-script.", + "step2Lead": "Внесите изменения и отправьте ветку в удалённый репозиторий:", + "step2Code": "# Make your changes, then:\ngit add scripts/...\ngit commit -m \"Add ZFS ARC tuning script\"\ngit push -u origin feature/your-feature-name", + "step3": "Создайте Pull Request в ветку develop (не в main). На странице создания PR в GitHub ещё раз проверьте, что в качестве базовой ветки выбрана develop. Укажите в описании, что делает скрипт, какие изменения он вносит и на каких версиях Proxmox VE вы его проверили.", + "step4": "После проверки изменения сливаются в develop. Сопровождающий проверяет качество кода, соблюдение правил оформления заголовка и политики двухфазного пользовательского интерфейса. Он может запросить доработки — отправьте дополнительные коммиты в ту же ветку, и PR обновится автоматически.", + "step5": "Стабильные выпуски сливаются из develop в main. При подготовке выпуска сопровождающие выполняют слияние develop в main методом fast-forward и создают тег. Ваш вклад становится частью следующей стабильной версии." + }, + "scriptHeader": { + "heading": "Заголовок скрипта — метаданные и описание", + "intro": "Каждый скрипт в ProxMenux начинается с двух соседних блоков комментариев, которые вместе образуют заголовок. Оба блока обязательны: вместе они позволяют любому читателю узнать, кто написал скрипт и что он делает, не заглядывая в сам код.", + "bullets": [ + "Верхний блок — метаданные. Автор, необязательные ссылки GitHub / Sponsor, сопровождающий, сведения об авторских правах, лицензия, версия, дата последнего обновления. Здесь также отмечается вклад участников: когда вы пишете новый скрипт, сюда вносится ваше имя, а при желании можно добавить ссылку на личную страницу (GitHub) и профиль для финансовой поддержки (Ko-fi, GitHub Sponsors, Buy Me a Coffee и т. д.).", + "Нижний блок — описание. Краткий абзац на понятном английском языке, объясняющий, что делает скрипт. Пользователи читают его до просмотра кода: описание должно быть достаточно самостоятельным, чтобы даже тот, кто видит только заголовок, понял назначение скрипта. Перечислите основные действия, затрагиваемые ресурсы и предварительные требования." + ], + "licenseCalloutTitle": "Строка лицензии фиксирована — GPL-3.0", + "licenseCalloutBody": "ProxMenux распространяется на условиях GNU General Public License v3.0. Каждый скрипт проекта распространяется на условиях той же лицензии; строка License в заголовке всегда содержит ссылку на GPL-3.0, показанную в примере ниже, — выбирать лицензию отдельно для каждого скрипта нельзя. Добавляя скрипт в проект, вы соглашаетесь выпустить его под GPL-3.0. Это означает, что любой может читать, изменять и распространять его (в том числе с изменениями), сохраняя ту же лицензию. Полный текст находится в MacRimi/ProxMenux/LICENSE.", + "templateCode": "#!/bin/bash\n\n# ==========================================================\n# ProxMenux - A menu-driven script for Proxmox VE management\n# ==========================================================\n# Author : Your Name\n# GitHub : github.com/yourhandle\n# Sponsor : ko-fi.com/yourhandle\n# Maintainer : MacRimi\n# Copyright : (c) 2026 MacRimi & contributors\n# License : (GPL-3.0) (https://github.com/MacRimi/ProxMenux/blob/main/LICENSE)\n# Version : 1.0\n# Last Updated: DD/MM/YYYY\n# ==========================================================\n# Description:\n# Short paragraph explaining what the script does.\n# Mention the main actions (e.g. \"creates a ZFS pool\",\n# \"configures IOMMU and reboots\", \"imports an ISO into a VM\"),\n# the resources it touches, and any prerequisites the user\n# should be aware of before running it.\n# ==========================================================", + "optionalNote": "Строки GitHub и Sponsor необязательны — не добавляйте их, если не хотите публиковать эти сведения. Всё остальное обязательно.", + "whyCalloutTitle": "Почему это важно", + "whyCalloutBody": "Участие в разработке открытого ПО — добровольная работа. Имя участника и ссылка для спонсорской поддержки (если она предоставлена), указанные непосредственно в исходном коде, делают вклад создателей скриптов заметным для каждого, кто читает код: ваше авторство сохраняется, а не скрывается за «проектом». Блок описания важен по другой причине: это первое, что читает будущий сопровождающий или заинтересованный пользователь, и от ясности описания часто зависит, будут ли люди доверять скрипту или избегать его." + }, + "structure": { + "heading": "Структура проекта", + "intro": "Где в репозитории находятся скрипты каждого типа:", + "treeCode": "scripts/\n├── menus/ # Top-level menu scripts (entry points)\n├── storage/ # Disk, storage and passthrough scripts\n├── share/ # NFS, Samba, local share scripts\n├── vm/ # VM creation and configuration scripts\n├── gpu_tpu/ # GPU / TPU passthrough scripts\n├── post_install/ # Post-install automation scripts\n├── backup_restore/ # Backup and restore scripts\n├── utilities/ # System utility scripts\n├── global/ # Shared helper libraries (sourced by other scripts)\n├── utils.sh # Shared utility functions and message helpers\n└── help_info_menu.sh # Interactive help and command reference", + "outro": "При запуске каждый скрипт подключает utils.sh, чтобы получить функции вывода сообщений, индикатор ожидания, переменные цветов и систему перевода. Общие вспомогательные библиотеки (в scripts/global/) явно подключаются теми скриптами, которым они нужны." + }, + "twoPhase": { + "heading": "Правило двухэтапного построения интерфейса", + "intro": "Это важнейшее соглашение в ProxMenux, и именно из-за его нарушения чаще всего просят исправить PR. Каждый скрипт делится ровно на два этапа:", + "headerPhase": "Этап", + "headerPurpose": "Назначение", + "headerScreen": "Состояние экрана", + "rows": [ + { + "phaseRich": "Этап 1 — Выбор", + "purposeRich": "Собрать все решения пользователя. Выполнить всю необходимую подготовительную работу (опросы системы, сканирование, проверки).", + "screenRich": "Наложенные окна dialog. Если опрос системы между двумя меню занимает больше одной-двух секунд, покажите индикатор ожидания msg_info, чтобы пользователь понимал, что скрипт не завис, а непосредственно перед следующим диалоговым окном вызовите stop_spinner." + }, + { + "phaseRich": "Этап 2 — Выполнение", + "purposeRich": "Выполнить все операции. Отображать на экране всю историю выполнения, дополняя её по мере работы.", + "screenRich": "Видимые сообщения msg_info / msg_ok; никогда не используйте dialog." + } + ], + "principle": "Принцип: сначала собрать все решения, затем выполнить все операции. Пользователь сначала видит меню с диалоговыми окнами без лишнего вывода (этап 1), а затем — ход выполнения в виде журнала (этап 2). Не смешивайте эти этапы: никаких диалоговых окон во время выполнения и никаких сообщений о ходе выполнения во время выбора.", + "phase1Heading": "Этап 1 — типовая схема", + "phase1Code": "# Silent preparatory work between dialogs\nmsg_info \"$(translate \"Checking disk assignments...\")\"\nASSIGNED_TO=$(check_assignments \"$DISK\")\nstop_spinner # ← clears line silently, result saved in variable\n\n# Next dialog can now use ASSIGNED_TO\nif [ -n \"$ASSIGNED_TO\" ]; then\n dialog --yesno \"$(translate \"Disk already assigned. Continue?\")\" $UI_YESNO_H $UI_YESNO_W\nfi\n\n# Collect multiple decisions per item with parallel arrays\ndeclare -a DISK_LIST=()\ndeclare -a DISK_FORMAT_TYPES=()\ndeclare -a DISK_MOUNT_POINTS=()\nfor DISK in $SELECTED; do\n msg_info \"$(translate \"Analyzing disk...\")\"\n CURRENT_FS=$(lsblk -no FSTYPE \"$DISK\" | xargs)\n stop_spinner\n\n FORMAT=$(dialog --backtitle \"$BACKTITLE\" \\\n --title \"$(translate \"Select Filesystem\")\" \\\n --menu \"...\" $UI_SHORT_MENU_H $UI_SHORT_MENU_W $UI_SHORT_MENU_LIST_H \\\n \"ext4\" \"...\" \"xfs\" \"...\" \"btrfs\" \"...\" \\\n 2>&1 >/dev/tty)\n [ -z \"$FORMAT\" ] && continue\n\n DISK_LIST+=(\"$DISK\")\n DISK_FORMAT_TYPES+=(\"$FORMAT\")\ndone", + "phase1RulesIntro": "Правила для этапа 1:", + "phase1Rules": [ + "Если индикатор ожидания msg_info сейчас активен и вам нужно открыть меню dialog или whiptail, сначала вызовите stop_spinner — индикатор ожидания не может работать одновременно с наложенным окном, которое выводит любой из этих инструментов. Если индикатор ожидания не активен, этот вызов не нужен.", + "Используйте show_proxmenux_logo + msg_title + msg_info, когда на этапе 1 нужно визуально пояснить пользователю длительную операцию (например, опрос системы, занимающий 5 и более секунд). Функция сама очищает экран, поэтому не вызывайте перед ней clear.", + "Не вызывайте show_proxmenux_logo между диалоговыми меню, если выводить нечего: очистка экрана ради пустого терминала лишь создаёт визуальный шум.", + "Сохраняйте все решения и результаты опросов системы в переменных или параллельных массивах. Итоговая сводка выводится в начале этапа 2, а не на этапе 1." + ], + "phase2Heading": "Этап 2 — типовая схема", + "phase2Code": "# ── PHASE 2 — EXECUTION ─────────────────────────────\nshow_proxmenux_logo\nmsg_title \"$(translate \"My Script Title\")\"\n\n# Recap Phase 1 preparatory results — show what was already done\nmsg_ok \"$(translate \"CT $CTID selected.\")\"\nmsg_ok \"$(translate \"Repositories verified.\")\"\nmsg_ok \"$(translate \"Disks to process: ${#DISK_LIST[@]}\")\"\n\n# Now execute operations\nfor i in \"${!DISK_LIST[@]}\"; do\n DISK=\"${DISK_LIST[$i]}\"\n FORMAT=\"${DISK_FORMAT_TYPES[$i]}\"\n\n msg_info \"$(translate \"Formatting\") $DISK $(translate \"as\") $FORMAT...\"\n mkfs.\"$FORMAT\" \"$DISK\" >/dev/null 2>&1\n msg_ok \"$(translate \"Formatted.\")\"\ndone\n\nmsg_ok \"$(translate \"Completed. ${#DISK_LIST[@]} disk(s) processed.\")\"\nmsg_success \"$(translate \"Press Enter to return to menu...\")\"\nread -r", + "phase2Rules": "Правила для этапа 2: всегда начинайте с show_proxmenux_logo + msg_title; сразу после этого кратко изложите результаты этапа 1 в строках msg_ok; никогда не вызывайте show_proxmenux_logo повторно (это удалит накопленную информацию о ходе выполнения); никогда не вызывайте dialog на этапе 2 — если решение во время выполнения действительно неизбежно, используйте whiptail (см. следующий раздел)." + }, + "dialogVsWhiptail": { + "headingRich": "Когда использовать dialog, а когда — whiptail", + "intro": "Оба инструмента создают текстовые пользовательские интерфейсы, но ведут себя на экране совершенно по-разному — и ProxMenux не случайно использует их на двух разных этапах.", + "headerTool": "Инструмент", + "headerWhen": "Когда использовать", + "headerEffect": "Поведение на экране", + "rows": [ + { + "toolRich": "dialog", + "whenRich": "Всегда на этапе 1. Для любого интерактивного выбора — виртуальной машины, диска, файловой системы, подтверждения действия — используется dialog. Это стандартный инструмент пользовательского интерфейса в ProxMenux.", + "effectRich": "Полностью занимает терминал: очищает экран, отображает свой интерфейс поверх него, а при закрытии возвращает терминал в прежнее состояние. Это допустимо на этапе 1, поскольку полезная информация ещё не отображается." + }, + { + "toolRich": "whiptail", + "whenRich": "Только на этапе 2 и только при крайней необходимости. Типичный случай — запрос на перезагрузку в конце выполнения. Не используйте whiptail, чтобы спросить «Продолжить?» в ходе выполнения — это решение должно было быть принято на этапе 1.", + "effectRich": "Более лёгкий интерфейс, который отображается поверх содержимого терминала и не очищает его. Накопленная на этапе 2 история msg_ok / msg_info остаётся видимой за диалоговым окном. Поэтому этот инструмент подходит для случаев, когда информация о ходе выполнения уже отображается на экране." + } + ], + "calloutTitle": "Почему важно это разделение", + "calloutBody": "Если вызвать dialog посреди этапа 2, все строки msg_ok, за которыми наблюдал пользователь, исчезнут. Вы сотрёте историю действий. whiptail позволяет этого избежать. Таким образом, это правило не произвольно — оно позволяет сохранить на экране информацию о том, что скрипт уже сделал.", + "rebootHeading": "Запрос на перезагрузку — типичный пример использования whiptail на этапе 2", + "rebootIntro": "Когда скрипт завершается и может потребоваться перезагрузка (например, после включения IOMMU или изменения параметров ядра), для запроса в конце этапа 2 используется whiptail. Всегда предусматривайте ветку «Нет», которая предупреждает пользователя, что затронутый ресурс нельзя использовать до перезагрузки:", + "rebootCode": "if [[ \"$HOST_REBOOT_REQUIRED\" == \"yes\" ]]; then\n echo \"\"\n if whiptail --title \"$(translate \"Reboot Required\")\" --yesno \\\n \"\\n$(translate \"A host reboot is required before starting the VM. Reboot now?\")\" \\\n 13 78; then\n msg_warn \"$(translate \"Rebooting the system...\")\"\n reboot\n else\n echo \"\"\n msg_info2 \"$(translate \"Do not start the VM until the system has been rebooted.\")\"\n fi\nfi\n\nmsg_success \"$(translate \"Press Enter to return to menu...\")\"\nread -r" + }, + "messageFunctions": { + "heading": "Справочник функций вывода сообщений", + "intro": "Все функции определены в utils.sh. Используйте их по умолчанию для любого вывода, видимого пользователю: их основная цель — единообразное оформление во всех скриптах. Если вашему скрипту нужна новая функция, которая не вписывается в существующий набор (новый уровень важности сообщений, новая вспомогательная функция компоновки и т. п.), предложите её в своём Pull Request — её рассмотрят и добавят в utils.sh, если она будет полезна и в других случаях.", + "headerFunction": "Функция", + "headerWhen": "Когда использовать", + "headerSpinner": "Индикатор выполнения", + "rows": [ + { + "function": "msg_info \"text\"", + "whenRich": "Операция выполняется.", + "spinner": "Запускает" + }, + { + "function": "stop_spinner", + "whenRich": "Завершение подготовительных действий без вывода сообщений на этапе 1 — останавливает индикатор выполнения и очищает строку.", + "spinner": "Останавливает" + }, + { + "function": "msg_ok \"text\"", + "whenRich": "Операция выполнена успешно. Также используйте для сообщения «функция включена», даже если требуется перезагрузка.", + "spinner": "Останавливает" + }, + { + "function": "msg_warn \"text\"", + "whenRich": "Предупреждение о реальной проблеме или ухудшении состояния.", + "spinner": "Останавливает" + }, + { + "function": "msg_error \"text\"", + "whenRich": "Критическая ошибка.", + "spinner": "Останавливает" + }, + { + "function": "msg_info2 \"text\"", + "whenRich": "Рекомендация, не блокирующая выполнение (информационная строка голубого цвета).", + "spinner": "Останавливает" + }, + { + "function": "msg_success \"text\"", + "whenRich": "Заключительное приглашение «Нажмите Enter, чтобы вернуться» в конце этапа 2.", + "spinner": "Останавливает" + }, + { + "function": "msg_title \"text\"", + "whenRich": "Заголовок полужирным шрифтом со встроенными отступами. Используется в начале этапа 2.", + "spinner": "—" + }, + { + "function": "show_proxmenux_logo", + "whenRich": "Очищает экран и показывает логотип. Вызывается один раз только в начале этапа 2.", + "spinner": "—" + } + ] + }, + "dialogConventions": { + "heading": "Правила использования dialog", + "bullets": [ + "Всегда передавайте --backtitle \"$BACKTITLE\" при каждом вызове dialog и whiptail. Значение $BACKTITLE всегда равно \"ProxMenux\" — оно задаётся один раз в заголовке скрипта и никогда не переопределяется. Пользователь всегда должен видеть название проекта в качестве общего контекста, а не собственный заголовок скрипта.", + "Всегда оборачивайте заголовки и сообщения в $(translate \"...\").", + "Всегда перенаправляйте вывод dialog с помощью 2>&1 >/dev/tty — захваченный стандартный вывод содержит выбор пользователя, а само диалоговое окно отображается в терминале.", + "Используйте стандартные переменные размеров интерфейса ($UI_MENU_H, $UI_MSG_W и т. д.), чтобы обеспечить одинаковые размеры во всех скриптах.", + "Всегда проверяйте, не пуст ли выбор и не отменён ли он, и корректно обрабатывайте такие случаи." + ], + "exampleIntro": "Полный пример — создание меню выбора виртуальной машины и обработка отмены:", + "exampleCode": "# 1) Build the list of VMs as alternating \"ID NAME\" pairs.\n# dialog --menu expects this exact shape: tag1 description1 tag2 description2 ...\nVM_LIST=\"\"\nfor vmid in $(qm list | awk 'NR>1 {print $1}'); do\n vm_name=$(qm config \"$vmid\" | awk -F': ' '/^name:/ {print $2}')\n VM_LIST=\"$VM_LIST $vmid \\\"$vm_name\\\"\"\ndone\n\n# 2) Show the dialog. Captured stdout is the user's selection (the VMID).\nVMID=$(eval \"dialog --backtitle \\\"\\$BACKTITLE\\\" \\\n --title \\\"\\$(translate \\\"Select VM\\\")\\\" \\\n --menu \\\"\\$(translate \\\"Choose a VM from the list:\\\")\\\" \\\n \\$UI_MENU_H \\$UI_MENU_W \\$UI_MENU_LIST_H \\\n $VM_LIST \\\n 2>&1 >/dev/tty\")\n\n# 3) Empty result means the user pressed Cancel or Esc — exit silently.\nif [ -z \"$VMID\" ]; then\n exit 0\nfi\n\n# 4) Continue with the rest of Phase 1, knowing VMID is now set.\necho \"User selected VMID=$VMID\"" + }, + "translation": { + "heading": "Правила перевода", + "intro": "Все строки, видимые пользователю, должны быть обёрнуты в вызов функции translate. ProxMenux автоматически переводит их на все поддерживаемые языки — вы пишете по-английски, а пользователь читает на своём родном языке.", + "code": "msg_ok \"$(translate \"Operation completed successfully.\")\"\nmsg_error \"$(translate \"Failed to start container\") $CTID.\"\ndialog --title \"$(translate \"Select Storage\")\" ...", + "bullets": [ + "Пишите строки на английском языке — перевод выполняется автоматически при сборке.", + "Пишите кратко. По возможности избегайте вставки переменных в длинные предложения.", + "Не переводите имена переменных, пути или технические идентификаторы." + ] + }, + "variableStyle": { + "heading": "Соглашения об именовании переменных и стиле", + "bullets": [ + "Используйте UPPER_CASE для переменных уровня скрипта.", + "Используйте lower_case для локальных переменных функций (объявляйте их с помощью local).", + "Заключайте все подстановки переменных в кавычки: \"$VAR\", а не $VAR.", + "Используйте [[ ]] для условных выражений, а не [ ] (кроме случаев, когда требуется совместимость с POSIX).", + "show_proxmenux_logo — подходящий способ очистки экрана: он очищает экран и показывает логотип проекта, чтобы пользователь всегда видел, с каким проектом работает. Вызывайте его один раз в начале этапа 2 (и при необходимости перед длительным блоком с индикатором ожидания на этапе 1)." + ], + "standardNamesIntro": "Стандартные имена переменных во всём проекте:", + "standardNamesCode": "CTID # container ID\nVMID # virtual machine ID\nDISK # device path (e.g. /dev/sdb)\nPARTITION # partition path (e.g. /dev/sdb1)\nSTORAGE # Proxmox storage name\nMOUNT_POINT # filesystem mount path", + "redirectHeading": "Перенаправление вывода инструментов на этапе 2", + "redirectIntro": "На этапе 2 на экране последовательно появляются строки msg_info → msg_ok, образуя аккуратный журнал. Если вызываемый инструмент (apt, mkfs, qm, pct, dd и т. д.) записывает собственный вывод в stdout/stderr, этот вывод вытесняет ваши сообщения и нарушает последовательность отображения. В результате терминал заполняется хаотичным выводом, и пользователь не может отличить сообщения скрипта о ходе выполнения от постороннего вывода инструмента.", + "withoutRedirectIntro": "Без перенаправления — что видит пользователь, если не убирать посторонний вывод:", + "withoutRedirectCode": "ℹ Installing kernel package...\nReading package lists... Done\nBuilding dependency tree... Done\nReading state information... Done\nThe following NEW packages will be installed:\n proxmox-kernel-6.5\n0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 12.5 MB of archives.\nAfter this operation, 47.2 MB of additional disk space will be used.\nGet:1 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 ...\n... [200+ more lines of dpkg output] ...\n✓ Kernel installed.", + "withRedirectIntro": "С перенаправлением — как выглядит та же операция, когда посторонний вывод направляется в другое место:", + "withRedirectCode": "ℹ Installing kernel package...\n✓ Kernel installed.\nℹ Configuring kernel command line...\n✓ Configured.\nℹ Refreshing boot loader...\n✓ Boot loader updated.", + "twoPatternsIntro": "Два варианта на выбор:", + "discardLead": "Отбрасывайте вывод, если он вам не нужен, — это самый быстрый и простой вариант:", + "discardCode": "DEBIAN_FRONTEND=noninteractive apt-get install -y \"$package\" >/dev/null 2>&1", + "logLead": "Направляйте вывод в файл журнала, если он может понадобиться для последующего анализа (например, для выяснения причин неудачной установки или проверки того, что именно сделал dpkg). Это предпочтительный вариант для любых операций apt:", + "logCode": "apt-get install -y \"$package\" >> \"$log_file\" 2>&1", + "referenceOutro": "Скрипт scripts/global/update-pve9_2.sh — эталонная реализация: каждый вызов apt-get направляет вывод в файл журнала, поэтому пользователь видит только аккуратную последовательность сообщений msg_info → msg_ok, а журнал на диске позволяет точно восстановить действия apt, если что-то пойдёт не так." + }, + "dosAndDonts": { + "heading": "Что следует и чего не следует делать", + "doHeading": "✅ Следует", + "doBullets": [ + "Вызывайте stop_spinner перед dialog на этапе 1 только в том случае, если в данный момент работает индикатор ожидания msg_info.", + "Начинайте этап 2 с краткого обзора результатов этапа 1 с помощью show_proxmenux_logo + msg_title + msg_ok.", + "Используйте msg_ok для успешно включённых функций, даже если требуется перезагрузка.", + "Используйте whiptail (а не dialog) для любого запроса к пользователю после выполнения операции, который должен появиться на этапе 2.", + "Всегда добавляйте в диалоги перезагрузки ветку «Нет» с предупреждением о том, что затронутый ресурс нельзя запускать до перезагрузки.", + "Выполняйте логику, предназначенную только для виртуальных машин, лишь после проверки [[ -f \"/etc/pve/qemu-server/$'{'vmid'}'.conf\" ]]: контроллеры и устройства NVMe PCIe нельзя добавлять в контейнеры LXC.", + "Используйте ensure_repositories из utils-install-functions.sh вместо безусловного вызова apt-get update.", + "Используйте параллельные массивы на этапе 1, если для каждого элемента требуется несколько диалоговых окон." + ], + "dontHeading": "❌ Не следует", + "dontBullets": [ + "Вызывать dialog, пока активен индикатор выполнения.", + "Пропускать сводку этапа 1 в начале этапа 2.", + "Вызывать show_proxmenux_logo во второй раз — это стирает всё, что было выведено на этапе 2.", + "Использовать dialog на этапе 2 (в редких случаях, когда без этого не обойтись, используйте whiptail).", + "Вызывать clear напрямую.", + "Добавлять пустые строки с помощью echo \"\" до и после msg_title — необходимые отступы уже включены.", + "Использовать msg_warn для сообщения об успешном включении функции — для этого предназначен msg_ok.", + "Выполнять apt-get update безусловно — используйте ensure_repositories." + ] + }, + "submitting": { + "heading": "Отправка ваших изменений", + "steps": [ + "Создайте форк MacRimi/ProxMenux на GitHub и клонируйте его.", + "Создайте ветку feature/* на основе develop (см. раздел Модель ветвления выше).", + "Следуйте этому руководству при создании и изменении скриптов. Укажите своё имя в заголовке; при желании добавьте необязательную строку со сведениями о спонсоре.", + "Протестируйте скрипт на реальном экземпляре Proxmox VE — как этап 1 (все ветви диалогов), так и этап 2 (каждая операция должна завершаться успешно, а при ошибке должен выполняться корректный откат).", + "Откройте запрос на слияние в develop с понятным описанием: что делает скрипт, что изменилось и на какой версии Proxmox VE он был протестирован.", + "Убедитесь, что ваши изменения соответствуют Кодексу поведения." + ], + "securityOutro": "При обнаружении проблем, связанных с безопасностью, следуйте процедуре раскрытия информации, описанной в SECURITY.md, вместо создания публичного сообщения о проблеме." + }, + "whereNext": { + "heading": "Что дальше", + "items": [ + { + "kind": "external", + "url": "https://github.com/MacRimi/ProxMenux/blob/main/CONTRIBUTING.md", + "label": "CONTRIBUTING.md (полное руководство)", + "tail": " — основной источник всех правил и соглашений, включая продвинутые шаблоны работы с оборудованием." + }, + { + "kind": "internal", + "href": "/docs/about/contributors", + "label": "Участники проекта", + "tail": " — люди, чья работа внесла вклад в выпуски ProxMenux. (Это отдельная страница.)" + }, + { + "kind": "internal", + "href": "/docs/about/code-of-conduct", + "label": "Кодекс поведения", + "tail": " — нормы, которые обязуется соблюдать каждый участник проекта." + }, + { + "kind": "external", + "url": "https://github.com/MacRimi/ProxMenux/discussions", + "label": "Обсуждения GitHub", + "tail": " — прежде чем приступать к разработке, задайте вопрос, если не уверены, подходит ли ваша идея проекту, или хотите найти соавторов для работы над крупной функцией." + } + ] + } +} diff --git a/web/messages/ru/docs/about/contributors.json b/web/messages/ru/docs/about/contributors.json new file mode 100644 index 00000000..1bedf152 --- /dev/null +++ b/web/messages/ru/docs/about/contributors.json @@ -0,0 +1,67 @@ +{ + "meta": { + "title": "Участники проекта | Документация ProxMenux", + "description": "За каждым выпуском стоят люди, которые разрабатывают, проверяют, переводят и тестируют ProxMenux. На этой странице мы благодарим тех, кто участвует в проекте сегодня, и тех, кто помог ему сделать первые шаги.", + "ogTitle": "Участники проекта | Документация ProxMenux", + "ogDescription": "За каждым выпуском стоят люди, которые разрабатывают, проверяют, переводят и тестируют ProxMenux. На этой странице мы благодарим тех, кто участвует в проекте сегодня, и тех, кто помог ему сделать первые шаги." + }, + "header": { + "title": "Участники проекта", + "description": "За каждым выпуском стоят люди, которые разрабатывают, проверяют, переводят и тестируют ProxMenux. На этой странице мы благодарим тех, кто участвует в проекте сегодня, и тех, кто помог ему сделать первые шаги.", + "section": "О проекте" + }, + "active": { + "heading": "Разработка, проверка и постоянное сотрудничество", + "intro": "Vaso73, f3rs3n и jcastro регулярно вносят улучшения и исправления, а также проверяют изменения. Их работа не ограничивается тестированием очередного выпуска: она также помогает разрабатывать и отлаживать следующие.", + "people": { + "Vaso73": "Улучшения и исправления в менеджере OCI и ProxMenux Monitor, а также перевод на словацкий язык и проверка переводов.", + "f3rs3n": "Исправления и проверка работы скриптов и Monitor, а также постоянное совершенствование перевода на итальянский язык.", + "jcastro": "Разработка и отладка функций OCI, резервного копирования и Monitor, а также проверка документации и тестирование с первых дней существования проекта." + } + }, + "code": { + "heading": "Другие участники, внесшие вклад в код", + "intro": "Следующие участники также вносили изменения в код. Перейдите по их ссылкам, чтобы ознакомиться с их работой; в истории GitHub фиксируются принятые изменения и запросы на слияние.", + "viewWork": "Посмотреть вклад", + "history": "История участия в проекте", + "merged": "Посмотреть все принятые PR" + }, + "community": { + "heading": "Сообщество, которое также тестирует, переводит и пишет документацию", + "body": "Не вся работа выражается в коде. Воспроизведение ошибки, предоставление полезных журналов, тестирование на разном оборудовании, уточнение пояснений и предложения по улучшению также помогают сделать ProxMenux лучше.", + "languages": "Особая благодарность всем, кто проверяет тексты на своём родном языке. Переводы меню, Monitor и документации делают проект доступным большему числу людей и более удобным в использовании." + }, + "testers": { + "heading": "Спасибо за тестирование первых выпусков", + "intro": "Мы по-прежнему ценим этот вклад. Эти люди помогали проверять первые выпуски, тестировали проект на собственном оборудовании, сообщали о проблемах и делились предложениями, когда ProxMenux только начинал развиваться.", + "youtube": "YouTube" + }, + "contribute": { + "heading": "Для вашего вклада тоже найдётся место", + "intro": "Вы можете помочь небольшим исправлением, отдельной проверкой или вычиткой текста. Чтобы принести пользу, не обязательно разрабатывать целую функцию.", + "ways": { + "code": { + "title": "Код и проверка изменений", + "body": "Разрабатывайте функции, исправляйте ошибки или проверяйте PR. В руководстве для участников объясняется, как подготовить и предложить изменения." + }, + "testing": { + "title": "Тестирование и диагностика", + "body": "Тестируйте бета-версии и делитесь шагами для воспроизведения проблем и журналами, которые помогут другим разобраться в проблеме." + }, + "translations": { + "title": "Переводы", + "body": "Проверяйте сообщения на своём языке и помогайте поддерживать их актуальность по мере добавления новых функций." + }, + "docs": { + "title": "Документация и дизайн", + "body": "Сделайте руководство понятнее, добавьте снимок экрана или улучшите интерфейс, чтобы другим было проще выполнять инструкции." + } + }, + "guide": "Руководство для участников", + "discuss": "Общение с сообществом" + }, + "thanks": { + "title": "Спасибо, что делаете это возможным", + "body": "Всем, кто указан здесь, и всем, кто помогает в обсуждениях задач, беседах или тестировании: спасибо за время, которое вы уделяете улучшению ProxMenux." + } +} diff --git a/web/messages/ru/docs/about/faq.json b/web/messages/ru/docs/about/faq.json new file mode 100644 index 00000000..629d5d27 --- /dev/null +++ b/web/messages/ru/docs/about/faq.json @@ -0,0 +1,94 @@ +{ + "meta": { + "title": "Часто задаваемые вопросы | Документация ProxMenux", + "description": "Часто задаваемые вопросы о ProxMenux: назначение, установка, совместимость (только PVE 8 и новее), настройка, обновления, безопасность, использование в рабочей среде, сохранность системных файлов, участие в проекте, удаление.", + "ogTitle": "Часто задаваемые вопросы | Документация ProxMenux", + "ogDescription": "Часто задаваемые вопросы об установке ProxMenux, совместимости, безопасности и участии в проекте." + }, + "header": { + "title": "Часто задаваемые вопросы", + "description": "Распространённые вопросы о ProxMenux: что это такое, для кого он предназначен, как его установить, обновить и удалить, совместимость, настройка, безопасность и участие в проекте. Если вашего вопроса здесь нет, загляните в раздел Discussions на GitHub или создайте issue.", + "section": "О проекте" + }, + "quickLinks": { + "title": "Быстрые ссылки", + "installationLabel": "Установка", + "installationSuffix": " — однострочная команда установки и зависимости.", + "introductionLabel": "Введение", + "introductionSuffix": " — о возможностях ProxMenux за 5 минут.", + "uninstallLabel": "Удаление", + "uninstallSuffix": " — полное удаление.", + "issuesLabel": "Задачи GitHub", + "discussionsLabel": "Обсуждения" + }, + "q1": { + "question": "Что такое ProxMenux и для чего он используется?", + "p1Rich": "ProxMenux — это интерактивный инструмент с управлением через меню, разработанный для того, чтобы сделать Proxmox VE доступным для всех пользователей независимо от их технического опыта. Он упрощает выполнение команд, позволяя пользователям выполнять действия в системе без глубоких знаний Linux.", + "p2": "Для менее опытных пользователей ProxMenux предлагает интуитивно понятный способ запуска команд через структурированное меню, сокращая необходимость ручного ввода в терминале. Опытным администраторам он позволяет сократить число нажатий клавиш при выполнении повторяющихся задач (усиление защиты после установки, проброс GPU, импорт виртуальных машин OVF, ротация снимков ZFS).", + "p3": "Proxmox VE широко используется для следующих задач:", + "items": [ + "Виртуализация корпоративного уровня", + "HomeLab и персональные облачные решения", + "Мультимедийные серверы, автоматизация и многое другое" + ] + }, + "q2": { + "question": "Как установить ProxMenux?", + "p1Rich": "Следуйте руководству по установке. Кратко:", + "stableInstall": "bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\"", + "p2": "После установки просто запустите его командой:", + "menuCmd": "menu" + }, + "q3": { + "question": "Совместим ли ProxMenux со всеми версиями Proxmox?", + "bodyRich": "Нет — для ProxMenux требуется Proxmox VE 8 или более поздняя версия. PVE 7 и более ранние версии не поддерживаются. Если вы всё ещё используете PVE 7, сначала выполните обновление до версии 8.x по официальной инструкции Proxmox; затем ProxMenux поможет вам перейти с версии 8 на 9 через пункт меню Utilities → Upgrade PVE 8 to PVE 9." + }, + "q4": { + "question": "Можно ли настроить ProxMenux под свои нужды?", + "p1Rich": "Локальные изменения основных скриптов могут быть перезаписаны при обновлении, поэтому не редактируйте эти файлы напрямую. Вот что можно настроить:", + "items": [ + "Баннер консоли — с помощью инструмента FastFetch в разделе настроек после установки.", + "Набор устанавливаемых дополнительных компонентов (Monitor, Fail2Ban, Lynis…) — выберите их при установке или позже в соответствующем меню." + ] + }, + "q5": { + "question": "Как обновить ProxMenux?", + "p1Rich": "Когда появляется новая версия, ProxMenux обнаруживает её при следующем запуске menu и предлагает обновление. Если вы согласитесь, файлы и конфигурации утилиты будут заменены на месте. Скачивать обновление вручную не нужно.", + "p2Rich": "Пользователи стабильной версии получают стабильные выпуски, а пользователи бета-версии — бета-выпуски. Когда выходит стабильная версия, ProxMenux уведомляет пользователей бета-версии при следующем запуске и предлагает автоматически перейти на неё — см. страницу Программа бета-тестирования." + }, + "q6": { + "question": "Где можно сообщить о проблемах?", + "p1Rich": "Сообщения об ошибках размещайте в разделе GitHub Issues. Укажите шаги для воспроизведения, сообщения об ошибках и, если проблема связана с Monitor, вывод journalctl -u proxmenux-monitor -n 50.", + "p2Rich": "Пожалуйста, не публикуйте сведения о проблемах безопасности. Порядок ответственного раскрытия информации описан в документе Кодекс поведения и рекомендуемые практики." + }, + "q7": { + "question": "Могу ли я внести вклад в ProxMenux?", + "p1Rich": "Конечно. ProxMenux — проект с открытым исходным кодом, который развивается совместными усилиями. Вы можете помочь с кодом (Bash, Next.js/TypeScript и инструменты перевода на Python), тестированием, документацией, дизайном или просто предложить идеи.", + "item1Rich": "Прежде чем создавать запрос на добавление функции, обсудите свои идеи в разделе GitHub Discussions.", + "item2Rich": "Перед отправкой PR прочитайте документ Кодекс поведения и рекомендуемые практики.", + "item3Rich": "Актуальный список тестировщиков и рецензентов см. на странице участников проекта." + }, + "q8": { + "question": "Изменяет ли ProxMenux критически важные системные файлы?", + "p1Rich": "При установке ProxMenux добавляются следующие компоненты.", + "item1Rich": "Зависимости через apt: dialog, curl, jq и git. Для переводов используются готовые каталоги JSON; установщик не добавляет на хост виртуальное окружение для перевода.", + "item2Rich": "Дерево скриптов в /usr/local/share/proxmenux/.", + "item3Rich": "Средство запуска в /usr/local/bin/menu.", + "item4Rich": "Необязательно: служба systemd для Monitor в proxmenux-monitor.service.", + "p2Rich": "ProxMenux не изменяет основную конфигурацию Proxmox, если вы явно не запросите это через специальное меню (например, процедура восстановления сети изменяет /etc/network/interfaces — но только после вашего подтверждения и создания резервной копии)." + }, + "q9": { + "question": "Безопасно ли использовать ProxMenux в рабочей среде?", + "bodyRich": "Да. Поскольку ProxMenux не изменяет основные файлы Proxmox без явного запроса, его можно использовать в рабочих средах. Как и при любой автоматизации, сначала протестируйте его в контролируемой среде и создайте резервные копии перед выполнением операций, которые могут привести к потере данных (обновление PVE с 8 до 9, форматирование диска, уничтожение ВМ…)." + }, + "q10": { + "question": "Как удалить ProxMenux?", + "p1Rich": "Из ProxMenux: Settings → Uninstall ProxMenux. Программа удаления удаляет дерево скриптов, средство запуска и службу Monitor, по желанию пользователя удаляет выбранные зависимости и восстанавливает /root/.bashrc и /etc/motd из резервных копий, созданных Post-Install, если эти копии существуют (в противном случае удаляет строку ProxMenux из MOTD).", + "p2Rich": "Полная пошаговая инструкция: Удаление ProxMenux." + }, + "q11": { + "question": "VirusTotal помечает URL установки как подозрительный — безопасен ли он?", + "p1Rich": "Результат 1/95 от Chong Lua Dao, приведённый в Issue #162, был признан сопровождающим проекта ложным срабатыванием. Установщик запускается командой, которая скачивает и выполняет скрипт (bash -c \"$(wget -qLO - …)\"), и может скачать jq из официального выпуска GitHub. Такое поведение может вызывать срабатывание эвристических сканеров; этот отчёт о прошлой проверке не является заключением о безопасности всех будущих загрузок.", + "p2Rich": "Исходный код ProxMenux открыт на 100%, а скрипт установки можно проверить построчно: install_proxmenux.sh. Дополнительные сведения — в Issue #162." + } +} diff --git a/web/messages/ru/docs/about/index.json b/web/messages/ru/docs/about/index.json new file mode 100644 index 00000000..e0b0cbb7 --- /dev/null +++ b/web/messages/ru/docs/about/index.json @@ -0,0 +1,67 @@ +{ + "meta": { + "title": "О проекте | Документация ProxMenux", + "description": "О ProxMenux: цели проекта, участники, ответы на частые вопросы и кодекс поведения. Инструмент управления Proxmox VE 8+ с открытым исходным кодом и интерфейсом на основе меню. Создан и поддерживается MacRimi при участии небольшой команды тестировщиков и других участников проекта.", + "ogTitle": "О проекте | Документация ProxMenux", + "ogDescription": "О ProxMenux — инструменте управления Proxmox VE 8+ с открытым исходным кодом и интерфейсом на основе меню." + }, + "header": { + "title": "О проекте", + "description": "Сведения о проекте, ответы на частые вопросы, участники и кодекс поведения. ProxMenux — инструмент управления Proxmox VE 8+ с открытым исходным кодом и интерфейсом на основе меню. Создан и поддерживается MacRimi при помощи небольшой команды тестировщиков и других участников проекта.", + "section": "О проекте" + }, + "callout": { + "title": "Открытый исходный код, развитие силами сообщества", + "body": "ProxMenux распространяется по лицензии GPL-3.0 и открыто разрабатывается на GitHub. Каждый скрипт доступен для проверки, каждое изменение можно отследить. Приветствуется любой вклад: сообщения об ошибках, идеи, код и тестирование." + }, + "section": { + "heading": "В этом разделе", + "options": [ + { + "icon": "HelpCircle", + "href": "/docs/about/faq", + "title": "FAQ", + "description": "Ответы на частые вопросы: что такое ProxMenux, установка, совместимость, настройка, обновления, безопасность, использование в рабочей среде и удаление." + }, + { + "icon": "Users", + "href": "/docs/about/contributors", + "title": "Участники проекта", + "description": "Благодарность людям, благодаря которым существует ProxMenux, — тестировщикам, рецензентам и разработчикам, которые вносят вклад в каждый выпуск." + }, + { + "icon": "ScrollText", + "href": "/docs/about/code-of-conduct", + "title": "Кодекс поведения", + "description": "Ценности проекта, требования к ответственному отношению к коду и рекомендации по участию в разработке. Обязательно прочитайте перед созданием PR или отправкой сообщения о проблеме." + } + ] + }, + "involved": { + "heading": "Присоединяйтесь", + "intro": "Три способа принять участие в проекте:", + "cards": [ + { + "href": "https://github.com/MacRimi/ProxMenux/issues/new", + "title": "🐛 Сообщить об ошибке", + "description": "GitHub Issues — приложите журналы и шаги для воспроизведения ошибки." + }, + { + "href": "https://github.com/MacRimi/ProxMenux/discussions", + "title": "💡 Предложить новую функцию", + "description": "GitHub Discussions — обсудите идеи перед созданием PR." + }, + { + "href": "https://github.com/MacRimi/ProxMenux/pulls", + "title": "🔀 Отправить PR", + "description": "GitHub Pull Requests — сначала прочитайте кодекс поведения." + } + ] + }, + "support": { + "heading": "Поддержать проект", + "introRich": "Если ProxMenux экономит ваше время, самый простой способ помочь другим узнать о нём — поставить репозиторию ⭐ на GitHub. Если хотите сделать больше:", + "kofiLabel": "Поддержать на Ko-fi", + "kofiOutro": " — угостите сопровождающего проекта кофе и поддержите дальнейшую разработку." + } +} diff --git a/web/messages/ru/docs/backup-restore/creating-backups.json b/web/messages/ru/docs/backup-restore/creating-backups.json new file mode 100644 index 00000000..fbf22dbf --- /dev/null +++ b/web/messages/ru/docs/backup-restore/creating-backups.json @@ -0,0 +1,213 @@ +{ + "meta": { + "title": "Создание резервных копий — интерактивный процесс | ProxMenux", + "description": "Интерактивный процесс создания резервных копий в ProxMenux. Две точки входа (текстовое меню Scripts и веб-интерфейс Monitor), три места назначения, два режима профиля, один этап промежуточной подготовки и одно диалоговое окно подтверждения. Описаны шесть сочетаний параметров, стандартный и пользовательские профили, а также то, что видит пользователь от выбора резервной копии до сохранения архива в месте назначения.", + "ogTitle": "ProxMenux Backup — создание резервных копий", + "ogDescription": "Интерактивный процесс создания резервных копий с тремя местами назначения, двумя профилями и общим этапом промежуточной подготовки.", + "twitterTitle": "Создание резервных копий | ProxMenux", + "twitterDescription": "Интерактивный процесс создания резервных копий с тремя местами назначения и двумя режимами профиля." + }, + "header": { + "title": "Создание резервных копий", + "description": "Интерактивный процесс создания резервных копий: выберите место назначения и профиль, проверьте сводку перед подтверждением и следите за сохранением архива. Обе точки входа используют одну и ту же серверную часть и создают идентичные архивы.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "title": "Две точки входа, одинаковые возможности", + "body": "Текстовый интерфейс Scripts и веб-интерфейс Monitor предоставляют совершенно одинаковые возможности. При каждом резервном копировании — ручном или по расписанию — используется одна и та же матрица выбора (три места назначения × два профиля), а для каждой её ячейки вызывается одна и та же функция серверной части (_bk_pbs, _bk_borg или _bk_local). Архивы, созданные через любую из двух точек входа, не отличаются друг от друга. Выбор зависит от ваших предпочтений: текстовый интерфейс удобен для работы через SSH и поддерживает автоматизацию с помощью скриптов; Monitor позволяет работать мышью и расположен рядом с представлениями уведомлений и последних записей журнала." + }, + "entryPoints": { + "heading": "Две точки входа", + "rows": [ + { + "entry": "ProxMenux Scripts (текстовый интерфейс)", + "path": "меню → Host Backup & Restore → Backup конфигурации хоста", + "detail": "Последовательность диалогов, удобная для работы с SSH. Пункт главного меню открывает раздел «Резервное копирование и восстановление конфигурации хоста»; пункт «Резервное копирование конфигурации хоста» открывает шесть вариантов. Используется backup_menu в backup_host.sh." + }, + { + "entry": "ProxMenux Monitor (веб-интерфейс)", + "path": "вкладка «Резервные копии» → «Создать резервную копию»", + "detail": "Пошаговый мастер. Те же шесть вариантов представлены в виде формы из двух шагов (место назначения → профиль). Те же функции серверной части вызываются через Flask API." + } + ] + }, + "modes": { + "heading": "Резервное копирование вручную и по расписанию", + "body": "Резервные копии можно создавать в двух режимах: вручную (интерактивная последовательность действий, описанная на этой странице: пользователь выбирает место назначения и профиль в меню и наблюдает за созданием архива) или по расписанию (автоматическое задание, которое запускается по таймеру с расписанием в формате cron и применяет настроенные для задания правила хранения). Оба режима поддерживают одни и те же три места назначения и два профиля и доступны через обе точки входа — текстовое меню Scripts и вкладку «Резервные копии» в Monitor. Задания по расписанию используют те же функции серверной части, что и ручной режим, через run_scheduled_backup.sh; создаваемые архивы ничем не отличаются.", + "seeAlso": "На странице заданий по расписанию описан весь процесс, включая создание задания, его привязку к существующему таймеру vzdump в PVE и настройку параметров хранения.", + "monitorAlt": "Вкладка «Резервные копии» в ProxMenux Monitor с диалогом «Новая резервная копия по расписанию», содержащим поля места назначения, профиля, расписания и параметров хранения.", + "monitorCaption": "Резервное копирование по расписанию — ProxMenux Monitor. В том же пошаговом диалоге, который используется для создания резервной копии вручную, внизу находятся поля расписания и параметров хранения для автоматического режима." + }, + "matrix": { + "heading": "Матрица из шести вариантов", + "intro": "Выбор определяет как используемый механизм резервного копирования, так и стратегию выбора путей. Подробности настройки для каждой ячейки приведены на страницах соответствующих мест назначения.", + "rows": [ + { + "combo": "1", + "destination": "PBS", + "profile": "По умолчанию", + "action": "Загружает данные профиля по умолчанию и постоянно включаемые дополнительные пути в настроенный репозиторий PBS." + }, + { + "combo": "2", + "destination": "Borg", + "profile": "По умолчанию", + "action": "Создаёт архив с данными профиля по умолчанию и постоянно включаемыми дополнительными путями в выбранном репозитории Borg." + }, + { + "combo": "3", + "destination": "Локально", + "profile": "По умолчанию", + "action": "Записывает архив .tar.zst с данными профиля по умолчанию и постоянно включаемыми дополнительными путями в настроенное локальное место назначения." + }, + { + "combo": "4", + "destination": "PBS", + "profile": "Пользовательский", + "action": "Открывает окно выбора путей перед загрузкой в PBS; пользователь отмечает пути и может добавлять новые." + }, + { + "combo": "5", + "destination": "Borg", + "profile": "Пользовательский", + "action": "Открывает окно выбора путей перед созданием архива Borg." + }, + { + "combo": "6", + "destination": "Локально", + "profile": "Пользовательский", + "action": "Открывает окно выбора путей перед записью локального архива .tar.zst." + } + ] + }, + "profiles": { + "heading": "Профиль по умолчанию и пользовательский профиль", + "defaultTitle": "Профиль по умолчанию", + "defaultBody": "Профиль по умолчанию включает отобранный список из hb_default_profile_paths (описанный в разделе Как это работает, в подразделе Категории путей), а также все записи из файла постоянных дополнительных путей /usr/local/share/proxmenux/backup-extra-paths.txt. Пользователь выбирает место назначения и параметры шифрования, после чего резервное копирование выполняется без дополнительного выбора путей.", + "customTitle": "Пользовательский профиль", + "customBody": "Пользовательский профиль открывает список с флажками, в котором показаны все пути из профиля по умолчанию (не отмечены) и все постоянные дополнительные пути (уже отмечены и имеют префикс [+]). Пользователь отмечает нужные пути для текущего запуска и может нажать Добавить пользовательский путь, чтобы добавить новый абсолютный путь. Любой путь, добавленный прямо в этом списке, сохраняется в backup-extra-paths.txt, поэтому при последующих резервных копированиях он будет включаться автоматически, без повторного добавления. Снятие отметки с постоянного дополнительного пути исключает его из текущего запуска, но не удаляет из файла — для удаления предусмотрено отдельное действие Управление пользовательскими путями вне процесса резервного копирования.", + "customPickerAlt": "Список выбора путей пользовательского профиля: пути из профиля по умолчанию не отмечены, постоянные дополнительные пути уже отмечены и имеют префикс [+]; также доступны кнопки добавления нового пути и подтверждения выбора.", + "customPickerCaption": "Пользовательский профиль — выбор путей. Пути из профиля по умолчанию не отмечены; постоянные дополнительные пути уже отмечены и имеют префикс [+]. Пользователь отмечает нужные пути для текущего запуска.", + "manageCustomAlt": "Меню управления пользовательскими путями со списком постоянных дополнительных путей и возможностями их добавления, удаления и редактирования.", + "manageCustomCaption": "Управление пользовательскими путями — раздел для добавления и удаления постоянных дополнительных путей. Все перечисленные здесь пути автоматически включаются в резервные копии в режиме «По умолчанию», без необходимости открывать список выбора путей пользовательского профиля." + }, + "commonPipeline": { + "heading": "Что выполняется независимо от места назначения", + "intro": "После определения состава профиля каждый модуль назначения выполняет одну и ту же последовательность подготовки данных, а затем переходит к собственному способу их отправки. hb_prepare_staging формирует дерево архива в /tmp/proxmenux-DESTINATION-stage.XXXXXX и наполняет каждый из трёх наборов данных.", + "steps": [ + { + "step": "1", + "name": "Формирование rootfs", + "detail": "Для каждого выбранного пути выполняется rsync -a с сохранением в staging_root/rootfs/. База данных pmxcfs в /var/lib/pve-cluster/config.db копируется отдельно с помощью sqlite3 .backup для получения согласованного снимка без остановки кластера, а сопутствующие файлы .db-wal / .db-shm исключаются из копирования rsync; если sqlite3 недоступен, вместо этого сохраняется config.db.raw-fallback, который при восстановлении становится основной базой данных во время импорта. Часто изменяющиеся вложенные пути (история bash, кэши, корзина) исключаются из /root/. Пути, отсутствующие в источнике, записываются в metadata/missing_paths.txt без остановки резервного копирования." + }, + { + "step": "2", + "name": "Создание манифеста", + "detail": "build_manifest.sh координирует работу шести сборщиков данных и записывает manifest.json в корневой каталог подготовки данных. При сбое сборщика соответствующий раздел получает документированное пустое значение по умолчанию; манифест при этом остаётся корректным." + }, + { + "step": "3", + "name": "Список установленных пакетов", + "detail": "Вывод apt-mark showmanual сохраняется без изменений в metadata/packages.manual.list. Состояние компонентов уже содержится в восстановленной корневой файловой системе (components_status.json), поскольку /usr/local/share/proxmenux/ входит в профиль по умолчанию." + }, + { + "step": "4", + "name": "Сведения о запуске", + "detail": "metadata/run_info.env записывает сведения, идентифицирующие запуск резервного копирования: имя хоста, метку времени и версию ядра. Проверка совместимости при восстановлении использует их, чтобы определить направление перехода между версиями ядра." + }, + { + "step": "5", + "name": "Уведомление о начале", + "detail": "Срабатывает hb_notify_lifecycle \"start\". Если в Monitor настроены уведомления, создаётся пользовательское событие Резервное копирование хоста начато. Если каналы не настроены, уведомления не отправляются." + } + ] + }, + "included": { + "heading": "Что включается и что исключается", + "intro": "Каждый путь из итогового профиля (профиль по умолчанию + постоянные дополнительные пути + выбор в пользовательском режиме) копируется с помощью rsync -aAXH --numeric-ids. Глобального списка исключений нет; для некоторых каталогов действуют собственные исключения.", + "rootTitle": "Исключения для /root/", + "rootBody": "/root/ входит в профиль по умолчанию, поэтому пользовательские скрипты и настройки попадают в архив. Часто изменяющиеся вложенные пути исключаются:", + "rootItems": [ + ".bash_history", + ".cache/", + "tmp/", + ".local/share/Trash/" + ], + "proxmenuxTitle": "Исключения для /usr/local/share/proxmenux/", + "proxmenuxBody": "Из этого каталога переносятся только пользовательские данные — components_status.json, настройки и кеш после установки. Код, который уже будет на целевой системе благодаря её собственной установке ProxMenux, исключается, чтобы при восстановлении текущие исполняемые файлы целевой системы не заменялись более старыми:", + "proxmenuxItems": [ + "restore-pending/, scripts/, web/", + "monitor-app/, monitor-app.*/, AppImage/", + "images/, json/", + "utils.sh, helpers_cache.json", + "ProxMenux-Monitor.AppImage*, install_proxmenux*.sh" + ], + "notInProfileTitle": "Пути вне профиля", + "notInProfileBody": "Всё, что не перечислено в hb_default_profile_paths и не добавлено как пользовательский или постоянный дополнительный путь, не включается в резервную копию. Основные примеры:", + "notInProfileItems": [ + "Диски виртуальных машин и LXC — обрабатываются средствами vzdump, а не этой функцией. Файлы конфигурации гостевых систем в /etc/pve/nodes/*/qemu-server/*.conf и lxc/*.conf включаются в резервную копию (они находятся в /etc/pve), чтобы при восстановлении воссоздавался список гостевых систем; сами диски повторно подключаются из существующей резервной копии vzdump/PBS.", + "/boot и /boot/efi — исполняемые файлы ядра, initramfs и раздел UEFI ESP заново создаются собственными средствами целевой системы update-initramfs, update-grub или proxmox-boot-tool refresh после восстановления. Загрузчик никогда не копируется в исходном виде.", + "Файловые системы среды выполнения ядра и системы — /proc, /sys, /dev и /run представляют собой псевдофайловые системы, создаваемые ядром и udev; они нигде не хранятся постоянно.", + "Исполняемые файлы пакетов в /usr/bin, /usr/lib, /lib, /sbin — повторно устанавливаются средствами APT целевой системы на основе packages.manual.list.", + "/var/log/, /var/tmp/, /var/cache/ — текущее состояние конкретного узла; не восстанавливается.", + "/home/USER — не входит в профиль по умолчанию. Добавьте этот путь как пользовательский, если в системе есть домашние каталоги пользователей, которые необходимо сохранить при восстановлении." + ], + "customPathsTitle": "Как обрабатываются пользовательские пути", + "customPathsBody": "Пользовательский путь, добавленный непосредственно в пользовательском режиме или сохранённый в backup-extra-paths.txt, проходит тот же конвейер обработки rsync, что и пути профиля по умолчанию. Если пользовательский путь находится внутри /root/ или /usr/local/share/proxmenux/, к нему по-прежнему применяются указанные выше исключения для соответствующих путей. Каждый архивируемый путь — из профиля по умолчанию или пользовательский — записывается в metadata/selected_paths.txt. Пути, отсутствующие в исходной системе, записываются в metadata/missing_paths.txt без остановки резервного копирования, а пути, которые не удалось скопировать, — в metadata/failed_paths.txt." + }, + "archiveStructure": { + "heading": "Структура архива", + "intro": "Промежуточный каталог, создаваемый каждым модулем, имеет одинаковую структуру независимо от места назначения. Архив tar, PBS .pxar или архив Borg сохраняет это дерево без изменений.", + "tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs" + }, + "confirmation": { + "heading": "Сводка подтверждения", + "body": "Прежде чем модуль запишет что-либо в место назначения, ProxMenux выводит в терминал сводку с местом назначения, идентификатором резервной копии или именем архива, состоянием шифрования и списком копируемых путей. На этом этапе нет шага подтверждения или отмены; копирование начинается сразу после вывода сводки. Если резервное копирование завершается с ошибкой или прерывается, промежуточный каталог удаляется обработчиком trap, установленным для функции модуля, и частичные данные не попадают в место назначения." + }, + "writing": { + "heading": "Запись в место назначения", + "intro": "После подтверждения пользователем каждый модуль выполняет собственный этап записи. Механизмы описаны на страницах соответствующих мест назначения; общими являются журнал, сопроводительный файл и уведомление о завершении.", + "rows": [ + { + "topic": "Файл журнала", + "detail": "Каждый модуль записывает весь свой вывод в /tmp/proxmenux-DESTINATION-backup-YYYYMMDD_HHMMSS.log и при ошибке предлагает открыть журнал в диалоговом окне с прокруткой. Путь к журналу выводится в итоговой сводке только в том случае, если файл не пуст." + }, + { + "topic": "Сопроводительный файл (только для локального архива)", + "detail": "hb_write_archive_sidecar создаёт *.proxmenux.json рядом с локальным архивом, чтобы Monitor распознавал его как резервную копию узла ProxMenux даже после перемещения или переименования." + }, + { + "topic": "Уведомление (завершение/ошибка)", + "detail": "Отправляется hb_notify_lifecycle \"complete\" или \"fail\" с указанием длительности, размера архива и — при ошибке — последней строки журнала, похожей на сообщение об ошибке." + } + ] + }, + "finishedScreens": { + "heading": "Как выглядит готовая резервная копия", + "intro": "О завершении одной и той же операции сообщают оба интерфейса. TUI выводит в терминал блок с итогами, а на вкладке резервных копий Monitor выполненная операция отображается в списке архивов с размером, длительностью и значками состояния.", + "scriptsAlt": "TUI ProxMenux Scripts с результатами завершённого резервного копирования хоста: место назначения, идентификатор резервной копии, путь к снимку, объём данных, длительность и состояние шифрования.", + "scriptsCaption": "Резервное копирование завершено — ProxMenux Scripts (TUI). Итоговый блок содержит место назначения, идентификатор резервной копии, имя полученного снимка или архива, объём данных, длительность и состояние шифрования.", + "monitorAlt": "Вкладка резервных копий ProxMenux Monitor с записью о завершённом резервном копировании хоста: размер, длительность, значок метода и индикатор шифрования.", + "monitorCaption": "Резервное копирование завершено — вкладка резервных копий ProxMenux Monitor. Новая резервная копия появляется в списке архивов со значком метода сохранения, размером, длительностью и, если применимо, индикатором шифрования в виде замка." + }, + "whereNext": { + "heading": "Куда перейти дальше", + "items": [ + { + "label": "Места хранения", + "href": "/docs/backup-restore/destinations", + "tail": " — подробности настройки Local, PBS и Borg." + }, + { + "label": "Задания по расписанию", + "href": "/docs/backup-restore/scheduled-jobs", + "tail": " — автоматический запуск того же резервного копирования по расписанию вместо интерактивного запуска." + }, + { + "label": "Восстановление", + "href": "/docs/backup-restore/restoring", + "tail": " — процедура, использующая результат действий, описанных на этой странице." + } + ] + } +} diff --git a/web/messages/ru/docs/backup-restore/cross-kernel.json b/web/messages/ru/docs/backup-restore/cross-kernel.json new file mode 100644 index 00000000..e7251bb8 --- /dev/null +++ b/web/messages/ru/docs/backup-restore/cross-kernel.json @@ -0,0 +1,170 @@ +{ + "meta": { + "title": "Восстановление между версиями ядра — определение направления перехода, фильтр безопасного подмножества, адаптация конфигурации | ProxMenux", + "description": "Как ProxMenux восстанавливает резервную копию хоста на целевом хосте с другой основной версией ядра. Описаны определение направления расхождения версий, фильтр безопасного подмножества, исключающий критически важные для загрузки пути, когда ядро целевого хоста новее ядра резервной копии, и четырёхэтапная адаптация конфигурации, не зависящая от версии ядра. Она повторно применяет пользовательские настройки, такие как IOMMU, идентификаторы VFIO и пользовательские параметры командной строки ядра, без дословного копирования файлов, привязанных к конкретному ядру.", + "ogTitle": "Резервное копирование ProxMenux — восстановление между версиями ядра и адаптация конфигурации", + "ogDescription": "Восстановление между версиями ядра с учётом направления перехода, фильтром безопасного подмножества и адаптацией конфигурации, не зависящей от версии ядра.", + "twitterTitle": "Восстановление между версиями ядра | ProxMenux", + "twitterDescription": "Как ProxMenux выполняет восстановление, когда ядро целевого хоста отличается от ядра, указанного в резервной копии." + }, + "header": { + "title": "Восстановление с другой версией ядра", + "description": "Как ProxMenux выполняет восстановление, когда на целевом хосте используется ядро, отличающееся от указанного в резервной копии, особенно если ядро целевого хоста новее. Описано, как выявляется различие, как отфильтровываются критически важные для загрузки пути, способные нарушить работу целевого хоста, и как повторно применяются пользовательские настройки без дословного копирования файлов, привязанных к конкретному ядру.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "title": "Каждый переход между версиями ядра обрабатывается по-разному", + "body": "Ядро хоста Proxmox определяется строкой версии, например 6.17.13-2-pve. Первые два числа (6.17 в этом примере) определяют основную версию: при их изменении некоторые файлы конфигурации, созданные для предыдущего ядра, могут оказаться непригодными для нового. Если при восстановлении обнаруживается, что основные версии ядра в резервной копии и в целевой системе различаются, дальнейшие действия зависят от направления перехода — от того, содержит ли резервная копия более старую или более новую версию ядра, чем целевая система, — поскольку в этих двух случаях причины возможных сбоев противоположны. Резервные копии с более новым ядром, чем в целевой системе, восстанавливаются без изменений и без ошибок (проверено на стенде для нескольких переходов между версиями ядра). Для резервных копий с более старым ядром, чем в целевой системе, необходима фильтрация, чтобы конфигурация, созданная для изменившегося с тех пор ядра, не нарушила загрузку целевой системы." + }, + "directionCheck": { + "heading": "Проверка направления перехода", + "intro": "Во время проверки совместимости hb_compat_check сравнивает ядро, указанное в манифесте резервной копии, с текущим ядром целевого хоста (uname -r) и относит восстановление к одному из трёх вариантов. Результат сохраняется во внутренней переменной HB_COMPAT_KERNEL_DIRECTION:", + "rows": [ + { + "direction": "совпадает", + "condition": "Основная версия ядра резервной копии совпадает с основной версией ядра целевого хоста.", + "behavior": "Полная процедура восстановления выполняется без изменений. Дополнительный фильтр и адаптация конфигурации не применяются, специальное уведомление в интерфейсе не отображается." + }, + { + "direction": "bk_newer", + "condition": "Ядро резервной копии НОВЕЕ ядра целевого хоста (например, резервная копия создана на ядре 7.0, а целевой хост работает на ядре 6.17).", + "behavior": "Полный процесс восстановления выполняется без изменений, точно так же, как same. Фильтрация не применяется. Проверено на практике: драйверы автоматически переустанавливаются под ядро целевой системы, конфигурация IOMMU применяется без ошибок, виртуальные машины с пробросом GPU запускаются без проблем." + }, + { + "direction": "bk_older", + "condition": "Ядро в резервной копии СТАРЕЕ ядра целевой системы (например, резервная копия была создана при использовании ядра 6.17, а целевая система работает на ядре 7.0).", + "behavior": "Активируются фильтр безопасного подмножества и описанное ниже четырёхэтапное применение настроек. Восстановление продолжается — целевая система воспроизводит исходную, но файлы, критически важные для загрузки, не копируются буквально." + } + ] + }, + "whyBkNewerIsSafe": { + "heading": "Почему резервная копия с более новым ядром, чем в целевой системе, восстанавливается без изменений", + "body": "Когда восстановление выполняется на целевой системе с более старым ядром, чем указанное в резервной копии, все механизмы, от которых зависит восстановление, работают независимо от версии ядра. Установщики драйверов GPU и других PCI-устройств определяют работающее ядро с помощью uname -r и компилируют DKMS под ядро целевой системы. При установке пакетов APT загружаются двоичные файлы, собранные для дистрибутива целевой системы. Параметры командной строки IOMMU, такие как intel_iommu=on, остаются неизменными при переходе между основными версиями ядра. Резервная копия содержит файлы, записанные при работе с более новым ядром, но синтаксис этих файлов (списков блокировки модулей, настроек GRUB по умолчанию, конфигурации initramfs) допустим и для более старого ядра — ядра игнорируют неизвестные параметры, а не завершают работу с ошибкой. На практике этот случай эквивалентен восстановлению с той же версией ядра, и ProxMenux обрабатывает его соответствующим образом." + }, + "safeSubsetFilter": { + "heading": "Фильтр безопасного подмножества (только если ядро целевой системы новее)", + "intro": "Если ядро целевой системы новее ядра из резервной копии, проверка совместимости добавляет 16 путей, критически важных для загрузки, из hb_unsafe_paths_cross_version в RS_SKIP_PATHS. Эти пути исключаются из восстановления, поскольку в стендовых испытаниях перезапись их содержимого версиями из системы с более старым ядром приводила к панике ядра в целевой системе с более новым ядром. Эти пути относятся к пяти категориям:", + "categoryRows": [ + { + "category": "Загрузчик", + "paths": "/etc/default/grub, /etc/kernel", + "reason": "Настройки GRUB по умолчанию, привязанные к прежнему порядку ядер, и состояние proxmox-boot-tool (командная строка, UUID разделов ESP, хуки), содержащее ссылки на пути и идентификаторы прежней установки." + }, + { + "category": "Модули ядра и загрузочные артефакты", + "paths": "/etc/modules-load.d, /etc/modprobe.d, /etc/initramfs-tools", + "reason": "Списки автозагрузки, которые могут ссылаться на модули, переименованные между основными версиями ядра; параметры модулей, которые могут оказаться неприменимыми; хуки initramfs, написанные для более старого ядра." + }, + { + "category": "Стек хранения данных и идентификаторы файловых систем", + "paths": "/etc/fstab, /etc/multipath, /etc/iscsi, /etc/udev/rules.d, /etc/zfs", + "reason": "UUID, которые могут отсутствовать в этой установке; драйверы multipath, меняющиеся между версиями ядра; параметры iSCSI, которые со временем меняются; правила udev, которые могут ссылаться на несуществующие подсистемы; состояние ZFS (zpool.cache + hostid), из-за которого пул может быть заблокирован как чужой." + }, + { + "category": "Источники APT", + "paths": "/etc/apt", + "reason": "Выпуски дистрибутива, указанные в источниках APT, могут привести к понижению версий критически важных пакетов при следующем обновлении." + }, + { + "category": "systemd", + "paths": "/etc/systemd/system, /etc/systemd/journald.conf, /etc/systemd/logind.conf, /etc/systemd/system.conf, /etc/systemd/user.conf", + "reason": "Переопределения юнитов и .wants, привязанные к более старой основной версии systemd; ключи конфигурации, которые могут не распознаваться более новой версией systemd." + } + ], + "outroBody": "Фильтр срабатывает ДО появления диалога подтверждения, поэтому пользователь видит точный список путей, которые будут пропущены, с группировкой по причинам. Восстановление всё равно продолжается — всё остальное (конфигурация виртуальных машин/LXC, сеть, /etc/pve, пользователи, cron, состояние ProxMenux, пакеты, драйверы, /root) восстанавливается в обычном порядке." + }, + "hydration": { + "heading": "Применение настроек независимо от версии ядра", + "intro": "Фильтр пропускает файлы, критически важные для загрузки, поэтому затем повторно применяются отдельные пользовательские настройки: параметры командной строки IOMMU, идентификаторы VFIO, пользовательские GRUB_TIMEOUT и списки блокировки nvidia. Это выполняется, когда ядро целевой системы новее. При объединении параметров командной строки сохраняются существующие ключи целевой системы, а при объединении списков модулей добавляются недостающие записи. Разрешённые значения GRUB и пользовательские файлы могут заменять отличающееся содержимое целевой системы. Повторное применение тех же входных данных идемпотентно.", + "phaseRows": [ + { + "phase": "1a — вариант с GRUB", + "detail": "Для узлов с GRUB (установки на ext4/lvm). _rs_hyd_grub объединяет все параметры из manifest.kernel_params.cmdline_extra резервной копии с действующим GRUB_CMDLINE_LINUX_DEFAULT целевой системы, пропуская параметры, ключи которых уже присутствуют в целевой системе. Затем переносит разрешённые ключи GRUB_* (GRUB_TIMEOUT, GRUB_TIMEOUT_STYLE, GRUB_DEFAULT, GRUB_TERMINAL, GRUB_DISABLE_OS_PROBER, GRUB_SERIAL_COMMAND, GRUB_GFXMODE, GRUB_GFXPAYLOAD_LINUX) из /etc/default/grub резервной копии, если их значения отличаются от значений в целевой системе." + }, + { + "phase": "1b — вариант с systemd-boot / ZFS", + "detail": "Для узлов с systemd-boot (обычно с корневой файловой системой на ZFS). _rs_hyd_kernel_cmdline добавляет пользовательские параметры из cmdline_extra в /etc/kernel/cmdline целевой системы, сохраняя без изменений её собственные стандартные параметры root=, boot= и rootflags=." + }, + { + "phase": "2 — Объединение /etc/modules", + "detail": "_rs_hyd_modules добавляет модули из manifest.kernel_params.modules_loaded_at_boot, которые входят в список разрешённых (vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd, kvm, kvm_intel, kvm_amd, nvidia, nvidia_drm, nvidia_modeset, nvidia_uvm, i915, xe) И ещё отсутствуют в /etc/modules целевой системы." + }, + { + "phase": "3 — Копирование файлов из списка разрешённых", + "detail": "_rs_hyd_files копирует созданные пользователем файлы из промежуточной корневой файловой системы в работающую целевую систему, если их содержимое отличается. Список разрешённых охватывает файлы VFIO/nvidia/blacklist в /etc/modprobe.d, /etc/modules-load.d, а также правило привязки VFIO ProxMenux и правила udev для nvidia в /etc/udev/rules.d. Файлы, поставляемые дистрибутивом (pve-blacklist.conf, mdadm.conf, nvme.conf), намеренно исключены: их содержимое меняется от выпуска к выпуску." + }, + { + "phase": "4 — Принудительное повторное применение после загрузки", + "detail": "Все четыре этапа записывают данные непосредственно в целевую систему ВНЕ стандартного процесса восстановления. Чтобы объединённые токены, модули и файлы вступили в силу при следующей загрузке, HB_HYDRATION_APPLIED=1 передаётся через plan.env в apply_pending_restore.sh, что принудительно устанавливает NEEDS_INITRAMFS=1 и NEEDS_GRUB=1 независимо от содержимого списка применения. Затем диспетчер, запускаемый после загрузки системы, заново создаёт initramfs и обновляет загрузчик." + } + ] + }, + "planCommit": { + "heading": "Планирование и применение — пользователь сначала видит предварительный результат", + "body": "Дополнение конфигурации выполняется в двух режимах. Перед открытием диалога подтверждения ProxMenux запускает _rs_apply_bk_older_hydration в режиме plan: точно определяет, какие данные будут объединены, заполняет RS_HYDRATION_SUMMARY зелёным блоком с перечнем всех действий и завершает работу без записи изменений. В диалоге подтверждения этот зелёный блок отображается рядом с жёлто-оранжевым списком элементов, пропускаемых при применении безопасного подмножества, поэтому пользователь ЗАРАНЕЕ видит, что будет повторно применено автоматически. После подтверждения пользователем ProxMenux повторно запускает ту же вспомогательную программу в режиме commit — с теми же этапами и логикой, но на этот раз каждый этап записывает изменения в работающую целевую систему. Отмена в диалоге подтверждения оставляет целевую систему без изменений." + }, + "flowDiagram": { + "heading": "Порядок действий, когда ядро целевой системы новее ядра в резервной копии", + "intro": "Дополнительные шаги, выполняемые при более новом ядре целевой системы, встроены в обычный процесс восстановления. Всё остальное — применение без перезагрузки, подготовка отложенных изменений, установка пакетов и диспетчер действий после загрузки — выполняется так же, как при восстановлении с одинаковыми версиями ядра.", + "diagram": " ┌────────────────────────────────────────────────────────────┐\n │ hb_compat_check │\n │ HB_COMPAT_KERNEL_DIRECTION = bk_older │\n └───────────────────────────┬────────────────────────────────┘\n │\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ Add 16 boot-critical paths to RS_SKIP_PATHS │\n │ /etc/default/grub, /etc/kernel, /etc/modules-load.d, ... │\n └───────────────────────────┬────────────────────────────────┘\n │\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ _rs_apply_bk_older_hydration \"plan\" │\n │ Compute what would be merged │\n │ Populate RS_HYDRATION_SUMMARY (green block) │\n │ No writes │\n └───────────────────────────┬────────────────────────────────┘\n │\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ Confirmation dialog │\n │ Amber: paths skipped by safe-subset filter │\n │ Green: tokens/files reapplied by hydration │\n │ User accepts or cancels │\n └───────────────────────────┬────────────────────────────────┘\n │ (accepted)\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ _rs_apply_bk_older_hydration \"commit\" │\n │ Phase 1a/1b: merge cmdline tokens + GRUB keys │\n │ Phase 2: append modules to /etc/modules │\n │ Phase 3: copy whitelisted vfio/nvidia files │\n │ Set HB_HYDRATION_APPLIED=1 │\n └───────────────────────────┬────────────────────────────────┘\n │\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ Rest of the restore runs normally │\n │ _rs_apply hot (skips RS_SKIP_PATHS) │\n │ _rs_prepare_pending_restore (writes plan.env with │\n │ HB_HYDRATION_APPLIED=1) │\n │ packages.manual.list install │\n │ Reboot │\n │ apply_pending_restore.sh (forces NEEDS_INITRAMFS=1, │\n │ NEEDS_GRUB=1 because of the hydration flag) │\n │ apply_cluster_postboot.sh │\n │ update-initramfs -u -k all │\n │ update-grub / proxmox-boot-tool refresh │\n │ component --auto-reinstall │\n └────────────────────────────────────────────────────────────┘" + }, + "concreteExamples": { + "heading": "Конкретные примеры", + "intro": "Этап дополнения конфигурации — не абстракция: в типичных сценариях он даёт наблюдаемые и корректные результаты. Два примера, которые обрабатываются автоматически:", + "rows": [ + { + "scenario": "Проброс GPU (VFIO)", + "detail": "В исходной системе были intel_iommu=on iommu=pt в командной строке ядра, vfio/vfio_pci/vfio_iommu_type1 в /etc/modules, файл /etc/modprobe.d/vfio.conf с options vfio-pci ids=10de:2216 и файл /etc/modprobe.d/blacklist-nvidia.conf. При дополнении конфигурации параметры командной строки объединяются с параметрами GRUB или командной строки ядра целевой системы, модули vfio добавляются в /etc/modules, а два созданных пользователем файла modprobe копируются. При следующей загрузке IOMMU активен, модули VFIO загружаются, GPU привязывается к vfio-pci, а виртуальная машина запускается с работающим пробросом." + }, + { + "scenario": "Пользовательские настройки GRUB по умолчанию", + "detail": "В исходной системе были заданы GRUB_TIMEOUT=1 и GRUB_DISABLE_OS_PROBER=true. На этапе переноса настроек считываются оба ключа из /etc/default/grub резервной копии, обнаруживается, что они отличаются от значений по умолчанию новой установки, и эти две строки перезаписываются в файле целевой системы (всё остальное, включая GRUB_DISTRIBUTOR, остаётся без изменений)." + } + ] + }, + "callout": { + "warningTitle": "Что не применяется повторно при дополнении конфигурации, если ядро целевой системы новее", + "warningBody": "При восстановлении конфигурации повторно применяются только те настройки, которые ProxMenux считает безопасными при переходе между версиями ядра: параметры IOMMU, идентификаторы VFIO, ключи GRUB из разрешённого списка и модули из фиксированного списка (vfio*, nvidia*, i915, xe, kvm*). Всё, что не входит в этот набор, — пользовательские хуки initramfs в /etc/initramfs-tools/hooks/, файлы вне разрешённого списка в /etc/modprobe.d/, созданные пользователем переопределения юнитов systemd — по-прежнему исключается. Причина конкретна: эти файлы могут обращаться к внутренним интерфейсам ядра (API модулей, структуре /sys, хукам udev), которые меняются между основными версиями, и их применение без изменений к более новому ядру может сделать целевую систему незагружаемой. Если требуется точное воспроизведение цепочки загрузки, восстановление необходимо выполнять на узле с той же основной версией ядра, что и в резервной копии." + }, + "codeReference": { + "heading": "Где реализованы механизмы", + "intro": "Для разработчиков, которые хотят проследить или расширить логику работы при переходе между версиями ядра:", + "rows": [ + { + "component": "Определение направления перехода", + "location": "hb_compat_check в lib_host_backup_common.sh. Задаёт HB_COMPAT_KERNEL_DIRECTION." + }, + { + "component": "Список путей безопасного подмножества", + "location": "hb_unsafe_paths_cross_version в lib_host_backup_common.sh. Выводит строки path\\treason, используемые как фильтром CLI, так и веб-эндпоинтом /api/host-backups/restore/prepare." + }, + { + "component": "Этапы восстановления конфигурации", + "location": "_rs_hyd_grub, _rs_hyd_kernel_cmdline, _rs_hyd_modules, _rs_hyd_files в backup_host.sh. Выполнением управляет _rs_apply_bk_older_hydration." + }, + { + "component": "Принудительное повторное применение настроек после загрузки", + "location": "apply_pending_restore.sh считывает HB_HYDRATION_APPLIED из plan.env и принудительно устанавливает флаги NEEDS_INITRAMFS=1/NEEDS_GRUB=1." + }, + { + "component": "Предварительный просмотр в веб-интерфейсе", + "location": "/api/host-backups/restore/prepare в flask_server.py. Подключает вспомогательную библиотеку, запускает _rs_apply_bk_older_hydration в режиме планирования и возвращает список действий в модальное окно веб-интерфейса." + } + ] + }, + "whereNext": { + "heading": "Куда перейти дальше", + "items": [ + { + "label": "Восстановление", + "href": "/docs/backup-restore/restoring", + "tail": " — полный процесс восстановления, в который встроены механизмы, описанные на этой странице." + }, + { + "label": "Как это работает", + "href": "/docs/backup-restore/how-it-works", + "tail": " — манифест и сборщики, формирующие блок kernel_params, из которого считываются данные для восстановления конфигурации." + } + ] + } +} diff --git a/web/messages/ru/docs/backup-restore/destinations/borg.json b/web/messages/ru/docs/backup-restore/destinations/borg.json new file mode 100644 index 00000000..eeccd4a7 --- /dev/null +++ b/web/messages/ru/docs/backup-restore/destinations/borg.json @@ -0,0 +1,234 @@ +{ + "meta": { + "title": "Место назначения Borg — типы репозиториев, аутентификация SSH, шифрование | ProxMenux", + "description": "При выборе Borg в качестве места назначения резервные копии узла ProxMenux записываются в репозиторий Borg — локальный, на подключённом внешнем диске или на удалённом сервере с доступом через SSH. Описаны порядок поиска исполняемого файла borg, четыре стратегии использования ключей SSH, шифрование repokey, сохранённая конфигурация места назначения и политика хранения для каждого задания по расписанию.", + "ogTitle": "Резервное копирование ProxMenux — место назначения Borg", + "ogDescription": "Как ProxMenux записывает резервные копии узла в репозитории Borg: стратегии аутентификации SSH и шифрование repokey.", + "twitterTitle": "Место назначения резервных копий Borg | ProxMenux", + "twitterDescription": "Репозитории Borg для резервных копий узла: локальные, на USB-носителях и с доступом через SSH." + }, + "header": { + "title": "Borg", + "description": "При выборе Borg в качестве места назначения резервные копии узла записываются в репозиторий Borg. Поддерживаются три типа репозиториев: путь в локальной файловой системе, подключённый внешний диск или удалённый сервер с доступом через SSH. Предусмотрены дедупликация на уровне блоков данных между всеми архивами в репозитории и необязательное шифрование repokey.", + "section": "Резервное копирование и восстановление" + }, + "aboutBorg": { + "heading": "Что такое Borg", + "body": "Borg (также пишется BorgBackup) — инструмент с открытым исходным кодом для резервного копирования с дедупликацией, поддерживаемый сообществом Borg Backup. Он хранит каждый архив в виде набора блоков переменной длины в репозитории; блоки используются совместно разными архивами, поэтому повторное резервное копирование неизменённых данных почти не требует дополнительного места. Borg не привязан к Proxmox — это универсальный инструмент резервного копирования, используемый в самых разных средах. ProxMenux использует его как одно из трёх мест назначения для резервных копий хоста; все описанные на этой странице механизмы Borg (типы репозиториев, borg-serve через SSH, шифрование repokey, prune) относятся к стандартным возможностям Borg." + }, + "intro": { + "title": "Дедупликация на уровне блоков с локальными репозиториями или репозиториями, обслуживаемыми через SSH", + "body": "Репозиторий Borg хранит блоки данных, общие для всех содержащихся в нём архивов, поэтому при повторном резервном копировании неизменённого файла новые данные не передаются и не сохраняются. ProxMenux вызывает borg create для работы с репозиторием при резервном копировании и borg extract при восстановлении. Репозиторий может находиться в той же файловой системе, что и исходные данные, на подключённом внешнем диске или на удалённом узле, доступном через SSH." + }, + "binarySourcing": { + "heading": "Исполняемый файл borg", + "intro": "Borg не входит в число базовых зависимостей установщика ProxMenux. При запуске резервного копирования hb_ensure_borg последовательно проверяет четыре источника исполняемого файла и использует первый работоспособный вариант:", + "rows": [ + { + "priority": "1", + "source": "Системный borg", + "detail": "Если на узле уже установлен borg через APT (which borg находит исполняемый файл), используется этот файл." + }, + { + "priority": "2", + "source": "Кэш в каталоге состояния", + "detail": "/usr/local/share/proxmenux/borg — файл, сохранённый после предыдущей загрузки через GitHub на этом узле." + }, + { + "priority": "3", + "source": "Комплект AppImage монитора", + "detail": "/usr/local/share/proxmenux/monitor-app/usr/bin/borg — в комплект AppImage входит подписанный borg-linux64. Этот вариант работает без доступа к интернету: даже на узле без подключения к интернету доступен работоспособный borg." + }, + { + "priority": "4", + "source": "Загрузка через GitHub", + "detail": "wget с использованием закреплённого URL borg-linux64 в github.com/borgbackup/borg/releases/ и проверкой по фиксированной контрольной сумме SHA-256, заданной в lib_host_backup_common.sh (HB_BORG_LINUX64_SHA256). При несовпадении контрольной суммы исполняемый файл удаляется, а резервное копирование прерывается. Загруженный файл кэшируется в каталоге состояния, поэтому при последующих запусках резервного копирования используется второй вариант." + } + ] + }, + "repoTypes": { + "heading": "Типы репозиториев", + "intro": "Тип репозитория выбирается при добавлении места назначения. Каждому типу соответствует свой URL репозитория, распознаваемый Borg.", + "rows": [ + { + "type": "remote", + "url": "ssh://USER@HOST/RPATH", + "detail": "Репозиторий находится на удалённом сервере, на котором запущен borg serve. Требуется подключение к этому серверу по SSH." + }, + { + "type": "usb", + "url": "/mnt/MOUNTPOINT/borgbackup", + "detail": "Репозиторий находится на подключённом внешнем диске (обычно USB). Точка монтирования определяется с помощью hb_prompt_mounted_path, который при необходимости обнаруживает, монтирует или форматирует разделы USB-накопителя." + }, + { + "type": "local", + "url": "/backup/borgbackup (любой абсолютный путь)", + "detail": "Репозиторий находится в локальном каталоге. Этот вариант имеет смысл только тогда, когда целевой каталог расположен на отдельном физическом диске: репозиторий на том же диске, что и исходные данные, защищает от ошибок пользователя, но не от отказа диска." + } + ] + }, + "serverSetup": { + "heading": "Подготовка сервера Borg (на стороне сервера)", + "intro": "Для репозитория типа remote требуется работающий сервер Borg, доступный по SSH. ProxMenux не выполняет первоначальную настройку самого сервера — он лишь разрешает доступ по ключу к существующей учётной записи на нём. В этом разделе описаны требования к серверу, которые необходимо выполнить, прежде чем ProxMenux сможет подключиться.", + "hostChoicesTitle": "Где можно разместить сервер", + "hostChoicesBody": "Подойдёт любой хост Linux с доступом по SSH. Типичные варианты:", + "hostChoicesItems": [ + "Выделенный NAS или сервер резервного копирования (Debian, Ubuntu, TrueNAS SCALE с доступом к командной оболочке).", + "Контейнер LXC на узле Proxmox. Потребляет мало ресурсов и изолирован от хоста, выполняющего резервное копирование.", + "Другой хост Proxmox в той же локальной сети или виртуальная машина в любом месте, доступная по SSH." + ], + "lxcWarningTitle": "LXC в качестве сервера Borg", + "lxcWarningBody": "Если сервер Borg работает внутри LXC, для generate-auto нужна учётная запись, допускающая аутентификацию по паролю через SSH во время установки ключа. Если вход по паролю недоступен, установите ключ вручную или используйте альтернативный вариант generate-pct через хост PVE.", + "requirementsTitle": "Требования к серверу", + "requirementsRows": [ + { + "requirement": "Исполняемый файл borg по пути /usr/bin/borg", + "detail": "В строке command=\"/usr/bin/borg serve ...\", которую ProxMenux записывает в authorized_keys, этот путь задан явно. При установке через APT (apt install borgbackup) исполняемый файл размещается именно там. Для отдельно установленного исполняемого файла необходимо создать символическую ссылку /usr/bin/borg." + }, + { + "requirement": "Отдельная учётная запись пользователя (обычно borg)", + "detail": "Владеет каталогом репозитория и принимает входящие подключения по SSH. Права sudo и доступ к командной оболочке не требуются — строка authorized_keys в любом случае запрещает интерактивные сеансы оболочки." + }, + { + "requirement": "Каталог репозитория с доступом на запись", + "detail": "Путь, который пользователь указывает для ProxMenux (например, /backup/borgbackup), должен существовать на сервере, а его владельцем должен быть пользователь borg." + }, + { + "requirement": "Демон SSH, разрешающий подключения пользователя borg", + "detail": "PubkeyAuthentication yes (по умолчанию). Аутентификация по паролю нужна только для однократной процедуры generate-auto — после установки ключа аутентификацию по паролю на сервере можно полностью отключить." + } + ], + "minimalSetupTitle": "Минимальная настройка сервера", + "minimalSetupBody": "На сервере Borg под управлением Debian или Ubuntu для базовой рабочей настройки достаточно выполнить четыре команды от имени root:", + "minimalSetupCmd": "apt install borgbackup\nuseradd -m -d /home/borg -s /bin/bash borg\nmkdir -p /backup/borgbackup\nchown borg:borg /backup/borgbackup", + "minimalSetupNote": "Когда сервер подготовлен и доступна аутентификация по паролю через SSH, режим generate-auto в ProxMenux позволяет установить ключ SSH с помощью учётной записи, имеющей право записи в файл authorized_keys пользователя borg. При последующем резервном копировании используется этот ключ, действие которого ограничено borg serve по настроенному пути. Если вход по паролю недоступен, установите ключ вручную или используйте альтернативный вариант через хост PVE." + }, + "sshAuth": { + "heading": "Аутентификация SSH (на стороне клиента)", + "intro": "Доступ к удалённым репозиториям Borg осуществляется по SSH. Подключение устанавливается с хоста ProxMenux к учётной записи пользователя на сервере Borg, от имени которого запускается borg serve. Обычно этот пользователь называется borg, и это НЕ учётная запись администратора или root на сервере — командная строка borg-serve ограничивает подключение конкретным путём к репозиторию (см. варианты работы с ключами ниже).", + "strategiesTitle": "Варианты работы с ключами SSH", + "strategiesIntro": "При добавлении удалённого целевого расположения ProxMenux запрашивает имя пользователя SSH, хост, порт и удалённый путь, а затем предлагает четыре варианта аутентификации. Дополнительный вариант generate-pct предлагается, если аутентификация по паролю отклонена. Режимы описаны ниже:", + "strategyRows": [ + { + "mode": "generate-auto", + "label": "Рекомендуется", + "detail": "ProxMenux создаёт или повторно использует пару ключей ed25519 в ~/.ssh/borg_proxmenux_HOST_ed25519, затем использует sshpass для проверки входа и установки открытого ключа в ~borg/.ssh/authorized_keys. Пароль принадлежит учётной записи с правом записи в этот файл — обычно root или пользователю borg. Он используется при настройке и не сохраняется." + }, + { + "mode": "generate-manual", + "label": "Без пароля администратора на этом хосте", + "detail": "ProxMenux создаёт пару ключей, как описано выше, но выводит полную строку authorized_keys, чтобы пользователь вручную вставил её на сервере. Пароль администратора никогда не покидает хост ProxMenux, поскольку он вообще не запрашивается." + }, + { + "mode": "generate-pct", + "label": "Сервер Borg — PVE LXC", + "detail": "Сервер Borg работает внутри LXC на узле PVE. ProxMenux разрешает использование ключа через pct exec с хоста PVE — root на хосте PVE выполняет запись в ~borg/.ssh/authorized_keys внутри LXC без необходимости подключения по SSH непосредственно к LXC." + }, + { + "mode": "existing", + "label": "Использовать существующий ключ", + "detail": "ProxMenux ищет в /root/.ssh/ и $HOME/.ssh/ распознаваемые закрытые ключи ed25519/RSA и выводит их список. Пользователь выбирает один из них или вручную указывает нестандартный путь." + }, + { + "mode": "none", + "label": "Конфигурация SSH по умолчанию", + "detail": "Без отдельного ключа — Borg использует конфигурацию SSH хоста по умолчанию (обычно ~/.ssh/id_rsa или агент SSH)." + } + ], + "restrictTitle": "Строка authorized_keys", + "restrictBody": "Для каждого созданного ключа строка authorized_keys, которую ProxMenux записывает на сервере, ограничивает использование ключа единственным вызовом borg-serve для настроенного пути к репозиторию:", + "restrictLine": "command=\"/usr/bin/borg serve --restrict-to-path RPATH\",restrict PUBKEY", + "restrictNote": "command= принудительно ограничивает каждый сеанс SSH с этим ключом выполнением только указанной команды borg-serve; restrict отключает перенаправление портов, перенаправление агента, перенаправление X11 и выделение PTY. Ключ нельзя использовать для открытия интерактивной оболочки на сервере или доступа к любому другому пути репозитория, даже если учётная запись имеет более широкие права." + }, + "savedTargets": { + "heading": "Сохранённые назначения", + "intro": "Сохранённое назначение хранит конфигурацию репозитория под понятным именем, чтобы не приходилось повторно вводить данные. Структура хранения в каталоге состояния ProxMenux:", + "rows": [ + { + "file": "borg-targets.txt", + "content": "Одна строка на назначение: NAME|REPO|SSH_KEY_PATH|ENCRYPT_MODE. Считывается hb_collect_borg_configs для заполнения меню выбора назначения." + }, + { + "file": "borg-pass-NAME.txt", + "content": "Парольная фраза для назначения с указанным выше именем NAME (chmod 600). Присутствует только в том случае, если пользователь выбрал шифрование repokey." + } + ], + "outro": "Сохранять назначение необязательно. При отказе от сохранения конфигурация именованного назначения не сохраняется, но созданный ключ SSH не удаляется. Если шифрование repokey включено без сохранённого назначения, ProxMenux всё равно сохраняет парольную фразу в устаревшем файле borg-pass.txt." + }, + "encryption": { + "heading": "Шифрование", + "body": "При инициализации репозиториев через hb_borg_init_if_needed задаётся режим шифрования: современный borg repo-create -e MODE, если он доступен, или устаревший borg init --encryption=MODE. ProxMenux предлагает два режима: repokey (по умолчанию) и none. В режиме repokey Borg хранит ключ шифрования в самом репозитории; для доступа требуется парольная фраза, которую ProxMenux запрашивает дважды, проверяя совпадение, и сохраняет в borg-pass-NAME.txt для сохранённых целей (или в устаревшем файле, описанном выше). После сохранения парольной фразы отображается диалоговое окно с обязательным подтверждением: парольная фраза — единственный способ получить доступ к зашифрованным архивам, и её утрата делает восстановление любого архива в репозитории невозможным." + }, + "runtimeEnv": { + "heading": "Среда выполнения", + "intro": "ProxMenux экспортирует следующие переменные окружения перед вызовом borg. Они настраивают подключение и разблокируют репозиторий без передачи секретных данных в командной строке.", + "rows": [ + { + "var": "BORG_RSH", + "value": "ssh -i SSH_KEY_PATH -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new [-p PORT]", + "purpose": "Команда удалённой оболочки, которую Borg использует для репозиториев SSH. При выборе ключа добавляются параметры идентификации. При первом добавлении цели с нестандартным портом ProxMenux также добавляет -p PORT; для сохранённых целей, запланированных заданий и Monitor вместо этого используется порт из URL вида ssh://. Если пользовательский ключ не задан и новая цель добавляется со стандартным портом, переменная не устанавливается, поэтому Borg использует конфигурацию SSH хоста по умолчанию." + }, + { + "var": "BORG_PASSPHRASE", + "value": "(парольная фраза из borg-pass-NAME.txt)", + "purpose": "Разблокирует ключ repokey. Устанавливается только в том случае, если цель использует шифрование repokey. Никогда не появляется в списке аргументов процесса." + }, + { + "var": "BORG_ENCRYPT_MODE", + "value": "repokey | none", + "purpose": "Используется hb_borg_init_if_needed при инициализации ещё не существующего репозитория. Игнорируется borg create для существующих репозиториев." + }, + { + "var": "BORG_RELOCATED_REPO_ACCESS_IS_OK", + "value": "yes", + "purpose": "Подавляет интерактивный запрос подтверждения, который Borg выводит, если URL репозитория отличается от URL, по которому к нему обращались изначально (часто после переименования точки монтирования или при доступе к хосту SSH по новому адресу)." + }, + { + "var": "BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK", + "value": "yes", + "purpose": "Подавляет интерактивный запрос подтверждения, который Borg выводит при первом обращении к незашифрованному репозиторию с нового клиента." + } + ] + }, + "archiveFormat": { + "heading": "Именование и хранение архивов", + "intro": "При каждом резервном копировании в репозитории создаётся новый архив.", + "namePattern": "hostcfg-HOSTNAME-YYYYMMDD_HHMMSS", + "retentionBody": "Для запланированных заданий run_scheduled_backup.sh после каждого успешного резервного копирования выполняет borg prune для репозитория с параметрами хранения, настроенными в задании (--keep-last, --keep-daily, --keep-weekly). При интерактивном резервном копировании удаление архивов по политике хранения не выполняется." + }, + "restoreAccess": { + "heading": "Получение архивов для восстановления", + "body": "В процессе восстановления список архивов получается с помощью borg list REPO, а выбранный архив извлекается с помощью borg extract REPO::ARCHIVE-NAME в промежуточный каталог, который _rs_check_layout передаёт стандартному конвейеру восстановления. Для получения архивов вручную вне ProxMenux используются те же команды; извлечённое дерево каталогов имеет стандартную структуру из трёх наборов данных, описанную в разделе Как это работает." + }, + "references": { + "heading": "Справочные материалы", + "intro": "Официальная документация Borg по компонентам, которые использует ProxMenux.", + "items": [ + { + "label": "Документация Borg", + "href": "https://borgbackup.readthedocs.io/", + "tail": " — основной раздел документации, охватывающий концепции, развёртывание, быстрый старт и все команды." + }, + { + "label": "borg create", + "href": "https://borgbackup.readthedocs.io/en/stable/usage/create.html", + "tail": " — команда, которую ProxMenux вызывает при каждом резервном копировании, со всеми поддерживаемыми флагами." + }, + { + "label": "Шифрование репозитория", + "href": "https://borgbackup.readthedocs.io/en/stable/usage/init.html#encryption-mode", + "tail": " — режимы шифрования, поддерживаемые Borg, включая repokey, который ProxMenux использует по умолчанию." + }, + { + "label": "Развёртывание borg serve и SSH", + "href": "https://borgbackup.readthedocs.io/en/stable/deployment/central-backup-server.html", + "tail": " — настройка центрального сервера Borg с доступом через SSH, включая команду borg-serve и флаг restrict-to-path, который ProxMenux записывает в authorized_keys." + }, + { + "label": "borg prune", + "href": "https://borgbackup.readthedocs.io/en/stable/usage/prune.html", + "tail": " — модель хранения резервных копий, лежащая в основе --keep-last / --keep-daily / --keep-weekly, которую ProxMenux применяет к каждому заданию по расписанию." + } + ] + } +} diff --git a/web/messages/ru/docs/backup-restore/destinations/index.json b/web/messages/ru/docs/backup-restore/destinations/index.json new file mode 100644 index 00000000..cc0e9a3a --- /dev/null +++ b/web/messages/ru/docs/backup-restore/destinations/index.json @@ -0,0 +1,110 @@ +{ + "meta": { + "title": "Места назначения резервных копий — локальное хранение, Proxmox Backup Server, Borg | ProxMenux", + "description": "Три механизма хранения получают одни и те же данные резервной копии ProxMenux: локальный архив .tar.zst в любой файловой системе, доступной для записи, резервную копию PBS в хранилище данных Proxmox Backup Server или архив Borg в локальном либо удалённом репозитории Borg. Каждый механизм имеет свои особенности сжатия, дедупликации, шифрования и работы с сетью.", + "ogTitle": "Места назначения резервных копий ProxMenux", + "ogDescription": "Локальное хранение, Proxmox Backup Server и Borg — три механизма хранения одних и тех же данных резервной копии хоста.", + "twitterTitle": "Места назначения резервных копий ProxMenux | ProxMenux", + "twitterDescription": "Локальный архив, Proxmox Backup Server и Borg для хранения резервных копий хоста." + }, + "header": { + "title": "Места хранения", + "description": "Три механизма хранения, поддерживаемые ProxMenux Backup: локальный архив, Proxmox Backup Server (рекомендуется) и Borg. Каждый получает один и тот же архив из трёх компонентов; они различаются форматом хранения, дедупликацией, моделью шифрования и требованиями к сети.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "title": "Одни и те же данные, три механизма хранения", + "body": "При каждом резервном копировании создаются одни и те же три компонента (rootfs, манифест, приложения). Места назначения различаются способом хранения этих компонентов и тем, как оператор получает их для восстановления. Каждый механизм хранения реализован отдельной функцией в backup_host.sh — _bk_local, _bk_pbs, _bk_borg, — но все три используют один и тот же этап подготовки (hb_prepare_staging) и один и тот же код восстановления. Выбор места назначения влияет только на запись и получение данных; он не меняет ни действия при восстановлении, ни способ использования архива." + }, + "comparison": { + "heading": "Сравнение возможностей", + "intro": "В следующей таблице перечислены конкретные различия между тремя механизмами хранения в их текущей реализации в ProxMenux. Все значения описывают наблюдаемое поведение самого механизма хранения, а не рекомендации авторов документации.", + "rows": [ + { + "feature": "Формат хранения", + "local": "Один файл .tar.zst (или .tar.gz, если zstd отсутствует).", + "pbs": "Резервная копия PBS (блоки .pxar в хранилище данных).", + "borg": "Архив Borg в репозитории Borg (файлы сегментов)." + }, + { + "feature": "Сжатие", + "local": "zstd (уровень по умолчанию) через tar --zstd. Резервный вариант — gzip.", + "pbs": "Управляется proxmox-backup-client. ProxMenux не переопределяет настройки сжатия.", + "borg": "Встроенное сжатие Borg. ProxMenux вызывает borg create, не переопределяя настройки сжатия." + }, + { + "feature": "Дедупликация", + "local": "Отсутствует. Каждая резервная копия представляет собой полный независимый архив.", + "pbs": "Полная дедупликация на уровне блоков данных между всеми резервными копиями в хранилище данных.", + "borg": "Полная дедупликация на уровне блоков данных между всеми архивами в репозитории." + }, + { + "feature": "Шифрование хранимых данных", + "local": "Отсутствует (защита обеспечивается на уровне файловой системы).", + "pbs": "Необязательное шифрование на стороне клиента с использованием файла ключа. При включении данные для восстановления загружаются как отдельная группа резервных копий.", + "borg": "Необязательное шифрование repokey (ключ хранится в репозитории и разблокируется парольной фразой)." + }, + { + "feature": "Политика хранения / удаление устаревших копий", + "local": "Применяется отдельно для каждого задания по расписанию через KEEP_LAST. Старые архивы удаляются вместе с соответствующими сопутствующими файлами и журналами выполнения. При интерактивном создании резервных копий устаревшие копии не удаляются.", + "pbs": "Применяется отдельно для каждого задания по расписанию через proxmox-backup-client prune --keep-last / --keep-daily / --keep-weekly. При интерактивном создании резервных копий устаревшие копии не удаляются.", + "borg": "Применяется отдельно для каждого задания по расписанию через borg prune --keep-last / --keep-daily / --keep-weekly. При интерактивном создании резервных копий устаревшие копии не удаляются." + }, + { + "feature": "Сеть", + "local": "Не требуется. Запись выполняется в локальную точку монтирования (обычно на внутренний диск или USB-накопитель).", + "pbs": "Подключение по TCP к серверу PBS (порт по умолчанию — 8007). Требуются учётные данные PBS и отпечаток сертификата.", + "borg": "Путь в локальной файловой системе или туннель SSH к удалённому узлу Borg." + }, + { + "feature": "Зависимости", + "local": "tar, zstd (установлены в Proxmox по умолчанию).", + "pbs": "Пакет proxmox-backup-client (входит в состав Proxmox VE версии 8 и выше).", + "borg": "Исполняемый файл borg. При отсутствии автоматически устанавливается с помощью ProxMenux из комплекта AppImage Monitor." + }, + { + "feature": "Доступ для восстановления", + "local": "Архив можно распаковать на любом узле с tar+zstd. PBS/Borg не требуются.", + "pbs": "Требуются proxmox-backup-client, учётные данные PBS и файл ключа (если используется шифрование).", + "borg": "Требуются borg, путь к репозиторию и парольная фраза (если используется шифрование)." + } + ], + "captionCode": "возможность", + "captionLocal": "Локально", + "captionPbs": "Proxmox Backup Server (рекомендуется)", + "captionBorg": "Borg" + }, + "sameArchive": { + "heading": "Структура архива не зависит от места назначения", + "body": "Независимо от места хранения резервная копия всегда содержит три блока, описанные в разделе Как это работает: файловую систему (rootfs/), метаданные (metadata/) и манифест (manifest.json). Распаковка локального архива .tar.zst, восстановление .pxar из PBS и распаковка архива Borg дают одинаковое дерево каталогов. Поэтому при восстановлении всегда читаются одни и те же файлы независимо от того, откуда получена резервная копия." + }, + "extractStandalone": { + "heading": "Распаковка резервной копии без ProxMenux", + "intro": "Любой из трёх форматов архивов можно прочитать стандартными средствами, не устанавливая ProxMenux на хост, где выполняется чтение. Приведённые ниже команды создают то же дерево каталогов, которое используется внутри процесса восстановления.", + "localCmd": "# From a local .tar.zst archive:\ntar --zstd -xf hostcfg-HOST-TIMESTAMP.tar.zst\n\n# From a .tar.gz fallback:\ntar -xzf hostcfg-HOST-TIMESTAMP.tar.gz", + "pbsCmd": "# From a PBS backup (requires proxmox-backup-client):\nproxmox-backup-client restore \\\n --repository USER@REALM@HOST:DATASTORE \\\n host/hostcfg-HOST/BACKUP-TIME \\\n hostcfg.pxar /tmp/hostcfg\n\n# Add --keyfile KEY-PATH when the backup is encrypted.", + "borgCmd": "# From a Borg archive (requires borg binary + passphrase for encrypted repos):\nborg extract REPO-PATH::ARCHIVE-NAME\n\n# On a remote SSH-served repo:\nborg extract ssh://USER@HOST:PORT/REPO-PATH::ARCHIVE-NAME", + "note": "Полученное дерево каталогов можно затем изучить вручную или использовать для ручного восстановления. Точная последовательность получения данных, которую ProxMenux использует внутри процесса восстановления, описана на страницах отдельных мест назначения." + }, + "whereNext": { + "heading": "Подробности для каждого места назначения", + "intro": "Для каждого места назначения есть отдельная страница с описанием настройки, формата хранения на диске и команды получения данных, используемой при восстановлении.", + "items": [ + { + "label": "Локальный архив", + "href": "/docs/backup-restore/destinations/local", + "tail": " — предварительная настройка локального места назначения, монтирование USB-накопителя, защита от записи архива внутрь самого себя и сопутствующий JSON-файл, позволяющий Monitor распознать файл." + }, + { + "label": "Proxmox Backup Server (рекомендуется)", + "href": "/docs/backup-restore/destinations/pbs", + "tail": " — выбор хранилища данных, учётные данные и отпечаток, жизненный цикл файла ключа шифрования, парольная фраза восстановления и загрузка блока данных восстановления в PBS для восстановления после чистой установки." + }, + { + "label": "Borg", + "href": "/docs/backup-restore/destinations/borg", + "tail": " — локальные репозитории и репозитории, обслуживаемые через SSH, источники исполняемого файла Borg (система / кэш / комплект AppImage Monitor / загрузка GitHub), инициализация репозитория, работа с парольной фразой и настройка ключа SSH для удалённых репозиториев." + } + ] + } +} diff --git a/web/messages/ru/docs/backup-restore/destinations/local.json b/web/messages/ru/docs/backup-restore/destinations/local.json new file mode 100644 index 00000000..6ea95edf --- /dev/null +++ b/web/messages/ru/docs/backup-restore/destinations/local.json @@ -0,0 +1,75 @@ +{ + "meta": { + "title": "Локальное место назначения для архивов — tar.zst в файловой системе или на USB-накопителе | ProxMenux", + "description": "Локальное место назначения резервных копий позволяет записать один архив .tar.zst в любой каталог, доступный для записи: на внутреннем диске, в точке монтирования Proxmox, на общем ресурсе NFS или на USB-накопителе. Описаны процесс настройки, логика обнаружения и монтирования USB-накопителей, защита от записи архива в каталог, включённый в резервную копию, и сопутствующий JSON-файл для идентификации архива.", + "ogTitle": "Резервное копирование ProxMenux — локальное место назначения для архивов", + "ogDescription": "Как ProxMenux записывает локальные резервные копии в виде архивов .tar.zst и как настроить целевой каталог или USB-накопитель.", + "twitterTitle": "Локальное место назначения резервных копий | ProxMenux", + "twitterDescription": "Как ProxMenux записывает локальные резервные копии в виде архивов .tar.zst в файловой системе или на USB-накопителе." + }, + "header": { + "title": "Локальный архив", + "description": "При выборе локального места назначения один сжатый tar-архив записывается в любой доступный для записи каталог на хосте: на внутреннем диске, в точке монтирования NFS или SMB либо на USB-накопителе.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "title": "Один самодостаточный файл", + "body": "Локальное резервное копирование создаёт один файл hostcfg-HOST-TIMESTAMP.tar.zst (или .tar.gz, если zstd отсутствует). Файл содержит всё дерево архива — manifest.json, metadata/ и rootfs/. Его можно восстановить на любом хосте Proxmox с помощью процедуры восстановления ProxMenux или распаковать вручную с помощью tar --zstd -xf в любой системе Linux. Не нужны ни сервер, ни инициализация репозитория, ни внешние зависимости. Это место назначения обеспечивает самый короткий путь к восстановлению, когда недоступны ни PBS, ни Borg." + }, + "targetConfig": { + "heading": "Настройка целевого каталога", + "intro": "Локальное место назначения — это один целевой каталог, сохраняемый в настройках, а не список. ProxMenux сохраняет выбор пользователя в /usr/local/share/proxmenux/local-target.conf и считывает его при каждом резервном копировании. Если место назначения не настроено, используется значение по умолчанию HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump (тот же каталог, в который Proxmox сохраняет результаты собственных операций vzdump). Место назначения настраивается через Настройка мест назначения резервных копий → Локальные места назначения для архивов → Управление локальным местом назначения резервных копий:", + "options": [ + "Использовать значение по умолчанию (/var/lib/vz/dump). Локальное хранилище Proxmox. Присутствует в каждой установке Proxmox; архив размещается рядом с результатами vzdump и автоматически отображается на вкладке резервных копий Monitor.", + "Использовать свой путь. Можно указать любой абсолютный путь в файловой системе: точку монтирования NFS, общий ресурс SMB, смонтированный через fstab, отдельный набор данных ZFS или второй внутренний диск. Перед сохранением ProxMenux проверяет, что путь существует и является каталогом.", + "Использовать USB-диск. Открывает подменю USB (см. ниже), которое обнаруживает съёмные устройства и предлагает смонтировать или отформатировать одно из них." + ] + }, + "usbFlow": { + "heading": "Обнаружение и монтирование USB-накопителей", + "intro": "В подменю USB перечислены разделы на съёмных устройствах, о которых сообщает lsblk. Для каждого раздела указаны размер, метка файловой системы и текущее состояние. От состояния зависит, какое действие предлагает ProxMenux.", + "statesTitle": "Три состояния устройства", + "stateRows": [ + { + "state": "смонтирован", + "shown": "Размер · метка · [fstype] · → /mount/point", + "action": "Раздел уже смонтирован. При его выборе текущая точка монтирования сохраняется как локальное место назначения. Монтирование не выполняется." + }, + { + "state": "не смонтирован", + "shown": "Размер · метка · [fstype] · (не смонтирован — будет смонтирован)", + "action": "Файловая система есть, но она не смонтирована. После подтверждения ProxMenux запускает hb_mount_usb_partition: создаёт /mnt/proxmenux-backup-LABEL (если метки нет, используется UUID или имя устройства), монтирует раздел и сохраняет точку монтирования как локальное место назначения." + }, + { + "state": "пустой", + "shown": "Размер · USB-диск без файловой системы (будет ОТФОРМАТИРОВАН)", + "action": "На устройстве нет файловой системы. Этот вариант приводит к удалению данных и требует двух подтверждений. Сначала диалог «Да/Нет» предупреждает, что операция сотрёт данные на диске. Затем в окне ввода пользователь должен ввести точный путь к устройству (например, /dev/sdb), и только после этого ProxMenux создаёт новую таблицу разделов GPT с разделом ext4 и монтирует его." + } + ], + "notMountedFallback": "Если USB-устройства не обнаружены, вместо подменю открывается обычное окно ввода. Пользователь может ввести произвольный путь к точке монтирования; если этот путь не является зарегистрированной точкой монтирования, перед продолжением появляется диалог подтверждения с предупреждением." + }, + "safetyCheck": { + "heading": "Проверка безопасности — место назначения внутри пути, включённого в резервную копию", + "body": "Перед записью архива _bk_local проверяет, что каталог назначения не находится внутри какого-либо каталога, включённого в резервную копию. Типичная ошибка — добавить /root в профиль и выбрать /root/backups в качестве места назначения: тогда архив будет включать сам себя, что приведёт либо к повреждению архива, либо к его неограниченному росту до заполнения диска. Проверка разрешает оба пути с помощью readlink -m, сравнивает их и при обнаружении конфликта прерывает создание резервной копии. В диалоговом окне указывается конфликтующий путь и перечисляются три способа устранения проблемы: выбрать место назначения вне конфликтующего пути, удалить пользовательскую запись, содержащую место назначения, или в режиме Custom снять отметку с конфликтующего пути для текущего запуска." + }, + "archiveFormat": { + "heading": "Формат архива и сжатие", + "intro": "Имя выходного файла содержит имя исходного узла и временную метку резервной копии, что позволяет упорядочивать несколько архивов в каталоге по времени и определять содержимое каждого файла по его имени.", + "namePattern": "hostcfg-HOSTNAME-YYYYMMDD_HHMMSS.tar.zst", + "compressionTitle": "Сжатие", + "compressionBody": "Основной вариант использует tar --zstd -cf — конвейер, запускаемый одной командой и выполняющий сжатие с уровнем zstd по умолчанию. Если zstd отсутствует на исходном узле (что редко встречается в Proxmox, но возможно при минимальной установке), ProxMenux использует резервный вариант gzip. В этом варианте, если доступен pv, в конвейер добавляется индикатор выполнения, позволяющий пользователю наблюдать за ростом размера архива в реальном времени; без pv используется обычный tar -czf без отображения хода выполнения.", + "sourceTitle": "Что входит в архив", + "sourceBody": "Команда tar вызывается с -C \"$staging_root\" ., что позволяет архивировать весь корневой каталог промежуточной сборки: rootfs/, metadata/ и manifest.json. Все три компонента размещаются рядом на верхнем уровне tar-архива. При распаковке архива получается точно такая же структура каталогов, которую использует код восстановления." + }, + "sidecar": { + "heading": "Сопроводительный файл JSON", + "intro": "При каждом успешном создании локальной резервной копии создаётся сопроводительный файл hostcfg-HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json, который hb_write_archive_sidecar записывает рядом с архивом. Этот небольшой файл JSON позволяет ProxMenux Monitor распознать архив как резервную копию узла ProxMenux, даже если впоследствии архив будет перемещён, переименован или сохранён в другом месте.", + "contentTitle": "Содержимое сопроводительного файла", + "contentBody": "Сопроводительный файл содержит версию схемы, сведения о том, была ли резервная копия создана в интерактивном режиме или заданием по расписанию (kind), идентификатор задания для запусков по расписанию, использованный режим профиля (default или custom), имя исходного узла, исходное имя файла архива без пути, временную метку создания в формате ISO-8601 и размер архива в байтах.", + "whyBody": "Вкладка резервных копий в Monitor сканирует настроенные локальные каталоги в поисках сопроводительных файлов *.proxmenux.json, а не файлов *.tar.zst, поскольку .tar.zst без сопроводительного файла может вообще не быть резервной копией ProxMenux. Сканирование выполняется быстро (JSON-файлы очень малы), а связь между файлами сохраняется при переименовании архива, если сопроводительный файл переименован соответственно." + }, + "restoreAccess": { + "heading": "Восстановление из локального архива", + "body": "При восстановлении ProxMenux обнаруживает локальные архивы, сканируя настроенное локальное место назначения в поисках сопроводительных файлов, и показывает их в списке архивов. При выборе архива запускается _rs_check_layout: архив tar распаковывается в промежуточный каталог, а перед продолжением проверяется наличие трёх блоков данных. Для ручной распаковки вне ProxMenux команда tar --zstd -xf hostcfg-HOSTNAME-TIMESTAMP.tar.zst -C /tmp/hostcfg создаёт ту же структуру каталогов, которую использует код восстановления." + } +} diff --git a/web/messages/ru/docs/backup-restore/destinations/pbs.json b/web/messages/ru/docs/backup-restore/destinations/pbs.json new file mode 100644 index 00000000..2fc9f518 --- /dev/null +++ b/web/messages/ru/docs/backup-restore/destinations/pbs.json @@ -0,0 +1,113 @@ +{ + "meta": { + "title": "Место назначения Proxmox Backup Server — репозиторий, шифрование, восстановление | ProxMenux", + "description": "В место назначения PBS резервные копии хоста ProxMenux записываются как резервные копии PBS. Описаны автоматическое обнаружение репозиториев из /etc/pve/storage.cfg, ручная настройка PBS, команда загрузки .pxar, модель шифрования на стороне клиента с файлом ключа и необязательным сохранением его резервной копии, зашифрованной парольной фразой, а также восстановление файла ключа из нескольких источников на новом хосте.", + "ogTitle": "Резервное копирование ProxMenux — место назначения Proxmox Backup Server", + "ogDescription": "Как ProxMenux записывает резервные копии хоста в Proxmox Backup Server с шифрованием на стороне клиента с помощью файла ключа и сохранением резервной копии ключа для восстановления.", + "twitterTitle": "Место назначения резервных копий PBS | ProxMenux", + "twitterDescription": "Место назначения Proxmox Backup Server с шифрованием с помощью файла ключа и сохранением резервной копии ключа, защищённой парольной фразой для восстановления." + }, + "header": { + "title": "Proxmox Backup Server", + "description": "В место назначения PBS корневой промежуточный каталог загружается как одна резервная копия .pxar в хранилище данных Proxmox Backup Server. При необходимости можно включить шифрование на стороне клиента с помощью файла ключа и загрузку рядом с каждой резервной копией резервного файла ключа, зашифрованного парольной фразой.", + "section": "Резервное копирование и восстановление" + }, + "recommendedBadge": "Рекомендуемое место назначения", + "aboutPbs": { + "heading": "Что такое Proxmox Backup Server", + "body": "Proxmox Backup Server (PBS) — собственный сервер резервного копирования Proxmox, который разрабатывает и поддерживает та же команда, что и Proxmox VE. Это специализированный сервер для приёма резервных копий с хостов Proxmox VE (виртуальных машин, контейнеров LXC и, через proxmox-backup-client, произвольных каталогов хоста) с дедупликацией на уровне блоков, шифрованием на стороне клиента и политиками хранения, применяемыми на стороне сервера. ProxMenux использует PBS как одно из трёх мест назначения для резервных копий хоста; все описанные на этой странице механизмы, специфичные для PBS (группы резервных копий, архивы .pxar, --backup-id, шифрование с помощью файла ключа), являются стандартными возможностями PBS." + }, + "intro": { + "title": "Одна резервная копия за запуск, дедупликация на уровне блоков", + "body": "При резервном копировании PBS в хранилище данных создаётся одна запись резервной копии в группе с идентификатором резервного копирования host/hostcfg-HOSTNAME/BACKUP-TIME. Данные представляют собой архив .pxar с той же структурой из трёх блоков, которая описана в разделе Как это работает. PBS выполняет дедупликацию на уровне блоков для всех резервных копий в хранилище данных, поэтому при последующем резервном копировании того же хоста передаются и сохраняются только изменившиеся блоки. Для заданий по расписанию правила хранения применяет сам ProxMenux: после каждого успешного выполнения run_scheduled_backup.sh запускает proxmox-backup-client prune с --keep-last / --keep-daily / --keep-weekly, используя значения, настроенные в задании." + }, + "repoSelection": { + "heading": "Выбор репозитория", + "intro": "При каждом резервном копировании ProxMenux обнаруживает репозитории PBS из двух источников. Пользователь выбирает один из них в общем меню; для текущего запуска этот выбор определяет сервер и хранилище данных, в которые отправляется резервная копия, пароль для аутентификации и отпечаток для проверки сертификата.", + "sourceRows": [ + { + "source": "Proxmox storage.cfg (автоматическое обнаружение)", + "path": "/etc/pve/storage.cfg + /etc/pve/priv/storage/NAME.pw", + "content": "Любая секция pbs: в собственной конфигурации хранилищ Proxmox обнаруживается автоматически. Сервер, хранилище данных, имя пользователя и отпечаток берутся из этой секции. Пароль считывается из собственного каталога учётных данных Proxmox. На стороне ProxMenux повторный ввод не требуется: репозиторий становится доступен сразу после его настройки в Proxmox." + }, + { + "source": "Ручная настройка ProxMenux", + "path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt", + "content": "Добавляется через Настроить места назначения резервных копий → Места назначения Proxmox Backup Server (PBS) → + Добавить новый PBS вручную. Запрашиваются название, имя пользователя (root@pam или user@pbs!token), хост или IP-адрес, хранилище данных и пароль. Если пароль не введён, запрос повторяется: иначе пустой пароль сохранился бы без предупреждения и каждое последующее резервное копирование завершалось бы с непонятной ошибкой аутентификации. Этот способ используется, если целевой PBS не зарегистрирован в Proxmox как хранилище." + } + ], + "menuTitle": "Меню выбора", + "menuBody": "Оба источника отображаются в одном меню, а каждая строка помечена в соответствии с её источником ([proxmox] или [manual]). Записи, для которых не удалось определить пароль, отмечены предупреждением ⚠ no password — при выборе такой записи перед началом резервного копирования потребуется повторно ввести пароль. Отпечаток передаётся в proxmox-backup-client через переменную окружения PBS_FINGERPRINT; если он отсутствует, при первом резервном копировании клиент интерактивно запрашивает у пользователя подтверждение принятия сертификата сервера." + }, + "backupCommand": { + "heading": "Команда резервного копирования", + "intro": "Загрузка выполняется одним вызовом proxmox-backup-client backup. ProxMenux использует env для передачи клиенту пароля, пароля шифрования и отпечатка через переменные окружения.", + "cmd": "env \\\n PBS_PASSWORD=\"$HB_PBS_SECRET\" \\\n PBS_ENCRYPTION_PASSWORD=\"$HB_PBS_ENC_PASS\" \\\n PBS_FINGERPRINT=\"$HB_PBS_FINGERPRINT\" \\\n proxmox-backup-client backup \\\n hostcfg.pxar:$staging_root \\\n --repository USER@REALM@HOST:DATASTORE \\\n --backup-type host \\\n --backup-id hostcfg-HOSTNAME \\\n --backup-time BACKUP-EPOCH \\\n [--keyfile /usr/local/share/proxmenux/pbs-key.conf]", + "backupIdTitle": "Именование идентификаторов резервных копий", + "backupIdBody": "Идентификатор резервной копии по умолчанию — hostcfg-HOSTNAME. Перед загрузкой пользователю предлагается подтвердить или изменить его; все символы, не входящие в [A-Za-z0-9_-], удаляются, как и дефисы в конце. Повторное использование одного и того же идентификатора при разных запусках предусмотрено намеренно — PBS рассматривает идентификатор как группу, и каждая последующая резервная копия появляется как новая копия внутри этой группы с дедупликацией данных относительно предыдущих запусков.", + "pxarTitle": "Почему источником служит весь корневой каталог подготовки", + "pxarBody": "Архив .pxar содержит весь рабочий каталог: файловую систему хоста (rootfs/), метаданные (metadata/) и манифест (manifest.json). При восстановлении ProxMenux сравнивает манифест с целевым хостом, чтобы определить, соответствует ли хост исходному состоянию, изменилось ли оборудование или это другая машина, и соответствующим образом корректирует процесс. Старые резервные копии, созданные более ранними версиями ProxMenux и содержащие только файловую систему, также восстанавливаются корректно: при восстановлении устаревший формат распознаётся, а его структура автоматически преобразуется." + }, + "encryption": { + "heading": "Шифрование на стороне клиента", + "glossaryHint": "В этом разделе используются термины файл ключа, парольная фраза и конверт восстановления. В глоссарии различия между ними кратко описаны одним предложением для каждого термина.", + "intro": "Шифрование на стороне клиента с использованием файла ключа в PBS шифрует блоки данных на исходном хосте до загрузки. В ProxMenux шифрование необязательно; если оно включено, пользователь при настройке явно выбирает «да» или «нет»: следует ли также загрузить в PBS копию файла ключа, защищённую парольной фразой, для резервного хранения на случай восстановления (позже этот выбор можно изменить в Monitor). Сам файл ключа всегда хранится на хосте по одному каноническому пути — /usr/local/share/proxmenux/pbs-key.conf — и автоматически используется при каждом последующем резервном копировании с шифрованием без дополнительных запросов.", + "keyfileTitle": "Настройка файла ключа", + "keyfileBody": "Диалог настройки шифрования появляется при первом резервном копировании с шифрованием на хосте. На первом шаге задаётся вопрос, нужно ли шифровать резервную копию: Нет — продолжить без шифрования; Да — перейти ко второму шагу. Второй шаг зависит от того, установлен ли уже файл ключа по пути /usr/local/share/proxmenux/pbs-key.conf. Если установлен, он используется без дополнительных запросов, и резервное копирование продолжается — при последующих резервных копированиях этот вопрос больше не задаётся. Если нет, меню с двумя вариантами предлагает выбрать способ настройки. Создать новый файл ключа запускает proxmox-backup-client key create --kdf none. Использовать существующий файл ключа автоматически обнаруживает файл ключа, управляемый PVE: если выбранный репозиторий PBS зарегистрирован в Proxmox с ключом шифрования по пути /etc/pve/priv/storage/<NAME>.enc, этот файл без дополнительных запросов копируется в каноническое расположение ProxMenux, после чего процесс продолжается. Если для репозитория не найден подходящий файл ключа, управляемый PVE, пользователю предлагается ввести абсолютный путь, по которому он уже разместил файл ключа на этом хосте. В обоих случаях файл помещается в каноническое расположение с chmod 600.", + "modesTitle": "Отдельный файл ключа для каждого хоста или общий файл ключа", + "modesIntro": "Поддерживаются обе модели работы, ни одна из них не является обязательной — пользователь выбирает подходящую в зависимости от организации своего парка хостов.", + "modesPerHostTitle": "Отдельный файл ключа для каждого хоста (по умолчанию)", + "modesPerHostBody": "Каждый хост создаёт собственный файл ключа при первом включении шифрования PBS. Это обеспечивает максимальную изоляцию: компрометация файла ключа одного хоста не раскрывает резервные копии других хостов. Рекомендуется для парков хостов в производственной среде, а также для сред, где у хостов разные владельцы или к ним применяются разные нормативные требования.", + "modesSharedTitle": "Общий файл ключа (импорт на каждом хосте)", + "modesSharedBody": "Один главный файл ключа создаётся один раз и устанавливается на каждый хост с помощью параметра Использовать существующий файл ключа. Управление проще: нужно защищать только один секрет, а любой хост может расшифровать архивы любого другого хоста (это полезно для консолидации, учебного восстановления на другом хосте или централизованной проверки резервных копий). Обратная сторона — утечка общего файла ключа ставит под угрозу сразу все хосты. Рекомендуется для домашних лабораторий и инфраструктур, в которых у всех хостов один владелец и общая граница доверия.", + "recoveryTitle": "Загрузка ключа в PBS — решение принимает пользователь", + "recoveryBody": "Сразу после выбора файла ключа ProxMenux задаёт один явный вопрос — Загрузить ключ в PBS? — с двумя вариантами ответа. Никакие данные для восстановления не загружаются в PBS, пока оператор не ответит «Да». По умолчанию выбран вариант Нет, хранить только локально: файл ключа остаётся по каноническому локальному пути, ProxMenux не загружает никаких данных для восстановления в PBS, а оператор самостоятельно обеспечивает хранение копии за пределами площадки (кнопка Скачать файл ключа в строке назначения PBS в Monitor позволяет скачать его по запросу). При выборе Да, загрузить появляется запрос парольной фразы для восстановления — её нужно ввести дважды, с проверкой совпадения. Затем ProxMenux шифрует файл ключа с использованием этой парольной фразы, AES-256-CBC и PBKDF2 (600 000 итераций, случайная соль), создавая pbs-key.recovery.enc. При каждом последующем создании зашифрованной резервной копии этот зашифрованный файл загружается в PBS как парная группа резервных копий. Ни парольная фраза, ни незашифрованная копия файла ключа не отправляются в PBS при этих загрузках. Этот выбор можно изменить позднее в Monitor в любое время: переключатель депонирования ключа непосредственно в строке назначения PBS меняет значение «Да»/«Нет», и изменение применяется немедленно («Начать загрузку», «Прекратить загрузку» или «Обновить парольную фразу» — в зависимости от текущего состояния).", + "blobUploadTitle": "Парная группа резервных копий в PBS", + "blobUploadBody1": "Если выбран ответ Да, загрузить, ProxMenux после каждого создания зашифрованной резервной копии загружает зашифрованный контейнер для восстановления в PBS как вторую, парную группу резервных копий с тем же именем, что и у группы хоста, но с окончанием -keyrecovery. В списке хранилища данных эти две группы расположены рядом: одна содержит резервные копии хоста, другая — зашифрованные контейнеры для восстановления. Контейнер никогда не покидает хост в незашифрованном виде: шифрование с помощью AES-256-CBC и PBKDF2 выполняется на самом хосте до передачи любых данных по сети (openssl enc -aes-256-cbc -pbkdf2 -iter 600000 -salt). PBS получает только уже зашифрованный контейнер.", + "envelopeSecurityTitle": "Представляет ли загрузка файла keyrecovery в PBS угрозу безопасности?", + "envelopeSecurityBody": "Файл keyrecovery зашифрован как при передаче, так и при хранении. Парольная фраза для восстановления никогда не покидает хост: шифрование выполняется локально до загрузки, и PBS получает только уже зашифрованный результат. Администратор PBS или любой другой пользователь с доступом к хранилищу данных может скачать файл keyrecovery, но без парольной фразы для восстановления не сможет прочитать содержащийся в нём файл ключа: это недоступный для чтения шифротекст. Для восстановления файла ключа нужны одновременно обе составляющие — файл keyrecovery и парольная фраза, и только пользователь располагает ими обеими.", + "blobUploadConstraintTitle": "Почему используются две группы вместо одной зашифрованной", + "blobUploadConstraintBody": "Один вызов proxmox-backup-client backup либо шифрует все свои архивы одним и тем же файлом ключа, либо не шифрует ни одного — промежуточного варианта нет. Резервная копия хоста должна быть зашифрована с помощью файла ключа хоста, но зашифрованный контейнер для восстановления нельзя включить в ту же загрузку: тогда он оказался бы зашифрован тем самым файлом ключа, который в нём содержится. На хосте с только что переустановленной системой открыть его было бы невозможно (для расшифровки файла ключа потребовался бы сам файл ключа). Поэтому эти два объекта загружаются независимо и отображаются как две отдельные группы: резервная копия хоста шифруется клиентом PBS с помощью файла ключа, а контейнер для восстановления шифруется ProxMenux с помощью парольной фразы перед загрузкой. Два разных уровня шифрования защищают два разных объекта.", + "blobUploadImageAlt": "Интерфейс PBS, в котором группы резервных копий hostcfg-HOSTNAME и hostcfg-HOSTNAME-keyrecovery расположены рядом в списке хранилища данных.", + "blobUploadImageCaption": "Интерфейс PBS — парные группы резервных копий. Основная группа содержит резервные копии хоста, а группа -keyrecovery — файл ключа, зашифрованный с помощью парольной фразы.", + "recoverTitle": "Восстановление на новом хосте", + "recoverBody": "Если локальный файл ключа отсутствует по каноническому пути — на только что переустановленном хосте или после явного удаления, — процедура восстановления поочерёдно проверяет три источника и останавливается на первом, из которого удаётся получить пригодный файл ключа. Сначала, если для выбранного репозитория PBS по пути /etc/pve/priv/storage/<NAME>.enc имеется соответствующий файл ключа под управлением PVE, этот файл копируется по каноническому пути без дополнительных запросов. Затем, если на PBS доступна группа -keyrecovery, загружается самый новый снимок, а у пользователя запрашивается парольная фраза восстановления для его расшифровки. Наконец, если ни один из этих вариантов не сработал или пользователь от них отказался, предлагается ввести абсолютный путь к файлу ключа на этом хосте, после чего файл копируется по каноническому пути. В Monitor та же процедура импорта доступна непосредственно в модальном окне сведений о резервной копии: в верхней части окна появляется панель янтарного цвета, если для действий «Восстановить», «Скачать» или «Просмотреть содержимое» требуется файл ключа, который не установлен. Если файл ключа установлен, но не соответствует ключу, которым зашифрована резервная копия, PBS возвращает ошибку wrong key — manifest's key XX does not match provided key YY; при выполнении тех же трёх действий отображается структурированная панель янтарного цвета с отчётливо выделенным отпечатком требуемого ключа из манифеста, чтобы пользователь мог определить, какой файл ключа нужно импортировать для открытия именно этой резервной копии.", + "monitorManagementTitle": "Управление файлом ключа в Monitor", + "monitorManagementBody": "На странице настройки резервного копирования Monitor отображает элементы управления файлом ключа в каждой строке назначения PBS. В строке доступны три действия: Скачать сохраняет текущий файл ключа через браузер пользователя, Загрузить заменяет установленный файл ключа файлом, предоставленным пользователем (предыдущий файл перезаписывается только после того, как новый файл успешно размещён по нужному пути), а Удалить удаляет файл ключа с хоста. Рядом расположен переключатель для защищённого пакета восстановления: выбор «Да/Нет» для параметра Загружать ключ в PBS?, поле парольной фразы, которое появляется при выборе «Да», и кнопка, зависящая от текущего состояния: Начать загрузку, Остановить загрузку или Обновить парольную фразу. Элементы управления Monitor и диалог в командной оболочке выполняют одни и те же операции, поэтому результат на диске и в PBS одинаков независимо от выбранного способа." + }, + "restoreAccess": { + "heading": "Получение архивов для восстановления", + "body": "Процедура восстановления обнаруживает резервные копии хоста ProxMenux на PBS, получая список групп резервного копирования в настроенном репозитории и фильтруя его по шаблону идентификатора резервной копии. На вкладке «Резервные копии» в Monitor отображается тот же список. При выборе резервной копии запускается proxmox-backup-client restore с теми же репозиторием, паролем и отпечатком (а также --keyfile, если резервная копия зашифрована). При этом .pxar извлекается в промежуточный каталог, содержимое которого _rs_check_layout затем передаёт в стандартный процесс восстановления. Для ручного извлечения вне ProxMenux та же команда извлекает архив по любому пути — полученное дерево каталогов можно просмотреть или использовать для восстановления вручную." + }, + "references": { + "heading": "Справочные материалы", + "intro": "Официальная документация Proxmox Backup Server по компонентам, на которые опирается ProxMenux.", + "items": [ + { + "label": "Документация Proxmox Backup Server", + "href": "https://pbs.proxmox.com/docs/", + "tail": " — основной раздел документации по установке, администрированию, хранению данных, пользователям и ролям." + }, + { + "label": "proxmox-backup-client", + "href": "https://pbs.proxmox.com/docs/backup-client.html", + "tail": " — инструмент командной строки, который ProxMenux вызывает при каждом резервном копировании и восстановлении. Описывает идентификаторы и типы резервных копий, архивы, синтаксис репозиториев и переменные окружения." + }, + { + "label": "Шифрование на стороне клиента", + "href": "https://pbs.proxmox.com/docs/backup-client.html#encryption", + "tail": " — создание файла ключа, режимы --kdf и модель шифрования, которую ProxMenux дополняет механизмом защищённого хранения ключа с помощью парольной фразы." + }, + { + "label": "Управление хранилищами данных", + "href": "https://pbs.proxmox.com/docs/storage.html", + "tail": " — создание хранилищ данных для резервных копий хостов и управление ими, включая структуру хранилища блоков данных и права доступа." + }, + { + "label": "Удаление устаревших резервных копий и сборка мусора", + "href": "https://pbs.proxmox.com/docs/maintenance.html#pruning", + "tail": " — модель хранения резервных копий, лежащая в основе --keep-last / --keep-daily / --keep-weekly и применяемая ProxMenux к каждому заданию по расписанию, а также описание того, как PBS освобождает блоки данных после удаления устаревших резервных копий." + } + ] + } +} diff --git a/web/messages/ru/docs/backup-restore/glossary.json b/web/messages/ru/docs/backup-restore/glossary.json new file mode 100644 index 00000000..5563bef6 --- /dev/null +++ b/web/messages/ru/docs/backup-restore/glossary.json @@ -0,0 +1,230 @@ +{ + "meta": { + "title": "Глоссарий — резервное копирование и восстановление | ProxMenux", + "description": "Глоссарий терминов и определений для системы резервного копирования и восстановления ProxMenux: шифрование, файл ключа, парольная фраза, защищённый пакет восстановления, PBS, блоки данных, rootfs, манифест, исполнитель заданий и подготовка системы к запуску с другим ядром.", + "ogTitle": "Глоссарий резервного копирования и восстановления | ProxMenux", + "ogDescription": "Понятные определения терминов, используемых в документации ProxMenux по резервному копированию и восстановлению.", + "twitterTitle": "Глоссарий резервного копирования и восстановления | ProxMenux", + "twitterDescription": "Парольная фраза, файл ключа, защищённый пакет восстановления, rootfs, манифест, PBS, блоки данных — все определения в одном месте." + }, + "header": { + "title": "Глоссарий", + "description": "Термины, используемые в документации по резервному копированию и восстановлению, и их определения.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "body": "Термины сгруппированы по темам. Каждая запись содержит термин и краткое определение." + }, + "groups": [ + { + "title": "Шифрование и восстановление ключа", + "intro": "Термины, относящиеся к шифрованию в PBS. Здесь используются два отдельных секрета: двоичный файл ключа и текстовая парольная фраза.", + "entries": [ + { + "id": "passphrase-recuperacion", + "term": "Парольная фраза восстановления", + "def": "Текстовый пароль, который пользователь выбирает для защиты конверта восстановления. Он запрашивается дважды с проверкой совпадения и используется только для шифрования конверта и его расшифровки, если потребуется восстановить файл ключа. Это не парольная фраза для разблокировки самого файла ключа, и он никогда не передаётся в PBS. При обычном резервном копировании он не покидает хост." + }, + { + "id": "clave-cifrado", + "term": "Файл ключа (ключ шифрования)", + "def": "Файл ключа, который proxmox-backup-client использует для шифрования блоков данных перед их загрузкой в PBS. Без соответствующего ключа прочитать зашифрованные данные резервной копии невозможно. ProxMenux сохраняет файл по пути /usr/local/share/proxmenux/pbs-key.conf с правами доступа 600. Берегите его: конверт восстановления предназначен для восстановления этого файла в случае его утраты." + }, + { + "id": "contrasena-keyfile", + "term": "Парольная фраза файла ключа (парольная фраза KDF)", + "def": "Необязательная парольная фраза, которой может быть защищён сам файл ключа; она отличается от парольной фразы восстановления. Она существует только в том случае, если файл ключа был создан с --kdf scrypt (обычно это импортированный файл ключа). Без неё невозможно разблокировать файл ключа для использования. ProxMenux сохраняет её на хосте в зашифрованном виде, чтобы резервное копирование по расписанию могло выполняться без интерактивного запроса." + }, + { + "id": "sobre-recuperacion", + "term": "Конверт восстановления", + "def": "Файл ключа с дополнительным уровнем защиты: ещё до отправки с хоста он шифруется парольной фразой восстановления с использованием AES-256-CBC и PBKDF2. Именно этот конверт загружается в PBS как группа -keyrecovery. Без парольной фразы содержимое конверта недоступно: его скачивание из PBS не раскрывает файл ключа." + }, + { + "id": "cifrado-cliente", + "term": "Шифрование на стороне клиента", + "def": "Модель шифрования, при которой данные шифруются на исходном хосте до загрузки. PBS получает и хранит исключительно зашифрованные данные; даже администратор PBS с доступом к хранилищу данных не может прочитать их без файла ключа. ProxMenux использует эту модель и дополняет её конвертом восстановления." + }, + { + "id": "kdf-none", + "term": "--kdf none", + "def": "Параметр команды proxmox-backup-client key create, позволяющий создать файл ключа без парольной фразы. Такой файл ключа можно использовать напрямую, без запроса ввода, что необходимо для автоматического выполнения заданий по расписанию. Именно этот вариант ProxMenux использует по умолчанию при создании нового файла ключа." + }, + { + "id": "kdf-scrypt", + "term": "--kdf scrypt", + "def": "Параметр команды proxmox-backup-client key create, позволяющий создать файл ключа, защищённый парольной фразой файла ключа. При каждом использовании файла ключа его необходимо разблокировать этой парольной фразой. ProxMenux поддерживает импорт таких файлов ключа и сохраняет парольную фразу в зашифрованном виде, чтобы резервное копирование по расписанию по-прежнему могло выполняться без участия пользователя." + }, + { + "id": "aes-256-cbc", + "term": "AES-256-CBC", + "def": "Стандартный симметричный шифр. ProxMenux использует его (через openssl enc -aes-256-cbc) для шифрования файла ключа с помощью парольной фразы восстановления и создания конверта." + }, + { + "id": "pbkdf2", + "term": "PBKDF2", + "def": "Криптографическая функция, преобразующая введённую пользователем парольную фразу в двоичный ключ, пригодный для шифрования. Она замедляет попытки перебора за счёт многократного выполнения вычислений. При шифровании конверта восстановления ProxMenux использует эту функцию с 600 000 итераций и случайной солью." + } + ] + }, + { + "title": "Структура резервной копии", + "intro": "Термины, описывающие содержимое резервной копии независимо от места её хранения.", + "entries": [ + { + "id": "rootfs", + "term": "rootfs / корневая файловая система", + "def": "Прямая копия файловой системы исходного хоста, которую rsync создаёт на основе профиля по умолчанию с добавлением всех пользовательских путей. Это не образ всего диска: копируются только пути, содержащие конфигурацию или данные о состоянии, которые Proxmox не может воссоздать самостоятельно." + }, + { + "id": "manifiesto", + "term": "Манифест (manifest.json)", + "def": "Структурированный документ JSON, описывающий исходный хост на момент создания резервной копии: оборудование, хранилища, ядро, компоненты, установленные средствами ProxMenux, и перечень виртуальных машин и контейнеров LXC. Он формируется шестью независимыми сборщиками данных. Процесс восстановления использует его для сравнения исходного и целевого хостов." + }, + { + "id": "staging", + "term": "Промежуточный каталог", + "def": "Временный каталог, в котором ProxMenux собирает три блока (rootfs, метаданные и манифест) перед их упаковкой и загрузкой в место назначения. Он удаляется автоматически по окончании резервного копирования, в том числе при прерывании." + }, + { + "id": "perfil-defecto", + "term": "Профиль по умолчанию", + "def": "Подобранный набор путей, которые ProxMenux по умолчанию копирует при каждом резервном копировании. Включает конфигурацию PVE, настройки сети, SSH, ядро, apt, инструменты ProxMenux и многое другое. Он определён в коде и описан на странице Как это работает." + }, + { + "id": "rutas-personalizadas", + "term": "Пользовательские пути", + "def": "Дополнительные пути, которые пользователь добавляет к профилю по умолчанию. Они могут быть постоянными (сохраняются в backup-extra-paths.txt) или задаваться для отдельного запуска (выбираются в пользовательском режиме)." + } + ] + }, + { + "title": "Места назначения и хранение", + "intro": "Термины, связанные с местом сохранения резервной копии — сервером PBS, локальным архивом или репозиторием Borg — и с тем, как PBS организует данные.", + "entries": [ + { + "id": "repositorio-pbs", + "term": "Репозиторий PBS", + "def": "Сочетание Proxmox Backup Server, хранилища данных и пользователя, от имени которого принимается резервная копия. Идентифицируется строкой user@realm@host:datastore. Один сервер PBS может размещать несколько репозиториев." + }, + { + "id": "datastore", + "term": "Хранилище данных", + "def": "Конкретное хранилище на сервере PBS, в котором находятся резервные копии и их блоки данных. Каждое хранилище данных размещается в файловой системе сервера PBS и имеет собственные права доступа и политики." + }, + { + "id": "chunk", + "term": "Блок данных / дедупликация блоков данных", + "def": "PBS разбивает каждую резервную копию на блоки переменного размера, идентифицирует каждый блок по его хешу и сохраняет его только один раз, даже если он встречается во множестве разных резервных копий. Поэтому последующие резервные копии одного узла, а также копии похожих узлов занимают очень мало дополнительного места." + }, + { + "id": "fingerprint", + "term": "Отпечаток", + "def": "Криптографический отпечаток TLS-сертификата сервера PBS. Он позволяет клиенту проверить, что соединение установлено именно с нужным сервером, не полагаясь на общедоступный центр сертификации. ProxMenux передаёт его в proxmox-backup-client через переменную окружения PBS_FINGERPRINT." + }, + { + "id": "grupo-copia", + "term": "Группа резервных копий", + "def": "Логический контейнер в PBS, в котором накапливаются последовательные резервные копии одного и того же объекта. Каждая новая резервная копия использует дедупликацию совместно с предыдущими копиями той же группы. При включённом шифровании ProxMenux использует две группы для каждого узла: одну для резервной копии узла и другую с суффиксом -keyrecovery для пакета восстановления." + }, + { + "id": "backup-id", + "term": "Идентификатор резервной копии", + "def": "Имя группы резервных копий. ProxMenux по умолчанию использует hostcfg-HOSTNAME и позволяет пользователю изменить это имя перед отправкой; неподдерживаемые символы удаляются автоматически." + }, + { + "id": "pxar", + "term": ".pxar", + "def": "Собственный формат архивов каталогов PBS. Он работает подобно tar, оптимизированному для дедупликации блоков данных: вместо хранения файла как единого непрозрачного объекта PBS разбивает его содержимое на блоки, которые можно использовать повторно." + } + ] + }, + { + "title": "Выполнение и планирование", + "intro": "Термины, используемые в системе заданий по расписанию ProxMenux.", + "entries": [ + { + "id": "runner", + "term": "Исполнитель заданий", + "def": "Скрипт run_scheduled_backup.sh, выполняющий резервное копирование по расписанию. Он читает конфигурацию задания, запускает соответствующий механизм резервного копирования (локальный, PBS или Borg), после успешного выполнения применяет правила хранения и отправляет настроенные уведомления." + }, + { + "id": "trabajo-programado", + "term": "Задание по расписанию", + "def": "Сохранённая конфигурация периодического резервного копирования. Содержит место назначения, учётные данные, параметры шифрования, расписание и правила хранения. Находится в /var/lib/proxmenux/backup-jobs/<id>.env." + }, + { + "id": "modo-adjunto", + "term": "Режим подключения", + "def": "Задание без собственного таймера. Хук job-end PVE vzdump запускает его после резервного копирования гостевых систем, если целевое хранилище совпадает. Выбранное родительское задание задаёт хранилище и политику хранения, которая заново считывается из родительского задания при каждом запуске. Однако хук сопоставляет хранилище, а не идентификатор родительского задания, поэтому другая задача, использующая это хранилище, также может вызвать запуск. Поддерживается только для локального хранилища и PBS." + }, + { + "id": "timer-systemd", + "term": "Таймер systemd", + "def": "Стандартный механизм systemd, запускающий команду по календарному расписанию. ProxMenux создаёт отдельный таймер для каждого независимого задания с расписанием; задания в режиме привязки не используют таймер и запускаются через скрипт-хук PVE." + }, + { + "id": "retencion", + "term": "Политика хранения (keep-last, keep-daily…)", + "def": "Политика, определяющая, какие старые резервные копии сохранять, а какие удалять. Задаётся для каждого задания с помощью таких параметров, как keep-last, keep-daily, keep-weekly, keep-monthly. Применяется исполнителем задания после каждого успешного резервного копирования." + } + ] + }, + { + "title": "Восстановление", + "intro": "Термины, используемые в процессе восстановления.", + "entries": [ + { + "id": "restauracion-universal", + "term": "Универсальное восстановление", + "def": "В процессе восстановления ProxMenux не просто извлекает файловую систему: он читает манифест, чтобы выявить различия между исходной и целевой системами, воссоздаёт конфигурацию системы и повторно запускает установщики компонентов, управляемых ProxMenux. Цель — воссоздать исходный узел, а не просто извлечь архив." + }, + { + "id": "hidratacion", + "term": "Гидратация (при смене ядра)", + "def": "Этап восстановления, на котором пользовательские настройки исходной системы (параметры IOMMU, идентификаторы устройств VFIO, пользовательские обходные решения, ключи GRUB) объединяются со свежей загрузочной конфигурацией целевой системы без дословного копирования файлов исходной системы, привязанных к ядру. Выполняется, если ядро целевой системы новее ядра системы из резервной копии." + }, + { + "id": "cross-kernel", + "term": "Восстановление с другой версией ядра", + "def": "Восстановление, при котором ядро целевой системы отличается от ядра исходной системы (обычно оно новее). Требует этапа гидратации, чтобы не переносить файлы, несовместимые с ядром целевой системы." + }, + { + "id": "instalador-postboot", + "term": "Установщик после загрузки", + "def": "Компоненты, повторно устанавливаемые после первой загрузки восстановленного узла (драйверы NVIDIA, драйверы TPU Coral, инструменты для GPU AMD и Intel). Каждый установщик работает с ядром целевой системы, поэтому восстановленный узел не зависит от наличия ядра исходной системы." + }, + { + "id": "compatibility-check", + "term": "Проверка совместимости", + "def": "Сравнение манифеста исходной системы с состоянием целевой системы, которое ProxMenux выполняет в начале восстановления. По его результатам определяется, какие части копируются без изменений, какие требуют гидратации, а какие воссоздаются установщиком." + }, + { + "id": "equipo-recien-instalado", + "term": "Чистая установка", + "def": "Узел, только что переустановленный с нуля, без локального файла ключа. Для восстановления зашифрованной резервной копии сначала необходимо восстановить файл ключа из конверта, хранящегося на PBS, с помощью парольной фразы восстановления." + } + ] + } + ], + "whereNext": { + "heading": "Что читать дальше", + "items": [ + { + "label": "Как это работает", + "href": "/docs/backup-restore/how-it-works", + "tail": " — место rootfs, манифеста и перечня приложений в структуре резервной копии." + }, + { + "label": "Целевое хранилище Proxmox Backup Server", + "href": "/docs/backup-restore/destinations/pbs", + "tail": " — подробная документация по шифрованию на стороне клиента, файлу ключа, парольной фразе восстановления и конверту." + }, + { + "label": "Восстановление", + "href": "/docs/backup-restore/restoring", + "tail": " — процесс восстановления и использование манифеста." + } + ] + } +} diff --git a/web/messages/ru/docs/backup-restore/how-it-works.json b/web/messages/ru/docs/backup-restore/how-it-works.json new file mode 100644 index 00000000..036fb4f5 --- /dev/null +++ b/web/messages/ru/docs/backup-restore/how-it-works.json @@ -0,0 +1,205 @@ +{ + "meta": { + "title": "Как устроен ProxMenux Backup — rootfs, манифест, приложения", + "description": "Подробный разбор содержимого резервной копии ProxMenux: rootfs, полученная с помощью rsync по профилю путей по умолчанию, структурированный манифест, сформированный шестью независимыми сборщиками, и перечень приложений, на основе которого выполняется автоматическая переустановка пакетов и компонентов после восстановления.", + "ogTitle": "Как устроено резервное копирование ProxMenux", + "ogDescription": "Три составляющие резервной копии ProxMenux: rootfs, манифест и приложения.", + "twitterTitle": "Как работает резервное копирование ProxMenux | ProxMenux", + "twitterDescription": "Три составляющие резервной копии ProxMenux и то, как при восстановлении на их основе воссоздаётся исходный хост." + }, + "header": { + "title": "Как это работает", + "description": "Внутренняя структура резервной копии ProxMenux — файловая система, манифест и перечень приложений — и то, как все три составляющие используются при восстановлении для воссоздания исходного хоста на целевом хосте, ядро которого может отличаться.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "title": "Один архив, три составляющие", + "body": "При каждом резервном копировании создаётся структура каталогов с тремя чётко определёнными составляющими в едином промежуточном корневом каталоге. Архив, загружаемый в место назначения (локальный .tar.zst, резервная копия PBS или архив Borg), содержит именно эту структуру. При восстановлении используются все три составляющие: манифест проверяется до применения изменений, чтобы выявить расхождения и решить, что пропустить; rootfs содержит файлы конфигурации, которые применяются к работающей системе или откладываются до перезагрузки; а перечень приложений определяет установку пакетов и переустановку компонентов после загрузки. Каждую составляющую можно просмотреть или извлечь отдельно." + }, + "layout": { + "heading": "Структура архива", + "intro": "Все архивы имеют одинаковую структуру дерева независимо от места назначения. Подкаталог metadata/ содержит структурированные данные, а подкаталог rootfs/ — копию файловой системы.", + "treeCaption": "Структура промежуточного каталога, создаваемая при резервном копировании. В каждое место назначения передаётся одно и то же дерево, адаптированное к соответствующему формату: tar для локального хранения, блоки PBS для PBS, сегменты borg для Borg.", + "tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…" + }, + "rootfs": { + "heading": "Составляющая rootfs", + "intro": "Дерево rootfs/ представляет собой обычную копию файловой системы, созданную с помощью rsync на исходном хосте. Оно содержит тщательно подобранный профиль путей по умолчанию, важных для восстановления Proxmox, а также любые пользовательские пути, добавленные пользователем в задание резервного копирования или в интерактивном сеансе. Набор намеренно ограничен: включены только пути, которые либо содержат конфигурацию, либо содержат данные состояния, которые Proxmox не может воссоздать самостоятельно.", + "defaultProfileTitle": "Профиль по умолчанию", + "defaultProfileBody": "Профиль по умолчанию задаётся hb_default_profile_paths в lib_host_backup_common.sh. Он охватывает восемь фиксированных категорий, а также данные состояния ZFS, включаемые при определённых условиях. Вместе они описывают работоспособный хост Proxmox:", + "categoriesTitle": "Категории путей", + "categoryRows": [ + { + "category": "Основные компоненты PVE", + "paths": "/etc/pve, /var/lib/pve-cluster, /etc/vzdump.conf", + "why": "Содержимое кластерной файловой системы и настройки vzdump по умолчанию. База данных pmxcfs (config.db) сохраняется в виде согласованного снимка с помощью sqlite3 .backup без остановки кластера, а сопутствующие файлы .db-wal / .db-shm исключаются из копирования rsync. Если sqlite3 недоступен, вместо этого сохраняется config.db.raw-fallback, который при восстановлении автоматически используется для воссоздания базы данных." + }, + { + "category": "Идентификационные данные хоста и сеть", + "paths": "/etc/hostname, /etc/hosts, /etc/timezone, /etc/resolv.conf, /etc/network, /etc/systemd/network", + "why": "Всё, что необходимо хосту для подключения к сети с прежними идентификационными данными. Файлы .link в /etc/systemd/network привязывают имена сетевых адаптеров к их MAC-адресам, поэтому переустановка и изменения оборудования не приводят к переименованию интерфейсов." + }, + { + "category": "Доступ и аутентификация", + "paths": "/etc/ssh, /etc/sudoers, /etc/sudoers.d, /etc/pam.d, /etc/security", + "why": "Ключи SSH, правила sudo и конфигурация PAM. Их потеря лишает пользователя доступа к восстановленному хосту." + }, + { + "category": "Ядро и загрузка", + "paths": "/etc/default/grub, /etc/kernel, /etc/modules, /etc/modules-load.d, /etc/modprobe.d, /etc/sysctl.conf, /etc/sysctl.d, /etc/udev/rules.d, /etc/fstab, /etc/iscsi, /etc/multipath", + "why": "Параметры IOMMU, списки запрещённых модулей, идентификаторы устройств VFIO, таблица монтирования, конфигурация стека хранения." + }, + { + "category": "Оболочка и локаль", + "paths": "/etc/environment, /etc/bash.bashrc, /etc/inputrc, /etc/profile, /etc/profile.d, /etc/locale.gen, /etc/locale.conf", + "why": "Общесистемная настройка оболочки, переменные окружения, конфигурация генерации локалей." + }, + { + "category": "Пакеты и cron", + "paths": "/etc/apt, /etc/cron.d, /etc/cron.{daily,hourly,weekly,monthly}, /etc/cron.allow, /etc/cron.deny, /var/spool/cron/crontabs", + "why": "Источники APT для согласованного разрешения зависимостей пакетов, запланированные задачи, заданные пользователем." + }, + { + "category": "Состояние и инструменты ProxMenux", + "paths": "/etc/proxmenux, /etc/systemd/system, /etc/log2ram.conf, /etc/logrotate.conf, /etc/logrotate.d, /etc/lm-sensors, /etc/sensors3.conf, /etc/fail2ban, /etc/snmp, /etc/postfix, /etc/wireguard, /etc/openvpn, /etc/grafana, /etc/influxdb, /etc/prometheus, /etc/telegraf, /etc/zabbix", + "why": "Необязательные, но часто используемые инструменты Proxmox. Отсутствующие пути отмечаются в metadata/missing_paths.txt без остановки резервного копирования." + }, + { + "category": "Исполняемые файлы ProxMenux и root", + "paths": "/usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux, /var/lib/proxmenux, /root (подкаталоги с временными данными исключены)", + "why": "Исполняемые файлы, установленные через ProxMenux, и пользовательская конфигурация в /root. Пути с временными данными (.bash_history, .cache/, tmp/, .local/share/Trash/) исключаются из копии. /var/lib/proxmenux содержит запланированные задания резервного копирования и состояние хоста, сохраняемое ProxMenux; промежуточные данные восстановления, копии для отката и маркеры после восстановления исключаются, поскольку они относятся к хосту, на котором выполняется восстановление." + }, + { + "category": "Состояние ZFS (при выполнении условия)", + "paths": "/etc/zfs", + "why": "Включается только в том случае, если на исходном хосте работает ZFS. Содержит zpool.cache и hostid." + } + ], + "customTitle": "Расширение профиля пользовательскими путями", + "customBody": "Помимо профиля по умолчанию, ProxMenux предлагает два способа включить дополнительные пути в резервную копию. Они сочетаются без конфликтов и применяются как к интерактивному резервному копированию, так и к запланированным заданиям.", + "customExtrasTitle": "1. Постоянные дополнения (файл для каждого хоста)", + "customExtrasBody": "Текстовый файл /usr/local/share/proxmenux/backup-extra-paths.txt содержит список абсолютных путей, для которых пользователь на этом хосте выбрал «включать всегда». При запуске резервного копирования в режиме По умолчанию ProxMenux автоматически добавляет эти пути к профилю по умолчанию без запроса подтверждения. Файл редактируется через интерфейс — ручное редактирование не требуется — и сохраняется после перезагрузок и обновлений. Каждый абсолютный путь указывается в отдельной строке; допускаются комментарии #.", + "customModeTitle": "2. Пользовательский режим (для отдельного запуска)", + "customModeBody": "При запуске резервного копирования в режиме Пользовательский вместо автоматического применения профиля по умолчанию отображается список выбора всех путей: записей профиля по умолчанию и постоянных дополнений (с префиксом [+] и уже установленными флажками). Пользователь устанавливает или снимает флажки для конкретного запуска, а также может нажать Добавить пользовательский путь, чтобы ввести новый путь, который затем сохраняется в файле дополнений для будущих резервных копий.", + "customMissingTitle": "Пути, отсутствующие на исходном хосте", + "customMissingBody": "Любой путь из профиля (по умолчанию или добавленный), который отсутствует на исходном хосте, записывается в metadata/missing_paths.txt внутри архива. Резервное копирование не завершается ошибкой и не останавливается — в конце пользователь видит сводку заархивированных и отсутствующих путей. На практике это происходит с путями необязательных инструментов, например /etc/wireguard или /etc/prometheus, если эти инструменты не установлены." + }, + "manifest": { + "heading": "Содержимое манифеста", + "intro": "manifest.json — это структурированный документ JSON, описывающий исходный хост на момент создания резервной копии. Его формируют шесть независимых сборщиков, работой которых управляет build_manifest.sh. Каждый сборщик работает в режиме «только для чтения», создаёт фрагмент JSON с чётко определённой структурой и в случае сбоя возвращает безопасное пустое значение по умолчанию — манифест остаётся пригодным для использования, даже если один из разделов неполон.", + "orchestratorCaption": "Шесть сборщиков формируют манифест. Каждый сборщик работает в отдельном подпроцессе; при сбое одного из них используется документированное безопасное значение по умолчанию и выдаётся предупреждение, но резервное копирование не прерывается.", + "collectorRows": [ + { + "collector": "collect_source_host.sh", + "produces": "source_host", + "content": "Имя хоста, версия PVE (pveversion), версия PBS, если хост выполняет роль сервера резервного копирования, ядро (uname -r), режим загрузки (efi/bios), тип корневой файловой системы, модель и архитектура процессора, объём памяти в КБ." + }, + { + "collector": "collect_hardware.sh", + "produces": "hardware_inventory", + "content": "Графические процессоры (с указанием производителя и соответствующего установщика ProxMenux), TPU (Coral USB и M.2 с обнаружением lsusb/lspci), сетевые адаптеры (с MAC-адресом, слотом PCI и принадлежностью к сетевому мосту), беспроводные устройства. Записи графических процессоров содержат эвристический признак passthrough_eligible." + }, + { + "collector": "collect_storage.sh", + "produces": "storage_inventory", + "content": "Пулы ZFS (с указанием типа пула и дисков в его составе, для которых определяются пути /dev/disk/by-id/*, /dev/disk/by-partuuid/* или исходные пути /dev/sdX в зависимости от способа создания каждого пула), группы томов LVM и тонкие пулы, физические диски с поддержкой SMART, записи PVE storage.cfg, внешние точки монтирования." + }, + { + "collector": "collect_kernel.sh", + "produces": "kernel_params", + "content": "Параметры, добавленные пользователем в /proc/cmdline (без стандартных параметров, таких как BOOT_IMAGE=, root=, ro/rw, quiet, splash), модули, загружаемые при запуске, из /etc/modules, и пути к файлам /etc/modprobe.d/*.conf, содержащим реальные директивы (options, blacklist, install, alias, softdep)." + }, + { + "collector": "collect_proxmenux_state.sh", + "produces": "proxmenux_installed_components", + "content": "Считывает /usr/local/share/proxmenux/managed_installs.json (реестр всего, что установлено с помощью ProxMenux) и installed_tools.json. В каждой записи сохраняется путь к установщику (menu_script), чтобы при восстановлении можно было запустить ту же процедуру установки." + }, + { + "collector": "collect_guests.sh", + "produces": "vms_lxcs_at_backup", + "content": "Перечисляет виртуальные машины (qm list) и контейнеры LXC (pct list), существовавшие на момент создания резервной копии: VMID, имя, текущее состояние. Это только перечень: за сами данные гостевых систем отвечают vzdump / PBS." + } + ], + "schemaTitle": "Проверка соответствия схеме", + "schemaBody": "В состав ProxMenux входит шаблон, описывающий обязательные поля манифеста и структуру каждого из них. При создании резервной копии манифест можно автоматически проверить на соответствие этому шаблону, чтобы сразу обнаружить сборщик, сформировавший некорректный JSON или поле с ошибкой в имени. Эта проверка предназначена для разработки самого ProxMenux: в системе, где он не установлен, резервное копирование работает как обычно, а манифест по-прежнему создаётся." + }, + "applications": { + "heading": "Перечень приложений", + "intro": "Два перечня учитывают программное обеспечение, установленное на исходной системе сверх базового набора пакетов Proxmox VE: список пакетов в metadata/ и реестр компонентов внутри rootfs, подробно описанные ниже. При восстановлении они используются для повторной установки пользовательского программного обеспечения через APT или собственные установщики ProxMenux — в зависимости от первоначального способа установки.", + "packagesTitle": "packages.manual.list", + "packagesBody": "Текстовый список, создаваемый с помощью apt-mark showmanual: все пакеты APT, которые были явно установлены на исходном хосте, в алфавитном порядке. Пакеты, установленные как зависимости базового ISO-образа Proxmox VE, в него не входят (APT целевой системы автоматически загрузит их заново). При восстановлении список считывается с помощью _rs_run_complete_extras и проходит трёхэтапную фильтрацию с защитой от каскадного удаления (dpkg -s для уже установленных пакетов, обнаружение пакетов библиотек того же семейства с другой основной версией, apt-get install --simulate для оценки риска каскадного удаления), после чего пакеты устанавливаются с помощью apt-get install -y.", + "componentsTitle": "components_status.json (часть rootfs)", + "componentsBody": "Реестр JSON в /usr/local/share/proxmenux/, в котором для каждого компонента, установленного с помощью ProxMenux, записывается точное состояние: версия, флаги, специфичные для ProxMenux (для NVIDIA — логическое значение patched; для Coral — версия DKMS). Этот файл находится внутри rootfs, а не в metadata/, поскольку он считывается после того, как rootfs скопирована в целевую систему. Диспетчер, запускаемый после загрузки (apply_cluster_postboot.sh), перебирает записи реестра и запускает обработчик --auto-reinstall каждого компонента, который считывает сохранённое состояние и повторяет установку для текущего ядра целевой системы.", + "componentInstallersTitle": "Установщики компонентов", + "componentInstallersBody": "В настоящее время четыре установщика ProxMenux предоставляют точку входа --auto-reinstall:", + "installerRows": [ + { + "component": "nvidia_driver", + "installer": "gpu_tpu/nvidia_installer.sh", + "action": "Считывает version и patched. Загружает точно такой же установочный файл NVIDIA, собирает модули DKMS для ядра целевой системы и повторно применяет исправление ProxMenux, если оно было применено в исходной системе." + }, + { + "component": "coral_driver", + "installer": "gpu_tpu/install_coral.sh", + "action": "Считывает версию драйвера Coral. Компилирует модуль DKMS для ядра целевой системы." + }, + { + "component": "amdgpu_top", + "installer": "gpu_tpu/amd_gpu_tools.sh", + "action": "Считывает сохранённую версию. Повторно загружает тот же самый .deb из выпуска GitHub." + }, + { + "component": "intel_gpu_tools", + "installer": "gpu_tpu/intel_gpu_tools.sh", + "action": "Устанавливает пакет через APT. Если пакет уже установлен из packages.manual.list, повторная установка не выполняется." + } + ] + }, + "restoreFlow": { + "heading": "Как при восстановлении используются три набора данных", + "intro": "Восстановление выполняется в шесть этапов. Каждый этап считывает определённую часть архива и обновляет целевой узел. Ни на одном этапе не требуется доступ к исходному узлу — архив полностью самодостаточен.", + "stagesCaption": "На этапе 1 манифест определяет, какие элементы следует затронуть. На этапе 2 копируются пути rootfs, которые безопасно применять в работающей системе. На этапе 3 потенциально опасные пути подготавливаются к применению при следующей загрузке. На этапе 3b импортируются некорневые пулы данных ZFS, все диски которых доступны. На этапе 4 обрабатываются пакеты. Этап 5 выполняется после перезагрузки и переустанавливает компоненты с учётом ядра целевого узла.", + "stageRows": [ + { + "stage": "1", + "name": "Проверка совместимости", + "reads": "manifest.json", + "action": "Запускает hb_compat_check. Сравнивает оборудование исходного и целевого узлов (сетевые интерфейсы, идентификаторы хранилищ), версию PVE и основную версию ядра. Устанавливает HB_COMPAT_KERNEL_DIRECTION (same, bk_newer или bk_older) и заполняет RS_SKIP_PATHS исключениями, связанными с различиями в оборудовании и версиях ядра." + }, + { + "stage": "2", + "name": "Применение в работающей системе", + "reads": "rootfs/ (только безопасные пути)", + "action": "_rs_apply … hot копирует записи hb_classify_path=hot непосредственно на работающий целевой узел. Всё, что находится в /etc/pve, /etc/network, а также пути с классификацией reboot/dangerous откладываются до следующей загрузки." + }, + { + "stage": "3", + "name": "Подготовка отложенного применения", + "reads": "rootfs/ (пути, требующие перезагрузки, и опасные пути)", + "action": "_rs_prepare_pending_restore размещает потенциально опасные пути в /var/lib/proxmenux/restore-pending/<restore_id>/ (с доступом по ссылке current), записывает plan.env, apply-on-boot.list и rs-skip-paths.txt и включает proxmenux-restore-onboot.service для запуска при следующей загрузке." + }, + { + "stage": "3b", + "name": "Импорт пулов данных", + "reads": "manifest.storage_inventory + состояние ZFS на целевом узле", + "action": "_rs_import_data_pools импортирует каждый некорневой пул ZFS, все диски которого присутствуют на целевом узле. Для пулов с чужим hostid выполняется повторная попытка с zpool import -f. Пулы, у которых отсутствует хотя бы один диск, пропускаются с предупреждением. Результат для каждого пула записывается в /var/log/proxmenux/restore-datapools-<timestamp>.log." + }, + { + "stage": "4", + "name": "Установка пакетов", + "reads": "metadata/packages.manual.list", + "action": "_rs_run_complete_extras запускает фильтр защиты от каскадных изменений и вызывает apt-get install -y со списком пакетов, прошедших фильтрацию. Полный вывод записывается в /var/log/proxmenux/restore-apt-*.log." + }, + { + "stage": "5", + "name": "После загрузки", + "reads": "rootfs (уже применён) + components_status.json", + "action": "После перезагрузки apply_pending_restore.sh применяет отложенные пути, а apply_cluster_postboot.sh запускает update-initramfs, update-grub (или proxmox-boot-tool refresh), затем перебирает components_status.json, вызывая обработчик --auto-reinstall каждого компонента." + } + ] + }, + "whyItWorks": { + "heading": "Почему используется разделение на три набора данных", + "body": "Это разделение определяется не файловой системой, а жизненным циклом. Содержимое файловой системы переносится с помощью rsync: быстро, прозрачно и атомарно для каждого файла. Состояние конфигурации, которое при восстановлении необходимо интерпретировать до внесения изменений на целевом узле, переносится в виде структурированного JSON: его можно читать независимо от остальных данных, версионировать с помощью схемы и программно сравнивать с собственным состоянием целевого узла. Программное обеспечение, которое необходимо переустановить с учётом окружения целевого узла, представлено в виде перечня: только названия и версии, а выбор конкретных двоичных файлов остаётся за менеджером пакетов целевого узла и собственными установщиками ProxMenux. Каждый набор данных оптимизирован для своей задачи, а вместе они обеспечивают восстановление, задуманное как единая атомарная операция, но устойчивое к сбоям на практике: даже при повреждённом манифесте rootfs можно восстановить; даже при отсутствии пакета компоненты можно установить; сбой установщика на одном компоненте не останавливает установку следующего." + } +} diff --git a/web/messages/ru/docs/backup-restore/index.json b/web/messages/ru/docs/backup-restore/index.json new file mode 100644 index 00000000..f39b9082 --- /dev/null +++ b/web/messages/ru/docs/backup-restore/index.json @@ -0,0 +1,93 @@ +{ + "meta": { + "title": "ProxMenux Backup & Restore — обзор | Полное резервное копирование и восстановление узла для Proxmox VE", + "description": "ProxMenux Backup & Restore сохраняет полное состояние узла Proxmox — файловую систему, структурированный манифест конфигурации и установленные пакеты и компоненты — и воспроизводит его на том же или другом узле. Резервное копирование и восстановление полностью самодостаточны: внешние зависимости отсутствуют, а восстановление с переходом между версиями ядра поддерживается благодаря фильтру безопасного подмножества данных, учитывающему направление перехода, и развёртыванию компонентов, не зависящему от версии ядра.", + "ogTitle": "ProxMenux: резервное копирование и восстановление — обзор", + "ogDescription": "Полное резервное копирование и восстановление хоста Proxmox VE со структурированным манифестом, списком пакетов и средствами переустановки компонентов.", + "twitterTitle": "ProxMenux: резервное копирование и восстановление | ProxMenux", + "twitterDescription": "Полное резервное копирование и восстановление хоста Proxmox VE со структурированным манифестом, списком пакетов и средствами переустановки компонентов." + }, + "header": { + "title": "Резервное копирование и восстановление", + "description": "Полное резервное копирование и восстановление хоста Proxmox VE. Сохраняет файловую систему, конфигурацию и установленные компоненты в едином архиве и позволяет воссоздать хост в той же или другой установленной системе Proxmox без внешних зависимостей.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "title": "Что это такое — в одном абзаце", + "body": "Резервная копия ProxMenux сохраняет полное состояние хоста Proxmox: файловую систему (соответствующие каталоги в /etc, /root, /var/lib/pve-cluster, а также дополнительные пользовательские пути), структурированный манифест (JSON с обнаруженным оборудованием, параметрами ядра, сетевой конфигурацией, состоянием ZFS, пользователями и заданиями cron) и перечень приложений (все пакеты, отмеченные в APT как установленные вручную, а также список компонентов, установленных с помощью ProxMenux, с указанием их точных версий). В любое из трёх поддерживаемых мест назначения — локальный архив, Proxmox Backup Server (рекомендуется) или Borg — сохраняется один и тот же самодостаточный набор данных. Любой из этих вариантов позволяет восстановить целевой хост, даже если исходный хост недоступен во время восстановления." + }, + "video": { + "heading": "Видеоинструкция", + "intro": "Хотите увидеть резервное копирование и восстановление в действии перед настройкой? В этой видеоинструкции показан полный цикл работы с этой функцией в ProxMenux.", + "title": "ProxMenux — видеоинструкция по резервному копированию и восстановлению", + "caption": "Внешнее видео на YouTube. Воспроизводится в режиме повышенной конфиденциальности (файлы cookie не используются, пока вы не запустите воспроизведение)." + }, + "whatItIsNot": { + "heading": "Для чего эта функция не предназначена", + "intro": "В этом разделе рассматриваются резервное копирование и восстановление на уровне хоста: самой установки Proxmox, а не работающих в ней виртуальных машин и контейнеров.", + "items": [ + "Это не инструмент резервного копирования ВМ и контейнеров. Эта функция не сохраняет диски и состояние оперативной памяти гостевых систем; для этого предназначен vzdump. При этом файлы конфигурации гостевых систем (/etc/pve/nodes/<node>/qemu-server/*.conf и lxc/*.conf) сохраняются, поэтому после восстановления список гостевых систем появится снова, а диски можно будет повторно подключить из существующей резервной копии в PBS или локальной резервной копии.", + "Это не операция для всего кластера. Каждый узел создаёт собственную резервную копию. Сведения о принадлежности к кластеру сохраняются в составе /etc/pve, чтобы восстановленный узел можно было повторно добавить в его кластер, однако для восстановления всего кластера требуется согласовывать действия на каждом узле.", + "Это не полный образ диска. Двоичные файлы ядра, initramfs и загрузочный раздел не сохраняются. При восстановлении ProxMenux использует собственные загрузочные файлы целевого хоста (автоматически создаваемые заново с помощью update-initramfs и средства настройки загрузчика) и устанавливает подходящие драйверы для работающего ядра целевого хоста." + ] + }, + "threePillars": { + "heading": "Три основы резервной копии", + "intro": "Архив ProxMenux состоит из трёх самодостаточных наборов данных. При восстановлении все три используются вместе, чтобы воссоздать исходный хост на целевом хосте, где может быть установлено даже другое ядро.", + "diagramCaption": "Каждая резервная копия содержит одни и те же три набора данных независимо от места назначения. При восстановлении используются все три: rootfs — для размещения файлов, манифест — для выявления расхождений конфигурации и различий между ядрами, а перечень приложений — для повторной установки пакетов и компонентов с учётом собственного ядра целевого хоста.", + "pillar1Label": "Файловая система", + "pillar1Detail": "rootfs/\n(копия /etc,\n/etc/systemd/network,\n/root, созданная rsync,\nи снимок sqlite3\nдля /var/lib/pve-cluster,\n+ дополнительные пути)", + "pillar2Label": "Манифест", + "pillar2Detail": "manifest.json\n(оборудование, параметры\nядра, сеть,\nZFS, пользователи, cron,\nпулы ZFS, хранилища)", + "pillar3Label": "Приложения", + "pillar3Detail": "packages.manual.list\n+ components_status.json\n(пакеты APT, установленные вручную,\n+ установщики ProxMenux с версиями)" + }, + "restoreIsUniversal": { + "heading": "Восстановление воссоздаёт исходный хост, а не архив", + "body": "Восстановление резервной копии ProxMenux не сводится к извлечению файловой системы. В ходе восстановления считывается манифест для выявления различий между исходным и целевым хостами (различия оборудования, переименования сетевых интерфейсов, версия ядра, идентификатор пула ZFS), восстанавливается файловая система, а затем запускается соответствующий установщик компонентов для каждой службы, установленной на исходном хосте (драйвер NVIDIA, TPU Coral, инструменты для GPU AMD и Intel). Каждый установщик работает с текущим ядром целевого хоста, поэтому восстановленный хост не зависит от наличия ядра исходного хоста. Если ядро целевого хоста новее ядра, использовавшегося при создании резервной копии, независимый от версии ядра этап адаптации конфигурации переносит пользовательские настройки (параметры IOMMU, идентификаторы устройств VFIO, пользовательские обходные настройки, ключи GRUB) в новую загрузочную конфигурацию целевого хоста, не копируя дословно файлы, привязанные к ядру." + }, + "twoInterfaces": { + "heading": "Два интерфейса, одна серверная часть", + "intro": "Каждый этап резервного копирования и восстановления доступен через два интерфейса. Оба вызывают одну и ту же библиотеку оболочки, создают идентичные архивы и читают один и тот же реестр заданий.", + "cliLabel": "ProxMenux Scripts (текстовый интерфейс)", + "cliDetail": "меню →\nРезервное копирование и восстановление хоста\n\nПошаговый процесс с диалоговыми окнами,\nудобный для SSH, с поддержкой сценариев\nдля работы без участия пользователя.", + "webLabel": "ProxMenux Monitor (веб-интерфейс)", + "webDetail": "Вкладка «Резервные копии»\nв веб-интерфейсе Monitor.\n\nВосстановление одним нажатием,\nпросмотр последних строк журнала в реальном времени,\nинтеграция с уведомлениями\nи средством просмотра изменений\nдля отката." + }, + "whereNext": { + "heading": "Что читать дальше", + "intro": "Каждый из следующих подразделов подробно описывает один из аспектов рабочего процесса. Начните с раздела Как это работает, если хотите понять, что содержит архив и почему. Перейдите к разделу Места назначения, чтобы настроить место сохранения копии. О восстановлении читайте в разделах Восстановление и Восстановление при различающихся версиях ядра.", + "items": [ + { + "label": "Как это работает", + "href": "/docs/backup-restore/how-it-works", + "tail": " — подробное описание трёх наборов данных (rootfs, манифест, приложения), средств их сбора и формата каждого файла." + }, + { + "label": "Места хранения", + "href": "/docs/backup-restore/destinations", + "tail": " — сравнение локального хранения, Proxmox Backup Server (рекомендуется) и Borg, а также настройка каждого варианта." + }, + { + "label": "Создание резервных копий", + "href": "/docs/backup-restore/creating-backups", + "tail": " — разовое резервное копирование, профиль путей по умолчанию, добавление собственных путей, шифрование для PBS." + }, + { + "label": "Задания по расписанию", + "href": "/docs/backup-restore/scheduled-jobs", + "tail": " — создание новых заданий или привязка к существующему заданию vzdump в PVE, форматы расписаний, модальное окно сведений о задании." + }, + { + "label": "Восстановление", + "href": "/docs/backup-restore/restoring", + "tail": " — три действия с архивом (просмотр, скачивание, восстановление), полное и выборочное восстановление, диспетчер задач после загрузки и важность последних десяти минут." + }, + { + "label": "Восстановление с другой версией ядра", + "href": "/docs/backup-restore/cross-kernel", + "tail": " — поведение с учётом того, новее или старее ядро целевого хоста по сравнению с ядром резервной копии, фильтр безопасного подмножества и четыре этапа адаптации конфигурации." + } + ] + } +} diff --git a/web/messages/ru/docs/backup-restore/restoring.json b/web/messages/ru/docs/backup-restore/restoring.json new file mode 100644 index 00000000..822c5284 --- /dev/null +++ b/web/messages/ru/docs/backup-restore/restoring.json @@ -0,0 +1,282 @@ +{ + "meta": { + "title": "Восстановление резервной копии — полный и выборочный режимы | ProxMenux", + "description": "Полный процесс восстановления. Описаны три действия, доступные для любой резервной копии (просмотр, скачивание, восстановление), проверка совместимости и её результаты, полный и выборочный режимы восстановления, классификация путей, определяющая, какие изменения применяются сразу, а какие — при следующей загрузке, диспетчер задач при загрузке и этап переустановки компонентов после загрузки.", + "ogTitle": "Резервное копирование ProxMenux — восстановление", + "ogDescription": "Полный и выборочный процессы восстановления с проверкой совместимости, классификацией путей, диспетчером задач при загрузке и переустановкой после загрузки.", + "twitterTitle": "Восстановление резервной копии | ProxMenux", + "twitterDescription": "Как резервная копия хоста ProxMenux превращается обратно в работающий хост Proxmox." + }, + "header": { + "title": "Восстановление резервной копии", + "description": "Полный процесс восстановления: от выбора архива до работающего хоста. Описаны проверка совместимости, два режима восстановления, диспетчер задач при загрузке, этап переустановки после загрузки и механизмы, обеспечивающие предсказуемость восстановления на другом хосте и с другой версией ядра.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "title": "Восстановление воссоздаёт исходный хост, а не только файлы", + "body": "Восстановление резервной копии ProxMenux не сводится к извлечению файлов. Перед применением изменений система восстановления считывает манифест, чтобы выявить различия между исходным и целевым хостами, исключает пути, которые могут нарушить загрузку целевого хоста, и адаптирует пользовательские настройки, которые нельзя скопировать дословно. После необходимой перезагрузки она пытается переустановить зафиксированные в манифесте поддерживаемые компоненты (драйвер NVIDIA, TPU Coral, инструменты для GPU) для работающего ядра целевого хоста. Один выбранный архив служит основой для проверки совместимости, классификации путей, работы диспетчера задач при загрузке и действий после загрузки. Проверьте результаты и журналы по каждому компоненту, чтобы убедиться в результате восстановления." + }, + "threeActions": { + "heading": "Три действия с резервной копией", + "intro": "При выборе резервной копии из списка открывается меню с тремя действиями.", + "actionRows": [ + { + "action": "Просмотр", + "detail": "Открывает архив в режиме только для чтения: содержимое manifest.json (имя исходного хоста, версия PVE, ядро, оборудование, установленные компоненты), список путей внутри rootfs/ и сравнение, показывающее, что изменилось бы на текущем хосте при применении резервной копии." + }, + { + "action": "Скачать", + "detail": "Экспортирует архив в виде переносимого файла .tar.zst (tar со сжатием zstd). Его можно распаковать в любой системе Linux с помощью tar --zstd -xf FILE.tar.zst или в macOS/Windows с помощью любого инструмента с поддержкой zstd (7-Zip, PeaZip, Keka…). Распакованное дерево содержит manifest.json, metadata/ и rootfs/ — именно такую структуру использует восстановление. Полезно для автономного изучения или восстановления на хосте без доступа к исходному месту хранения (PBS, Borg)." + }, + { + "action": "Восстановление", + "detail": "Действие, предусматривающее запись. Распаковывает архив в промежуточный каталог, выполняет проверку совместимости и предлагает выбрать режим (полный или выборочный)." + } + ] + }, + "compatibilityCheck": { + "heading": "Проверка совместимости", + "intro": "Перед записью каких-либо файлов hb_compat_check сравнивает состояние, описанное в манифесте, с состоянием целевого хоста. Проверка выполняется в режиме только для чтения и выдаёт четыре независимых результата, определяющих дальнейший ход восстановления.", + "outputRows": [ + { + "output": "Флаг направления", + "detail": "HB_COMPAT_KERNEL_DIRECTION — одно из значений same, bk_newer или bk_older. Сравнивает основную версию ядра в резервной копии с основной версией ядра целевого хоста. Определяет работу фильтра безопасного подмножества при восстановлении между разными версиями ядра (срабатывает только при bk_older) и этапа заполнения данных, описанного на странице о восстановлении между разными версиями ядра." + }, + { + "output": "Список пропускаемых путей", + "detail": "RS_SKIP_PATHS — все пути, которые НЕ должны применяться при восстановлении. Список формируется двумя механизмами: выявлением расхождений в оборудовании (отсутствующий сетевой интерфейс, отсутствующий идентификатор хранилища, чужой пул ZFS) и — при направлении bk_older — списком небезопасных путей для восстановления между разными версиями ядра." + }, + { + "output": "План переназначения сетевых интерфейсов", + "detail": "Если сетевой интерфейс на целевом хосте имеет тот же MAC-адрес, что и на исходном, но другое имя (что типично после замены материнской платы), проверка совместимости регистрирует план переименования (HB_NIC_REMAP), по которому во время восстановления будет перезаписан /etc/network/interfaces." + }, + { + "output": "План отката", + "detail": "Формируется с помощью compute_rollback_plan.sh. Перечисляет виртуальные машины, контейнеры LXC и компоненты, которые есть на целевом хосте, но отсутствуют в резервной копии. Диалог подтверждения предлагает при желании удалить лишние гостевые системы перед перезагрузкой. Компоненты по-прежнему нужно удалять вручную, а удаление гостевых систем может завершиться ошибкой, поэтому точное соответствие резервной копии не гарантируется." + } + ], + "reportBody": "Проверка также создаёт структурированный отчёт (HB_COMPAT_RESULTS) с категориями PASS / INFO / WARN / FAIL. Записи WARN и FAIL отображаются на панели перед восстановлением; восстановление отказывается продолжать работу только при наличии записи FAIL, проблему которой пользователь не может разрешить нажатием кнопки «Продолжить»." + }, + "twoModes": { + "heading": "Полное и выборочное восстановление", + "intro": "После завершения проверки совместимости появляется меню выбора режима восстановления. Выбор определяет, что будет применено, а не как: оба режима используют один и тот же базовый процесс.", + "modeRows": [ + { + "mode": "Полное восстановление", + "detail": "Применяет все пути из архива, не исключённые фильтрами расхождений и совместимости версий ядра. Также выполняет установку пакетов и автоматическую переустановку компонентов. Этот режим выбран по умолчанию и рекомендуется: его цель — воспроизвести исходную систему, а не выбирать отдельные части." + }, + { + "mode": "Выборочное восстановление", + "detail": "Открывает список с флажками, в котором показаны все пути из архива. Пользователь отмечает нужные пути. Пути, заблокированные фильтром совместимости версий ядра, отображаются серым цветом и недоступны для выбора. В выборочном режиме установка пакетов и автоматическая переустановка компонентов по умолчанию пропускаются: пользователь тем самым указывает, что хочет применить лишь часть данных, а не полностью воспроизвести исходную систему." + } + ] + }, + "pathClassification": { + "heading": "Как классифицируются пути", + "intro": "hb_classify_path относит каждый путь, выбранный для восстановления, к одной из трёх категорий. Категория определяет, когда и почему содержимое по этому пути применяется к системе.", + "rows": [ + { + "class": "горячие", + "detail": "Пути, содержимое которых применяется к работающей системе немедленно. Служба, использующая эти файлы, подхватывает изменения самостоятельно или при следующей перезагрузке конфигурации — перезагрузка системы не требуется. Они составляют основную часть резервной копии: /etc/ssh, /etc/apt, /etc/cron.*, /root, /usr/local/bin, общие файлы конфигурации служб и т. д." + }, + { + "class": "reboot", + "detail": "Пути, применение содержимого которых откладывается до следующей загрузки, а не выполняется немедленно в ходе этой процедуры восстановления. Они влияют на конфигурацию, используемую при загрузке: при формировании загрузчика читается /etc/default/grub, при монтировании файловых систем используется /etc/fstab, а при загрузке модулей — /etc/modules. Отложенные файлы применяются после перезагрузки, затем заново формируются необходимые загрузочные артефакты. Примеры: /etc/default/grub, /etc/kernel, /etc/modules, /etc/fstab, /etc/zfs, /etc/modprobe.d." + }, + { + "class": "опасные", + "detail": "Пути, содержимое которых НЕ применяется к работающей системе: запись во время работы может повредить состояние системы или разорвать активное соединение. Эти файлы помещаются в набор отложенного восстановления: /etc/network записывается на раннем этапе следующей загрузки, до запуска сети, а /etc/pve записывается диспетчером после загрузки, когда файловая система кластера уже доступна. Примеры: /etc/pve (pmxcfs — действующая файловая система FUSE с текущей конфигурацией кластера), /var/lib/pve-cluster (актуальные данные кластера, сохраняемые в каталоге восстановления только для ручного восстановления), /etc/network (может изменить конфигурацию того самого интерфейса, через который пользователь подключён по SSH, и разорвать сеанс)." + } + ] + }, + "fullFlow": { + "heading": "Полный процесс восстановления", + "intro": "Полная последовательность действий от выбора архива до получения работоспособного восстановленного узла. Каждый этап подготавливает данные для следующего; состояние, записанное на ранних этапах, используется на последующих.", + "diagram": "┌─────────────────────────────────────────────────────────────────┐\n│ Archive → staging_root/ │\n│ manifest.json metadata/ rootfs/ │\n└──────────────────────────────┬──────────────────────────────────┘\n │\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 1. hb_compat_check │\n │ · hardware drift → RS_SKIP_PATHS │\n │ · kernel direction → same / bk_newer / bk_older │\n │ · NIC remap plan │\n │ · hydration plan (bk_older only) │\n │ · rollback plan │\n └──────────────────────────────┬──────────────────────────┘\n │\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 2. Confirmation dialog │\n │ Shows: hot count, pending count, drift, hydration, │\n │ NIC remap, cross-kernel note, reinstalls preview │\n └──────────────────────────────┬──────────────────────────┘\n │ (accepted)\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 3. Apply hot paths → LIVE │\n │ _rs_apply rsyncs each hot path │\n │ from staging_root/rootfs to / │\n │ (skips paths in RS_SKIP_PATHS) │\n └──────────────────────────────┬──────────────────────────┘\n │\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 4. _rs_prepare_pending_restore │\n │ /var/lib/proxmenux/restore-pending/'<'id'>'/ │\n │ ├── apply-on-boot.list │\n │ ├── plan.env │\n │ ├── rs-skip-paths.txt │\n │ └── rootfs/ (deferred paths) │\n │ Enable proxmenux-restore-onboot.service │\n └──────────────────────────────┬──────────────────────────┘\n │\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 4b. _rs_import_data_pools │\n │ Imports non-root ZFS pools whose disks are all │\n │ present; retries with -f on foreign hostid; │\n │ skips with a warning when disks are missing. │\n │ Log: /var/log/proxmenux/restore-datapools-*.log │\n └──────────────────────────────┬──────────────────────────┘\n │\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 5. _rs_run_complete_extras │\n │ packages.manual.list │\n │ → cascade-safe filter │\n │ → apt-get install │\n └──────────────────────────────┬──────────────────────────┘\n │\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 6. REBOOT │\n └──────────────────────────────┬──────────────────────────┘\n │\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 7. apply_pending_restore.sh (on early boot) │\n │ Reads plan.env │\n │ Applies apply-on-boot.list (filtered) │\n │ Installs the postboot systemd unit │\n └──────────────────────────────┬──────────────────────────┘\n │\n ▼\n ┌─────────────────────────────────────────────────────────┐\n │ 8. apply_cluster_postboot.sh (~10 minutes) │\n │ Runs after pve-cluster is up │\n │ · Applies /etc/pve entries to pmxcfs │\n │ · update-initramfs -u -k all │\n │ · update-grub / proxmox-boot-tool refresh │\n │ · component --auto-reinstall (nvidia, coral, ...) │\n │ · Boot sanity check │\n │ · Notification: \"Host restore finished\" │\n └─────────────────────────────────────────────────────────┘" + }, + "pendingMachinery": { + "heading": "Механизм отложенного восстановления", + "intro": "Запись файлов по путям категории reboot или dangerous, а также запись при наполнении данными откладываются до следующей загрузки, а не выполняются в работающей системе. Для этого используется небольшой автономный набор файлов в /var/lib/proxmenux/restore-pending/<restore_id>/:", + "rows": [ + { + "file": "apply-on-boot.list", + "content": "По одному относительному пути на строку — точный набор путей, содержимое которых apply_pending_restore.sh применит из подготовленной rootfs. Прочитав этот файл, пользователь может точно узнать, что изменится при следующей загрузке." + }, + { + "file": "plan.env", + "content": "Переменные окружения, загружаемые сценарием при загрузке системы: идентификатор восстановления, флаги совместимости (HB_COMPAT_CROSS_VERSION, HB_COMPAT_KERNEL_DIRECTION, HB_HYDRATION_APPLIED), флаг явного разрешения отката, параметры кластера." + }, + { + "file": "rs-skip-paths.txt", + "content": "Итоговый список RS_SKIP_PATHS, сохранённый для того, чтобы после перезагрузки apply_pending_restore.sh применял те же исключения, которые были определены на интерактивном этапе. Это предотвращает восстановление при загрузке файлов по путям, затронутым расхождениями конфигурации или небезопасным при переходе между ядрами." + }, + { + "file": "rootfs/", + "content": "Сами подготовленные файлы — именно те байты, которые будут записаны. Они хранятся в той же файловой системе, что и /, чтобы rsync при загрузке выполнялся быстро и не зависел от доступности внешнего хранилища в момент загрузки." + } + ], + "unitBody": "В конце интерактивного этапа включается юнит systemd proxmenux-restore-onboot.service. Это служба однократного запуска, которая срабатывает на раннем этапе следующей загрузки (до запуска сети), вызывает apply_pending_restore.sh, а затем отключает себя. У юнита нет условия проверки пути: сам сценарий завершает работу, если /var/lib/proxmenux/restore-pending/current не существует, поэтому при загрузке без отложенного восстановления он ничего не делает. Запуск отдельного proxmenux-apply-cluster-postboot.service обусловлен ConditionPathExists=/var/lib/proxmenux/cluster-apply-pending." + }, + "postbootDispatcher": { + "heading": "Диспетчер после загрузки — apply_cluster_postboot.sh", + "intro": "Здесь заканчивается интерактивный этап и происходит фактическое воссоздание узла. apply_cluster_postboot.sh устанавливается как второй юнит systemd однократного запуска (proxmenux-apply-cluster-postboot.service), у которого цели After=/Wants= обеспечивают запуск только после того, как pve-cluster и network-online станут активными. Именно здесь выполняются действия восстановления, изменяющие состояние узла.", + "tasks": [ + { + "task": "Применить /etc/pve", + "detail": "/etc/pve — это действующая точка монтирования FUSE для pmxcfs: на раннем этапе загрузки запись в неё невозможна. После запуска кластерной файловой системы диспетчер копирует файлы из подготовленной rootfs в действующую /etc/pve по одному, не перезапуская pve-cluster. Сохранённый /var/lib/pve-cluster/config.db из резервной копии (или выбранный вместо него config.db.raw-fallback) записывается по схеме systemctl stop pve-cluster → атомарное копирование файла → systemctl start pve-cluster, чтобы при повторном запуске pmxcfs заново считал восстановленное состояние." + }, + { + "task": "Пересборка initramfs и загрузчика", + "detail": "Выполняет update-initramfs -u -k all для каждого установленного ядра, затем либо update-grub (для систем с GRUB), либо proxmox-boot-tool refresh (для систем с systemd-boot / ZFS). Шаг пропускается, если на интерактивном этапе установлено, что по путям, влияющим на работу этих инструментов, ничего не изменилось." + }, + { + "task": "Автоматическая переустановка компонентов", + "detail": "Читает восстановленный components_status.json и последовательно обрабатывает зарегистрированные поддерживаемые установщики (nvidia_driver, coral_driver, amdgpu_top, intel_gpu_tools). Каждый выбранный установщик запускается в режиме --auto-reinstall, читает своё сохранённое состояние и выполняет переустановку с учётом среды целевой системы, при необходимости пересобирая модули ядра. Этот шаг откладывается до перезагрузки, чтобы установщики использовали ядро, работающее в этот момент в целевой системе. Ошибки отдельных компонентов записываются в журнал и не препятствуют обработке следующего компонента." + }, + { + "task": "Проверка корректности загрузки", + "detail": "Перед отправкой уведомления о завершении проверяет, что proxmox-boot-tool status показывает настроенный ESP, для каждого /boot/vmlinuz-* существует соответствующий каталог /lib/modules/<ver>, а /vmlinuz указывает на существующий объект. Любые несоответствия отображаются в уведомлении, а не скрываются." + }, + { + "task": "Уведомление о завершении", + "detail": "Отправляет событие Host restore finished через hb_notify_lifecycle. Включает общую длительность, количество применённых путей, предупреждения проверки корректности загрузки, если они есть, и ссылку на журнал по пути /var/log/proxmenux/proxmenux-cluster-postboot-*.log. Если уведомления не настроены, событие не сопровождается оповещением, но всё по-прежнему записывается в журнал." + } + ] + }, + "liveProgress": { + "heading": "Ход выполнения в реальном времени на вкладке «Резервные копии» Monitor", + "body": "После перезагрузки на вкладке «Резервные копии» в ProxMenux Monitor отображается обновляемая в реальном времени карточка действий после восстановления, отражающая состояние proxmenux-apply-cluster-postboot.service во время его выполнения. Карточка использует данные /var/lib/proxmenux/restore-state.json, которые диспетчер обновляет на каждом этапе: применение конфигурации кластера, пересборка initramfs, обновление загрузчика, переустановка каждого компонента, проверка корректности загрузки и завершение.", + "fields": [ + { + "name": "Индикатор состояния", + "detail": "Одно из состояний: Восстановление выполняется, Восстановление завершено или Сбой восстановления. Карточка опрашивает файл состояния каждые 2 секунды во время выполнения и каждые 30 секунд после завершения." + }, + { + "name": "Индикатор выполнения и счётчик шагов", + "detail": "Показывает N/M steps с названием текущего шага. Во время восстановления расчётное время определяется на основе выполненных шагов и прошедшего времени." + }, + { + "name": "Список компонентов", + "detail": "Отдельная строка для каждого переустанавливаемого драйвера (NVIDIA, инструменты Intel GPU, инструменты AMD, Coral TPU) с installing / ok / failed и ссылкой на журнал соответствующего компонента по пути /var/log/proxmenux/component-*.log." + }, + { + "name": "Импорт пулов данных", + "detail": "Блок data_pools_import показывает пять строк с цветовым обозначением: Импортировано, Принудительно (импортировано с -f при обнаружении чужого hostid), Пропущено: не все диски (пулы, у которых присутствует лишь часть дисков), Пропущено: диски отсутствуют (нет ни одного диска) и Сбой. Состояние сохраняется в /var/lib/proxmenux/restore-state.json, а необработанный журнал каждого запуска находится по пути /var/log/proxmenux/restore-datapools-<timestamp>.log." + }, + { + "name": "Предупреждения проверки корректности загрузки", + "detail": "Диспетчер проверяет отсутствие /lib/modules/<kernel>, отсутствие конфигурации ESP и наличие символических ссылок /vmlinuz, указывающих на несуществующие объекты. Любое предупреждение отображается здесь в виде цветного баннера." + }, + { + "name": "Различия при откате", + "detail": "Перечисляет виртуальные машины, контейнеры LXC и компоненты, которые есть в целевой системе, но отсутствовали в восстановленной резервной копии. Это те же записи, которые отображались перед восстановлением в диалоге отката с предупреждением об удалении данных. Каждая строка содержит команду для ручной очистки." + }, + { + "name": "Последние строки журнала", + "detail": "Последние 600 строк proxmenux-cluster-postboot-<ts>.log с фильтром Только проблемы, который оставляет только строки, соответствующие error, warning, failed, ✗ или traceback." + } + ], + "dismissBody": "Когда восстановление завершено или завершилось с ошибкой, кнопка «Скрыть» сворачивает карточку. Файл состояния сохраняется, а кнопка «История» позволяет снова открыть сведения об этом и предыдущих восстановлениях (последние 20 запусков архивируются в /var/lib/proxmenux/restore-history/).", + "imageAlt": "Модальное окно «Подробности» для отображения хода восстановления после загрузки в ProxMenux Monitor, открытое во время восстановления: синий индикатор «Выполняется восстановление», текущий этап («Пересоздание initramfs»), расчётное оставшееся время, частично заполненная полоса прогресса и последние строки журнала действий после загрузки, обновляемые в реальном времени.", + "imageCaption": "Модальное окно «Подробности», пока диспетчер действий после загрузки ещё работает: индикатор состояния, текущий этап, оставшееся время и последние строки журнала, обновляемые в реальном времени.", + "detailsImageAlt": "То же модальное окно «Подробности» после завершения восстановления: зелёный индикатор «Восстановление завершено», общая продолжительность выполнения (0 мин 53 с), полностью заполненная полоса прогресса 6/6, пустой раздел «Изменения для отката» и архивный журнал действий после загрузки.", + "detailsImageCaption": "То же модальное окно после завершения выполнения: индикатор состояния, общая продолжительность, заполненная полоса прогресса и архивный журнал действий после загрузки." + }, + "postbootExample": { + "heading": "Как выглядит этап после загрузки в консоли", + "body": "В физической консоли хоста успешное выполнение диспетчера завершается сообщением [ OK ] Finished proxmenux-apply-cluster-postboot.service, часто рядом с сообщениями OK для multi-user.target и graphical.target. Это означает завершение процесса диспетчера. При этом могли быть зафиксированы сбои отдельных компонентов или предупреждения при загрузке; прежде чем считать хост полностью восстановленным, проверьте состояния компонентов и журналы в Monitor.", + "imageAlt": "Физическая консоль Proxmox с сообщением «[ OK ] Завершено proxmenux-apply-cluster-postboot.service — ProxMenux Применение конфигураций кластера (после загрузки).», за которым следуют сообщения OK для multi-user.target и graphical.target; выше отображается приглашение для входа на хост.", + "imageCaption": "Физическая консоль после завершения процесса диспетчера. Сообщение «Завершено proxmenux-apply-cluster-postboot.service» обозначает завершение процесса, о котором также сообщает надпись «Восстановление хоста завершено» в Monitor. Результаты работы компонентов и предупреждения всё ещё необходимо проверить." + }, + "tenMinutes": { + "heading": "Почему важны последние десять минут", + "intro": "Сама перезагрузка занимает несколько секунд, но диспетчеру действий после загрузки требуется около десяти минут, чтобы завершить восстановление. В это время хост доступен и вход в систему работает, однако некоторые службы (прежде всего зависящие от драйвера GPU) ещё недоступны. Распределение времени для типичного хоста Proxmox с установленными NVIDIA и Coral:", + "rows": [ + { + "stage": "Загрузка и готовность pve-cluster", + "time": "~30 с", + "detail": "Стандартная загрузка Proxmox. К концу этого этапа доступны SSH, веб-интерфейс и вход в систему." + }, + { + "stage": "Применение /etc/pve к pmxcfs", + "time": "~10 с", + "detail": "Быстро: небольшие файлы конфигурации поочерёдно копируются в работающую кластерную файловую систему." + }, + { + "stage": "Пересоздание initramfs для всех ядер", + "time": "3–5 мин", + "detail": "update-initramfs -u -k all пересоздаёт образ initramfs для каждого установленного ядра. На этот этап приходится основная часть времени ожидания." + }, + { + "stage": "Пересоздание конфигурации загрузчика", + "time": "10–30 с", + "detail": "update-grub или proxmox-boot-tool refresh. Быстро даже на ZFS." + }, + { + "stage": "Переустановка драйвера NVIDIA (если применимо)", + "time": "5–10 мин", + "detail": "Загружает сохранённую версию драйвера, компилирует модули DKMS для текущего ядра и применяет патч ProxMenux, если он был в исходной системе. Самая длительная отдельная задача." + }, + { + "stage": "Повторная установка Coral и других компонентов", + "time": "3–5 мин", + "detail": "Компиляция DKMS для Coral, установка intel-gpu-tools через apt, загрузка и установка .deb для amdgpu_top." + }, + { + "stage": "Проверка работоспособности и уведомление", + "time": "~2 с", + "detail": "Требует мало ресурсов. Пользователь узнаёт о завершении выполнения сразу при отправке уведомления." + } + ], + "outroBody": "В течение этого времени при входе в систему могут появляться сообщения об отсутствии инструментов (nvidia-smi не найден, coral не обнаружен), поскольку повторная установка ещё выполняется в фоновом режиме. Уведомление о завершении означает окончание этой работы; проверьте результаты по компонентам, предупреждения и журналы, чтобы отличить успешное выполнение от отдельных сбоев." + }, + "destructiveRollback": { + "heading": "Необязательный откат с удалением данных", + "body": "По умолчанию восстановление выполняется в режиме добавления: дополнительные ВМ, контейнеры LXC и компоненты на целевой системе сохраняются. При обнаружении различий в диалоговом окне подтверждения предлагается Выполнить откат с удалением данных?; по умолчанию выбран ответ «Нет». При согласии перед перезагрузкой вызывается _rs_execute_rollback для попытки удаления перечисленных дополнительных ВМ и контейнеров LXC. Компоненты помечаются для удаления вручную, поскольку автоматическое удаление не реализовано. При сбоях удаления гостевых систем выводятся сообщения, а обработка продолжается, поэтому точное соответствие резервной копии не гарантируется. Прежде чем выбрать этот вариант с удалением данных, проверьте перечисленные имена и VMID/CTID." + }, + "logs": { + "heading": "Где находятся журналы", + "rows": [ + { + "log": "/tmp/proxmenux--restore-YYYYMMDD_HHMMSS.log", + "detail": "Записывается на интерактивном этапе (pbs, borg или local). При повторной установке пакетов и выполнении операций с пулами данных записи также сохраняются в /var/log/proxmenux/restore-apt-*.log и restore-datapools-*.log." + }, + { + "log": "/var/log/proxmenux/proxmenux-restore-onboot-YYYYMMDD_HHMMSS.log", + "detail": "Записывается apply_pending_restore.sh на раннем этапе загрузки. Содержит сведения о подключении plan.env, проходе применения при загрузке и фильтрации исключаемых путей." + }, + { + "log": "/var/log/proxmenux/proxmenux-cluster-postboot-YYYYMMDD_HHMMSS.log", + "detail": "Записывается apply_cluster_postboot.sh. Содержит сведения о применении конфигурации pve-cluster, вывод initramfs и загрузчика, вывод установщиков отдельных компонентов, результаты проверки работоспособности и содержимое уведомления." + }, + { + "log": "/var/log/proxmenux/component--YYYYMMDD_HHMMSS.log", + "detail": "Отдельный журнал для каждого установщика компонентов (nvidia, coral и т. д.), запущенного на этапе после загрузки. Полезен, если повторная установка конкретного компонента завершилась сбоем и пользователю нужен вывод самого инструмента." + }, + { + "log": "/var/log/proxmenux/restore-datapools-YYYYMMDD_HHMMSS.log", + "detail": "Записывается _rs_import_data_pools. Содержит перечень некорневых пулов из манифеста, результат для каждого пула (импортирован без проблем, импортирован с -f из-за чужого hostid, пропущен из-за отсутствия дисков или произошёл сбой), а также необработанный вывод каждого вызова zpool import." + } + ] + }, + "whereNext": { + "heading": "Куда перейти дальше", + "items": [ + { + "label": "Восстановление с другой версией ядра", + "href": "/docs/backup-restore/cross-kernel", + "tail": " — фильтр безопасного подмножества с учётом направления и этап дополнения необходимыми файлами, запускаемый, если ядро целевой системы отличается от ядра в резервной копии." + }, + { + "label": "Как это работает", + "href": "/docs/backup-restore/how-it-works", + "tail": " — структура архива, манифест и перечень приложений, используемые при восстановлении." + }, + { + "label": "Задания по расписанию", + "href": "/docs/backup-restore/scheduled-jobs", + "tail": " — автоматический процесс, создающий архивы, которые используются на этой странице." + } + ] + } +} diff --git a/web/messages/ru/docs/backup-restore/scheduled-jobs.json b/web/messages/ru/docs/backup-restore/scheduled-jobs.json new file mode 100644 index 00000000..a20db29e --- /dev/null +++ b/web/messages/ru/docs/backup-restore/scheduled-jobs.json @@ -0,0 +1,152 @@ +{ + "meta": { + "title": "Задания по расписанию — таймеры, режим привязки, правила хранения | ProxMenux", + "description": "Задания резервного копирования хоста ProxMenux по расписанию. Два режима создания (собственный таймер systemd или привязка к существующему заданию PVE vzdump), параметры хранения, применяемые отдельно для каждого задания через proxmox-backup-client/borg/локальную очистку, структура хранения в /var/lib/proxmenux/backup-jobs и скрипт запуска, создающий архивы, идентичные архивам интерактивного процесса.", + "ogTitle": "Резервное копирование ProxMenux — задания по расписанию", + "ogDescription": "Автоматическое резервное копирование хоста по расписанию с режимом привязки, правилами хранения и теми же тремя вариантами назначения, что и в интерактивном процессе.", + "twitterTitle": "Задания по расписанию | ProxMenux", + "twitterDescription": "Автоматическое резервное копирование хоста по расписанию с режимом привязки и правилами хранения." + }, + "header": { + "title": "Задания по расписанию", + "description": "Автоматическое резервное копирование хоста. Две модели создания заданий: новое независимое задание с собственным расписанием или задание, привязанное к существующему заданию vzdump в PVE и наследующее его расписание и правила хранения. В обоих случаях создаются такие же архивы, как и при интерактивном запуске.", + "section": "Резервное копирование и восстановление" + }, + "intro": { + "title": "Две модели заданий по расписанию", + "body": "Задание по расписанию можно создать по одной из двух моделей:", + "modelsList": [ + "Новое независимое задание — ProxMenux самостоятельно задаёт расписание задания с помощью отдельного таймера systemd, независимо от других заданий на хосте. Поддерживаются все три типа назначения: локальное хранилище, PBS и Borg.", + "Привязка к существующему заданию vzdump в PVE — задание не имеет собственного расписания; оно запускается автоматически при каждом выполнении родительского задания vzdump в PVE, которое уже создаёт резервные копии виртуальных машин и контейнеров LXC на этом хосте. Расписание и правила хранения наследуются от родительского задания. Поддерживаются локальное хранилище и PBS (Borg не поддерживается, поскольку в PVE нет встроенного планировщика для Borg)." + ] + }, + "attachBadge": { + "title": "Режим привязки — рекомендуется, если задание vzdump в PVE уже существует", + "body": "Если для виртуальных машин и контейнеров LXC на этом узле уже настроено задание резервного копирования vzdump в PVE, привязка резервного копирования хоста позволяет запускать его после задания резервного копирования гостевых систем, в рамках одного цикла резервного копирования. При восстановлении конфигурации гостевых систем берутся из резервной копии хоста (из /etc/pve), а их диски — из резервных копий vzdump, созданных в этом цикле. Это помогает согласовать восстановление всего узла, но не обеспечивает атомарный снимок: изменения, внесённые во время цикла резервного копирования, могут привести к расхождениям между конфигурацией хоста и состоянием дисков гостевых систем." + }, + "frequencyBadge": { + "title": "Рекомендуемая частота", + "body": "Чтобы обеспечить максимальную совместимость резервной копии хоста с его будущим восстановлением, создавайте резервные копии хоста часто. Чем ближе резервная копия к текущему состоянию хоста, тем меньше расхождений в конфигурации, пакетах и компонентах придётся устранять при восстановлении." + }, + "modes": { + "heading": "Два режима", + "rows": [ + { + "mode": "Новое задание по расписанию", + "backends": "Локальное хранилище, PBS, Borg", + "schedule": "Собственное выражение OnCalendar (синтаксис календаря systemd — например, daily, Mon..Fri 03:00).", + "retention": "Запрашиваются отдельно: keep-last, keep-hourly, keep-daily, keep-weekly, keep-monthly, keep-yearly. Применяются скриптом запуска после каждого успешного резервного копирования." + }, + { + "mode": "Привязка к заданию vzdump в PVE", + "backends": "Локальное хранилище, PBS (на стороне PVE нет планировщика для Borg)", + "schedule": "Наследуется от родительского задания PVE. На стороне ProxMenux таймер systemd не устанавливается.", + "retention": "Наследуются из конфигурации prune-backups родительского задания (через hb_pve_prune_to_keep_env устанавливается взаимно однозначное соответствие с переменными KEEP_* скрипта запуска)." + } + ] + }, + "attachDetail": { + "heading": "Как работает режим привязки", + "intro": "PVE записывает задания vzdump в /etc/pve/jobs.cfg — по одному блоку на задание, каждый из которых указывает на хранилище, куда поступают дампы виртуальных машин и LXC. Для режима привязки требуется тип хранилища, поддерживаемый ProxMenux (локальное хранилище или PBS). Резервное копирование хоста запускается обработчиком job-end после завершения задания резервного копирования гостевых систем.", + "steps": [ + { + "step": "1", + "detail": "При создании задания ProxMenux выводит список совместимых родительских заданий PVE через hb_pve_list_vzdump_jobs_for_backend. Пользователь выбирает одно из них." + }, + { + "step": "2", + "detail": "В .env задания записываются PVE_PARENT_JOB, PVE_STORAGE и унаследованные значения KEEP_*; таймер systemd не создаётся." + }, + { + "step": "3", + "detail": "hb_install_vzdump_hook регистрирует скрипт-обработчик в /etc/vzdump.conf. На этапе job-end любого задания vzdump он сравнивает переданное значение $STOREID со значением PVE_STORAGE каждого включённого привязанного задания и вызывает скрипт запуска для совпавших заданий. Сопоставление выполняется по хранилищу, а не по идентификатору выбранного родительского задания." + }, + { + "step": "4", + "detail": "Архив сохраняется в том же хранилище, куда vzdump только что записал резервные копии: path/dump/ для локального хранения или в репозитории PBS, настроенном в записи хранилища PVE." + } + ], + "outroBody": "В режиме привязки собственного таймера нет. Отключение или удаление выбранного родительского задания PVE прекращает запуск по этому заданию, но другое задание vzdump, использующее то же хранилище, по-прежнему может запустить привязанное резервное копирование хоста. Чтобы предотвратить это, отключите или удалите само задание ProxMenux. При отключении запись задания остаётся на диске; позднее его можно снова включить или привязать." + }, + "storageLayout": { + "heading": "Файлы, из которых состоит задание", + "intro": "Каждое задание, выполняемое по расписанию, полностью описывается тремя или четырьмя файлами на диске. Из них можно получить полную конфигурацию задания, не обращаясь к интерфейсу.", + "rows": [ + { + "path": "/var/lib/proxmenux/backup-jobs/JOB_ID.env", + "content": "Система хранения, идентификатор резервной копии или место назначения, расписание (режим создания) или родительское задание PVE (режим привязки), флаг включения, значения KEEP_* для политики хранения, ссылки на учётные данные." + }, + { + "path": "/var/lib/proxmenux/backup-jobs/JOB_ID.paths", + "content": "По одному абсолютному пути на строку — фиксированный набор путей, полученный из профиля при создании задания. После изменения файла при следующем срабатывании таймера задание выполнится с новым набором путей." + }, + { + "path": "/etc/systemd/system/proxmenux-backup-JOB_ID.timer + .service", + "content": "Только в режиме создания. Служба вызывает run_scheduled_backup.sh JOB_ID. Таймер задаёт расписание с помощью Persistent=true (пропущенные запуски выполняются при следующей загрузке) и небольшого значения RandomizedDelaySec=120 для распределения нагрузки, когда несколько заданий используют одно и то же выражение OnCalendar." + }, + { + "path": "Скрипт-обработчик /etc/vzdump.conf", + "content": "Только в режиме привязки. Устанавливается однократно с помощью hb_install_vzdump_hook; сопоставляет значение PVE_STORAGE каждого привязанного задания со значением $STOREID, которое PVE передаёт скрипту-обработчику." + } + ] + }, + "runner": { + "heading": "Что происходит при запуске задания", + "intro": "Каждое задание — как созданное с собственным расписанием, так и привязанное — выполняет одну и ту же последовательность из трёх шагов:", + "steps": [ + "Подготовка резервной копии. Считывается конфигурация задания (место назначения, профиль, пути), и формируется дерево файлов архива точно так же, как в интерактивном режиме. В результате получается тот же архив, что и при ручном резервном копировании с этими настройками.", + "Запись в место назначения. Архив загружается или записывается в настроенное место назначения — локальный файл .tar.zst, резервную копию PBS или архив Borg — с использованием тех же инструментов и учётных данных, что и при ручном резервном копировании в то же место назначения.", + "Применение политики хранения. Удаляет старые резервные копии из места назначения, сохраняя количество копий, заданное в параметрах keep-last / keep-daily / keep-weekly задания. Очистку выполняет само место назначения: PBS применяет собственную политику хранения, Borg запускает borg prune, а для Local ProxMenux удаляет файлы, не входящие в число последних резервных копий, заданное параметром keep-last." + ] + }, + "management": { + "heading": "Управление заданиями", + "intro": "Меню планировщика в текстовом интерфейсе скриптов («Планировщик резервного копирования и политика хранения») предлагает действия «Запустить сейчас», «Включить / отключить» и «Удалить», а также список заданий со статусом последнего запуска. Действия «Изменить» и «Просмотреть журнал» доступны только на вкладке резервных копий в Monitor.", + "rows": [ + { + "action": "Запустить сейчас", + "detail": "Немедленно запускает обработчик задания, минуя таймер или обработчик vzdump. Это позволяет проверить конфигурацию задания, не дожидаясь следующего запуска по расписанию." + }, + { + "action": "Включить / отключить", + "detail": "Режим создания: к таймеру применяется systemctl enable/disable --now. Режим привязки: переключается флаг ENABLED в файле окружения задания — скрипт-обработчик учитывает его при следующем запуске PVE." + }, + { + "action": "Изменить (только в Monitor)", + "detail": "Повторно открывает диалоги настройки места назначения, расписания, профиля и политики хранения, затем перезаписывает файлы задания. Идентификатор задания сохраняется." + }, + { + "action": "Удалить", + "detail": "Удаляет файл переменных окружения задания, файл путей, таймер и службу systemd (режим New), а также отключает привязку хука (режим Attach). Не затрагивает архивы, уже находящиеся в месте назначения." + }, + { + "action": "Просмотр журнала (только в Monitor)", + "detail": "Выводит /var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log в реальном времени — для каждого запуска создаётся отдельный файл журнала. При запуске через службу systemd исполнитель также выводит краткую строку состояния в journald." + } + ] + }, + "notifications": { + "heading": "Уведомления", + "body": "Каждый запуск по расписанию вызывает те же события hb_notify_lifecycle, что и интерактивный процесс (start, complete, fail). Если в Monitor настроены каналы уведомлений, результаты автоматических заданий сообщаются так же, как и результаты резервного копирования вручную: пользователю не нужно проверять журнал, чтобы узнать, успешно ли выполнено задание." + }, + "whereNext": { + "heading": "Куда перейти дальше", + "items": [ + { + "label": "Создание резервных копий", + "href": "/docs/backup-restore/creating-backups", + "tail": " — интерактивный процесс, использующий общий с планировщиком бэкенд." + }, + { + "label": "Места хранения", + "href": "/docs/backup-restore/destinations", + "tail": " — настройки для каждого бэкенда, используемые как интерактивным процессом, так и планировщиком." + }, + { + "label": "Восстановление", + "href": "/docs/backup-restore/restoring", + "tail": " — процесс, использующий результаты выполнения заданий." + } + ] + } +} diff --git a/web/messages/ru/docs/create-vm/index.json b/web/messages/ru/docs/create-vm/index.json new file mode 100644 index 00000000..0c31744d --- /dev/null +++ b/web/messages/ru/docs/create-vm/index.json @@ -0,0 +1,175 @@ +{ + "meta": { + "title": "Создание ВМ на Proxmox VE — мастера для Synology, Windows, Linux и NAS | ProxMenux", + "description": "Создавайте и настраивайте виртуальные машины на Proxmox VE с помощью ProxMenux. Специализированные мастера для NAS-систем (Synology DSM, TrueNAS, OpenMediaVault, XigmaNAS и др.), Windows, дистрибутивов Linux, а также внешний установщик macOS. Продуманные настройки оборудования ВМ, хранилища и сети по умолчанию.", + "ogTitle": "Создание ВМ на Proxmox VE — мастера для Synology, Windows, Linux и NAS", + "ogDescription": "Мастера ProxMenux для создания ВМ с Synology DSM, TrueNAS, OMV, XigmaNAS, Windows и Linux на Proxmox VE.", + "ogImageAlt": "Меню создания ВМ в ProxMenux", + "twitterTitle": "Создание ВМ на Proxmox VE | ProxMenux", + "twitterDescription": "Мастера для создания ВМ с Synology, TrueNAS, OMV, XigmaNAS, Windows и Linux на Proxmox VE." + }, + "header": { + "title": "Создать ВМ", + "description": "В ProxMenux создание ВМ организовано через интерактивное меню выбора. Выберите семейство операционной системы, и соответствующий мастер поможет выбрать ISO-образ, настроить CPU, RAM, BIOS, сеть и хранилище, а при необходимости — проброс GPU.", + "section": "Виртуальные машины" + }, + "intro": { + "title": "Для чего предназначено это меню", + "body": "Меню создания ВМ направляет к нужному мастеру, а не является единым мастером. Оно спрашивает, какое семейство операционной системы вы хотите установить, и загружает соответствующие средства выбора ISO-образа и настройки. Стандартные сценарии используют продуманные предустановки ProxMenux; расширенные сценарии предоставляют доступ ко всем настраиваемым параметрам до создания ВМ." + }, + "opening": { + "heading": "Открытие меню", + "body": "В главном меню ProxMenux выберите Создать ВМ. Вы увидите следующее:", + "imageAlt": "Меню выбора мастера создания ВМ с тремя пунктами ProxMenux (NAS / Windows / Linux), за которыми следует раздел Community Scripts (macOS / Другие)" + }, + "families": { + "heading": "Три семейства ОС", + "intro": "Три пункта ProxMenux в верхней части меню используют один и тот же базовый механизм и одинаковую последовательность действий после выбора ISO-образа. Они лишь направляют к разным средствам выбора ISO-образов и применяют настройки по умолчанию, адаптированные для каждого семейства. Выберите пункт, соответствующий гостевой ОС, которую хотите установить.", + "routes": [ + { + "key": "nas", + "title": "Системы NAS", + "icon": "HardDrive", + "href": "/docs/create-vm/system-nas", + "accent": "border-emerald-300 bg-emerald-50", + "iconBg": "bg-emerald-100 text-emerald-700", + "description": "Восемь операционных систем для NAS, каждая в отдельной ВМ. Для большинства используется сценарий автоматического выбора ISO-образа; для Synology DSM запускается специализированный мастер загрузчика.", + "bullets": [ + "Synology DSM (загрузчики Arc / RR / Alpine RedPill M-shell)", + "TrueNAS SCALE и CORE (ZFS)", + "OpenMediaVault (на базе Debian)", + "XigmaNAS (FreeBSD ZFS)", + "Rockstor (openSUSE / Btrfs), ZimaOS, FygoOS" + ] + }, + { + "key": "windows", + "title": "Системы Windows", + "icon": "MonitorCog", + "href": "/docs/create-vm/system-windows", + "accent": "border-blue-300 bg-blue-50", + "iconBg": "bg-blue-100 text-blue-700", + "description": "Windows 10, 11 и редакции Windows Server с подходящими для Windows настройками по умолчанию (q35 + OVMF + TPM 2.0) и заранее подключённым носителем с драйверами VirtIO.", + "bullets": [ + "UUP Dump для получения актуальных ISO-образов", + "Или локальный ISO-образ из /var/lib/vz/template/iso", + "TPM 2.0 добавляется автоматически", + "ISO-образ с драйверами VirtIO подключается к ide3", + "Канал гостевого агента включён" + ] + }, + { + "key": "linux", + "title": "Системы Linux", + "icon": "Laptop", + "href": "/docs/create-vm/system-linux", + "accent": "border-amber-300 bg-amber-50", + "iconBg": "bg-amber-100 text-amber-700", + "description": "Подборка официальных ISO-образов Linux с автоматической загрузкой из первоисточников, а также возможность выбрать локальный ISO-образ для любых других систем.", + "bullets": [ + "Ubuntu (Desktop / Server, 20.04–25.10)", + "Debian (Desktop / Netinst, 11–13)", + "Fedora, Arch, Rocky, Mint, openSUSE", + "Alpine, Kali, Manjaro", + "Путь к локальному ISO-файлу для собственных образов" + ] + } + ] + }, + "community": { + "title": "Скрипты сообщества (здесь не документируются)", + "intro": "Два пункта под разделителем Скрипты сообщества запускают код, который не входит в состав ProxMenux, поэтому они намеренно не рассматриваются в этой документации:", + "macosRich": "Система macOS — запускает внешний установщик OSX-PROXMOX. Он клонирует исходный репозиторий, подготавливает хост и автоматически перезагружает его по завершении. Обратитесь к документации самого проекта.", + "othersRich": "Другие системы (на базе Linux) — загружает подборку установщиков систем на базе Linux от сообщества (ОС для домашних серверов, специализированные системы для маршрутизаторов и межсетевых экранов и т. п.). Каждый скрипт сообщества сопровождается вне проекта ProxMenux." + }, + "afterPick": { + "heading": "Что происходит после выбора ОС", + "intro": "После выбора ISO-образа диспетчер выполняет одну и ту же последовательность действий независимо от семейства ОС:", + "items": [ + "Настройки по умолчанию или расширенные настройки. В диалоговом окне подтверждения можно принять предустановленные настройки ProxMenux или открыть полный конфигуратор (модель и число ядер процессора, оперативная память, BIOS/UEFI, модель сетевого адаптера, тип машины).", + "План хранения данных. В одной ВМ можно сочетать один или несколько виртуальных дисков, импортированные диски и устройства с прямым пробросом PCI (контроллер целиком / NVMe).", + "Необязательный проброс GPU. Если на хосте обнаружен совместимый GPU, ProxMenux предлагает запустить помощник настройки GPU после создания ВМ — может потребоваться перезагрузка.", + "Создание ВМ. Создаётся ВМ, ей назначаются теги и добавляется оформленное HTML-описание для быстрого доступа к справочной информации в интерфейсе Proxmox." + ], + "tipTitle": "Для ВМ, которые планируется использовать длительное время, выбирайте расширенную настройку", + "tipBody": "Настройки по умолчанию хорошо подходят для быстрых тестов. Для ВМ, которую планируется использовать длительное время, расширенная настройка позволяет сразу выбрать подходящие BIOS (SeaBIOS или OVMF/UEFI), тип машины (i440fx или q35) и дисковый контроллер (VirtIO SCSI single или SATA) — впоследствии изменить их будет непросто." + }, + "scripts": { + "heading": "Используемые скрипты", + "intro": "Диспетчер подключает несколько общих скриптов компонентов, для которых нет отдельных страниц документации. Они перечислены здесь для справки. На каждой дочерней странице есть ссылка на основной скрипт соответствующего сценария.", + "headerScript": "Скрипт", + "headerRole": "Назначение", + "rows": [ + { + "path": "menus/create_vm_menu.sh", + "role": "Диспетчер, служащий точкой входа." + }, + { + "path": "vm/select_nas_iso.sh", + "role": "Выбор ISO-образа или готового образа системы для NAS (Synology, TrueNAS, OMV, Rockstor, XigmaNAS, ZimaOS, FygoOS)." + }, + { + "path": "vm/select_windows_iso.sh", + "role": "Выбор ISO-образа Windows. При необходимости передаёт задачу сборщику UUP Dump." + }, + { + "path": "vm/select_linux_iso.sh", + "role": "Выбор ISO-образа Linux для сценария установки Linux (основные дистрибутивы)." + }, + { + "path": "vm/synology.sh", + "role": "Сценарий установки Synology DSM: загружает загрузчик и образ DSM и подготавливает профиль ВМ." + }, + { + "path": "vm/zimaos.sh", + "role": "Сценарий установки ZimaOS: загружает образ и подключает его в конфигурации ВМ." + }, + { + "path": "vm/vm_configurator.sh", + "role": "Мастер настройки с выбором параметров по умолчанию или расширенных параметров: модель и количество ядер CPU, RAM, BIOS, сетевой адаптер, тип машины." + }, + { + "path": "vm/disk_selector.sh", + "role": "План хранения данных: виртуальный диск, импорт диска или проброс контроллера/NVMe." + }, + { + "path": "vm/vm_creator.sh", + "role": "Завершающий этап создания ВМ: применяет конфигурацию, подключает устройства хранения данных, записывает HTML-описание." + }, + { + "path": "vm/guest_agent_config.sh", + "role": "Необязательный обработчик настройки гостевого агента QEMU, используемый в нескольких сценариях." + } + ] + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/disk-manager", + "label": "Диспетчер дисков", + "tail": " — подключение существующих физических дисков или импорт образов дисков в ВМ." + }, + { + "href": "/docs/utils/UUp-Dump-ISO-Creator", + "label": "Создание ISO с помощью UUP Dump", + "tail": " — создание установочных ISO-образов Windows, готовых к использованию в качестве загрузочных носителей." + }, + { + "href": "/docs/utils/import-vm", + "label": "Импорт ВМ из OVA / OVF", + "tail": " — импорт готовых ВМ из экспортов VMware / VirtualBox / ProxMenux." + }, + { + "href": "/docs/hardware/gpu-vm-passthrough", + "label": "Добавить GPU в ВМ (прямой проброс)", + "tail": " — проброс GPU в только что созданную ВМ." + }, + { + "href": "/docs/help-info/vm-ct-commands", + "label": "Команды управления ВМ и контейнерами", + "tail": " — справочник по qm для работы в командной строке." + } + ] + } +} diff --git a/web/messages/ru/docs/create-vm/synology.json b/web/messages/ru/docs/create-vm/synology.json new file mode 100644 index 00000000..138f1995 --- /dev/null +++ b/web/messages/ru/docs/create-vm/synology.json @@ -0,0 +1,453 @@ +{ + "title": "Скрипт создания ВМ для Synology", + "stepLabel": "Шаг", + "intro": { + "heading": "Введение", + "intro": "ProxMenux предоставляет скрипт, который автоматически создаёт и настраивает виртуальную машину (ВМ) для установки Synology DSM (DiskStation Manager) на Proxmox VE. Скрипт упрощает этот процесс: скачивает один из доступных загрузчиков и настраивает загрузку ВМ с его помощью. На выбор предлагаются четыре варианта:", + "loaders": [ + { + "name": "AuxXxilium Arc", + "url": "https://github.com/AuxXxilium/arc", + "extra": "" + }, + { + "name": "RedPill RR", + "url": "https://github.com/RROrg/rr", + "extra": "" + }, + { + "name": "Alpine RedPill M-shell (проект TinyCore)", + "url": "https://github.com/PeterSuh-Q3/tinycore-redpill", + "extra": "" + } + ], + "customLoader": "Пользовательский загрузчик — возможность использовать собственный загрузчик, если вы предпочитаете изменить конфигурацию или создать свою", + "simplifiesIntro": "Скрипт упрощает создание ВМ, предлагая следующие возможности:", + "simplifies": [ + "Выбор стандартной или расширенной настройки", + "Настройка процессора, оперативной памяти, BIOS и типа машины", + "Выбор между виртуальным диском и прямым подключением физического диска к ВМ" + ] + }, + "config": { + "heading": "Стандартная и расширенная настройка", + "intro": "Скрипт предлагает два режима настройки:", + "defaultHeading": "Стандартная настройка", + "defaultIntro": "При выборе стандартной настройки скрипт автоматически применит следующие значения:", + "headerParam": "Параметр", + "headerValue": "Значение по умолчанию", + "defaultRows": [ + { + "param": "Тип машины", + "value": "q35" + }, + { + "param": "Тип BIOS", + "value": "OVMF (UEFI)" + }, + { + "param": "Тип процессора", + "value": "Host" + }, + { + "param": "Количество ядер", + "value": "2" + }, + { + "param": "Объём оперативной памяти", + "value": "4096 МБ" + }, + { + "param": "Сетевой мост", + "value": "vmbr0" + }, + { + "param": "MAC-адрес", + "value": "Генерируется автоматически" + }, + { + "param": "Запустить ВМ по завершении", + "value": "Нет" + } + ], + "defaultOutro": "Если вы хотите настроить конфигурацию, выберите в меню пункт «Расширенные настройки».", + "advancedHeading": "Расширенная настройка", + "advancedIntro": "Если вы выберете расширенную настройку, скрипт позволит настроить каждый параметр:", + "headerOptions": "Варианты", + "advancedRows": [ + { + "param": "Тип машины", + "options": "q35 или i440fx" + }, + { + "param": "Тип BIOS", + "options": "OVMF (UEFI) или SeaBIOS (Legacy)" + }, + { + "param": "Тип процессора", + "options": "Host или KVM64" + }, + { + "param": "Количество ядер", + "options": "Количество ядер процессора" + }, + { + "param": "Объём оперативной памяти", + "options": "Объём памяти, выделенной ВМ" + }, + { + "param": "Сетевой мост", + "options": "Сетевой мост для подключения" + }, + { + "param": "MAC-адрес", + "options": "Пользовательский MAC-адрес" + }, + { + "param": "VLAN", + "options": "Тег VLAN (если используется)" + }, + { + "param": "MTU", + "options": "Максимальный размер передаваемого блока данных" + } + ] + }, + "diskSelection": { + "heading": "Выбор диска", + "intro": "План настройки хранилища позволяет добавлять виртуальные диски, физические диски, а также контроллеры PCI или устройства NVMe. Варианты подключения дисков описаны ниже.", + "virtualHeading": "Виртуальный диск", + "virtualItems": [ + "Скрипт выводит список доступных в Proxmox вариантов хранения данных", + "Пользователь выбирает диск и его размер в ГБ", + "Виртуальные диски подключаются как устройства SATA (sata0, sata1 и т. д.). Виртуальные и физические диски данных совместно используют шесть слотов SATA с номерами 0–5; загрузчик использует отдельный слот IDE." + ], + "physicalHeading": "Прямое подключение физических дисков", + "physicalItems": [ + "Скрипт обнаруживает все доступные физические диски", + "Пользователь выбирает физический диск или несколько дисков, которые хочет использовать.", + "Физические диски подключаются как устройства SATA. Они совместно с виртуальными дисками данных используют шесть слотов SATA с номерами 0–5; это не означает, что можно дополнительно подключить ещё шесть физических дисков." + ] + }, + "loaderInstall": { + "heading": "Установка загрузчика", + "intro1": "Скрипт автоматически скачивает и распаковывает загрузчик из репозитория разработчика. Если скачать загрузчик не удастся, скрипт выведет сообщение об ошибке.", + "intro2Rich": "AuxXxilium Arc, RedPill RR и Alpine RedPill M-shell скачиваются и распаковываются автоматически.", + "customRich": "Для пользовательского загрузчика скрипт ищет файлы в /var/lib/vz/template/iso. Если найдено несколько файлов, вам будет предложено выбрать нужный файл.", + "uploadIntro": "Вы можете загрузить пользовательские загрузчики через меню локального хранилища:", + "imageAlt": "Добавление пользовательского загрузчика", + "imageCaption": "Добавление пользовательского загрузчика" + }, + "vmCreation": { + "heading": "Создание виртуальной машины", + "intro": "После скачивания загрузчика скрипт создаёт виртуальную машину с помощью следующих команд:", + "items": [ + "qm create — создаёт виртуальную машину с заданными параметрами", + "qm importdisk импортирует образ загрузчика в хранилище Proxmox. Затем скрипт подключает этот образ к виртуальной машине как ide0 для обеспечения совместимости.", + "qm set — задаёт параметры конфигурации, такие как процессор, оперативная память и хранилище", + "qm set VMID --boot order=ide0 назначает загрузчик загрузочным устройством. Замените VMID идентификатором виртуальной машины." + ] + }, + "stepGuide": { + "heading": "Пошаговое руководство по настройке загрузчика", + "intro": "У каждого загрузчика свои меню и способы настройки. Шесть приведённых ниже шагов описывают общий процесс; если подсказки используемого загрузчика отличаются, следуйте им. На снимках экрана M-shell показан более ранний интерфейс TinyCore, тогда как текущий скрипт скачивает Alpine RedPill M-shell.", + "selectorHeading": "Выберите тип загрузчика:", + "loaderButtons": { + "arc": "Загрузчик Arc", + "rr": "Загрузчик RR", + "tinycore": "Загрузчик TinyCore" + } + }, + "steps": [ + { + "id": "step1", + "title": "Запустите ВМ и откройте главное меню", + "intro": "После создания ВМ запустите её. При первом запуске ВМ откроется главное меню загрузчика, где можно выбрать и настроить модель DSM, для которой вы хотите собрать загрузчик. После создания загрузчика этот шаг будет пропускаться, если вы вручную не запустите повторную настройку через монитор загрузки. Все загрузчики также поддерживают настройку через веб-интерфейс.", + "loaders": { + "arc": [ + { + "htmlBefore": "Веб-интерфейс. Чтобы открыть веб-интерфейс, откройте браузер и введите IP-адрес, указанный в консоли ВМ. Например, в нашем случае: http://192.169.0.32.", + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_0_1.png", + "alt": "Веб-интерфейс загрузчика Arc", + "caption": "Веб-интерфейс загрузчика Arc" + }, + { + "htmlBefore": "Терминальный интерфейс. Откройте его непосредственно в консоли ВМ.", + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_1_1.png", + "alt": "Терминальный интерфейс загрузчика Arc", + "caption": "Терминальный интерфейс загрузчика Arc" + } + ], + "rr": [ + { + "htmlBefore": "Веб-интерфейс. Чтобы открыть веб-интерфейс, запустите браузер и введите IP-адрес, указанный в выводе консоли ВМ, добавив после него порт 7681. Например, в нашем случае: http://192.169.0.33:7681.", + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_0_2.png", + "alt": "Пример команды RR", + "caption": "Веб-интерфейс загрузчика RR" + }, + { + "htmlBefore": "Терминальный интерфейс. Откройте его непосредственно в консоли ВМ, введя menu.sh", + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_1_1.png", + "alt": "Интерфейс загрузчика RR", + "caption": "Терминальный интерфейс загрузчика RR" + } + ], + "tinycore": [ + { + "htmlBefore": "Веб-интерфейс. Чтобы открыть веб-интерфейс, запустите браузер и введите IP-адрес, указанный в выводе консоли ВМ, добавив после него порт 7681. Например, в нашем случае: http://192.169.0.35:7681.", + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_0_1.png", + "alt": "Интерфейс загрузчика TinyCore", + "caption": "Веб-интерфейс загрузчика TinyCore" + }, + { + "htmlBefore": "Терминальный интерфейс. Откройте его непосредственно в консоли ВМ. Следите за сообщениями на экране: в какой-то момент может появиться запрос на нажатие клавиши для продолжения или вопрос о том, хотите ли вы изменить язык.", + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_1_1.png", + "alt": "Интерфейс загрузчика TinyCore", + "caption": "Терминальный интерфейс загрузчика TinyCore" + } + ] + } + }, + { + "id": "step2", + "title": "Выберите модель", + "intro": "После загрузки меню выберите модель Synology DSM, которую хотите установить. В зависимости от загрузчика иногда требуется развернуть список вариантов, чтобы увидеть дополнительные модели.", + "outro": "В нашем примере мы выберем модель SA6400.", + "loaders": { + "arc": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_2_1.png", + "alt": "Выбор модели в Arc", + "caption": "Выбор модели в Arc" + } + ], + "rr": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_2_1.png", + "alt": "Выбор модели в RR", + "caption": "Выбор модели в RR" + } + ], + "tinycore": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_2_1.png", + "alt": "Выбор модели в TinyCore", + "caption": "Выбор модели в TinyCore" + } + ] + } + }, + { + "id": "step3", + "title": "Выбор версии DSM", + "intro": "После выбора модели необходимо выбрать версию DSM, которую вы хотите установить.", + "loaders": { + "arc": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_3_1.png", + "alt": "Выбор версии в Arc — шаг 1", + "caption": "Выбор версии в Arc — шаг 1" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_3_2.png", + "alt": "Выбор версии в Arc — шаг 2", + "caption": "Выбор версии в Arc — шаг 2" + } + ], + "rr": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_1.png", + "alt": "Выбор версии в RR — шаг 1", + "caption": "Выбор версии в RR — шаг 1" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_2.png", + "alt": "Выбор версии в RR — шаг 2", + "caption": "Выбор версии в RR — шаг 2" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_3.png", + "alt": "Выбор версии в RR — шаг 3", + "caption": "Выбор версии в RR — шаг 3" + } + ], + "tinycore": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_3_1.png", + "alt": "Выбор версии в TinyCore — шаг 1", + "caption": "Выбор версии в TinyCore — шаг 1" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_3_2.png", + "alt": "Выбор версии в TinyCore — шаг 2", + "caption": "Выбор версии в TinyCore — шаг 2" + } + ] + } + }, + { + "id": "step4", + "title": "Выбор дополнений", + "intro": "На этом шаге можно добавить в загрузчик дополнительные функции или пользовательские настройки.", + "loaders": { + "arc": [ + { + "htmlBefore": "Arc позволяет выполнить настройку автоматически или вручную. Если выбрана автоматическая настройка, загрузчик начнёт применять необходимые настройки и автоматически перезагрузится после завершения процесса.", + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_1.png", + "alt": "Автоматическая настройка Arc", + "caption": "Автоматическая настройка Arc" + }, + { + "htmlBefore": "Если вы решите не использовать автоматический режим, откроется меню для настройки различных параметров, необходимых для работы загрузчика:", + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_2.png", + "alt": "Ручная настройка Arc", + "caption": "Ручная настройка Arc" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_3.png", + "alt": "Настройка SN/MAC в Arc", + "caption": "Настройка SN/MAC в Arc" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_4.png", + "alt": "Сопоставление портов SATA в Arc", + "caption": "Сопоставление портов SATA в Arc (используйте рекомендуемый вариант)" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_5.png", + "alt": "Выбор дополнений в Arc", + "caption": "Выбор дополнений в Arc" + } + ], + "rr": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_1.png", + "alt": "Дополнения в RR — шаг 1", + "caption": "Дополнения в RR — шаг 1" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_2.png", + "alt": "Дополнения в RR — шаг 2", + "caption": "Дополнения в RR — шаг 2: нажмите, чтобы добавить дополнения" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_3.png", + "alt": "Дополнение RR: шаг 3", + "caption": "Дополнение RR: шаг 3 — выберите нужное дополнение, нажав на него. Чтобы добавить другие дополнения, повторите действия, показанные на изображениях 2.4.2 и 2.4.3." + } + ], + "tinycore": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_1.png", + "alt": "TinyCore Настройка серийного номера", + "caption": "TinyCore Настройка серийного номера" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_2.png", + "alt": "TinyCore Вариант со случайным значением", + "caption": "TinyCore Вариант со случайным значением — рекомендуется выбрать случайное значение" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_3.png", + "alt": "TinyCore Настройка MAC-адреса", + "caption": "TinyCore Настройка MAC-адреса" + }, + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_4.png", + "alt": "TinyCore MAC-адрес виртуальной машины", + "caption": "TinyCore MAC-адрес виртуальной машины — выберите, использовать ли MAC-адрес вашей виртуальной машины или случайный MAC-адрес" + } + ] + } + }, + { + "id": "step5", + "title": "Сборка загрузчика", + "intro": "После выбора модели, версии DSM и дополнений перейдите к сборке загрузчика. Этот процесс может занять несколько минут в зависимости от загрузчика и выбранной конфигурации. Для начала выберите пункт «Сборка загрузчика».", + "loaders": { + "arc": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_5_1.png", + "alt": "Arc: сборка загрузчика", + "caption": "Arc: сборка загрузчика" + } + ], + "rr": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_5_1.png", + "alt": "RR: сборка загрузчика", + "caption": "RR: сборка загрузчика" + } + ], + "tinycore": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_5_1.png", + "alt": "TinyCore Сборка загрузчика", + "caption": "TinyCore Сборка загрузчика" + } + ] + } + }, + { + "id": "step6", + "title": "Запуск загрузчика", + "intro": "После завершения сборки загрузчика вам будет предложено запустить его. Виртуальная машина перезапустится с созданной вами конфигурацией и начнёт установку DSM.", + "loaders": { + "arc": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_6_1.png", + "alt": "Arc: запуск загрузчика", + "caption": "Arc: запуск загрузчика" + } + ], + "rr": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_6_1.png", + "alt": "RR: запуск загрузчика", + "caption": "RR: запуск загрузчика" + } + ], + "tinycore": [ + { + "src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_6_1.png", + "alt": "TinyCore Запуск загрузчика", + "caption": "TinyCore Запуск загрузчика" + } + ] + } + } + ], + "dsmInstall": { + "heading": "Начало установки DSM", + "intro": "После запуска загрузчика вы можете найти своё устройство Synology с помощью:", + "afterCode": "Следуйте инструкциям на экране, чтобы завершить установку DSM.", + "setupAlt": "Установка DSM", + "setupCaption": "Экран установки DSM", + "patience": "Пожалуйста, подождите — процесс может занять несколько минут. Процент выполнения будет обновляться автоматически по мере установки. Когда установка будет близка к завершению, начнётся обратный отсчёт.", + "finishAlt": "Установка завершена", + "finishCaption": "Установка завершена" + }, + "tips": { + "heading": "Советы", + "introItem": "Учтите, что доступные параметры могут меняться в зависимости от версии загрузчика и обновлений разработчиков. Если при создании загрузчика возникнут проблемы, обратитесь к его документации:", + "docLinks": [ + { + "label": "Документация Arc", + "url": "https://github.com/AuxXxilium/arc" + }, + { + "label": "Документация RR", + "url": "https://github.com/RROrg/rr" + }, + { + "label": "Документация TinyCore", + "url": "https://github.com/PeterSuh-Q3/tinycore-redpill" + } + ], + "olderModels": "У некоторых старых моделей DSM могут возникать проблемы с распознаванием дисков или сетевой карты. Рекомендуется использовать более новые модели.", + "updateLabel": "Обновление:", + "updateBody": "Некоторые загрузчики позволяют обновлять загрузчик непосредственно из меню.", + "importantLabel": "Важно:", + "importantBody": "ProxMenux не предоставляет поддержку по вопросам работы различных загрузчиков." + } +} diff --git a/web/messages/ru/docs/create-vm/system-linux.json b/web/messages/ru/docs/create-vm/system-linux.json new file mode 100644 index 00000000..289a750e --- /dev/null +++ b/web/messages/ru/docs/create-vm/system-linux.json @@ -0,0 +1,292 @@ +{ + "meta": { + "title": "Создание ВМ: система Linux | Документация ProxMenux", + "description": "Создавайте виртуальные машины Linux на Proxmox VE с помощью ProxMenux. Здесь описаны каталог отобранных официальных ISO-образов (Ubuntu, Debian, Fedora, Arch, Rocky, Mint, openSUSE, Alpine, Kali, Manjaro), единый план настройки хранилища, проброс GPU по желанию и советы после установки.", + "ogTitle": "Создание ВМ: система Linux | Документация ProxMenux", + "ogDescription": "Создавайте ВМ Linux на Proxmox VE с помощью ProxMenux. Каталог отобранных ISO-образов, единый план настройки хранилища, проброс GPU по желанию и советы после установки.", + "ogImageAlt": "Меню ВМ Linux в ProxMenux" + }, + "header": { + "title": "Создание ВМ: система Linux", + "description": "Создайте ВМ Linux на Proxmox VE. ProxMenux включает каталог отобранных официальных ISO-образов Linux, готовых к скачиванию, и средство выбора локального ISO-образа. В обоих случаях используются общий мастер создания ВМ, единый план настройки хранилища и, при необходимости, помощник по пробросу GPU.", + "section": "Виртуальные машины" + }, + "intro": { + "title": "Что делает этот скрипт", + "body": "Меню выбора Linux предлагает два управляемых ProxMenux источника установочных носителей: официальный ISO-образ из отобранного списка (скачивается автоматически) или локальный ISO-образ, который вы загрузили самостоятельно. Независимо от выбора дальнейшая настройка выполняется в общем мастере: CPU / RAM / BIOS → план настройки хранилища → проброс GPU по желанию → создание ВМ." + }, + "image": { + "alt": "Варианты установки Linux в ProxMenux", + "caption": "Варианты установки Linux" + }, + "config": { + "heading": "Стандартная и расширенная настройка", + "intro": "После выбора ISO-образа ProxMenux предлагает использовать стандартный профиль ВМ или открыть мастер расширенной настройки.", + "defaultHeading": "Стандартная настройка", + "headerParam": "Параметр", + "headerValue": "Значение по умолчанию", + "defaultRows": [ + { + "param": "Тип машины", + "valueRich": "q35" + }, + { + "param": "BIOS", + "value": "OVMF (UEFI)" + }, + { + "param": "Тип процессора", + "value": "Host" + }, + { + "param": "Ядра", + "value": "2" + }, + { + "param": "RAM", + "value": "4096 МБ" + }, + { + "param": "Сетевой мост", + "valueRich": "vmbr0" + }, + { + "param": "MAC-адрес", + "value": "Генерируется автоматически" + }, + { + "param": "Запустить по завершении", + "value": "Нет" + } + ], + "advancedHeading": "Расширенная настройка", + "advancedIntro": "Мастер расширенной настройки позволяет задать каждый параметр отдельно:", + "headerOptions": "Варианты", + "advancedRows": [ + { + "param": "Тип машины", + "optionsRich": "q35 или i440fx" + }, + { + "param": "BIOS", + "options": "OVMF (UEFI) или SeaBIOS (Legacy)" + }, + { + "param": "Тип процессора", + "options": "Host, KVM64 и другие модели процессоров из списка" + }, + { + "param": "Ядра", + "options": "Количество ядер процессора" + }, + { + "param": "RAM", + "options": "Память, выделенная виртуальной машине" + }, + { + "param": "Сетевой мост", + "options": "Сетевой мост" + }, + { + "param": "MAC-адрес", + "options": "Пользовательский MAC-адрес" + }, + { + "param": "VLAN", + "options": "Тег VLAN (необязательно)" + }, + { + "param": "MTU", + "options": "Размер MTU" + } + ] + }, + "storagePlan": { + "heading": "План хранения", + "body": "После настройки процессора и оперативной памяти ProxMenux открывает меню План хранения, в котором можно объединить виртуальные диски, импортированные диски и устройства с пробросом PCI в одной виртуальной машине, добавляя их по одному и завершая настройку, когда всё готово.", + "virtualDiskTitle": "a. Добавить виртуальный диск", + "virtualDiskItems": [ + "Выводит список томов хранилищ Proxmox, доступных на хосте.", + "Вы выбираете целевое хранилище и размер в ГБ.", + "Диск использует выбранную шину: SCSI (по умолчанию), SATA, VirtIO или IDE. Слоты SATA обозначаются sata0, sata1, …; всего доступно шесть слотов с номерами 0–5." + ], + "importDiskTitle": "b. Добавить диск для импорта", + "importDiskItems": [ + "Обнаруживает физические диски, которые можно безопасно импортировать (системные и защищённые диски скрыты).", + "Вы выбираете один или несколько дисков в списке с флажками.", + "Импортированные диски используют выбранную шину и подключаются через qm set." + ], + "pciTitle": "c. Добавить контроллер или NVMe (проброс PCI)", + "pciItems": [ + "Обнаруживает контроллеры HBA SATA/SAS и устройства NVMe на хосте и позволяет пробросить в ВМ контроллер целиком. IOMMU должен быть включён; скрипт предлагает включить его и при необходимости перезагружает хост.", + "На этапе подтверждения выводится предупреждение о риске, затрагивающем весь контроллер: вся плата, включая все подключённые к ней диски, становится недоступна хосту.", + "Выбранные устройства PCI подключаются с помощью команд вида qm set VMID --hostpci0 PCI_ADDRESS,pcie=1. Замените VMID и PCI_ADDRESS на идентификатор ВМ и адрес PCI соответственно и используйте свободный индекс hostpci для каждого устройства." + ], + "resetTitle": "Сброс и завершение", + "resetBody": "В меню также доступны r (сбросить текущий выбор и начать заново) и d (завершить и продолжить). Завершить работу с пустым планом нельзя." + }, + "gpu": { + "heading": "Необязательный проброс GPU", + "body": "После составления плана хранения, если на хосте обнаружен совместимый GPU, ProxMenux предлагает запустить помощник проброса GPU. Описание работы помощника см. в разделе Добавление GPU в ВМ (проброс) — может потребоваться перезагрузка хоста." + }, + "autoFeatures": { + "heading": "Автоматически настраиваемые функции ВМ", + "efiTitle": "Диск EFI", + "efiBody": "При выборе OVMF (UEFI) ProxMenux создаёт системный диск EFI размером 4 МБ в выбранном хранилище, чтобы прошивка могла сохранять свои переменные.", + "isoTitle": "Подключение ISO", + "isoBody": "Установочный ISO-образ подключается к ide2 как CD-ROM и готов к первой загрузке.", + "guestTitle": "Гостевой агент QEMU", + "guestBody": "Канал гостевого агента включён в конфигурации ВМ. Сам агент необходимо установить внутри гостевой системы — см. рекомендации ниже." + }, + "installOptions": { + "heading": "Варианты установки Linux", + "officialHeading": "Официальный ISO-образ (традиционная установка)", + "officialBody": "ProxMenux поставляется с подобранным списком официальных ISO-образов Linux. Выберите один из них, и скрипт загрузит его непосредственно с зеркала проекта в /var/lib/vz/template/iso, а затем подключит к ВМ.", + "officialImageAlt": "Выбор дистрибутива Linux", + "officialImageCaption": "Выбор дистрибутива Linux", + "localHeading": "Локальный ISO-образ", + "localBody": "Используется любой ISO-образ Linux, уже имеющийся в /var/lib/vz/template/iso. Скрипт выводит список всех найденных *.iso и позволяет выбрать один из них.", + "localImageAlt": "Меню выбора локального ISO-образа", + "localImageCaption": "Меню выбора локального ISO-образа", + "distros": [ + { + "name": "Ubuntu", + "variants": [ + "25.10 — настольная версия", + "24.04 — настольная версия", + "22.04 — настольная версия", + "20.04 — настольная версия", + "25.10 — серверная версия", + "24.04 — серверная версия", + "22.04 — серверная версия", + "20.04 — серверная версия" + ] + }, + { + "name": "Debian", + "variants": [ + "13 — настольная версия", + "12 — настольная версия", + "11 — настольная версия", + "13 Netinst", + "12 Netinst", + "11 Netinst" + ] + }, + { + "name": "Fedora", + "variants": [ + "Workstation 42" + ] + }, + { + "name": "Arch Linux", + "variants": [ + "последняя версия" + ] + }, + { + "name": "Rocky Linux", + "variants": [ + "9" + ] + }, + { + "name": "Linux Mint", + "variants": [ + "22.1 Cinnamon" + ] + }, + { + "name": "openSUSE", + "variants": [ + "Leap 15.6" + ] + }, + { + "name": "Alpine Linux", + "variants": [ + "3.21" + ] + }, + { + "name": "Kali Linux", + "variants": [ + "2026.1" + ] + }, + { + "name": "Manjaro", + "variants": [ + "25.0 GNOME" + ] + } + ] + }, + "endToEnd": { + "heading": "Что делает скрипт от начала до конца", + "items": [ + "Получает ISO-образ Linux (загружает из официального источника или использует локальный файл).", + "Применяет стандартные или расширенные настройки CPU / RAM / BIOS / типа машины.", + "Открывает план настройки хранилища и подключает выбранные виртуальные диски, импортированные диски и устройства PCI.", + "Создаёт диск EFI, если выбран UEFI.", + "Монтирует ISO-образ Linux на ide2.", + "Задаёт порядок загрузки (сначала диск, затем ISO-образ).", + "Включает канал связи с QEMU Guest Agent.", + "При необходимости запускает помощник по пробросу GPU.", + "Создаёт оформленное HTML-описание и добавляет его к виртуальной машине.", + "Запускает виртуальную машину, если вы выбрали её запуск." + ] + }, + "postInstall": { + "heading": "Рекомендации после установки", + "guestAgentHeading": "Установите QEMU Guest Agent внутри виртуальной машины", + "guestAgentBody": "ProxMenux включает канал связи с гостевым агентом в конфигурации виртуальной машины, но сам агент необходимо установить внутри гостевой системы. Он поддерживает корректное завершение работы и замораживание файловой системы во время создания резервных копий для повышения согласованности данных.", + "debian": "Debian / Ubuntu", + "fedora": "Fedora / Rocky / RHEL", + "arch": "Arch Linux", + "opensuse": "openSUSE", + "virtioHeading": "Поддержка VirtIO в Linux", + "virtioBody": "Современные дистрибутивы Linux обычно включают драйверы VirtIO для дисков и сетевых адаптеров. Выберите virtio для блочных дисков VirtIO или scsi с настроенным контроллером SCSI VirtIO; сетевой адаптер также использует virtio. При использовании старых установщиков проверьте поддержку драйверов.", + "virtioWarnTitle": "Очень старые дистрибутивы", + "virtioWarnBody": "В очень старых установщиках могут отсутствовать необходимые драйверы VirtIO. В этом случае используйте эмулируемый контроллер SATA / SCSI или предоставьте подходящие драйверы.", + "trimHeading": "Включение TRIM / discard для хранилища на SSD", + "trimBody": "Если ВМ размещена в хранилище Proxmox на SSD, а диск подключён с флагом discard, можно передавать команды TRIM из гостевой системы. Есть два варианта:", + "trimItems": [ + "Периодически запускайте fstrim -av (или включите юнит fstrim.timer в дистрибутивах с systemd).", + "Либо монтируйте файловые системы с параметром discard в /etc/fstab." + ], + "balloonHeading": "Динамическое управление памятью (ballooning)", + "balloonBody": "Современные ядра Linux обычно включают драйвер virtio_balloon. При включённом устройстве balloon Proxmox может собирать статистику использования памяти. Для динамического высвобождения памяти также необходимо задать минимальный объём памяти ниже настроенного максимума; при равных значениях выделенный объём памяти остаётся фиксированным." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/disk-manager/import-disk-image-vm", + "label": "Импортировать образ диска в ВМ", + "tail": " — подключение существующего образа Linux .qcow2 / .img / .raw к новой ВМ." + }, + { + "href": "/docs/utils/import-vm", + "label": "Импорт ВМ из OVA / OVF", + "tail": " — импорт ВМ Linux, экспортированной из VMware / VirtualBox / Proxmox." + }, + { + "href": "/docs/hardware/gpu-vm-passthrough", + "label": "Добавить GPU в ВМ (прямой проброс)", + "tail": " — для ВМ Linux, которым требуется ускорение на GPU." + }, + { + "href": "/docs/help-info/vm-ct-commands", + "label": "Команды управления ВМ и контейнерами", + "tail": " — справочник по интерфейсу командной строки qm." + }, + { + "href": "/docs/create-vm", + "label": "Обзор создания ВМ", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/create-vm/system-nas/index.json b/web/messages/ru/docs/create-vm/system-nas/index.json new file mode 100644 index 00000000..a9dd47cb --- /dev/null +++ b/web/messages/ru/docs/create-vm/system-nas/index.json @@ -0,0 +1,147 @@ +{ + "meta": { + "title": "Создание ВМ: системы NAS | Документация ProxMenux", + "description": "Создавайте виртуальные машины NAS на Proxmox VE с помощью ProxMenux. Поддерживаются Synology DSM (через загрузчик), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS и FygoOS. Umbrel OS доступна через скрипт сообщества.", + "ogTitle": "Создание ВМ: системы NAS | Документация ProxMenux", + "ogDescription": "Создавайте виртуальные машины NAS на Proxmox VE с помощью ProxMenux. Поддерживаются Synology DSM (через загрузчик), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS и FygoOS.", + "ogImageAlt": "Меню систем NAS в ProxMenux" + }, + "header": { + "title": "Создание ВМ: системы NAS", + "description": "ProxMenux поддерживает восемь операционных систем NAS в виде отдельных ВМ, а также дополнительный вариант установки Umbrel OS через скрипт сообщества. Для большинства систем используется один и тот же процесс с автоматической загрузкой ISO; для Synology DSM предусмотрен специализированный мастер настройки загрузчика.", + "section": "Виртуальные машины" + }, + "intro": { + "title": "Как работает выбор системы NAS", + "body": "При стандартной установке из ISO инструмент выбора системы NAS пытается определить последнюю стабильную версию на зеркале проекта, при необходимости использует резервную версию, загружает ISO и открывает общий инструмент настройки ВМ, где задаются параметры процессора, оперативной памяти, дисков и сети. Для Synology DSM и ZimaOS предусмотрены отдельные процедуры установки." + }, + "image": { + "alt": "Выбор системы NAS в ProxMenux", + "caption": "Выбор системы NAS" + }, + "flowBadges": { + "loader": "Установка через загрузчик", + "auto-iso": "Автоматическая загрузка ISO", + "dedicated": "Специализированный скрипт" + }, + "labels": { + "base": "Основа", + "fileSystem": "Файловая система", + "viewDetails": "Подробнее" + }, + "supported": { + "heading": "Поддерживаемые NAS-системы", + "cards": [ + { + "name": "Synology DSM", + "tagline": "DiskStation Manager с загрузчиком ARC / RR. Перед первой загрузкой необходимо настроить загрузчик.", + "icon": "HardDrive", + "base": "Linux (модифицированный)", + "fileSystem": "Btrfs, ext4", + "href": "/docs/create-vm/system-nas/synology", + "flow": "loader" + }, + { + "name": "TrueNAS SCALE", + "tagline": "TrueNAS на базе Debian: в текущих версиях используются приложения Docker, а основная файловая система — ZFS. В более ранних версиях SCALE использовался Kubernetes.", + "icon": "Database", + "base": "Debian Linux", + "fileSystem": "ZFS", + "href": "/docs/create-vm/system-nas/system-nas-others#truenas-scale", + "flow": "auto-iso" + }, + { + "name": "TrueNAS CORE", + "tagline": "TrueNAS на базе FreeBSD с акцентом на хранение данных с использованием ZFS. Окружения jail и плагины в CORE 13.3 устарели и не поддерживаются.", + "icon": "Database", + "base": "FreeBSD", + "fileSystem": "ZFS", + "href": "/docs/create-vm/system-nas/system-nas-others#truenas-core", + "flow": "auto-iso" + }, + { + "name": "OpenMediaVault", + "tagline": "Легковесная NAS-система на базе Debian с модульной архитектурой плагинов. Отлично подходит для старого оборудования.", + "icon": "Server", + "base": "Debian Linux", + "fileSystem": "ext4, XFS, Btrfs", + "href": "/docs/create-vm/system-nas/system-nas-others#openmediavault", + "flow": "auto-iso" + }, + { + "name": "XigmaNAS", + "tagline": "NAS-система на базе FreeBSD — первоначальный преемник FreeNAS с акцентом на ZFS и простоту.", + "icon": "Database", + "base": "FreeBSD", + "fileSystem": "ZFS, UFS", + "href": "/docs/create-vm/system-nas/system-nas-others#xigmanas", + "flow": "auto-iso" + }, + { + "name": "Rockstor", + "tagline": "NAS-система на базе openSUSE, построенная вокруг Btrfs. Rock-ons (приложения Docker) расширяют функциональность.", + "icon": "HardDrive", + "base": "openSUSE Leap", + "fileSystem": "Btrfs", + "href": "/docs/create-vm/system-nas/system-nas-others#rockstor", + "flow": "auto-iso" + }, + { + "name": "ZimaOS", + "tagline": "Легковесная ОС для NAS, ориентированная на мультимедиа, приложения Docker и домашнюю автоматизацию. Использует собственный установщик.", + "icon": "MonitorIcon", + "base": "Buildroot (развился из CasaOS)", + "fileSystem": "ext4", + "href": "/docs/create-vm/system-nas/system-nas-others#zimaos", + "flow": "dedicated" + }, + { + "name": "FygoOS", + "tagline": "Международная версия fnOS: NAS на базе Debian с томами хранения, приложениями и потоковой передачей мультимедиа, управляемый через веб-интерфейс и приложения Fygo.", + "icon": "Server", + "base": "Debian Linux", + "fileSystem": "Btrfs, ext4", + "href": "/docs/create-vm/system-nas/system-nas-others#fygoos", + "flow": "auto-iso" + } + ] + }, + "umbrel": { + "title": "Вариант от сообщества: Umbrel OS", + "bodyRich": "Девятый пункт меню NAS — Umbrel OS. Он запускает установщик community-scripts, который поддерживается вне проекта ProxMenux, поэтому здесь он не описан. Установщик управляет всем жизненным циклом и в конце выводит учётные данные по умолчанию." + }, + "zfsMem": { + "title": "Практические рекомендации по объёму памяти для ZFS", + "bodyRich": "Для TrueNAS выделите не менее 8 ГБ оперативной памяти для базовой работы и больше для ресурсоёмких задач. ZFS использует оперативную память для кеша ARC, но 8 ГБ — не универсальный порог, ниже которого производительность любого NAS на базе ZFS резко падает. Проверьте требования выбранного дистрибутива и подберите объём памяти с учётом дисков, служб и приложений; менее ресурсоёмким конфигурациям OMV или Rockstor может требоваться меньше памяти." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/create-vm/system-nas/synology", + "label": "ВМ Synology", + "tail": " — специализированный установщик Synology DSM (Xpenology) на Proxmox." + }, + { + "href": "/docs/create-vm/system-nas/system-nas-others", + "label": "Другие ОС для NAS", + "tail": " — TrueNAS, OpenMediaVault, Rockstor, XigmaNAS, FygoOS и аналогичные системы." + }, + { + "href": "/docs/disk-manager/import-disk-vm", + "label": "Импортировать диск в ВМ", + "tail": " — проброс физических дисков в виртуальную машину NAS (для производственной среды рекомендуется вместо виртуальных дисков)." + }, + { + "href": "/docs/help-info/zfs-commands", + "label": "Команды управления ZFS", + "tail": " — полезны, если ваш дистрибутив NAS использует ZFS в своей основе." + }, + { + "href": "/docs/create-vm", + "label": "Обзор создания ВМ", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/create-vm/system-nas/synology.json b/web/messages/ru/docs/create-vm/system-nas/synology.json new file mode 100644 index 00000000..f52b6bc6 --- /dev/null +++ b/web/messages/ru/docs/create-vm/system-nas/synology.json @@ -0,0 +1,400 @@ +{ + "meta": { + "title": "Создание ВМ: Synology DSM | Документация ProxMenux", + "description": "Создайте виртуальную машину Synology DSM на Proxmox VE. ProxMenux скачивает выбранный загрузчик (Arc, RR, Alpine RedPill M-shell или пользовательский образ), импортирует его как загрузочный диск ВМ и настраивает процессор, оперативную память и хранилище с помощью стандартного или расширенного мастера.", + "ogTitle": "Создание ВМ: Synology DSM | Документация ProxMenux", + "ogDescription": "Создайте виртуальную машину Synology DSM на Proxmox VE с помощью ProxMenux." + }, + "header": { + "title": "Создание ВМ: Synology DSM", + "description": "Создайте виртуальную машину Synology DSM на Proxmox VE. ProxMenux скачивает выбранный загрузчик (Arc, RR, Alpine RedPill M-shell или пользовательский образ), импортирует его как загрузочный диск ВМ и настраивает процессор, оперативную память и хранилище с помощью стандартного или расширенного мастера.", + "section": "Виртуальные машины · NAS" + }, + "loaderLabels": { + "arc": "Загрузчик Arc", + "rr": "Загрузчик RR", + "tinycore": "Загрузчик TinyCore" + }, + "whatThisDoes": { + "title": "Что делает этот инструмент", + "bodyRich": "ProxMenux автоматизирует подготовку виртуальной машины для установки Synology DSM: скачивает один из поддерживаемых загрузчиков, импортирует его в новую ВМ как загрузочный IDE-диск и применяет выбранные параметры процессора, оперативной памяти, сети и хранилища. Остальные действия — сборка загрузчика, выбор модели DSM и установка DSM — выполняются внутри ВМ через веб-интерфейс или терминальный интерфейс самого загрузчика. Инструкции по этим шагам поддерживаются сообществом и часто меняются, поэтому эта страница описывает базовую рабочую конфигурацию." + }, + "supportedLoaders": { + "heading": "Поддерживаемые загрузчики", + "intro": "Скрипт позволяет выбрать один из четырёх источников загрузчика:", + "loaders": [ + { + "name": "AuxXxilium Arc", + "url": "https://github.com/AuxXxilium/arc" + }, + { + "name": "RedPill RR", + "url": "https://github.com/RROrg/rr" + }, + { + "name": "Alpine RedPill M-shell (проект TinyCore)", + "url": "https://github.com/PeterSuh-Q3/tinycore-redpill" + } + ], + "customRich": "Собственный загрузчик — поместите свой образ загрузчика в /var/lib/vz/template/iso, и скрипт обнаружит его." + }, + "config": { + "heading": "Стандартная и расширенная настройка", + "intro": "При запуске скрипт спрашивает, использовать ли стандартный профиль виртуальной машины ProxMenux или открыть мастер расширенной настройки. Значения по умолчанию подобраны для DSM и подходят для большинства установок.", + "defaultHeading": "Стандартная настройка", + "headerParam": "Параметр", + "headerValue": "Значение по умолчанию", + "defaultRowsRich": [ + { + "param": "Тип машины", + "valueRich": "q35" + }, + { + "param": "BIOS", + "valueRich": "OVMF (UEFI)" + }, + { + "param": "Тип процессора", + "valueRich": "Host" + }, + { + "param": "Ядра", + "valueRich": "2" + }, + { + "param": "RAM", + "valueRich": "4096 МБ" + }, + { + "param": "Сетевой мост", + "valueRich": "vmbr0" + }, + { + "param": "MAC-адрес", + "valueRich": "Генерируется автоматически" + }, + { + "param": "Запустить по завершении", + "valueRich": "Нет" + } + ], + "advancedHeading": "Расширенная настройка", + "advancedIntro": "Мастер расширенной настройки предоставляет доступ ко всем параметрам. Вы можете свободно изменять любой из следующих параметров:", + "headerOptions": "Варианты", + "advancedRowsRich": [ + { + "param": "Тип машины", + "optionsRich": "q35 или i440fx" + }, + { + "param": "BIOS", + "optionsRich": "OVMF (UEFI) или SeaBIOS (Legacy)" + }, + { + "param": "Тип процессора", + "optionsRich": "Host или KVM64" + }, + { + "param": "Ядра", + "optionsRich": "Количество ядер процессора" + }, + { + "param": "RAM", + "optionsRich": "Память, выделенная виртуальной машине" + }, + { + "param": "Сетевой мост", + "optionsRich": "Сетевой мост" + }, + { + "param": "MAC-адрес", + "optionsRich": "Пользовательский MAC-адрес" + }, + { + "param": "VLAN", + "optionsRich": "Тег VLAN (необязательно)" + }, + { + "param": "MTU", + "optionsRich": "Размер MTU" + } + ] + }, + "storagePlan": { + "heading": "План хранения", + "introRich": "После настройки процессора и оперативной памяти ProxMenux открывает меню План подключения накопителей, в котором можно сочетать виртуальные диски, импортированные диски и устройства с прямым пробросом PCI в одной виртуальной машине, добавляя их по одному и завершая составление плана, когда всё готово.", + "virtualHeading": "a. Добавить виртуальный диск", + "virtualItemsRich": [ + "Выводит список томов хранилищ Proxmox, доступных на хосте.", + "Вы выбираете целевое хранилище и размер в ГБ.", + "Диск подключается как SATA (sata0, sata1, …). Виртуальные и физические диски данных используют общие шесть слотов SATA с номерами 0–5." + ], + "importHeading": "b. Добавить диск для импорта", + "importItemsRich": [ + "Обнаруживает физические диски, которые можно безопасно импортировать (системные и защищённые диски скрыты).", + "Вы выбираете один или несколько дисков в списке с флажками.", + "Импортированные диски подключаются как SATA с помощью qm set." + ], + "pciHeading": "c. Добавить контроллер или NVMe (проброс PCI)", + "pciItemsRich": [ + "Обнаруживает контроллеры HBA SATA/SAS и устройства NVMe на хосте и позволяет пробросить в ВМ контроллер целиком. IOMMU должен быть включён; скрипт предлагает включить его и при необходимости перезагружает хост.", + "На этапе подтверждения выводится предупреждение о риске, затрагивающем весь контроллер: вся плата, включая все подключённые к ней диски, становится недоступна хосту.", + "Выбранные устройства PCI подключаются с помощью команд вида qm set VMID --hostpci0 PCI_ADDRESS,pcie=1. Замените VMID и PCI_ADDRESS на идентификатор ВМ и адрес PCI соответственно и используйте свободный индекс hostpci для каждого устройства." + ], + "resetCalloutTitle": "Сброс и завершение", + "resetCalloutBodyRich": "В меню также доступны r (сбросить текущий выбор и начать заново) и d (завершить и продолжить). Завершить составление пустого плана нельзя — Synology нужен хотя бы один диск для установки DSM." + }, + "gpu": { + "heading": "Необязательный проброс GPU", + "bodyRich": "После составления плана подключения накопителей, если скрипт обнаружит на хосте совместимый графический процессор, он спросит, хотите ли вы пробросить его в эту виртуальную машину. О работе мастера см. Добавление GPU в виртуальную машину (проброс) — может потребоваться перезагрузка хоста." + }, + "loaderInstall": { + "heading": "Установка загрузчика", + "intro1Rich": "Arc, RR и Alpine RedPill M-shell автоматически скачиваются и распаковываются из репозиториев GitHub их разработчиков. Если скачать загрузчик не удаётся, скрипт прекращает работу с понятным сообщением.", + "intro2Rich": "При выборе варианта Собственный загрузчик скрипт сканирует /var/lib/vz/template/iso. Если найдено несколько подходящих образов, вам будет предложено выбрать нужный.", + "uploadIntro": "Вы можете загрузить собственные загрузчики из локального хранилища Proxmox:", + "imageAlt": "Добавление собственного загрузчика", + "imageCaption": "Добавление собственного загрузчика" + }, + "vmCreation": { + "heading": "Создание виртуальной машины — что выполняет скрипт", + "introRich": "После подтверждения загрузчика ProxMenux выполняет действия, эквивалентные следующим командам qm:", + "itemsRich": [ + "qm create — создаёт виртуальную машину с выбранными параметрами процессора, объёмом оперативной памяти, BIOS и типом машины.", + "qm importdisk импортирует образ загрузчика в хранилище Proxmox. Затем для совместимости скрипт подключает его к виртуальной машине как диск IDE на ide0.", + "qm set VMID --sata0 DISK_REFERENCE подключает диск данных из плана. Замените VMID и DISK_REFERENCE на идентификатор виртуальной машины и ссылку на диск; используйте свободный индекс SATA от 0 до 5. Сетевой адаптер настраивается командой qm create.", + "qm set VMID --hostpci0 PCI_ADDRESS,pcie=1 подключает выбранный контроллер PCI или устройство NVMe. Замените VMID и PCI_ADDRESS на идентификатор виртуальной машины и адрес PCI, а для каждого устройства используйте свободный индекс hostpci.", + "qm set VMID --boot order=ide0 назначает загрузчик загрузочным устройством. Замените VMID идентификатором виртуальной машины." + ] + }, + "stepByStep": { + "heading": "Пошаговая настройка загрузчика", + "intro": "Обычно настройка состоит из шести шагов: запуск виртуальной машины, выбор модели, выбор версии DSM, выбор дополнений, сборка и загрузка. Меню и параметры зависят от версии. На приведённых ниже снимках экрана M-shell показан более ранний интерфейс TinyCore; текущий скрипт скачивает Alpine RedPill M-shell, поэтому следуйте его актуальным подсказкам.", + "warnCalloutTitle": "ProxMenux не занимается сопровождением загрузчиков", + "warnCalloutBody": "Arc, RR и Alpine RedPill M-shell — проекты сообщества с собственными графиками выпуска версий. Если какой-либо шаг отличается от приведённых ниже снимков экрана, вероятно, загрузчик обновился — обратитесь к документации самого загрузчика (ссылки внизу этой страницы)." + }, + "stepBadge": "Шаг", + "step1": { + "title": "Запустите виртуальную машину и откройте главное меню", + "intro": "После создания виртуальной машины запустите её. При первом запуске откроется интерфейс настройки загрузчика, в котором нужно выбрать нужную модель DSM и выполнить сборку загрузчика для неё. После сборки при последующих запусках этот этап будет пропускаться, если только вы принудительно не запустите повторную настройку из собственного загрузочного меню загрузчика. Все три загрузчика поддерживают как терминальный, так и веб-интерфейс.", + "arc": { + "webRich": "Веб-интерфейс. Откройте браузер и перейдите по IP-адресу, указанному в консоли виртуальной машины (в нашем примере: http://192.168.0.32).", + "webAlt": "Веб-интерфейс загрузчика Arc", + "webCaption": "Веб-интерфейс загрузчика Arc", + "termRich": "Терминальный интерфейс. Работайте с ним непосредственно в консоли виртуальной машины.", + "termAlt": "Терминальный интерфейс загрузчика Arc", + "termCaption": "Терминальный интерфейс загрузчика Arc" + }, + "rr": { + "webRich": "Веб-интерфейс. Откройте браузер и перейдите по IP-адресу, указанному в консоли ВМ, добавив после него порт 7681 (пример: http://192.168.0.33:7681).", + "webAlt": "Веб-интерфейс загрузчика RR", + "webCaption": "Веб-интерфейс загрузчика RR", + "termRich": "Терминальный интерфейс. Чтобы открыть его, введите menu.sh в консоли виртуальной машины.", + "termAlt": "Терминальный интерфейс загрузчика RR", + "termCaption": "Терминальный интерфейс загрузчика RR" + }, + "tinycore": { + "webRich": "Веб-интерфейс. Откройте браузер и перейдите по IP-адресу, указанному в консоли ВМ, добавив после него порт 7681 (пример: http://192.168.0.35:7681).", + "webAlt": "Веб-интерфейс загрузчика TinyCore", + "webCaption": "Веб-интерфейс загрузчика TinyCore", + "termRich": "Терминальный интерфейс. Работайте с ним в консоли виртуальной машины. Следите за сообщениями: в какой-то момент может появиться запрос на нажатие клавиши для продолжения или смены языка.", + "termAlt": "Терминальный интерфейс загрузчика TinyCore", + "termCaption": "Терминальный интерфейс загрузчика TinyCore" + } + }, + "step2": { + "title": "Выбор модели", + "introRich": "Выберите модель Synology DSM, которую хотите установить. В зависимости от загрузчика может потребоваться развернуть список вариантов, чтобы увидеть все доступные модели. На снимках экрана ниже в качестве примера используется модель SA6400.", + "arc": { + "alt": "Выбор модели в Arc", + "caption": "Выбор модели в Arc" + }, + "rr": { + "alt": "Выбор модели в RR", + "caption": "Выбор модели в RR" + }, + "tinycore": { + "alt": "Выбор модели в TinyCore", + "caption": "Выбор модели в TinyCore" + } + }, + "step3": { + "title": "Выбор версии DSM", + "intro": "После выбора модели выберите версию DSM для установки.", + "arc": [ + { + "alt": "Версия в Arc — шаг 1", + "caption": "Выбор версии в Arc — шаг 1" + }, + { + "alt": "Версия в Arc — шаг 2", + "caption": "Выбор версии в Arc — шаг 2" + } + ], + "rr": [ + { + "alt": "Версия RR — шаг 1", + "caption": "Выбор версии RR — шаг 1" + }, + { + "alt": "Версия RR — шаг 2", + "caption": "Выбор версии RR — шаг 2" + }, + { + "alt": "Версия RR — шаг 3", + "caption": "Выбор версии RR — шаг 3" + } + ], + "tinycore": [ + { + "alt": "Версия TinyCore — шаг 1", + "caption": "Выбор версии TinyCore — шаг 1" + }, + { + "alt": "Версия TinyCore — шаг 2", + "caption": "Выбор версии TinyCore — шаг 2" + } + ] + }, + "step4": { + "title": "Выбор дополнений", + "intro": "На этом шаге можно добавить в загрузчик дополнительные функции или настроить его под свои нужды.", + "arc": { + "autoRich": "Arc предлагает автоматический режим (рекомендуется) и ручной режим. В автоматическом режиме загрузчик применяет подходящие настройки по умолчанию и самостоятельно перезагружается после завершения настройки.", + "autoAlt": "Автоматическая настройка Arc", + "autoCaption": "Автоматическая настройка Arc", + "manualRich": "При выборе ручного режима вы последовательно настраиваете параметры:", + "manualAlt": "Ручная настройка Arc", + "manualCaption": "Ручная настройка Arc", + "snMacAlt": "SN/MAC в Arc", + "snMacCaption": "Настройка SN / MAC в Arc", + "portmapAlt": "Сопоставление портов SATA в Arc", + "portmapCaption": "Сопоставление портов SATA в Arc (используйте рекомендуемый вариант)", + "addonsAlt": "Дополнения Arc", + "addonsCaption": "Выбор дополнений Arc" + }, + "rr": [ + { + "alt": "Дополнение RR — шаг 1", + "caption": "Дополнение RR — шаг 1" + }, + { + "alt": "Дополнение RR — шаг 2", + "caption": "Дополнение RR — шаг 2: нажмите, чтобы добавить дополнение" + }, + { + "alt": "Дополнение RR — шаг 3", + "caption": "Дополнение RR — шаг 3: нажмите на нужное дополнение. Чтобы добавить другие дополнения, повторите действия, показанные на двух предыдущих снимках экрана." + } + ], + "tinycore": [ + { + "alt": "TinyCore — настройка серийного номера (SN)", + "caption": "TinyCore — настройка серийного номера (SN)" + }, + { + "alt": "TinyCore — случайный выбор", + "caption": "TinyCore — случайный выбор (рекомендуется)" + }, + { + "alt": "TinyCore — настройка MAC-адреса", + "caption": "TinyCore — настройка MAC-адреса" + }, + { + "alt": "TinyCore MAC-адрес виртуальной машины", + "caption": "TinyCore — выберите MAC-адрес виртуальной машины или случайный MAC-адрес" + } + ] + }, + "step5": { + "title": "Сборка загрузчика", + "introRich": "После выбора модели, версии DSM и дополнений выберите Собрать загрузчик. Это может занять несколько минут в зависимости от загрузчика и выбранных параметров.", + "arc": { + "alt": "Arc — сборка загрузчика", + "caption": "Arc — сборка загрузчика" + }, + "rr": { + "alt": "RR — сборка загрузчика", + "caption": "RR — сборка загрузчика" + }, + "tinycore": { + "alt": "TinyCore — сборка загрузчика", + "caption": "TinyCore — сборка загрузчика" + } + }, + "step6": { + "title": "Запуск загрузчика", + "intro": "После сборки загрузчика виртуальная машина перезагружается с созданной вами конфигурацией, и начинается установка DSM.", + "arc": { + "alt": "Arc — запуск загрузчика", + "caption": "Arc — запуск загрузчика" + }, + "rr": { + "alt": "RR — запуск загрузчика", + "caption": "RR — запуск загрузчика" + }, + "tinycore": { + "alt": "TinyCore — запуск загрузчика", + "caption": "TinyCore — запуск загрузчика" + } + }, + "dsmInstall": { + "heading": "Начало установки DSM", + "intro": "После запуска загрузчика вы сможете обнаружить свою виртуальную машину DSM, открыв:", + "afterCode": "Следуйте инструкциям на экране, чтобы завершить установку DSM.", + "setupAlt": "Настройка DSM", + "setupCaption": "Экран настройки DSM", + "patience": "Наберитесь терпения — процесс может занять несколько минут. Сведения о ходе установки обновляются автоматически, а ближе к её завершению появляется обратный отсчёт.", + "finishAlt": "Установка завершена", + "finishCaption": "Установка завершена" + }, + "tips": { + "heading": "Советы", + "recentTitle": "Используйте современные модели DSM", + "recentBody": "У некоторых старых моделей DSM возникают проблемы с распознаванием дисков или сетевой карты. Выбирайте современные модели (например, SA6400), чтобы избежать проблем при первом запуске.", + "updateTitle": "Обновление загрузчика", + "updateBody": "Некоторые загрузчики можно обновить прямо из меню настройки — удалять и заново создавать виртуальную машину не требуется.", + "warnTitle": "ProxMenux не предоставляет поддержку загрузчиков", + "warnBody": "ProxMenux автоматизирует работу с виртуальной машиной. Проблемы с загрузчиками (модель не найдена, не удаётся установить дополнение, DSM не запускается) здесь не рассматриваются — обращайтесь к системе отслеживания проблем и документации соответствующего загрузчика.", + "docsHeading": "Документация загрузчиков", + "docLinks": [ + { + "label": "Документация Arc", + "url": "https://github.com/AuxXxilium/arc" + }, + { + "label": "Документация RR", + "url": "https://github.com/RROrg/rr" + }, + { + "label": "Документация TinyCore", + "url": "https://github.com/PeterSuh-Q3/tinycore-redpill" + } + ] + }, + "related": { + "heading": "Связанные материалы", + "itemsRich": [ + { + "href": "/docs/create-vm/system-nas", + "label": "Обзор систем NAS", + "tail": " — сравнение Synology с TrueNAS / OMV / Rockstor / XigmaNAS." + }, + { + "href": "/docs/create-vm/system-nas/system-nas-others", + "label": "Другие ОС для NAS", + "tail": " — дистрибутивы NAS, не относящиеся к Synology." + }, + { + "href": "/docs/disk-manager/import-disk-vm", + "label": "Импортировать диск в ВМ", + "tail": " — проброс физических дисков в виртуальную машину Synology (рекомендуется для повышения производительности хранилища)." + }, + { + "href": "/docs/create-vm", + "label": "Обзор создания ВМ", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/create-vm/system-nas/system-nas-others.json b/web/messages/ru/docs/create-vm/system-nas/system-nas-others.json new file mode 100644 index 00000000..d32b9f91 --- /dev/null +++ b/web/messages/ru/docs/create-vm/system-nas/system-nas-others.json @@ -0,0 +1,312 @@ +{ + "meta": { + "title": "Создание ВМ: другие системы NAS | Документация ProxMenux", + "description": "Создавайте виртуальные машины TrueNAS SCALE, TrueNAS CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS и FygoOS на Proxmox VE с помощью ProxMenux. Рассматриваются стандартная и расширенная настройка, новая схема хранения, необязательный проброс GPU и рекомендуемые характеристики для каждой системы.", + "ogTitle": "Создание ВМ: другие системы NAS | Документация ProxMenux", + "ogDescription": "Создавайте виртуальные машины TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS и FygoOS на Proxmox VE с помощью ProxMenux.", + "ogImageAlt": "Выбор системы NAS в ProxMenux" + }, + "header": { + "title": "Создание ВМ: другие NAS-системы", + "description": "ProxMenux позволяет создать ВМ, готовую к установке TrueNAS SCALE, TrueNAS CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS и FygoOS. На этой странице описан общий процесс создания (настройка по умолчанию или расширенная настройка, новый план хранения, необязательный проброс GPU), а также приведены примечания для каждой системы и рекомендуемые характеристики.", + "section": "Виртуальные машины · NAS" + }, + "intro": { + "title": "Как создаются эти системы", + "bodyRich": "Все семь систем используют один и тот же мастер ProxMenux. При выборе NAS подбирается соответствующий установщик (для TrueNAS, OMV, XigmaNAS, Rockstor и FygoOS автоматически определяется последняя стабильная версия), после чего выполняется переход к универсальному конфигуратору ВМ и плану хранения. ZimaOS использует собственный сценарий установки (vm/zimaos.sh), но следует той же последовательности настройки: CPU / RAM / хранение / необязательный GPU." + }, + "config": { + "heading": "Стандартная и расширенная настройка", + "intro": "После выбора NAS ProxMenux предлагает использовать профиль ВМ по умолчанию или открыть мастер расширенной настройки. Параметры по умолчанию подобраны для задач NAS: выделяется больше оперативной памяти, чем для обычной ВМ с Linux, поскольку системам на базе ZFS она нужна для кэша ARC.", + "defaultHeading": "Стандартная настройка", + "headerParam": "Параметр", + "headerValue": "Значение по умолчанию", + "defaultRowsRich": [ + { + "param": "Тип машины", + "valueRich": "q35" + }, + { + "param": "BIOS", + "valueRich": "OVMF (UEFI) — SeaBIOS для OpenMediaVault" + }, + { + "param": "Тип процессора", + "valueRich": "Host" + }, + { + "param": "Ядра", + "valueRich": "2" + }, + { + "param": "RAM", + "valueRich": "8192 МБ — 4096 МБ для ZimaOS" + }, + { + "param": "Сетевой мост", + "valueRich": "vmbr0" + }, + { + "param": "MAC-адрес", + "valueRich": "Генерируется автоматически" + }, + { + "param": "Запустить по завершении", + "valueRich": "Нет" + } + ], + "advancedHeading": "Расширенная настройка", + "advancedIntro": "Мастер расширенной настройки позволяет задать каждый параметр отдельно:", + "headerOptions": "Варианты", + "advancedRowsRich": [ + { + "param": "Тип машины", + "optionsRich": "q35 или i440fx" + }, + { + "param": "BIOS", + "optionsRich": "OVMF (UEFI) или SeaBIOS (Legacy)" + }, + { + "param": "Тип процессора", + "optionsRich": "Host, KVM64 и другие перечисленные модели CPU (ZimaOS: Host или KVM64)" + }, + { + "param": "Ядра", + "optionsRich": "Количество ядер процессора" + }, + { + "param": "RAM", + "optionsRich": "Память, выделенная виртуальной машине" + }, + { + "param": "Сетевой мост", + "optionsRich": "Сетевой мост" + }, + { + "param": "MAC-адрес", + "optionsRich": "Пользовательский MAC-адрес" + }, + { + "param": "VLAN", + "optionsRich": "Тег VLAN (необязательно)" + }, + { + "param": "MTU", + "optionsRich": "Размер MTU" + } + ], + "zfsCalloutTitle": "ZFS и оперативная память", + "zfsCalloutBody": "TrueNAS SCALE / CORE и XigmaNAS используют ZFS: увеличение объёма оперативной памяти полезно для его кэша ARC. Для базового использования TrueNAS требуется не менее 8 ГБ; 16 ГБ и более могут быть полезны для более ресурсоёмких служб и приложений. Подбирайте ресурсы ВМ под выбранный дистрибутив и нагрузку, а не считайте 8 ГБ универсальным минимумом для ZFS. Менее ресурсоёмкие конфигурации OMV, Rockstor или ZimaOS могут требовать меньше памяти." + }, + "storagePlan": { + "heading": "План хранения", + "intro": "После настройки CPU / RAM ProxMenux открывает меню плана хранения, где можно объединить виртуальные диски, импортированные диски и устройства с пробросом PCI в одной ВМ, добавляя их по одному и завершая настройку, когда всё необходимое добавлено.", + "virtualHeading": "a. Добавить виртуальный диск", + "virtualItemsRich": [ + "Выводит список томов хранилищ Proxmox, доступных на хосте.", + "Вы выбираете целевое хранилище и размер в ГБ.", + "Диск использует выбранную шину: SCSI (по умолчанию), SATA, VirtIO или IDE (ZimaOS: SCSI или SATA). Слоты SATA обозначаются sata0, sata1, …; всего доступно шесть слотов с номерами 0–5." + ], + "importHeading": "b. Добавить диск для импорта", + "importItemsRich": [ + "Обнаруживает физические диски, которые можно безопасно импортировать (системные и защищённые диски скрыты).", + "Вы выбираете один или несколько дисков в списке с флажками.", + "Импортированные диски используют выбранную шину и подключаются через qm set." + ], + "pciHeading": "c. Добавить контроллер или NVMe (проброс PCI)", + "pciItemsRich": [ + "Обнаруживает контроллеры HBA SATA/SAS и устройства NVMe на хосте и позволяет пробросить в ВМ контроллер целиком. IOMMU должен быть включён; скрипт предлагает включить его и при необходимости перезагружает хост.", + "На этапе подтверждения выводится предупреждение о риске, затрагивающем весь контроллер: вся плата, включая все подключённые к ней диски, становится недоступна хосту.", + "Выбранные устройства PCI подключаются с помощью команд вида qm set VMID --hostpci0 PCI_ADDRESS,pcie=1. Замените VMID и PCI_ADDRESS на идентификатор ВМ и адрес PCI соответственно и используйте свободный индекс hostpci для каждого устройства." + ], + "resetCalloutTitle": "Сброс и завершение", + "resetCalloutBodyRich": "В меню также доступны r (сбросить текущий выбор и начать заново) и d (завершить и продолжить). Завершить работу с пустым планом нельзя." + }, + "gpu": { + "heading": "Необязательный проброс GPU", + "bodyRich": "После настройки плана хранения, если на хосте обнаружен совместимый GPU, ProxMenux предлагает запустить помощник по пробросу GPU. Описание работы помощника см. в разделе Добавление GPU в ВМ (проброс) — может потребоваться перезагрузка хоста." + }, + "autoFeatures": { + "heading": "Автоматически настраиваемые функции ВМ", + "efiTitle": "Диск EFI", + "efiBody": "При выборе OVMF (UEFI) ProxMenux автоматически создаёт EFI-диск размером 4 МБ в выбранном хранилище, используя формат, соответствующий типу хранилища (raw для хранилища на основе каталога).", + "isoTitle": "Подключение ISO", + "isoBodyRich": "Установочный ISO-образ загружается (при необходимости) и подключается к ide2 как CD-ROM для первой загрузки.", + "guestTitle": "Гостевой агент QEMU", + "guestBody": "Канал гостевого агента включён в конфигурации ВМ. После запуска ОС NAS вам всё равно потребуется установить агент внутри гостевой системы." + }, + "endToEnd": { + "heading": "Что делает скрипт от начала до конца", + "itemsRich": [ + "Определяет и загружает последний стабильный ISO-образ (или использует запасную версию, если исходный сервер недоступен).", + "Применяет параметры CPU / RAM / BIOS / типа машины по умолчанию или заданные при расширенной настройке.", + "Открывает план настройки хранилища и подключает выбранные виртуальные диски, импортированные диски и устройства PCI.", + "Создаёт EFI-диск, если выбран UEFI.", + "Подключает установочный ISO-образ к ide2.", + "Задаёт порядок загрузки (сначала диск, затем ISO-образ).", + "Включает канал связи с QEMU Guest Agent.", + "При необходимости запускает помощник по пробросу GPU.", + "Создаёт оформленное HTML-описание и добавляет его к виртуальной машине.", + "Запускает виртуальную машину, если вы выбрали её запуск." + ] + }, + "perSystem": { + "heading": "Примечания для отдельных систем", + "shellLabel": "Интерфейс командной оболочки", + "webLabel": "Веб-интерфейс" + }, + "systems": { + "truenasScale": { + "id": "truenas-scale", + "title": "TrueNAS SCALE", + "icon": "Database", + "officialName": "TrueNAS SCALE", + "officialUrl": "https://www.truenas.com/truenas-scale/", + "description": "TrueNAS на базе Debian с приложениями Docker в актуальных выпусках, Linux KVM и ZFS в качестве основной файловой системы. В более ранних выпусках SCALE использовался Kubernetes. Система сочетает хранилище на базе ZFS с экосистемой контейнеров.", + "specs": [ + "Рекомендуемый интерфейс: SATA или SCSI (оба поддерживают discard/trim)", + "Минимальный объём оперативной памяти: 8 ГБ (для реальных рабочих нагрузок рекомендуется 16 ГБ и более)", + "Минимальное количество ядер процессора: 2 (рекомендуется 4 и более)", + "Рекомендуется загрузка через UEFI (OVMF)", + "Сетевой адаптер VirtIO для максимальной пропускной способности" + ], + "shellImg": "/vm/truenas/truenas-scale-shell.png", + "webImg": "/vm/truenas/truenas-scale-web.png", + "shellAlt": "Интерфейс командной оболочки TrueNAS SCALE", + "webAlt": "Веб-интерфейс TrueNAS SCALE" + }, + "truenasCore": { + "id": "truenas-core", + "title": "TrueNAS CORE", + "icon": "Database", + "officialName": "TrueNAS CORE", + "officialUrl": "https://www.truenas.com/truenas-core/", + "description": "TrueNAS на базе FreeBSD, ранее известная как FreeNAS, ориентирована на хранение данных с использованием ZFS. Окружения jail, плагины и функции виртуализации CORE 13.3 устарели и не поддерживаются; текущая разработка сосредоточена на редакциях на базе Linux.", + "specs": [ + "Рекомендуемый интерфейс: SATA", + "Минимальный объём оперативной памяти: 8 ГБ (рекомендуется 16 ГБ и более)", + "Минимальное количество ядер процессора: 2 (рекомендуется 4 и более)", + "Рекомендуется загрузка через UEFI (OVMF)", + "Сетевой адаптер VirtIO для максимальной пропускной способности" + ], + "shellImg": "/vm/truenas/truenas-core-shell.png", + "webImg": "/vm/truenas/truenas-core-web.png", + "shellAlt": "Интерфейс командной оболочки TrueNAS CORE", + "webAlt": "Веб-интерфейс TrueNAS CORE" + }, + "openmediavault": { + "id": "openmediavault", + "title": "OpenMediaVault", + "icon": "Server", + "officialName": "openmediavault.org", + "officialUrl": "https://www.openmediavault.org", + "description": "NAS на базе Debian с модульной системой плагинов. Нетребовательна к ресурсам и легко работает на скромном оборудовании — подходящий выбор, если вам не нужен ZFS.", + "specs": [ + "Рекомендуемый интерфейс: SATA или VirtIO", + "Минимальный объём оперативной памяти: 2 ГБ (рекомендуется 4 ГБ и более)", + "Минимальное количество ядер процессора: 1 (рекомендуется 2 и более)", + "BIOS: ProxMenux по умолчанию использует SeaBIOS для OMV (при необходимости измените в дополнительных настройках)", + "Сетевой адаптер VirtIO для максимальной пропускной способности" + ], + "shellImg": "/vm/openmediavault/openmediavault-shell.png", + "webImg": "/vm/openmediavault/openmediavault-web.png", + "shellAlt": "Интерфейс командной оболочки OpenMediaVault", + "webAlt": "Веб-интерфейс OpenMediaVault" + }, + "xigmanas": { + "id": "xigmanas", + "title": "XigmaNAS", + "icon": "Database", + "officialName": "xigmanas.com", + "officialUrl": "https://www.xigmanas.com", + "description": "NAS на базе FreeBSD — прямое продолжение исходной кодовой базы FreeNAS (0.7). Ориентирована на ZFS и простоту, потребляет меньше ресурсов, чем TrueNAS.", + "specs": [ + "Рекомендуемый интерфейс: SATA или SCSI", + "Минимальный объём оперативной памяти: 4 ГБ (для ZFS рекомендуется 8 ГБ и более)", + "Минимальное количество ядер процессора: 2", + "Рекомендуется загрузка через UEFI (OVMF)", + "Сетевой адаптер VirtIO для максимальной пропускной способности" + ] + }, + "rockstor": { + "id": "rockstor", + "title": "Rockstor", + "icon": "HardDrive", + "officialName": "rockstor.com", + "officialUrl": "https://rockstor.com", + "description": "NAS на базе openSUSE Leap с файловой системой Btrfs. Снимки, подтома и платформа приложений Rock-ons (Docker) для работы с мультимедиа, общего доступа к файлам и резервного копирования.", + "specs": [ + "Рекомендуемый интерфейс: SATA или VirtIO", + "Минимальный объём оперативной памяти: 2 ГБ (рекомендуется 4 ГБ и более)", + "Минимальное количество ядер процессора: 2", + "Рекомендуется загрузка через UEFI (OVMF)", + "Сетевой адаптер VirtIO для максимальной пропускной способности" + ], + "shellImg": "/vm/rockstor/rockstor-shell.png", + "webImg": "/vm/rockstor/rockstor-web.png", + "shellAlt": "Интерфейс командной оболочки Rockstor", + "webAlt": "Веб-интерфейс Rockstor" + }, + "zimaos": { + "id": "zimaos", + "title": "ZimaOS", + "icon": "MonitorIcon", + "officialName": "zimaspace.com", + "officialUrl": "https://www.zimaspace.com/zimaos", + "description": "Легковесная ОС для NAS и домашнего сервера, собранная с помощью Buildroot на основе CasaOS, с упором на мультимедиа, приложения Docker и домашнюю автоматизацию. ZimaOS использует специальный установщик ProxMenux (vm/zimaos.sh), который загружает готовый образ и позволяет настроить процессор, оперативную память и хранилище.", + "specs": [ + "Рекомендуемый интерфейс: SATA или VirtIO", + "Оперативная память по умолчанию: 4 ГБ (достаточно для мультимедиа и приложений на собственном сервере)", + "Минимальное количество ядер процессора: 2", + "Загрузка UEFI (OVMF)", + "Сетевой адаптер VirtIO для максимальной пропускной способности" + ] + }, + "fygoos": { + "id": "fygoos", + "title": "FygoOS", + "icon": "Server", + "officialName": "fygonas.com", + "officialUrl": "https://fygonas.com", + "description": "Международная версия fnOS — NAS на базе Debian. ProxMenux загружает последний установочный ISO-образ, опубликованный на fygonas.com, и подключает его к виртуальной машине. Установщик размещает систему на одном диске; оставшееся место на этом диске можно использовать для томов с приложениями и файлами. После установки в консоли отображается адрес веб-интерфейса на порту 5666 (с порта 80 выполняется перенаправление на него): откройте этот адрес в браузере, чтобы задать имя устройства и создать учётную запись администратора.", + "specs": [ + "Системный диск: FygoOS предлагает системный раздел размером 64 ГБ, который в виртуальной машине может быть меньше", + "Установка: Graphical Install или Rescuing Install, если графическая установка не удаётся", + "Загрузка UEFI (OVMF) без ключей Secure Boot, как того требует установщик", + "Сеть: Ethernet с DHCP по умолчанию", + "Сетевой адаптер VirtIO для максимальной пропускной способности" + ] + } + }, + "related": { + "heading": "Связанные материалы", + "itemsRich": [ + { + "href": "/docs/create-vm/system-nas", + "label": "Обзор систем NAS", + "tail": " — краткое сравнение всех вариантов NAS." + }, + { + "href": "/docs/create-vm/system-nas/synology", + "label": "ВМ Synology", + "tail": " — для сценария установки Synology DSM (Xpenology)." + }, + { + "href": "/docs/disk-manager/import-disk-vm", + "label": "Импортировать диск в ВМ", + "tail": " — рекомендуется для NAS (физические диски предпочтительнее виртуальных)." + }, + { + "href": "/docs/help-info/zfs-commands", + "label": "Команды управления ZFS", + "tail": " — если вы выберете TrueNAS или другой дистрибутив на базе ZFS." + }, + { + "href": "/docs/create-vm", + "label": "Обзор создания ВМ", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/create-vm/system-windows.json b/web/messages/ru/docs/create-vm/system-windows.json new file mode 100644 index 00000000..728b9321 --- /dev/null +++ b/web/messages/ru/docs/create-vm/system-windows.json @@ -0,0 +1,259 @@ +{ + "meta": { + "title": "Создание ВМ: система Windows | Документация ProxMenux", + "description": "Создание и настройка виртуальных машин Windows на Proxmox VE с помощью ProxMenux. Описаны варианты с ISO-образом из UUP Dump и локальным ISO-образом, стандартная и расширенная настройка, единый план размещения данных, необязательный проброс GPU, настройка TPM 2.0 и установка драйверов VirtIO.", + "ogTitle": "Создание ВМ: система Windows | Документация ProxMenux", + "ogDescription": "Создание ВМ Windows на Proxmox VE с помощью ProxMenux. UUP Dump или локальный ISO-образ, единый план размещения данных, необязательный проброс GPU, TPM 2.0 и драйверы VirtIO.", + "ogImageAlt": "Меню виртуальных машин Windows в ProxMenux" + }, + "header": { + "title": "Создание ВМ: система Windows", + "description": "Создайте виртуальную машину с Windows на Proxmox VE. ProxMenux обеспечивает выбор ISO-образа (UUP Dump или локальный образ), настройку процессора, оперативной памяти и типа машины, единый план хранения, необязательный проброс GPU, настройку TPM 2.0 и установку драйверов VirtIO.", + "section": "Виртуальные машины" + }, + "intro": { + "title": "Что делает этот скрипт", + "body": "При создании виртуальной машины с Windows сначала запрашивается источник ISO-образа (UUP Dump или локальная копия, уже находящаяся в /var/lib/vz/template/iso), а затем запускается общий мастер создания виртуальных машин. Он применяет подходящие для Windows настройки по умолчанию — q35 + OVMF + TPM 2.0, подключает ISO-образ с драйверами VirtIO ко второму приводу CD-ROM и создаёт виртуальную машину, готовую к запуску установщика Windows." + }, + "image": { + "alt": "ProxMenux: варианты установки Windows", + "caption": "Варианты установки Windows" + }, + "config": { + "heading": "Стандартная и расширенная настройка", + "intro": "После выбора ISO-образа ProxMenux предлагает использовать профиль виртуальной машины по умолчанию или открыть расширенный мастер. Профиль по умолчанию настроен для современных настольных и серверных редакций Windows.", + "defaultHeading": "Стандартная настройка", + "headerParam": "Параметр", + "headerValue": "Значение по умолчанию", + "defaultRows": [ + { + "param": "Тип машины", + "valueRich": "q35" + }, + { + "param": "BIOS", + "value": "OVMF (UEFI)" + }, + { + "param": "Тип процессора", + "value": "Host" + }, + { + "param": "Ядра", + "value": "4" + }, + { + "param": "RAM", + "value": "8192 МБ" + }, + { + "param": "Сетевой мост", + "valueRich": "vmbr0" + }, + { + "param": "MAC-адрес", + "value": "Генерируется автоматически" + }, + { + "param": "TPM", + "value": "Включено (v2.0)" + }, + { + "param": "Запустить по завершении", + "value": "Нет" + } + ], + "advancedHeading": "Расширенная настройка", + "advancedIntro": "Расширенный мастер позволяет настроить каждый параметр отдельно:", + "headerOptions": "Варианты", + "advancedRows": [ + { + "param": "Тип машины", + "optionsRich": "q35 или i440fx" + }, + { + "param": "BIOS", + "options": "OVMF (UEFI) или SeaBIOS (Legacy)" + }, + { + "param": "Тип процессора", + "options": "Host, KVM64 и другие модели процессоров из списка" + }, + { + "param": "Ядра", + "options": "Количество ядер процессора" + }, + { + "param": "RAM", + "options": "Память, выделенная виртуальной машине" + }, + { + "param": "Сетевой мост", + "options": "Сетевой мост" + }, + { + "param": "MAC-адрес", + "options": "Пользовательский MAC-адрес" + }, + { + "param": "VLAN", + "options": "Тег VLAN (необязательно)" + }, + { + "param": "MTU", + "options": "Размер MTU" + }, + { + "param": "TPM", + "options": "TPM 2.0 добавляется автоматически для Windows; в этом мастере нет переключателя TPM." + } + ], + "tpmWarnTitle": "Требования к TPM зависят от редакции Windows", + "tpmWarnBody": "Windows 11 обычно требует TPM 2.0. В Windows Server 2022 он необходим для определённых функций безопасности, но не для каждой установки. ProxMenux добавляет виртуальный TPM для Windows; в расширенном мастере нет переключателя TPM." + }, + "storagePlan": { + "heading": "План хранения", + "body": "После настройки процессора и оперативной памяти ProxMenux открывает меню План хранения, в котором можно объединить виртуальные диски, импортированные диски и устройства с пробросом PCI в одной виртуальной машине, добавляя их по одному и завершая настройку, когда всё готово.", + "virtualDiskTitle": "a. Добавить виртуальный диск", + "virtualDiskItems": [ + "Выводит список томов хранилищ Proxmox, доступных на хосте.", + "Вы выбираете целевое хранилище и размер в ГБ.", + "Диск использует выбранную шину: SCSI (по умолчанию), SATA, VirtIO или IDE. Слоты SATA обозначаются sata0, sata1, …; всего доступно шесть слотов с номерами 0–5." + ], + "importDiskTitle": "b. Добавить диск для импорта", + "importDiskItems": [ + "Обнаруживает физические диски, которые можно безопасно импортировать (системные и защищённые диски скрыты).", + "Вы выбираете один или несколько дисков в списке с флажками.", + "Импортированные диски используют выбранную шину и подключаются через qm set." + ], + "pciTitle": "c. Добавить контроллер или NVMe (проброс PCI)", + "pciItems": [ + "Обнаруживает контроллеры HBA SATA/SAS и устройства NVMe на хосте и позволяет пробросить в ВМ контроллер целиком. IOMMU должен быть включён; скрипт предлагает включить его и при необходимости перезагружает хост.", + "На этапе подтверждения выводится предупреждение о риске, затрагивающем весь контроллер: вся плата, включая все подключённые к ней диски, становится недоступна хосту.", + "Выбранные устройства PCI подключаются с помощью команд вида qm set VMID --hostpci0 PCI_ADDRESS,pcie=1. Замените VMID и PCI_ADDRESS на идентификатор ВМ и адрес PCI соответственно и используйте свободный индекс hostpci для каждого устройства." + ], + "resetTitle": "Сброс и завершение", + "resetBody": "В меню также доступны r (сбросить текущий выбор и начать заново) и d (завершить и продолжить). Завершить работу с пустым планом нельзя." + }, + "gpu": { + "heading": "Необязательный проброс GPU", + "body": "После составления плана хранения, если на хосте обнаружен совместимый GPU, ProxMenux предлагает запустить помощник проброса GPU. Описание работы помощника см. в разделе Добавление GPU в ВМ (проброс) — может потребоваться перезагрузка хоста." + }, + "autoFeatures": { + "heading": "Автоматически настраиваемые функции ВМ", + "efiTitle": "Диск EFI", + "efiBody": "При выборе OVMF (UEFI) ProxMenux создаёт системный диск EFI размером 4 МБ в выбранном хранилище и подключает его к виртуальной машине, чтобы у прошивки UEFI было место для хранения переменных.", + "tpmTitle": "TPM 2.0", + "tpmBody": "ProxMenux добавляет виртуальное устройство TPM 2.0 для виртуальных машин с Windows. Это обеспечивает выполнение требования Windows 11 к TPM и поддержку функций Windows Server, зависящих от TPM.", + "isoTitle": "Подключение ISO", + "isoBody": "Установочный ISO-образ подключается к ide2. ISO-образ с драйверами VirtIO загружается (при необходимости) и подключается к ide3 для использования на этапе Загрузить драйвер.", + "guestTitle": "Гостевой агент QEMU", + "guestBody": "Канал гостевого агента включён в конфигурации виртуальной машины. Сам агент устанавливается внутри Windows запуском virtio-win-guest-tools.exe после завершения установки системы." + }, + "installOptions": { + "heading": "Варианты установки Windows", + "intro": "ProxMenux предлагает два способа получения установочного носителя Windows:", + "uupTitle": "Создание ISO с помощью UUP Dump", + "uupLogoAlt": "Логотип UUP Dump", + "uupBody": "Скрипт UUP Dump ISO Creator — это утилита ProxMenux, которая создаёт ISO-образ Windows на лету из файлов с серверов Центра обновления Windows Microsoft. Она загружает чистые официальные установочные файлы (включая сборки Insider Preview).", + "uupItems": [ + "Доступ к новейшим сборкам Windows.", + "Поддержка версий Insider Preview.", + "Чистые официальные установочные файлы Microsoft.", + "Автоматическое создание ISO-образа и его подключение к виртуальной машине.", + "Поддержка редакций Home, Pro и Enterprise." + ], + "uupLearnMore": "Подробнее об UUP Dump ISO Creator", + "localTitle": "Установка с локального ISO-образа", + "localBody": "Используется ISO-образ Windows, который вы уже загрузили в локальное хранилище узла (/var/lib/vz/template/iso). Скрипт выводит список всех найденных ISO-образов, кроме VirtIO, и позволяет выбрать один из них.", + "localImageAlt": "Меню выбора локального ISO-образа", + "localImageCaption": "Меню выбора локального ISO-образа" + }, + "endToEnd": { + "heading": "Что делает скрипт от начала до конца", + "items": [ + "Получает ISO-образ Windows (сборку UUP Dump или локальную копию).", + "Применяет стандартные или расширенные настройки CPU / RAM / BIOS / типа машины.", + "Открывает план настройки хранилища и подключает выбранные виртуальные диски, импортированные диски и устройства PCI.", + "Создаёт диск EFI (для установки в режиме UEFI) и подключает устройство TPM 2.0.", + "Подключает ISO-образ Windows к ide2.", + "Скачивает ISO-образ с драйверами VirtIO и подключает его к ide3.", + "Задаёт порядок загрузки (сначала диск, затем ISO-образ).", + "Включает канал связи с QEMU Guest Agent.", + "При необходимости запускает помощник по пробросу GPU.", + "Создаёт оформленное HTML-описание и добавляет его к виртуальной машине.", + "Запускает виртуальную машину, если вы выбрали её запуск." + ] + }, + "virtio": { + "heading": "Драйверы VirtIO во время установки", + "body": "По умолчанию средство создания ВМ использует диски SCSI с контроллером SCSI VirtIO и сетевой адаптер VirtIO. При установке со стандартного ISO-образа Windows могут потребоваться драйверы для этих устройств с ISO-образа VirtIO, подключённого к ide3. Диски SATA обычно работают со встроенными драйверами Windows; выбор SATA не меняет сетевой адаптер VirtIO.", + "warnTitle": "Загрузите сетевой драйвер VirtIO, если в Windows нет доступа к сети", + "warnBody": "ВМ использует сетевой адаптер VirtIO (virtio). Если в Windows нет его драйвера, загрузите его во время установки, чтобы получить доступ к сети. Иначе при первом запуске активация и Центр обновления Windows могут быть недоступны.", + "stepLabel": "Шаг", + "steps": [ + { + "title": "Перейдите к экрану «Где вы хотите установить Windows?»", + "body": "Если во время установки Windows диски не отображаются, значит, драйвер накопителя для выбранного интерфейса (SCSI или VirtIO) ещё не загружен. Загрузите его вручную с подключённого ISO-образа VirtIO.", + "img": "/vm/windows/virtio-step-1.png", + "caption": "Установка Windows: диски не отображаются" + }, + { + "title": "Нажмите «Загрузить драйвер»", + "bodyRich": "Нажмите Загрузить драйвер, чтобы просмотреть содержимое подключённого ISO-образа VirtIO и выбрать драйвер накопителя, соответствующий выбранному интерфейсу.", + "img": "/vm/windows/virtio-step-2.png", + "caption": "Нажмите «Загрузить драйвер», чтобы просмотреть содержимое ISO-образа VirtIO" + }, + { + "title": "Перейдите в нужную папку с драйверами", + "bodyRich": "На ISO-образе VirtIO выберите vioscsi для контроллера SCSI VirtIO или viostor для блочных дисков VirtIO. Затем выберите вложенную папку для вашей версии и архитектуры Windows.", + "img": "/vm/windows/virtio-step-3.png", + "caption": "Перейдите в соответствующую папку с драйверами" + }, + { + "title": "Выберите драйвер", + "bodyRich": "Windows отобразит список доступных драйверов. Выберите тот, который соответствует вашей конфигурации (обычно контроллер SCSI Red Hat VirtIO), и нажмите Далее.", + "img": "/vm/windows/virtio-step-4.png", + "caption": "Выберите драйвер VirtIO, соответствующий интерфейсу вашего диска" + }, + { + "title": "(Необязательно) Установите сетевой драйвер", + "bodyRich": "Если в качестве сетевого интерфейса вы также выбрали VirtIO, загрузите сетевой драйвер из папки NetKVM на том же ISO-образе, выбрав подпапку для вашей версии Windows. Без этого шага Windows установится без доступа к интернету.", + "img": "/vm/windows/virtio-step-5.png", + "caption": "Загрузите сетевой драйвер VirtIO, чтобы обеспечить доступ к интернету во время установки" + } + ], + "tipTitle": "После установки: запустите virtio-win-guest-tools.exe", + "tipBody": "После установки Windows откройте ISO-образ VirtIO в Проводнике и запустите virtio-win-guest-tools.exe. Эта программа за один раз установит оставшиеся драйверы (сети, дисплея, устройств ввода, динамического управления памятью), а также QEMU Guest Agent." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/utils/UUp-Dump-ISO-Creator", + "label": "Создание ISO с помощью UUP Dump", + "tail": " — создавайте актуальные установочные ISO-образы Windows на узле Proxmox." + }, + { + "href": "/docs/disk-manager/import-disk-image-vm", + "label": "Импортировать образ диска в ВМ", + "tail": " — импортируйте существующий образ диска Windows (.vmdk, .qcow2, .img или .raw) в существующую ВМ; образы .vhdx сначала преобразуйте в поддерживаемый формат." + }, + { + "href": "/docs/hardware/gpu-vm-passthrough", + "label": "Добавить GPU в ВМ (прямой проброс)", + "tail": " — для ВМ с Windows и аппаратным ускорением GPU." + }, + { + "href": "/docs/help-info/vm-ct-commands", + "label": "Команды управления ВМ и контейнерами", + "tail": " — справочник по интерфейсу командной строки qm." + }, + { + "href": "/docs/create-vm", + "label": "Обзор создания ВМ", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/disk-manager/add-controller-nvme-vm.json b/web/messages/ru/docs/disk-manager/add-controller-nvme-vm.json new file mode 100644 index 00000000..821e388f --- /dev/null +++ b/web/messages/ru/docs/disk-manager/add-controller-nvme-vm.json @@ -0,0 +1,128 @@ +{ + "meta": { + "title": "Добавление контроллера или NVMe в ВМ | Документация ProxMenux", + "description": "Проброс контроллера хранения (SATA / SAS HBA) или устройства NVMe по PCI в ВМ Proxmox с помощью ProxMenux. Включение IOMMU, обнаружение конфликтов и настройка подключения через qm set --hostpci.", + "ogTitle": "Добавление контроллера или NVMe в ВМ | Документация ProxMenux", + "ogDescription": "Пробросьте целиком адаптер SATA / SAS HBA или устройство NVMe в ВМ Proxmox. ProxMenux выполняет настройку IOMMU, обнаружение конфликтов и подключение через hostpci." + }, + "header": { + "title": "Добавить контроллер или NVMe в ВМ", + "description": "Передайте целиком адаптер шины SATA / SAS (HBA) или устройство NVMe в ВМ Proxmox с помощью проброса PCI. ProxMenux проверяет IOMMU и — с вашего согласия — включает его, перечисляет устройства, доступные для проброса, исключает конфликтующие устройства и настраивает назначение с помощью qm set --hostpci.", + "section": "Диспетчер дисков · ВМ" + }, + "intro": { + "title": "Что делает эта функция (и чего она не делает)", + "body": "Это проброс на уровне устройства: карта PCIe становится недоступна ядру хоста и привязывается к vfio-pci. ВМ видит сам контроллер, а не отдельные подключённые к нему диски, и загружает собственный драйвер именно для этой модели. Все диски, подключённые к этому контроллеру, автоматически передаются вместе с ним — с прямым доступом к данным SMART, всеми возможностями прошивки и без промежуточного слоя Proxmox." + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Процесс состоит из двух чётко разделённых этапов: «сбор информации, проверка IOMMU и составление списка подходящих устройств» и «непосредственное подключение устройства PCI». До окончательного подтверждения в конфигурацию ВМ ничего не записывается." + }, + "iommu": { + "heading": "Группы IOMMU — почему карта передаётся целиком", + "body": "Границей изоляции при пробросе PCI служит группа IOMMU — наименьшая единица, которую IOMMU процессора может изолировать. Устройства в одной группе не могут быть изолированы друг от друга. Если контроллер SATA находится в одной группе с контроллером USB, для проброса SATA может также потребоваться освободить контроллер USB от использования хостом, либо проброс может оказаться невозможным. Проброс одного устройства не означает автоматического назначения ВМ всех устройств этой группы.", + "outro": "ProxMenux показывает группу IOMMU рядом с каждым устройством и предупреждает, если в группе есть другие устройства помимо нужного контроллера. Вы можете продолжить, если наличие дополнительных устройств в группе допустимо (например, если все они — дисковые контроллеры), или отказаться, если это не так." + }, + "prereqs": { + "heading": "Предварительные требования", + "items": [ + "Процессор и материнская плата поддерживают VT-d (Intel) или AMD-Vi, и эта функция включена в прошивке (BIOS/UEFI). ProxMenux может включить поддержку на уровне ядра, но не может включить эту функцию в прошивке.", + "Целевая ВМ должна быть выключена перед подключением устройств PCI.", + "Контроллер или устройство NVMe не содержит корневую файловую систему Proxmox. Скрипт скрывает все устройства, используемые хостом.", + "В гостевой ОС должны быть драйверы для этой модели контроллера. Linux поддерживает практически любые HBA без установки дополнительных драйверов; в Windows необходимо установить драйвер производителя до загрузки с подключённым контроллером." + ], + "warnTitle": "Миграция без остановки невозможна", + "warnBody": "ВМ с пробросом PCI привязана к узлу, в котором физически установлена плата. Миграция без остановки между узлами завершится ошибкой. Учитывайте это при планировании резервного копирования и репликации." + }, + "steps": { + "heading": "Пошаговая инструкция", + "stepLabel": "Шаг", + "list": [ + { + "title": "Выберите целевую ВМ", + "bodyRich": "ProxMenux читает qm list и показывает все ВМ. Выберите ту, которой будет передан контроллер.", + "img": "/disk/nvme-passthrough/vm-selection.png", + "alt": "Диалог выбора ВМ", + "caption": "Диалог выбора ВМ" + }, + { + "title": "Проверка IOMMU", + "bodyRich": "Если IOMMU не включён в командной строке ядра, ProxMenux предлагает включить его. Скрипт изменяет /etc/kernel/cmdline (для systemd-boot) или /etc/default/grub (для GRUB) и добавляет параметр, соответствующий вашему процессору:", + "items": [ + "intel_iommu=on для процессоров Intel.", + "amd_iommu=on для процессоров AMD." + ], + "outro": "После этого изменения требуется перезагрузка. Скрипт предлагает перезагрузить систему сейчас или позже; продолжить настройку проброса невозможно, пока не вступит в силу новая командная строка ядра.", + "img": "/disk/nvme-passthrough/iommu-warning.png", + "alt": "Диалог «Требуется IOMMU»", + "caption": "Требуется IOMMU — предложение включить его и перезагрузить систему" + }, + { + "title": "Обнаружение устройств", + "body": "ProxMenux выводит список всех контроллеров хранения данных (SATA / SAS HBA) и всех устройств NVMe на шине PCI. Для каждого устройства отображаются:", + "items": [ + "Адрес PCI (00:17.0, 01:00.0, …).", + "Производитель / описание устройства.", + "Группа IOMMU и предупреждение ⚠, если в эту группу входят другие, не связанные с ним устройства.", + "Диски, подключённые к контроллеру в данный момент (чтобы вы знали, какие диски будут переданы в ВМ вместе с ним)." + ], + "img": "/disk/nvme-passthrough/device-list.png", + "alt": "Список контроллеров и устройств NVMe", + "caption": "Список контроллеров и устройств NVMe со сведениями о группах IOMMU" + }, + { + "title": "Обнаружение конфликтов", + "bodyRich": "Скрипт блокирует устройства, проброс которых явно небезопасен: уже назначенные другой ВМ (через hostpci в её конфигурации), используемые хостом (контроллер корневого диска) или входящие в группу IOMMU, остальные устройства которой скрипт не может надёжно идентифицировать. Устройства, прошедшие проверку, доступны для выбора.", + "img": "/disk/nvme-passthrough/conflict-warning.png", + "alt": "Предупреждение об обнаружении конфликта", + "caption": "Обнаружение конфликтов — устройство заблокировано с указанием причины" + }, + { + "title": "Подключение и завершение", + "bodyRich": "Для каждого выбранного устройства ProxMenux выполняет qm set <VMID> --hostpciN <pci-addr>,pcie=1, выбирая следующий свободный слот hostpci. Если IOMMU был включён в ходе этого сеанса, появится напоминание о необходимости перезагрузки перед запуском ВМ.", + "img": "/disk/nvme-passthrough/assignment.png", + "alt": "Сводка назначений", + "caption": "Сводка назначений — слоты hostpciN и PCI-адреса подключённых устройств" + } + ] + }, + "manual": { + "heading": "Эквивалентные действия вручную" + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "noGroupsTitle": "IOMMU включён, но в /sys/kernel/iommu_groups/ нет групп", + "noGroupsBody": "Для применения параметров командной строки ядра необходима перезагрузка. Если после перезагрузки группы по-прежнему отсутствуют, вероятно, VT-d / AMD-Vi отключён в прошивке — проверьте настройки BIOS/UEFI.", + "busyTitle": "ВМ не запускается с сообщением «hostpciN: device busy»", + "busyBody": "PCI-устройство всё ещё занято другим процессом. Наиболее частые причины: ранее работавшая ВМ аварийно завершилась, не освободив устройство, или ядро хоста снова взяло его под управление при последней загрузке. Выполните lspci -nnk -s <addr>, чтобы узнать, какой драйвер привязан к устройству; это должен быть vfio-pci. Полная перезагрузка хоста обычно устраняет проблему.", + "noDisksTitle": "Гостевая ОС видит контроллер, но не диски", + "noDisksBody": "В гостевой ОС отсутствует драйвер для этой модели контроллера. В Linux такое встречается крайне редко, а в Windows — встречается. Установите драйвер производителя (например, LSI / Broadcom для старых SAS HBA), пока карта отключена от ВМ, затем подключите карту и перезагрузите гостевую ОС.", + "sharedTitle": "В группу IOMMU входит постороннее устройство", + "sharedBody": "Варианты: (a) переставьте карту в другой слот PCIe, чтобы изменить её группу; (b) включите ACS override в ядре для разделения групп (это снижает безопасность — изучите последствия перед применением); (c) выберите другую карту в группе без посторонних устройств." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/disk-manager/import-disk-vm", + "label": "Импортировать диск в ВМ", + "tail": " — альтернативный подход: подключение физического диска через Proxmox без полного проброса PCIe." + }, + { + "href": "/docs/hardware/gpu-vm-passthrough", + "label": "Добавить GPU в ВМ (прямой проброс)", + "tail": " — те же принципы IOMMU / VFIO применительно к GPU." + }, + { + "href": "/docs/help-info/gpu-commands", + "label": "Команды для проброса GPU", + "tail": " — команды проверки IOMMU также применимы к пробросу контроллеров / NVMe." + }, + { + "href": "/docs/disk-manager", + "label": "Обзор диспетчера дисков", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/disk-manager/format-disk.json b/web/messages/ru/docs/disk-manager/format-disk.json new file mode 100644 index 00000000..f5cd26ea --- /dev/null +++ b/web/messages/ru/docs/disk-manager/format-disk.json @@ -0,0 +1,142 @@ +{ + "meta": { + "title": "Форматирование / очистка физического диска | Документация ProxMenux", + "description": "Безопасная очистка и форматирование физических дисков в Proxmox VE с помощью ProxMenux. Четыре режима работы, строгие защитные фильтры (системные, смонтированные и используемые диски заблокированы) и двойное подтверждение, включая ввод полного пути.", + "ogTitle": "Форматирование / очистка физического диска | Документация ProxMenux", + "ogDescription": "Безопасная очистка или форматирование физического диска в Proxmox. Отображение только безопасных для обработки дисков, 4 режима работы, двойное подтверждение." + }, + "header": { + "title": "Форматировать / стереть физический диск", + "description": "Безопасная очистка или форматирование физического диска на хосте Proxmox. ProxMenux показывает только полностью свободные диски (не используемые системой, не указанные в конфигурациях гостевых систем и не смонтированные) и требует двойного подтверждения — ответа «да/нет» и ввода полного пути к диску — перед уничтожением любых данных.", + "section": "Диспетчер дисков · Утилиты" + }, + "danger": { + "title": "Инструмент, уничтожающий данные", + "body": "Каждая операция здесь выполняет запись на диск. Отменить её невозможно. ProxMenux применяет строгие фильтры безопасности и требует подтверждений, но ответственность за выбор правильного диска лежит на вас. Дважды прочитайте путь к диску вслух, прежде чем вводить его." + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Процесс состоит из двух этапов, между которыми действует трёхступенчатый фильтр безопасности. Список дисков, режим операции и сведения о файловой системе собираются на этапе 1; запись начинается только после того, как на этапе 2 будет пройдена заключительная повторная проверка непосредственно перед выполнением." + }, + "visibility": { + "heading": "Правила отображения", + "intro": "Ещё до появления меню ProxMenux фильтрует список дисков. Отображаются только диски, безопасность выбора которых подтверждена:", + "items": [ + "Отображаются — диски, которые не используются хостом (корневой пул, swap, смонтированные диски, активные ZFS/LVM/RAID) и не указаны ни в одной конфигурации VM/LXC (независимо от того, запущена или остановлена соответствующая виртуальная машина или контейнер).", + "Скрыты — диски хоста / системные диски.", + "Скрыты — диски, на которые ссылается конфигурация VM/LXC." + ], + "safetyTitle": "Безопасность при подтверждении и выполнении", + "safetyItems": [ + "Для дисков с устаревшими или активными метаданными отображаются подробные предупреждения до подтверждения.", + "Операции с дисками, используемыми запущенной VM, безусловно блокируются на этапе подтверждения.", + "Операции с дисками, на которых есть смонтированные разделы, безусловно блокируются на этапе выполнения (непосредственно перед любой записью проводится новая проверка).", + "Всегда требуются два подтверждения: диалог да/нет и точный ввод полного пути к диску." + ] + }, + "modes": { + "heading": "Режимы работы", + "intro": "После выбора диска вы выбираете один из четырёх режимов. Они различаются тем, что уничтожают и что сохраняют:", + "headerMode": "Режим", + "headerPart": "Таблица разделов", + "headerData": "Данные", + "headerUseCase": "Сценарий использования", + "rows": [ + { + "mode": "1. Очистить всё", + "part": "Уничтожается", + "data": "Сигнатуры стираются", + "useCase": "Удаляет таблицу разделов и метаданные файловой системы и RAID, обнуляет первые и последние 16 MiB, а на накопителях с поддержкой discard выполняет TRIM для всего диска. Остальные данные не перезаписываются, и на HDD их восстановление может оставаться возможным; это не безопасное стирание данных." + }, + { + "mode": "2. Удаление меток ФС", + "part": "Сохранена", + "data": "Сохранена", + "useCase": "Удаляет устаревшие сигнатуры ZFS / LVM / RAID, чтобы диск больше не задействовался автоматически. Основной объём пользовательских данных не перезаписывается, но удаление сигнатур может сделать эти данные недоступными." + }, + { + "mode": "3. Обнуление всех данных", + "part": "Сохранена", + "data": "Уничтожены (обнулены)", + "useCase": "Перезаписывает существующие разделы нулями, сохраняя таблицу разделов. Нераспределённое пространство и резервные области SSD не затрагиваются; полная очистка устройства от данных не гарантируется." + }, + { + "mode": "4. Полное форматирование", + "part": "Новая GPT", + "data": "Уничтожается", + "useCase": "Готовый к использованию диск с одним новым разделом и новой файловой системой." + } + ], + "fullFormatOutro": "При выборе режима Полное форматирование появляются два дополнительных диалоговых окна:", + "fullFormatItems": [ + "Файловая система — ext4, xfs, exfat (для использования на разных платформах) или btrfs. Если необходимые инструменты (например, mkfs.btrfs) отсутствуют, операция прерывается с понятным сообщением.", + "Метка — необязательная метка файловой системы для её идентификации." + ] + }, + "steps": { + "heading": "Пошаговая инструкция", + "stepLabel": "Шаг", + "list": [ + { + "title": "Выберите свободный диск", + "body": "ProxMenux выводит список всех дисков, прошедших указанные выше фильтры видимости. Диски с отметкой ⚠ содержат устаревшие метаданные и отображаются с подробной информацией, чтобы вы знали, что именно собираетесь перезаписать." + }, + { + "title": "Выберите режим работы", + "bodyRich": "Выберите Полная очистка, Удаление меток ФС, Обнуление всех данных или Полное форматирование в соответствии с таблицей выше." + }, + { + "title": "Выберите файловую систему и метку (только при полном форматировании)", + "body": "ext4 / xfs / exfat / btrfs и необязательная метка." + }, + { + "title": "Подтвердите дважды", + "bodyRich": "ProxMenux показывает сводку предстоящих действий. Подтвердите операцию в диалоговом окне «да/нет» и введите полный путь к диску точно так, как он показан (например, /dev/sdc). Любой другой ввод прерывает операцию." + }, + { + "title": "Повторная проверка и выполнение", + "body": "Непосредственно перед записью скрипт повторно проверяет состояние диска. Если за это время был смонтирован раздел или запущена виртуальная машина, выполнение прерывается. В противном случае выполняется выбранная операция, а в конце выводится сводка." + } + ] + }, + "manual": { + "heading": "Эквивалентные команды для ручного выполнения", + "body": "Если вы предпочитаете выполнить эквивалентные команды вручную:" + }, + "troubleshoot": { + "notListedTitle": "Диск не отображается в меню", + "notListedBody": "Он исключён из списка в целях безопасности. Частые причины: диск смонтирован (даже в /mnt/tmp), является активным участником ZFS / LVM / RAID, указан в конфигурации ВМ или LXC либо является корневым диском Proxmox. Выполните lsblk -f и cat /proc/mdstat на хосте, чтобы выяснить причину.", + "busyTitle": "«Диск может быть занят» / не удалось размонтировать", + "busyBody": "Какой-то процесс всё ещё держит открытым файл на разделе этого диска — чаще всего это контейнер или оболочка, текущий рабочий каталог которой находится внутри точки монтирования. Найдите этот процесс с помощью lsof | grep /dev/sdX или fuser -vm /dev/sdX1, остановите его и запустите инструмент повторно." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/disk-manager/smart-disk-test", + "label": "Состояние и проверка диска по SMART", + "tail": " — проверьте диск до и после очистки, чтобы убедиться в его исправности." + }, + { + "href": "/docs/disk-manager/import-disk-vm", + "label": "Импортировать диск в ВМ", + "tail": " — передайте только что отформатированный диск в ВМ." + }, + { + "href": "/docs/storage-share/host-local-disk", + "label": "Добавление локального диска в качестве хранилища Proxmox", + "tail": " — зарегистрируйте очищенный диск как пул хранения Proxmox." + }, + { + "href": "/docs/help-info/storage-commands", + "label": "Команды для работы с хранилищами и дисками", + "tail": " — справочник по lsblk, blkid, parted." + }, + { + "href": "/docs/disk-manager", + "label": "Обзор диспетчера дисков", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/disk-manager/import-disk-image-vm.json b/web/messages/ru/docs/disk-manager/import-disk-image-vm.json new file mode 100644 index 00000000..3ad694f3 --- /dev/null +++ b/web/messages/ru/docs/disk-manager/import-disk-image-vm.json @@ -0,0 +1,110 @@ +{ + "meta": { + "title": "Импорт образа диска в ВМ | Документация ProxMenux", + "description": "Импорт файла образа диска (.img / .qcow2 / .vmdk / .raw) в существующую ВМ Proxmox с помощью ProxMenux. Для каждого образа можно выбрать интерфейс, эмуляцию SSD и флаг загрузочного диска; для импорта используется qm importdisk.", + "ogTitle": "Импорт образа диска в ВМ | Документация ProxMenux", + "ogDescription": "Импорт образов дисков .img / .qcow2 / .vmdk / .raw в существующую ВМ с помощью ProxMenux. Для импорта используется qm importdisk." + }, + "header": { + "title": "Импортировать образ диска в ВМ", + "description": "Импорт файла образа диска (.img, .qcow2, .vmdk или .raw) в существующую ВМ Proxmox. ProxMenux заранее запрашивает все параметры — целевую ВМ, хранилище Proxmox, исходный каталог, интерфейс, эмуляцию SSD и порядок загрузки — а затем выполняет qm importdisk для каждого выбранного образа.", + "section": "Диспетчер дисков · ВМ" + }, + "intro": { + "title": "Что делает этот инструмент", + "body": "В отличие от импорта диска в ВМ (при котором подключается физический диск напрямую), эта процедура использует находящийся на хосте файл — экспортированный из другого гипервизора, скачанный как облачный образ или извлечённый из резервной копии — и преобразует его в полноценный диск ВМ Proxmox на выбранном вами томе хранилища. Исходный файл сохраняется: ProxMenux копирует его, а не перемещает." + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Процедура состоит из двух этапов. На первом этапе через диалоговые окна заранее задаются все параметры (ВМ, хранилище, исходный каталог, образы и параметры каждого образа). На втором этапе выполняется qm importdisk для каждого выбранного образа. Пока второй этап не начался, ничего не копируется и конфигурация ВМ не изменяется." + }, + "prereqs": { + "heading": "Предварительные требования", + "items": [ + "На хосте должна быть настроена хотя бы одна ВМ. Целевая ВМ должна быть выключена.", + "В исходном каталоге должен быть хотя бы один файл образа поддерживаемого формата. Поддерживаются: .img, .qcow2, .vmdk, .raw.", + "В целевом хранилище Proxmox должно быть достаточно свободного места для размещения всех импортируемых дисков.", + "По умолчанию ProxMenux ищет образы в /var/lib/vz/template/iso. При появлении запроса можно указать любой другой каталог на хосте." + ] + }, + "steps": { + "heading": "Пошаговая инструкция", + "stepLabel": "Шаг", + "list": [ + { + "title": "Выберите целевую ВМ", + "bodyRich": "ProxMenux считывает qm list и отображает все ВМ. Выберите ВМ, в которую будут импортированы диски." + }, + { + "title": "Выберите хранилище Proxmox", + "bodyRich": "В списке отображаются все хранилища, для которых включён тип содержимого images. Если подходящее хранилище только одно, оно выбирается автоматически, а диалоговое окно не отображается." + }, + { + "title": "Выберите исходный каталог", + "bodyRich": "Выберите каталог по умолчанию (/var/lib/vz/template/iso) или введите свой путь — обычно это каталог, в который вы скачали или загрузили образ. Скрипт отклоняет несуществующие пути." + }, + { + "title": "Выберите один или несколько образов", + "bodyRich": "В каталоге выполняется поиск файлов .img / .qcow2 / .vmdk / .raw. Можно выбрать сразу несколько образов; на следующем шаге параметры будут заданы отдельно для каждого из них." + }, + { + "title": "Параметры каждого образа", + "intro": "Для каждого выбранного образа ProxMenux запрашивает:", + "items": [ + "Интерфейс — scsi (по умолчанию), virtio, sata или ide. Определяет, через какой интерфейс диск будет доступен гостевой системе.", + "Эмуляция SSD — доступна только для интерфейсов, отличных от VirtIO. Добавляет ssd=1, чтобы гостевая система распознавала диск как твердотельный. Поддержку Discard/TRIM необходимо настроить отдельно.", + "Загрузочный диск — если выбран ответ «да», ProxMenux добавляет диск в порядок загрузки, делая его основным загрузочным устройством виртуальной машины." + ] + }, + { + "title": "Импорт и подключение", + "bodyRich": "ProxMenux выполняет qm importdisk для каждого образа (при необходимости преобразуя формат на лету), подключает полученный диск к следующему свободному слоту (scsiN, sataN, …) с выбранными вами параметрами и, если вы отметили какой-либо диск как загрузочный, обновляет порядок загрузки. Ход выполнения отображается в терминале." + } + ] + }, + "manual": { + "heading": "Эквивалентные действия вручную", + "body": "Импорту одного образа соответствуют три команды qm:", + "warnTitle": "Преобразование формата образа", + "warnBody": "Если целевое хранилище не поддерживает хранение образов в исходном формате (например, хранилище LVM не поддерживает .qcow2), qm importdisk автоматически преобразует образ. Для образов размером в несколько гигабайт это может занять несколько минут; учитывайте это при планировании и не прерывайте работу скрипта." + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "noImagesTitle": "«Совместимые образы дисков не найдены»", + "noImagesBody": "Скрипт проверил каталог, но не нашёл файлов .img / .qcow2 / .vmdk / .raw. Проверьте расширение (регистр имеет значение), убедитесь, что файл находится непосредственно в выбранном каталоге (поиск во вложенных каталогах не выполняется) и что права доступа позволяют пользователю root читать его.", + "slowTitle": "Импорт выполняется медленно", + "slowBody": "Скорость преобразования между VMDK, QCOW2 и raw может быть ограничена производительностью процессора и операций ввода-вывода. Скорость импорта зависит от скорости чтения исходных данных, записи в целевое хранилище и необходимой распаковки. По возможности используйте исходные образы в формате raw или qcow2.", + "uefiTitle": "При загрузке с импортированного диска открывается оболочка UEFI", + "uefiBody": "Образ был создан для устаревшего режима загрузки (SeaBIOS), но виртуальная машина использует OVMF (или наоборот). Либо измените BIOS виртуальной машины в Proxmox в соответствии с образом, либо пересоздайте образ в нужном режиме перед импортом." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/disk-manager/import-disk-vm", + "label": "Импортировать диск в ВМ", + "tail": " — аналогичная процедура, но для прямого проброса физических дисков." + }, + { + "href": "/docs/utils/import-vm", + "label": "Импорт ВМ из OVA / OVF", + "tail": " — если у вас есть полный пакет виртуальной машины, а не только образ диска." + }, + { + "href": "/docs/utils/UUp-Dump-ISO-Creator", + "label": "Создание ISO с помощью UUP Dump", + "tail": " — создайте ISO-образ Windows, если он нужен для установки с нуля." + }, + { + "href": "/docs/help-info/storage-commands", + "label": "Команды для работы с хранилищами и дисками", + "tail": " — справочная информация по qm importdisk и qemu-img convert." + }, + { + "href": "/docs/disk-manager", + "label": "Обзор диспетчера дисков", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/disk-manager/import-disk-lxc.json b/web/messages/ru/docs/disk-manager/import-disk-lxc.json new file mode 100644 index 00000000..43a378e8 --- /dev/null +++ b/web/messages/ru/docs/disk-manager/import-disk-lxc.json @@ -0,0 +1,115 @@ +{ + "meta": { + "title": "Импорт диска в LXC | Документация ProxMenux", + "description": "Подключите физический диск к существующему контейнеру LXC на Proxmox VE с помощью ProxMenux. Поддерживаются определение файловой системы и форматирование, настройка точки монтирования, преобразование непривилегированного контейнера в привилегированный и постоянные пути к устройствам.", + "ogTitle": "Импорт диска в LXC | Документация ProxMenux", + "ogDescription": "Подключение физического диска к существующему контейнеру LXC. Настройка файловой системы и точки монтирования, а также преобразование непривилегированного контейнера в привилегированный." + }, + "header": { + "title": "Импортировать диск в LXC", + "description": "Подключение физического диска к существующему контейнеру LXC на хосте Proxmox. ProxMenux обнаруживает свободные диски, при необходимости форматирует их с использованием поддерживаемой файловой системы и подключает раздел к точке монтирования внутри контейнера, используя постоянные пути к устройствам.", + "section": "Управление дисками · LXC" + }, + "intro": { + "title": "Проброс диска в виртуальную машину и в LXC: различия", + "body": "При пробросе диска в LXC контейнер не получает прямой доступ к блочному устройству. Контейнер получает точку монтирования — то есть каталог, связанный с выбранным вами разделом на хосте. В отличие от виртуальной машины, контейнер использует ядро хоста, поэтому чтение файловой системы (ext4 / xfs / btrfs) и управление ею выполняет сам Proxmox, который затем предоставляет к ней доступ контейнеру." + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Процесс состоит из двух чётко разделённых этапов: «сбор информации и принятие решений» и «фактическое изменение конфигурации контейнера». До окончательного подтверждения в CT ничего не монтируется.", + "summary": "ProxMenux исключает из списка корневой диск, смонтированные диски и диски, уже указанные в конфигурации любой виртуальной машины или контейнера LXC. Диски, активно используемые в ZFS/LVM/RAID, скрыты; диски с устаревшими сигнатурами отмечены значком ⚠, чтобы вы могли удалить эти сигнатуры перед форматированием." + }, + "prereqs": { + "heading": "Предварительные требования", + "items": [ + "На хосте должен быть настроен хотя бы один контейнер LXC.", + "Контейнер должен быть привилегированным, либо вы должны согласиться на предложенное скриптом преобразование.", + "Хотя бы один физический диск, не используемый хостом или другими гостевыми системами." + ], + "warnTitle": "Требуется привилегированный контейнер", + "warnBody": "Для прямого подключения диска этому скрипту требуется привилегированный контейнер. Если скрипт обнаруживает unprivileged: 1, он предлагает изменить /etc/pve/lxc/<CTID>.conf на месте. Это меняет модель безопасности и не выполняет переназначение владельцев существующих файлов. Прежде чем соглашаться, создайте резервную копию контейнера и проверьте владельцев файлов либо создайте контейнер заново как привилегированный." + }, + "steps": { + "heading": "Пошаговая инструкция", + "stepLabel": "Шаг", + "list": [ + { + "title": "Выберите целевой контейнер", + "img": "/disk/select-container.png", + "caption": "Меню выбора контейнера", + "bodyRich": "ProxMenux выводит список всех контейнеров LXC на хосте (pct list). Выберите контейнер, к которому нужно подключить диск. Если контейнер непривилегированный, вам будет предложено сразу преобразовать его в привилегированный." + }, + { + "title": "Выберите физический диск", + "img": "/disk/disk-selection-ct.png", + "caption": "Свободные диски, обнаруженные на хосте (устаревшие метаданные отмечены значком ⚠)", + "bodyRich": "Отображаются только диски, которые можно безопасно использовать. В отличие от процедуры для виртуальных машин, этот скрипт подключает один диск за запуск — запускайте его повторно для каждого дополнительного диска." + }, + { + "title": "Форматирование или повторное использование", + "intro": "Скрипт проверяет диск:", + "items": [ + "Если на диске уже есть поддерживаемая файловая система (ext4 / xfs / btrfs), его можно использовать без изменений (существующие файлы сохраняются).", + "Если поддерживаемой файловой системы нет, вам будет предложено отформатировать диск. Выберите ext4 / xfs / btrfs." + ] + }, + { + "title": "Выберите точку монтирования", + "bodyRich": "Введите путь, по которому диск должен быть доступен в контейнере, например /mnt/data или /mnt/disk_passthrough. Это путь внутри контейнера; на хосте раздел уже доступен по пути /dev/disk/by-id/…." + }, + { + "title": "Подключение и проверка", + "img": "/disk/assignment-ct.png", + "caption": "Назначение контейнеру", + "bodyRich": "ProxMenux добавляет новую запись mpN: в конфигурацию контейнера, пропуская уже занятые индексы, и повторно считывает конфигурацию для проверки. Если контейнер запущен, монтирование выполняется сразу; в противном случае оно вступает в силу при следующем запуске.", + "extraImg": "/disk/result-point.png", + "extraAlt": "Точка монтирования успешно создана", + "extraCaption": "Точка монтирования создана и проверена" + } + ] + }, + "manual": { + "heading": "Эквивалентные действия вручную", + "body": "Скрипт служит оболочкой для pct set. Прямой вызов для одного диска выглядит так:" + }, + "important": { + "heading": "Важные замечания", + "items": [ + "Один диск за запуск. Для каждого дополнительного диска запускайте скрипт повторно.", + "Не подключайте один и тот же раздел к нескольким контейнерам, которые могут смонтировать его одновременно: одновременная запись приводит к повреждению файловой системы.", + "Старые метаданные (сигнатуры RAID / ZFS / LVM) необходимо удалить вручную, прежде чем скрипт разрешит форматирование, иначе mkfs откажется выполнять перезапись. Для этого используйте инструмент Форматирование / очистка физического диска." + ] + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "unprivTitle": "«Невозможно продолжить работу с непривилегированным контейнером»", + "unprivBody": "Вы отказались от преобразования, поэтому скрипт завершил работу, ничего не изменив. Чтобы продолжить, запустите его снова и согласитесь: скрипт остановит контейнер, сохранит резервную копию его конфигурации в /etc/pve/lxc/<CTID>.conf.bak и заменит unprivileged: 1 на unprivileged: 0. Само по себе изменение этого флага не меняет UID/GID владельцев существующих файлов, поэтому сначала создайте резервную копию контейнера и исправьте права владения; другой вариант — восстановить или заново создать контейнер как привилегированный.", + "permsTitle": "Неверные права доступа внутри контейнера", + "permsBody": "При монтировании раздела в привилегированный контейнер существующие владельцы файлов сохраняются; владельцем только что отформатированной файловой системы часто является root:root. Если служба работает от имени другого пользователя (например, www-data для Nextcloud), проверьте его UID/GID и измените владельца и права доступа для нужных файлов с помощью chown/chmod. Изменения также затрагивают исходный диск." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/disk-manager/import-disk-vm", + "label": "Импортировать диск в ВМ", + "tail": " — аналогичная процедура для виртуальных машин." + }, + { + "href": "/docs/storage-share/lxc-mount-points", + "label": "Точки монтирования LXC (хост ↔ CT)", + "tail": " — предоставление контейнеру доступа к каталогам хоста вместо подключения целого диска." + }, + { + "href": "/docs/help-info/vm-ct-commands", + "label": "Команды управления ВМ и контейнерами", + "tail": " — справочник по pct config / push / pull." + }, + { + "href": "/docs/disk-manager", + "label": "Обзор диспетчера дисков", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/disk-manager/import-disk-vm.json b/web/messages/ru/docs/disk-manager/import-disk-vm.json new file mode 100644 index 00000000..ffe1e0f6 --- /dev/null +++ b/web/messages/ru/docs/disk-manager/import-disk-vm.json @@ -0,0 +1,113 @@ +{ + "meta": { + "title": "Импорт диска в виртуальную машину | Документация ProxMenux", + "description": "Подключите физический диск к существующей виртуальной машине Proxmox с помощью ProxMenux. Безопасное обнаружение дисков (исключаются системные, смонтированные, используемые диски и диски ZFS/RAID/LVM), постоянные пути /dev/disk/by-id и интерфейсы SATA / SCSI / VirtIO / IDE.", + "ogTitle": "Импорт диска в виртуальную машину | Документация ProxMenux", + "ogDescription": "Подключите физический диск к существующей виртуальной машине Proxmox. Используются постоянные пути /dev/disk/by-id и поддерживаются SATA / SCSI / VirtIO / IDE." + }, + "header": { + "title": "Импортировать диск в ВМ", + "description": "Подключите физический диск, уже имеющийся на хосте Proxmox, к существующей виртуальной машине. ProxMenux обнаруживает свободные диски, позволяет выбрать целевую виртуальную машину и тип шины (SATA / SCSI / VirtIO / IDE), а затем подключает диски с использованием постоянных путей /dev/disk/by-id, чтобы привязка сохранялась после перезагрузок и изменений порядка устройств.", + "section": "Диспетчер дисков · ВМ" + }, + "intro": { + "title": "Что делает этот инструмент", + "body": "Физический диск подключается напрямую как базовое устройство для интерфейса виртуального диска. Гостевая система не получает автоматически собственные данные SMART диска или доступ к функциям физического контроллера; если они необходимы, используйте проброс PCI-контроллера. При наличии пути /dev/disk/by-id/… диск подключается через него, поэтому изменение порядка обнаружения устройств при загрузке не нарушает привязку; в противном случае используется /dev/sdX." + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Процесс состоит из двух чётко разделённых этапов: «сбор информации и принятие решений» и «непосредственное подключение дисков к виртуальной машине». До окончательного подтверждения конфигурация виртуальной машины не изменяется.", + "summary": "ProxMenux исключает всё, что нельзя безопасно передать: корневой диск, диски, смонтированные на хосте, диски в составе активного пула ZFS/LVM/RAID и диски, уже указанные в конфигурации любой виртуальной машины или LXC. Диски с устаревшими метаданными (старыми сигнатурами ZFS / RAID / LVM, которые больше не используются) отображаются с меткой ⚠, но не блокируются." + }, + "prereqs": { + "heading": "Предварительные требования", + "items": [ + "На хосте должна быть настроена хотя бы одна ВМ (скрипт сразу переходит к qm list).", + "Целевая ВМ должна быть выключена. Если она запущена, скрипт прекращает работу и выводит сообщение — горячее подключение дисков к работающей ВМ не входит в рамки этой процедуры.", + "На хосте должен быть хотя бы один физический диск, который не используется ни самим хостом, ни другими гостевыми системами." + ] + }, + "steps": { + "heading": "Пошаговая инструкция", + "stepLabel": "Шаг", + "list": [ + { + "title": "Выберите целевую ВМ", + "bodyRich": "ProxMenux выводит список всех ВМ на хосте (через qm list). Выберите ВМ, к которой нужно подключить диск. Если ВМ запущена, скрипт прекращает работу и просит сначала выключить её." + }, + { + "title": "Выберите физические диски для подключения", + "img": "/disk/disk-selection.png", + "caption": "Свободные диски, обнаруженные на хосте (устаревшие метаданные отмечены значком ⚠)", + "body": "Скрипт сканирует все диски хоста и показывает только те, которые можно безопасно подключить. В списке можно отметить один или несколько дисков одновременно. Диски со старыми сигнатурами ZFS / LVM / RAID также отображаются, но помечены значком ⚠: перед форматированием в гостевой системе их необходимо очистить." + }, + { + "title": "Выберите интерфейс шины", + "img": "/disk/disk-assigment.png", + "caption": "Выбор интерфейса шины", + "intro": "Выберите, через какой интерфейс диск будет доступен гостевой системе:", + "items": [ + "SCSI — современный вариант по умолчанию для Linux и Windows с установленными драйверами VirtIO-SCSI.", + "SATA — широкая совместимость, работает без дополнительной настройки практически в любой гостевой системе.", + "VirtIO — эффективное паравиртуализированное блочное устройство; требуются драйверы в гостевой системе.", + "IDE — для устаревших гостевых систем, в которых нет ни одного из перечисленных выше драйверов." + ] + }, + { + "title": "Подключение и проверка", + "bodyRich": "ProxMenux подключает каждый выбранный диск, используя наиболее подходящий путь /dev/disk/by-id/, пропускает индексы слотов, уже занятые в конфигурации ВМ (scsi0, sata0, …), и повторно считывает конфигурацию, чтобы подтвердить подключение. В конце выводится сводка." + } + ] + }, + "manual": { + "heading": "Эквивалентные действия вручную", + "body": "Скрипт представляет собой оболочку для qm set. Точная команда для одного диска выглядит так:", + "migrationTitle": "Миграция без остановки невозможна", + "migrationBody": "ВМ с напрямую подключённым физическим диском привязана к хосту, который предоставляет доступ к этому диску. На другом узле обычно нет ни такого же пути /dev/disk/by-id/…, ни данных диска. Создайте резервную копию этих данных и перенесите их отдельно либо используйте управляемые виртуальные диски в общем хранилище или в хранилище с поддерживаемой репликацией, чтобы обеспечить возможность переноса ВМ; не считайте, что репликация хранилища Proxmox охватывает это устройство.", + "shareTitle": "Не используйте один физический диск совместно в нескольких ВМ", + "shareBody": "Одновременное подключение одного и того же физического диска к двум ВМ приведёт к повреждению данных при следующей записи. ProxMenux обнаруживает такую ситуацию и блокирует подключение, но если вы обходите скрипт (напрямую через qm set), убедитесь, что диск в любой момент времени смонтирован только в одной гостевой системе." + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "noDisksTitle": "\"Нет доступных дисков для этой ВМ\"", + "noDisksIntro": "Скрипт обнаружил диски, но все подходящие кандидаты были исключены фильтрами. Распространённые причины:", + "noDisksItems": [ + "Все оставшиеся диски уже указаны в конфигурации целевой ВМ.", + "Каждый из оставшихся дисков смонтирован на хосте или входит в состав активного пула ZFS, группы томов LVM или RAID-массива.", + "На хосте установлен только диск с корневой файловой системой." + ], + "noDisksOutro": "Выполните lsblk -f на хосте, чтобы проверить состояние каждого диска.", + "noVisibleTitle": "ВМ не видит диск после загрузки", + "noVisibleBody": "Если вы выбрали SCSI или VirtIO, гостевой системе нужен соответствующий драйвер. В Linux он встроен в ядро; в Windows потребуется ISO-образ VirtIO и установка драйвера (см. страницу Создание ВМ: система Windows). Чтобы быстро проверить, подключён ли физический диск, переключите интерфейс диска на SATA на вкладке оборудования ВМ." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/disk-manager/import-disk-image-vm", + "label": "Импортировать образ диска в ВМ", + "tail": " — аналогичная процедура для файлов образов (qcow2 / vmdk / raw / img)." + }, + { + "href": "/docs/disk-manager/import-disk-lxc", + "label": "Импортировать диск в LXC", + "tail": " — аналогичная процедура для контейнеров LXC." + }, + { + "href": "/docs/disk-manager/add-controller-nvme-vm", + "label": "Добавить контроллер или NVMe в ВМ", + "tail": " — если нужен проброс PCIe / NVMe целиком, а не подключение диска." + }, + { + "href": "/docs/help-info/storage-commands", + "label": "Команды для работы с хранилищами и дисками", + "tail": " — справочник по qm importdisk и связанным командам оболочки." + }, + { + "href": "/docs/disk-manager", + "label": "Обзор диспетчера дисков", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/disk-manager/index.json b/web/messages/ru/docs/disk-manager/index.json new file mode 100644 index 00000000..cd24ccad --- /dev/null +++ b/web/messages/ru/docs/disk-manager/index.json @@ -0,0 +1,135 @@ +{ + "meta": { + "title": "Proxmox Disk Manager — подключение дисков к ВМ / LXC, тесты SMART, очистка | ProxMenux", + "description": "Управляйте физическими дисками на хосте Proxmox VE с помощью ProxMenux: подключайте диски к ВМ или контейнерам LXC (qm set scsi/sata/virtio, pct mp), импортируйте образы дисков img / qcow2 / vmdk / raw, пробрасывайте HBA или контроллеры NVMe целиком, очищайте диски с проверками безопасности и запускайте самотестирование SMART.", + "ogTitle": "Proxmox Disk Manager — подключение дисков к ВМ / LXC, тесты SMART, очистка", + "ogDescription": "Подключение дисков к ВМ / LXC, импорт образов дисков, проброс PCI-контроллеров, безопасная очистка и тесты SMART на Proxmox VE.", + "twitterTitle": "Proxmox Disk Manager | ProxMenux", + "twitterDescription": "Подключение дисков к ВМ / LXC, импорт образов, проброс PCI, безопасная очистка и тесты SMART." + }, + "header": { + "title": "Диспетчер дисков", + "description": "Меню диспетчера дисков объединяет инструменты ProxMenux для работы с физическими дисками на хосте Proxmox: подключение дисков к ВМ и контейнерам LXC, импорт образов дисков, проброс контроллера целиком или устройства NVMe, безопасная очистка дисков и проверка их состояния с помощью тестов SMART.", + "section": "Диспетчер дисков" + }, + "intro": { + "title": "Для чего предназначено это меню", + "body": "Эти инструменты работают с физическими дисками, видимыми хосту Proxmox, и файлами образов, хранящимися на нём. В меню три группы: ВМ (подключение дисков или импорт образов), LXC (подключение дисков к контейнеру) и Утилиты (форматирование и проверка состояния с помощью SMART). При подключении и очистке системные и уже используемые диски скрываются или блокируются; проверки SMART позволяют проверять эти диски без их очистки." + }, + "opening": { + "heading": "Открытие меню", + "body": "В главном меню ProxMenux выберите Диспетчер дисков. Вы увидите следующее:", + "imageAlt": "Меню диспетчера дисков с разделами «ВМ», LXC и «Утилиты»" + }, + "groups": { + "heading": "Три группы инструментов", + "intro": "Меню диспетчера дисков разделено на три группы: ВМ, LXC и Утилиты. Нажмите на карточку, чтобы перейти прямо к инструментам этой группы.", + "vmTitle": "VM", + "vmBody": "Инструменты для работы с существующими виртуальными машинами. ВМ должна быть выключена; ProxMenux проверяет это перед изменением конфигурации.", + "vmItems": [ + "Импортировать диск в ВМ", + "Импортировать образ диска в ВМ", + "Добавить контроллер или NVMe в ВМ" + ], + "lxcTitle": "LXC", + "lxcBody": "Инструменты для существующих контейнеров LXC. Этот скрипт требует привилегированного контейнера и при необходимости предлагает изменить соответствующий флаг. Сначала прочитайте на странице инструмента предупреждения о преобразовании контейнера и правах владения файлами.", + "lxcItems": [ + "Импортировать диск в LXC" + ], + "utilitiesTitle": "Утилиты", + "utilitiesBody": "Инструменты хоста для работы непосредственно с дисками, независимо от ВМ и контейнеров.", + "utilitiesItems": [ + "Форматировать / стереть физический диск", + "Состояние и проверка диска по SMART" + ] + }, + "vm": { + "heading": "VM", + "intro": "Инструменты для работы с существующими виртуальными машинами. ВМ должна быть выключена; ProxMenux проверяет это перед изменением конфигурации.", + "options": [ + { + "icon": "HardDrive", + "href": "/docs/disk-manager/import-disk-vm", + "title": "Импортировать диск в ВМ", + "description": "Подключение неназначенного физического диска к существующей ВМ. Поддерживает SATA / SCSI / VirtIO / IDE, использует постоянные пути /dev/disk/by-id." + }, + { + "icon": "FileDown", + "href": "/docs/disk-manager/import-disk-image-vm", + "title": "Импортировать образ диска в ВМ", + "description": "Импорт файлов образов дисков (.img / .qcow2 / .vmdk / .raw) в существующую ВМ. Двухэтапная процедура с использованием qm importdisk." + }, + { + "icon": "Cpu", + "href": "/docs/disk-manager/add-controller-nvme-vm", + "title": "Добавить контроллер или NVMe в ВМ", + "description": "Проброс PCI в ВМ: HBA SATA / SAS целиком или устройства NVMe. Включает активацию IOMMU и обнаружение конфликтов." + } + ] + }, + "lxc": { + "heading": "LXC", + "intro": "Инструменты для существующих контейнеров LXC. Этот скрипт требует привилегированного контейнера и при необходимости предлагает изменить соответствующий флаг. Сначала прочитайте на странице инструмента предупреждения о преобразовании контейнера и правах владения файлами.", + "options": [ + { + "icon": "Boxes", + "href": "/docs/disk-manager/import-disk-lxc", + "title": "Импортировать диск в LXC", + "description": "Подключение незадействованного физического диска к существующему контейнеру LXC в качестве точки монтирования. Поддерживает определение файловой системы, форматирование и преобразование контейнера в привилегированный." + } + ] + }, + "utilities": { + "heading": "Утилиты", + "intro": "Инструменты хоста для работы непосредственно с дисками, независимо от ВМ и контейнеров.", + "options": [ + { + "icon": "Eraser", + "href": "/docs/disk-manager/format-disk", + "title": "Форматирование / очистка физического диска (с мерами безопасности)", + "description": "Безопасная очистка диска со строгими мерами защиты: отображаются только полностью свободные диски, и всегда требуется двойное подтверждение." + }, + { + "icon": "Activity", + "href": "/docs/disk-manager/smart-disk-test", + "title": "Состояние и проверка диска по SMART", + "description": "Проверка состояния SMART и запуск коротких / длительных самотестирований дисков SATA, SAS и NVMe. Экспорт результатов в JSON для Monitor." + } + ] + }, + "safety": { + "title": "Правила безопасности при подключении и очистке дисков", + "intro": "При подключении и очистке дисков исключаются устройства, операции с которыми могут навредить хосту:", + "items": [ + "Системный диск (корневой пул, раздел подкачки, активные участники ZFS / LVM / RAID) всегда скрыт.", + "Диски, смонтированные в любой точке на хосте, скрываются либо блокируются при выполнении операции.", + "Диски, используемые работающей виртуальной машиной или LXC, нельзя переназначить или очистить.", + "Операции, способные изменить состояние хоста (включение IOMMU, очистка диска), требуют явного подтверждения." + ] + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/storage-share", + "label": "Управление хранилищами и общими ресурсами", + "tail": " — регистрация хранилищ в самом Proxmox (NFS / Samba / iSCSI / локальное хранилище) и предоставление общего доступа к папкам хосту и контейнерам." + }, + { + "href": "/docs/help-info/storage-commands", + "label": "Команды для работы с хранилищами и дисками", + "tail": " — справочная информация о блочных устройствах, LVM, pvesm и SMART." + }, + { + "href": "/docs/help-info/zfs-commands", + "label": "Команды управления ZFS", + "tail": " — для пулов и наборов данных ZFS." + }, + { + "href": "/docs/hardware/gpu-vm-passthrough", + "label": "Добавить GPU в ВМ (прямой проброс)", + "tail": " — те же принципы IOMMU / VFIO применительно к GPU." + } + ] + } +} diff --git a/web/messages/ru/docs/disk-manager/smart-disk-test.json b/web/messages/ru/docs/disk-manager/smart-disk-test.json new file mode 100644 index 00000000..be64fbf0 --- /dev/null +++ b/web/messages/ru/docs/disk-manager/smart-disk-test.json @@ -0,0 +1,146 @@ +{ + "meta": { + "title": "Проверка состояния дисков по SMART и их тестирование | Документация ProxMenux", + "description": "Проверка состояния SMART и тестирование дисков в Proxmox VE с помощью ProxMenux. Поддерживаются SATA / SAS (smartmontools) и NVMe (nvme-cli). Короткие и длительные самотестирования, экспорт в JSON для интеграции с ProxMenux Monitor.", + "ogTitle": "Проверка состояния дисков по SMART и их тестирование | Документация ProxMenux", + "ogDescription": "Проверка состояния SMART и самотестирование дисков SATA / SAS и NVMe на Proxmox. Экспорт в JSON для Monitor." + }, + "header": { + "title": "Состояние и проверка диска по SMART", + "description": "Чтение данных SMART и запуск самотестирований физических дисков, подключённых к хосту Proxmox. ProxMenux автоматически устанавливает smartmontools для SATA / SAS и nvme-cli для NVMe, выполняет выбранное действие средствами микропрограммы диска (длительные тесты продолжаются после закрытия терминала) и экспортирует результаты в JSON для ProxMenux Monitor.", + "section": "Диспетчер дисков · Утилиты" + }, + "intro": { + "title": "Для чего это нужно", + "body": "SMART (технология самоконтроля, анализа и отчётности) позволяет самому диску сообщать о своём состоянии и выполнять самотестирование. Этот инструмент предоставляет доступ к таким данным без необходимости запоминать правильный вызов smartctl / nvme и сохраняет результаты в JSON, чтобы Monitor мог отображать графики изменения показателей со временем." + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Все действия здесь неразрушающие: SMART считывает счётчики микропрограммы диска, а самотестирования ставятся в очередь на самом диске. Разделение на этапы не требуется. Порядок работы: проверка зависимостей → выбор диска → выбор действия → вызов инструмента (smartctl или nvme-cli в зависимости от шины диска) → вывод результатов и экспорт в JSON для Monitor." + }, + "deps": { + "heading": "Зависимости", + "body": "При первом запуске инструмент автоматически устанавливает необходимые зависимости. Для дисков SATA / SAS используется smartmontools, для дисков NVMe — nvme-cli. Оба инструмента:" + }, + "actions": { + "heading": "Доступные действия", + "headerAction": "Действие", + "headerWhat": "Что считывается / запускается", + "headerDur": "Длительность", + "rows": [ + { + "action": "Быстрая проверка состояния", + "whatRich": "Общий результат PASSED/FAILED и основные атрибуты.
smartctl -H + -A (SATA/SAS) или nvme smart-log (NVMe).", + "dur": "Мгновенно" + }, + { + "action": "Полный отчёт", + "whatRich": "Полные данные SMART с возможностью прокрутки. smartctl -x для SATA/SAS или nvme smart-log + id-ctrl для NVMe.", + "dur": "Мгновенно" + }, + { + "action": "Короткий тест", + "what": "Базовая проверка поверхности и электрических компонентов, поставленная в очередь во встроенном ПО накопителя.", + "dur": "~2 минуты" + }, + { + "action": "Длительный тест", + "what": "Полное сканирование всей поверхности. Выполняется аппаратными средствами накопителя и продолжается даже после закрытия терминала.", + "dur": "Несколько часов (зависит от объёма диска)" + }, + { + "action": "Проверить ход выполнения теста", + "what": "Состояние текущего или последнего самотестирования.", + "dur": "Мгновенно" + } + ], + "tipTitle": "Длительные тесты продолжаются после закрытия терминала", + "tipBody": "Длительный тест выполняется внутри накопителя и не зависит от того, продолжает ли работать процесс ProxMenux. Можно закрыть терминал и вернуться позже, чтобы выбрать Проверить ход выполнения теста. Перезагрузка хоста, сброс контроллера или отключение питания могут прервать тест и работу сборщика его результатов; не следует рассчитывать на автоматическое возобновление." + }, + "json": { + "heading": "Экспорт JSON для Monitor", + "intro": "Действия проверки состояния, запуска короткого теста и проверки хода выполнения записывают JSON-файл с отметкой времени в /usr/local/share/proxmenux/smart/<disk>/; результаты длительного теста собираются в фоновом режиме. Действие формирования полного отчёта только отображает отчёт. Структура:", + "outro": "ProxMenux Monitor использует эти данные для отображения динамики состояния каждого диска; старые файлы автоматически удаляются при достижении лимита хранения." + }, + "steps": { + "heading": "Пошаговая инструкция", + "stepLabel": "Шаг", + "list": [ + { + "title": "Выберите диск", + "body": "ProxMenux выводит список всех физических дисков хоста с указанием модели и объёма. В отличие от инструмента форматирования, этот список не фильтруется по соображениям безопасности: чтение SMART не изменяет данные.", + "img": "/disk/smart/disk-selection.png", + "alt": "Меню выбора диска для SMART", + "caption": "Меню выбора диска для SMART" + }, + { + "title": "Выберите действие", + "body": "Выберите быструю проверку состояния, полный отчёт, короткий тест, длительный тест или проверку хода выполнения. После каждого действия меню остаётся открытым, поэтому можно последовательно выполнить несколько запросов для одного и того же диска.", + "img": "/disk/smart/action-menu.png", + "alt": "Меню действий SMART", + "caption": "Меню действий SMART (5 действий + отмена)" + }, + { + "title": "Подтвердите выполнение в фоновом режиме (только для длительного теста)", + "body": "ProxMenux предупреждает, что тест продолжится после закрытия терминала, и показывает, куда будет сохранён результат в формате JSON. Подтвердите, чтобы поставить тест в очередь.", + "img": "/disk/smart/long-test-warning.png", + "alt": "Диалог подтверждения длительного теста", + "caption": "Подтверждение длительного теста — выполнение в фоновом режиме, сохранение результата в JSON" + }, + { + "title": "Просмотрите результаты", + "bodyRich": "Состояние, результаты тестов и ход выполнения отображаются в терминале; Полный отчёт открывается в диалоговом окне с прокруткой. Экспорт в JSON выполняется для описанных выше действий, но не для полного отчёта. Для длительных тестов вернитесь позже и выберите Проверить ход выполнения теста для того же диска, чтобы узнать результат.", + "img": "/disk/smart/quick-status.png", + "alt": "Вывод быстрой проверки состояния", + "caption": "Вывод быстрой проверки состояния (SATA — smartctl -H + -A)" + } + ] + }, + "manual": { + "heading": "Эквивалентные команды для ручного выполнения", + "nvmeWarnTitle": "Поддержка самотестирования NVMe зависит от прошивки накопителя", + "nvmeWarnBody": "Не каждый накопитель NVMe поддерживает команду короткого или длительного самотестирования. Если накопитель отказывается выполнять тест, журнал SMART и идентификационные данные контроллера (nvme smart-log + id-ctrl) по-прежнему служат наиболее надёжными источниками сведений о его состоянии." + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "noSmartTitle": "\"Не удалось прочитать данные SMART с /dev/sdX\"", + "noSmartBody": "Вероятно, диск подключён через контроллер RAID / SAS, который не обеспечивает передачу данных SMART. Для плат на базе megaraid попробуйте smartctl -d megaraid,N /dev/sdX. Для HBA в режиме IT работает прямой вызов.", + "longTitle": "Длительный тест никак не завершается", + "longBody": "Тест выполняется прошивкой накопителя, и интенсивный ввод-вывод может задержать его завершение. Попробуйте запустить тест в период низкой нагрузки, например на ночь. Для SATA оставшийся процент показывает smartctl -c, а для SAS — smartctl -l selftest; проверьте журнал самотестирования, чтобы узнать статус завершения и адреса LBA, на которых обнаружены ошибки. Сообщение об ошибке чтения требует разбирательства; само по себе медленное выполнение не доказывает наличие повреждённого сектора." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "href": "/docs/disk-manager/format-disk", + "label": "Форматировать / стереть физический диск", + "tail": " — повторное использование диска после подтверждения его исправности." + }, + { + "href": "/docs/help-info/storage-commands", + "label": "Команды для хранилищ и дисков → Проверка состояния диска с помощью SMART", + "tail": " — справочник по smartctl / nvme с командами для копирования и вставки." + }, + { + "href": "/docs/help-info/zfs-commands", + "label": "Команды управления ZFS", + "tail": " — zpool scrub проверяет контрольные суммы данных ZFS и дополняет аппаратные тесты SMART." + }, + { + "href": "/docs/monitor/dashboard/storage", + "label": "ProxMenux Monitor — вкладка «Хранилище»", + "tail": " — подробные сведения о диске на основе экспортируемых здесь данных JSON (полная таблица SMART, история, отчёт PDF)." + }, + { + "href": "/docs/monitor/dashboard/hardware", + "label": "ProxMenux Monitor — вкладка «Оборудование»", + "tail": " — Сводка по накопителям с указанием модели, ёмкости и согласованной скорости соединения (для NVMe — текущей и максимальной)." + }, + { + "href": "/docs/disk-manager", + "label": "Обзор диспетчера дисков", + "tail": "." + } + ] + } +} diff --git a/web/messages/ru/docs/external-repositories.json b/web/messages/ru/docs/external-repositories.json new file mode 100644 index 00000000..4b1c361e --- /dev/null +++ b/web/messages/ru/docs/external-repositories.json @@ -0,0 +1,58 @@ +{ + "meta": { + "title": "Внешние репозитории | Документация ProxMenux", + "description": "ProxMenux интегрируется с некоторыми внешними репозиториями скриптов (community-scripts, ZimaOS), предлагая их как альтернативы в отдельных разделах меню. Для каждого внешнего скрипта явно указан источник; сообщения об ошибках следует направлять автору, сопровождающему исходный скрипт.", + "ogTitle": "Внешние репозитории | Документация ProxMenux", + "ogDescription": "Внешние репозитории скриптов, интегрированные в ProxMenux в качестве альтернативных вариантов в меню." + }, + "header": { + "title": "Внешние репозитории", + "description": "ProxMenux интегрируется с некоторыми внешними репозиториями скриптов, предлагая их как альтернативные варианты в отдельных разделах меню. Эти скрипты поступают из доверенных сторонних источников, и при их отображении в меню источник явно указан.", + "section": "Внешние репозитории" + }, + "practice": { + "title": "Что это означает на практике", + "body": "Если пункт меню использует внешний скрипт, а не собственный код ProxMenux, в меню явно указаны его источник и репозиторий, из которого он загружается. ProxMenux служит средством запуска и не изменяет внешние скрипты. Проблемы с работой внешнего скрипта относятся к компетенции сопровождающего соответствующий репозиторий, а не ProxMenux." + }, + "integrated": { + "heading": "Уже интегрированы", + "usedInLabel": "Используется в:", + "items": [ + { + "name": "community-scripts / ProxmoxVE", + "url": "https://community-scripts.github.io/ProxmoxVE/", + "description": "Идейный преемник вспомогательных скриптов tteck. Обширный каталог скриптов для разового выполнения: развёртывание контейнеров LXC (Home Assistant, Plex, Frigate, …), виртуальных машин и дополнений, а также настройка PVE.", + "usedIn": "Средство запуска Helper Scripts, раздел «Сеть» (исправление аппаратной разгрузки сетевого адаптера Intel e1000e)" + } + ] + }, + "attribution": { + "heading": "Указание авторства и признание вклада", + "items": [ + "Авторы исходных скриптов всегда указаны в меню и на странице документации, посвящённой соответствующему скрипту.", + "Ссылка на исходный репозиторий отображается как перед запуском скрипта, так и на соответствующей странице документации.", + "Пользователям рекомендуется поддерживать разработчиков этих внешних проектов: поставить ⭐, оказать финансовую поддержку или отправить качественное сообщение об ошибке." + ] + }, + "report": { + "title": "Куда сообщать о проблемах с внешними скриптами", + "body": "Если скрипт из одного из этих внешних репозиториев работает не так, как ожидается, сообщите об этом непосредственно в соответствующем репозитории, а не в ProxMenux. ProxMenux лишь загружает и запускает скрипт без изменений, не изменяя исходный код. Разбором и исправлением проблемы должен заниматься сопровождающий исходного скрипта. В ProxMenux следует сообщать о проблемах с самим средством запуска или с тем, как ProxMenux интегрирует внешний скрипт." + }, + "suggest": { + "heading": "Предложить новые внешние репозитории", + "intro": "Нашли скрипт или репозиторий, который хорошо вписался бы в меню ProxMenux? Предложите его одним из следующих способов:", + "discussionTitle": "💬 Создать обсуждение", + "discussionBody": "Лучший вариант для идей: позволяет получить мнение сообщества, прежде чем оформлять запрос на новую функцию.", + "issueTitle": "🐛 Создать обращение", + "issueBody": "Для конкретных запросов на новые функции с чётко определённым объёмом работ." + }, + "candidate": { + "title": "Что делает проект хорошим кандидатом для интеграции", + "items": [ + "Открытый исходный код и активное сопровождение.", + "Идемпотентность: повторный запуск безопасен.", + "Не изменяет основную конфигурацию Proxmox без уведомления.", + "Решает задачу, которую ProxMenux ещё не решает (без дублирования функций)." + ] + } +} diff --git a/web/messages/ru/docs/glossary.json b/web/messages/ru/docs/glossary.json new file mode 100644 index 00000000..36e9e533 --- /dev/null +++ b/web/messages/ru/docs/glossary.json @@ -0,0 +1,677 @@ +{ + "meta": { + "title": "Глоссарий | Документация ProxMenux", + "description": "Определения технических терминов, используемых в документации ProxMenux: понятия Proxmox (VM, LXC, qm, pct, pmxcfs), основы виртуализации (KVM, IOMMU, VFIO, OVMF), хранение данных (ZFS, ARC, LVM, vzdump, PBS), сети (сетевой мост, VLAN, nftables) и терминология, специфичная для ProxMenux.", + "ogTitle": "Глоссарий | Документация ProxMenux", + "ogDescription": "Краткий справочник технических терминов, используемых в документации ProxMenux." + }, + "header": { + "title": "Глоссарий", + "description": "Определения технических терминов, используемых в документации ProxMenux. Охватывает понятия Proxmox, основы виртуализации, хранение данных, сети, внутреннее устройство Linux и терминологию, специфичную для ProxMenux.", + "section": "Глоссарий" + }, + "callout": { + "title": "Как пользоваться этой страницей", + "bodyRich": "У каждой статьи есть метка категории и краткое определение. Ссылки См. также ведут на страницу документации, наиболее тесно связанную с термином. Используйте расположенную ниже навигацию A–Z, чтобы перейти непосредственно к нужной букве." + }, + "jumpHeading": "Перейти к букве", + "seeAlsoLabel": "См. также:", + "aliasesLabel": "Также:", + "missingCallout": { + "title": "Не нашли термин?", + "leadRich": "Если в глоссарии нет термина из документации, создайте issue или PR на GitHub. Содержимое глоссария хранится в web/messages/en/docs/glossary.json вместе с соответствующими каталогами переводов." + }, + "entries": [ + { + "term": "ACS", + "aliases": [ + "Службы контроля доступа", + "Переопределение ACS" + ], + "category": "Виртуализация", + "definitionRich": "Функции контроля доступа PCIe, помогающие изолировать трафик устройств. Группировка IOMMU зависит от оборудования и топологии. Патч ядра ACS override позволяет разделять группы, определяемые Linux, но не обеспечивает дополнительной аппаратной изоляции; назначение таких устройств разным виртуальным машинам создаёт риск для безопасности.", + "seeAlso": [ + { + "label": "Добавить контроллер или NVMe в ВМ", + "href": "/docs/disk-manager/add-controller-nvme-vm" + } + ] + }, + { + "term": "ARC", + "aliases": [ + "Адаптивный кэш замещения" + ], + "category": "Хранилище", + "definitionRich": "Кэш чтения ZFS в оперативной памяти хоста, содержащий недавно и часто используемые блоки данных. Его лимит по умолчанию зависит от версии Proxmox и параметров установки. В разделе Post-Install ProxMenux доступна настройка для ограничения его размера.", + "seeAlso": [ + { + "label": "После установки: хранение данных", + "href": "/docs/post-install/storage" + }, + { + "label": "Команды ZFS", + "href": "/docs/help-info/zfs-commands" + } + ] + }, + { + "term": "Привязочное монтирование", + "category": "Linux", + "definitionRich": "Возможность Linux, позволяющая сделать часть файловой системы доступной по другому пути. ProxMenux использует bind-монтирование для предоставления контейнерам LXC доступа к каталогам хоста через pct set -mpN.", + "seeAlso": [ + { + "label": "Точки монтирования LXC", + "href": "/docs/storage-share/lxc-mount-points" + } + ] + }, + { + "term": "Объединение сетевых интерфейсов", + "aliases": [ + "Объединённый сетевой интерфейс", + "Агрегация каналов" + ], + "category": "Сеть", + "definitionRich": "Объединяет несколько физических сетевых интерфейсов в один логический интерфейс — для обеспечения отказоустойчивости (active-backup), увеличения пропускной способности (LACP / 802.3ad) или обеих целей. Настраивается в /etc/network/interfaces." + }, + { + "term": "Сетевой мост", + "aliases": [ + "vmbrX", + "vmbr0", + "Сетевой мост Linux" + ], + "category": "Сеть", + "definitionRich": "Виртуальный коммутатор второго уровня на хосте. vmbr0 обычно подключает гостевые системы к физической сети. Дополнительные мосты (vmbr1, vmbr2...) позволяют разделять сети гостевых систем в зависимости от физических подключений и конфигурации этих мостов.", + "seeAlso": [ + { + "label": "Анализ сетевого моста и пошаговое устранение неполадок", + "href": "/docs/network/bridge-analysis" + } + ] + }, + { + "term": "Ceph", + "category": "Хранилище", + "definitionRich": "Распределённое хранилище, интегрированное с Proxmox для гиперконвергентных кластеров. Демоны объектного хранения OSD (Object Storage Daemons) лежат в основе его объектного, блочного и файлового хранения. Требуемые версии Ceph зависят от выпуска Proxmox и пути обновления; обратитесь к соответствующему руководству по обновлению.", + "seeAlso": [ + { + "label": "Обновление PVE 8 до PVE 9", + "href": "/docs/utils/upgrade-pve8-pve9" + } + ] + }, + { + "term": "CT", + "aliases": [ + "Контейнер", + "Контейнер LXC" + ], + "category": "Proxmox", + "definitionRich": "Сокращение от «container» (контейнер) — термин Proxmox для экземпляра LXC. Имеет числовой идентификатор CTID, которому соответствует /etc/pve/lxc/<CTID>.conf. См. также LXC.", + "seeAlso": [ + { + "label": "Управление ВМ и контейнерами", + "href": "/docs/help-info/vm-ct-commands" + } + ] + }, + { + "term": "deb822", + "category": "Linux", + "definitionRich": "Современный формат описания источников репозиториев APT, использующий файлы .sources со структурированными блоками пар «ключ — значение» (Types, URIs, Suites, Components, Signed-By). Заменяет устаревший однострочный формат .list. Стандартный формат начиная с PVE 9 / Debian Trixie.", + "seeAlso": [ + { + "label": "Обновление PVE 8 до PVE 9", + "href": "/docs/utils/upgrade-pve8-pve9" + } + ] + }, + { + "term": "dGPU", + "aliases": [ + "Дискретный графический процессор" + ], + "category": "Виртуализация", + "definitionRich": "Отдельная видеокарта, обычно подключаемая через PCIe, в отличие от iGPU. Её можно передать виртуальной машине с помощью VFIO или предоставить нескольким контейнерам LXC доступ к ней через узлы устройств и драйвер хоста, если это поддерживается оборудованием и приложениями.", + "seeAlso": [ + { + "label": "Добавить GPU в ВМ (прямой проброс)", + "href": "/docs/hardware/gpu-vm-passthrough" + } + ] + }, + { + "term": "Dialog", + "category": "Linux", + "definitionRich": "Инструмент на базе ncurses для отображения меню, запросов и индикаторов выполнения в терминале. ProxMenux построен на основе меню dialog." + }, + { + "term": "DKMS", + "aliases": [ + "Поддержка динамических модулей ядра" + ], + "category": "Linux", + "definitionRich": "Система для пересборки зарегистрированных модулей, не входящих в дерево исходного кода ядра, таких как NVIDIA или ZFS, при изменении ядра. Для успешной сборки по-прежнему необходимы совместимые исходные коды модулей и соответствующие заголовочные файлы ядра.", + "seeAlso": [ + { + "label": "Установить Coral TPU на хосте", + "href": "/docs/hardware/install-coral-tpu-host" + } + ] + }, + { + "term": "Fail2Ban", + "category": "Linux", + "definitionRich": "Служба предотвращения вторжений, которая отслеживает повторяющиеся ошибки аутентификации в файлах журналов и блокирует IP-адреса нарушителей на уровне межсетевого экрана. ProxMenux поставляется с предварительно настроенными наборами правил блокировки (jails) для SSH, интерфейса Proxmox и Monitor.", + "seeAlso": [ + { + "label": "Fail2Ban", + "href": "/docs/security/fail2ban" + } + ] + }, + { + "term": "Fastfetch", + "category": "Linux", + "definitionRich": "Утилита для вывода информации о системе с ASCII-графикой, запускаемая при входе в командную оболочку («баннер со сводкой о системе»). Заменяет более старую утилиту neofetch; доступна как опция, включаемая по желанию, в разделе настройки после установки ProxMenux.", + "seeAlso": [ + { + "label": "После установки: необязательные настройки", + "href": "/docs/post-install/optional" + } + ] + }, + { + "term": "GRUB", + "aliases": [ + "GRand Unified Bootloader" + ], + "category": "Linux", + "definitionRich": "Загрузчик, используемый в системах Linux на базе GRUB. Конфигурация находится в /etc/default/grub и /boot/grub/; после внесения изменений выполните update-grub. В других конфигурациях загрузки Proxmox может использоваться systemd-boot, поэтому перед изменением параметров ядра проверьте, какой загрузчик используется.", + "seeAlso": [ + { + "label": "Команды для проброса GPU", + "href": "/docs/help-info/gpu-commands" + } + ] + }, + { + "term": "iGPU", + "aliases": [ + "Встроенный графический процессор" + ], + "category": "Виртуализация", + "definitionRich": "Графический процессор, встроенный в корпус центрального процессора (Intel UHD / Iris, AMD Radeon Vega в APU Ryzen). Обычно совместно используется несколькими контейнерами LXC через /dev/dri, а не пробрасывается в одну виртуальную машину.", + "seeAlso": [ + { + "label": "Добавить GPU в LXC", + "href": "/docs/hardware/igpu-acceleration-lxc" + } + ] + }, + { + "term": "ifupdown / ifupdown2", + "category": "Сеть", + "definitionRich": "Классическая система настройки сети Debian, которая считывает /etc/network/interfaces. ifupdown2 — переписанная версия, которую Proxmox использует по умолчанию; она поддерживает применение настроек без остановки сети с помощью ifreload -a." + }, + { + "term": "initramfs", + "category": "Linux", + "definitionRich": "Начальная файловая система в оперативной памяти, которую ядро использует при загрузке до монтирования основной корневой файловой системы. Содержит драйверы, необходимые на раннем этапе загрузки (для устройств хранения, шифрования, RAID). Пересобирается с помощью update-initramfs -u -k all после изменений в настройках VFIO, IOMMU или драйверах устройств хранения." + }, + { + "term": "IOMMU", + "aliases": [ + "Блок управления памятью ввода-вывода", + "VT-d", + "AMD-Vi" + ], + "category": "Виртуализация", + "definitionRich": "Аппаратная функция (Intel VT-d / AMD-Vi), необходимая для проброса устройств PCIe в виртуальные машины. Включите её в настройках прошивки и убедитесь, что поддержка в ядре активна. В зависимости от платформы и настроек ядра по умолчанию могут потребоваться параметры ядра, такие как intel_iommu=on или amd_iommu=on.", + "seeAlso": [ + { + "label": "После установки: виртуализация", + "href": "/docs/post-install/virtualization" + }, + { + "label": "Добавить GPU в ВМ (прямой проброс)", + "href": "/docs/hardware/gpu-vm-passthrough" + } + ] + }, + { + "term": "Группа IOMMU", + "category": "Виртуализация", + "definitionRich": "Набор устройств, образующий минимальную границу изоляции IOMMU. Устройства внутри группы не обязательно изолированы друг от друга; проверьте каждое устройство группы перед назначением устройств для VFIO. Список можно получить с помощью find /sys/kernel/iommu_groups/ -type l | sort -V." + }, + { + "term": "iSCSI", + "aliases": [ + "Internet SCSI" + ], + "category": "Хранилище", + "definitionRich": "Сетевой протокол, предоставляющий доступ к блочному хранилищу по IP: удалённый диск отображается как локальное устройство SCSI. Регистрируется как хранилище Proxmox через pvesm add iscsi.", + "seeAlso": [ + { + "label": "Добавление целевого устройства iSCSI в качестве хранилища Proxmox", + "href": "/docs/storage-share/host-iscsi" + } + ] + }, + { + "term": "KVM", + "aliases": [ + "Виртуальная машина на базе ядра" + ], + "category": "Виртуализация", + "definitionRich": "Модуль ядра Linux, превращающий хост в гипервизор. В сочетании с QEMU для эмуляции устройств служит основой, которую Proxmox использует для запуска виртуальных машин." + }, + { + "term": "LVM", + "aliases": [ + "Менеджер логических томов" + ], + "category": "Хранилище", + "definitionRich": "Уровень управления томами Linux, объединяющий физические устройства хранения в группы томов (VG), содержащие логические тома (LV). В установках Proxmox на базе LVM для дисков гостевых систем обычно используется LVM-thin; доступны и другие подсистемы хранения. Среди инструментов — pvs, vgs и lvs.", + "seeAlso": [ + { + "label": "Команды для работы с хранилищами и дисками", + "href": "/docs/help-info/storage-commands" + } + ] + }, + { + "term": "LXC", + "aliases": [ + "Контейнеры Linux" + ], + "category": "Linux", + "definitionRich": "Виртуализация на уровне ОС, при которой изолированные экземпляры пользовательского пространства используют общее ядро хоста. Обычно требует меньше накладных расходов, чем виртуальные машины, но имеет иную границу изоляции. Proxmox управляет контейнерами LXC через интерфейс командной строки pct.", + "seeAlso": [ + { + "label": "Управление ВМ и контейнерами", + "href": "/docs/help-info/vm-ct-commands" + } + ] + }, + { + "term": "Lynis", + "category": "Linux", + "definitionRich": "Инструмент аудита безопасности с открытым исходным кодом от CISOfy, который сканирует хост и выводит оценку защищённости вместе с конкретными рекомендациями по устранению проблем. ProxMenux устанавливает последнюю версию из исходного проекта GitHub, а не более старый пакет Debian.", + "seeAlso": [ + { + "label": "Lynis", + "href": "/docs/security/lynis" + } + ] + }, + { + "term": "MAC-адрес", + "aliases": [ + "Аппаратный адрес" + ], + "category": "Сеть", + "definitionRich": "Обычно 48-битный идентификатор интерфейса Ethernet, назначаемый аппаратно или программно. Функция ProxMenux Постоянные имена сетевых интерфейсов сопоставляет MAC-адреса со стабильными именами интерфейсов (eno1, enp3s0), чтобы имена оставались неизменными после повторного перечисления устройств PCI.", + "seeAlso": [ + { + "label": "Постоянные имена интерфейсов", + "href": "/docs/network/persistent-names" + } + ] + }, + { + "term": "MOTD", + "aliases": [ + "Сообщение дня" + ], + "category": "Linux", + "definitionRich": "Текст, отображаемый после входа через SSH и хранящийся в /etc/motd. Раздел настройки после установки ProxMenux позволяет добавить баннер; программа удаления восстанавливает предыдущий файл, если существует резервная копия." + }, + { + "term": "NFS", + "aliases": [ + "Сетевая файловая система" + ], + "category": "Хранилище", + "definitionRich": "Протокол сетевого доступа к файлам, изначально разработанный для Unix. Регистрируется как хранилище Proxmox через pvesm add nfs; также может использоваться в режиме клиента или сервера LXC с помощью специальных сценариев ProxMenux.", + "seeAlso": [ + { + "label": "Управление хранилищами и общими ресурсами", + "href": "/docs/storage-share" + } + ] + }, + { + "term": "nftables / iptables", + "category": "Сеть", + "definitionRich": "Инструменты межсетевого экрана Linux. nftables — современная платформа; iptables может использовать устаревшую подсистему или подсистему, совместимую с nft. Классический pve-firewall использует iptables, а альтернативная подсистема proxmox-firewall — nftables.", + "seeAlso": [ + { + "label": "Сетевые команды", + "href": "/docs/help-info/network-commands" + } + ] + }, + { + "term": "nouveau", + "category": "Linux", + "definitionRich": "Графический драйвер NVIDIA с открытым исходным кодом, входящий в состав ядра Linux. При установке проприетарного драйвера NVIDIA необходимо предотвратить привязку nouveau к тому же графическому процессору; обычно для этого nouveau добавляют в чёрный список и пересобирают initramfs.", + "seeAlso": [ + { + "label": "Руководство по установке NVIDIA", + "href": "/guides/nvidia" + } + ] + }, + { + "term": "Репозиторий no-subscription", + "category": "Proxmox", + "definitionRich": "Репозиторий пакетов Proxmox, доступный без корпоративной подписки. Пакеты проходят менее тщательную проверку, чем в репозитории enterprise, который Proxmox рекомендует для производственных сред. Раздел настройки после установки ProxMenux позволяет настроить репозитории.", + "seeAlso": [ + { + "label": "После установки: основные настройки", + "href": "/docs/post-install/basic-settings" + } + ] + }, + { + "term": "OVA / OVF", + "aliases": [ + "Открытый формат виртуализации" + ], + "category": "Виртуализация", + "definitionRich": "Форматы DMTF для упаковки переносимых виртуальных машин. OVA объединяет файлы в один TAR-архив; OVF описывает виртуальную машину в XML и сопровождается файлами дисков, обычно в формате VMDK. Поддержка импорта зависит от целевого гипервизора и конфигурации.", + "seeAlso": [ + { + "label": "Экспорт ВМ в OVA / OVF", + "href": "/docs/utils/export-vm" + }, + { + "label": "Импорт ВМ из OVA / OVF", + "href": "/docs/utils/import-vm" + } + ] + }, + { + "term": "OVMF", + "aliases": [ + "Прошивка UEFI", + "Open Virtual Machine Firmware" + ], + "category": "Виртуализация", + "definitionRich": "Прошивка UEFI для виртуальных машин, выбираемая с помощью qm set <vmid> -bios ovmf. Используется для гостевых систем с UEFI, включая Windows 11 и конфигурации с Secure Boot. efidisk0 хранит постоянные переменные EFI; многие другие гостевые системы по-прежнему могут использовать устаревший BIOS.", + "seeAlso": [ + { + "label": "Добавить GPU в ВМ (прямой проброс)", + "href": "/docs/hardware/gpu-vm-passthrough" + } + ] + }, + { + "term": "PBS", + "aliases": [ + "Proxmox Backup Server" + ], + "category": "Proxmox", + "definitionRich": "Отдельный продукт Proxmox для резервного копирования, обеспечивающий инкрементальную передачу данных, дедупликацию и необязательное шифрование на стороне клиента для резервных копий виртуальных машин и контейнеров. Может использоваться как целевое хранилище для vzdump; отдельный сервер резервного копирования предпочтительнее хранения резервных копий на защищаемом узле." + }, + { + "term": "pct", + "category": "Proxmox", + "definitionRich": "Инструмент командной строки для управления контейнерами LXC в Proxmox: pct list / start / stop / shutdown / config / enter / exec / push / pull / destroy.", + "seeAlso": [ + { + "label": "Управление ВМ и контейнерами", + "href": "/docs/help-info/vm-ct-commands" + } + ] + }, + { + "term": "pmxcfs", + "aliases": [ + "Кластерная файловая система Proxmox" + ], + "category": "Proxmox", + "definitionRich": "Виртуальная файловая система на основе FUSE, смонтированная в /etc/pve/. Реплицирует изменения конфигурации на все узлы кластера в реальном времени. Изменения файлов в /etc/pve/ распространяются автоматически." + }, + { + "term": "pveam", + "aliases": [ + "Менеджер виртуальных устройств Proxmox VE" + ], + "category": "Proxmox", + "definitionRich": "Инструмент командной строки для управления локальным каталогом шаблонов контейнеров. pveam update обновляет индекс; pveam available выводит список шаблонов; pveam download <storage> <template> загружает выбранный шаблон." + }, + { + "term": "pveproxy", + "category": "Proxmox", + "definitionRich": "Служба HTTPS, обеспечивающая работу веб-интерфейса Proxmox на порту 8006 и веб-терминала. Автоматически перезапускается при крупных обновлениях — поэтому ProxMenux отказывается запускать обновление PVE с версии 8 до 9 из веб-терминала." + }, + { + "term": "pvesm", + "aliases": [ + "Менеджер хранилищ Proxmox" + ], + "category": "Proxmox", + "definitionRich": "Инструмент командной строки для управления хранилищами Proxmox. pvesm status показывает все настроенные хранилища; pvesm add <type> регистрирует новые (NFS, Samba, iSCSI, dir, ZFS, LVM, …).", + "seeAlso": [ + { + "label": "Команды для работы с хранилищами и дисками", + "href": "/docs/help-info/storage-commands" + } + ] + }, + { + "term": "Привилегированный контейнер", + "category": "Linux", + "definitionRich": "Контейнер LXC, пользователь root которого сопоставляется с UID 0 на узле, при этом пространства имён и другие ограничения продолжают действовать. Изолирован слабее, чем непривилегированный контейнер. Доступ к GPU, USB и Samba не всегда требует этого режима; важны права доступа и сопоставления UID." + }, + { + "term": "ProxMenux Monitor", + "category": "ProxMenux", + "definitionRich": "Необязательная веб-панель, устанавливаемая вместе с ProxMenux. Предоставляет статистику узла в реальном времени (ЦП / ОЗУ / диск / сеть), обзор виртуальных машин и LXC, вход в систему и двухфакторную аутентификацию на TCP-порту 8008.", + "seeAlso": [ + { + "label": "ProxMenux Monitor", + "href": "/docs/settings/proxmenux-monitor" + } + ] + }, + { + "term": "qcow2", + "aliases": [ + "QEMU: копирование при записи, версия 2" + ], + "category": "Хранилище", + "definitionRich": "Формат образов дисков виртуальных машин, обычно используемый в хранилищах на основе каталогов. Поддерживает выделение места по мере необходимости, снимки и копирование при записи. Для преобразования образа используйте qemu-img convert -O qcow2 ...." + }, + { + "term": "qm", + "aliases": [ + "Менеджер QEMU" + ], + "category": "Proxmox", + "definitionRich": "Инструмент командной строки для управления виртуальными машинами в Proxmox: qm list / start / stop / shutdown / config / set / destroy / importdisk / migrate. Аналог команды pct, используемой для контейнеров.", + "seeAlso": [ + { + "label": "Управление ВМ и контейнерами", + "href": "/docs/help-info/vm-ct-commands" + } + ] + }, + { + "term": "Q35", + "category": "Виртуализация", + "definitionRich": "Современный тип машины QEMU, эмулирующий чипсет Intel Q35 с поддержкой PCIe. Рекомендуется вместо устаревшего i440FX для виртуальных машин, которым требуется проброс устройств PCIe или поддержка современных гостевых ОС. Задаётся с помощью qm set <vmid> -machine q35." + }, + { + "term": "QEMU", + "category": "Виртуализация", + "definitionRich": "Универсальный эмулятор машин и средство виртуализации с открытым исходным кодом. В Proxmox используется совместно с KVM для запуска виртуальных машин со скоростью, близкой к скорости работы на физическом оборудовании." + }, + { + "term": "rclone", + "category": "Linux", + "definitionRich": "Инструмент командной строки с поддержкой множества облачных хранилищ, включая Google Drive, Dropbox, OneDrive, Mega и S3. В руководстве по резервному копированию в облако он используется для монтирования удалённого хранилища в виде каталога для архивов vzdump.", + "seeAlso": [ + { + "label": "Резервное копирование в личное облако", + "href": "/guides/backup_cloud" + } + ] + }, + { + "term": "Samba / SMB / CIFS", + "category": "Хранилище", + "definitionRich": "Семейство протоколов Microsoft для общего доступа к файлам. SMB — это протокол; Samba — его реализация для Linux с открытым исходным кодом; CIFS — устаревший диалект SMB. Регистрируется как хранилище Proxmox с помощью pvesm add cifs.", + "seeAlso": [ + { + "label": "Управление хранилищами и общими ресурсами", + "href": "/docs/storage-share" + } + ] + }, + { + "term": "SeaBIOS", + "category": "Виртуализация", + "definitionRich": "Реализация традиционного BIOS с открытым исходным кодом, используемая в QEMU. Прошивка по умолчанию для новых виртуальных машин, если не переключиться на OVMF. Подходит для старых ОС и простых установок Linux, которым не требуется UEFI." + }, + { + "term": "smartctl / SMART", + "aliases": [ + "Технология самоконтроля, анализа и отчётности" + ], + "category": "Хранилище", + "definitionRich": "Встроенные средства диагностики дисков, предоставляющие сведения о состоянии накопителя, количестве ошибок и результатах самотестирования. smartctl (из пакета smartmontools) — инструмент командной строки; для накопителей NVMe пакет nvme-cli добавляет специализированные команды.", + "seeAlso": [ + { + "label": "Состояние и проверка диска по SMART", + "href": "/docs/disk-manager/smart-disk-test" + }, + { + "label": "Команды для работы с хранилищами → раздел SMART", + "href": "/docs/help-info/storage-commands" + } + ] + }, + { + "term": "systemd / systemctl / journalctl", + "category": "Linux", + "definitionRich": "Современная система инициализации, используемая в Debian / Proxmox. systemctl управляет службами (запуск, остановка, включение автозапуска, просмотр состояния). journalctl читает двоичный журнал, записываемый systemd-journald." + }, + { + "term": "sysctl", + "category": "Linux", + "definitionRich": "Инструмент для чтения и изменения параметров ядра. Постоянные настройки обычно размещаются в /etc/sysctl.d/*.conf; поддержка /etc/sysctl.conf зависит от загрузчика настроек. Раздел настройки после установки ProxMenux предлагает профиль настройки sysctl.", + "seeAlso": [ + { + "label": "Настройка после установки: сеть", + "href": "/docs/post-install/network" + } + ] + }, + { + "term": "trixie", + "category": "Linux", + "definitionRich": "Кодовое имя Debian 13 — ОС, на которой основан Proxmox VE 9. Предыдущая версия: bookworm (Debian 12 / PVE 8).", + "seeAlso": [ + { + "label": "Обновление PVE 8 до PVE 9", + "href": "/docs/utils/upgrade-pve8-pve9" + } + ] + }, + { + "term": "udev", + "category": "Linux", + "definitionRich": "Диспетчер устройств Linux. Реагирует на события оборудования и создаёт или удаляет записи в /dev. Пользовательские правила в /etc/udev/rules.d/ обеспечивают постоянное сопоставление MAC-адресов с именами интерфейсов, создают файлы устройств NVIDIA при загрузке драйвера и т. д." + }, + { + "term": "Сопоставление UID / GID (idmap)", + "aliases": [ + "Смещение UID" + ], + "category": "Linux", + "definitionRich": "При стандартном сопоставлении в непривилегированных контейнерах LXC идентификаторы UID и GID на хосте смещены на +100000: UID 0 в контейнере соответствует UID 100000 на хосте, а UID 1000 — UID 101000. Пользовательские сопоставления могут отличаться; владельцы файлов в каталогах, подключённых через bind-монтирование, должны соответствовать выбранному сопоставлению.", + "seeAlso": [ + { + "label": "Точки монтирования LXC", + "href": "/docs/storage-share/lxc-mount-points" + } + ] + }, + { + "term": "Непривилегированный контейнер", + "category": "Linux", + "definitionRich": "Контейнер LXC, в котором root сопоставляется с непривилегированным UID на хосте, обычно 100000. Это снижает привилегии на хосте, при этом контейнер использует общее с хостом ядро. Доступ к оборудованию по-прежнему можно настроить с помощью подходящих прав доступа к устройствам и сопоставлений; привилегированный режим требуется не во всех случаях." + }, + { + "term": "VFIO", + "aliases": [ + "Ввод-вывод виртуальных функций" + ], + "category": "Виртуализация", + "definitionRich": "Подсистема ядра Linux для безопасных драйверов устройств в пользовательском пространстве — используется для прямого проброса устройств PCIe в виртуальные машины. Включается загрузкой модулей ядра vfio, vfio_iommu_type1 и vfio_pci, настраивается через /etc/modprobe.d/vfio.conf.", + "seeAlso": [ + { + "label": "После установки: виртуализация", + "href": "/docs/post-install/virtualization" + } + ] + }, + { + "term": "VirtIO", + "category": "Виртуализация", + "definitionRich": "Семейство паравиртуализированных драйверов устройств (сеть, хранилище, balloon, GPU), которые работают быстрее эмулируемого устаревшего оборудования (например, сетевых карт e1000 и дисков IDE). Гостевой системе нужен соответствующий драйвер VirtIO — в Linux он входит в состав ядра, а в Windows устанавливается отдельно с ISO-образа." + }, + { + "term": "VLAN", + "aliases": [ + "Виртуальная локальная сеть" + ], + "category": "Сеть", + "definitionRich": "Метки 802.1Q, которые разделяют одну физическую сеть на несколько логических. Настраиваются для каждого моста или сетевого интерфейса в /etc/network/interfaces." + }, + { + "term": "VM", + "aliases": [ + "Виртуальная машина" + ], + "category": "Proxmox", + "definitionRich": "Виртуальная машина под управлением Proxmox на базе QEMU/KVM, работающая с собственным гостевым ядром. Её числовой идентификатор VMID соответствует /etc/pve/qemu-server/<VMID>.conf. Обычно требует больше ресурсов, чем LXC, и обеспечивает отдельную границу изоляции на уровне ядра.", + "seeAlso": [ + { + "label": "Управление ВМ и контейнерами", + "href": "/docs/help-info/vm-ct-commands" + } + ] + }, + { + "term": "vzdump", + "category": "Proxmox", + "definitionRich": "Инструмент Proxmox для резервного копирования виртуальных машин и контейнеров. Файловые архивы не являются инкрементальными; целевые хранилища PBS поддерживают инкрементальную передачу данных. В заданиях можно настроить режим резервного копирования (snapshot / suspend / stop), сжатие (например, zstd, gzip или lzo), правила хранения и уведомления.", + "seeAlso": [ + { + "label": "Команды резервного копирования и восстановления", + "href": "/docs/help-info/backup-commands" + } + ] + }, + { + "term": "ZFS", + "aliases": [ + "Зеттабайтная файловая система" + ], + "category": "Хранилище", + "definitionRich": "Файловая система и менеджер томов в одном решении с поддержкой снимков, репликации через send/receive, контрольных сумм и сжатия. Может исправлять повреждённые данные при наличии исправной избыточной копии. Для кэширования чтения используется оперативная память через ARC, размер которого можно ограничить.", + "seeAlso": [ + { + "label": "Команды управления ZFS", + "href": "/docs/help-info/zfs-commands" + } + ] + } + ] +} diff --git a/web/messages/ru/docs/hardware/coral-tpu-lxc.json b/web/messages/ru/docs/hardware/coral-tpu-lxc.json new file mode 100644 index 00000000..5e15292d --- /dev/null +++ b/web/messages/ru/docs/hardware/coral-tpu-lxc.json @@ -0,0 +1,120 @@ +{ + "meta": { + "title": "Добавление TPU Coral в LXC | Документация ProxMenux", + "description": "Проброс TPU Google Coral (USB или M.2 / PCIe) в контейнер Proxmox LXC. ProxMenux записывает подходящие записи dev / cgroup / mount для каждого варианта, запускает контейнер и устанавливает в нём среду выполнения Edge TPU, чтобы приложения, такие как Frigate, могли использовать ускоритель." + }, + "header": { + "title": "Добавить Coral TPU в LXC", + "description": "Предоставьте контейнеру Proxmox LXC совместный доступ к TPU Google Coral (USB Accelerator или M.2 / Mini-PCIe). ProxMenux настраивает LXC и устанавливает среду выполнения Edge TPU внутри контейнера. Coral предназначен только для TPU: для совместного доступа к GPU / iGPU (Quick Sync, VA-API, NVENC) в том же контейнере отдельно запустите «Добавление GPU в LXC».", + "section": "Оборудование: GPU и Coral-TPU" + }, + "intro": { + "title": "Что делает этот инструмент", + "body": "Записывает настройки проброса в /etc/pve/lxc/<ctid>.conf — записи различаются в зависимости от того, подключён ли к хосту USB Accelerator, M.2 / PCIe Coral или оба устройства. Затем запускает контейнер и устанавливает в нём последнюю версию среды выполнения libedgetpu от Google. Проброс iGPU / GPU выполняется отдельным скриптом (Добавление GPU в LXC) — этот скрипт предназначен для TPU." + }, + "whenUse": { + "heading": "Когда это использовать", + "body": "Используйте для Frigate или другого совместимого приложения обнаружения для Linux в LXC. Coral выполняет поддерживаемые операции вывода моделей машинного обучения вместо CPU. Производительность зависит от модели и оборудования; декодирование видео и другие задачи приложения по-прежнему потребляют ресурсы." + }, + "prereqs": { + "title": "Перед началом", + "drivers": "Подготовьте устройство Coral на хосте. Для M.2 / PCIe на хосте должен быть загружен драйвер; для USB необходимы доступ к устройству и соответствующие права. См. Установка TPU Coral на хост. Скрипт устанавливает среду выполнения приложения в контейнерах Debian/Ubuntu; для других дистрибутивов её необходимо установить отдельно.", + "driversCheck": "ls /dev/apex_* 2>/dev/null ; lsusb | grep -E '1a6e:089a|18d1:9302'", + "container": "Существующий контейнер LXC, желательно с дистрибутивом на базе Debian / Ubuntu — для установки среды выполнения внутри контейнера используется apt-get. Контейнеры не на базе Debian (Alpine, Arch, RHEL, SUSE…) также поддерживаются в режиме только проброса устройств: скрипт определяет дистрибутив и предлагает пропустить установку libedgetpu через APT, при этом всё равно записывая настройки проброса устройств. Это полезно для контейнеров приложений, в состав которых уже входит среда выполнения (например, образ Frigate Docker).", + "downtime": "Будьте готовы к кратковременному простою контейнера. Скрипт останавливает его для применения изменений конфигурации, затем снова запускает, чтобы установить драйверы внутри контейнера. Перезагрузка хоста не требуется." + }, + "hostPrep": { + "title": "Сначала необходимо подготовить хост", + "body": "Для M.2 / PCIe на хосте необходимы драйвер gasket/apex и рабочий узел устройства. Для USB нужны подключённое устройство и права доступа; запускать приложение на хосте не требуется. Среда выполнения libedgetpu должна быть доступна там, где работает приложение. Следуйте порядку: подготовка хоста → доступ к устройству LXC → настройка приложения." + }, + "running": { + "heading": "Запуск скрипта", + "body": "Откройте ProxMenux на хосте, перейдите в Оборудование: графические процессоры и Coral-TPU → Add Coral TPU to LXC.", + "imageAlt": "Пункт меню «Добавить TPU Coral в LXC» в разделе «Оборудование: GPU и Coral-TPU»" + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Выберите целевой контейнер. Скрипт настраивает доступ к USB, даже если USB-устройство Coral сейчас не подключено, а затем добавляет доступ к M.2 / PCIe при обнаружении соответствующего оборудования." + }, + "walkthrough": { + "heading": "Пошаговый разбор", + "pick": { + "title": "Выберите контейнер LXC", + "body": "В списке выбора отображаются подходящие контейнеры из pct list; контейнеры на основе образов OCI скрыты и управляются через OCI manager Apps. Выберите целевой контейнер — работающий или остановленный. При необходимости скрипт останавливает его, записывает конфигурацию и запускает для установки среды выполнения." + }, + "gpuHint": { + "title": "Рекомендация по пробросу GPU (необязательно)", + "body": "Если GPU обнаружен, но не настроен для этого контейнера, диалоговое окно рекомендует Добавить GPU в LXC для аппаратного декодирования видео, например с помощью Quick Sync, VA-API или NVENC. Затем предлагается продолжить только с Coral: «Да» — продолжить настройку TPU; «Нет» — выйти, чтобы сначала настроить GPU." + }, + "usb": { + "title": "Запись конфигурации LXC — вариант USB", + "body": "Скрипт создаёт на хосте правило udev для символической ссылки /dev/coral и подключает в контейнер через bind-монтирование всё дерево /dev/bus/usb. Эта конфигурация USB записывается, даже если USB-устройство Coral сейчас не подключено; она предоставляет доступ не только к этому устройству.", + "whyTitle": "Почему монтируется /dev/bus/usb, а не /dev/coral?", + "whyBody": "Пути к узлам USB-устройств, например /dev/bus/usb/001/005, меняются при повторном подключении. В старых версиях символическая ссылка /dev/coral подключалась через bind-монтирование, из-за чего мог сохраняться устаревший путь. Монтирование всего дерева USB делает текущий узел устройства видимым; при этом приложению может потребоваться повторно открыть его." + }, + "pcie": { + "title": "Запись конфигурации LXC — вариант M.2 / PCIe", + "body1": "Если на хосте присутствует устройство Coral с интерфейсом M.2 / PCIe и существует /dev/apex_0 (модуль ядра apex загружен), скрипт использует современный механизм Proxmox dev API, который автоматически настраивает права cgroup2 как для привилегированных, так и для непривилегированных контейнеров:", + "body2": "Если /dev/apex_0 отсутствует после выполнения Установить Coral на хост, скрипт записывает bind-монтирование с create=file и, только если старший номер устройства apex указан в /proc/devices, классическое правило cgroup2. Ни то ни другое не создаёт работающее устройство:", + "rebootTitle": "Если вы только что установили драйверы Coral, сначала перезагрузите хост", + "rebootBody": "Резервный вариант монтирования не загружает драйвер apex на хосте. Загрузите драйвер или перезагрузите хост после установки и убедитесь, что устройство на хосте существует. Когда устройство будет готово, повторно запустите скрипт, чтобы применить современную запись устройства, а затем перезапустите контейнер." + }, + "drivers": { + "title": "Запуск контейнера и установка среды выполнения Coral внутри него", + "body": "Скрипт запускает контейнер и ждёт до 15 секунд, пока тот перейдёт в состояние «работает», затем с помощью pct exec запускает внутри установщик среды выполнения. Установщик:", + "items": [ + "Выполняет apt-get update.", + "Устанавливает компоненты, необходимые для работы с репозиторием Coral: gnupg, curl, ca-certificates.", + "Импортирует GPG-ключ Google Coral в /etc/apt/keyrings/coral-edgetpu.gpg (современный путь, который также использует установщик на хосте) и добавляет APT-репозиторий coral-edgetpu-stable с помощью signed-by=.", + "По умолчанию устанавливает libedgetpu1-std. При обнаружении M.2 Coral скрипт предлагает выбрать libedgetpu1-std или libedgetpu1-max. Сам по себе выбор пакета среды выполнения не настраивает параметры обнаружения в приложении." + ], + "noIgpuTitle": "Почему здесь нет драйверов iGPU?", + "noIgpuBody": "Ранние версии этого скрипта также устанавливали Intel va-driver-all, intel-opencl-icd и другие компоненты, чтобы один контейнер мог декодировать видео с помощью Quick Sync и одновременно выполнять инференс с помощью Coral. Такое совмещение задач приводило к непонятным сбоям, когда пользователю требовался только Coral. Теперь за iGPU отвечает исключительно Добавить GPU в LXC — сначала запустите этот скрипт, если вам также нужно аппаратное декодирование видео в контейнере.", + "debianTitle": "Контейнеры не на базе Debian — режим только проброса устройств", + "debianBody": "Для установки среды выполнения внутри контейнера используется apt-get, который поставляется только в дистрибутивах семейства Debian/Ubuntu. В контейнерах Alpine, Arch, RHEL или SUSE скрипт определяет дистрибутив с помощью /etc/os-release и запрашивает подтверждение: продолжить в режиме только проброса устройств (записывает конфигурацию устройств в /etc/pve/lxc/<ctid>.conf и пропускает установку libedgetpu через APT) или прервать выполнение. Режим только проброса устройств подходит, если контейнер приложения, которое будет использовать Coral, уже содержит среду выполнения. Типичный пример — образ Frigate Docker. В противном случае следуйте официальному руководству Google, чтобы установить libedgetpu вручную после того, как скрипт запишет конфигурацию LXC." + }, + "summary": { + "title": "Итоги", + "body": "В конце скрипт выводит список включённых устройств (Coral USB, Coral M.2) с отметками ✓ или ⚠ в зависимости от того, было ли оборудование действительно обнаружено. Контейнер продолжает работать — можно сразу перейти к настройке Frigate / CodeProject.AI / вашего приложения." + } + }, + "manual": { + "heading": "Эквивалентные действия вручную", + "body": "Если вы хотите узнать, что именно добавляется в конфигурацию LXC, или внести эти настройки вручную:", + "usbHeading": "USB Coral", + "pcieHeading": "M.2 / PCIe Coral", + "runtimeHeading": "Внутри контейнера — среда выполнения Coral" + }, + "verification": { + "heading": "Проверка", + "body": "Войдите в контейнер и проверьте, что Coral виден:" + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "apexTitle": "Контейнер запущен, но внутри отсутствует /dev/apex_0", + "apexBody": "Сначала проверьте драйвер на хосте: lsmod | grep apex. Если он отсутствует, попробуйте modprobe apex или перезагрузите хост после установки драйвера. Когда на хосте появится /dev/apex_0, проверьте запись устройства LXC (повторно запустите скрипт, если были записаны только резервные записи) и перезапустите контейнер с помощью pct stop <ctid> && pct start <ctid>.", + "replugTitle": "USB Coral исчезает после переподключения к другому порту", + "replugBody": "Именно поэтому скрипт монтирует /dev/bus/usb, а не символическую ссылку /dev/coral. Если вы столкнулись с этой проблемой, проверьте, что в конфигурации LXC указано lxc.mount.entry: /dev/bus/usb dev/bus/usb ..., а не прямая ссылка на /dev/coral. Старые конфигурации, созданные предыдущими версиями скрипта, могут требовать обновления — повторно запустите скрипт для того же контейнера, и конфигурация обновится.", + "alpineTitle": "Контейнер Alpine / Arch / RHEL / SUSE — среда выполнения не установлена", + "alpineBody": "В режиме только проброса устройств конфигурация устройств записывается, но libedgetpu не устанавливается. Используйте совместимый пакет сообщества или сборку из исходного кода; прежде чем выполнять команду установки пакета, например Alpine apk add, проверьте его доступность. Образ приложения, например Frigate, может уже содержать среду выполнения. При использовании вложенного Docker также пробросьте устройство M.2 с помощью --device /dev/apex_0:/dev/apex_0 или смонтируйте дерево USB в этот контейнер Docker; одного монтирования LXC недостаточно для проброса устройства в Docker.", + "frigateTitle": "Frigate сообщает: «Coral EdgeTPU обнаружен, но недоступен»", + "frigateBody": "Проверьте доступность среды выполнения, видимость устройства и права на чтение и запись для процесса, под которым фактически работает приложение. Для USB проверьте права доступа и членство в группе plugdev, если оно используется. Для M.2 проверьте /dev/apex_0 с помощью ls -l /dev/apex_0. Одного имени группы, например apex в /etc/group, недостаточно: числовые GID и сопоставления LXC должны совпадать. Также проверьте, не занят ли TPU другим процессом; не переходите в привилегированный режим в качестве первой меры устранения проблемы.", + "logsTitle": "Проверьте журналы и хоста, и контейнера", + "logsBody": "На хосте проверьте сообщения ядра об устройствах с помощью journalctl -k | grep -i -e apex -e gasket -e usb. В контейнере проверьте журналы приложения; для вложенного Docker используйте docker logs <container>. Причиной сбоев могут быть права доступа, отсутствие среды выполнения, проблемы с подключением по USB или использование TPU другим процессом." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "label": "Установить Coral TPU на хосте", + "href": "/docs/hardware/install-coral-tpu-host", + "tail": " — обязательное предварительное условие для карт Coral формата M.2 / PCIe перед их пробросом в CT." + }, + { + "label": "Добавить GPU в LXC", + "href": "/docs/hardware/igpu-acceleration-lxc", + "tail": " — аналогичный подход для GPU (часто используются вместе с TPU Coral в конфигурациях Frigate)." + } + ] + } +} diff --git a/web/messages/ru/docs/hardware/gpu-vm-passthrough.json b/web/messages/ru/docs/hardware/gpu-vm-passthrough.json new file mode 100644 index 00000000..53142d9d --- /dev/null +++ b/web/messages/ru/docs/hardware/gpu-vm-passthrough.json @@ -0,0 +1,178 @@ +{ + "meta": { + "title": "Добавление GPU в ВМ (проброс) | Документация ProxMenux", + "description": "Проброс GPU Intel, AMD или NVIDIA в ВМ Proxmox с производительностью, близкой к нативной. ProxMenux выполняет подготовку хоста (модули VFIO, чёрный список драйверов, параметры командной строки ядра), настройку ВМ (hostpci, аудиофункция, остальные устройства группы IOMMU), применяет обходные решения для конкретных производителей (NVIDIA Code 43, ошибка сброса AMD, дамп ROM) и устраняет конфликты с LXC при переключении режимов." + }, + "header": { + "title": "Добавить GPU в ВМ (прямой проброс)", + "description": "Передайте один из GPU виртуальной машине с производительностью, близкой к нативной. ProxMenux обнаруживает Intel / AMD / NVIDIA, проверяет IOMMU, анализирует группу IOMMU выбранного GPU, чтобы пробросить все устройства этой группы вместе, настраивает VFIO на хосте, записывает нужные строки hostpci в конфигурацию ВМ и при необходимости применяет исправления для конкретного производителя.", + "section": "Оборудование: GPU и Coral-TPU" + }, + "intro": { + "title": "Что делает этот инструмент", + "body": "Автоматизирует соответствующие этапы настройки хоста и hostpci, описанные в документации Proxmox по пробросу PCI-устройств. Проверяет назначения устройств в других гостевых системах и предлагает варианты разрешения конфликтов. Эти проверки не гарантируют поддержку всех GPU, методов сброса или гостевых драйверов." + }, + "who": { + "heading": "Для кого это предназначено?", + "body": "На вашем хосте Proxmox установлен физический GPU, и вы хотите, чтобы виртуальная машина (для игр под Windows, macOS, вычислений на GPU без монитора или медиасервера на базе ВМ) использовала его напрямую. Проброс GPU в ВМ отличается от проброса в LXC: для ВМ ядро должно обрабатывать GPU как устройство VFIO (по сути, «хост его не использует»), поэтому во время работы ВМ хост не может использовать этот GPU для других задач. Для транскодирования и вычислений в LXC используйте вместо этого Добавление GPU в LXC — этот вариант обеспечивает совместное использование GPU и не требует VFIO." + }, + "prereqs": { + "title": "Перед началом", + "gpu": "Физически установленный поддерживаемый GPU. Скрипт обнаруживает Intel, AMD и NVIDIA с помощью lspci.", + "gpuCheck": "lspci | grep -iE 'VGA|3D|Display'", + "iommu": "Поддержка IOMMU должна быть доступна на аппаратном уровне и, если требуется, включена в прошивке (Intel VT-d или AMD-Vi). Скрипт проверяет работающую систему и может настроить параметры загрузки Linux; он не может изменять настройки BIOS/UEFI или подтвердить, что каждый неактивный IOMMU отключён в прошивке.", + "q35": "Для работы этого помощника требуется тип машины q35; тип i440fx не поддерживается. Тип машины — отдельная настройка, не связанная с выбором прошивки BIOS/UEFI; изменение чипсета существующей виртуальной машины требует планирования и не выполняется автоматически.", + "q35Check": "qm config VMID | grep machine", + "moreGpus": "Желательно иметь на хосте более одного GPU или доступ к консоли через другой канал (IPMI, KVM-over-IP, последовательный порт). После проброса единственного GPU в ВМ изображение консоли хоста пропадёт. Если у вас два GPU NVIDIA, один можно пробросить в ВМ, а другой оставить хосту — скрипт настраивает это отдельно для каждого BDF (см. NVIDIA в примечаниях по производителям ниже).", + "nvidiaInstalled": "Если вы установили драйверы NVIDIA на хост, выбранные функции резервируются для vfio-pci, а не для nvidia. Модуль nvidia может оставаться доступным для других карт вне затронутой группы IOMMU; проверьте их с помощью nvidia-smi." + }, + "pickOne": { + "title": "Проброс в ВМ или совместное использование с LXC — выберите один вариант для каждого GPU", + "body": "GPU, привязанный к vfio-pci для проброса в ВМ, не может одновременно использоваться хостом или LXC. Если у вас два GPU, можно выделить по одному для каждого варианта. Если GPU только один, выберите:", + "vmItem": "Вариант с ВМ (эта страница): полный доступ к оборудованию, но исключительно для ВМ, которой назначен GPU, пока она работает.", + "lxcItem": "Вариант с LXC (Добавление GPU в LXC): совместное использование с хостом и другими контейнерами, хорошо подходит для транскодирования, настройка VFIO не требуется." + }, + "running": { + "heading": "Запуск установщика", + "body": "Откройте ProxMenux на хосте и перейдите в Оборудование: GPU и Coral-TPU → Add GPU в ВМ.", + "imageAlt": "Пункт меню «Добавить GPU в ВМ» в разделе «Оборудование: GPU и Coral-TPU»" + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Обнаружение и выбор устройств выполняются до основных изменений хоста и ВМ, а итоговая сводка позволяет подтвердить этот план. Включение IOMMU требует отдельного подтверждения на более раннем этапе и уже на этом этапе может изменить конфигурацию загрузки. Позднее при удалении связанных настроек аудиоустройства также может потребоваться выбор." + }, + "walkthrough": { + "heading": "Пошаговый разбор", + "detect": { + "title": "Обнаружение GPU и проверка IOMMU", + "body": "Считает IOMMU активным только в том случае, если в параметрах работающего ядра есть intel_iommu=on или amd_iommu=on и существуют группы IOMMU. Если параметр уже сохранён для следующей загрузки, работа продолжается в режиме ожидания перезагрузки; в противном случае его можно добавить с помощью iommu=pt на отдельном шаге, требующем подтверждения. При эвристическом выборе загрузочного файла используется /etc/kernel/cmdline, если в нём есть маркер корневой файловой системы ZFS, например root=ZFS=; иначе используется /etc/default/grub. Эта эвристика не доказывает, какой загрузчик используется на самом деле. Новая настройка IOMMU вступает в силу после перезагрузки; после неё проверьте фактические группы.", + "tipTitle": "Уже выполнили настройку после установки?", + "tipBody": "Если поддержка VFIO IOMMU была настроена ранее и активна в работающем ядре, проверка проходит успешно. Одной лишь сохранённой настройки для следующей загрузки недостаточно, чтобы подтвердить её активность.", + "imageAlt": "Список обнаруженных GPU с указанием производителя и адреса PCI" + }, + "preflight": { + "title": "Выберите GPU и выполните предварительные проверки", + "intro": "После выбора GPU скрипт выполняет ряд проверок, каждая из которых может заблокировать дальнейшие действия:", + "items": [ + "Защитная проверка SR-IOV. Этот помощник отказывается работать с VF и с PF, у которых есть активные VF, поскольку его сценарий проброса устройства целиком не предназначен для настройки SR-IOV. Проброс SR-IOV необходимо настраивать отдельно на поддерживаемом оборудовании.", + "Предупреждение о единственном GPU. Если это единственный GPU на хосте, появится предупреждающее диалоговое окно с напоминанием, что после перезагрузки изображение на консоли исчезнет. Убедитесь, что у вас есть доступ через SSH или веб-интерфейс с другого компьютера.", + "Политика сброса AMD. Считывает /sys/bus/pci/devices/<pci>/reset_method. Работа с APU или дискретной видеокартой без FLR блокируется политикой этого помощника; для неизвестного подтипа без FLR требуется явное разрешение на обход ограничения. Это не означает, что работа с таким оборудованием невозможна во всех случаях.", + "GPU не должен находиться в D3cold. Некоторые карты AMD в состоянии простоя сообщают о состоянии питания D3cold, из-за чего они не видны при запуске ВМ. Дальнейшие действия заблокированы, пока вы не выведете GPU из этого состояния.", + "Анализ группы IOMMU. Считывает /sys/kernel/iommu_groups/ и включает в план ВМ все устройства группы, кроме мостов, в том числе, возможно, сетевые контроллеры или контроллеры хранения данных. Если в группе есть устройства из другого слота, скрипт перечисляет их перед сводкой; убедитесь, что ни одно из них не требуется хосту. Если IOMMU ожидает перезагрузки, фактические группы недоступны и изначально план содержит только выбранную функцию GPU; после перезагрузки проверьте изоляцию." + ], + "audioIntro": "Сопутствующее аудиоустройство. Возможны два варианта в зависимости от того, где находится аудиоустройство:", + "audioDgpu": "Дискретный GPU: аудиоустройство HDMI часто занимает функцию .1 того же слота PCI и автоматически включается в план при обнаружении. Если хост использовал это аудиоустройство, он потеряет к нему доступ после его резервирования для ВМ.", + "audioIgpu": "Intel iGPU (или любой GPU без соседней функции .1): аудиоустройство HDMI / аналогового звука находится в чипсете и использует другой слот (обычно 00:1f.3). Скрипт сканирует хост, перечисляет все аудиоконтроллеры PCI с их текущими драйверами (snd_hda_intel и т. д.) и предлагает выбрать, какие из них пробросить. По умолчанию ничего не выбрано — проброс нужно выбрать явно." + }, + "pickVm": { + "title": "Выберите целевую ВМ", + "body": "Выберите ВМ из списка. Помощнику требуется q35; по возможности он повторно использует существующие записи GPU. Прошивка BIOS/UEFI — это отдельная настройка, а не тип машины; эта проверка не меняет автоматически чипсет или режим загрузки уже установленной гостевой системы.", + "imageAlt": "Список выбора ВМ с указанием имени, идентификатора и состояния" + }, + "switchMode": { + "title": "Режим переключения — если GPU уже используется в другом месте", + "intro": "Скрипт проверяет конфигурации всех ВМ и все конфигурации LXC на хосте в поисках выбранного GPU. Возможны три результата:", + "items": [ + "GPU свободен. Ничего делать не нужно, можно продолжать.", + "GPU назначен другой ВМ. Если исходная ВМ сейчас работает, скрипт прерывает выполнение: две ВМ не могут совместно использовать GPU, выделенный исключительно одной ВМ через VFIO, поэтому сначала необходимо остановить исходную ВМ. Если исходная ВМ остановлена, предлагаются два варианта: оставить GPU в конфигурации исходной ВМ, но отключить запуск при загрузке хоста или удалить строки GPU из конфигурации исходной ВМ и оставить запуск при загрузке хоста включённым. Также предусмотрен упрощённый сценарий: если GPU уже привязан к vfio-pci и выполняется обычная передача GPU из одной ВМ в другую, конфигурация хоста не изменяется и перезагрузка не требуется.", + "GPU используется LXC. Для обычных контейнеров выберите сохранить конфигурацию GPU и отключить запуск при загрузке или удалить конфигурацию устройств GPU и сохранить запуск при загрузке. При удалении удаляются записи devN, а для AMD/Intel — также устаревшие правила /dev/dri lxc.mount.entry и lxc.cgroup2.devices.allow. Контейнеры OCI сохраняют свою конфигурацию и останавливаются с отключением запуска при загрузке; удаляйте их GPU через раздел Apps менеджера OCI. Конфликты определяются по семейству устройств GPU, поэтому проверка может затрагивать и другие карты того же семейства." + ], + "imageAlt": "Диалог с предложением удалить GPU из LXC перед назначением виртуальной машине", + "smartTitle": "Связанные аудиоустройства тоже удаляются с учётом их использования", + "smartBody": "После удаления назначений GPU из исходной виртуальной машины скрипт может предложить список аудиоустройств, которые могли остаться без привязки. Проверьте его и снимите отметки со всех устройств, которые ещё нужны исходной виртуальной машине. Например, аудиоустройство дискретной видеокарты по адресу 02:00.1 может остаться, а аудиоустройство чипсета по адресу 00:1f.3 — быть предложено для удаления. Дополнительные удаления определяются этим списком, а не какой-либо универсальной гарантией соответствия видеоустройств и аудиоустройств." + }, + "audioPick": { + "title": "(Если нет связанной функции .1) Выберите аудиоконтроллеры для включения", + "body": "Этот шаг появляется только для Intel iGPU и аналогичных конфигураций с отдельными аудиоустройствами. В списке показаны все аудиоконтроллеры PCI хоста, кроме уже входящих в группу IOMMU выбранного GPU; для каждого указан текущий драйвер. Выберите нужные контроллеры или не выбирайте ничего, если виртуальной машине не нужен звук через оборудование хоста.", + "imageAlt": "Диалог со списком всех аудиоконтроллеров PCI хоста (BDF + драйвер), когда у GPU нет связанной аудиофункции .1", + "warnTitle": "Не отмечайте аудиоустройства, необходимые хосту", + "warnBody": "Назначение аудиоконтроллера виртуальной машине может лишить хост доступа к нему; контроллер не может одновременно принадлежать другой работающей виртуальной машине. Не выбирайте дополнительные аудиоустройства без необходимости и перед переносом проверяйте, кому они назначены. Аудиоустройство PCI не обязательно является источником звукового сигнала консоли хоста." + }, + "summary": { + "title": "Проверьте сводку перед подтверждением", + "body": "Проверьте итоговый план изменений хоста и виртуальной машины и отмените операцию, если он неверен. В сводке указаны группа IOMMU и количество входящих в неё устройств; устройства из другого слота перечислены на предыдущем шаге. Отмена останавливает внесение основных изменений, но не отменяет ранее отдельно подтверждённое изменение конфигурации загрузки для IOMMU.", + "imageAlt": "Диалог со сводкой изменений хоста (файлы VFIO и чёрного списка) и конфигурации виртуальной машины (строки hostpci) перед их применением" + }, + "hostApply": { + "title": "Применение изменений хоста", + "intro": "На этапе применения вносятся изменения в хост и виртуальную машину. При удалении связанных аудиоустройств может потребоваться дополнительный выбор. Изменения хоста могут включать:", + "items": [ + "/etc/modules — добавляет vfio, vfio_iommu_type1, vfio_pci (а также vfio_virqfd для ядер < 6.2).", + "/etc/modprobe.d/vfio.conf — для AMD / Intel задаёт options vfio-pci ids=<vendor:device,...> disable_vga=1, чтобы VFIO получал управление GPU на раннем этапе загрузки. Для NVIDIA файл добавляет только softdep nvidia pre: vfio-pci (а также _drm/_modeset/_uvm); фактическая привязка выполняется отдельно для каждого BDF через приведённое ниже правило udev. Для AMD также добавляет строки softdep, принудительно задающие загрузку vfio-pci перед radeon / amdgpu.", + "Записывает /etc/modprobe.d/iommu_unsafe_interrupts.conf и kvm.conf с параметрами allow_unsafe_interrupts=1 и ignore_msrs=1. Это настройки совместимости, применяемые скриптом, а не универсальные требования Windows/macOS; небезопасные прерывания ослабляют защиту переназначения прерываний.", + "/etc/modprobe.d/blacklist.conf: NVIDIA — nouveau/lbm-nouveau; AMD — radeon + amdgpu; Intel — i915. Эти записи действуют на уровне производителя и могут затронуть другие карты, использующие тот же драйвер. Проприетарный модуль nvidia блокируется только через /etc/modprobe.d/proxmenux-nvidia-vfio-blacklist.conf, когда все карты NVIDIA на хосте учтены для использования с VFIO.", + "/etc/udev/rules.d/10-proxmenux-vfio-bind.rules + /etc/proxmenux/vfio-bind.bdfs — только для NVIDIA. Правило udev задаёт ATTR'{'driver_override'}'=\"vfio-pci\" при событии PCI ADD для отслеживаемых BDF, включая затронутые функции группы IOMMU. Карты вне этих групп могут сохранить драйвер nvidia. Политика для отдельных BDF не разделяет аппаратную группу IOMMU.", + "Только для AMD. Выполняется попытка получить дамп ROM из /sys/bus/pci/.../rom или ACPI VFCT и сохранить его в /usr/share/kvm/vbios_<vendor>_<device>.bin. В случае успеха ВМ использует romfile=. Корректный дамп не гарантирует успешной инициализации GPU.", + "Только для NVIDIA. Службы NVIDIA на хосте (nvidia-persistenced, nvidia-powerd, nvidia-fabricmanager) останавливаются и отключаются только тогда, когда все GPU NVIDIA назначены VFIO. Если часть GPU остаётся в распоряжении хоста, эти службы и модуль nvidia остаются активными для GPU, использующих штатный драйвер.", + "update-initramfs -u -k all — выполняется только в том случае, если что-либо из перечисленного выше действительно изменилось." + ] + }, + "vmApply": { + "title": "Конфигурация ВМ применяется через qm set", + "body": "Конфигурация ВМ в /etc/pve/qemu-server/<vmid>.conf обновляется через qm set (никогда не путём прямого применения sed):", + "after1": "Скрипт добавляет x-vga=1 для AMD и NVIDIA, но не для Intel. Это описывает принятый в скрипте подход к настройке, но не доказывает, что у каждого Intel iGPU отсутствует прошивка или что этот флаг всегда вызывает зависания.", + "after2": "Дополнительные строки hostpciN добавляются, если группа IOMMU этого GPU содержит другие устройства, которые необходимо пробросить вместе с ним." + }, + "reboot": { + "title": "Перезагрузите хост, если его конфигурация была изменена", + "body": "Следуйте предложению о перезагрузке при изменении параметров загрузки или драйверов хоста и перед запуском ВМ проверьте, к какому драйверу фактически привязан GPU. Сохранённая конфигурация не доказывает, что она уже действует. При переназначении GPU с одной ВМ на другую можно обойтись без перезагрузки хоста, если состояние VFIO корректно.", + "imageAlt": "Итоговый экран с перечнем изменений, за которым следует предложение перезагрузки" + } + }, + "vendors": { + "heading": "Примечания по производителям", + "nvidiaHeading": "NVIDIA", + "nvidiaBody": "В скрипте сохранён устаревший способ обхода ошибки Code 43: hidden=1, идентификатор производителя NV43FIX в args и kvm=off. Он не является обязательным для всех современных драйверов GeForce: NVIDIA добавила поддержку проброса GPU в ВМ с Windows в версии R465. У ошибки Code 43 могут быть и другие причины; проверьте конкретное сочетание GPU и драйвера.", + "nvidiaMultiHeading": "Поддержка нескольких GPU NVIDIA", + "nvidiaMultiBody": "Смешанное использование GPU NVIDIA поддерживается на уровне отдельных BDF. Функции, назначенные vfio-pci, отслеживаются по PCI-адресу, а не только по общему идентификатору vendor:device. Видеокарты вне затронутых групп IOMMU могут продолжать использовать nvidia, и их можно проверить с помощью nvidia-smi. Этот подход не обеспечивает независимую изоляцию двух видеокарт в одной группе.", + "amdHeading": "AMD", + "amdBody": "Некоторые GPU AMD не удаётся сбросить после остановки ВМ. Мастер проверяет заявленные возможности, а не каждый реальный цикл перезапуска. vendor-reset поддерживает ограниченный список устройств и требует совместимой поддержки в ядре и ранней загрузки; скрипт его не устанавливает. Проект RadeonResetBugFix для Windows — ещё один обходной путь, зависящий от оборудования, а не гарантированное решение для всех GPU AMD.", + "intelHeading": "Intel iGPU", + "intelBody": "Полный проброс Intel iGPU и SR-IOV — разные процедуры. Этот мастер выделяет устройство целиком одной ВМ и не добавляет x-vga=1. i915-sriov-dkms применим только к поддерживаемым сочетаниям оборудования и ядра для SR-IOV; обозначение «UHD 630+» не является критерием совместимости. Заранее предусмотрите альтернативный доступ к консоли хоста." + }, + "verification": { + "heading": "Проверка" + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "code43Title": "Ошибка Code 43 в Windows (NVIDIA)", + "code43Body": "Ошибка Code 43 не доказывает, что скрыть KVM не удалось. Проверьте qm config VMID | grep -E \"cpu|args\" (замените VMID), чтобы увидеть заданные скриптом параметры hidden=1 и hv_vendor_id=NV43FIX, но также проверьте драйвер в гостевой ОС, прошивку GPU и назначение устройства. Повторный запуск может завершиться досрочно, если GPU уже назначен.", + "amdResetTitle": "GPU AMD работает при первом запуске, но не после перезапуска ВМ", + "amdResetBody": "Одна из возможных причин — сбой сброса устройства. Перезагрузка хоста или полное выключение с последующим включением питания могут временно восстановить работу устройства. Проверьте, поддерживает ли vendor-reset именно этот GPU и это ядро, и обеспечьте его раннюю загрузку согласно документации; одного softdep amdgpu pre: vendor-reset недостаточно, чтобы гарантировать загрузку до VFIO. Обходной путь RadeonResetBugFix для Windows также требует совместимого GPU.", + "stuckBootTitle": "ВМ зависает при загрузке / GPU не обнаружен", + "stuckBootBody": "Проверьте выбранный PCI-адрес с помощью lspci -nnk -s PCI_ADDRESS; ожидаемый результат — Kernel driver in use: vfio-pci. Замените PCI_ADDRESS фактическим BDF. Если устройство по-прежнему использует штатный драйвер, проверьте соответствующие правила привязки, а не только /etc/modprobe.d/blacklist.conf; для NVIDIA также используется состояние для отдельных BDF. Прочитайте dmesg | grep vfio. После исправления постоянной конфигурации выполните пересборку с помощью update-initramfs -u -k all и следуйте плану перезагрузки.", + "darkTitle": "После перезагрузки экран консоли хоста гаснет, и не удаётся войти через SSH", + "darkBody": "Отсутствие изображения на экране не доказывает, что хост не работает. Если SSH также не работает, проверьте сетевое подключение и не попал ли сетевой контроллер или контроллер хранения данных в группу IOMMU. Восстановите доступ через IPMI, последовательный порт или среду восстановления; проверьте конфигурацию ВМ /etc/pve/qemu-server/<vmid>.conf и отмените только соответствующие назначения устройств и правила их привязки на хосте. Не удаляйте не относящиеся к ним настройки чёрного списка или VFIO.", + "logTitle": "Проверьте журнал установки", + "logBody": "При каждом запуске журнал записывается в /tmp/add_gpu_vm.log. Приложите его при обращении за помощью на GitHub." + }, + "revert": { + "heading": "Отмена изменений вручную", + "intro": "Остановите ВМ и удалите только соответствующие назначения PCI-устройств в разделе оборудования Proxmox либо явно укажите индекс, как показано ниже. Отключение устройства от ВМ не возвращает его под управление штатного драйвера хоста. Для этого отдельного перехода используйте Switch GPU Mode и проверьте затрагиваемые гостевые системы перед подтверждением." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "label": "Установить драйверы NVIDIA на хосте", + "href": "/docs/hardware/nvidia-host", + "tail": " — подготовьте доступ через драйвер хоста для видеокарт, оставленных под его управлением; видеокарта, привязанная к VFIO, не может одновременно использоваться драйвером хоста." + }, + { + "label": "Добавить GPU в LXC", + "href": "/docs/hardware/igpu-acceleration-lxc", + "tail": " — альтернативный подход: предоставьте нескольким контейнерам совместный доступ к GPU вместо его выделения одной ВМ." + }, + { + "label": "Переключить режим GPU (ВМ ↔ LXC)", + "href": "/docs/hardware/switch-gpu-mode", + "tail": " — переключайте один и тот же GPU между режимами без повторной настройки всех подключений." + }, + { + "label": "Команды для проброса GPU", + "href": "/docs/help-info/gpu-commands", + "tail": " — lspci, проверка IOMMU, справка по qm set hostpci." + } + ] + } +} diff --git a/web/messages/ru/docs/hardware/igpu-acceleration-lxc.json b/web/messages/ru/docs/hardware/igpu-acceleration-lxc.json new file mode 100644 index 00000000..b13bf3f9 --- /dev/null +++ b/web/messages/ru/docs/hardware/igpu-acceleration-lxc.json @@ -0,0 +1,185 @@ +{ + "meta": { + "title": "Добавление GPU в LXC | Документация ProxMenux", + "description": "Предоставьте контейнеру LXC совместный доступ к GPU Intel, AMD или NVIDIA для транскодирования с аппаратным ускорением (Plex / Jellyfin / Frigate), выполнения задач OpenCL / CUDA и ускорения обработки видео с помощью Mesa. ProxMenux настраивает узлы устройств, согласует GID и устанавливает драйверы внутри контейнера с учётом его дистрибутива." + }, + "header": { + "title": "Добавить GPU в LXC", + "description": "Предоставьте контейнеру LXC в Proxmox совместный доступ к одному или нескольким GPU. Хост продолжает использовать GPU как обычно — контейнер лишь получает доступ через узлы устройств. Поддерживаются Intel iGPUs (Quick Sync / VA-API), видеокарты AMD (Mesa / ROCm) и NVIDIA (CUDA / NVENC).", + "section": "Оборудование: GPU и Coral-TPU" + }, + "intro": { + "title": "Что делает этот инструмент", + "body": "Добавляет записи dev<N> в /etc/pve/lxc/<ctid>.conf для соответствующих узлов /dev/dri/*, /dev/kfd или /dev/nvidia*. Запускает контейнер, устанавливает пакеты пользовательского пространства для его дистрибутива и, в случае Intel/AMD, согласует группы video и render. Для ускорения приложений по-прежнему необходимы совместимое оборудование, библиотеки и настройка самих приложений." + }, + "compare": { + "heading": "Совместный доступ в LXC и проброс в ВМ", + "intro": "Контейнеры LXC используют общее с хостом ядро, поэтому могут совместно использовать GPU хоста, не забирая его под своё исключительное управление. В этом состоит важное отличие от ВМ: при пробросе в ВМ GPU выделяется исключительно одной ВМ, и хост не может его использовать. При использовании LXC несколько контейнеров и хост могут одновременно обращаться к одному и тому же GPU.", + "headerFeature": "Возможность", + "headerLxc": "LXC (эта страница)", + "headerVm": "VM", + "rows": [ + { + "feature": "Хост продолжает использовать GPU?", + "lxc": "Да", + "vm": "Нет — GPU выделен исключительно ВМ" + }, + { + "feature": "Несколько контейнеров могут совместно использовать один GPU?", + "lxc": "Да", + "vm": "Нет" + }, + { + "feature": "Требуется IOMMU / VFIO на хосте?", + "lxc": "Нет", + "vm": "Да" + }, + { + "feature": "Требуется перезагрузка?", + "lxc": "Обычно нет (достаточно перезапустить CT)", + "vm": "При изменении драйвера хоста или настроек IOMMU; не при каждом назначении GPU виртуальной машине" + }, + { + "feature": "Гостевые операционные системы", + "lxc": "Только Linux (LXC работает только в Linux)", + "vm": "Поддерживаемая гостевая ОС с совместимым драйвером GPU" + } + ] + }, + "prereqs": { + "title": "Перед началом", + "gpu": "GPU на хосте — Intel iGPU, AMD dGPU или APU либо видеокарта NVIDIA. Скрипт автоматически обнаруживает все три варианта с помощью lspci.", + "gpuCheck": "lspci | grep -iE 'VGA|3D|Display'", + "vfio": "GPU НЕ привязан к vfio-pci. Если GPU сейчас передан виртуальной машине посредством проброса, он недоступен драйверу ядра хоста и LXC не может его использовать. Скрипт обнаруживает это и предлагает запустить Переключить режим GPU.", + "nvidia": "Только для NVIDIA: драйвер NVIDIA уже должен быть установлен на хосте — ProxMenux должен подобрать библиотеки пользовательского пространства контейнера в соответствии с версией драйвера на хосте. Если вы ещё этого не сделали, сначала запустите Установить драйверы NVIDIA на хосте.", + "nvidiaCheck": "nvidia-smi", + "container": "Существующий контейнер LXC. Скрипт не создаёт контейнер. Поддерживаются оба режима привилегий; привилегированный контейнер требуется не во всех случаях. При этом записи устройств и права доступа приложения, определяемые числовыми идентификаторами групп, всё равно должны соответствовать друг другу." + }, + "unpriv": { + "title": "Работает как с привилегированными, так и с непривилегированными контейнерами", + "body": "Скрипт записывает параметры dev<N> в конфигурацию LXC, а для непривилегированных контейнеров согласует GID групп video и render на хосте и в контейнере, чтобы узлы устройств GPU были доступны из контейнера без ручного редактирования lxc.idmap." + }, + "running": { + "heading": "Запуск установщика", + "body": "Откройте ProxMenux на хосте, перейдите в Оборудование: графические процессоры и Coral-TPU → Add GPU to LXC.", + "imageAlt": "Пункт меню «Добавить GPU в LXC» в разделе «Оборудование: GPU и Coral-TPU»" + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Выберите контейнер и семейства GPU, затем пройдите проверки. После этого скрипт останавливает контейнер и изменяет его конфигурацию; дополнительного окончательного подтверждения не будет. Необязательная очистка настроек VFIO требует отдельного подтверждения и может внести изменения на хосте раньше." + }, + "walkthrough": { + "heading": "Пошаговый разбор", + "detect": { + "title": "Обнаружение GPU на хосте", + "body": "Скрипт ищет в lspci контроллеры VGA / 3D / Display производства Intel, AMD или NVIDIA. Для NVIDIA он также проверяет, что модуль ядра nvidia загружен и nvidia-smi работает. Указанная в его выводе версия драйвера хоста используется для выбора подходящего установщика .run для контейнера.", + "tipTitle": "NVIDIA не готова к работе?", + "tipBody": "Если NVIDIA обнаружена, но модуль не загружен, скрипт не предложит вариант для NVIDIA. Сначала запустите Установить драйверы NVIDIA на хосте и перезагрузите хост, затем вернитесь к этому шагу." + }, + "pickCt": { + "title": "Выберите контейнер LXC", + "body": "Выводится список подходящих контейнеров LXC с идентификаторами и именами; контейнеры OCI исключены — для настройки устройств в них используется раздел Apps в OCI manager. Если контейнер работает, он останавливается, затем запускается для установки драйвера и обычно возвращается в исходное состояние: запущен или остановлен.", + "imageAlt": "Диалог со списком существующих контейнеров LXC для выбора" + }, + "selectGpu": { + "title": "Выберите GPU для добавления", + "body": "В списке выбираются обнаруженные семейства GPU по производителю, а не отдельное устройство PCI. Для Intel/AMD добавляются видимые узлы DRI, используемые скриптом; для NVIDIA — доступные узлы её устройств, которые могут относиться к нескольким видеокартам. Если обнаружено только одно семейство, оно выбирается автоматически. Проверьте итоговый список устройств, особенно на хостах с несколькими GPU.", + "imageAlt": "Список обнаруженных GPU (Intel / AMD / NVIDIA) с флажками выбора, указанием производителя и адреса PCI" + }, + "preflight": { + "title": "Предварительные проверки", + "imageAlt": "Диалог с предложением запустить Switch GPU Mode, если выбранный GPU всё ещё привязан к vfio-pci для проброса в виртуальную машину", + "intro": "Три проверки, каждая из которых может заблокировать операцию или изменить дальнейшие действия:", + "items": [ + "Проверка SR-IOV. Этот помощник блокирует выбор VF или PF с активными VF. Это ограничение механизма выбора устройств в помощнике, а не общий запрет на использование SR-IOV с LXC; настраивайте такие устройства отдельно.", + "Привязка к vfio-pci. Если GPU сейчас используется VFIO для проброса в виртуальную машину, ядро хоста не может создать для него узлы /dev/dri/* или /dev/nvidia*. Скрипт предлагает запустить Switch GPU Mode, чтобы отменить привязку к VFIO; перед повторным запуском Add GPU to LXC, скорее всего, потребуется перезагрузка.", + "Уже настроено. Если в контейнере уже есть все узлы устройств для выбранного GPU, скрипт сообщает об этом и завершается без ошибки. Если настройка выполнена частично, скрипт продолжает работу, добавляя только недостающие элементы." + ] + }, + "applyConfig": { + "title": "Применение изменений конфигурации LXC", + "body1": "Останавливает контейнер, если он запущен, и редактирует /etc/pve/lxc/<ctid>.conf. Пронумерованные записи dev<N> содержат GID группы video или render на хосте. Существующие строки bind-монтирования lxc.mount.entry для /dev/dri заменяются записями dev:; проверьте итоговую конфигурацию и права доступа.", + "body2": "Пример после добавления Intel + NVIDIA в один контейнер:" + }, + "installDrivers": { + "title": "Запуск контейнера и установка драйверов внутри него", + "body": "После записи конфигурации скрипт запускает контейнер, ждёт ответа от pct exec примерно до 30 секунд, а затем определяет дистрибутив контейнера по /etc/os-release. На основе этих данных он устанавливает соответствующие пакеты пользовательского пространства.", + "headerDistro": "Дистрибутив", + "headerInt": "Intel / AMD", + "headerNvidia": "NVIDIA", + "rows": [ + { + "distro": "Alpine", + "intel": "apk add mesa-va-gallium intel-media-driver libva-utils", + "nvidia": "apk add nvidia-utils" + }, + { + "distro": "Arch / Manjaro", + "intel": "pacman -Sy intel-media-driver mesa libva-utils", + "nvidia": "pacman -Sy nvidia-utils" + } + ], + "debianDistro": "Debian / Ubuntu / другие", + "debianIntel": "apt-get install va-driver-all intel-opencl-icd vainfo", + "debianNvidia": "извлечь .run с хоста → pct push → запустить с --no-kernel-modules --no-dkms", + "whyTitle": "Зачем в Debian нужны дополнительные действия с установщиком NVIDIA .run", + "whyBody": "Версии пакетов из репозиториев могут не соответствовать версии драйвера на хосте. Для работы инструментов NVML, таких как nvidia-smi, библиотеки контейнера должны соответствовать загруженному модулю хоста. В варианте для Debian/glibc используется кешированный установщик .run версии, соответствующей драйверу хоста: скрипт извлекает и упаковывает его на хосте, передаёт с помощью pct push и устанавливает с помощью --no-kernel-modules --no-dkms. В Alpine и Arch используются пакеты из репозиториев, версии которых всё равно необходимо проверять." + }, + "alignGids": { + "title": "Согласование GID и восстановление состояния", + "body1": "Для Intel/AMD считывает GID групп video и render на хосте, используя 44/104 только как запасные значения, затем редактирует /etc/group внутри контейнера, чтобы значения совпадали; при работе только с NVIDIA этот шаг пропускается. Такие записи, как video:44 и render:104, приведены в качестве примеров и не являются универсальными идентификаторами. Проверьте членство пользователя приложения в группах и фактические права доступа к устройствам.", + "body2": "При штатном завершении контейнер, который изначально был остановлен, снова останавливается, а работавший контейнер продолжает работать. Если запуск или установка завершаются ошибкой, проверьте итоговое состояние контейнера и журнал." + } + }, + "vendors": { + "heading": "Примечания по производителям", + "intelHeading": "Intel iGPU", + "intelBody": "Аппаратное ускорение обработки мультимедиа Intel, включая Quick Sync, зависит от поколения GPU, кодеков и настроек приложения. Скрипт предоставляет доступ к тем из узлов /dev/dri/card0, card1, renderD128 и renderD129, которые существуют; узлы с другими номерами не добавляются. Эти узлы уже должны быть доступны на хосте благодаря его штатному драйверу, например i915.", + "amdHeading": "AMD", + "amdBody": "AMD использует узлы DRI для Mesa/VA-API. Если на хосте доступен /dev/kfd, скрипт также предоставляет к нему доступ. Для рабочих нагрузок ROCm/OpenCL по-прежнему требуются поддерживаемое оборудование и совместимые пакеты пользовательского пространства; предоставление доступа к устройству не устанавливает полный стек ROCm.", + "nvidiaHeading": "NVIDIA", + "nvidiaBody": "Предоставляет доступ к доступным узлам /dev/nvidia*. Совпадение версий драйверов по-прежнему необходимо для nvidia-smi. Для Debian/glibc используется кэшированный .run той же версии, что и на хосте; для Alpine/Arch используются пакеты из репозиториев. Если при установке для Debian обнаруживается, что выделено менее 2048 MiB оперативной памяти, скрипт предлагает временно увеличить её объём, а затем возвращает исходное значение; также требуется не менее 1500 MiB свободного места на диске.", + "updateTitle": "После обновления NVIDIA на хосте проверьте версии библиотек в контейнере", + "updateBody": "Из-за устаревших библиотек в контейнере nvidia-smi может сообщать о несовпадении версий. Установщик NVIDIA для хоста предлагает обновить контейнеры. Повторный запуск функции добавления GPU в LXC может завершиться, если записи устройств уже существуют, поэтому эта команда не гарантирует обновление библиотек. Проверьте установленные версии и обновите соответствующие пакеты контейнера либо используйте установщик компонентов пользовательского пространства." + }, + "verification": { + "heading": "Проверка", + "body": "После завершения работы скрипта войдите в контейнер и убедитесь, что GPU виден:" + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "mismatchTitle": "nvidia-smi: не удалось инициализировать NVML: несовпадение версий драйвера и библиотеки", + "mismatchBody": "Библиотеки в контейнере не соответствуют загруженному модулю хоста. Проверьте версии и соответствующим образом обновите компоненты пользовательского пространства в контейнере. Кэшированный .run поддерживает установку для Debian/glibc, но функция добавления GPU в LXC может завершиться досрочно, если все записи устройств уже существуют.", + "denyTitle": "Отказано в доступе к /dev/dri/renderD128 внутри контейнера", + "denyBody": "Проверьте запись устройства и числовые права доступа группы render, затем проверьте, входит ли пользователь, от имени которого работает приложение, в группу render. Если команда usermod доступна, добавьте этого пользователя в группу render с помощью usermod -aG render <user>, заменив заполнитель именем фактической учётной записи. Перезапустите сеанс приложения, чтобы членство в группе вступило в силу; изменение режима привилегий не является универсальным решением проблем с правами доступа.", + "vainfoTitle": "vainfo сообщает: версия VA-API 1.xx; не удалось выполнить инициализацию", + "vainfoBody": "Проверьте доступ к устройству и выбранный драйвер VA-API. Названия пакетов зависят от дистрибутива: например, intel-media-driver для поддерживаемых новых GPU Intel, i965-va-driver для поддерживаемых старых моделей и mesa-va-drivers для AMD. Само по себе это сообщение не доказывает, что пакет отсутствует.", + "logTitle": "Журнал установки", + "logBody": "При каждом запуске журнал записывается в /tmp/add_gpu_lxc.log на хосте. Прикладывайте его при обращении за помощью на GitHub." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "label": "Установить драйверы NVIDIA на хосте", + "href": "/docs/hardware/nvidia-host", + "tail": " — обязательный предварительный шаг для GPU NVIDIA перед их передачей в контейнер." + }, + { + "label": "Добавить GPU в ВМ (прямой проброс)", + "href": "/docs/hardware/gpu-vm-passthrough", + "tail": " — альтернативный вариант, если GPU требуется выделить исключительно одной виртуальной машине." + }, + { + "label": "Переключить режим GPU (ВМ ↔ LXC)", + "href": "/docs/hardware/switch-gpu-mode", + "tail": " — переключение одного и того же GPU между совместным использованием в LXC и прямой передачей в виртуальную машину." + }, + { + "label": "Команды для проброса GPU", + "href": "/docs/help-info/gpu-commands", + "tail": " — краткий справочник по связанным командам оболочки." + } + ] + } +} diff --git a/web/messages/ru/docs/hardware/install-coral-tpu-host.json b/web/messages/ru/docs/hardware/install-coral-tpu-host.json new file mode 100644 index 00000000..2e7e0e63 --- /dev/null +++ b/web/messages/ru/docs/hardware/install-coral-tpu-host.json @@ -0,0 +1,203 @@ +{ + "meta": { + "title": "Установка TPU Coral на хосте | Документация ProxMenux", + "description": "Установка драйверов TPU Google Coral на хосте Proxmox VE. ProxMenux автоматически определяет наличие M.2 / Mini-PCIe или USB Accelerator (либо обоих устройств) и выполняет только подходящие варианты установки: модули ядра gasket/apex через DKMS для PCIe, среду выполнения libedgetpu1-std для USB." + }, + "header": { + "title": "Установка TPU Coral на хосте", + "description": "Подготовьте хост Proxmox, чтобы впоследствии передать TPU Coral в контейнер LXC. ProxMenux автоматически определяет наличие карты M.2 / Mini-PCIe, USB Accelerator или обоих устройств и выполняет только подходящие варианты установки: сборку модулей ядра через DKMS для PCIe, установку среды выполнения Edge TPU от Google для USB.", + "section": "Оборудование: GPU и Coral-TPU" + }, + "intro": { + "title": "Что делает этот инструмент", + "body": "Единый установщик, учитывающий оборудование, выбирает способы установки в соответствии с обнаруженными устройствами. Для PCIe используются модули gasket и apex с DKMS; для последующих пересборок по-прежнему потребуются совместимые исходные коды драйверов и заголовочные файлы ядра. Для USB используется среда выполнения libedgetpu1-std в пользовательском пространстве. Если обнаружены устройства обоих типов, выполняются оба варианта установки. Среда выполнения USB должна быть доступна там, где работает приложение; если приложение работает только внутри LXC, наличие этой среды на хосте само по себе не обязательно." + }, + "which": { + "heading": "Какой у меня Coral?", + "body": "Два типа устройств Coral, которые можно подключить к хосту Proxmox, сильно различаются внешне, и установка на хосте для них тоже существенно отличается. Скрипт поддерживает оба типа, но перед запуском полезно выяснить, какой именно у вас:", + "headerForm": "Форм-фактор", + "headerDetect": "Обнаружение", + "headerInstall": "Тип установки", + "headerReboot": "Нужна перезагрузка?", + "pcieForm": "M.2 / Mini-PCIe", + "pcieFormSub": "(карты M.2 бывают с одним или двумя Edge TPU)", + "pcieDetect": "Идентификатор производителя PCI: 1ac1", + "pcieInstall": "Модуль ядра (gasket + apex) через DKMS", + "pcieReboot": "Да", + "usbForm": "USB Accelerator", + "usbFormSub": "(небольшой USB-модуль в пластиковом корпусе)", + "usbDetect": "USB 1a6e:089a (не запрограммирован) / 18d1:9302 (запрограммирован)", + "usbInstall": "Среда выполнения в пользовательском пространстве (libedgetpu1-std) из репозитория APT Google", + "usbReboot": "Нет" + }, + "prereqs": { + "title": "Перед началом", + "coral": "Для установки требуется подключённый Coral TPU (M.2, Mini-PCIe или USB). Если оборудование не обнаружено, скрипт всё же может предложить очистку или удаление существующей установки; установка компонентов для нового оборудования выполняться не будет.", + "coralCheck": "lspci -d 1ac1: ; lsusb | grep -E '1a6e:089a|18d1:9302'", + "internet": "Доступ к интернету на хосте — при установке для PCIe через DKMS клонируется репозиторий GitHub, а для USB добавляется репозиторий APT Google и загружается пакет libedgetpu1-std.", + "headers": "Заголовочные файлы ядра, доступные через APT. В Proxmox это означает, что пакет proxmox-headers-$(uname -r) должен быть доступен для установки. Он нужен только для варианта установки PCIe/M.2, но скрипт загружает его автоматически, поэтому вам не нужно делать это вручную.", + "reboot": "Запланируйте перезагрузку при использовании оборудования PCIe. Скрипт пытается загрузить собранные модули; запланированная перезагрузка также позволяет проверить, что они загружаются автоматически." + }, + "hostPrepTip": { + "title": "Это только подготовка хоста", + "body": "Эта процедура подготавливает хост для доступа к устройству; она не настраивает и не проверяет приложение. Чтобы использовать Coral в совместимом приложении, работающем в контейнере, например Frigate, перейдите к разделу Добавление Coral TPU в LXC." + }, + "running": { + "heading": "Запуск установщика", + "body": "Откройте ProxMenux на хосте и перейдите в раздел Оборудование: GPU и Coral-TPU → Install/Update Coral TPU на хосте.", + "imageAlt": "Пункт меню «Установить/обновить Coral TPU на хосте» в разделе «Оборудование: GPU и Coral-TPU»" + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Сначала определяется оборудование, поэтому план установки составляется с учётом вашей фактической конфигурации. До вашего подтверждения ничего не устанавливается." + }, + "walkthrough": { + "heading": "Пошаговый разбор", + "detect": { + "title": "Обнаружение оборудования", + "body": "Скрипт читает /sys/bus/pci/devices/*/vendor в поисках 0x1ac1 (Global Unichip Corp., производителя полупроводниковых чипов TPU Coral) и запускает lsusb для поиска идентификаторов USB Accelerator. У USB-устройства два идентификатора в зависимости от того, загружена ли уже его прошивка:", + "items": [ + "1a6e:089a — Global Unichip, незапрограммированное состояние (до первого обращения среды выполнения Edge TPU к устройству).", + "18d1:9302 — Google, запрограммированное состояние (после загрузки прошивки на устройство средой выполнения)." + ], + "outro": "Если Coral не обнаружен и установка отсутствует, скрипт завершает работу, показывая диалоговое окно с пояснением. При наличии уже установленных компонентов по-прежнему может открыться меню очистки или удаления." + }, + "prompt": { + "title": "Подтверждение перед установкой", + "body": "Перед началом установки в диалоговом окне отображаются обнаруженные устройства и компоненты, которые планируется установить. Отмените действие, чтобы пропустить установку. Необязательная очистка устаревших компонентов требует отдельного подтверждения на более раннем этапе.", + "imageAlt": "Диалоговое окно перед установкой с обнаруженным оборудованием Coral (количество устройств M.2/PCIe и USB) и списком шагов, которые выполнит установщик" + }, + "pcie": { + "title": "Вариант для PCIe — модули ядра gasket + apex через DKMS", + "body": "Выполняется только в том случае, если скрипт обнаружил Coral с интерфейсом PCIe / M.2. Этот вариант более ресурсоёмкий из двух, поскольку модуль ядра компилируется именно для текущего работающего ядра.", + "items": [ + "Очистка. Перед повторной сборкой удаляется любой установленный пакет gasket-dkms; если пакет находится в повреждённом состоянии, скрипт принудительно удаляет его вместе с файлами конфигурации.", + "Установка зависимостей для сборки: git, dkms, build-essential, proxmox-headers-$(uname -r)." + ], + "cloneIntro": "Клонирование исходного кода драйвера. Предпочтительно используется feranick/gasket-driver; если он недоступен, используется google/gasket-driver. Успешная сборка в любом случае зависит от совместимости с ядром. К резервному варианту от Google применяются следующие исправления в зависимости от версии:", + "kernelPatches": [ + "Для ядра версии 6.5 и новее исправление резервного варианта заменяет no_llseek на noop_llseek.", + "Ядро версии 6.13 и новее: MODULE_IMPORT_NS(DMA_BUF) требует строкового литерала" + ], + "afterItems": [ + "Разместите исходные файлы в /usr/src/gasket-1.0/, создайте dkms.conf и зарегистрируйте с помощью dkms add.", + "Сборка и установка: dkms build, затем dkms install. При сбое скрипт показывает последние 50 строк make.log, если этот файл доступен.", + "Создание группы apex и правил udev (/etc/udev/rules.d/99-coral-apex.rules), чтобы при следующей загрузке узлам устройств /dev/apex_* была назначена нужная группа.", + "Загрузка модулей: modprobe gasket + modprobe apex." + ], + "imageAlt": "Ход сборки DKMS и вывод загрузки модулей ядра gasket/apex" + }, + "usb": { + "title": "Вариант для USB — среда выполнения Edge TPU от Google", + "body": "Выполняется только при обнаружении USB Accelerator. Этот вариант гораздо проще:", + "items": [ + "Добавление GPG-ключа Google в /etc/apt/keyrings/coral-edgetpu.gpg.", + "Добавление репозитория APT в /etc/apt/sources.list.d/coral-edgetpu.list, причём signed-by= ограничивает проверку связкой ключей этого репозитория. Здесь используется однострочный синтаксис .list, а не синтаксис deb822 .sources.", + "Установите libedgetpu1-std — среду выполнения Edge TPU со стандартной производительностью.", + "Перезагрузите правила udev, чтобы правила из пакета применились к USB-устройству без его отключения и повторного подключения." + ], + "stdTitle": "Почему libedgetpu1-std, а не libedgetpu1-max?", + "stdBody": "Пакет max включает максимальную поддерживаемую тактовую частоту, повышая производительность, энергопотребление и тепловыделение по сравнению со стандартной средой выполнения. Перед переключением проверьте охлаждение и условия эксплуатации ускорителя. Пакеты взаимоисключающие; для установки альтернативного пакета используйте apt install libedgetpu1-max." + }, + "reboot": { + "title": "Предложение перезагрузки (только если выполнялась установка для PCIe)", + "body": "После установки для PCIe скрипт предлагает перезагрузку. Он уже попытался выполнить modprobe, но проверьте, что модули загружаются, а /dev/apex_0 появляется с группой apex. Плановая перезагрузка также позволяет проверить автоматическую загрузку. При установке только для USB перезагрузка хоста не предлагается.", + "imageAlt": "Итоговая сводка и предложение перезагрузки после установки для PCIe" + } + }, + "legacyCleanup": { + "heading": "Удаление устаревшего gasket-dkms на хостах, использующих только USB", + "intro": "Если на хосте не обнаружен PCIe / M.2 Coral, но сохранилась предыдущая установка gasket-dkms, ProxMenux отдельно определяет это состояние и предлагает необязательную очистку. Без подтверждения ничего не удаляется.", + "items": [ + "Если присутствует PCIe / M.2 Coral, такая очистка никогда не предлагается; вместо неё используется обычная процедура пересборки DKMS.", + "Очистка полностью удаляет gasket-dkms, включая его конфигурацию, удаляет устаревшие регистрации gasket DKMS и деревья исходного кода, а также устраняет незавершённые операции dpkg / APT.", + "Пакеты среды выполнения для USB libedgetpu1-std и libedgetpu1-max остаются нетронутыми, поэтому USB Coral сохраняет свою среду выполнения.", + "Прежде чем сообщить об успехе, скрипт проверяет, что устаревший пакет удалён, а система управления пакетами работает исправно." + ], + "warningTitle": "Сначала проверьте оборудование", + "warningBody": "Если PCIe / M.2 Coral может быть установлен, но не обнаруживается, отмените очистку и проверьте плату, слот и настройки прошивки, прежде чем продолжать." + }, + "reinstallUninstall": { + "heading": "Переустановка или удаление", + "intro": "Запуск установщика на хосте, где Coral уже установлен (PCIe через gasket-dkms, USB через libedgetpu1-std/libedgetpu1-max или оба варианта), больше не приводит сразу к новой установке с нуля. Вместо этого ProxMenux обнаруживает существующую установку и показывает меню действий, позволяя выбрать дальнейшие шаги.", + "imageAlt": "Меню действий Coral с двумя вариантами — переустановить / обновить драйверы Coral или удалить драйверы и конфигурацию Coral — отображается, когда установщик обнаруживает предыдущую установку Coral на хосте", + "imageCaption": "Меню действий появляется только в том случае, если уже установлен хотя бы один компонент Coral (запись DKMS gasket, пакет libedgetpu1-* или действующие узлы устройств /dev/apex_*).", + "reinstallHeading": "Переустановка / обновление", + "reinstallBody": "Продолжает обычную процедуру установки — это полезно после обновления ядра, если пересборка DKMS не произошла автоматически, или для обновления среды выполнения до более новой версии libedgetpu1-* из репозитория APT Google Coral. Сначала очищается предыдущее состояние DKMS, чтобы частично установленный пакет после неудачной предыдущей попытки не блокировал новую сборку.", + "uninstallHeading": "Удаление — что будет удалено", + "uninstallIntro": "Перед удалением требуется подтверждение. Приложения LXC, использующие /dev/apex_*, могут потерять доступ во время удаления или после следующей перезагрузки. Последовательность удаления:", + "uninstallItems": [ + "Пытается выгрузить apex и gasket; активные пользователи модулей могут помешать их выгрузке.", + "Удаляет все записи gasket/<version>, зарегистрированные в DKMS, чтобы модули не появились снова при следующей установке ядра.", + "Полностью удаляет пакеты apt gasket-dkms, libedgetpu1-std и libedgetpu1-max вместе с их конфигурацией, затем выполняет apt-get autoremove --purge.", + "Удаляет правило udev /etc/udev/rules.d/99-coral-apex.rules, созданное ProxMenux; восстанавливает значение группы по умолчанию в исходном файле 60-gasket-dkms.rules, если этот файл ещё существует.", + "Проверяет список пользователей, для которых apex является дополнительной группой. Если этот список пуст, предпринимает попытку удалить группу; в противном случае сохраняет apex и выводит список её участников. Это не полная проверка пользователей, для которых эта группа является основной.", + "Удаляет список репозиториев /etc/apt/sources.list.d/coral-edgetpu.list, устаревший coral-cloud.list и старые связки ключей с именами coral-edgetpu-archive-keyring.gpg. Текущая связка ключей по пути /etc/apt/keyrings/coral-edgetpu.gpg при выполнении этой последовательности не удаляется.", + "В конце предлагает перезагрузку только в том случае, если был установлен вариант PCIe — это наиболее надёжный способ выгрузить модули ядра. Если удаляется только вариант USB, перезагрузка не нужна." + ], + "lxcWarnTitle": "Контейнеры LXC с пробросом apex", + "lxcWarnBody": "Удаление компонентов на хосте может нарушить доступ контейнеров LXC к устройству. Запланируйте техническое обслуживание, если совместимые приложения, такие как Frigate, зависят от этого устройства Coral." + }, + "updates": { + "heading": "Уведомления об обновлениях", + "intro": "Теперь ProxMenux отслеживает установленные компоненты Coral в своём реестре управляемых установок. Оба варианта отслеживаются независимо: хост с устройствами Coral как M.2, так и USB получает два потока обновлений, каждый из своего исходного источника:", + "headerVariant": "Вариант", + "headerTracked": "Отслеживаемая версия", + "headerUpstream": "Исходный источник", + "pcieVariant": "PCIe / M.2", + "pcieTracked": "В первую очередь используется тег выпуска, записанный при успешной установке, затем — версия исправного пакета gasket-dkms, а в качестве запасного варианта — версия модуля DKMS. Сама по себе версия DKMS не определяет уровень исправлений форка.", + "pcieUpstream": "Последний тег feranick/gasket-driver на GitHub (кеш на 7 дней, сравнение номеров сборок)", + "usbVariant": "USB", + "usbTracked": "Версия пакета apt libedgetpu1-std или libedgetpu1-max", + "usbUpstream": "Локальная версия-кандидат apt-cache policy (репозиторий apt Google Coral)", + "outro": "При обнаружении более новой версии Monitor отправляет уведомление coral_driver_update_available по каждому включённому каналу (Telegram, Discord, Gotify, ntfy, электронная почта, вебхук). Уведомление ссылается на тот же пункт установщика: чтобы применить обновление, выберите Переустановка / обновление в меню действий выше.", + "antiTitle": "Защита от повторных уведомлений по замыслу", + "antiBody": "Одно уведомление на вариант и только при фактическом изменении версии в исходном источнике, а не при каждой проверке раз в 24 часа. Если вы проигнорируете обновление, повторного уведомления не будет до выхода более нового выпуска.", + "rebootTitle": "Обновления PCIe: запланируйте перезагрузку", + "rebootBody": "Чтобы изменения вступили в силу, пересобранный модуль PCIe необходимо загрузить; плановая перезагрузка также позволяет проверить его автоматическую загрузку. Обновление библиотеки USB в пользовательском пространстве не требует перезагрузки хоста, но приложения, использующие старую библиотеку, может потребоваться перезапустить." + }, + "manual": { + "heading": "Эквивалентные действия вручную", + "intro": "Если вы хотите узнать, что происходит внутри, или повторить отдельный шаг вручную, ниже приведены команды для каждого варианта.", + "pcieHeading": "PCIe / M.2 (gasket + apex через DKMS)", + "usbHeading": "USB (среда выполнения libedgetpu)" + }, + "verification": { + "heading": "Проверка", + "pcieHeading": "PCIe / M.2", + "usbHeading": "USB" + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "dkmsFailTitle": "Сбой сборки DKMS после обновления ядра", + "dkmsFailBody": "Одна из возможных причин — отсутствие заголовочных файлов. Проверьте proxmox-headers-$(uname -r) с помощью dpkg -l proxmox-headers-$(uname -r). Если заголовочные файлы отсутствуют, установите их, затем проверьте журнал сборки на наличие несовместимости исходного кода с ядром. Повторный запуск вызывает cleanup_broken_gasket_dkms, но очистка не гарантирует совместимость со всеми ядрами.", + "apexMissTitle": "/dev/apex_0 отсутствует после перезагрузки", + "apexMissBody": "Проверьте, обнаруживается ли устройство PCIe и соответствует ли модуль работающему ядру. Попробуйте modprobe apex и изучите dmesg | grep -iE \"apex|gasket\". Сбои сборки, проблемы с загрузкой модуля или настройки слота и прошивки могут препятствовать созданию устройства.", + "lxcMissTitle": "/dev/apex_0 виден, но LXC его не видит", + "lxcMissBody": "Само по себе наличие узла устройства на хосте не доказывает, что устройство работает. Проверьте доступ на хосте, затем монтирование LXC, правила cgroup и права доступа по числовым идентификаторам пользователя и группы. См. Добавление TPU Coral в LXC.", + "usbUnreachTitle": "USB Accelerator обнаружен, но Frigate / TFLite не может получить к нему доступ", + "usbUnreachBody": "Проверьте правила, предоставляемые libedgetpu1-std, и права доступа с помощью ls -l /dev/bus/usb/*/*. Сопоставленным пользователю и группе приложения необходимы права на чтение и запись; принадлежность устройства пользователю root сама по себе не является ошибкой. После изменения правил выполните udevadm control --reload-rules && udevadm trigger и при необходимости переподключите устройство.", + "logTitle": "Журнал установки", + "logBody": "При каждом запуске выполняется запись в /tmp/coral_install.log на хосте. Если сборка DKMS завершается с ошибкой, скрипт также добавляет в этот журнал последние 50 строк из /var/lib/dkms/gasket/1.0/build/make.log — приложите журнал при обращении за помощью на GitHub." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "label": "Добавить Coral TPU в LXC", + "href": "/docs/hardware/coral-tpu-lxc", + "tail": " — передача устройства Coral с хоста в контейнер (Frigate, CodeProject.AI…)." + }, + { + "label": "Установить драйверы NVIDIA на хосте", + "href": "/docs/hardware/nvidia-host", + "tail": " — аналогичный подход для графических процессоров NVIDIA." + }, + { + "label": "ProxMenux Monitor — вкладка «Оборудование»", + "href": "/docs/monitor/dashboard/hardware", + "tail": " — панель Coral показывает драйвер, модули, узлы устройств и состояние среды выполнения, а также температуру, если её предоставляет поддерживаемый датчик." + } + ] + } +} diff --git a/web/messages/ru/docs/hardware/nvidia-host.json b/web/messages/ru/docs/hardware/nvidia-host.json new file mode 100644 index 00000000..aebbb1f4 --- /dev/null +++ b/web/messages/ru/docs/hardware/nvidia-host.json @@ -0,0 +1,175 @@ +{ + "meta": { + "title": "Установка драйверов NVIDIA на хосте | Документация ProxMenux", + "description": "Установка и настройка проприетарных драйверов NVIDIA на хосте Proxmox VE с помощью ProxMenux. Рассматриваются фильтрация по поддержке GPU, проверка DKMS, служба сохранения состояния драйвера, необязательный патч NVENC и автоматическое распространение драйвера в контейнеры LXC." + }, + "header": { + "title": "Установка драйверов NVIDIA на хосте", + "description": "Установите проприетарный драйвер NVIDIA на хосте Proxmox VE с помощью ProxMenux. Установщик отбирает поддерживаемые ветки по PCI ID графического процессора, проверяет выбранный выпуск через DKMS, управляет nouveau, устанавливает службу поддержания состояния и может распространять драйвер в контейнеры LXC с пробросом NVIDIA.", + "section": "Оборудование: GPU и Coral-TPU" + }, + "intro": { + "title": "Что делает этот инструмент", + "body": "ProxMenux обнаруживает графический процессор и предлагает поддерживаемые ветки NVIDIA, в которых указан его PCI ID. Он добавляет nouveau в чёрный список, загружает официальный установщик .run, использует DKMS, устанавливает nvidia-persistenced, правила udev и NVIDIA Container Toolkit, а также предлагает необязательный патч NVENC. Проверки сборки оценивают совместимость с работающим ядром; успешная компиляция не гарантирует работу каждого приложения. Для существующих контейнеров LXC с NVIDIA предлагается обновление библиотек пользовательского пространства с согласованием версий, кроме Arch." + }, + "who": { + "heading": "Для кого это предназначено?", + "body": "Для приложений обработки видео или вычислений с ускорением на GPU, таких как Plex, Jellyfin, Frigate, Immich или Stable Diffusion, работающих внутри LXC, сначала установите поддерживаемый драйвер NVIDIA на хост Proxmox. Для прямой передачи GPU в ВМ используется отдельная процедура VFIO." + }, + "prereqs": { + "title": "Перед началом", + "gpu": "Графический процессор NVIDIA, физически установленный на хосте. Скрипт обнаруживает его автоматически; графические процессоры AMD и Intel здесь не поддерживаются.", + "gpuCheck": "lspci | grep -i nvidia", + "notVm": "Графический процессор в данный момент не передан в ВМ через проброс VFIO. Если он передан в ВМ, скрипт откажется устанавливать драйвер на хосте, чтобы не нарушить конфигурацию проброса.", + "internet": "Доступ к интернету на хосте. Установщик загружает драйвер с download.nvidia.com и при необходимости клонирует nvidia-persistenced и nvidia-patch с GitHub.", + "space": "Предусмотрите место на диске в /opt/nvidia для установщика .run и оперативную память для компиляции. При обновлении LXC в системах, отличных от Arch, проверяется наличие 1500 MiB свободного места; если объём оперативной памяти меньше 2048 MiB, может быть запрошено временное увеличение лимита до этого значения с последующим восстановлением прежнего лимита. Учитывайте, что появится запрос на перезагрузку хоста." + }, + "vmWarn": { + "title": "Графический процессор назначен виртуальной машине? Остановитесь здесь", + "body": "Если какое-либо устройство NVIDIA привязано к vfio-pci, этот установщик прекращает работу, даже если виртуальная машина остановлена. Зарезервированное устройство не обязательно активно используется виртуальной машиной. Спланируйте возврат к использованию драйвера хоста и удалите устаревшие назначения устройств виртуальным машинам и VFIO перед перезагрузкой и установкой." + }, + "running": { + "heading": "Запуск установщика", + "body": "Откройте ProxMenux на хосте и перейдите в Hardware Graphics → NVIDIA GPU Driver Installer. Содержимое экрана зависит от того, установлен ли уже драйвер.", + "imageAlt": "Меню графического оборудования с выделенным пунктом установки драйвера NVIDIA GPU" + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "В ходе выполнения обнаруживаются устройства, выбирается версия и выполняется установка. До отображения сводки может быть выполнена отдельно подтверждённая очистка устаревших настроек VFIO. Подготовка репозиториев и заголовочных файлов, а также загрузка установщика тоже выполняются до замены существующего драйвера, поэтому единого окончательного подтверждения, после которого начинаются все изменения, нет." + }, + "walkthrough": { + "detect": { + "title": "Обнаружение GPU и сводка", + "body1": "Скрипт сканирует шину PCI и показывает все обнаруженные видеоконтроллеры NVIDIA, текущее состояние драйвера (или \"Драйвер NVIDIA не установлен\"), а также все контейнеры LXC, в которых уже настроен проброс NVIDIA, с указанием версии драйвера внутри каждого из них.", + "body2": "Перед продолжением проверьте обнаруженный GPU и версии драйверов на хосте и в контейнерах. Если выбор оказался неожиданным, отмените операцию на экране сводки; любая ранее отдельно подтверждённая очистка VFIO к этому моменту уже выполнена.", + "imageAlt": "Сводка перед установкой с обнаруженными GPU, текущим состоянием драйвера и контейнерами LXC с пробросом NVIDIA" + }, + "version": { + "title": "Выбор версии драйвера", + "body1": "ProxMenux получает список доступных драйверов NVIDIA и оставляет для выбора только версии, которые содержат PCI Device ID вашего графического процессора в таблице поддерживаемых чипов соответствующей ветки на nvidia.com. Дополнительные эвристические проверки исключают сборки для разработчиков и бета-версии из CDN, которые иначе оказались бы в начале списка. Первый пункт помечен как <version> — Рекомендуется: предпочтение отдаётся последней версии из ветки драйвера, уже установленного на хосте (обновление с исправлениями ошибок в рамках той же ветки); если это невозможно — последней версии из текущей ветки Production Branch, а иначе — поддерживаемой версии с наибольшим номером.", + "body2": "Если установленный драйвер отмечен как пропатченный для NVENC с помощью keylase, список выбора ограничивается версиями из таблицы патчей. Процедура Переустановка / обновление по-прежнему включает подтверждение и запросы на применение патча; проверьте итоговый результат его применения.", + "whyTitle": "Как проверяется совместимость с ядром", + "whyBody": "Список формируется на основе поддерживаемых веток и поддержки идентификаторов GPU на шине PCI, а не фиксированной матрицы совместимости ядер и драйверов. Перед сборкой выбранная версия проверяется на совместимость с работающим ядром. При подтверждённом сбое сборки происходит возврат к выбору версии; если предварительная проверка недоступна, может появиться предупреждение, после которого выполнение продолжится. Проверки при окончательной установке и во время работы по-прежнему важны.", + "imageAlt": "Выбор версии драйвера с ветками NVIDIA, поддерживающими GPU, и рекомендуемым вариантом в начале списка" + }, + "uninstall": { + "title": "Полное удаление (только при переустановке)", + "body": "После загрузки и проверки выбранного установщика существующий драйвер удаляется перед заменой. ProxMenux останавливает службы NVIDIA, выгружает модули, удаляет записи DKMS и полностью удаляет пакеты nvidia-* / libnvidia-* / cuda-* вместе с их конфигурацией. Это также выполняется при подтверждённой переустановке той же версии." + }, + "prepare": { + "title": "Подготовка системы", + "body": "Во время подготовки скрипт:", + "items": [ + "Проверяет репозитории хоста до удаления или установки каких-либо компонентов: если на хосте нет активной подписки и используется только репозиторий Enterprise, запрашивает подтверждение перехода на репозиторий no-subscription; при отказе установка прекращается.", + "Устанавливает pve-headers-$(uname -r) (или proxmox-headers-$(uname -r)), build-essential и dkms.", + "Создаёт /etc/modprobe.d/proxmenux-nouveau-blacklist.conf, принадлежащий ProxMenux, с blacklist nouveau и options nouveau modeset=0, фиксирует, была ли добавлена сопутствующая строка в blacklist.conf, и пытается немедленно выгрузить модуль.", + "Записывает /etc/modules-load.d/nvidia-vfio.conf с nvidia и nvidia_uvm, чтобы модули загружались на раннем этапе загрузки системы." + ] + }, + "download": { + "title": "Загрузка и запуск установщика NVIDIA", + "body": "Загружает NVIDIA-Linux-x86_64-<version>.run в /opt/nvidia, проверяя размер файла и тип исполняемого файла. Это проверки формата файла, а не криптографическая проверка подписи. Установщик регистрирует DKMS для пересборки при изменениях ядра; при этом совместимость исходного кода и ядра по-прежнему необходима.", + "imageAlt": "Ход загрузки, после которой установщик NVIDIA выполняет сборку DKMS" + }, + "persist": { + "title": "Служба сохранения состояния и правила udev", + "body": "Затем ProxMenux устанавливает nvidia-persistenced и записывает правила udev в /etc/udev/rules.d/70-nvidia.rules, чтобы узлы устройств /dev/nvidia* надёжно создавались при загрузке. Без них при запуске контейнера возможна гонка при пробросе LXC, из-за которой контейнер не сможет обнаружить GPU." + }, + "nvenc": { + "title": "Необязательно: применить патч NVENC", + "body": "Ограничения количества сеансов NVENC зависят от GPU и драйвера. Разработанный сообществом патч keylase/nvidia-patch позволяет снять ограничение драйвера на количество сеансов для поддерживаемых версий. Выбирайте Да, только если вам нужно это изменение параметров кодирования и ваша версия поддерживается. Это не ускоряет декодирование и не устраняет ограничения аппаратных возможностей.", + "supportTitle": "Проверьте поддержку патча для вашего драйвера", + "supportBody": "Проверьте наличие именно вашей версии в таблице поддержки патча. Если её нет, оставьте драйвер без патча или выберите другую сопровождаемую версию, которая поддерживает ваш GPU и ядро, а также совместима с патчем; не выбирайте более старую версию только потому, что она находится рядом в списке." + }, + "propagate": { + "title": "Необязательно: установить драйвер в контейнеры LXC", + "body1": "Если на обзорном экране были перечислены контейнеры с пробросом NVIDIA, теперь ProxMenux предлагает обновить библиотеки пользовательского пространства в каждом из них до версии на хосте. Версии модуля ядра на хосте и компонентов пользовательского пространства в контейнере должны в точности совпадать — иначе nvidia-smi внутри контейнера завершится с ошибкой «несоответствие версий».", + "body2": "Контейнеры Debian / Ubuntu и другие контейнеры на базе glibc получают извлечённый установщик .run с --no-kernel-modules --no-dkms --no-install-compat32-libs; объём выделенной оперативной памяти может временно увеличиться до 2 GiB, после чего возвращается к исходному значению. Arch, Manjaro и EndeavourOS используют pacman -Syu nvidia-utils из настроенных репозиториев без привязки к версии на хосте: проверьте результат. Alpine получает извлечённое содержимое .run через pct push, устанавливает gcompat и binutils с помощью apk и создаёт ссылки SONAME с помощью readelf. Проверьте работу во время выполнения; слои совместимости не гарантируют, что все библиотеки драйвера будут работать с musl.", + "imageAlt": "Диалог со списком контейнеров LXC с пробросом NVIDIA и текущей версией драйвера, с вариантами «Да/Нет» для обновления всех перечисленных контейнеров" + }, + "reboot": { + "title": "Перезагрузка", + "body": "После установки драйвера скрипт пересобирает initramfs для всех ядер; на последнем шаге он предлагает перезагрузку. Запланируйте эту перезагрузку, чтобы после нового запуска системы проверить сохранённые настройки модуля и nouveau, даже если новый драйвер уже отвечает до перезагрузки." + } + }, + "reinstallUninstall": { + "heading": "Переустановка или удаление", + "intro": "Если nvidia загружен и nvidia-smi возвращает версию, появляется меню действий. Так определяется наличие активного драйвера для отображения меню; файлы драйвера могут быть установлены, даже если модуль не загружен.", + "imageAlt": "Меню действий NVIDIA, предлагаемое при уже установленном драйвере, с двумя вариантами: переустановить / обновить драйвер или полностью удалить драйвер NVIDIA", + "imageCaption": "Меню действий появляется, только если на хосте в данный момент активен драйвер NVIDIA.", + "reinstallHeading": "Переустановка / обновление", + "reinstallBody": "Продолжает процесс: выбор версии, подготовка репозиториев и заголовочных файлов, загрузка и проверка перед сборкой, после чего удаляет старый драйвер и устанавливает новый. Можно обновить драйвер в пределах сопровождаемой ветки или выбрать другую поддерживаемую ветку. После этого снова появляются запросы, связанные с библиотеками LXC и патчем NVENC.", + "uninstallHeading": "Удаление — что будет удалено", + "uninstallIntro": "После подтверждения в диалоге «Да/Нет» удаляются следующие компоненты драйвера:", + "uninstallItems": [ + "Останавливает и отключает nvidia-persistenced и nvidia-powerd, пытается выгрузить nvidia_uvm, nvidia_drm, nvidia_modeset и nvidia, затем запускает nvidia-uninstall --silent для удаления драйвера, установленного с помощью .run. Это затрагивает рабочие нагрузки LXC, зависящие от NVIDIA; активные клиенты могут препятствовать выгрузке.", + "Выполняет apt purge для nvidia-*, libnvidia-*, cuda-* и libcudnn*, удаляет дерево исходного кода DKMS и папки nvidia-persistenced и nvidia-patch внутри /opt/nvidia.", + "Удаляет конфигурацию modules-load (/etc/modules-load.d/nvidia-vfio.conf) и записи чёрного списка nouveau, принадлежащие ProxMenux. Устаревшие двухстрочные файлы чёрного списка ProxMenux также переносятся в новый формат и удаляются; изменённые или не относящиеся к ним файлы администратора сохраняются.", + "Удаляет правила udev (/etc/udev/rules.d/70-nvidia.rules) и сбрасывает состояние патча NVENC (поле в реестре управляемых установок ProxMenux получает значение removed — отдельного файла для удаления нет).", + "Пересобирает initramfs для всех ядер, запускает proxmox-boot-tool refresh на хостах с systemd-boot и предлагает выполнить перезагрузку для завершения." + ], + "lxcWarnTitle": "Контейнеры LXC с пробросом NVIDIA", + "lxcWarnBody": "Удаление драйвера на хосте прерывает работу нагрузок LXC, зависящих от NVIDIA, даже если их библиотеки пользовательского пространства остаются установленными. Запланируйте техническое обслуживание для Frigate, Plex, Jellyfin, Ollama и других приложений, использующих GPU." + }, + "updates": { + "heading": "Уведомления об обновлениях", + "body": "Установленный драйвер NVIDIA учитывается в реестре управляемых установок ProxMenux. При запуске и каждые 24 часа Monitor сравнивает список выпусков разработчика по адресу download.nvidia.com/XFree86/Linux-x86_64/ с версией, которую сообщает nvidia-smi, и уведомляет только о наличии более нового корректирующего выпуска в установленной ветке.", + "kindsHeading": "Сообщение об обновлении", + "kindsItems": [ + "Корректирующий выпуск в той же ветке. Более новый выпуск в текущей ветке драйвера (например, установлена версия 580.65.06 → доступна 580.105.08). Monitor не делает выводов о совместимости с ядром для других веток." + ], + "antiTitle": "Защита от повторных уведомлений по замыслу", + "antiBody": "Для каждой новой версии, выпущенной разработчиком, отправляется одно уведомление, а не при каждой проверке раз в 24 часа. Если в установленной ветке нет более нового выпуска, уведомления не отправляются.", + "applyTitle": "Установка обновления", + "applyBody": "Monitor сообщает об обновлениях, но не устанавливает их автоматически. Откройте установщик и выберите Переустановка / обновление, укажите поддерживаемую версию и выполните этапы сборки и установки. В конце будет предложено выполнить перезагрузку; запланируйте её и после перезапуска проверьте хост и библиотеки LXC." + }, + "verify": { + "heading": "Проверка установки", + "intro": "После перезапуска хоста войдите через SSH или оболочку Proxmox и выполните:", + "after": "Убедитесь, что отображаются ваш GPU и ожидаемая версия драйвера. В списке уже могут присутствовать процессы, если службы хоста или автоматически запускаемые контейнеры используют GPU. Затем проверьте службу сохранения состояния драйвера:", + "imageAlt": "Вывод nvidia-smi на хосте с обнаруженным GPU и установленной версией драйвера" + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "smiFailTitle": "`nvidia-smi` сообщает «NVIDIA-SMI has failed»", + "smiFailBody": "Возможные причины: GPU занят драйвером nouveau, заголовочные файлы ядра отсутствуют или не соответствуют его версии, исходный код драйвера несовместим или возникли другие ошибки загрузки модуля. Проверьте lsmod | grep nouveau и dmesg | grep -i nvidia, а также журналы установщика и DKMS. Если нужно исправить настройки nouveau, проверьте /etc/modprobe.d/proxmenux-nouveau-blacklist.conf, прежде чем пересобирать с помощью update-initramfs -u -k all и перезагружать систему. Не считайте, что любая ошибка сборки вызвана несоответствием заголовочных файлов ядра.", + "lxcMissTitle": "Контейнер LXC не видит GPU после обновления хоста", + "lxcMissBody": "Перед переустановкой проверьте узлы устройств на хосте, права доступа LXC и версию библиотек драйвера. При несовпадении версий может потребоваться установить соответствующий драйвер пользовательского пространства внутри LXC способом, поддерживаемым дистрибутивом; в системах с glibc установщик использует --no-kernel-modules. Переустановка библиотек не исправит отсутствие подключённых устройств или проблемы с правами доступа.", + "logTitle": "Проверьте журнал установки", + "logBody": "При каждой установке журнал записывается в /tmp/nvidia_install.log. Если сбой произошёл без явного сообщения об ошибке, в этом файле можно найти полный вывод (загрузки, сборку DKMS, установку служб). Прикладывайте его к сообщениям о проблемах на GitHub." + }, + "manualSteps": { + "heading": "Ищете инструкции по ручной установке?", + "body": "Справочные сведения о ручной установке, в том числе о wget и ./NVIDIA-Linux-...run, приведены в Guides → NVIDIA. Этот материал объясняет назначение компонентов, но не воспроизводит в точности действия автоматического установщика. Используйте поддерживаемый процесс ProxMenux, который включает фильтрацию GPU, проверки сборки, обновления LXC и проверки VFIO." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "label": "Добавить GPU в ВМ (прямой проброс)", + "href": "/docs/hardware/gpu-vm-passthrough", + "tail": " — передать GPU NVIDIA в виртуальную машину (модель привязки отличается от LXC)." + }, + { + "label": "Добавить GPU в LXC", + "href": "/docs/hardware/igpu-acceleration-lxc", + "tail": " — предоставить одному или нескольким контейнерам совместный доступ к GPU NVIDIA." + }, + { + "label": "Переключить режим GPU (ВМ ↔ LXC)", + "href": "/docs/hardware/switch-gpu-mode", + "tail": " — переключение одного и того же GPU между режимами проброса в VM и совместного использования (LXC)." + }, + { + "label": "ProxMenux Monitor — вкладка «Оборудование»", + "href": "/docs/monitor/dashboard/hardware", + "tail": " — модальное окно GPU, позволяющее запустить этот установщик одним щелчком, а после установки — отслеживать состояние в реальном времени." + }, + { + "label": "Команды для проброса GPU", + "href": "/docs/help-info/gpu-commands", + "tail": " — справочник по lspci / dmesg / IOMMU / nvidia-smi." + } + ] + } +} diff --git a/web/messages/ru/docs/hardware/switch-gpu-mode.json b/web/messages/ru/docs/hardware/switch-gpu-mode.json new file mode 100644 index 00000000..bb4fed85 --- /dev/null +++ b/web/messages/ru/docs/hardware/switch-gpu-mode.json @@ -0,0 +1,172 @@ +{ + "meta": { + "title": "Переключение режима GPU (VM ↔ LXC) | Документация ProxMenux", + "description": "Переключение уже назначенного GPU между режимом VM (vfio-pci) и режимом LXC (родной драйвер) на хосте Proxmox. ProxMenux определяет текущую привязку, предлагает выбрать политику разрешения конфликтов для каждой затронутой рабочей нагрузки, удаляет оставшиеся привязки аудиоустройств и пересобирает initramfs только при необходимости." + }, + "header": { + "title": "Переключить режим GPU (ВМ ↔ LXC)", + "description": "Переключение назначенного GPU между пробросом в VM и совместным использованием в LXC. ProxMenux управляет привязкой к драйверу хоста, конфигурацией VFIO, настройками модулей и initramfs и спрашивает, как поступить с затронутыми гостевыми системами. Внимательно проверьте выбранные действия, а после перезагрузки — итоговую конфигурацию.", + "section": "Оборудование: GPU и Coral-TPU" + }, + "intro": { + "title": "Что делает этот инструмент", + "body": "GPU на хосте Proxmox работает в одном из двух режимов: он привязан к vfio-pci (зарезервирован для VM) или к своему родному драйверу (i915 / amdgpu / nvidia), чтобы хост и контейнеры LXC могли использовать его совместно. Переключение режима GPU позволяет переключаться между этими режимами без ручного редактирования vfio.conf, управления чёрными списками или необходимости помнить, какие строки VM / LXC ссылаются на эту карту. Функция также явно предупреждает, если какая-либо рабочая нагрузка всё ещё ссылается на GPU, чтобы VM не оказалась неработоспособной при загрузке." + }, + "graphics": { + "lxcTitle": "Готов к использованию в контейнерах LXC", + "lxcDesc": "Родной драйвер активен", + "vmTitle": "Готов к пробросу в VM", + "vmDesc": "Драйвер VFIO-PCI активен" + }, + "when": { + "heading": "Когда следует использовать эту функцию?", + "intro": "Используйте этот скрипт, если GPU уже назначен и вы хотите изменить его назначение:", + "headerSituation": "Ситуация", + "headerUse": "Использовать эту страницу?", + "rows": [ + { + "situation": "GPU свободен — ещё ни разу не назначался. Нужно назначить его VM.", + "useRich": "Нет — используйте Добавление GPU в VM" + }, + { + "situation": "GPU свободен — ещё ни разу не назначался. Нужно назначить его LXC.", + "useRich": "Нет — используйте Добавление GPU в LXC" + }, + { + "situationRich": "GPU используется в VM через vfio-pci, а нужно использовать его в LXC.", + "useRich": "Да — эту страницу." + }, + { + "situation": "GPU совместно используется в LXC, а нужно выделить его исключительно для VM.", + "useRich": "Да — эту страницу." + }, + { + "situation": "Нужно просто полностью отвязать GPU от всего.", + "use": "Режим LXC возвращает GPU под управление драйвера хоста; политика разрешения конфликтов с VM может удалить записи hostpci, но записи устройств LXC необходимо удалить отдельно. При этом GPU не остаётся отвязанным от всех драйверов." + } + ] + }, + "prereqs": { + "title": "Перед началом", + "assigned": "GPU уже должен быть назначен — либо виртуальной машине через VFIO, либо подключён как минимум к одному LXC. Если вы ещё не назначили его, начните с пункта Add GPU to VM / LXC.", + "iommu": "IOMMU должен быть включён на хосте при переключении в режим VM. Важны как настройки прошивки, так и поддержка со стороны ядра. Если в параметрах запущенного ядра отсутствует intel_iommu=on или amd_iommu=on, скрипт добавляет недостающий параметр вместе с iommu=pt в /etc/kernel/cmdline (маркер корневой системы ZFS) или /etc/default/grub, затем выполняет proxmox-boot-tool refresh или update-grub. Обратите внимание на все предупреждения и перезагрузите систему, когда появится соответствующий запрос.", + "iommuCheck": "dmesg | grep -i 'IOMMU enabled' | head -1", + "reboot": "Запланируйте перезагрузку. Постоянные изменения драйверов и параметров загрузки могут потребовать пересборки initramfs и перезагрузки. В конце скрипт предложит перезагрузить систему.", + "knowList": "Выясните, какие VM / LXC используют GPU. Скрипт найдёт их и спросит, что делать с каждым из них, но работа пойдёт быстрее, если вы заранее знаете этот список." + }, + "blocklist": { + "title": "Не все GPU можно безопасно пробрасывать в виртуальную машину", + "body": "В соответствии со своей политикой совместимости скрипт блокирует режим VM для устройств с идентификаторами 8086:5a84 и 8086:5a85. Если выбранный GPU соответствует одному из них, скрипт прекращает переключение в режим VM и возвращается к выбору GPU, а если GPU только один — завершает работу. Этот список блокировки не препятствует переключению в режим LXC; при этом могут действовать другие проверки." + }, + "running": { + "heading": "Запуск скрипта", + "body": "Откройте ProxMenux на хосте и перейдите в раздел Оборудование: GPU и Coral-TPU → Switch GPU Mode (VM ↔ LXC).", + "imageAlt": "Пункт меню «Переключить режим GPU (VM ↔ LXC)» в разделе «Оборудование: GPU и Coral-TPU»" + }, + "howRuns": { + "heading": "Как работает скрипт", + "body": "Выбранные GPU и направление переключения проверяются перед основным переключением. Отдельная очистка устаревших привязок VFIO может запросить подтверждение раньше, а для затронутых гостевых систем предусмотрены отдельные запросы по устранению конфликтов. Читайте каждый запрос подтверждения: единого итогового подтверждения, охватывающего все возможные изменения, нет." + }, + "walkthrough": { + "heading": "Пошаговый разбор", + "detect": { + "title": "Обнаружение GPU и их текущих привязок", + "body": "Скрипт сканирует все контроллеры VGA / 3D / Display на хосте и проверяет /sys/bus/pci/devices/*/driver, чтобы определить текущий драйвер ядра. Для каждого GPU отображаются название, слот PCI и текущая привязка к драйверу — так вы сразу увидите, в каком режиме он работает.", + "imageAlt": "Список выбора GPU: для каждого обнаруженного GPU указаны текущий драйвер (vfio-pci / nvidia / amdgpu / i915) и слот PCI" + }, + "pickGpu": { + "title": "Выберите GPU для переключения", + "body": "Один GPU → выбирается автоматически. Несколько GPU → список с флажками. Можно отметить несколько, но все они должны находиться в одном и том же текущем режиме — иначе скрипт не сможет выбрать целевой режим для всей группы и покажет предупреждение о смешанных режимах с просьбой сократить выбор.", + "tipTitle": "Групповое переключение", + "tipBody": "Это удобно при перенастройке хоста: «Все три GPU NVIDIA переводим в режим VM, затем возвращаем iGPU в режим LXC». Два запуска, каждый с единым целевым режимом, — гораздо проще, чем переключать по одному." + }, + "direction": { + "title": "Проверьте предложенное направление", + "intro": "В зависимости от текущего режима скрипт предлагает переключиться в противоположный:", + "items": [ + "VM → LXC: отвязать GPU от vfio-pci и вернуть управление штатному драйверу (nvidia, amdgpu, i915), чтобы контейнеры LXC могли совместно использовать карту. Для NVIDIA запись, относящаяся к конкретному BDF, удаляется из /etc/udev/rules.d/10-proxmenux-vfio-bind.rules, чтобы после перезагрузки модуль nvidia снова получил управление GPU.", + "LXC → VM: подготовить передачу управления vfio-pci. Для AMD / Intel используются блокировка штатного драйвера и options vfio-pci ids=…. Для NVIDIA nvidia блокируется глобально только в том случае, если все GPU NVIDIA на хосте находятся под управлением VFIO; в противном случае правила для отдельных BDF задают driver_override=vfio-pci для затронутых устройств группы IOMMU, а GPU NVIDIA вне этих групп сохраняют nvidia. Перед переключением проверьте каждое устройство в группе." + ], + "outro": "Подтвердите направление или отмените переключение." + }, + "conflict": { + "title": "Правила разрешения конфликтов для каждой затронутой гостевой системы", + "body": "Скрипт проверяет /etc/pve/lxc/*.conf на наличие ссылок на устройства GPU по семейству драйверов, а /etc/pve/qemu-server/*.conf — на наличие назначений PCI. Обнаружение LXC не обеспечивает точного сопоставления BDF для каждой карты. Проверьте обнаруженные гостевые системы и выберите, как поступить с каждой из них:", + "headerPolicy": "Политика", + "headerEffect": "Результат", + "headerWhen": "Когда выбирать", + "keepPolicy": "Сохранить конфигурацию, отключить автозапуск", + "keepEffect": "pct set CTID -onboot 0 (или qm set VMID -onboot 0). Записи GPU остаются в конфигурации.", + "keepWhen": "Вы планируете вернуться к этой ВМ/LXC, когда GPU снова будет работать в исходном режиме. Безопасный вариант по умолчанию.", + "removePolicy": "Удалить GPU из конфигурации", + "removeEffect": "Удаляет обнаруженные записи hostpci / dev и поддерживаемые ссылки на устройства в устаревшем формате.", + "removeWhen": "Выберите этот вариант, если гостевая система должна работать без GPU. Сначала проверьте настройки приложения: возможность перехода на CPU зависит от приложения, а удаление устройства не приводит к автоматической перенастройке приложения.", + "imageAlt": "Диалог выбора политики разрешения конфликтов для каждой ВМ / каждого LXC при переключении GPU, который уже назначен гостевой системе" + }, + "audio": { + "title": "Удаление оставшихся аудиоустройств (только при выходе из режима ВМ)", + "body1": "Многие дискретные GPU NVIDIA / AMD предоставляют аудиоустройство HDMI через функцию .1 того же слота; также могли быть назначены дополнительные аудиоустройства. После удаления GPU в ВМ могут остаться устаревшие записи аудиоустройств hostpci. Проверьте, какие устройства должны остаться назначенными.", + "body2": "Скрипт обнаруживает их по точному совпадению BDF, без ложных совпадений по подстроке, и показывает список с флажками для корректного удаления. Он также удаляет их идентификаторы vendor:device из /etc/modprobe.d/vfio.conf, но только если ни одна другая ВМ больше не использует эти идентификаторы аудиоустройств." + }, + "apply": { + "title": "Применение изменений на хосте и в гостевых системах", + "body": "После подтверждения скрипт записывает изменения на стороне хоста: vfio.conf, чёрный список, модули, а для NVIDIA — правило udev для конкретного BDF в /etc/udev/rules.d/10-proxmenux-vfio-bind.rules и состояние BDF в /etc/proxmenux/vfio-bind.bdfs. Он также применяет выбранную политику разрешения конфликтов к каждой затронутой ВМ/LXC. Если конфигурация хоста действительно изменилась, он выполняет update-initramfs -u -k all, а затем proxmox-boot-tool refresh; в противном случае оба действия пропускаются." + }, + "reboot": { + "title": "Перезагрузка", + "body": "Новая привязка GPU вступает в силу только после перезагрузки. Скрипт предложит перезагрузить хост; вы можете сделать это сейчас или позже, но не запускайте целевую ВМ/LXC до перезагрузки хоста — иначе GPU по-прежнему будет занят прежним драйвером.", + "imageAlt": "Итоговый диалог со списком изменений, за которым следует предложение перезагрузки" + } + }, + "manual": { + "heading": "Проверка вручную", + "intro": "Перед переключением VM → LXC проверьте драйвер и существующую политику для конкретного BDF. В этом примере для NVIDIA используется идентификатор vendor:device 10de:2204; замените его на идентификатор своей карты. Эти команды проверяют состояние; скрипт также управляет затронутыми гостевыми системами и устройствами в группе IOMMU.", + "lxcToVm": "Перед переключением LXC → VM проверьте выбранный PCI-адрес и его группу IOMMU. Замените адрес из примера своим и проверьте все устройства в группе, прежде чем назначать устройства.", + "oneVmTitle": "Один и тот же GPU с драйвером vfio-pci может использоваться только одной ВМ одновременно", + "oneVmBody": "Несколько записей hostpci с одним и тем же PCI-слотом в двух ВМ допустимы с точки зрения конфигурации, но запуститься с этим GPU сможет только одна из ВМ — запуск второй завершится ошибкой. Шаг выбора политики разрешения конфликтов ProxMenux предназначен именно для предотвращения такой ситуации." + }, + "verification": { + "heading": "Проверка после перезагрузки" + }, + "troubleshoot": { + "heading": "Устранение неполадок", + "stillVfioTitle": "После переключения в режим LXC для GPU по-прежнему указан драйвер vfio-pci", + "stillVfioBody": "Загруженный модуль VFIO не доказывает, какой драйвер управляет этим GPU. Проверьте привязку карты, а также то, что update-initramfs и перезагрузка завершены. lsmod | grep vfio лишь выводит список модулей. Для AMD / Intel проверьте vfio.conf; для NVIDIA — /etc/proxmenux/vfio-bind.bdfs и /etc/udev/rules.d/10-proxmenux-vfio-bind.rules. Исправьте устаревшую политику перед выполнением update-initramfs -u -k all и перезагрузкой.", + "vmFailTitle": "ВМ не запускается после переключения GPU в режим LXC", + "vmFailBody": "Проверьте, остались ли в конфигурации ВМ устаревшие ссылки на hostpci. Политика Удалить GPU из конфигурации может удалить их при запланированном переключении; перед повторным запуском скрипта проверьте предлагаемое направление переключения, чтобы случайно не переключить режим обратно. Другой вариант — удалить устаревшее назначение в Proxmox при остановленной ВМ.", + "smiFailTitle": "nvidia-smi завершается с ошибкой 'Driver/library version mismatch' после возврата в режим LXC", + "smiFailBody": "Сравните версию загруженного модуля NVIDIA на хосте с версиями установленных библиотек пользовательского пространства, в том числе в контейнерах LXC. Сначала согласуйте версии; перезагрузка загрузит установленный модуль, но не устранит несоответствие версий пакетов библиотек. Для перезагрузки модуля с помощью modprobe -r nvidia и modprobe nvidia необходимо остановить все процессы, использующие GPU; перезагрузка модуля может завершиться ошибкой, если зависимые модули используются.", + "logTitle": "Журнал установки", + "logBody": "При каждом запуске журнал записывается в /tmp/proxmenux_gpu_switch_mode.log на хосте. Приложите его при обращении за помощью на GitHub." + }, + "related": { + "heading": "Связанные материалы", + "items": [ + { + "label": "Добавить GPU в ВМ (прямой проброс)", + "href": "/docs/hardware/gpu-vm-passthrough", + "tail": " — первоначальная настройка режима ВМ." + }, + { + "label": "Добавить GPU в LXC", + "href": "/docs/hardware/igpu-acceleration-lxc", + "tail": " — первоначальная настройка режима LXC." + }, + { + "label": "Установить драйверы NVIDIA на хосте", + "href": "/docs/hardware/nvidia-host", + "tail": " — требуется для режима LXC на GPU NVIDIA." + }, + { + "label": "ProxMenux Monitor — вкладка «Оборудование»", + "href": "/docs/monitor/dashboard/hardware", + "tail": " — раздел «Видеокарты», где для каждого GPU отображается текущий режим и доступен встроенный элемент управления переключением." + }, + { + "label": "Команды для проброса GPU", + "href": "/docs/help-info/gpu-commands", + "tail": " — краткий справочник команд." + } + ] + } +} diff --git a/web/messages/ru/docs/help-info/backup-commands.json b/web/messages/ru/docs/help-info/backup-commands.json new file mode 100644 index 00000000..24a55d5d --- /dev/null +++ b/web/messages/ru/docs/help-info/backup-commands.json @@ -0,0 +1,235 @@ +{ + "meta": { + "title": "Команды резервного копирования Proxmox — vzdump, qmrestore, pct restore | ProxMenux", + "description": "Справочник команд резервного копирования и восстановления Proxmox VE: vzdump для ВМ и контейнеров LXC, qmrestore для ВМ, pct restore для контейнеров, резервное копирование по расписанию в /etc/pve/jobs.cfg, скрипты-хуки и исключаемые пути.", + "ogTitle": "Команды резервного копирования Proxmox — vzdump, qmrestore, pct restore", + "ogDescription": "Справочник команд vzdump, qmrestore и pct restore для резервного копирования и восстановления ВМ Proxmox и контейнеров LXC.", + "twitterTitle": "Команды резервного копирования Proxmox | ProxMenux", + "twitterDescription": "Команды vzdump, qmrestore и pct restore для резервного копирования и восстановления ВМ и контейнеров Proxmox." + }, + "header": { + "title": "Резервное копирование и восстановление", + "description": "Подборка команд vzdump, qmrestore и pct restore для резервного копирования в Proxmox. Включает настройку расписания, расширенные параметры, такие как скрипты-хуки, исключаемые пути и приоритет ввода-вывода, а также управление файлами резервных копий.", + "section": "Справка и информация" + }, + "intro": { + "title": "Три режима резервного копирования", + "body": "Для ВМ режим snapshot выполняет резервное копирование без остановки и не требует поддержки снимков на уровне хранилища. Режим suspend приостанавливает ВМ перед резервным копированием без остановки и не обязательно повышает согласованность данных. Режим stop сначала завершает работу ВМ; если ВМ до этого работала, её работа может возобновиться после начала резервного копирования. Для LXC поведение отличается: режим snapshot требует хранилища с поддержкой снимков, suspend использует два прохода rsync, а stop оставляет контейнер остановленным на всё время резервного копирования." + }, + "commandGroups": [ + { + "title": "Резервное копирование ВМ", + "commands": [ + { + "command": "vzdump ", + "description": "Создать резервную копию определённой ВМ или контейнера" + }, + { + "command": "vzdump --storage ", + "description": "Создать резервную копию ВМ в указанном хранилище" + }, + { + "command": "vzdump --mode snapshot", + "description": "Создать резервную копию в режиме snapshot (для ВМ)" + }, + { + "command": "vzdump --mode suspend", + "description": "Приостановить ВМ перед резервным копированием без остановки (устаревший режим suspend)" + }, + { + "command": "vzdump --mode stop", + "description": "Выключить ВМ перед началом резервного копирования" + }, + { + "command": "vzdump --all", + "description": "Создать резервные копии всех ВМ и контейнеров" + }, + { + "command": "vzdump --all --exclude ,", + "description": "Создать резервные копии всех ВМ, кроме указанных" + } + ] + }, + { + "title": "Параметры резервного копирования", + "commands": [ + { + "command": "vzdump --compress zstd", + "description": "Использовать сжатие zstd для резервной копии" + }, + { + "command": "vzdump --compress gzip --pigz ", + "description": "Использовать pigz в многопоточном режиме" + }, + { + "command": "vzdump --storage --notes-template ", + "description": "Добавить примечания к резервной копии" + }, + { + "command": "vzdump --mailto ", + "description": "Отправить уведомление по электронной почте" + }, + { + "command": "vzdump --prune-backups keep-last=", + "description": "Хранить только n резервных копий для каждой ВМ" + }, + { + "command": "vzdump --stdexcludes 0", + "description": "Не исключать временные файлы" + }, + { + "command": "vzdump --quiet 1", + "description": "Подавить вывод сообщений" + } + ] + }, + { + "title": "Восстановление из резервных копий", + "commands": [ + { + "command": "qmrestore ", + "description": "Восстановить ВМ из резервной копии" + }, + { + "command": "qmrestore --storage ", + "description": "Восстановить в указанное хранилище" + }, + { + "command": "qmrestore --unique", + "description": "Восстановить ВМ с новыми случайно сгенерированными MAC-адресами" + }, + { + "command": "pct restore ", + "description": "Восстановить контейнер из резервной копии" + }, + { + "command": "pct restore --storage ", + "description": "Восстановить контейнер в указанное хранилище" + }, + { + "command": "pct restore --rootfs :", + "description": "Восстановить с выделением корневого диска заданного размера в выбранном хранилище" + }, + { + "command": "pct restore --unprivileged 1", + "description": "Восстановить как непривилегированный контейнер" + } + ] + }, + { + "title": "Управление резервными копиями", + "commands": [ + { + "command": "ls -la /var/lib/vz/dump/", + "description": "Показать список резервных копий в расположении по умолчанию" + }, + { + "command": "find /var/lib/vz/dump/ -name \"*.vma*\"", + "description": "Найти резервные копии ВМ" + }, + { + "command": "find /var/lib/vz/dump/ -name \"*.tar*\"", + "description": "Найти резервные копии контейнеров" + }, + { + "command": "pvesm list --content backup", + "description": "Показать список резервных копий в указанном хранилище" + }, + { + "command": "rm /var/lib/vz/dump/", + "description": "Удалить файл резервной копии" + }, + { + "command": "cat /etc/vzdump.conf", + "description": "Показать конфигурацию резервного копирования" + } + ] + }, + { + "title": "Резервное копирование по расписанию", + "commands": [ + { + "command": "cat /etc/pve/jobs.cfg", + "description": "Показать расписание резервного копирования" + }, + { + "command": "nano /etc/vzdump.conf", + "description": "Изменить конфигурацию резервного копирования" + }, + { + "command": "systemctl list-timers", + "description": "Вывести список таймеров systemd" + }, + { + "command": "systemctl status cron", + "description": "Проверить состояние службы cron" + }, + { + "command": "pvenode task list --typefilter vzdump", + "description": "Вывести список завершённых задач резервного копирования" + }, + { + "command": "pvenode task log ", + "description": "Показать журнал задачи резервного копирования по UPID" + } + ] + }, + { + "title": "Расширенные операции", + "commands": [ + { + "command": "qmrestore --force", + "description": "Принудительно выполнить восстановление с перезаписью существующей ВМ" + }, + { + "command": "vzdump --dumpdir ", + "description": "Указать другой каталог для резервного копирования" + }, + { + "command": "vzdump --script