Merge remote-tracking branch 'origin/develop' into HEAD

# Conflicts:
#	web/messages/es/docs/hardware/switch-gpu-mode.json
This commit is contained in:
MacRimi
2026-10-18 16:20:10 +02:00
973 changed files with 124153 additions and 3394 deletions
+21 -1
View File
@@ -5,7 +5,12 @@ serves every published page under locale-prefixed URLs:
- `/en/<path>` — English, the source of truth
- `/es/<path>` — Spanish
- `/de/<path>` — German
- `/fr/<path>` — French
- `/it/<path>` — Italian
- `/pt/<path>` — Portuguese
- `/sk/<path>` — Slovak, with English fallback where needed
- `/sv/<path>` — Swedish
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
@@ -148,6 +153,18 @@ Example:
### 4. Test locally
From the repository root, check the available catalogs without using a
translation provider:
```bash
python3 .github/scripts/check_web_docs_catalogs.py
```
For a full locale-completion change, add `--require-complete` to also require
every English file and leaf. This validates schema, placeholders, rich-text
tags, literal code and rendering metadata; it does not replace linguistic
review. Partial translations can continue to use the English fallback.
```bash
cd web
npm run dev
@@ -311,7 +328,10 @@ registers a renderer for them.
If you want to add a language that isn't in the project yet:
1. Create `messages/<locale>/common.json` and the page catalogs. The automated
builder can provide the initial baseline.
builder can provide the initial baseline when explicitly dispatched. It
does not run on merge: changing English and its translations together must
not trigger machine retranslation of the reviewed text. Offline validation
still runs automatically for website changes.
2. Review the shared navigation and a representative set of documentation
pages with a native speaker.
3. Add the locale code to `routing.ts` only when the locale is ready to be
@@ -24,23 +24,27 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s
}
}
async function getCodeOfConductContent(notFoundMsg: string, loadFailedMsg: string) {
async function getCodeOfConductContent(notFoundMsg: string, loadFailedMsg: string, translatedMarkdown?: string) {
try {
const codeOfConductPath = path.join(process.cwd(), "..", "CODE_OF_CONDUCT.md")
if (!fs.existsSync(codeOfConductPath)) {
if (!translatedMarkdown && !fs.existsSync(codeOfConductPath)) {
console.error("CODE_OF_CONDUCT.md file not found.")
return `<p class='text-red-600'>${notFoundMsg}</p>`
}
const fileContents = fs.readFileSync(codeOfConductPath, "utf8")
const fileContents = translatedMarkdown || fs.readFileSync(codeOfConductPath, "utf8")
const result = await remark()
.use(gfm.default || gfm)
.use(html)
.process(fileContents)
return result.toString()
// Repository-relative policy links otherwise resolve under the docs URL.
return result.toString().replaceAll(
'href="./SECURITY.md"',
'href="https://github.com/MacRimi/ProxMenux/blob/main/SECURITY.md"',
)
} catch (error) {
console.error("Error reading the CODE_OF_CONDUCT.md file", error)
return `<p class='text-red-600'>${loadFailedMsg}</p>`
@@ -71,7 +75,11 @@ export default async function CodeOfConductPage({ params }: { params: Promise<{
const { locale } = await params
setRequestLocale(locale)
const t = await getTranslations({ locale, namespace: "docs.about.codeOfConduct" })
const codeOfConductContent = await getCodeOfConductContent(t("errors.notFound"), t("errors.loadFailed"))
const translatedMarkdown = t.has("contentMarkdown") ? t.raw("contentMarkdown") : undefined
const codeOfConductContent = await getCodeOfConductContent(
t("errors.notFound"), t("errors.loadFailed"),
typeof translatedMarkdown === "string" ? translatedMarkdown : undefined,
)
const cleanedInlineCode = cleanInlineCode(codeOfConductContent)
const parsedContent = wrapCodeBlocksWithCopyable(cleanedInlineCode)
@@ -89,10 +89,12 @@ export default async function PostInstallPage({
docs: { postInstall: {
routes: Route[]
related: { items: RelatedItem[] }
pbs?: { items: string[] }
} }
}
const routes = messages.docs.postInstall.routes
const relatedItems = messages.docs.postInstall.related.items
const pbsItems = messages.docs.postInstall.pbs?.items ?? []
const code = (chunks: React.ReactNode) => <code>{chunks}</code>
const strong = (chunks: React.ReactNode) => <strong>{chunks}</strong>
@@ -210,6 +212,14 @@ export default async function PostInstallPage({
{t.rich("community.body", { em, code, a: communityAnchor, link: externalRepoLink })}
</p>
<h2 className="text-2xl font-semibold mt-10 mb-4 text-gray-900">{t("pbs.heading")}</h2>
<p className="mb-4 text-gray-800 leading-relaxed">{t.rich("pbs.body", { strong })}</p>
<ul className="list-disc pl-6 mb-4 text-gray-800 leading-relaxed space-y-2">
{pbsItems.map((_, i) => (
<li key={i}>{t.rich(`pbs.items.${i}`, { strong, em })}</li>
))}
</ul>
<h2 className="text-2xl font-semibold mt-10 mb-4 text-gray-900">{t("related.heading")}</h2>
<ul className="list-disc pl-6 text-gray-800 leading-relaxed space-y-1">
{relatedItems.map((item) => (
@@ -282,8 +282,8 @@ done < /usr/local/share/proxmenux/zfs_autotrim_pools`}
<h3 className="text-lg font-semibold mt-6 mb-2 text-gray-900">{t("vzdump.changedTitle")}</h3>
<CopyableCode
code={`bwlimit: 0 # No bandwidth limit (was capped by default)
ionice: 5 # Lower I/O priority (5 = best-effort class, lowest priority in that class)`}
code={`bwlimit: 0 # No bandwidth limit; replaces any configured global cap
ionice: 5 # Best-effort level 5; higher priority than the default 7 where supported`}
className="my-4"
/>
@@ -85,10 +85,8 @@ export default async function ShowVersionInformationPage({
</div>
<h2 className="text-2xl font-semibold mt-10 mb-4 text-gray-900">{t("sampleHeading")}</h2>
<pre className="rounded-md bg-gray-100 p-4 overflow-x-auto text-xs font-mono text-gray-800 leading-relaxed border border-gray-200">{`Current ProxMenux version: 1.2.4
Installation type:
✓ Translation Version (Multi-language support)
<pre className="rounded-md bg-gray-100 p-4 overflow-x-auto text-xs font-mono text-gray-800 leading-relaxed border border-gray-200">{`Current ProxMenux version: VERSION
Release channel: Stable (main branch)
Installed components:
✓ post_install_settings: installed
@@ -103,28 +101,24 @@ ProxMenux files:
✓ utils.sh → /usr/local/share/proxmenux/utils.sh
✓ config.json → /usr/local/share/proxmenux/config.json
✓ version.txt → /usr/local/share/proxmenux/version.txt
✓ cache.json → /usr/local/share/proxmenux/cache.json
Virtual Environment:
✓ Installed → /opt/googletrans-env
✓ pip: Installed → /opt/googletrans-env/bin/pip
Current language:
es`}</pre>
en
✓ Translation files: /usr/local/share/proxmenux/lang/`}</pre>
<h2 className="text-2xl font-semibold mt-10 mb-4 text-gray-900">{t("manualHeading")}</h2>
<pre className="rounded-md bg-gray-100 p-4 overflow-x-auto text-xs font-mono text-gray-800 leading-relaxed border border-gray-200">{`# Version
cat /usr/local/share/proxmenux/version.txt
# Install type detection (replicates the script's logic)
[[ -d /opt/googletrans-env ]] && echo "venv: yes" || echo "venv: no"
jq -r '.language // "missing"' /usr/local/share/proxmenux/config.json
# Release channel metadata and installed translation catalogs
jq '{beta_program, install_branch}' /usr/local/share/proxmenux/config.json
ls /usr/local/share/proxmenux/lang/*.json
# All component statuses
jq 'to_entries[] | "\\(.key): \\(.value)"' /usr/local/share/proxmenux/config.json
# Current language
jq -r '.language' /usr/local/share/proxmenux/config.json`}</pre>
jq -r '.language // "en"' /usr/local/share/proxmenux/config.json`}</pre>
<h2 className="text-2xl font-semibold mt-10 mb-4 text-gray-900">{t("troubleshoot.heading")}</h2>
@@ -110,7 +110,7 @@ export default async function UpgradePve8Pve9Page({
)
const cephlink = (chunks: React.ReactNode) => (
<a
href="https://pve.proxmox.com/wiki/Ceph_Squid"
href="https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid"
target="_blank"
rel="noopener noreferrer"
className="text-blue-700 hover:underline inline-flex items-center gap-1"
+5 -4
View File
@@ -8,13 +8,14 @@ const inter = Inter({ subsets: ["latin"] })
* Minimal root layout — the localized layout under [locale]/ does the
* real work (provider, navbar, etc.) but cannot own <html>/<body> tags
* because Next.js requires those at the root level. Lang is set to the
* default locale here and refined client-side from inside the locale
* layout so the page still renders correctly with JS disabled (defaults
* to English) and switches to the active locale once hydrated.
* default locale here; scripts/localize-export.mjs sets the exported
* document's language before search indexing, and LocaleHtmlSync keeps
* it in sync during client navigation. The root-only hydration suppression
* allows that intentional lang attribute change in the static export.
*/
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className="dark">
<html lang="en" className="dark" suppressHydrationWarning>
<body className={`${inter.className} bg-background text-foreground antialiased`}>
{children}
</body>
+5
View File
@@ -29,7 +29,12 @@ export function LanguageSwitcher() {
const labels: Record<string, string> = {
en: t("en"),
es: t("es"),
de: t("de"),
fr: t("fr"),
it: t("it"),
pt: t("pt"),
sk: t("sk"),
sv: t("sv"),
}
return (
+1 -1
View File
@@ -19,7 +19,7 @@ import { defineRouting } from "next-intl/routing"
* `CONTRIBUTING-TRANSLATIONS.md`.
*/
export const routing = defineRouting({
locales: ["en", "es", "sk"],
locales: ["en", "es", "de", "fr", "it", "pt", "sk", "sv"],
defaultLocale: "en",
localePrefix: "always",
})
+254
View File
@@ -0,0 +1,254 @@
{
"site": {
"name": "ProxMenux",
"tagline": "Interaktives Menü und Web-Dashboard für Proxmox VE"
},
"nav": {
"home": "Startseite",
"docs": "Dokumentation",
"documentation": "Dokumentation",
"guides": "Anleitungen",
"changelog": "Änderungsprotokoll",
"github": "GitHub",
"rss": "RSS",
"rssTitle": "RSS-Feed",
"menuOpen": "Menü öffnen"
},
"footer": {
"sponsorHeading": "Projekt unterstützen",
"sponsorBody": "Wenn Sie das Projekt unterstützen möchten.",
"sponsorAlt": "Auf Ko-fi unterstützen",
"connectHeading": "Community",
"connectBody": "Beteiligen Sie sich an den Community-Diskussionen auf GitHub, um Hilfe zu erhalten, Ideen auszutauschen und zum Projekt beizutragen. Jede Idee ist willkommen!",
"joinDiscussion": "An der Diskussion teilnehmen",
"copyrightPrefix": "ProxMenux, ein gemeinschaftliches Open-Source-Projekt von",
"copyrightSuffix": "."
},
"language": {
"switcher": "Sprache",
"en": "English",
"es": "Español",
"sk": "Slovenčina",
"de": "Deutsch",
"fr": "Français",
"it": "Italiano",
"pt": "Português",
"sv": "Svenska"
},
"resources": {
"documentation": {
"title": "Dokumentation",
"description": "Systembeschreibung und Benutzeranleitungen"
},
"changelog": {
"title": "Änderungsprotokoll",
"description": "Informationen zu den neuesten Aktualisierungen"
},
"guides": {
"title": "Anleitungen",
"description": "Schrittweise Anleitungen für häufige Aufgaben"
},
"github": {
"title": "GitHub-Repository",
"description": "Sehen Sie sich den Quellcode an."
}
},
"docSidebar": {
"documentation": "Dokumentation",
"items": {
"introduction": "Einführung",
"installation": "Installation",
"proxmenuxMonitor": "ProxMenux Monitor",
"monitorOverview": "Übersicht",
"architecture": "Architektur",
"accessAuth": "Zugriff und Authentifizierung",
"dashboard": "Dashboard",
"dashboardSystemOverview": "Registerkarte Systemübersicht",
"dashboardApps": "Registerkarte Apps",
"dashboardStorage": "Registerkarte Speicher",
"dashboardNetwork": "Registerkarte Netzwerk",
"dashboardVmsLxcs": "Registerkarte VMs und LXCs",
"dashboardVmsLxcsApp": "App",
"dashboardVmsLxcsUpdates": "Aktualisierungen",
"dashboardHardware": "Registerkarte Hardware",
"dashboardSystemLogs": "Registerkarte Systemprotokolle",
"dashboardTerminal": "Registerkarte Terminal",
"dashboardSecurity": "Registerkarte Sicherheit",
"dashboardSettings": "Registerkarte Einstellungen",
"healthMonitor": "Zustandsüberwachung",
"auditReport": "Prüfung und Berichte",
"auditReportOverview": "Übersicht",
"auditReportAssessment": "Bewertung und Inventar",
"auditReportPolicy": "Richtlinie",
"auditReportChanges": "Änderungen",
"auditReportReports": "Berichte und Vergleiche",
"auditReportScope": "Umfang und Garantien",
"notifications": "Benachrichtigungen",
"aiAssistant": "KI-Assistent",
"apiReference": "API-Referenz",
"integrations": "Integrationen",
"ociManager": "OCI manager Apps",
"ociOverview": "Übersicht",
"ociArchitecture": "So wird ein OCI-Image umgesetzt",
"ociCustomImage": "Image außerhalb des Katalogs",
"ociStorageNetwork": "Daten, Pfade und Netzwerk",
"ociHardware": "Geräte und Beschleunigung",
"ociStacks": "Anwendungen mit mehreren Containern",
"ociLifecycle": "Installieren, aktualisieren und ändern",
"ociMonitor": "In ProxMenux Monitor",
"proxmenuxScripts": "ProxMenux Scripts",
"postInstallScript": "Skript zur Nachinstallation",
"postInstallOverview": "Übersicht",
"postInstallAutomated": "Automatisch",
"postInstallCustomizable": "Anpassbar",
"postInstallBasicSettings": "Grundeinstellungen",
"postInstallSystem": "System",
"postInstallVirtualization": "Virtualisierung",
"postInstallNetwork": "Netzwerk",
"postInstallStorage": "Speicher",
"postInstallSecurity": "Sicherheit",
"postInstallCustomization": "Anpassung",
"postInstallMonitoring": "Überwachung",
"postInstallPerformance": "Leistung",
"postInstallOptional": "Optional",
"postInstallUpdates": "Verfügbare Aktualisierungen installieren",
"postInstallUninstall": "Optimierungen entfernen",
"gpusCoralTpu": "GPUs und Coral TPU",
"nvidiaHost": "NVIDIA-Treiber auf dem Host installieren",
"coralHost": "Coral TPU auf dem Host installieren",
"addGpuLxc": "GPU für einen LXC freigeben",
"addCoralLxc": "Coral TPU für einen LXC freigeben",
"addGpuVm": "GPU einer VM zuweisen (Passthrough)",
"switchGpuMode": "GPU-Modus wechseln (VM ↔ LXC)",
"createVm": "VM erstellen",
"createVmOverview": "Übersicht",
"createVmSystemNas": "NAS-Systeme",
"createVmSynology": "Synology-VM",
"createVmNasOthers": "Weitere NAS-Systeme",
"createVmSystemWindows": "Windows-Systeme",
"createVmSystemLinux": "Linux-Systeme",
"diskManager": "Datenträgerverwaltung",
"diskManagerOverview": "Übersicht",
"diskImportVm": "Datenträger in eine VM importieren",
"diskImportImageVm": "Datenträgerabbild in eine VM importieren",
"diskAddController": "Controller oder NVMe-Gerät zu einer VM hinzufügen",
"diskImportLxc": "Datenträger in einen LXC importieren",
"diskFormat": "Physischen Datenträger formatieren oder löschen",
"diskSmart": "SMART-Zustand und Datenträgertests",
"storageShareManager": "Speicher und Freigaben verwalten",
"storageShareOverview": "Übersicht",
"hostStorage": "Speicher in den Host einbinden",
"hostNfs": "NFS-Freigabe als Proxmox-Speicher hinzufügen",
"hostSamba": "Samba-Freigabe als Proxmox-Speicher hinzufügen",
"hostIscsi": "iSCSI-Ziel als Proxmox-Speicher hinzufügen",
"hostLocalDisk": "Lokalen Datenträger als Proxmox-Speicher hinzufügen",
"hostLocalShared": "Freigegebenes Verzeichnis auf dem Host anlegen",
"lxcMountPoints": "LXC-Mountpoints (Host ↔ CT)",
"lxcNetworkSharing": "Netzwerkfreigaben in LXC",
"lxcNfsClient": "NFS-Client in LXC",
"lxcSambaClient": "Samba-Client in LXC",
"lxcNfsServer": "NFS-Server in LXC",
"lxcSambaServer": "Samba-Server in LXC",
"network": "Netzwerk",
"networkOverview": "Übersicht",
"networkDiagnostics": "Diagnose",
"networkMonitoring": "Werkzeuge zur Echtzeitüberwachung",
"networkBridge": "Netzwerk-Bridges prüfen und reparieren",
"networkConfig": "Konfiguration prüfen und bereinigen",
"networkPersistent": "Dauerhafte Schnittstellennamen",
"networkBackup": "Schnittstellen sichern und neu starten",
"security": "Sicherheit",
"securityOverview": "Übersicht",
"securityFail2ban": "Fail2Ban",
"securityLynis": "Lynis",
"utilities": "Dienstprogramme",
"utilsOverview": "Übersicht",
"utilsUupDump": "ISO-Erstellung mit UUP Dump",
"utilsSystemUtils": "Systemwerkzeuge installieren",
"utilsSystemUpdate": "Proxmox-System aktualisieren",
"utilsUpgradePve": "Von PVE 8 auf PVE 9 aktualisieren",
"utilsExportVm": "VM als OVA/OVF exportieren",
"utilsImportVm": "VM aus OVA/OVF importieren",
"settingsProxmenux": "ProxMenux-Einstellungen",
"settingsOverview": "Übersicht",
"settingsMonitor": "ProxMenux Monitor",
"settingsBeta": "Release-Kanal wechseln",
"settingsVersion": "Versionsinformationen anzeigen",
"settingsUninstall": "ProxMenux deinstallieren",
"commandsReference": "Befehlsreferenz",
"commandsOverview": "Übersicht",
"commandsSystem": "Nützliche Systembefehle",
"commandsVmCt": "VMs und CTs verwalten",
"commandsStorage": "Speicher und Datenträger",
"commandsNetwork": "Netzwerkbefehle",
"commandsUpdates": "Aktualisierungen und Pakete",
"commandsGpu": "GPU-Passthrough",
"commandsZfs": "ZFS verwalten",
"commandsBackup": "Sichern und Wiederherstellen",
"commandsTools": "Systemwerkzeuge für die Befehlszeile",
"glossary": "Glossar",
"about": "Über das Projekt",
"aboutOverview": "Übersicht",
"aboutFaq": "FAQ",
"aboutContributors": "Mitwirkende",
"aboutContributing": "Mitwirken",
"aboutCodeOfConduct": "Verhaltenskodex",
"externalRepositories": "Externe Repositorys",
"backupRestore": "Sichern und Wiederherstellen",
"backupRestoreOverview": "Übersicht",
"backupRestoreHowItWorks": "Funktionsweise",
"backupRestoreDestinations": "Ziele",
"backupRestoreDestOverview": "Übersicht",
"backupRestoreDestLocal": "Lokales Archiv",
"backupRestoreDestPbs": "Proxmox Backup Server",
"backupRestoreDestBorg": "Borg",
"backupRestoreCreating": "Sicherungen erstellen",
"backupRestoreJobs": "Geplante Aufträge",
"backupRestoreRestoring": "Wiederherstellen",
"backupRestoreCrossKernel": "Wiederherstellung mit anderer Kernel-Version",
"backupRestoreGlossary": "Glossar"
}
},
"hero": {
"title": "ProxMenux",
"tagline": "Ein interaktives Menü und Web-Dashboard für Proxmox VE",
"description": "ProxMenux verbindet ein interaktives Menü mit einem Web-Dashboard für Proxmox VE. Führen Sie Befehle, Skripte und geführte Assistenten über das Terminalmenü aus oder verfolgen Sie Host-Zustand, Messwerte und Benachrichtigungen im Browser.",
"installButton": "Jetzt installieren",
"whatIsButton": "Was ist ProxMenux?",
"logoAlt": "ProxMenux-Logo"
},
"docNav": {
"previous": "Zurück",
"next": "Weiter"
},
"tocPanel": {
"onThisPage": "Auf dieser Seite"
},
"supportProject": {
"heading": "Unterstützen Sie das Projekt!",
"body": "Wenn Sie <strong>ProxMenux</strong> hilfreich finden, geben Sie dem Projekt eine ⭐ auf GitHub, damit auch andere darauf aufmerksam werden.",
"button": "Stern auf GitHub vergeben"
},
"rssLink": {
"heading": "Bleiben Sie auf dem Laufenden!",
"body": "Abonnieren Sie unseren RSS-Feed, um über neue Änderungen informiert zu werden.",
"copy": "Kopieren",
"copied": "Kopiert!",
"copyTitle": "RSS-URL kopieren",
"openFeed": "RSS-Feed öffnen",
"openTitle": "RSS-Feed öffnen"
},
"changelog": {
"pageTitle": "Änderungsprotokoll",
"meta": {
"title": "ProxMenux-Änderungsprotokoll",
"titleSuffix": "Versionshinweise",
"latest": "Aktuell",
"mostRecent": "Neueste Version",
"description": "Versionshinweise und Aktualisierungsverlauf für ProxMenux, das menügesteuerte Skript zur Verwaltung von Proxmox VE.",
"descriptionTail": "Neue Funktionen, Fehlerbehebungen, Sicherheitsupdates, Verbesserungen an ProxMenux Monitor, Kompatibilität mit KI-Anbietern, zusätzliche Absicherung beim GPU-Passthrough und mehr.",
"ogDescription": "Versionshinweise für ProxMenux.",
"ogTail": "Abonnieren Sie den RSS-Feed oder besuchen Sie diese Seite erneut, um neue Versionen zu finden."
}
}
}
@@ -0,0 +1,13 @@
{
"meta": {
"title": "Verhaltenskodex | ProxMenux-Dokumentation",
"description": "ProxMenux Verhaltenskodex und Best Practices für Mitwirkende, Tester und Nutzer.",
"ogTitle": "Verhaltenskodex | ProxMenux-Dokumentation",
"ogDescription": "Erwartungen an die Verantwortung für eingereichten Code, die Meldung von Sicherheitslücken und den Umfang von Pull Requests im ProxMenux-Projekt."
},
"errors": {
"notFound": "Fehler: Die Datei CODE_OF_CONDUCT.md wurde nicht gefunden.",
"loadFailed": "Fehler: Der Inhalt des Verhaltenskodex kann nicht geladen werden."
},
"contentMarkdown": "# 📝 Verhaltenskodex und bewährte Vorgehensweisen\n\nDieses Dokument legt die **Grundsätze und Richtlinien** für die Nutzung von **ProxMenux** fest. Es soll **Respekt, Zusammenarbeit und Sicherheit** bei der Entwicklung fördern.\n\n## 📌 1. Urheberangaben und Anerkennung\n\n- Werden **Skripte, Codeausschnitte oder Ideen** anderer Repositorys oder Entwickler verwendet, wird der ursprüngliche Urheber immer genannt.\n- Ein Kommentar im Code oder in der Dokumentation nennt die Quelle und verlinkt möglichst auf das ursprüngliche Repository.\n- Bei Code mit einer bestimmten **Lizenz** müssen deren Bedingungen eingehalten werden.\n\n### ✅ Beispiel für eine korrekte Quellenangabe im Code:\n\n```bash\n# Skript auf Grundlage der Arbeit von [Autor] unter [Repository-Link]\n```\n\n## 🔒 2. Sicherheit und Verantwortung für den Code\n\n- Der gesamte Code in diesem Repository folgt bewährten Vorgehensweisen für sichere Entwicklung.\n- Beiträge mit absichtlich eingebauten Schwachstellen oder unsicheren Vorgehensweisen sind nicht erlaubt.\n- Skripte dürfen niemals die Systemsicherheit oder Benutzerdaten gefährden.\n- Beiträge sollen vor der Implementierung auf Sicherheit und Stabilität geprüft werden.\n\n### ⚠️ Verantwortungsvolle Meldung von Sicherheitslücken\n\nEntdecken Sie eine Sicherheitslücke, melden Sie diese NICHT in öffentlichen Issues oder Foren.\n\nMelden Sie sie stattdessen vertraulich per E-Mail:\n\n📧 proxmenux@macrimi.pro\n\nWeitere Informationen zu Sicherheitslücken und deren Meldung finden Sie in unserer [Sicherheitsrichtlinie](./SECURITY.md).\n\n## 🤝 3. Regeln für die Community\n\nFür ein respektvolles und professionelles Umfeld müssen alle Benutzer diese Regeln beachten:\n\n- ✅ Bleiben Sie in Diskussionen respektvoll und konstruktiv.\n- ❌ Belästigung, Hassrede und beleidigendes Verhalten werden nicht toleriert.\n- ✅ Geben Sie Rückmeldungen sachlich und ohne persönliche Angriffe.\n- ❌ Verstöße können je nach Schwere zu Verwarnungen oder Ausschlüssen führen.\n\n##\n\nDieses Dokument fördert den ethischen Umgang mit Code, Sicherheitsbewusstsein und eine respektvolle Community.\n\n📢 Lassen Sie uns gemeinsam etwas Großartiges schaffen!\n"
}
@@ -0,0 +1,293 @@
{
"meta": {
"title": "Zu ProxMenux beitragen | ProxMenux-Dokumentation",
"description": "Zu ProxMenux beitragen: Branch-Modell (main / develop / feature/*), Pull-Request-Ablauf, Skript-Header mit Autorenangabe und optionalem Sponsoring-Link, zweiphasige UI-Richtlinie, Nachrichtenfunktionen und der Weg vom Feature-Branch zur stabilen Version.",
"ogTitle": "Zu ProxMenux beitragen",
"ogDescription": "Branch-Modell, Arbeitsablauf, Autorenangabe im Skript-Header und zweiphasige UI-Richtlinie für Mitwirkende."
},
"header": {
"title": "Zu ProxMenux beitragen",
"description": "ProxMenux ist offen für Community-Beiträge - neue Skripte, Fixes für bestehende, Dialogverbesserungen, Übersetzungen, Integrationen. Diese Seite ist die formale Tür: wie das Repository strukturiert ist, das Verzweigungsmodell und der Pull-Request-Workflow, der Skript-Header mit Autorzuweisung und optionalem Sponsor-Link und die Design-Konventionen, denen jeder Beitrag folgen muss.",
"section": "Über"
},
"twoPagesCallout": {
"title": "Zwei verwandte Seiten, ein Projekt",
"body": "Verwechseln Sie diese Seite nicht mit <contributorsLink>Mitwirkende</contributorsLink>, die bisherige Beiträge von Testern, Reviewern und Entwicklern würdigt. Diese Seite richtet sich an <em>Sie</em> als künftigen Mitwirkenden und erklärt, wie Sie einen Pull Request zur Aufnahme vorbereiten."
},
"branching": {
"heading": "Verzweigungsmodell",
"intro": "ProxMenux verwendet ein dreistufiges Verzweigungsmodell:",
"headerBranch": "Branch",
"headerPurpose": "Zweck",
"rows": [
{
"branch": "main",
"purposeRich": "Stabiler, produktionsreifer Code. Hier werden nur veröffentlichungsreife Änderungen aufgenommen. Diese Version erhalten Endnutzer bei einer normalen ProxMenux-Installation."
},
{
"branch": "develop",
"purposeRich": "Aktiver Entwicklungsbranch. Neue Arbeiten werden zuerst hier aufgenommen; dies ist der Beta-Kanal. Ist eine stabile Version bereit, wird sie von hier nach <code>main</code> übernommen."
},
{
"branch": "feature/*",
"purposeRich": "Kurzlebige Branchs pro Feature, Fix oder Verbesserung. Erstellt aus <code>develop</code>, nach Überprüfung über einen Pull Request wieder in <code>develop</code> zusammengeführt."
}
],
"calloutTitle": "Was das für die Nutzer bedeutet",
"calloutBody": "Endbenutzer, die <code>main</code> verfolgen, erhalten getestete Releases. Benutzer, die die neuesten Funktionen frühzeitig wünschen - und gelegentliche raue Kanten nicht stören - können <code>develop</code> folgen. Neue Funktionen passieren immer zuerst <code>develop</code>; nichts erreicht <code>main</code>, ohne diesen Zyklus zu durchlaufen."
},
"workflow": {
"heading": "Pull Request Workflow",
"intro": "Von der Idee zum fusionierten Release in fünf Schritten:",
"step1Lead": "<strong>Erstellen Sie einen Feature Branch aus <code>develop</code></strong>:",
"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": "Verwenden Sie einen beschreibenden Zweignamen: <code>feature/zfs-arc-tuning</code>, <code>feature/fix-iommu-detection</code>, <code>feature/add-tailscale-script</code>.",
"step2Lead": "<strong>Arbeiten Sie an Ihren Änderungen und schieben Sie den Branch: </strong>",
"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": "<strong>Öffnen Sie einen Pull Request für <code>develop</code></strong>, nicht für <code>main</code>. Prüfen Sie auf GitHub, dass der Basisbranch auf <code>develop</code> steht. Beschreiben Sie, was das Skript tut und ändert und auf welchen Proxmox-VE-Versionen es getestet wurde.",
"step4": "<strong>Nach der Prüfung werden Änderungen in <code>develop</code> zusammengeführt.</strong> Ein Maintainer prüft Codequalität, Header-Konventionen und die zweiphasige UI-Richtlinie. Falls Änderungen nötig sind, pushen Sie weitere Commits in denselben Branch; der PR aktualisiert sich automatisch.",
"step5": "<strong>Stabile Versionen werden von <code>develop</code> nach <code>main</code> übernommen.</strong> Bei der Veröffentlichung wird <code>main</code> per Fast-Forward auf <code>develop</code> gebracht und mit einem Tag versehen. Ihr Beitrag wird Teil der nächsten stabilen Version."
},
"scriptHeader": {
"heading": "Skript-Header — Metadaten und Beschreibung",
"intro": "Jedes Skript in ProxMenux wird mit zwei benachbarten Kommentarblöcken geöffnet, die zusammen den Header bilden. Sie sind <strong>beide erforderlich</strong> - zusammen lassen sie jeden Leser wissen, wer das Skript geschrieben hat und was es tut, alles ohne den Code selbst zu öffnen.",
"bullets": [
"<strong>Oberer Block: Metadaten.</strong> Autor, optionale GitHub-/Sponsoring-Links, Maintainer, Copyright, Lizenz, Version und Aktualisierungsdatum. Hier erfolgt auch die <em>Würdigung der Mitwirkenden</em>: Bei einem neuen Skript tragen Sie Ihren Namen und optional Links zur persönlichen GitHub-Seite und einem Unterstützungsprofil ein, etwa Ko-fi, GitHub Sponsors oder Buy Me a Coffee.",
"<strong>Unterer Block: Beschreibung.</strong> Ein kurzer Absatz in einfachem Englisch erklärt die Funktion. Nutzer lesen ihn <em>vor</em> dem Code. Er muss für sich allein Zweck, Hauptaktionen, betroffene Ressourcen und Voraussetzungen verständlich machen."
],
"licenseCalloutTitle": "Die Lizenzlinie ist festgelegt — GPL-3.0",
"licenseCalloutBody": "ProxMenux wird unter der <strong>GNU General Public License v3.0</strong> veröffentlicht. Jedes Skript im Projekt wird unter derselben Lizenz ausgeliefert; die <code>License</code>-Zeile im Header ist immer die GPL-3.0-Referenz, die im folgenden Beispiel gezeigt wird - es ist keine Per-Script-Wahl. Indem Sie ein Skript beisteuern, erklären Sie sich damit einverstanden, es unter GPL-3.0 zu veröffentlichen, was bedeutet, dass jeder es lesen, ändern und weiterverteilen kann (einschließlich Änderungen), solange er es unter der gleichen Lizenz behält. Der vollständige Text befindet sich unter <licenseLink>MacRimi/ProxMenux/LICENSE</licenseLink>.",
"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": "Die Linien <code>GitHub</code> und <code>Sponsor</code> sind optional - lassen Sie sie aus, wenn Sie sie nicht veröffentlichen möchten. Alles andere ist erforderlich.",
"whyCalloutTitle": "Warum das wichtig ist",
"whyCalloutBody": "Open-Source-Beiträge sind freiwillige Arbeit. Name und optionaler Sponsoring-Link im Quellcode machen die Urheberschaft bei jedem Lesen sichtbar, statt sie hinter dem Projektnamen zu verbergen. Der Beschreibungsblock ist aus einem anderen Grund wichtig: Er ist der erste Anlaufpunkt künftiger Maintainer und neugieriger Nutzer. Eine klare Erklärung entscheidet oft darüber, ob sie einem Skript vertrauen oder es meiden."
},
"structure": {
"heading": "Projektstruktur",
"intro": "Wo jede Art von Skript im Repository lebt:",
"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": "Jedes Skript lädt <code>utils.sh</code> beim Start per source, um Nachrichtenfunktionen, Spinner, Farbvariablen und Übersetzungssystem einzubinden. Gemeinsame Hilfsbibliotheken in <code>scripts/global/</code> werden ausdrücklich von den Skripten geladen, die sie benötigen."
},
"twoPhase": {
"heading": "Die zweiphasige UI Design Policy",
"intro": "Dies ist die wichtigste Konvention in ProxMenux und die PRs werden am häufigsten gebeten, sie zu beheben. Jedes Skript ist in <strong> genau zwei Phasen</strong> unterteilt:",
"headerPhase": "Phase",
"headerPurpose": "Zweck",
"headerScreen": "Bildschirmzustand",
"rows": [
{
"phaseRich": "<strong>Phase 1 — Auswahl</strong>",
"purposeRich": "Sammeln Sie jede Benutzerentscheidung. Führen Sie alle erforderlichen Vorbereitungsarbeiten durch (Sonden, Scans, Überprüfungen).",
"screenRich": "<code>dialog</code>-Overlays. Wenn eine Suche zwischen zwei Menüs länger als ein oder zwei Sekunden dauert, zeigen Sie einen <code>msg_info</code>-Spinner an, damit der Benutzer weiß, dass das Skript nicht eingefroren ist, und rufen Sie dann <code>stop_spinner</code> direkt vor dem nächsten Dialog auf."
},
{
"phaseRich": "<strong>Phase 2 — Ausführung</strong>",
"purposeRich": "Führen Sie jede Operation aus. Zeigen Sie den gesamten Fortschrittsverlauf an, der sich auf dem Bildschirm ansammelt.",
"screenRich": "Sichtbare <code>msg_info</code> / <code>msg_ok</code> Nachrichten; niemals <code>dialog</code>."
}
],
"principle": "Das Prinzip: <strong>Sammeln Sie zuerst alles und führen Sie dann alles</strong> aus. Der Benutzer sieht ein sauberes dialoggesteuertes Menü (Phase 1), dann eine saubere Ausführungsansicht im Protokollstil (Phase 2). Kein Mischen — kein Dialog erscheint mitten in der Ausführung, kein Fortschrittsrauschen während der Auswahl.",
"phase1Heading": "Phase 1 — typisches Muster",
"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": "<strong>Regeln für Phase 1:</strong>",
"phase1Rules": [
"Läuft gerade ein <code>msg_info</code>-Spinner und soll ein Menü mit <code>dialog</code> oder <code>whiptail</code> geöffnet werden, rufen Sie zuerst <code>stop_spinner</code> auf. Der Spinner verträgt sich nicht mit deren Bildschirmüberlagerung. Ohne aktiven Spinner ist der Aufruf nicht nötig.",
"Verwenden Sie <code>show_proxmenux_logo</code> + <code>msg_title</code> + <code>msg_info</code>, um in Phase 1 einen längeren Vorgang sichtbar einzuordnen, etwa eine Prüfung ab fünf Sekunden. Die Funktion leert bereits den Bildschirm; rufen Sie davor nicht <code>clear</code> auf.",
"Rufen Sie <code>show_proxmenux_logo</code> nicht zwischen Dialogmenüs auf, in denen nichts angezeigt werden kann - das Löschen des Bildschirms für ein leeres Terminal ist nur visuelles Rauschen.",
"Speichern Sie alle Entscheidungen und Sondenergebnisse in Variablen oder parallelen Arrays. Die sichtbare Zusammenfassung erfolgt zu Beginn der Phase 2, nicht in Phase 1."
],
"phase2Heading": "Phase 2 — typisches Muster",
"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": "<strong>Regeln für Phase 2:</strong> Beginnen Sie mit <code>show_proxmenux_logo + msg_title</code> und fassen Sie Phase 1 sofort in <code>msg_ok</code>-Zeilen zusammen. Rufen Sie <code>show_proxmenux_logo</code> nicht erneut auf, da dies den bisherigen Verlauf löscht. Verwenden Sie kein <code>dialog</code>; ist eine Entscheidung zur Laufzeit unvermeidbar, nutzen Sie <code>whiptail</code> wie im nächsten Abschnitt."
},
"dialogVsWhiptail": {
"headingRich": "Wann <code>dialog</code> vs <code>whiptail</code> zu verwenden",
"intro": "Beide Tools zeichnen Benutzeroberflächen im Textmodus, aber sie verhalten sich auf dem Bildschirm sehr unterschiedlich - und ProxMenux verwendet sie aus einem bestimmten Grund in zwei verschiedenen Phasen.",
"headerTool": "Werkzeug",
"headerWhen": "Wann man es benutzt",
"headerEffect": "Wirkung auf den Bildschirm",
"rows": [
{
"toolRich": "<strong><code>dialog</code></strong>",
"whenRich": "<strong>Immer in Phase 1.</strong> Jede interaktive Auswahl – Auswahl einer VM, einer Festplatte, eines Dateisystems, das eine Aktion bestätigt – verwendet <code>dialog</code>. Dies ist das Standard-UI-Tool von ProxMenux.",
"effectRich": "Übernimmt das Terminal: löscht den Bildschirm, zieht sein Overlay und bringt das Terminal beim Schließen in seinen vorherigen Zustand zurück. Fein in Phase 1, weil sich noch nichts Nützliches zeigt."
},
{
"toolRich": "<strong><code>whiptail</code></strong>",
"whenRich": "<strong>Nur in Phase 2, nur wenn unvermeidlich.</strong> Der typische Fall ist eine Neustartaufforderung am Ende der Ausführung. Greifen Sie nicht zu <code>whiptail</code>, um \"Weiter?\" mitten in der Ausführung zu fragen - diese Entscheidung hätte in Phase 1 getroffen werden sollen.",
"effectRich": "Leichteres Overlay, das den Terminalkontext <em>nicht</em> löscht. Der akkumulierte <code>msg_ok</code> / <code>msg_info</code>-Verlauf der Phase 2 bleibt hinter dem Dialogfeld sichtbar. Deshalb ist es die richtige Wahl, wenn der Fortschritt bereits auf dem Bildschirm zu sehen ist."
}
],
"calloutTitle": "Warum die Trennung wichtig ist",
"calloutBody": "Wenn Sie <code>dialog</code> in der Mitte der Phase 2 anrufen, verschwindet jede <code>msg_ok</code>-Zeile, die der Benutzer beobachtet hat. Sie wischen den Audit-Trail. <code>whiptail</code> vermeidet das. Die Regel ist also nicht willkürlich - es geht darum, die Sicht des Benutzers auf das, was das Skript bisher getan hat, zu bewahren.",
"rebootHeading": "Neustartabfrage: das typische whiptail in Phase 2",
"rebootIntro": "Wenn ein Skript endet und ein Neustart erforderlich ist (z.B.) IOMMU aktiviert, Kernelparameter geändert), die Aufforderung am Ende der Phase 2 verwendet <code>whiptail</code>. Fügen Sie immer einen \"Nein\"-Zweig hinzu, der den Benutzer warnt, die betroffene Ressource nicht zu verwenden, bis er neu startet:",
"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": "Referenz der Nachrichtenfunktionen",
"intro": "Alle definiert in <code>utils.sh</code>. Verwenden Sie sie als Standard für jede benutzersichtliche Ausgabe - konsistente Visuals über Skripte hinweg ist der springende Punkt. Wenn Ihr Skript eine neue Funktion benötigt, die nicht zum vorhandenen Set passt (ein neuer Schweregrad, ein neuer Layout-Helfer usw.), schlagen Sie es in Ihrem Pull Request vor - es wird überprüft und zu <code>utils.sh</code> hinzugefügt, wenn es allgemein nützlich ist.",
"headerFunction": "Funktion",
"headerWhen": "Wann zu verwenden",
"headerSpinner": "Fortschrittsanzeige",
"rows": [
{
"function": "msg_info \"text\"",
"whenRich": "Operation in Arbeit.",
"spinner": "Startet"
},
{
"function": "stop_spinner",
"whenRich": "Ende der stillen Vorbereitungsarbeiten in Phase 1 — tötet Spinner, löscht die Linie.",
"spinner": "Stoppt"
},
{
"function": "msg_ok \"text\"",
"whenRich": "Vorgang erfolgreich. Auch für „Funktion aktiviert“ verwenden, wenn noch ein Neustart erforderlich ist.",
"spinner": "Stoppt"
},
{
"function": "msg_warn \"text\"",
"whenRich": "Tatsächliche Warnung oder gestörter Zustand.",
"spinner": "Stoppt"
},
{
"function": "msg_error \"text\"",
"whenRich": "Schwerwiegender Fehler.",
"spinner": "Stoppt"
},
{
"function": "msg_info2 \"text\"",
"whenRich": "Nicht blockierender Hinweis (türkisfarbene Infozeile).",
"spinner": "Stoppt"
},
{
"function": "msg_success \"text\"",
"whenRich": "Abschließende Aufforderung „Enter zum Zurückkehren“ am Ende von Phase 2.",
"spinner": "Stoppt"
},
{
"function": "msg_title \"text\"",
"whenRich": "Fetter Titel mit eingebautem Abstand. Wird zu Beginn der Phase 2 verwendet.",
"spinner": "—"
},
{
"function": "show_proxmenux_logo",
"whenRich": "Leert den Bildschirm und zeigt das Logo. Zu Beginn von Phase 2 <em>einmal</em> aufrufen.",
"spinner": "—"
}
]
},
"dialogConventions": {
"heading": "Dialogkonventionen",
"bullets": [
"Geben Sie <code>--backtitle \"$BACKTITLE\"</code> immer an jeden <code>dialog</code>- und <code>whiptail</code>-Aufruf weiter. <code>$BACKTITLE</code> ist immer <code>\"ProxMenux\"</code> - einmal im Skript-Header gesetzt und nie außer Kraft gesetzt. Der Benutzer muss den Projektnamen immer als Framing-Kontext sehen, niemals den eigenen Titel des Skripts.",
"Verpacken Sie Titel und Nachrichten immer mit <code>$(translate \"...\")</code>.",
"Immer <code>dialog</code> Ausgabe mit <code>2&gt;&amp;1 &gt;/dev/tty</code> umleiten — die erfasste stdout wird die Auswahl des Benutzers, während der Dialog selbst auf das Terminal zieht.",
"Verwenden Sie die Standard-UI-Dimensionsvariablen (<code>$UI_MENU_H</code>, <code>$UI_MSG_W</code>, usw.) für eine konsistente Dimensionierung über Skripte hinweg.",
"Prüfen Sie immer auf leere oder abgebrochene Auswahlen und behandeln Sie diese sauber."
],
"exampleIntro": "Vollständiges Beispiel — Erstellung eines VM-Auswahlmenüs und Bearbeitung der Stornierung:",
"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": "Übersetzungspolitik",
"intro": "Alle vom Benutzer sichtbaren Zeichenfolgen müssen mit der <code>translate</code>-Funktion gewickelt sein. ProxMenux übersetzt sie automatisch in alle unterstützten Sprachen - Sie schreiben Englisch, der Benutzer liest seine Muttersprache.",
"code": "msg_ok \"$(translate \"Operation completed successfully.\")\"\nmsg_error \"$(translate \"Failed to start container\") $CTID.\"\ndialog --title \"$(translate \"Select Storage\")\" ...",
"bullets": [
"Schreibe Strings in Englisch – die Übersetzung wird automatisch vom Build bearbeitet.",
"Halten Sie Strings kurz. Vermeiden Sie das Einbetten von Variablen in lange Sätze, wenn möglich.",
"Variablennamen, Pfade oder technische Bezeichner <strong>nicht</strong>übersetzen."
]
},
"variableStyle": {
"heading": "Variable und Stilkonventionen",
"bullets": [
"Verwenden Sie <code>UPPER_CASE</code> für Variablen auf Skriptebene.",
"Verwenden Sie <code>lower_case</code> für lokale Funktionsvariablen (mit <code>local</code> deklarieren).",
"Setzen Sie alle Variablenexpansionen in Anführungszeichen: <code>\"$VAR\"</code> statt <code>$VAR</code>.",
"Verwenden Sie <code>[[ ]]</code> für Konditionale, nicht <code>[ ]</code> (außer wenn POSIX erforderlich ist).",
"<code>show_proxmenux_logo</code> ist der geeignete Weg, um den Bildschirm zu löschen - er enthält das Clear und zeigt das Projektlogo, so dass der Benutzer immer einen visuellen Kontext hat. Rufen Sie es einmal zu Beginn der Phase 2 (und optional vor einem langen Phase 1-Spinnerblock) auf."
],
"standardNamesIntro": "Standardvariablennamen im gesamten Projekt:",
"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": "Umleitung der Werkzeugausgabe während der Phase 2",
"redirectIntro": "Phase 2 zeigt ein sauberes Protokoll der <code>msg_info → msg_ok</code>-Zeilen an, die sich auf dem Bildschirm ansammeln. Wenn ein Tool, das Sie aufrufen (apt, mkfs, qm, pct, dd, etc.), seine eigene Ausgabe in stdout/stderr schreibt, scrollt es an Ihren Nachrichten vorbei und unterbricht den visuellen Fluss - Sie haben ein chaotisches Terminal, in dem der Benutzer die eigenen Fortschrittslinien des Skripts nicht vom Rauschen des zugrunde liegenden Tools unterscheiden kann.",
"withoutRedirectIntro": "<strong>Ohne Umleitung</strong>: die Ausgabe für Nutzer, wenn zusätzliche Werkzeugausgaben nicht abgefangen werden.",
"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": "<strong>Mit Umleitung</strong>: dieselbe Aktion, wenn zusätzliche Ausgaben an anderer Stelle landen.",
"withRedirectCode": "ℹ Installing kernel package...\n✓ Kernel installed.\nℹ Configuring kernel command line...\n✓ Configured.\nℹ Refreshing boot loader...\n✓ Boot loader updated.",
"twoPatternsIntro": "Zwei Muster zur Auswahl:",
"discardLead": "<strong>Ausgabe verwerfen</strong>, wenn sie nicht benötigt wird: die einfachste und schnellste Variante.",
"discardCode": "DEBIAN_FRONTEND=noninteractive apt-get install -y \"$package\" >/dev/null 2>&1",
"logLead": "<strong>Ausgabe in eine Protokolldatei schreiben</strong>, wenn Sie sie später prüfen möchten, etwa zur Fehlersuche bei einer Installation oder um dpkg-Aktionen nachzuvollziehen. Dies ist das bevorzugte Muster für apt-Aufrufe:",
"logCode": "apt-get install -y \"$package\" >> \"$log_file\" 2>&1",
"referenceOutro": "<code>scripts/global/update-pve9_2.sh</code> dient als Referenz: Jeder <code>apt-get</code>-Aufruf schreibt in eine Protokolldatei. Nutzer sehen nur den Ablauf <code>msg_info → msg_ok</code>, während die Datei bei Fehlern genau zeigt, was apt getan hat."
},
"dosAndDonts": {
"heading": "Do's und Don'ts",
"doHeading": "✅ Empfohlen",
"doBullets": [
"<code>stop_spinner</code> vor einem <code>dialog</code> in Phase 1 nur dann, wenn ein <code>msg_info</code> Spinner gerade läuft.",
"Phase 2 beginnt mit <code>show_proxmenux_logo + msg_title + msg_ok</code> als Zusammenfassung der Ergebnisse von Phase 1.",
"Verwenden Sie <code>msg_ok</code> für erfolgreich aktivierte Funktionen – auch wenn ein Neustart erforderlich ist.",
"Verwenden Sie <code>whiptail</code> (nicht <code>dialog</code>) für jede Aufforderung nach der Ausführung, die in Phase 2 erscheinen muss.",
"Fügen Sie immer einen \"Nein\" -Zweig in Reboot-Dialoge ein, der den Benutzer warnt, die betroffene Ressource bis zum Neustart nicht zu starten.",
"Schützen Sie die reine VM-Logik, indem Sie <code>[[ -f \"/etc/pve/qemu-server/$'{'vmid'}'.conf\" ]]</code> überprüfen - Controller und NVMe PCIe können nicht zu LXC-Containern hinzugefügt werden.",
"Verwenden Sie <code>ensure_repositories</code> von <code>utils-install-functions.sh</code> anstelle von bedingungslosem <code>apt-get update</code>.",
"Verwenden Sie parallele Arrays in Phase 1, wenn jedes Element mehrere Dialoge benötigt."
],
"dontHeading": "❌ Vermeiden",
"dontBullets": [
"Rufen Sie <code>dialog</code> an, während ein Spinner aktiv ist.",
"Überspringen Sie die Phase 1 Zusammenfassung zu Beginn der Phase 2.",
"Rufen Sie <code>show_proxmenux_logo</code> ein zweites Mal an - es löscht alles, was Phase 2 gedruckt hat.",
"Verwenden Sie <code>dialog</code> in Phase 2 (verwenden Sie <code>whiptail</code> für den seltenen unvermeidlichen Fall).",
"Verwenden Sie reine <code>clear</code>.",
"<code>msg_title</code> mit Leerzeilen aus <code>echo \"\"</code> umgeben; die Abstände sind bereits enthalten.",
"Verwenden Sie <code>msg_warn</code>, um eine erfolgreich aktivierte Funktion zu melden - das ist ein <code>msg_ok</code>.",
"Führen Sie bedingungslos <code>apt-get update</code> aus - verwenden Sie <code>ensure_repositories</code>."
]
},
"submitting": {
"heading": "Einreichen Ihres Beitrags",
"steps": [
"Fork <code>MacRimi/ProxMenux</code> auf GitHub und klonen Sie Ihre Fork.",
"Erstellen Sie einen <code>feature/*</code>-Zweig aus <code>develop</code> (siehe <em>Branching-Modell</em> oben).",
"Befolgen Sie diese Anleitung für neue oder geänderte Skripte. Schreiben Sie den Header mit Ihrem Namen; fügen Sie die optionale Sponsorenzeile hinzu, wenn Sie möchten.",
"Testen Sie Ihr Skript auf einer echten Proxmox VE-Instanz - sowohl Phase 1 (jeder Dialogzweig) als auch Phase 2 (jede Operation ist erfolgreich und wird bei Fehlern sauber zurückgesetzt).",
"Öffnen Sie eine Pull Request <strong> gegen <code>develop</code></strong> mit einer klaren Beschreibung: was das Skript macht, was sich geändert hat, auf welcher Proxmox VE-Version es getestet wurde.",
"Stellen Sie sicher, dass Ihr Beitrag den <cocLink>Code of Conduct</cocLink> respektiert."
],
"securityOutro": "Befolgen Sie bei sicherheitsrelevanten Problemen den Offenlegungsfluss in <securityLink>SECURITY.md</securityLink>, anstatt ein öffentliches Problem zu öffnen."
},
"whereNext": {
"heading": "Wohin als nächstes",
"items": [
{
"kind": "external",
"url": "https://github.com/MacRimi/ProxMenux/blob/main/CONTRIBUTING.md",
"label": "CONTRIBUTING.md (vollständige Anleitung)",
"tail": "— die Quelle der Wahrheit für jede Konvention, einschließlich der fortgeschrittenen Hardware-Muster."
},
{
"kind": "internal",
"href": "/docs/about/contributors",
"label": "Beitragende",
"tail": " — die Menschen, deren Arbeit ProxMenux-Versionen geprägt hat. Eine andere Seite als diese hier."
},
{
"kind": "internal",
"href": "/docs/about/code-of-conduct",
"label": "Verhaltenskodex",
"tail": "- die Standards, die jeder Mitwirkende zu befolgen bereit ist."
},
{
"kind": "external",
"url": "https://github.com/MacRimi/ProxMenux/discussions",
"label": "GitHub Discussions",
"tail": "Fragen Sie, bevor Sie bauen, ob Sie nicht sicher sind, ob eine Idee passt, oder um Mitarbeiter für ein größeres Feature zu finden."
}
]
}
}
@@ -0,0 +1,38 @@
{
"meta": {
"title": "Mitwirkende | ProxMenux-Dokumentation",
"description": "Anerkennung für die Menschen, die ProxMenux möglich machen: Tester, Reviewer und Entwickler, die jede Version mitgestalten.",
"ogTitle": "Mitwirkende | ProxMenux-Dokumentation",
"ogDescription": "Treffen Sie die Mitwirkenden hinter ProxMenux."
},
"header": {
"title": "Mitwirkende",
"description": "Das ProxMenux-Projekt wächst dank seiner Mitwirkenden. Diese Seite würdigt ihre Arbeit: Versionen vor der Veröffentlichung testen, Regressionen erkennen, PRs prüfen und die Entwicklung neuer Funktionen mitgestalten.",
"section": "Über"
},
"beyond": {
"title": "Weitere Mitwirkende",
"body": "Viele weitere Menschen helfen mit Fehlermeldungen, Funktionsideen in Discussions, Beta-Tests und Übersetzungen. Die vollständige Liste der Code-Mitwirkenden steht im <extlink>GitHub-Mitwirkendendiagramm</extlink>. Diese Seite hebt diejenigen hervor, die besonders aktiv ProxMenux-Versionen testen und prüfen."
},
"testers": {
"heading": "Tester & Reviewer",
"intro": "Diese Personen gehörten zu den ersten Mitwirkenden. Mit Tests, Fehlermeldungen und Verbesserungsvorschlägen halfen sie ProxMenux dabei, zu dem zu werden, was es heute ist.",
"roles": {
"testing": "Testen",
"testingReviewer": "Tests und Review"
},
"youtube": "YouTube"
},
"contribute": {
"heading": "Möchten Sie dazu beitragen?",
"intro": "Jeder Beitrag ist willkommen - Code, Testen, Design, Dokumentation oder einfach nur das Teilen Ihrer Ideen:",
"tester": "<strong>Tester</strong> — probieren Sie den <beta>Beta-Kanal</beta> aus und melden Sie vor der stabilen Veröffentlichung, was funktioniert und was nicht.",
"developer": "<strong>Entwickler</strong> — Bash, Next.js (TypeScript) und etwas Python für die virtuelle Übersetzungsumgebung (venv). PRs auf <gh>GitHub</gh> sind willkommen.",
"designer": "<strong>Designer</strong> — Verbesserungen der Benutzeroberfläche, Icons, Screenshots zur Dokumentation.",
"ideas": "<strong>Ideen</strong> — eröffnen Sie zuerst ein Thema in <disc>GitHub Discussions</disc>, bevor Sie einen Funktionswunsch als Issue einreichen."
},
"coc": {
"title": "Lesen Sie zuerst den Verhaltenskodex",
"body": "Lesen Sie vor dem Einreichen von Code oder Fehlermeldungen kurz den <coclink>Verhaltenskodex und die bewährten Vorgehensweisen</coclink>. Darin werden die Verantwortung für Code, die Meldung von Sicherheitslücken und der Umfang von PRs erläutert."
}
}
+94
View File
@@ -0,0 +1,94 @@
{
"meta": {
"title": "Häufige Fragen | ProxMenux-Dokumentation",
"description": "Häufige Fragen zu ProxMenux: Funktionsumfang, Installation, Kompatibilität ab PVE 8, Anpassung, Updates, Sicherheit, Produktionseinsatz, Systemdateien, Beiträge und Deinstallation.",
"ogTitle": "Häufige Fragen | ProxMenux-Dokumentation",
"ogDescription": "Häufige Fragen zu Installation, Kompatibilität, Sicherheit und Beiträgen zu ProxMenux."
},
"header": {
"title": "Häufig gestellte Fragen",
"description": "Häufige Fragen zu ProxMenux: Funktionsumfang, Zielgruppe, Installation, Updates, Deinstallation, Kompatibilität, Anpassung, Sicherheit und Beiträge. Fehlt Ihre Frage, sehen Sie in GitHub Discussions nach oder erstellen Sie ein Issue.",
"section": "Über"
},
"quickLinks": {
"title": "Schnelle Links",
"installationLabel": "Installation",
"installationSuffix": "— der One-Line-Installationsbefehl + Abhängigkeiten.",
"introductionLabel": "Einleitung",
"introductionSuffix": "— was ProxMenux tut, in 5 Minuten.",
"uninstallLabel": "Deinstallieren",
"uninstallSuffix": "— sauberes Entfernen.",
"issuesLabel": "GitHub Issues",
"discussionsLabel": "Diskussionen"
},
"q1": {
"question": "Was ist ProxMenux und wofür wird es verwendet?",
"p1Rich": "<strong>ProxMenux</strong> ist ein interaktives menügesteuertes Tool, das <strong>Proxmox VE</strong> für alle Benutzer unabhängig von ihrer technischen Erfahrung zugänglich macht. Es vereinfacht die Befehlsausführung und ermöglicht es Benutzern, Aktionen auf ihrem System durchzuführen, ohne dass fortgeschrittene Linux-Kenntnisse erforderlich sind.",
"p2": "Weniger erfahrene Benutzer können Befehle über übersichtliche Menüs ausführen und müssen seltener selbst im Terminal tippen. Erfahrenen Administratoren erspart ProxMenux Eingaben bei wiederkehrenden Aufgaben wie der Absicherung nach der Installation, GPU-Passthrough, OVF-VM-Importen und der Rotation von ZFS-Snapshots.",
"p3": "Proxmox VE ist weit verbreitet für:",
"items": [
"Virtualisierung auf Unternehmensebene",
"HomeLab und persönliche Cloud-Lösungen",
"Multimedia-Server, Automatisierung und mehr"
]
},
"q2": {
"question": "Wie installiere ich ProxMenux?",
"p1Rich": "Folgen Sie der <installlink>Installationsanleitung</installlink>. Kurz zusammengefasst:",
"stableInstall": "bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\"",
"p2": "Einmal installiert, starten Sie es einfach mit:",
"menuCmd": "menu"
},
"q3": {
"question": "Ist ProxMenux mit allen Proxmox-Versionen kompatibel?",
"bodyRich": "<strong>Nein — ProxMenux benötigt Proxmox VE 8 oder neuer.</strong> PVE 7 und ältere Versionen werden nicht unterstützt. Aktualisieren Sie PVE 7 zunächst nach der offiziellen Proxmox-Anleitung auf 8.x. Den anschließenden Wechsel von 8 auf 9 können Sie über <upgradelink>Werkzeuge → PVE 8 auf PVE 9 aktualisieren</upgradelink> in ProxMenux durchführen."
},
"q4": {
"question": "Kann ich ProxMenux anpassen?",
"p1Rich": "Lokale Änderungen an den Hauptskripten können beim Aktualisieren überschrieben werden. Bearbeiten Sie diese Dateien daher möglichst nicht direkt. Folgendes <em>können</em> Sie anpassen:",
"items": [
"Das Konsolenbanner über das <strong>FastFetch</strong> Tool in den Post-Install-Optionen.",
"Welche optionalen Komponenten installiert werden (Monitor, Fail2Ban, Lynis...) – wählen Sie während der Installation oder später über das entsprechende Menü aus."
]
},
"q5": {
"question": "Wie aktualisiere ich ProxMenux?",
"p1Rich": "Wenn eine neue Version verfügbar ist, erkennt ProxMenux sie beim nächsten Aufruf von <code>menu</code> und bietet ein Update an. Stimmen Sie zu, werden die Dateien und die Konfiguration des Werkzeugs in der bestehenden Installation ersetzt. Ein manueller Download ist nicht nötig.",
"p2Rich": "Benutzer der stabilen Version erhalten stabile Updates, Beta-Benutzer die Beta-Updates. Sobald eine stabile Version erscheint, informiert die Beta beim nächsten Menüstart darüber und bietet den automatischen Wechsel an. Weitere Informationen finden Sie im <betalink>Beta-Programm</betalink>."
},
"q6": {
"question": "Wo kann ich Probleme melden?",
"p1Rich": "Melden Sie Fehler über <issueslink>GitHub Issues</issueslink>. Beschreiben Sie die Schritte zum Reproduzieren, den Fehlertext und gegebenenfalls die Monitor-Ausgabe von <code>journalctl -u proxmenux-monitor -n 50</code>.",
"p2Rich": "Bei <strong>Sicherheitsproblemen</strong>: <strong>Veröffentlichen Sie keine Details</strong>. Folgen Sie dem Verfahren zur verantwortungsvollen Meldung im <coclink>Verhaltenskodex und den bewährten Vorgehensweisen</coclink>."
},
"q7": {
"question": "Kann ich zu ProxMenux beitragen?",
"p1Rich": "<strong>Unbedingt.</strong> ProxMenux ist ein gemeinschaftliches Open-Source-Projekt. Beiträge sind als Code (Bash, Next.js/TypeScript und Python-Übersetzungswerkzeuge), Tests, Dokumentation, Design oder Ideen willkommen.",
"item1Rich": "Besprechen Sie Ideen in <discusslink>GitHub Discussions</discusslink>, bevor Sie eine Feature Request öffnen.",
"item2Rich": "Lesen Sie vor einem Pull Request den <coclink>Verhaltenskodex und die bewährten Vorgehensweisen</coclink>.",
"item3Rich": "Auf der <contriblink>Mitwirkendenseite</contriblink> finden Sie die aktuellen Tester und Reviewer."
},
"q8": {
"question": "Ändert ProxMenux kritische Systemdateien?",
"p1Rich": "<strong>Bei der Installation von ProxMenux werden folgende Komponenten hinzugefügt.</strong>",
"item1Rich": "Abhängigkeiten über apt: <code>dialog</code>, <code>curl</code>, <code>jq</code> und <code>git</code>. Die Übersetzungen verwenden vorgefertigte JSON-Kataloge. Der Installer legt auf dem Host keine virtuelle Python-Umgebung für Übersetzungen an.",
"item2Rich": "Der Skriptbaum bei <code>/usr/local/share/proxmenux/</code>.",
"item3Rich": "Das Startskript unter <code>/usr/local/bin/menu</code>.",
"item4Rich": "Optional: der systemd-Dienst von Monitor unter <code>proxmenux-monitor.service</code>.",
"p2Rich": "ProxMenux verändert die zentrale Proxmox-Konfiguration <em>nicht</em>, es sei denn, Sie fordern dies ausdrücklich über ein entsprechendes Menü an. Die Netzwerkreparatur bearbeitet beispielsweise <code>/etc/network/interfaces</code>, jedoch erst nach Ihrer Bestätigung und dem Anlegen einer Sicherung."
},
"q9": {
"question": "Ist es sicher, ProxMenux in der Produktion zu verwenden?",
"bodyRich": "<strong>Ja.</strong> Da ProxMenux die zentralen Proxmox-Dateien nur auf ausdrücklichen Wunsch verändert, kann es in Produktionsumgebungen eingesetzt werden. Testen Sie automatisierte Abläufe zunächst in einer kontrollierten Umgebung und erstellen Sie Sicherungen, bevor Sie destruktive Vorgänge ausführen, etwa das Upgrade von PVE 8 auf 9, das Formatieren eines Datenträgers oder das Löschen einer VM."
},
"q10": {
"question": "Wie deinstalliere ich ProxMenux?",
"p1Rich": "In ProxMenux: <strong>Einstellungen → ProxMenux deinstallieren</strong>. Die Deinstallation entfernt den Skriptbaum, das Startskript und den Monitor-Dienst sowie auf Wunsch ausgewählte Abhängigkeiten. <code>/root/.bashrc</code> und <code>/etc/motd</code> werden aus den von Post-Install angelegten Sicherungen wiederhergestellt, sofern diese vorhanden sind (andernfalls wird die ProxMenux-Zeile aus der MOTD entfernt).",
"p2Rich": "Die vollständige Anleitung finden Sie unter <uninstalllink>ProxMenux deinstallieren</uninstalllink>."
},
"q11": {
"question": "VirusTotal markiert die Installations-URL - ist es sicher?",
"p1Rich": "Der in Issue #162 gemeldete Treffer von <em>Chong Lua Dao</em> bei 1 von 95 Prüfungen wurde vom Maintainer als Fehlalarm eingestuft. Der Installer wird mit einem Befehl gestartet, der das Skript herunterlädt und ausführt (<code>bash -c \"$(wget -qLO - …)\"</code>) und kann <code>jq</code> aus dessen offizieller GitHub-Veröffentlichung herunterladen. Dieses <em>Verhalten</em> kann heuristische Scanner auslösen. Der damalige Bericht ist keine Bewertung aller künftigen Downloads.",
"p2Rich": "ProxMenux ist vollständig quelloffen. Sie können das Installationsskript Zeile für Zeile prüfen: <scriptlink>install_proxmenux.sh</scriptlink>. Weitere Hintergründe finden Sie in <issuelink>Issue #162</issuelink>."
}
}
+67
View File
@@ -0,0 +1,67 @@
{
"meta": {
"title": "Über das Projekt | ProxMenux-Dokumentation",
"description": "Über ProxMenux: Projektziele, Mitwirkende, FAQ und Verhaltenskodex. Open-Source-Menümanagement-Tool für Proxmox VE 8+, erstellt und gepflegt von MacRimi mit einem kleinen Team von Testern und Mitwirkenden.",
"ogTitle": "Über das Projekt | ProxMenux-Dokumentation",
"ogDescription": "Über ProxMenux — ein menügesteuertes Open-Source-Werkzeug zur Verwaltung von Proxmox VE 8+."
},
"header": {
"title": "Über",
"description": "Projektinformationen, FAQ, Mitwirkende und Verhaltenskodex. ProxMenux ist ein Open-Source-Menümanagement-Tool für Proxmox VE 8+, das von MacRimi mit Hilfe eines kleinen Teams von Testern und Mitwirkenden entwickelt und gewartet wird.",
"section": "Über"
},
"callout": {
"title": "Open Source, von der Community getragen",
"body": "ProxMenux steht unter der GPL-3.0-Lizenz und wird öffentlich auf GitHub entwickelt. Jedes Skript lässt sich prüfen, jede Änderung nachvollziehen. Beiträge in Form von Fehlermeldungen, Ideen, Code und Tests sind willkommen."
},
"section": {
"heading": "In diesem Abschnitt",
"options": [
{
"icon": "HelpCircle",
"href": "/docs/about/faq",
"title": "FAQ",
"description": "Häufig gestellte Fragen: Was ist ProxMenux, Installation, Kompatibilität, Anpassung, Updates, Sicherheit, Produktionsnutzung, Deinstallation."
},
{
"icon": "Users",
"href": "/docs/about/contributors",
"title": "Mitwirkende",
"description": "Anerkennung für die Menschen, die ProxMenux möglich machen: Tester, Reviewer und Entwickler, die jede Version mitgestalten."
},
{
"icon": "ScrollText",
"href": "/docs/about/code-of-conduct",
"title": "Verhaltenskodex",
"description": "Projektwerte, Verantwortung für eingereichten Code und Beitragsrichtlinien. Pflichtlektüre vor dem Einreichen eines PR oder einer Fehlermeldung."
}
]
},
"involved": {
"heading": "Beteiligen Sie sich",
"intro": "Drei Orte, um sich mit dem Projekt zu beschäftigen:",
"cards": [
{
"href": "https://github.com/MacRimi/ProxMenux/issues/new",
"title": "🐛 Einen Bug melden",
"description": "GitHub Issues — fügen Sie Protokolle und Schritte zum Nachstellen bei."
},
{
"href": "https://github.com/MacRimi/ProxMenux/discussions",
"title": "💡 Schlagen Sie ein Feature vor",
"description": "GitHub Discussions — teilen Sie Ideen, bevor Sie eine PR öffnen."
},
{
"href": "https://github.com/MacRimi/ProxMenux/pulls",
"title": "🔀 Einen PR einreichen",
"description": "GitHub Pull Requests – lesen Sie zuerst den Verhaltenskodex."
}
]
},
"support": {
"heading": "Unterstützung des Projekts",
"introRich": "Wenn ProxMenux Ihnen Zeit spart, ist der einfachste Weg, anderen zu helfen, es zu entdecken, <starlink> dem Repo ein ⭐ auf GitHub</starlink> zu geben. Wenn Sie weiter gehen wollen:",
"kofiLabel": "Auf Ko-fi unterstützen",
"kofiOutro": "- kauft dem Betreuer einen Kaffee und hält die Entwicklung am Laufen."
}
}
@@ -0,0 +1,220 @@
{
"meta": {
"title": "Backups erstellen – interaktiver Backup-Flow | ProxMenux",
"description": "Der interaktive Backup-Ablauf in ProxMenux: zwei Einstiegspunkte (das TUI-Menü von Scripts und die Weboberfläche von Monitor), drei Ziele, zwei Profilmodi, ein gemeinsamer Vorbereitungsschritt und ein Bestätigungsdialog. Beschrieben werden die Matrix mit sechs Optionen, das Standardprofil und das benutzerdefinierte Profil sowie die Schritte von der Auswahl eines Backups bis zum Speichern des Archivs am Ziel.",
"ogTitle": "ProxMenux Backup — Erstellen von Backups",
"ogDescription": "Der interaktive Backup-Flow mit drei Destinationen, zwei Profilen und einem gemeinsamen Staging-Schritt.",
"twitterTitle": "Backups erstellen | ProxMenux",
"twitterDescription": "Interaktiver Backup-Flow mit drei Zielen und zwei Profilmodi."
},
"header": {
"title": "Backups erstellen",
"description": "Der interaktive Backup-Ablauf: Wählen Sie ein Ziel und ein Profil, prüfen Sie die Zusammenfassung und verfolgen Sie, wie das Archiv gespeichert wird. Beide Einstiegspunkte verwenden dasselbe Backend und erzeugen identische Archive.",
"section": "Sicherung und Wiederherstellung"
},
"intro": {
"title": "Zwei Einstiegspunkte, identische Funktionalität",
"body": "Die TUI von Scripts und die Weboberfläche von Monitor bieten <strong>genau dieselben Funktionen</strong>. Jedes Backup — manuell oder geplant — durchläuft dieselbe Auswahlmatrix (drei Ziele × zwei Profile) und ruft pro Zelle dieselbe Backend-Funktion auf (<code>_bk_pbs</code>, <code>_bk_borg</code> oder <code>_bk_local</code>). Die über beide Einstiegspunkte erzeugten Archive sind nicht zu unterscheiden. Die Wahl ist Geschmackssache: Die TUI eignet sich für SSH und Skripte; Monitor bietet Mausbedienung sowie Ansichten für Benachrichtigungen und laufende Protokollausgaben."
},
"entryPoints": {
"heading": "Die beiden Eingangspunkte",
"rows": [
{
"entry": "ProxMenux Scripts (TUI)",
"path": "menu → Utilities → Host Config Backup",
"detail": "Dialogbasierter Flow, SSH-freundlich. Das Hauptmenü präsentiert die sechs Optionen direkt. Verwendet <code>backup_menu</code> in <code>backup_host.sh</code>."
},
{
"entry": "ProxMenux Monitor (Weboberfläche)",
"path": "Backups tab → Create backup",
"detail": "Assistentengestützter Ablauf. Dieselben sechs Optionen erscheinen als zweistufiges Formular (Ziel → Profil). Über die Flask-API werden dieselben Backend-Funktionen aufgerufen."
}
]
},
"modes": {
"heading": "Manuelle vs. geplante Backups",
"body": "Backups können in zwei Modi erstellt werden: <strong>manuell</strong> (der interaktive Fluss, den diese Seite dokumentiert - der Benutzer wählt ein Ziel und ein Profil aus einem Menü aus und verfolgt das Speichern des Archivs) oder <strong>geplant</strong> (ein unbeaufsichtigter Job, der auf einem Cron-Timer läuft und die für den Job konfigurierte Aufbewahrung anwendet). Beide Modi unterstützen die gleichen drei Ziele und die gleichen zwei Profile, und beide sind von beiden Einstiegspunkten verfügbar - dem Scripts TUI-Menü und der Registerkarte Monitor-Backups. Geplante Jobs verwenden die gleichen Backend-Funktionen wie der manuelle Ablauf durch <code>run_scheduled_backup.sh</code>; die produzierten Archive sind nicht zu unterscheiden.",
"seeAlso": "Die Seite mit geplanten Aufträgen deckt den gesamten Ablauf ab, einschließlich der Art und Weise, wie Sie einen Auftrag erstellen, ihn an einen vorhandenen PVE vzdump-Timer anhängen und die Retentionswerte konfigurieren.",
"monitorAlt": "ProxMenux Monitor Backups Registerkarte zeigt den Neuen geplanten Backup-Dialog mit Ziel, Profil, Zeitplan und Aufbewahrungsfelder.",
"monitorCaption": "Geplantes Backup — ProxMenux Monitor. Derselbe Wizard-Dialog, der ein manuelles Backup erstellt, trägt die Zeitplan- und Aufbewahrungsfelder unten für den unbeaufsichtigten Pfad."
},
"matrix": {
"heading": "Die Matrix mit sechs Optionen",
"intro": "Die Auswahl bestimmt sowohl das ausgeführte Backend als auch die Strategie zur Pfadauswahl. Die zielspezifischen Seiten erläutern die Konfiguration jeder Zelle.",
"rows": [
{
"combo": "1",
"destination": "PBS",
"profile": "Standard",
"action": "Lädt das Standardprofil plus persistente Extras in ein konfiguriertes PBS-Repository hoch."
},
{
"combo": "2",
"destination": "Borg",
"profile": "Standard",
"action": "Erstellt ein Archiv mit dem Standardprofil plus persistenten Extras im ausgewählten Borg-Repository."
},
{
"combo": "3",
"destination": "Lokal",
"profile": "Standard",
"action": "Schreibt ein <code>.tar.zst</code>-Archiv mit dem Standardprofil plus persistenten Extras an das konfigurierte lokale Ziel."
},
{
"combo": "4",
"destination": "PBS",
"profile": "Benutzerdefiniert",
"action": "Öffnet vor dem PBS-Upload die Pfadauswahl; der Benutzer markiert die gewünschten Pfade und kann neue hinzufügen."
},
{
"combo": "5",
"destination": "Borg",
"profile": "Benutzerdefiniert",
"action": "Öffnet den Pfadwähler, bevor das Borg-Archiv erstellt wird."
},
{
"combo": "6",
"destination": "Lokal",
"profile": "Benutzerdefiniert",
"action": "Öffnet den Pfadwähler vor dem Schreiben des lokalen <code>.tar.zst</code>."
}
]
},
"profiles": {
"heading": "Standardprofil und benutzerdefiniertes Profil",
"defaultTitle": "Standardprofil",
"defaultBody": "Das Standardprofil ist die kuratierte Liste aus <code>hb_default_profile_paths</code> (dokumentiert in <em>Funktionsweise</em> unter <em>Pfadkategorien</em>) sowie jeder Eintrag in der persistenten Extras-Datei <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. Der Benutzer bestätigt die Ziel- und Verschlüsselungsoptionen und das Backup verläuft ohne weitere Pfadauswahl.",
"customTitle": "Benutzerdefiniertes Profil",
"customBody": "Das benutzerdefinierte Profil öffnet eine Checkliste mit allen Pfaden des Standardprofils (nicht markiert) und allen persistenten Extras (vormarkiert, mit dem Präfix <code>[+]</code>). Der Benutzer markiert die Pfade für diesen Durchlauf und kann über <em>Benutzerdefinierten Pfad hinzufügen</em> einen neuen absoluten Pfad ergänzen. Jeder dabei hinzugefügte Pfad wird in <code>backup-extra-paths.txt</code> gespeichert, damit künftige Backups ihn automatisch berücksichtigen. Das Abwählen eines persistenten Extras gilt nur für diesen Durchlauf und löscht es nicht aus der Datei — dafür gibt es außerhalb des Backup-Ablaufs die separate Aktion <em>Benutzerdefinierte Pfade verwalten</em>.",
"customPickerAlt": "Benutzerdefinierte Profil-Checkliste mit den Standard-Profilpfaden (nicht markiert) und persistenten Extras (vormarkiert mit einem [+]-Präfix) sowie Schaltflächen, um einen neuen Pfad hinzuzufügen oder die Auswahl zu bestätigen.",
"customPickerCaption": "Benutzerdefiniertes Profil — die Pfadauswahl. Die Pfade des Standardprofils sind nicht markiert; persistente Extras sind mit dem Präfix [+] vormarkiert. Der Benutzer markiert die Pfade für diesen Durchlauf.",
"manageCustomAlt": "Menü zur Verwaltung benutzerdefinierter Pfade mit der Liste persistenter Extras und Optionen zum Hinzufügen, Entfernen und Bearbeiten.",
"manageCustomCaption": "Benutzerdefinierte Pfade verwalten - der Einstiegspunkt, an dem persistente Extras hinzugefügt oder entfernt werden. Jeder hier aufgeführte Pfad wird automatisch in Backups im Standardmodus aufgenommen, ohne dass die benutzerdefinierte Pfadauswahl geöffnet werden muss."
},
"commonPipeline": {
"heading": "Was läuft unabhängig vom Ziel",
"intro": "Nachdem das Profil aufgelöst wurde, führt jedes Backend die gleiche Staging-Pipeline aus, bevor es in seinen eigenen Upload-Pfad divergiert. <code>hb_prepare_staging</code> stellt den Archivbaum in <code>/tmp/proxmenux-DESTINATION-stage.XXXXXX</code> zusammen und füllt jede der drei Nutzlasten aus.",
"steps": [
{
"step": "1",
"name": "rootfs zusammenstellen",
"detail": "Führt <code>rsync -a</code> für jeden ausgewählten Pfad in <code>staging_root/rootfs/</code> aus. Die pmxcfs-Datenbank bei <code>/var/lib/pve-cluster/config.db</code> wird separat über <code>sqlite3 .backup</code> erfasst, um einen konsistenten Snapshot zu erstellen, ohne den Cluster zu stoppen, und die <code>.db-wal</code> / <code>.db-shm</code> Sidecars sind vom rsync ausgeschlossen; Wenn <code>sqlite3</code> nicht verfügbar ist, wird stattdessen eine Datei <code>config.db.raw-fallback</code> abgelegt, die bei der Wiederherstellung während des Imports als Datenbank übernommen wird. Flüchtige Subpfade (Bash-Historie, Caches, Trash) sind von <code>/root/</code> ausgeschlossen. Pfade, die in der Quelle fehlen, werden in <code>metadata/missing_paths.txt</code> aufgezeichnet, ohne das Backup zu stoppen."
},
{
"step": "2",
"name": "Manifest erstellen",
"detail": "<code>build_manifest.sh</code> steuert die sechs Datensammler und schreibt <code>manifest.json</code> in das Hauptverzeichnis des Staging-Bereichs. Fällt ein Datensammler aus, erhält der betroffene Abschnitt einen dokumentierten leeren Standardwert; das Manifest bleibt gültig."
},
{
"step": "3",
"name": "Paketbestand",
"detail": "<code>apt-mark showmanual</code> wird wortwörtlich in <code>metadata/packages.manual.list</code> erfasst. Der Komponentenzustand befindet sich bereits innerhalb der wiederhergestellten Rootfs (<code>components_status.json</code>), da <code>/usr/local/share/proxmenux/</code> Teil des Standardprofils ist."
},
{
"step": "4",
"name": "Informationen zum Durchlauf",
"detail": "<code>metadata/run_info.env</code> zeichnet die Backup-Laufidentität (Hostname, Zeitstempel, Kernelversion) auf, die von der Kompatibilitätsprüfung der Wiederherstellung zur Bestimmung der kernübergreifenden Richtung verwendet wird."
},
{
"step": "5",
"name": "Mitteilung (Beginn)",
"detail": "<code>hb_notify_lifecycle \"start\"</code> wird ausgelöst. Sind im Monitor Benachrichtigungen konfiguriert, wird das Ereignis <em>Host-Backup gestartet</em> für den Benutzer ausgegeben. Ohne konfigurierte Kanäle erfolgt keine Benachrichtigung."
}
]
},
"included": {
"heading": "Was reingeht und was draußen bleibt",
"intro": "Jeder Pfad im aufgelösten Profil (Standard + persistente Extras + Custom-Mode-Auswahl) wird mit <code>rsync -aAXH --numeric-ids</code> kopiert. Eine gemeinsame Ausschlussliste gilt für jeden Pfad, und zwei Verzeichnisse tragen zusätzliche pfadspezifische Ausschlüsse.",
"globalTitle": "Globale Ausschlüsse (auf jeden Pfad angewendet)",
"globalItems": [
"<code>images/</code> — Image Dumps.",
"<code>dump/</code> — Ausgaben von vzdump.",
"<code>tmp/</code> — temporäre Dateien.",
"<code>*.log</code> — Protokolldateien."
],
"rootTitle": "<code>/root/</code> Ausschlüsse",
"rootBody": "<code>/root/</code> ist Teil des Standardprofils, sodass Benutzerskripte und Konfigurationen im Archiv landen. Flüchtige Subpfade werden fallen gelassen:",
"rootItems": [
"<code>.bash_history</code>",
"<code>.cache/</code>",
"<code>tmp/</code>",
"<code>.local/share/Trash/</code>"
],
"proxmenuxTitle": "<code>/usr/local/share/proxmenux/</code> Ausschlüsse",
"proxmenuxBody": "Dieses Verzeichnis liefert nur Benutzerstatus - <code>components_status.json</code>, Einstellungen, Cache nach der Installation. Code, den das Ziel bereits von seiner eigenen ProxMenux-Installation haben wird, ist ausgeschlossen, so dass eine Wiederherstellung die aktuellen Binärdateien des Ziels nicht mit älteren überschreibt:",
"proxmenuxItems": [
"<code>restore-pending/</code>, <code>scripts/</code>, <code>web/</code>",
"<code>monitor-app/</code>, <code>monitor-app.*/</code>, <code>AppImage/</code>",
"<code>images/</code>, <code>json/</code>",
"<code>utils.sh</code>, <code>helpers_cache.json</code>",
"<code>ProxMenux-Monitor.AppImage*</code>, <code>install_proxmenux*.sh</code>"
],
"notInProfileTitle": "Pfade außerhalb des Profils",
"notInProfileBody": "Alles, was nicht in <code>hb_default_profile_paths</code> aufgeführt ist und nicht als benutzerdefiniertes oder persistentes Extra hinzugefügt wurde, ist nicht Teil des Backups. Bemerkenswerte Beispiele:",
"notInProfileItems": [
"<strong>VM und LXC Festplatten</strong> — werden von <code>vzdump</code> behandelt, nicht von dieser Funktion. Gastkonfigurationsdateien unter <code>/etc/pve/nodes/*/qemu-server/*.conf</code> und <code>lxc/*.conf</code> werden erfasst (sie leben unter <code>/etc/pve</code>), so dass die Wiederherstellung das Inventar reproduziert; die Festplatten selbst werden von einem vorhandenen vzdump / PBS-Backup neu angehängt.",
"<strong><code>/boot</code> und <code>/boot/efi</code></strong> — Kernel-Binärdateien, Initramfs und die UEFI-ESP-Partition werden nach der Wiederherstellung durch die eigenen <code>update-initramfs</code>, <code>update-grub</code> oder <code>proxmox-boot-tool refresh</code> des Ziels regeneriert. Der Bootloader wird niemals wörtlich kopiert.",
"<strong>Kernel und Systemlaufzeit-Dateisysteme</strong> — <code>/proc</code>, <code>/sys</code>, <code>/dev</code> und <code>/run</code> sind Pseudo-Dateisysteme, die vom Kernel und von udev erzeugt werden; sie werden nirgendwo persistent.",
"<strong>Paket-Binärdateien unter <code>/usr/bin</code>, <code>/usr/lib</code>, <code>/lib</code>, <code>/sbin</code></strong> — vom APT des Ziels aus <code>packages.manual.list</code> neu installiert.",
"<strong><code>/var/log/</code>, <code>/var/tmp/</code>, <code>/var/cache/</code></strong> — Laufzeitzustand pro Host, nicht wiederhergestellt.",
"<strong><code>/home/USER</code></strong> — nicht im Standardprofil. Fügen Sie es als benutzerdefinierten Pfad hinzu, wenn ein System Heimverzeichnisse des Benutzers trägt, die eine Wiederherstellung überleben müssen."
],
"customPathsTitle": "Wie benutzerdefinierte Pfade gehandhabt werden",
"customPathsBody": "Ein benutzerdefinierter Pfad, der im benutzerdefinierten Modus hinzugefügt wurde oder in <code>backup-extra-paths.txt</code> persistiert wurde, durchläuft dieselbe <code>rsync</code>-Pipeline wie Standardprofilpfade. Globale Ausschlüsse gelten. Wenn der benutzerdefinierte Pfad unter <code>/root/</code> oder <code>/usr/local/share/proxmenux/</code> liegt, gelten die oben genannten pfadspezifischen Ausschlüsse weiterhin. Jeder archivierte Pfad – standardmäßig oder benutzerdefiniert – wird in <code>metadata/paths_archived.txt</code> aufgezeichnet. Pfade, die in der Quelle nicht vorhanden sind, werden in <code>metadata/missing_paths.txt</code> aufgezeichnet, ohne das Backup zu stoppen."
},
"archiveStructure": {
"heading": "Archivstruktur",
"intro": "Das von jedem Backend erstellte Staging-Verzeichnis folgt unabhängig vom Ziel dem gleichen Layout. Das Tarball-, PBS <code>.pxar</code> oder Borg-Archiv speichert diesen Baum wortwörtlich.",
"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│ ├── paths_archived.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": "Bestätigungszusammenfassung",
"body": "Bevor das Backend etwas an das Ziel schreibt, zeigt ProxMenux einen zusammenfassenden Dialog mit dem Ziel, der Backup-ID oder dem Archivnamen, dem Verschlüsselungsstatus und der Liste der zu kopierenden Pfade an. Das Abbrechen hier bricht das Backup sauber ab - das Staging-Verzeichnis wird durch den <code>trap</code>-Hook entfernt, der auf der Backend-Funktion eingestellt ist, und keine Teildaten erreichen das Ziel."
},
"writing": {
"heading": "Schreiben an den Bestimmungsort",
"intro": "Sobald der Benutzer bestätigt, führt jedes Backend seinen eigenen Schreibschritt aus. Die Mechanik wird auf den Zielseiten behandelt; die gemeinsame Oberfläche ist das Protokoll, das Sidecar und die Abschlussbenachrichtigung.",
"rows": [
{
"topic": "Protokolldatei",
"detail": "Jedes Backend schreibt seine vollständige Ausgabe in <code>/tmp/proxmenux-DESTINATION-backup-YYYYMMDD_HHMMSS.log</code> und bietet bei Ausfall an, sie in einem scrollbaren Dialog zu öffnen. Der Protokollpfad wird in der Abschlusszusammenfassung nur dann gedruckt, wenn die Datei Inhalt hat."
},
{
"topic": "Begleitdatei (nur lokal)",
"detail": "<code>hb_write_archive_sidecar</code> legt einen <code>*.proxmenux.json</code> neben das lokale Archiv, so dass der Monitor ihn als ProxMenux-Host-Backup auch nach Umzügen oder Umbenennungen identifiziert."
},
{
"topic": "Benachrichtigung (Abschluss/Fehler)",
"detail": "<code>hb_notify_lifecycle \"complete\"</code> oder <code>\"fail\"</code> wird mit Dauer, Archivgröße und — bei Fehlern — der letzten nach einem Fehler aussehenden Protokollzeile ausgelöst."
}
]
},
"finishedScreens": {
"heading": "Wie ein fertiges Backup aussieht",
"intro": "Das gleiche Abschlussereignis wird an beiden Einstiegspunkten angezeigt. Die TUI schreibt einen Zusammenfassungsblock in das Terminal; die Registerkarte Backups des Monitors zeigt den Ablauf in der Archivliste mit Größe, Dauer und Statusabzeichen an.",
"scriptsAlt": "ProxMenux Scripts TUI zeigt ein fertiges Host-Backup an - Ziel, Backup-ID, Snapshot-Pfad, Datengröße, Dauer und Verschlüsselungszustand.",
"scriptsCaption": "Abgeschlossenes Backup — ProxMenux Scripts (TUI). Der Vervollständigungsblock druckt das Ziel, die Backup-ID, den resultierenden Snapshot- oder Archivnamen, die Datengröße, die Dauer und den Verschlüsselungszustand.",
"monitorAlt": "Die Registerkarte ProxMenux Monitor Backups zeigt einen fertigen Host-Backup-Eintrag mit Größe, Dauer, Methodenabzeichen und Verschlüsselungsindikator.",
"monitorCaption": "Abgeschlossenes Backup — ProxMenux Monitor Backups Registerkarte. Das neue Backup erscheint in der Archivliste mit dem Zielmethode-Badge, der Größe, der Dauer und gegebenenfalls dem Verschlüsselungssperrindikator."
},
"whereNext": {
"heading": "Wohin Sie als nächstes gehen",
"items": [
{
"label": "Ziele",
"href": "/docs/backup-restore/destinations",
"tail": "— Konfigurationsdetails für Local, PBS und Borg."
},
{
"label": "Geplante Aufträge",
"href": "/docs/backup-restore/scheduled-jobs",
"tail": "- das gleiche Backup unbeaufsichtigt nach einem Zeitplan anstatt interaktiv auszuführen."
},
{
"label": "Wiederherstellung",
"href": "/docs/backup-restore/restoring",
"tail": "— der Fluss, der verbraucht, was diese Seite produziert."
}
]
}
}
@@ -0,0 +1,170 @@
{
"meta": {
"title": "Wiederherstellung zwischen Kernel-Versionen — Richtungserkennung, Sicherheitsfilter und Ergänzung | ProxMenux",
"description": "Wie ProxMenux ein Host-Backup auf einem Ziel mit einer anderen Hauptkernelversion wiederherstellt. Dokumentiert, wie die Richtung der Fehlanpassung erkannt wird, den Safe-Subset-Filter, der bootkritische Pfade überspringt, wenn das Ziel einen neueren Kernel als das Backup ausführt, und die vierphasige Kernel-agnostische Hydratation, die Benutzertuning wie IOMMU, VFIO IDs und benutzerdefinierte Cmdline-Token erneut anwendet, ohne Kernel-gebundene Dateien wörtlich zu kopieren.",
"ogTitle": "ProxMenux Backup — kernübergreifende Wiederherstellung und Hydratation",
"ogDescription": "Wiederherstellung zwischen Kernel-Versionen mit Richtungserkennung, sicherer Pfadauswahl und kernelunabhängiger Ergänzung.",
"twitterTitle": "Cross-Kernel-Wiederherstellung | ProxMenux",
"twitterDescription": "Wie ProxMenux eine Wiederherstellung durchführt, wenn sich der Zielkernel vom Backup unterscheidet."
},
"header": {
"title": "Kernübergreifende Wiederherstellung",
"description": "Wie ProxMenux eine Wiederherstellung durchführt, wenn der Zielhost einen anderen Kernel als den im Backup aufgezeichneten ausführt - insbesondere wenn das Ziel einen neueren Kernel ausführt. Dokumentiert, wie der Unterschied erkannt wird, wie bootkritische Pfade, die das Ziel unterbrechen könnten, gefiltert werden und wie die eigene Konfiguration des Benutzers erneut angewendet wird, ohne Kernel-gebundene Dateien wörtlich zu kopieren.",
"section": "Sicherung und Wiederherstellung"
},
"intro": {
"title": "Jeder Kernelsprung wird anders gehandhabt",
"body": "Der Kernel eines Proxmox-Hosts wird durch eine Versionszeichenfolge wie <code>6.17.13-2-pve</code> identifiziert. Die ersten beiden Zahlen (<strong>6.17</strong> in diesem Beispiel) definieren die Hauptversion: Wenn sie sich ändern, sind einige Konfigurationsdateien, die für den vorherigen Kernel geschrieben wurden, möglicherweise nicht für den neuen gültig. Wenn die Wiederherstellung erkennt, dass das Backup und das Ziel unterschiedliche Hauptkernelversionen haben, verzweigt sich der Fluss basierend auf der Richtung des Sprungs - ob das Backup älter oder neuer als das Ziel ist - weil die beiden Fälle entgegengesetzte Fehlermodi haben. Backups, die neuer sind als das Ziel, stellen sauber wieder her, wie sie sind (bench-verifiziert über mehrere Kernelsprünge). Backups, die älter als das Ziel sind, benötigen einen Filter, um zu vermeiden, dass der Boot des Ziels mit einer Konfiguration unterbrochen wird, die für einen Kernel geschrieben wurde, der sich seitdem geändert hat."
},
"directionCheck": {
"heading": "Die Richtungskontrolle",
"intro": "Während der Kompatibilitätsprüfung vergleicht <code>hb_compat_check</code> den im Backup-Manifest aufgezeichneten Kernel mit dem aktuellen Kernel des Ziels (<code>uname -r</code>) und klassifiziert die Wiederherstellung in einen von drei Fällen, die in der internen Variable <code>HB_COMPAT_KERNEL_DIRECTION</code> gespeichert sind:",
"rows": [
{
"direction": "same",
"condition": "Die Hauptkernelversion stimmt zwischen Backup und Target überein.",
"behavior": "Der vollständige Restaurationsfluss läuft unverändert. Kein extra Filter, keine Hydratation, kein besonderer Hinweis in der UI."
},
{
"direction": "bk_newer",
"condition": "Der Backup-Kernel ist NEUER als der des Ziels (zum Beispiel: Das Backup wurde auf dem Kernel 7.0 erstellt und das Ziel führt den Kernel 6.17 aus).",
"behavior": "Der vollständige Wiederherstellungsfluss läuft unverändert, genau wie <code>same</code>. Es wird kein Filter angewendet. Empirisch verifiziert: Treiber werden automatisch gegen den Zielkernel neu installiert, IOMMU config wird sauber angewendet, VMs mit GPU-Durchgang kommen ohne Probleme auf."
},
{
"direction": "bk_older",
"condition": "Der Backup-Kernel ist älter als der des Ziels (zum Beispiel: Das Backup wurde auf dem Kernel 6.17 erstellt und das Ziel führt den Kernel 7.0 aus).",
"behavior": "Der Safe-Subset-Filter und die folgende vierphasige Hydratation werden aktiviert. Die Wiederherstellung geht weiter - das Ziel reproduziert die Quelle, aber bootkritische Dateien werden nicht wörtlich kopiert."
}
]
},
"whyBkNewerIsSafe": {
"heading": "Warum ein Backup mit einem neueren Kernel als das Ziel unverändert wiederherstellt",
"body": "Wenn die Wiederherstellung gegen ein Ziel mit einem <em>älteren</em>-Kernel als dem im Backup aufgezeichneten läuft, ist jeder Mechanismus, von dem die Wiederherstellung abhängt, unabhängig von der Kernelversion. GPU-Treiberinstallateure und andere PCI-Geräteinstallateure erkennen den laufenden Kernel mit <code>uname -r</code> und kompilieren DKMS mit dem, was das Ziel hat. Die APT-Paketinstallation zieht Binärdateien, die für die Verteilung des Ziels erstellt wurden. IOMMU-Cmdline-Token wie <code>intel_iommu=on</code> sind in den wichtigsten Kernelversionen stabil. Das Backup trägt Pfade, die unter einem neueren Kernel geschrieben wurden, aber diese Pfade (Module Blacklists, GRUB Defaults, Initramfs Config) sind immer noch gültige Syntax auf dem älteren - Kernel ignorieren Token, die sie nicht erkennen, anstatt zu scheitern. Dieser Fall entspricht in der Praxis einer Wiederherstellung des gleichen Kerns, und ProxMenux behandelt ihn als solchen."
},
"safeSubsetFilter": {
"heading": "Der Safe-Subset-Filter (nur wenn der Zielkernel neuer ist)",
"intro": "Wenn der Zielkernel neuer ist als das Backup, fügt die Kompatibilitätsprüfung 16 bootkritische Pfade von <code>hb_unsafe_paths_cross_version</code> zu <code>RS_SKIP_PATHS</code> hinzu. Diese Pfade sind von der Wiederherstellung ausgeschlossen, da das Schreiben einer Version von ihnen aus einem älteren Kernel über ein Ziel mit einem neueren Kernelpanik in Bench-Tests verursacht hat. Die Pfade umfassen fünf Kategorien:",
"categoryRows": [
{
"category": "Bootloader",
"paths": "<code>/etc/default/grub</code>, <code>/etc/kernel</code>",
"reason": "GRUB-Standards, die an die vorherige Kernel-Order gebunden sind, und proxmox-boot-tool-Status (cmdline, ESP-UUIDs, Hooks), der auf Pfade und Identifikatoren aus der älteren Installation verweist."
},
{
"category": "Kernelmodule und Bootartefakte",
"paths": "<code>/etc/modules-load.d</code>, <code>/etc/modprobe.d</code>, <code>/etc/initramfs-tools</code>",
"reason": "Autoload-Listen, die möglicherweise auf Module verweisen, die zwischen Kernel-Majors umbenannt wurden, Moduloptionen, die möglicherweise nicht gelten, Initramfs-Hooks, die für den älteren Kernel geschrieben wurden."
},
{
"category": "Storage Stack und Filesystem Identität",
"paths": "<code>/etc/fstab</code>, <code>/etc/multipath</code>, <code>/etc/iscsi</code>, <code>/etc/udev/rules.d</code>, <code>/etc/zfs</code>",
"reason": "UUIDs, die in dieser Installation möglicherweise nicht vorhanden sind, Multipath-Treiber, die zwischen Kerneln wechseln, iSCSI-Parameter, die sich entwickeln, udev-Regeln, die an nicht vorhandene Subsysteme binden können, ZFS-Zustand (<code>zpool.cache</code> + <code>hostid</code>), der den Pool als fremd sperren kann."
},
{
"category": "APT-Quellen",
"paths": "<code>/etc/apt</code>",
"reason": "APT-Source-Suiten können beim nächsten Upgrade ein Downgrade kritischer Pakete auslösen."
},
{
"category": "systemd",
"paths": "<code>/etc/systemd/system</code>, <code>/etc/systemd/journald.conf</code>, <code>/etc/systemd/logind.conf</code>, <code>/etc/systemd/system.conf</code>, <code>/etc/systemd/user.conf</code>",
"reason": "Unit overrides und .wants, die an den älteren systemd Major gebunden sind; Konfigurationsschlüssel, die möglicherweise nicht auf einem neueren systemd analysiert werden."
}
],
"outroBody": "Der Filter läuft VOR dem Bestätigungsdialog, so dass der Benutzer die genaue Liste der Pfade sieht, die nach dem Grund kategorisiert übersprungen werden. Die Wiederherstellung geht weiter - alles andere (VM-/LXC-Konfiguration, Netzwerk, /etc/pve, Benutzer, cron, ProxMenux-Zustand, Pakete, Treiber, /root) wird normal wiederhergestellt."
},
"hydration": {
"heading": "Kern-agnostische Hydratation",
"intro": "Der Filter überspringt bootkritische Dateien; die Ergänzung übernimmt ausgewählte Benutzereinstellungen wie IOMMU-Parameter, VFIO-IDs, eigenes <code>GRUB_TIMEOUT</code> und nvidia-Sperrlisten. Sie läuft bei neuerem Zielkernel. Cmdline-Schlüssel des Ziels bleiben erhalten und fehlende Module werden ergänzt. Freigegebene GRUB-Werte und Benutzerdateien können abweichende Zielinhalte ersetzen. Gleiche Eingaben sind bei Wiederholung idempotent.",
"phaseRows": [
{
"phase": "1a — GRUB-Trasse",
"detail": "Für Hosts mit GRUB (ext4/lvm-Installationen). <code>_rs_hyd_grub</code> führt jedes Token aus dem <code>manifest.kernel_params.cmdline_extra</code> des Backups in das <code>GRUB_CMDLINE_LINUX_DEFAULT</code> des Ziels ein und überspringt Token, deren Schlüssel das Ziel bereits trägt. Dann werden die <code>GRUB_*</code>-Schlüssel auf der weißen Liste (<code>GRUB_TIMEOUT</code>, <code>GRUB_TIMEOUT_STYLE</code>, <code>GRUB_DEFAULT</code>, <code>GRUB_TERMINAL</code>, <code>GRUB_DISABLE_OS_PROBER</code>, <code>GRUB_SERIAL_COMMAND</code>, <code>GRUB_GFXMODE</code>, <code>GRUB_GFXPAYLOAD_LINUX</code>) aus dem <code>/etc/default/grub</code> des Backups zusammengeführt, wenn sie sich von denen des Ziels unterscheiden."
},
{
"phase": "1b — systemd-boot / ZFS",
"detail": "Für Hosts mit systemd-Boot (normalerweise ZFS-on-root). <code>_rs_hyd_kernel_cmdline</code> verschmilzt Benutzer-Token von <code>cmdline_extra</code> in <code>/etc/kernel/cmdline</code> des Ziels, wobei die eigene <code>root=</code>, <code>boot=</code> und <code>rootflags=</code> Boilerplate des Ziels intakt bleibt."
},
{
"phase": "2 — /etc/modules-Merge",
"detail": "<code>_rs_hyd_modules</code> fügt Module aus <code>manifest.kernel_params.modules_loaded_at_boot</code> hinzu, die sich in der Whitelist befinden (<code>vfio</code>, <code>vfio_pci</code>, <code>vfio_iommu_type1</code>, <code>vfio_virqfd</code>, <code>kvm</code>, <code>kvm_intel</code>, <code>kvm_amd</code>, <code>nvidia</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code>, <code>nvidia_uvm</code>, <code>i915</code>, <code>xe</code>) UND nicht bereits im <code>/etc/modules</code> des Ziels vorhanden sind."
},
{
"phase": "3 — Kopie von Dateien auf der weißen Liste",
"detail": "<code>_rs_hyd_files</code> kopiert vom Benutzer verfasste Dateien von den Staging-Rootfs zum Live-Ziel, wenn sich der Inhalt unterscheidet. Whitelist umfasst VFIO/nvidia / Blacklist-Dateien unter <code>/etc/modprobe.d</code>, <code>/etc/modules-load.d</code> und die ProxMenux VFIO Binderegel + nvidia udev Regeln unter <code>/etc/udev/rules.d</code>. Distro-eigene Dateien (<code>pve-blacklist.conf</code>, <code>mdadm.conf</code>, <code>nvme.conf</code>) werden absichtlich ausgeschlossen - ihre Inhalte entwickeln sich zwischen den Releases."
},
{
"phase": "4 — Neubildung nach dem Booten erzwingen",
"detail": "Die vier Phasen schreiben direkt an das Live-Ziel außerhalb der normalen Wiederherstellungspipeline. Damit die zusammengeführten Token/Module/Dateien beim nächsten Booten wirksam werden, breitet sich <code>HB_HYDRATION_APPLIED=1</code> durch <code>plan.env</code> bis <code>apply_pending_restore.sh</code> aus, was <code>NEEDS_INITRAMFS=1</code> und <code>NEEDS_GRUB=1</code> unabhängig davon erzwingt, was in der Anwendungsliste war. Der Post-Boot-Dispatcher regeneriert dann Initramfs und aktualisiert den Bootloader."
}
]
},
"planCommit": {
"heading": "Plan vs Commit - der Benutzer sieht zuerst eine Vorschau",
"body": "Die Hydratation läuft in zwei Modi. Vor dem Bestätigungsdialog führt ProxMenux <code>_rs_apply_bk_older_hydration</code> im <code>plan</code>-Modus aus: Es berechnet genau, was zusammengeführt werden würde, füllt <code>RS_HYDRATION_SUMMARY</code> mit einem grünen Block, der jede Aktion auflistet, und gibt ohne zu schreiben zurück. Der Bestätigungsdialog zeigt den grünen Block neben der gelben Liste der durch den Sicherheitsfilter übersprungenen Pfade an, sodass der Benutzer VORAB sieht, was automatisch erneut angewendet wird. Nachdem der Benutzer bestätigt hat, führt ProxMenux den gleichen Helfer im <code>commit</code>-Modus erneut aus - gleiche Phasen, gleiche Logik, aber dieses Mal schreibt jede Phase an das Live-Ziel. Das Abbrechen des Bestätigungsdialogs lässt das Ziel unberührt."
},
"flowDiagram": {
"heading": "Der Flow, wenn der Zielkernel neuer ist als das Backup",
"intro": "Die Schritte, die hinzugefügt werden, wenn der Zielkernel neuer ist, befinden sich innerhalb des normalen Wiederherstellungsflusses. Alles andere - heißes Aufbringen, ausstehende Vorbereitung, Paketinstallation, Post-Boot-Dispatcher - läuft identisch mit einer Wiederherstellung mit dem gleichen Kern.",
"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": "Konkrete Beispiele",
"intro": "Der Hydratationspass ist nicht abstrakt - er erzeugt beobachtbare, korrekte Ergebnisse für gängige Szenarien. Zwei Beispiele, die Hydratation automatisch handhaben:",
"rows": [
{
"scenario": "GPU-Durchgang (VFIO)",
"detail": "Quelle hatte <code>intel_iommu=on iommu=pt</code> in der cmdline, <code>vfio</code>/<code>vfio_pci</code>/<code>vfio_iommu_type1</code> in <code>/etc/modules</code>, ein <code>/etc/modprobe.d/vfio.conf</code> mit <code>options vfio-pci ids=10de:2216</code> und ein <code>/etc/modprobe.d/blacklist-nvidia.conf</code>. Hydration führt die Cmdline-Token in die GRUB- oder Kernel-Cmdline des Ziels ein, fügt die vfio-Module an <code>/etc/modules</code> an und kopiert die beiden vom Benutzer verfassten Modprobe-Dateien. Beim nächsten Booten ist IOMMU aktiv, VFIO-Module laden, der GPU ist an vfio-pci gebunden und der VM hat Passthrough-Funktionen."
},
{
"scenario": "Custom GRUB-Standards",
"detail": "Quelle hatte <code>GRUB_TIMEOUT=1</code> und <code>GRUB_DISABLE_OS_PROBER=true</code>. Hydration liest beide Schlüssel aus dem <code>/etc/default/grub</code> des Backups und sieht, dass sie sich von den Standardeinstellungen der Neuinstallation unterscheiden, und schreibt diese beiden Zeilen in der Zieldatei um (alles andere, einschließlich <code>GRUB_DISTRIBUTOR</code>, bleibt unberührt)."
}
]
},
"callout": {
"warningTitle": "Was bei neuerem Zielkernel nicht erneut angewendet wird",
"warningBody": "Hydration wendet nur die Konfiguration ProxMenux an, von der bekannt ist, dass sie in Kernelversionen sicher ist: IOMMU-Token, VFIO-IDs, GRUB-Schlüssel auf der weißen Liste und Module aus einer festen Liste (<code>vfio*</code>, <code>nvidia*</code>, <code>i915</code>, <code>xe</code>, <code>kvm*</code>). Alles außerhalb dieses Sets - benutzerdefinierte Initramfs-Hooks unter <code>/etc/initramfs-tools/hooks/</code>, nicht auf der weißen Liste stehende Dateien unter <code>/etc/modprobe.d/</code>, vom Benutzer verfasste systemd-Unit-Overrides - bleibt ausgeschlossen. Der Grund dafür ist konkret: Diese Dateien können Kernel-interne Schnittstellen (Modul-APIs, <code>/sys</code>-Layout, <code>udev</code>-Hooks) aufrufen, die zwischen den Hauptversionen wechseln, und ihre wörtliche Anwendung auf den neueren Kernel kann das Booten des Ziels verhindern. Wenn eine exakte Reproduktion der Bootkette erforderlich ist, muss die Wiederherstellung auf einem Host mit der gleichen Hauptkernelversion wie das Backup ausgeführt werden."
},
"codeReference": {
"heading": "Wo die Mechanismen leben",
"intro": "Für Entwickler, die das Cross-Kernel-Verhalten verfolgen oder erweitern möchten:",
"rows": [
{
"component": "Richtungserkennung",
"location": "<code>hb_compat_check</code> in <code>lib_host_backup_common.sh</code>. Setzt <code>HB_COMPAT_KERNEL_DIRECTION</code>."
},
{
"component": "Liste sicherer Teilstrecken",
"location": "<code>hb_unsafe_paths_cross_version</code> in <code>lib_host_backup_common.sh</code>. Sendet <code>path\\treason</code>-Linien aus, die sowohl vom CLI-Filter als auch vom Web-Endpunkt <code>/api/host-backups/restore/prepare</code> verwendet werden."
},
{
"component": "Hydratationsphasen",
"location": "<code>_rs_hyd_grub</code>, <code>_rs_hyd_kernel_cmdline</code>, <code>_rs_hyd_modules</code>, <code>_rs_hyd_files</code> in <code>backup_host.sh</code>. Orchestriert von <code>_rs_apply_bk_older_hydration</code>."
},
{
"component": "Neubildung nach dem Booten erzwingen",
"location": "<code>apply_pending_restore.sh</code> liest <code>HB_HYDRATION_APPLIED</code> von <code>plan.env</code> und zwingt <code>NEEDS_INITRAMFS=1</code>/<code>NEEDS_GRUB=1</code>."
},
{
"component": "Web Preview",
"location": "<code>/api/host-backups/restore/prepare</code> in <code>flask_server.py</code>. Lädt die Hilfsbibliothek, führt <code>_rs_apply_bk_older_hydration</code> im Planmodus aus und gibt die Aktionen an den Webmodal zurück."
}
]
},
"whereNext": {
"heading": "Wohin Sie als nächstes gehen",
"items": [
{
"label": "Wiederherstellung",
"href": "/docs/backup-restore/restoring",
"tail": "— die vollständige Wiederherstellungspipeline der Mechanismen dieser Seite."
},
{
"label": "Wie es funktioniert",
"href": "/docs/backup-restore/how-it-works",
"tail": " — Manifest und Erfassungsroutinen, die den von der Ergänzung gelesenen Block <code>kernel_params</code> erzeugen."
}
]
}
}
@@ -0,0 +1,234 @@
{
"meta": {
"title": "Borg-Ziel — Repository-Typen, SSH-Authentifizierung, Verschlüsselung | ProxMenux",
"description": "Das Borg-Ziel speichert ProxMenux-Host-Backups in einem Borg-Repository: lokal, auf einem eingehängten externen Datenträger oder auf einem per SSH erreichbaren Server. Beschrieben werden die Suche nach der ausführbaren borg-Datei, die vier anfänglichen SSH-Schlüsseloptionen, repokey-Verschlüsselung, gespeicherte Ziele und Aufbewahrungsregeln je geplantem Auftrag.",
"ogTitle": "ProxMenux Backup — Zielort Borg",
"ogDescription": "So speichert ProxMenux Host-Backups in Borg-Repositories mit SSH-Authentifizierung und repokey-Verschlüsselung.",
"twitterTitle": "Borg Backup Ziel | ProxMenux",
"twitterDescription": "Lokale, USB- und SSH-gestützte Borg-Repositories für Host-Backups."
},
"header": {
"title": "Borg",
"description": "Das Borg-Ziel schreibt Host-Backups in ein Borg-Repository. Es werden drei Repository-Typen unterstützt: lokaler Dateisystempfad, eingehängte externe Festplatte oder Remote-Server über SSH. Chunk-Level-Deduplizierung über alle Archive im Repository und optionale Repokey-Verschlüsselung.",
"section": "Sicherung und Wiederherstellung"
},
"aboutBorg": {
"heading": "Was Borg ist",
"body": "Borg (auch BorgBackup geschrieben) ist ein Open-Source-Deduplizierungs-Backup-Tool, das von der Borg Backup-Community verwaltet wird. Es speichert jedes Archiv als eine Reihe von Blöcken variabler Länge in einem Repository; Blöcke werden über Archive hinweg geteilt, so dass das erneute Sichern unveränderter Daten nahezu Null Speicherkosten verursacht. Borg ist nicht an Proxmox gebunden - es ist ein universelles Backup-Tool, das in vielen Umgebungen verwendet wird. ProxMenux verwendet es als eines der drei Ziele für Host-Backups; jeder auf dieser Seite beschriebene Borg-spezifische Mechanismus (Repository-Typen, borg-serve über SSH, Repokey-Verschlüsselung, prune) ist Standard-Borg-Verhalten."
},
"intro": {
"title": "Chunk-basierte Deduplizierung mit lokalen oder SSH-servierten Repositorys",
"body": "Ein Borg-Repository speichert Brocken, die in jedem enthaltenen Archiv geteilt werden, so dass das erneute Sichern einer unveränderten Datei nichts Neues überträgt und speichert. ProxMenux ruft <code>borg create</code> zum Backup-Zeitpunkt und <code>borg extract</code> zum Wiederherstellungszeitpunkt gegen ein Repository auf. Das Repository kann auf demselben Dateisystem wie die Quelle, auf einer montierten externen Festplatte oder auf einem Remote-Host, auf den über SSH zugegriffen wird, leben."
},
"binarySourcing": {
"heading": "Die ausführbare borg-Datei",
"intro": "Borg ist keine Basisabhängigkeit des ProxMenux-Installationsprogramms. Wenn ein Backup ausgeführt wird, löst <code>hb_ensure_borg</code> die Binärdatei in der Reihenfolge aus vier Quellen auf und gibt die erste zurück, die funktioniert:",
"rows": [
{
"priority": "1",
"source": "Systemweites <code>borg</code>",
"detail": "Wenn der Host bereits <code>borg</code> über APT installiert hat (<code>which borg</code> löst auf), wird diese Binärdatei verwendet."
},
{
"priority": "2",
"source": "State-Dir-Cache",
"detail": "<code>/usr/local/share/proxmenux/borg</code> — aus einem früheren GitHub-Download auf diesem Host aufbewahrt."
},
{
"priority": "3",
"source": "AppImage-Paket des Monitors",
"detail": "<code>/usr/local/share/proxmenux/monitor-app/usr/bin/borg</code> — der AppImage bündelt einen signierten borg-linux64. Dies ist der offline-sichere Pfad: Ein Host ohne Internet hat immer noch einen funktionierenden <code>borg</code>."
},
{
"priority": "4",
"source": "GitHub Download",
"detail": "<code>wget</code> gegen die angepinnte <code>borg-linux64</code>-URL unter <code>github.com/borgbackup/borg/releases/</code>, verifiziert gegen eine Konstante SHA-256 in <code>lib_host_backup_common.sh</code> (<code>HB_BORG_LINUX64_SHA256</code>). Bei Checksummenfehlanpassung wird die Binärdatei verworfen und das Backup abgebrochen. Die heruntergeladene Datei wird im State Dir zwischengespeichert, so dass nachfolgende Backups den Pfad 2 verwenden."
}
]
},
"repoTypes": {
"heading": "Repository-Typen",
"intro": "Der Repository-Typ wird ausgewählt, wenn ein Ziel hinzugefügt wird. Jeder Typ löst sich in einer anderen Repository-URL auf, die Borg versteht.",
"rows": [
{
"type": "remote",
"url": "ssh://USER@HOST/RPATH",
"detail": "Repository lebt auf einem Remote-Server, auf dem <code>borg serve</code> ausgeführt wird. Erfordert eine SSH-Verbindung zu diesem Server."
},
{
"type": "usb",
"url": "/mnt/MOUNTPOINT/borgbackup",
"detail": "Repository lebt auf einer montierten externen Festplatte (normalerweise USB). Die Mount wird über <code>hb_prompt_mounted_path</code> aufgelöst, das USB-Partitionen nach Bedarf erkennt, einhängt oder formatiert."
},
{
"type": "local",
"url": "/backup/borgbackup (any absolute path)",
"detail": "Repository lebt in einem lokalen Verzeichnis. Bedeutsam nur, wenn sich das Zielverzeichnis auf einer separaten physischen Festplatte befindet – ein Repository auf derselben Festplatte wie die Quelle schützt vor Operatorfehlern, aber nicht vor Festplattenausfällen."
}
]
},
"serverSetup": {
"heading": "Vorbereitung des Borg-Servers (Serverseite)",
"intro": "Der Repository-Typ <code>remote</code> setzt einen funktionierenden, per SSH erreichbaren Borg-Server voraus. ProxMenux richtet den Server nicht selbst ein; es autorisiert nur einen Schlüssel für ein vorhandenes Konto. Dieser Abschnitt beschreibt, was der Server vor der Verbindung benötigt.",
"hostChoicesTitle": "Wo der Server leben kann",
"hostChoicesBody": "Jeder Linux-Host mit SSH-Zugang ist qualifiziert. Gemeinsame Setups:",
"hostChoicesItems": [
"Eine dedizierte NAS- oder Backup-Box (Debian, Ubuntu, TrueNAS SCALE mit einer Shell).",
"Ein LXC Container in einem Proxmox Knoten. Kleiner Footprint, isoliert vom Host, der die Backups ausführt.",
"Ein anderer Proxmox-Host im selben LAN oder ein VM, der über SSH erreichbar ist."
],
"lxcWarningTitle": "LXC als Borg-Server",
"lxcWarningBody": "Läuft der Borg-Server in einem LXC, benötigt generate-auto zur Schlüsselinstallation ein Konto, das SSH-Passwortanmeldung erlaubt. Ist diese nicht verfügbar, verwenden Sie die manuelle Installation oder generate-pct über den PVE-Host.",
"requirementsTitle": "Anforderungen an den Server",
"requirementsRows": [
{
"requirement": "Ausführbare borg-Datei unter <code>/usr/bin/borg</code>",
"detail": "Die Zeile <code>command=\"/usr/bin/borg serve ...\"</code>, die ProxMenux in <code>authorized_keys</code> einträgt, verwendet diesen festen Pfad. APT (<code>apt install borgbackup</code>) installiert das Programm dort. Für eine separat installierte Binärdatei ist ein symbolischer Link unter <code>/usr/bin/borg</code> nötig."
},
{
"requirement": "Ein dediziertes Benutzerkonto (normalerweise <code>borg</code>)",
"detail": "Besitzt das Repository-Verzeichnis und empfängt eingehende SSH-Verbindungen. Benötigt keinen sudo- oder shell-zugriff - die authorized_keys-linie deaktiviert interaktive shells sowieso."
},
{
"requirement": "Ein beschreibbares Repository Verzeichnis",
"detail": "Der vom Betreiber angegebene Pfad ProxMenux (z. B. <code>/backup/borgbackup</code>) muss auf dem Server vorhanden sein und im Besitz des borg-Benutzers sein."
},
{
"requirement": "SSH Daemon akzeptiert den Borg-Benutzer",
"detail": "<code>PubkeyAuthentication yes</code> (Standard). Die Passwort-Authentifizierung wird nur für den One-Shot <em>generate-auto</em>-Flow benötigt – nachdem der Schlüssel installiert wurde, kann der Server das Passwort auth vollständig deaktivieren."
}
],
"minimalSetupTitle": "Minimale Server-Einrichtung",
"minimalSetupBody": "Auf einem Debian- oder Ubuntu-Borg-Server besteht eine Arbeitsbasislinie aus vier Befehlen als root:",
"minimalSetupCmd": "apt install borgbackup\nuseradd -m -d /home/borg -s /bin/bash borg\nmkdir -p /backup/borgbackup\nchown borg:borg /backup/borgbackup",
"minimalSetupNote": "Sind Server und SSH-Passwortanmeldung vorbereitet, installiert <code>generate-auto</code> den Schlüssel über ein Konto mit Schreibzugriff auf die authorized_keys-Datei des borg-Benutzers. Spätere Backups verwenden diesen auf <code>borg serve</code> am konfigurierten Pfad beschränkten Schlüssel. Ohne Passwortanmeldung wird er manuell oder über den PVE-Host installiert."
},
"sshAuth": {
"heading": "SSH-Authentifizierung (Clientseite)",
"intro": "Remote-Borg-Repositories sind über SSH zugänglich. Die Verbindung läuft vom ProxMenux-Host zu einem Benutzerkonto auf dem Borg-Server, auf dem <code>borg serve</code> ausgeführt wird. Dieser Benutzer heißt normalerweise <code>borg</code>, NICHT der Admin / Root-Benutzer des Servers - die Befehlszeile borg-serve sperrt die Verbindung zu diesem spezifischen Repository-Pfad (siehe die wichtigsten Strategien unten).",
"strategiesTitle": "SSH-Schlüsselstrategien",
"strategiesIntro": "Beim Hinzufügen eines entfernten Ziels fragt ProxMenux nach SSH-Benutzer, Host, Port und entferntem Pfad und bietet vier Anmeldeoptionen. Wird die Passwortanmeldung abgewiesen, steht zusätzlich generate-pct zur Wahl. Die Modi sind unten beschrieben:",
"strategyRows": [
{
"mode": "generate-auto",
"label": "Empfohlen",
"detail": "ProxMenux erzeugt oder verwendet ein ed25519-Schlüsselpaar unter <code>~/.ssh/borg_proxmenux_HOST_ed25519</code>. Mit <code>sshpass</code> prüft es die Anmeldung und installiert den öffentlichen Schlüssel in <code>~borg/.ssh/authorized_keys</code>. Das Passwort gehört zu einem Konto mit Schreibzugriff auf diese Datei, meist root oder borg. Es wird nur bei der Einrichtung verwendet und nicht gespeichert."
},
{
"mode": "generate-manual",
"label": "Kein Admin-Passwort auf diesem Host",
"detail": "ProxMenux generiert das Keypair wie oben, zeigt aber die vollständige <code>authorized_keys</code>-Zeile an, die der Betreiber manuell in den Server einfügen kann. Das Admin-Passwort verlässt niemals den ProxMenux-Host, weil es nie angefordert wird."
},
{
"mode": "generate-pct",
"label": "Borg Server ist ein PVE LXC",
"detail": "Der Borg-Server läuft innerhalb eines LXC auf einem PVE-Knoten. ProxMenux autorisiert den Schlüssel über <code>pct exec</code> vom PVE-Host - root auf dem PVE-Host schreibt in den <code>~borg/.ssh/authorized_keys</code> des LXC, ohne dass SSH selbst in den LXC benötigt wird."
},
{
"mode": "existing",
"label": "Verwenden Sie einen vorhandenen Schlüssel",
"detail": "ProxMenux scannt <code>/root/.ssh/</code> und <code>$HOME/.ssh/</code> nach Parseable ed25519/RSA Private Keys und listet diese auf. Der Bediener wählt einen oder durchsucht manuell einen nicht standardmäßigen Pfad."
},
{
"mode": "none",
"label": "Standard SSH-Konfiguration",
"detail": "Kein benutzerdefinierter Schlüssel - Borg stützt sich auf die standardmäßige SSH-Konfiguration des Hosts (normalerweise <code>~/.ssh/id_rsa</code> oder ein SSH-Agent)."
}
],
"restrictTitle": "Die authorized_keys Linie",
"restrictBody": "Für jeden erzeugten Schlüssel beschränkt die von ProxMenux auf dem Server eingetragene <code>authorized_keys</code>-Zeile den Zugriff auf den folgenden borg-serve-Aufruf für den konfigurierten Repository-Pfad:",
"restrictLine": "command=\"/usr/bin/borg serve --restrict-to-path RPATH\",restrict PUBKEY",
"restrictNote": "Der <code>command=</code> zwingt jede SSH-Sitzung mit diesem Schlüssel, nur den Befehl borg-serve auszuführen; <code>restrict</code> deaktiviert die Portweiterleitung, die Agentenweiterleitung, die X11-Weiterleitung und die PTY-Zuweisung. Der Schlüssel kann nicht verwendet werden, um eine interaktive Shell auf dem Server zu öffnen oder auf einen anderen Repository-Pfad zuzugreifen, selbst wenn das Konto über breitere Privilegien verfügt."
},
"savedTargets": {
"heading": "Gespeicherte Ziele",
"intro": "Ein gespeichertes Ziel hält die Repository-Konfiguration unter einem verständlichen Namen fest, damit die Angaben nicht erneut eingegeben werden müssen. Dateien im ProxMenux-Zustandsverzeichnis:",
"rows": [
{
"file": "borg-targets.txt",
"content": "Eine Zeile je Ziel: <code>NAME|REPO|SSH_KEY_PATH|ENCRYPT_MODE</code>. <code>hb_collect_borg_configs</code> liest sie ein, um das Zielauswahlmenü zu füllen."
},
{
"file": "borg-pass-NAME.txt",
"content": "Passphrase des oben mit NAME benannten Ziels (<code>chmod 600</code>). Nur bei gewählter repokey-Verschlüsselung vorhanden."
}
],
"outro": "Das Speichern des Ziels ist optional. Bei Ablehnung wird keine benannte Zielkonfiguration gespeichert; ein erzeugter SSH-Schlüssel wird jedoch nicht entfernt. Bei repokey-Verschlüsselung ohne gespeichertes Ziel legt ProxMenux die Passphrase weiterhin in der älteren Datei borg-pass.txt ab."
},
"encryption": {
"heading": "Verschlüsselung",
"body": "Repositories werden mit einem Verschlüsselungsmodus über <code>hb_borg_init_if_needed</code> initialisiert: das moderne <code>borg repo-create -e MODE</code>, wenn verfügbar, oder das alte <code>borg init --encryption=MODE</code>. ProxMenux zeigt zwei Modi: <code>repokey</code> (Standard) und <code>none</code>. Im <code>repokey</code>-Modus speichert Borg den Verschlüsselungsschlüssel im Repository selbst; der Zugriff erfordert eine Passphrase, die ProxMenux zweimal mit Übereinstimmungsvalidierung anfordert und für gespeicherte Ziele unter <code>borg-pass-NAME.txt</code> speichert, sonst in der oben beschriebenen älteren Datei. Ein obligatorischer Bestätigungsdialog wird angezeigt, nachdem die Passphrase gespeichert wurde: Die Passphrase ist die einzige Möglichkeit, auf die verschlüsselten Archive zuzugreifen, und wenn sie verloren geht, ist jedes Archiv im Repository nicht wiederherstellbar."
},
"runtimeEnv": {
"heading": "Laufzeitumgebung",
"intro": "ProxMenux exportiert die folgenden Umgebungsvariablen, bevor <code>borg</code> aufgerufen wird. Sie konfigurieren die Verbindung und entsperren das Repository, ohne Geheimnisse in die Kommandozeile einzubetten.",
"rows": [
{
"var": "BORG_RSH",
"value": "ssh -i SSH_KEY_PATH -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new [-p PORT]",
"purpose": "Remote-Shell-Befehl für Borg-Repositories über SSH. Ein gewählter Schlüssel ergänzt die Identitätsoptionen. Wird ein Ziel erstmals mit einem abweichenden Port hinzugefügt, ergänzt ProxMenux zusätzlich -p PORT; gespeicherte Ziele, geplante Aufträge und der Monitor verwenden stattdessen den Port aus der ssh://-URL. Ohne eigenen Schlüssel und bei einem neuen Ziel mit Standardport bleibt die Variable ungesetzt; Borg nutzt dann die SSH-Vorgaben des Hosts."
},
{
"var": "BORG_PASSPHRASE",
"value": "(Passphrase von borg-pass-NAME.txt)",
"purpose": "Entsperrt den Repokey. Setzen Sie nur, wenn das Ziel <code>repokey</code>-Verschlüsselung verwendet. Erscheint nie in der Prozessargumentenliste."
},
{
"var": "BORG_ENCRYPT_MODE",
"value": "repokey | none",
"purpose": "Wird von <code>hb_borg_init_if_needed</code> bei der Initialisierung eines noch nicht vorhandenen Repositorys verwendet. Ignoriert von <code>borg create</code> auf bestehenden Repositories."
},
{
"var": "BORG_RELOCATED_REPO_ACCESS_IS_OK",
"value": "yes",
"purpose": "Unterdrückt die interaktive Eingabeaufforderung, die Borg aufruft, wenn die Repository-URL von der URL abweicht, von der sie ursprünglich erreicht wurde (üblich nach einem Rename für einen Mount-Point oder SSH-Host, der über eine neue Adresse erreichbar ist)."
},
{
"var": "BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK",
"value": "yes",
"purpose": "Unterdrückt die interaktive Eingabeaufforderung, die Borg beim ersten Zugriff auf ein unverschlüsseltes Repository von einem neuen Client aus erstellt."
}
]
},
"archiveFormat": {
"heading": "Bezeichnung und Aufbewahrung des Archivs",
"intro": "Jedes Backup erstellt ein neues Archiv im Repository.",
"namePattern": "hostcfg-HOSTNAME-YYYYMMDD_HHMMSS",
"retentionBody": "Für geplante Aufträge führt <code>run_scheduled_backup.sh</code> <code>borg prune</code> nach jedem erfolgreichen Backup mit den für den Auftrag konfigurierten Retentionswerten (<code>--keep-last</code>, <code>--keep-daily</code>, <code>--keep-weekly</code>) gegen das Repository aus. Interaktive Backups beschneiden nicht."
},
"restoreAccess": {
"heading": "Abruf auf der Wiederherstellungsseite",
"body": "Die Wiederherstellung listet Archive mit <code>borg list REPO</code> auf und entpackt das gewählte Archiv mit <code>borg extract REPO::ARCHIVE-NAME</code> in ein Vorbereitungsverzeichnis. <code>_rs_check_layout</code> übergibt dieses an den normalen Wiederherstellungsablauf. Dieselben Befehle funktionieren auch manuell außerhalb von ProxMenux. Der entpackte Verzeichnisbaum entspricht der in <em>So funktioniert es</em> beschriebenen Struktur aus drei Datenblöcken."
},
"references": {
"heading": "Referenzen",
"intro": "Offizielle Borg-Dokumentation zu den Komponenten, auf die ProxMenux aufbaut.",
"items": [
{
"label": "Borg-Dokumentation",
"href": "https://borgbackup.readthedocs.io/",
"tail": "— Haupteinstiegspunkt für Konzepte, Bereitstellung, Schnellstart und jeden Befehl."
},
{
"label": "borg create",
"href": "https://borgbackup.readthedocs.io/en/stable/usage/create.html",
"tail": " — der Befehl, den ProxMenux für jedes Backup aufruft, mit allen unterstützten Optionen."
},
{
"label": "Datenspeicherverschlüsselung",
"href": "https://borgbackup.readthedocs.io/en/stable/usage/init.html#encryption-mode",
"tail": "- die Verschlüsselungsmodi, die Borg unterstützt, einschließlich Repokey, den ProxMenux standardmäßig verwendet."
},
{
"label": "borg serve und Bereitstellung über SSH",
"href": "https://borgbackup.readthedocs.io/en/stable/deployment/central-backup-server.html",
"tail": " - wie man einen zentralen Borg-Server einrichtet, auf den über SSH zugegriffen wird, einschließlich des borg-serve-Befehls und des restrict-to-path-Flags ProxMenux schreibt in authorized_keys."
},
{
"label": "borg prune",
"href": "https://borgbackup.readthedocs.io/en/stable/usage/prune.html",
"tail": "— das Retentionsmodell hinter --keep-last / --keep-daily / --keep-weekly, das ProxMenux pro geplantem Auftrag anwendet."
}
]
}
}
@@ -0,0 +1,110 @@
{
"meta": {
"title": "Backup-Ziele — Lokal, Proxmox Backup Server, Borg | ProxMenux",
"description": "Drei Storage-Backends erhalten die gleiche ProxMenux Backup-Nutzlast: ein lokales .tar.zst-Archiv auf jedem beschreibbaren Dateisystem, ein PBS-Backup in einem Proxmox Backup Server-Datenspeicher oder ein Borg-Archiv in einem lokalen oder entfernten Borg-Repository. Jedes Backend hat seine eigenen Kompressions-, Deduplizierungs-, Verschlüsselungs- und Netzwerkeigenschaften.",
"ogTitle": "ProxMenux Backup-Ziele",
"ogDescription": "Local, Proxmox Backup Server und Borg – drei Storage-Backends für die gleiche Host-Backup-Nutzlast.",
"twitterTitle": "ProxMenux Backup Ziele | ProxMenux",
"twitterDescription": "Lokales Archiv, Proxmox Backup Server und Borg Backends für Host-Backups."
},
"header": {
"title": "Ziele",
"description": "Drei Storage Backends, die von ProxMenux Backup unterstützt werden: lokales Archiv, Proxmox Backup Server (empfohlen) und Borg. Jeder erhält das gleiche Drei-Nutzlast-Archiv; sie unterscheiden sich in Speicherformat, Deduplizierung, Verschlüsselungsmodell und Netzwerkanforderungen.",
"section": "Sicherung und Wiederherstellung"
},
"intro": {
"title": "Gleiche Nutzlast, drei Backends",
"body": "Jedes Backup erzeugt die gleichen drei Nutzlasten (Rootfs, Manifest, Anwendungen). Was sich zwischen Zielen ändert, ist, wie diese Nutzlasten gespeichert werden und wie der Betreiber sie für eine Wiederherstellung abruft. Jedes Backend wird als separate Funktion in <code>backup_host.sh</code> - <code>_bk_local</code>, <code>_bk_pbs</code>, <code>_bk_borg</code> - implementiert, aber alle drei haben den gleichen Staging-Schritt (<code>hb_prepare_staging</code>) und den gleichen Wiederherstellungscodepfad. Die Wahl des Ziels betrifft nur das Schreiben und den Abruf; es ändert nicht, was eine Wiederherstellung tut oder wie sie das Archiv verbraucht."
},
"comparison": {
"heading": "Merkmalsvergleich",
"intro": "Die folgende Tabelle listet die konkreten Unterschiede zwischen den drei Backends auf, wie sie sich heute in ProxMenux verhalten. Alle Werte beschreiben das beobachtete Verhalten des Backends selbst, nicht redaktionelle Empfehlungen.",
"rows": [
{
"feature": "Speicherformat",
"local": "Einzelne <code>.tar.zst</code>-Datei (oder <code>.tar.gz</code>, wenn <code>zstd</code> fehlt).",
"pbs": "PBS Backup (<code>.pxar</code> Chunks im Datenspeicher).",
"borg": "Borg-Archiv in einem Borg-Repository (Segmentdateien)."
},
{
"feature": "Kompression",
"local": "zstd (Standardstufe) über <code>tar --zstd</code>. gzip Fallback.",
"pbs": "Von proxmox-backup-client verwaltet. ProxMenux überschreibt die Kompressionseinstellungen nicht.",
"borg": "In Borg integrierte Kompression. ProxMenux ruft borg create auf, ohne die Kompressionseinstellungen zu überschreiben."
},
{
"feature": "Deduplizierung",
"local": "Keine. Jedes Backup ist ein vollständiges unabhängiges Archiv.",
"pbs": "Vollständige Chunk-Level-Deduplizierung über alle Backups im Datenspeicher.",
"borg": "Vollständige Chunk-Level-Deduplizierung über alle Archive im Repository."
},
{
"feature": "Verschlüsselung im Ruhezustand",
"local": "Keine (Verlässt sich auf den Schutz auf Dateisystemebene).",
"pbs": "Optionale clientseitige Keyfile-Verschlüsselung. Recovery-Blob als separate Backup-Gruppe hochgeladen, wenn aktiviert.",
"borg": "Optionale Repokey-Verschlüsselung (Schlüssel im Repo gespeichert, durch eine Passphrase freigeschaltet)."
},
{
"feature": "Aufbewahrung / Bereinigung",
"local": "Wird pro geplantem Auftrag über <code>KEEP_LAST</code> angewendet. Alte Archive werden zusammen mit ihren Begleitdateien und Ausführungsprotokollen gelöscht. Interaktive Backups führen keine Bereinigung aus.",
"pbs": "Angewendet pro geplanten Auftrag über <code>proxmox-backup-client prune --keep-last / --keep-daily / --keep-weekly</code>. Interaktive Backups führen keine Bereinigung aus.",
"borg": "Angewendet pro geplanten Auftrag über <code>borg prune --keep-last / --keep-daily / --keep-weekly</code>. Interaktive Backups führen keine Bereinigung aus."
},
{
"feature": "Netzwerk",
"local": "Keine. Schreibt auf einen lokalen Einhängepunkt (normalerweise eine interne Festplatte oder ein USB-Laufwerk).",
"pbs": "TCP auf den PBS-Server (Standardport 8007). Erfordert PBS Anmeldeinformationen + Fingerabdruck.",
"borg": "Lokaler Dateisystempfad oder SSH Tunnel zu einem entfernten Borg-Host."
},
{
"feature": "Abhängigkeiten",
"local": "<code>tar</code>, <code>zstd</code> (standardmäßig auf Proxmox vorhanden).",
"pbs": "<code>proxmox-backup-client</code> Paket (gebündelt mit Proxmox VE 8+).",
"borg": "<code>borg</code> binär. Automatische Bereitstellung durch ProxMenux aus dem Monitor AppImage-Bundle, wenn es fehlt."
},
{
"feature": "Zugriff für die Wiederherstellung",
"local": "Jeder Host mit tar+zstd kann das Archiv extrahieren. Keine PBS/Borg erforderlich.",
"pbs": "Erfordert <code>proxmox-backup-client</code> + PBS Anmeldeinformationen + die Schlüsseldatei (falls verschlüsselt).",
"borg": "Erfordert <code>borg</code> + den Repository-Pfad + die Passphrase (falls verschlüsselt)."
}
],
"captionCode": "feature",
"captionLocal": "Lokal",
"captionPbs": "Proxmox Backup Server (empfohlen)",
"captionBorg": "Borg"
},
"sameArchive": {
"heading": "Das Archivlayout ändert sich nicht mit dem Ziel",
"body": "Innerhalb eines der drei Ziele ist das gleiche <code>rootfs/</code> + <code>metadata/</code> + <code>manifest.json</code> Layout vorhanden, das in <em>Funktionsweise</em> beschrieben wird. Ein aus einem lokalen Archiv extrahierter <code>.tar.zst</code>, ein aus PBS wiederhergestellter <code>.pxar</code> und ein mit <code>borg extract</code> extrahiertes Borg-Archiv ergeben alle einen identischen Verzeichnisbaum. Der Wiederherstellungscodepfad (<code>_rs_check_layout</code>, <code>_rs_apply</code>, <code>_rs_prepare_pending_restore</code>) liest die gleichen drei Nutzlasten, ohne zu wissen, von welchem Ziel sie kamen."
},
"extractStandalone": {
"heading": "Extrahieren eines Backups außerhalb von ProxMenux",
"intro": "Jedes der drei Archivformate kann mit Standardtools gelesen werden, ohne dass ProxMenux auf dem Lesehost installiert ist. Die folgenden Befehle erzeugen den gleichen Verzeichnisbaum, den eine Wiederherstellung intern verbraucht.",
"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": "# Aus einem Borg-Archiv (benötigt borg und bei verschlüsselten Repositories die Passphrase):\nborg extract REPO-PATH::ARCHIVE-NAME\n\n# Bei einem über SSH erreichbaren entfernten Repository:\nborg extract ssh://USER@HOST:PORT/REPO-PATH::ARCHIVE-NAME",
"note": "Der extrahierte Baum kann dann manuell inspiziert oder einer manuellen Wiederherstellung zugeführt werden. Sehen Sie sich die einzelnen Zielseiten für den genauen Abruffluss an, den ProxMenux unter der Haube verwendet."
},
"whereNext": {
"heading": "Details je Ziel",
"intro": "Jedes Ziel hat eine eigene Seite, die den Konfigurationsfluss, das On-Disk-Format und den von der Wiederherstellung verwendeten Abrufbefehl abdeckt.",
"items": [
{
"label": "Lokales Archiv",
"href": "/docs/backup-restore/destinations/local",
"tail": " — Vorkonfiguration eines lokalen Ziels, Einhängen von USB-Laufwerken, Schutz vor dem Einschließen des Archivs in sich selbst und die JSON-Begleitdatei zur Erkennung im Monitor."
},
{
"label": "Proxmox Backup Server (empfohlen)",
"href": "/docs/backup-restore/destinations/pbs",
"tail": "Datenspeicherauswahl, Anmeldeinformationen und Fingerabdruck, Verschlüsselungs-Keyfile-Lebenszyklus, Recovery-Passphrase, Hochladen des Recovery-Blobs zu PBS für die Wiederherstellung mit frischer Installation."
},
{
"label": "Borg",
"href": "/docs/backup-restore/destinations/borg",
"tail": " — lokale und über SSH erreichbare Repositories, Bezugsquellen der Borg-Binärdatei (System / Cache / Monitor-AppImage-Bundle / GitHub-Download), Repository-Initialisierung, Umgang mit Passphrasen und SSH-Schlüssel für entfernte Repositories."
}
]
}
}
@@ -0,0 +1,75 @@
{
"meta": {
"title": "Lokales Archivziel — tar.zst auf einem Dateisystem oder USB-Laufwerk | ProxMenux",
"description": "Das lokale Sicherungsziel schreibt ein einzelnes .tar.zst-Archiv in ein beliebiges beschreibbares Verzeichnis: auf eine interne Festplatte, einen Proxmox-Mountpoint, eine NFS-Freigabe oder ein USB-Laufwerk. Diese Seite beschreibt die Einrichtung, das Erkennen und Einbinden von USB-Laufwerken, den Schutz vor dem Speichern des Archivs in einem selbst gesicherten Pfad und die zugehörige JSON-Datei zur Identifizierung der Sicherung.",
"ogTitle": "ProxMenux Backup — Ziel des lokalen Archivs",
"ogDescription": "Wie ProxMenux lokale Backups als .tar.zst-Archive schreibt und wie man das Zielverzeichnis oder das USB-Laufwerk konfiguriert.",
"twitterTitle": "Lokales Backup-Ziel | ProxMenux",
"twitterDescription": "Wie ProxMenux lokale Backups als .tar.zst-Archive auf ein Dateisystem oder USB-Laufwerk schreibt."
},
"header": {
"title": "Lokales Archiv",
"description": "Das lokale Sicherungsziel schreibt ein einzelnes komprimiertes tar-Archiv in ein beliebiges beschreibbares Verzeichnis auf dem Host: auf eine interne Festplatte, einen NFS- oder SMB-Mount oder ein USB-Laufwerk.",
"section": "Sicherung und Wiederherstellung"
},
"intro": {
"title": "Eine Datei, in sich geschlossen",
"body": "Ein lokales Backup erzeugt eine einzelne <code>hostcfg-HOST-TIMESTAMP.tar.zst</code>-Datei (oder <code>.tar.gz</code>, wenn <code>zstd</code> fehlt). Die Datei enthält den gesamten Archivbaum <code>manifest.json</code>, <code>metadata/</code> und <code>rootfs/</code> und kann auf jedem Proxmox-Host mit dem ProxMenux-Wiederherstellungsfluss wiederhergestellt oder manuell mit <code>tar --zstd -xf</code> auf jedem Linux-System extrahiert werden. Kein Server, kein Repository init, keine externe Abhängigkeit. Dies ist das Ziel mit dem kürzesten Wiederherstellungspfad, wenn weder PBS noch Borg verfügbar sind."
},
"targetConfig": {
"heading": "Konfiguration des Zielverzeichnisses",
"intro": "Das lokale Ziel ist ein <strong>einziges dauerhaft gespeichertes Zielverzeichnis</strong> – keine Liste. ProxMenux speichert die Auswahl des Betreibers bei <code>/usr/local/share/proxmenux/local-target.conf</code> und liest sie bei jedem Backup. Wenn kein Ziel konfiguriert wurde, wird der Standard-<code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> verwendet (das gleiche Verzeichnis, das Proxmox für seine eigenen <code>vzdump</code>-Ausgänge verwendet). Das Ziel wird unter <em>Backup-Ziele konfigurieren → Lokale Ziele</em> konfiguriert:",
"options": [
"<strong>Standard verwenden (<code>/var/lib/vz/dump</code>).</strong> Der lokale Proxmox-Speicher. Bei jeder Proxmox-Installation vorhanden; das Archiv befindet sich neben den vzdump-Ausgaben und wird automatisch von der Registerkarte Backups des Monitors aufgenommen.",
"<strong>Benutzerdefinierten Pfad eingeben.</strong> Jeder absolute Dateisystempfad kann verwendet werden: ein NFS-Mount, eine über <code>fstab</code> eingebundene SMB-Freigabe, ein eigenes ZFS-Dataset oder eine zweite interne Festplatte. ProxMenux prüft vor dem Speichern, ob der Pfad existiert und ein Verzeichnis ist.",
"<strong>Wählen Sie ein USB-Laufwerk.</strong> Öffnet das USB-Untermenü (unten), das Wechselgeräte erkennt und ein Gerät montieren oder formatieren kann."
]
},
"usbFlow": {
"heading": "USB-Laufwerkerkennung und -montage",
"intro": "Das USB-Untermenü listet Partitionen auf Wechselgeräten auf, die von <code>lsblk</code> gemeldet werden. Jede Partition wird mit ihrer Größe, Dateisystem-Beschriftung und aktuellem Zustand dargestellt. Der Zustand bestimmt die Aktion, die ProxMenux anbietet.",
"statesTitle": "Die drei Gerätezustände",
"stateRows": [
{
"state": "eingehängt",
"shown": "Größe · Etikett · [fstype] · → /mount/point",
"action": "Die Partition ist bereits irgendwo montiert. Bei der Auswahl wird der aktuelle Einhängepunkt als lokales Ziel gespeichert. Es wird kein neuer Mount ausgeführt."
},
{
"state": "nicht montiert",
"shown": "Größe · Etikett · [fstype] · (nicht montiert — wird montiert)",
"action": "Ein Dateisystem ist vorhanden, aber nicht montiert. Bei Bestätigung führt ProxMenux <code>hb_mount_usb_partition</code> aus: erstellt <code>/mnt/backup-LABEL</code> (oder einen UUID-basierten Pfad, wenn kein Label vorhanden ist), mountet die Partition und speichert den Einhängepunkt als lokales Ziel."
},
{
"state": "leer",
"shown": "Größe · unformatierter USB-Datenträger — kein Dateisystem (wird FORMATIERT)",
"action": "Das Gerät hat kein Dateisystem. Dieser destruktive Vorgang ist durch zwei Bestätigungen geschützt. Zuerst erklärt ein Ja/Nein-Dialog, dass der Datenträger gelöscht wird. Anschließend muss der Benutzer in einem Eingabefeld <strong>den exakten Gerätepfad eingeben</strong> (z. B. <code>/dev/sdb</code>), bevor ProxMenux eine neue GPT mit ext4-Partition erstellt und diese einhängt."
}
],
"notMountedFallback": "Wenn kein USB-Gerät erkannt wird, fällt das Untermenü auf eine einfache Eingabebox zurück. Der Bediener kann einen beliebigen Einhängepunktpfad eingeben; wenn der Pfad kein registrierter Einhängepunkt ist, warnt ein Bestätigungsdialog, bevor er fortfährt."
},
"safetyCheck": {
"heading": "Sicherheitsprüfung — Ziel innerhalb eines gesicherten Pfads",
"body": "Vor dem Schreiben des Archivs überprüft <code>_bk_local</code>, dass das Zielverzeichnis <strong>nicht</strong> ein Unterpfad eines zu sichernden Verzeichnisses ist. Ein häufiger Fehler wäre das Hinzufügen von <code>/root</code> zum Profil und die Auswahl von <code>/root/backups</code> als Ziel – das Archiv würde sich dann selbst einschließen und entweder ein beschädigtes Archiv erzeugen oder unbegrenzt wachsen, bis die Festplatte voll ist. Die Prüfung löst beide Pfade mit <code>readlink -m</code> auf, vergleicht sie und bricht bei einem Konflikt die Sicherung mit einem Dialogfeld ab, das den in Konflikt stehenden Pfad benennt und drei Möglichkeiten zur Lösung auflistet: Wählen Sie ein Ziel außerhalb des in Konflikt stehenden Pfads, entfernen Sie den benutzerdefinierten Eintrag, der das Ziel enthält, oder deaktivieren Sie den in Konflikt stehenden Pfad für diesen Lauf im benutzerdefinierten Modus."
},
"archiveFormat": {
"heading": "Archivformat und Komprimierung",
"intro": "Der Ausgabedateiname bettet den Quellhostnamen und den Backup-Zeitstempel ein, so dass ein Verzeichnis mit mehreren Archiven chronologisch sortiert und jede Datei sich selbst identifiziert.",
"namePattern": "hostcfg-HOSTNAME-YYYYMMDD_HHMMSS.tar.zst",
"compressionTitle": "Kompression",
"compressionBody": "Der primäre Pfad verwendet <code>tar --zstd -cf</code> - eine Single-Command-Pipeline, die auf dem Standardniveau von zstd komprimiert wird. Wenn <code>zstd</code> nicht in der Quelle vorhanden ist (selten bei Proxmox, aber bei minimalen Installationen möglich), fällt ProxMenux auf <code>gzip</code> zurück. Im Fallback-Pfad wird, wenn <code>pv</code> verfügbar ist, ein Fortschrittsbalken zur Pipeline hinzugefügt, so dass der Betreiber die Archivgröße in Echtzeit wachsen sieht; ohne <code>pv</code> wird <code>tar -czf</code> still verwendet.",
"sourceTitle": "Was geht ins Archiv",
"sourceBody": "Der tar-Befehl wird mit <code>-C \"$staging_root\" .</code> aufgerufen und archiviert dadurch das <strong>gesamte Staging-Hauptverzeichnis</strong>: <code>rootfs/</code>, <code>metadata/</code> und <code>manifest.json</code>. Alle drei Datenblöcke liegen nebeneinander auf der obersten Ebene des tar-Archivs. Beim Entpacken entsteht genau der Baum, den der Wiederherstellungscode verwendet."
},
"sidecar": {
"heading": "Die JSON-Begleitdatei",
"intro": "Jedes erfolgreiche lokale Backup erzeugt eine Begleitdatei: <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, geschrieben neben dem Archiv von <code>hb_write_archive_sidecar</code>. Diese kleine JSON-Datei ermöglicht es dem ProxMenux Monitor, das Archiv als ProxMenux-Host-Backup zu identifizieren, auch wenn es später an anderer Stelle verschoben, umbenannt oder archiviert wird.",
"contentTitle": "Inhalt der Begleitdatei",
"contentBody": "Das Sidecar speichert die Schemaversion, ob das Backup von einem interaktiven Lauf oder einem geplanten Job (<code>kind</code>) stammt, die Job-ID für geplante Läufe, den verwendeten Profilmodus (<code>default</code> oder <code>custom</code>), den Quellhostnamen, den ursprünglichen Archivbasisnamen, einen ISO-8601-Erstellungszeitstempel und die Archivgröße in Bytes.",
"whyBody": "Die Registerkarte Backups des Monitors scannt konfigurierte lokale Verzeichnisse für <code>*.proxmenux.json</code>-Begleitdateien - nicht für <code>*.tar.zst</code>-Dateien -, da ein <code>.tar.zst</code> ohne Sidecar möglicherweise überhaupt kein ProxMenux-Backup ist. Der Scan ist schnell (JSON-Dateien sind winzig) und die Paarung ist stabil bei Umbenennungen des Archivs, solange das Sidecar entsprechend umbenannt wird."
},
"restoreAccess": {
"heading": "Wiederherstellen aus einem lokalen Archiv",
"body": "Der ProxMenux-Wiederherstellungsfluss entdeckt lokale Archive, indem er das konfigurierte lokale Ziel nach Begleitdateien durchsucht und in der Archivliste anzeigt. Die Auswahl eines Archivs löst <code>_rs_check_layout</code> aus, der den Tarball in ein Staging-Verzeichnis extrahiert und das Layout mit drei Nutzlasten bestätigt, bevor er fortfährt. Für die manuelle Extraktion außerhalb von ProxMenux liefert <code>tar --zstd -xf hostcfg-HOSTNAME-TIMESTAMP.tar.zst -C /tmp/hostcfg</code> den gleichen Baum, den der Wiederherstellungscode verbraucht."
}
}
@@ -0,0 +1,113 @@
{
"meta": {
"title": "Proxmox Backup Server Zielort — Repository, Verschlüsselung, Wiederherstellung | ProxMenux",
"description": "Das PBS-Ziel speichert ProxMenux-Host-Backups als PBS-Backups. Beschrieben werden die Repository-Erkennung aus /etc/pve/storage.cfg, die manuelle PBS-Konfiguration, der .pxar-Upload, die clientseitige Verschlüsselung mit einer Schlüsseldatei samt optionaler passphrasengeschützter Sicherungskopie sowie die Schlüsselwiederherstellung aus mehreren Quellen auf einem neu installierten Host.",
"ogTitle": "ProxMenux Backup — Bestimmungsort Proxmox Backup Server",
"ogDescription": "So speichert ProxMenux Host-Backups auf Proxmox Backup Server mit clientseitiger Schlüsseldateiverschlüsselung und einer hinterlegten Wiederherstellungskopie.",
"twitterTitle": "PBS Backup Ziel | ProxMenux",
"twitterDescription": "Proxmox Backup Server als Ziel mit Schlüsseldateiverschlüsselung und passphrasengeschützter Wiederherstellungskopie."
},
"header": {
"title": "Proxmox Backup Server",
"description": "Das PBS-Ziel lädt das gesamte Vorbereitungsverzeichnis als ein einzelnes .pxar-Backup in einen Proxmox-Backup-Server-Datenspeicher hoch. Optional wird es clientseitig mit einer Schlüsseldatei verschlüsselt; zusätzlich kann neben jedem Backup eine passphrasengeschützte Wiederherstellungskopie der Schlüsseldatei hinterlegt werden.",
"section": "Sicherung und Wiederherstellung"
},
"recommendedBadge": "Empfohlenes Ziel",
"aboutPbs": {
"heading": "Was Proxmox Backup Server ist",
"body": "Proxmox Backup Server (PBS) ist das eigene Backup-Server-Produkt von Proxmox, das von dem gleichen Team entwickelt und gewartet wird, das auch Proxmox VE entwickelt hat. Es ist ein dedizierter Backup-Server, der entwickelt wurde, um Backups von Proxmox VE-Hosts (VMs, LXCs und - über <code>proxmox-backup-client</code> - beliebige Host-Verzeichnisse) mit chunkbasierter Deduplizierung, clientseitiger Verschlüsselung und serverseitig angewendeten Aufbewahrungsrichtlinien zu erhalten. ProxMenux verwendet PBS als eines der drei Ziele für Host-Backups; jeder auf dieser Seite beschriebene PBS-spezifische Mechanismus (Backup-Gruppen, <code>.pxar</code>-Archive, <code>--backup-id</code>, Keyfile-Verschlüsselung) ist Standard-PBS-Verhalten."
},
"intro": {
"title": "Ein Backup pro Lauf, Chunk-Level-Dedup",
"body": "Ein PBS-Backup erzeugt einen einzelnen Backup-Eintrag im Datenspeicher, der unter der Backup-ID <code>host/hostcfg-HOSTNAME/BACKUP-TIME</code> gruppiert ist. Die Nutzlast ist ein <code>.pxar</code>-Archiv, das das gleiche dreiblockige Layout enthält, das in <em>How it works</em> beschrieben ist. PBS dedupliziert auf der Chunk-Ebene über alle Backups im Datenspeicher, so dass nachfolgende Backups desselben Hosts nur die geänderten Chunks übertragen und speichern. Die Retention wird von ProxMenux selbst für geplante Aufträge angewendet — <code>run_scheduled_backup.sh</code> führt <code>proxmox-backup-client prune</code> mit <code>--keep-last</code> / <code>--keep-daily</code> / <code>--keep-weekly</code> nach jedem erfolgreichen Lauf mit den für den Auftrag konfigurierten Werten aus."
},
"repoSelection": {
"heading": "Repository-Auswahl",
"intro": "ProxMenux entdeckt PBS-Repositories aus zwei Quellen in jedem Backup. Der Bediener wählt einen aus einem einheitlichen Menü aus; die Auswahl bestimmt <code>HB_PBS_REPOSITORY</code>, <code>HB_PBS_SECRET</code> und <code>HB_PBS_FINGERPRINT</code> für den Lauf.",
"sourceRows": [
{
"source": "Proxmox storage.cfg (automatisch erkannt)",
"path": "/etc/pve/storage.cfg + /etc/pve/priv/storage/NAME.pw",
"content": "Jede <code>pbs:</code> Strophe in der eigenen Speicherkonfiguration von Proxmox wird automatisch abgeholt. Server, Datenspeicher, Benutzername und Fingerabdruck stammen aus der Strophe. Das Passwort wird aus dem eigenen Anmeldeverzeichnis von Proxmox gelesen. Auf der ProxMenux-Seite ist kein erneuter Eintrag erforderlich – das Repository ist verfügbar, sobald es in Proxmox konfiguriert ist."
},
{
"source": "ProxMenux manuelle Konfiguration",
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
"content": "Zusätzlich von <em> Backup-Ziele konfigurieren → PBS Ziele → PBS</em> hinzufügen. Prompts für einen Namen, Benutzernamen (<code>root@pam</code> oder <code>user@pbs!token</code>), Host oder IP, Datenspeicher und Passwort. Das Passwort wird bei leeren Eingaben erneut angezeigt - ein leeres Speichern würde ansonsten still bleiben und jedes nachfolgende Backup würde mit einem undurchsichtigen Authentifizierungsfehler fehlschlagen. Dieser Pfad wird verwendet, wenn das Ziel PBS nicht als Proxmox-Speicher registriert ist."
}
],
"menuTitle": "Auswahlmenü",
"menuBody": "Beide Quellen werden in einem einzigen Menü angezeigt, wobei jede Zeile mit ihrem Ursprung markiert ist (<code>[proxmox]</code> oder <code>[manual]</code>). Einträge, deren Passwort nicht aufgelöst werden konnte, werden mit einer <code>⚠ no password</code>-Warnung versehen – die Auswahl einer löst einen erneuten Passworteintrag aus, bevor das Backup startet. Der Fingerabdruck wird über die <code>PBS_FINGERPRINT</code>-Umgebungsvariable an <code>proxmox-backup-client</code> übergeben; bei Abwesenheit fordert der Client den Betreiber auf, das Serverzertifikat beim ersten Backup interaktiv zu akzeptieren."
},
"backupCommand": {
"heading": "Der Backup-Befehl",
"intro": "Der Upload erfolgt mit einem einzigen Aufruf von <code>proxmox-backup-client backup</code>. ProxMenux übergibt Passwort, Verschlüsselungspasswort und Fingerabdruck mit <code>env</code> als Umgebungsvariablen an den Client.",
"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": "Backup-ID-Bezeichnung",
"backupIdBody": "Die Standard-Backup-ID ist <code>hostcfg-HOSTNAME</code>. Vor dem Upload wird sie bestätigt oder bearbeitet. Zeichen außerhalb von <code>[A-Za-z0-9_-]</code> sowie abschließende Bindestriche werden entfernt. Die Wiederverwendung derselben ID bei weiteren Läufen ist beabsichtigt: PBS behandelt die ID als <em>Gruppe</em>. Jedes weitere Backup erscheint als neuer Eintrag in dieser Gruppe und nutzt die Deduplizierung mit früheren Backups.",
"pxarTitle": "Warum die Quelle die vollständige Staging-Wurzel ist",
"pxarBody": "Die <code>.pxar</code>-Quelle ist die gesamte <code>staging_root</code> - <code>rootfs/</code>, <code>metadata/</code> und <code>manifest.json</code> zusammen. Frühere Versionen bestanden <code>$staging_root/rootfs</code> als Quelle; Das ließ <code>metadata/</code> aus dem Archiv und die Kompatibilitätsprüfung der Wiederherstellung hatte nichts zu lesen, was selbst bei Wiederherstellungen des gleichen Hosts zu Cross-Host-Warnungen führte. Alte Backups, die mit der Rootfs-only-Quelle erstellt wurden, werden immer noch korrekt über den <code>_rs_check_layout</code>-Fall-3-Zweig wiederhergestellt, der einen flachen <code>etc/var/root/usr</code>-Baum zurück in eine <code>rootfs/</code>-Hierarchie wickelt."
},
"encryption": {
"heading": "Clientseitige Verschlüsselung",
"glossaryHint": "Dieser Abschnitt verwendet die Begriffe <em>Schlüsseldatei</em>, <em>Passphrase</em> und <em>Wiederherstellungshülle</em>. Das <glosarioLink>Glossar</glosarioLink> erklärt die Unterschiede mit einem Satz pro Begriff.",
"intro": "Die clientseitige PBS-Verschlüsselung mit einer Schlüsseldatei verschlüsselt die Blöcke vor dem Upload auf dem Quellhost. In ProxMenux ist die Verschlüsselung optional. Wird sie aktiviert, entscheidet der Betreiber bei der Einrichtung ausdrücklich mit Ja oder Nein, ob zusätzlich eine passphrasengeschützte Wiederherstellungskopie der Schlüsseldatei auf PBS hinterlegt wird; diese Wahl lässt sich später im Monitor ändern. Die Schlüsseldatei selbst liegt immer unter dem kanonischen Pfad <code>/usr/local/share/proxmenux/pbs-key.conf</code> und wird für alle weiteren verschlüsselten Backups ohne erneute Nachfrage verwendet.",
"keyfileTitle": "Einrichten der Keyfile",
"keyfileBody": "Der Verschlüsselungsdialog erscheint beim ersten verschlüsselten Backup des Hosts. Zunächst wird gefragt, ob das Backup verschlüsselt werden soll: <em>Nein</em> fährt ohne Verschlüsselung fort, <em>Ja</em> führt zum zweiten Schritt. Dieser hängt davon ab, ob bereits eine Schlüsseldatei unter <code>/usr/local/share/proxmenux/pbs-key.conf</code> installiert ist. Falls ja, wird sie ohne Nachfrage wiederverwendet und das Backup fortgesetzt; auch spätere Backups fragen nicht erneut. Andernfalls bietet ein Menü zwei Möglichkeiten. <em>Neue Schlüsseldatei erzeugen</em> führt <code>proxmox-backup-client key create --kdf none</code> aus. <em>Vorhandene Schlüsseldatei verwenden</em> erkennt eine von PVE verwaltete Datei automatisch: Ist das gewählte PBS-Repository in Proxmox mit einem Verschlüsselungsschlüssel unter <code>/etc/pve/priv/storage/&lt;NAME&gt;.enc</code> registriert, wird diese Datei ohne Nachfrage an den kanonischen ProxMenux-Pfad kopiert. Gibt es keine passende PVE-Datei, wird nach dem absoluten Pfad gefragt, unter dem der Betreiber die Schlüsseldatei bereits auf diesem Host abgelegt hat. In beiden Fällen liegt sie danach am kanonischen Pfad mit <code>chmod 600</code>.",
"modesTitle": "Schlüsseldatei je Host oder gemeinsam nutzen",
"modesIntro": "Beide Betriebsmodelle werden unterstützt und keines wird durchgesetzt - die Wahl liegt beim Betreiber, je nachdem, wie seine Flotte organisiert ist.",
"modesPerHostTitle": "Eigene Schlüsseldatei je Host (Standard)",
"modesPerHostBody": "Jeder Host generiert seine eigene Schlüsseldatei, wenn er zum ersten Mal die PBS-Verschlüsselung aktiviert. Die Isolation ist maximal: Durch die Kompromittierung der Schlüsseldatei eines Hosts werden die Backups anderer Hosts nicht offengelegt. Empfohlen für Produktionsflotten und für Umgebungen, in denen Hosts unterschiedliche Eigentümer oder Compliance-Grenzen haben.",
"modesSharedTitle": "Gemeinsame Keyfile (Import auf jedem Host)",
"modesSharedBody": "Eine Hauptschlüsseldatei wird einmal generiert und auf jedem Host über die Option <em>Vorhandene Schlüsseldatei verwenden</em> installiert. Die Verwaltung ist einfacher: Ein einziges Geheimnis muss geschützt werden, und jeder Host kann die Archive jedes anderen entschlüsseln (nützlich für Konsolidierung, hostübergreifende Wiederherstellungsübungen oder zentralisierte Backup-Verifizierung). Der Nachteil besteht darin, dass ein Leck der gemeinsam genutzten Schlüsseldatei jeden Host auf einmal offenlegt. Empfohlen für Homelabs und Flotten, bei denen alle Hosts denselben Eigentümer und dieselbe Vertrauensgrenze haben.",
"recoveryTitle": "Schlüssel auf PBS hinterlegen — der Betreiber entscheidet",
"recoveryBody": "Direkt nach Auswahl der Schlüsseldatei fragt ProxMenux ausdrücklich <em>Schlüssel auf PBS hochladen?</em> und bietet zwei Antworten. <strong>Erst wenn der Betreiber Ja wählt, wird ein Wiederherstellungsartefakt auf PBS hochgeladen.</strong> Vorgabe ist <em>Nein, nur lokal behalten</em>: Die Schlüsseldatei bleibt am kanonischen lokalen Pfad, ProxMenux lädt kein Wiederherstellungsartefakt auf PBS hoch und der Betreiber sorgt selbst für eine externe Kopie. Die Schaltfläche <em>Schlüsseldatei herunterladen</em> in der PBS-Zielzeile des Monitors stellt sie bei Bedarf bereit. Bei <em>Ja, hochladen</em> wird zweimal eine Wiederherstellungspassphrase abgefragt und auf Übereinstimmung geprüft. ProxMenux schützt die Schlüsseldatei damit mittels AES-256-CBC und PBKDF2 (600.000 Iterationen, zufälliges Salt) und erzeugt <code>pbs-key.recovery.enc</code>. Jedes weitere verschlüsselte Backup lädt diese Hülle als zugehörige Backup-Gruppe auf PBS hoch. Dabei werden weder die Passphrase noch die Schlüsseldatei im Klartext an PBS gesendet. Die Entscheidung lässt sich jederzeit im Monitor ändern: Der Schalter in der PBS-Zielzeile wählt Ja oder Nein und übernimmt je nach Zustand sofort Upload starten, Upload stoppen oder Passphrase aktualisieren.",
"blobUploadTitle": "Gepaarte Backup-Gruppe auf PBS",
"blobUploadBody1": "Ist die Hinterlegung auf <em>Ja, hochladen</em> gesetzt, lädt ProxMenux nach jedem verschlüsselten Backup die Wiederherstellungshülle als zweite, zugehörige Backup-Gruppe auf PBS hoch. Sie heißt wie die Host-Gruppe, ergänzt um <code>-keyrecovery</code>. Beide Gruppen stehen in der Datenspeicherliste nebeneinander: eine für Host-Backups, eine für Wiederherstellungshüllen. <strong>Die Hülle verlässt den Host niemals im Klartext</strong>: Noch vor der Übertragung verschlüsselt der Host sie mit AES-256-CBC und PBKDF2 (<code>openssl enc -aes-256-cbc -pbkdf2 -iter 600000 -salt</code>). PBS erhält ausschließlich die bereits verschlüsselte Hülle.",
"envelopeSecurityTitle": "Ist das Hochladen der keyrecovery-Datei in PBS ein Sicherheitsrisiko?",
"envelopeSecurityBody": "Die keyrecovery-datei ist verschlüsselt in transit und in ruhe. Die Wiederherstellungspassphrase verlässt den Host nie: Verschlüsselung geschieht lokal vor dem Upload, und PBS sieht immer nur das bereits verschlüsselte Ergebnis. Ein PBS-Administrator - oder jeder, der Zugriff auf den Datenspeicher hat - kann die KeyRecovery-Datei herunterladen, aber ohne die Wiederherstellungspassphrase können sie die Keyfile nicht lesen: Es ist undurchsichtiger Geheimtext. Das Rekonstruieren der Keyfile erfordert beide Teile gleichzeitig, die KeyRecovery-Datei und die Passphrase, und nur der Operator hält beide.",
"blobUploadConstraintTitle": "Warum zwei Gruppen statt einer einzigen verschlüsselten",
"blobUploadConstraintBody": "Ein einzelner Aufruf von <code>proxmox-backup-client backup</code> verschlüsselt entweder alle enthaltenen Archive mit derselben Schlüsseldatei oder keines davon. Das Host-Backup muss mit der Host-Schlüsseldatei verschlüsselt werden. Die Wiederherstellungshülle darf aber nicht im selben Upload liegen, sonst würde sie mit genau der Schlüsseldatei verschlüsselt, die sie enthält. Auf einem neu installierten Host ließe sie sich nicht öffnen: Zum Entschlüsseln der Schlüsseldatei wäre diese selbst nötig. Deshalb werden die beiden Artefakte unabhängig hochgeladen und erscheinen als zwei Gruppen. Der PBS-Client verschlüsselt das Host-Backup mit der Schlüsseldatei; ProxMenux verschlüsselt die Wiederherstellungshülle vor dem Upload mit der Passphrase. Zwei verschiedene Verschlüsselungsschichten schützen zwei unterschiedliche Inhalte.",
"blobUploadImageAlt": "PBS Benutzeroberfläche zeigt die Backup-Gruppen hostcfg-HOSTNAME und hostcfg-HOSTNAME-keyrecovery angrenzend im Datenspeicher.",
"blobUploadImageCaption": "PBS UI — die gepaarten Backup-Gruppen. Die Hauptgruppe hält die Host-Backups; die -keyrecovery-Gruppe hält die passphrase-verpackte Schlüsseldatei.",
"recoverTitle": "Wiederherstellung auf einem neu installierten Host",
"recoverBody": "Fehlt die lokale Schlüsseldatei am kanonischen Pfad, etwa nach einer Neuinstallation oder ausdrücklichem Löschen, versucht die Wiederherstellung drei Quellen der Reihe nach und stoppt bei der ersten brauchbaren Schlüsseldatei. Erstens wird eine zum gewählten PBS-Repository passende, von PVE verwaltete Datei unter <code>/etc/pve/priv/storage/&lt;NAME&gt;.enc</code> ohne Nachfrage an den kanonischen Pfad kopiert. Zweitens wird, falls auf PBS eine Gruppe <code>-keyrecovery</code> vorhanden ist, deren neuester Snapshot heruntergeladen und die Wiederherstellungspassphrase zum Entschlüsseln abgefragt. Funktioniert beides nicht oder lehnt der Betreiber die Optionen ab, fragt der dritte Schritt nach dem absoluten Pfad der Schlüsseldatei auf diesem Host und kopiert sie an den kanonischen Pfad. Der Monitor bietet denselben Importablauf im Backup-Detaildialog. Oben erscheint ein gelbes Feld, wenn Wiederherstellen, Herunterladen oder Inhalt anzeigen eine nicht installierte Schlüsseldatei benötigen. Ist eine Datei installiert, passt aber nicht zum Backup, meldet PBS <code>wrong key — manifest's key XX does not match provided key YY</code>. Dieselben drei Aktionen zeigen dann ein strukturiertes gelbes Feld mit dem erforderlichen Manifest-Fingerabdruck an, damit der Betreiber die passende Schlüsseldatei für dieses Backup erkennen und importieren kann.",
"monitorManagementTitle": "Schlüsseldatei im Monitor verwalten",
"monitorManagementBody": "Der Monitor zeigt die Schlüsseldatei-Steuerung direkt in jeder PBS-Zielzeile der Backup-Konfigurationsseite. Es gibt drei Aktionen: <em>Herunterladen</em> exportiert die aktuelle Datei in den Browser des Betreibers; <em>Hochladen</em> ersetzt die installierte Datei durch eine bereitgestellte Datei, wobei die bisherige erst nach erfolgreicher Installation der neuen am kanonischen Pfad überschrieben wird; <em>Löschen</em> entfernt die Datei vom Host. Daneben befindet sich die Steuerung der Wiederherstellungskopie: eine Ja/Nein-Auswahl für <em>Schlüssel auf PBS hochladen?</em>, bei Ja ein Passphrase-Feld und eine passende Übernehmen-Schaltfläche mit <em>Upload starten</em>, <em>Upload stoppen</em> oder <em>Passphrase aktualisieren</em>. Jede Aktion nutzt dieselben Flask-Endpunkte wie die Terminaloberfläche. Die Wirkung auf Dateien und den PBS-Zustand ist deshalb bei beiden Oberflächen identisch."
},
"restoreAccess": {
"heading": "Abruf auf der Wiederherstellungsseite",
"body": "Der Wiederherstellungsfluss erkennt ProxMenux Host-Backups auf PBS, indem er Backup-Gruppen unter dem konfigurierten Repository auflistet und nach Backup-ID-Muster filtert. Die Registerkarte Backups des Monitors stellt dieselbe Liste dar. Durch das Auswählen eines Backups wird <code>proxmox-backup-client restore</code> mit demselben Repository + Passwort + Fingerabdruck (und <code>--keyfile</code>, als das Backup verschlüsselt wurde) ausgelöst, wodurch das <code>.pxar</code> in ein Staging-Verzeichnis extrahiert wird, das <code>_rs_check_layout</code> dann der Standardwiederherstellungspipeline zuführt. Für das manuelle Abrufen außerhalb von ProxMenux extrahiert derselbe Befehl das Archiv auf einen beliebigen Pfad - der resultierende Baum kann inspiziert oder einer handgesteuerten Wiederherstellung zugeführt werden."
},
"references": {
"heading": "Referenzen",
"intro": "Offizielle Dokumentation von Proxmox Backup Server zu den Komponenten, auf die ProxMenux aufbaut.",
"items": [
{
"label": "Proxmox Backup Server Dokumentation",
"href": "https://pbs.proxmox.com/docs/",
"tail": "— Haupteinstiegspunkt für Installation, Verwaltung, Speicherung, Benutzer und Rollen."
},
{
"label": "proxmox-backup-client",
"href": "https://pbs.proxmox.com/docs/backup-client.html",
"tail": " — das Befehlszeilenwerkzeug, das ProxMenux für jedes Backup und jede Wiederherstellung aufruft. Beschreibt Backup-IDs, Backup-Typen, Archive, Repository-Syntax und Umgebungsvariablen."
},
{
"label": "Clientseitige Verschlüsselung",
"href": "https://pbs.proxmox.com/docs/backup-client.html#encryption",
"tail": " — Erzeugung der Schlüsseldatei, --kdf-Modi und das Verschlüsselungsmodell, das ProxMenux um eine passphrasengeschützte Wiederherstellungskopie erweitert."
},
{
"label": "Datenspeicherverwaltung",
"href": "https://pbs.proxmox.com/docs/storage.html",
"tail": "Erstellen und Verwalten der Datenspeicher, die Host-Backups erhalten, einschließlich Chunk-Store-Layout und Berechtigungen."
},
{
"label": "Aufbewahrungsregeln und Garbage Collection",
"href": "https://pbs.proxmox.com/docs/maintenance.html#pruning",
"tail": " — das Aufbewahrungsmodell hinter --keep-last / --keep-daily / --keep-weekly, das ProxMenux je geplantem Auftrag anwendet, sowie die Freigabe ungenutzter Blöcke durch PBS nach der Bereinigung."
}
]
}
}
@@ -0,0 +1,230 @@
{
"meta": {
"title": "Glossar - Backup & Restore | ProxMenux",
"description": "Begriffe des ProxMenux-Sicherungs- und Wiederherstellungssystems: Verschlüsselung, Schlüsseldatei, Passphrase, Wiederherstellungsumschlag, PBS, Chunks, rootfs, Manifest, Ausführungsprozess und Ergänzung zwischen Kernel-Versionen.",
"ogTitle": "Backup & Restore Glossar | ProxMenux",
"ogDescription": "Klare Definitionen für das Vokabular, das in der ProxMenux-Backup- und Wiederherstellungsdokumentation verwendet wird.",
"twitterTitle": "Backup & Restore Glossar | ProxMenux",
"twitterDescription": "Passphrase, Keyfile, Recovery-Umschlag, Rootfs, Manifest, PBS, Brocken — alle an einer Stelle definiert."
},
"header": {
"title": "Glossar",
"description": "Begriffe, die in der Backup- und Wiederherstellungsdokumentation mit ihrer Definition verwendet werden.",
"section": "Sicherung und Wiederherstellung"
},
"intro": {
"body": "Begriffe werden nach Themen gruppiert. Jeder Eintrag gibt den Begriff und eine kurze Definition."
},
"groups": [
{
"title": "Verschlüsselung und Key Recovery",
"intro": "Vokabular für den PBS-Verschlüsselungsblock. Es beinhaltet zwei verschiedene Geheimnisse: eine binäre Schlüsseldatei und eine geschriebene Passphrase.",
"entries": [
{
"id": "passphrase-recuperacion",
"term": "Wiederherstellungspassphrase",
"def": "Textkennwort, das der Benutzer auswählt, um den <a href=\"#sobre-recuperacion\">Wiederherstellungsumschlag </a> zu schützen. Es wird zweimal mit einer Übereinstimmungsprüfung aufgefordert und wird nur verwendet, um den Umschlag zu verschlüsseln und zu entschlüsseln, wenn die Schlüsseldatei jemals wiederhergestellt werden muss. <strong>Es ist nicht die Passphrase, die die Schlüsseldatei selbst entsperrt</strong> und wird niemals an PBS gesendet. Während eines normalen Backups verlässt es niemals den Host."
},
{
"id": "clave-cifrado",
"term": "Keyfile (Verschlüsselungsschlüssel)",
"def": "Schlüsseldatei, mit der proxmox-backup-client die <a href=\"#chunk\">Chunks</a> vor dem Hochladen zu PBS verschlüsselt. Ohne passenden Schlüssel sind verschlüsselte Daten nicht lesbar. ProxMenux speichert sie unter <code>/usr/local/share/proxmenux/pbs-key.conf</code> mit Modus <code>600</code>. Schützen Sie sie; der <a href=\"#sobre-recuperacion\">Wiederherstellungsumschlag</a> dient ihrer Wiederherstellung bei Verlust."
},
{
"id": "contrasena-keyfile",
"term": "Keyfile Passphrase (KDF Passphrase)",
"def": "Optionale Passphrase, die die Keyfile selbst tragen kann, im Unterschied zur <a href=\"#passphrase-recuperacion\">Recovery Passphrase</a>. Es existiert nur, wenn die Keyfile mit <code>--kdf scrypt</code> erstellt wurde (normalerweise eine importierte Keyfile). Ohne sie kann die Keyfile nicht für die Verwendung entsperrt werden. ProxMenux behält es in verschlüsselter Form auf dem Host, so dass geplante Backups ohne interaktive Eingabeaufforderung ausgeführt werden können."
},
{
"id": "sobre-recuperacion",
"term": "Wiederherstellungsumschlag",
"def": "Das <a href=\"#clave-cifrado\">keyfile</a> ist in eine zusätzliche Schicht eingewickelt: Es ist mit der <a href=\"#passphrase-recuperacion\">Wiederherstellungspassphrase</a> unter Verwendung von <a href=\"#aes-256-cbc\">AES-256-CBC</a> und <a href=\"#pbkdf2\">PBKDF2</a> verschlüsselt, bevor es den Host verlässt. Es wird auf PBS als <code>-keyrecovery</code>-Gruppe hochgeladen. Ohne die Passphrase ist der Umschlag undurchsichtig: Wenn Sie ihn von PBS herunterladen, wird die Schlüsseldatei nicht angezeigt."
},
{
"id": "cifrado-cliente",
"term": "Clientseitige Verschlüsselung",
"def": "Verschlüsselungsmodell, bei dem Daten auf dem Quellhost verschlüsselt werden, bevor sie hochgeladen werden. PBS empfängt und speichert immer nur Geheimtext; nicht einmal ein PBS-Administrator mit Datenspeicherzugriff kann ihn ohne die Schlüsseldatei lesen. ProxMenux baut auf diesem Modell auf und fügt den <a href=\"#sobre-recuperacion\">Wiederherstellungsumschlag</a> hinzu."
},
{
"id": "kdf-none",
"term": "--kdf none",
"def": "Option auf <code>proxmox-backup-client key create</code>, die eine Schlüsseldatei ohne angehängte Passphrase erzeugt. Die Keyfile kann direkt ohne Aufforderung verwendet werden, was für geplante Aufträge, die unbeaufsichtigt ausgeführt werden, unerlässlich ist. Dies ist, was ProxMenux standardmäßig verwendet, wenn eine neue Keyfile erzeugt wird."
},
{
"id": "kdf-scrypt",
"term": "--kdf scrypt",
"def": "Option auf <code>proxmox-backup-client key create</code>, die eine Schlüsseldatei erzeugt, die durch eine <a href=\"#contrasena-keyfile\">keyfile-Passphrase</a> geschützt ist. Jede Verwendung der Keyfile erfordert das Entsperren mit dieser Passphrase. ProxMenux akzeptiert diese Art von Keyfile beim Import und speichert die Passphrase verschlüsselt, so dass geplante Backups immer noch unbeaufsichtigt ausgeführt werden können."
},
{
"id": "aes-256-cbc",
"term": "AES-256-CBC",
"def": "Standardsymmetrische Chiffre. ProxMenux verwendet es (über <code>openssl enc -aes-256-cbc</code>), um die <a href=\"#clave-cifrado\">Schlüsseldatei</a> mit der <a href=\"#passphrase-recuperacion\">Wiederherstellungspassphrase</a> zu wickeln und die <a href=\"#sobre-recuperacion\">Umschlag</a> zu produzieren."
},
{
"id": "pbkdf2",
"term": "PBKDF2",
"def": "Kryptografische Funktion, die eine vom Menschen typisierte Passphrase in einen für die Verschlüsselung geeigneten binären Schlüssel verwandelt. Es verlangsamt Brute-Force-Versuche, indem es viele Iterationen anwendet. ProxMenux verwendet es mit 600 000 Iterationen und einem Zufallssalz bei der Verschlüsselung des Recovery-Umschlags."
}
]
},
{
"title": "Backup-Struktur",
"intro": "Begriffe, die beschreiben, was sich in einem Backup befindet, unabhängig vom Zielort.",
"entries": [
{
"id": "rootfs",
"term": "rootfs / Root-Dateisystem",
"def": "Dateibasierte Kopie des Dateisystems des Quellhosts, erstellt mit <code>rsync</code> nach dem <a href=\"#perfil-defecto\">Standardprofil</a> und zusätzlichen <a href=\"#rutas-personalizadas\">eigenen Pfaden</a>. Kein vollständiges Datenträgerabbild: Kopiert werden nur Pfade mit Konfiguration oder Zustand, die Proxmox nicht selbst wiederherstellen kann."
},
{
"id": "manifiesto",
"term": "Manifest (manifest.json)",
"def": "Strukturiertes JSON-Dokument zur Beschreibung des Quell-Hosts zum Backup-Zeitpunkt: Hardware, Storage, Kernel, ProxMenux-installierte Komponenten und Inventar von VMs und LXCs. Es wird von sechs unabhängigen Erfassungsroutinen produziert. Der Wiederherstellungsfluss verwendet ihn, um Quelle und Ziel zu vergleichen."
},
{
"id": "staging",
"term": "Stagingverzeichnis",
"def": "Temporäres Verzeichnis, in dem ProxMenux die drei Blöcke (rootfs, Metadaten und Manifest) zusammenstellt, bevor sie verpackt und zum Zielort hochgeladen werden. Es wird automatisch entfernt, wenn das Backup beendet ist, auch bei Abbruch."
},
{
"id": "perfil-defecto",
"term": "Standardprofil",
"def": "Kuratierte Reihe von Pfaden, die ProxMenux standardmäßig in jedem Backup kopiert. Umfasst PVE-Konfiguration, Netzwerk, SSH, Kernel, apt, ProxMenux Tools und mehr. Es ist im Code definiert und auf der Seite <em>Wie es funktioniert</em> dokumentiert."
},
{
"id": "rutas-personalizadas",
"term": "Benutzerdefinierte Pfade",
"def": "Zusätzliche Pfade, die der Benutzer zusätzlich zum <a href=\"#perfil-defecto\">default-Profil</a> hinzufügt. Entweder persistent (gespeichert in <code>backup-extra-paths.txt</code>) oder per Run (im Custom-Modus ausgewählt)."
}
]
},
{
"title": "Ziele und Speicher",
"intro": "Begriffe, die an den Ort gebunden sind, an dem das Backup landet - PBS-Server, lokales Archiv oder Borg-Repository - und wie PBS die Daten organisiert.",
"entries": [
{
"id": "repositorio-pbs",
"term": "PBS-Repository",
"def": "Kombination von Proxmox Backup Server + <a href=\"#datastore\">datastore</a> + Benutzer, der das Backup erhält. Identifiziert durch den String <code>user@realm@host:datastore</code>. Ein einzelner PBS-Server kann mehrere Repositories hosten."
},
{
"id": "datastore",
"term": "Datenspeicher",
"def": "Konkreter Datenspeicher auf einem PBS-Server für Sicherungen und ihre Chunks. Er liegt auf einem Dateisystem des PBS-Servers und besitzt eigene Berechtigungen und Richtlinien."
},
{
"id": "chunk",
"term": "Chunk/Chunk-Deduplizierung",
"def": "PBS teilt jedes Backup in Blöcke variabler Größe auf, identifiziert jedes Stück durch seinen Hash und speichert jedes Stück nur einmal, auch wenn es in vielen verschiedenen Backups erscheint. Dies bedeutet, dass aufeinanderfolgende Backups desselben Hosts - oder über ähnliche Hosts - sehr wenig zusätzlichen Speicherplatz benötigen."
},
{
"id": "fingerprint",
"term": "Fingerabdruck",
"def": "Kryptografischer Fingerabdruck des PBS-Servers TLS Zertifikat. Der Client kann überprüfen, ob er mit dem vorgesehenen Server spricht, ohne sich auf eine öffentliche Zertifizierungsstelle zu verlassen. ProxMenux leitet sie über die Umgebungsvariable <code>PBS_FINGERPRINT</code> an <code>proxmox-backup-client</code> weiter."
},
{
"id": "grupo-copia",
"term": "Backup-Gruppe",
"def": "Logischer Container innerhalb von PBS, unter dem sich aufeinanderfolgende Backups desselben Assets ansammeln. Jedes neue Backup teilt die Deduplizierung mit früheren in derselben Gruppe. ProxMenux verwendet zwei Gruppen pro Host, wenn die Verschlüsselung aktiviert ist: eine für das Host-Backup und eine mit einem <code>-keyrecovery</code>-Suffix für den <a href=\"#sobre-recuperacion\">Wiederherstellungsumschlag</a>."
},
{
"id": "backup-id",
"term": "Backup-ID",
"def": "Name der <a href=\"#grupo-copia\">backup-Gruppe</a>. ProxMenux ist standardmäßig <code>hostcfg-HOSTNAME</code> und lässt den Benutzer es vor dem Hochladen bearbeiten; nicht unterstützte Zeichen werden automatisch entfernt."
},
{
"id": "pxar",
"term": ".pxar",
"def": "PBS-natives Archivformat für Verzeichnisse. Es verhält sich wie ein für die Chunk-Deduplizierung optimierter tar-Archiv: Anstatt eine undurchsichtige Datei zu speichern, zerlegt PBS seinen Inhalt in wiederverwendbare Chunks."
}
]
},
{
"title": "Ausführung und Terminplanung",
"intro": "Begriffe, die vom ProxMenux-Planed-Jobs-System verwendet werden.",
"entries": [
{
"id": "runner",
"term": "Ausführungsprozess",
"def": "Das <code>run_scheduled_backup.sh</code>-Script, das ein geplantes Backup ausführt. Es liest die Job-Konfiguration, startet das passende Backend (Local, PBS oder Borg), wendet nach Erfolg die Aufbewahrungsregeln an und sendet die konfigurierten Benachrichtigungen."
},
{
"id": "trabajo-programado",
"term": "Geplanter Auftrag",
"def": "Beharrliche Konfiguration eines wiederkehrenden Backups. Behält Ziel, Anmeldeinformationen, Verschlüsselung, Zeitplan und Aufbewahrung. Lebt bei <code>/var/lib/proxmenux/backup-jobs/&lt;id&gt;.env</code>."
},
{
"id": "modo-adjunto",
"term": "Anhängemodus",
"def": "Auftrag ohne eigenen Timer. Ein job-end-Hook von PVE-<code>vzdump</code> startet ihn nach Gastsicherungen bei passendem Zielspeicher. Der gewählte Elternauftrag liefert Speicher und Aufbewahrung, die bei jedem Lauf erneut aus dem Elternauftrag gelesen wird; der Hook vergleicht aber Speicher statt Auftrags-ID. Auch andere Aufgaben desselben Speichers können ihn auslösen. Nur Local und PBS."
},
{
"id": "timer-systemd",
"term": "Systemd Timer",
"def": "Standard-systemd-Mechanismus, der einen Befehl in einem Kalender auslöst. ProxMenux erstellt einen Timer pro <em>unabhängigem</em> geplanten Job; <a href=\"#modo-adjunto\">attach-mode</a> Jobs verwenden keinen Timer, sie laufen über den PVE-Skript-Hook."
},
{
"id": "retencion",
"term": "Aufbewahrung (keep-last, keep-daily…)",
"def": "Richtlinie, die entscheidet, welche älteren Backups aufbewahrt und welche beschnitten werden sollen. Definiert pro Auftrag mit Parametern wie <code>keep-last</code>, <code>keep-daily</code>, <code>keep-weekly</code>, <code>keep-monthly</code>. Wird vom Ausführungsprozess nach jedem erfolgreichen Backup angewendet."
}
]
},
{
"title": "Wiederherstellen",
"intro": "Terme aus dem Wiederherstellungsfluss.",
"entries": [
{
"id": "restauracion-universal",
"term": "Universale Wiederherstellung",
"def": "Der ProxMenux-Wiederherstellungsfluss extrahiert nicht nur das Dateisystem: Er liest das Manifest, um Unterschiede zwischen Quelle und Ziel zu erkennen, reproduziert die Systemkonfiguration und führt die Installateure für die ProxMenux-verwalteten Komponenten erneut aus. Ziel ist es, den Quellhost zu reproduzieren, nicht nur das Archiv."
},
{
"id": "hidratacion",
"term": "Ergänzung zwischen Kernel-Versionen (Hydration)",
"def": "Wiederherstellungsschritt, der die eigene Quellkonfiguration (IOMMU-Parameter, VFIO-Geräte-IDs, eigene Anpassungen und GRUB-Schlüssel) in die frische Boot-Konfiguration des Ziels übernimmt, ohne kernelgebundene Quelldateien unverändert zu kopieren. Läuft, wenn der Zielkernel neuer als der der Sicherung ist."
},
{
"id": "cross-kernel",
"term": "Kernübergreifende Wiederherstellung",
"def": "Wiederherstellung, bei der der Zielkernel vom Quellkernel abweicht und meist neuer ist. Der <a href=\"#hidratacion\">Ergänzungsschritt</a> verhindert die Übernahme von Dateien, die mit dem Zielkernel inkompatibel sind."
},
{
"id": "instalador-postboot",
"term": "Installateur nach dem Booten",
"def": "Komponenten, die nach dem ersten Booten des wiederhergestellten Hosts neu installiert wurden (NVIDIA-Treiber, Coral TPU-Treiber, AMD GPU-Tools, Intel GPU-Tools). Jeder Installer läuft gegen den Kernel des Ziels, so dass der wiederhergestellte Host nicht davon abhängt, ob der Kernel der Quelle vorhanden ist."
},
{
"id": "compatibility-check",
"term": "Kompatibilitätsprüfung",
"def": "Vergleich zwischen dem Quellenmanifest und dem Zustand des Ziels, den ProxMenux zu Beginn der Wiederherstellung durchführt. Es entscheidet, welche Teile wortwörtlich kopiert werden, welche Hydratation benötigen und welche von einem Installateur neu erstellt werden."
},
{
"id": "equipo-recien-instalado",
"term": "Frische Installation",
"def": "Host nur von Grund auf neu installiert, ohne lokale <a href=\"#clave-cifrado\">Schlüsseldatei</a>. Um ein verschlüsseltes Backup wiederherzustellen, muss zunächst die Schlüsseldatei aus der <a href=\"#sobre-recuperacion\">Wiederherstellungsumschlag</a>, die auf PBS gespeichert ist, mit der <a href=\"#passphrase-recuperacion\">Wiederherstellungspassphrase</a> wiederhergestellt werden."
}
]
}
],
"whereNext": {
"heading": "Wo als nächstes",
"items": [
{
"label": "Wie es funktioniert",
"href": "/docs/backup-restore/how-it-works",
"tail": "- wo das Rootfs-, Manifest- und Anwendungsinventar in ein Backup passt."
},
{
"label": "Proxmox-Backup-Server-Ziel",
"href": "/docs/backup-restore/destinations/pbs",
"tail": "- wobei clientseitige Verschlüsselung, Keyfile, Recovery-Passphrase und Envelope ausführlich dokumentiert sind."
},
{
"label": "Wiederherstellung",
"href": "/docs/backup-restore/restoring",
"tail": " — Wiederherstellungsablauf und Verwendung des Manifests."
}
]
}
}
@@ -0,0 +1,205 @@
{
"meta": {
"title": "Wie ProxMenux Backup intern funktioniert – Rootfs, Manifest, Anwendungen",
"description": "Detaillierte Aufschlüsselung dessen, was ein ProxMenux-Backup enthält: die Rootfs, die von rsync des Standardpfadprofils erzeugt werden, das strukturierte Manifest, das von sechs unabhängigen Sammlern erstellt wird, und das Anwendungsinventar, das die automatische Neuinstallation von Paketen und Komponenten nach einer Wiederherstellung steuert.",
"ogTitle": "Wie ProxMenux Backup intern funktioniert",
"ogDescription": "Die drei Nutzlasten eines ProxMenux-Backups wurden erklärt: Rootfs, Manifest und Anwendungen.",
"twitterTitle": "Wie ProxMenux Backup funktioniert | ProxMenux",
"twitterDescription": "Die drei Nutzlasten eines ProxMenux-Backups und wie die Wiederherstellung den Quellhost von ihnen reproduziert."
},
"header": {
"title": "Wie es funktioniert",
"description": "Die interne Aufschlüsselung eines ProxMenux-Backups - Dateisystem, Manifest und Anwendungsinventar - und wie die Wiederherstellung alle drei verbraucht, um den Quellhost auf einem Ziel zu reproduzieren, das möglicherweise nicht den gleichen Kernel teilt.",
"section": "Sicherung und Wiederherstellung"
},
"intro": {
"title": "Ein Archiv, drei Nutzlasten",
"body": "Jedes Backup erzeugt drei klar getrennte Datenblöcke unter einem gemeinsamen Vorbereitungsverzeichnis. Das hochgeladene Archiv (lokales <code>.tar.zst</code>, PBS-Backup oder Borg-Archiv) enthält genau diese Struktur. Die Wiederherstellung nutzt alle drei: <strong>Das Manifest</strong> wird vor Änderungen ausgewertet, um Abweichungen zu erkennen und Ausschlüsse festzulegen; <strong>rootfs</strong> liefert die Konfigurationsdateien, die direkt oder nach einem Neustart angewendet werden; <strong>das Anwendungsinventar</strong> steuert die Paketinstallation und die Neuinstallation der Komponenten nach dem Start. Jeder Block lässt sich unabhängig untersuchen oder entpacken."
},
"layout": {
"heading": "Archivlayout",
"intro": "Jedes Archiv folgt dem gleichen Baumlayout, unabhängig vom Zielort. Das <code>metadata/</code>-Unterverzeichnis enthält die strukturierten Nutzlasten; das <code>rootfs/</code>-Unterverzeichnis enthält die Dateisystemkopie.",
"treeCaption": "Das beim Backup angelegte Vorbereitungsverzeichnis. Alle Ziele erhalten denselben Verzeichnisbaum in ihrem nativen Format: tar bei lokalen Zielen, PBS-Blöcke bei PBS und Borg-Segmente bei 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│ ├── paths_archived.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": "Die Rootfs Nutzlast",
"intro": "Der Verzeichnisbaum <code>rootfs/</code> ist eine <strong>einfache Dateisystemkopie</strong>, die <code>rsync</code> vom Quellhost erstellt. Er enthält ein ausgewähltes <strong>Standardprofil</strong> der für eine Proxmox-Wiederherstellung wichtigen Pfade sowie <strong>eigene Pfade</strong>, die der Benutzer zum Backup-Auftrag oder zur interaktiven Sitzung hinzufügt. Die Auswahl ist bewusst eng: nur Pfade, die <em>Konfiguration enthalten</em> oder <em>Zustand speichern, den Proxmox nicht selbst wiederherstellen kann</em>.",
"defaultProfileTitle": "Das Standardprofil",
"defaultProfileBody": "Das Standardprofil wird durch <code>hb_default_profile_paths</code> in <code>lib_host_backup_common.sh</code> definiert. Es umfasst acht feste Kategorien und bei Bedarf den ZFS-Zustand, die zusammen einen funktionierenden Proxmox-Host beschreiben:",
"categoriesTitle": "Pfadkategorien",
"categoryRows": [
{
"category": "PVE-Kern",
"paths": "/etc/pve, /var/lib/pve-cluster, /etc/vzdump.conf",
"why": "Cluster-Dateisysteminhalte und vzdump-Standards. Die pmxcfs-Datenbank (<code>config.db</code>) wird als konsistenter Snapshot über <code>sqlite3 .backup</code> erfasst, ohne den Cluster zu stoppen, und die <code>.db-wal</code> / <code>.db-shm</code> Sidecars sind vom rsync ausgeschlossen. Wenn <code>sqlite3</code> nicht verfügbar ist, wird stattdessen <code>config.db.raw-fallback</code> erstellt und bei der Wiederherstellung automatisch als Datenbank übernommen."
},
{
"category": "Host-Identität und Netzwerk",
"paths": "/etc/hostname, /etc/hosts, /etc/timezone, /etc/resolv.conf, /etc/network, /etc/systemd/network",
"why": "Alles, was der Host für den Netzwerkstart mit derselben Identität benötigt. Die <code>.link</code>-Dateien unter <code>/etc/systemd/network</code> ordnen Netzwerkkartennamen ihren MAC-Adressen zu, damit Neuinstallationen und Hardwareänderungen die Schnittstellen nicht umbenennen."
},
{
"category": "Zugriff und Authentifizierung",
"paths": "/etc/ssh, /etc/sudoers, /etc/sudoers.d, /etc/pam.d, /etc/security",
"why": "SSH Schlüssel, Sudo Regeln und PAM Konfiguration. Wenn Sie diese verlieren, wird der Benutzer aus dem wiederhergestellten Host ausgeschlossen."
},
{
"category": "Kernel und Boot",
"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-Token, Modul-Blacklists, VFIO-Geräte-IDs, Mount-Tabelle, Storage-Stack-Konfiguration."
},
{
"category": "Shell und Gebietsschema",
"paths": "/etc/environment, /etc/bash.bashrc, /etc/inputrc, /etc/profile, /etc/profile.d, /etc/locale.gen, /etc/locale.conf",
"why": "Systemweite Shell-Einrichtung, Umgebungsvariablen und Konfiguration der Gebietsschema-Erzeugung."
},
{
"category": "Paketverwaltung und 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-Quellen für konsistente Paketauflösung, geplante Aufgaben, die vom Benutzer definiert werden."
},
{
"category": "ProxMenux Zustand & Werkzeuge",
"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": "Optionale, aber übliche Proxmox-Werkzeuge. Fehlende Pfade werden in <code>metadata/missing_paths.txt</code> vermerkt, ohne das Backup zu stoppen."
},
{
"category": "ProxMenux Binärdateien und root",
"paths": "/usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux, /var/lib/proxmenux, /root (ausgenommen flüchtige Subdir)",
"why": "ProxMenux-installierte Binärdateien und Konfiguration pro Benutzer unter <code>/root</code>. Flüchtige Pfade (<code>.bash_history</code>, <code>.cache/</code>, <code>tmp/</code>, <code>.local/share/Trash/</code>) sind von der Kopie ausgeschlossen. <code>/var/lib/proxmenux</code> hält die geplanten Backup-Jobs und den Host-Status, der von ProxMenux beibehalten wird; das Wiederherstellungsstaging, die Rollback-Kopien und die Post-Restore-Marker sind ausgeschlossen, da sie zu dem Host gehören, der eine Wiederherstellung ausführt."
},
{
"category": "ZFS-Zustand (bedingter Zustand)",
"paths": "/etc/zfs",
"why": "Nur enthalten, wenn der Quellhost ZFS ausführt. Enthält <code>zpool.cache</code> und <code>hostid</code>."
}
],
"customTitle": "Erweiterung des Profils mit benutzerdefinierten Pfaden",
"customBody": "Neben dem Standardprofil bietet ProxMenux zwei Möglichkeiten, zusätzliche Pfade in ein Backup aufzunehmen. Sie komponieren ohne Konflikte und gelten beide für interaktive Backups und geplante Jobs.",
"customExtrasTitle": "1. Persistente Extras (Pro-Host-Datei)",
"customExtrasBody": "Eine Textdatei bei <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code> enthält eine Liste absoluter Pfade, die der Benutzer auf diesem Host als \"immer einschließen\" markiert hat. Wenn ein Backup im <strong>Default</strong>-Modus ausgeführt wird, fügt ProxMenux diese Pfade automatisch an das Standardprofil an, ohne zu fragen. Die Datei wird von der Benutzeroberfläche aus bearbeitet - keine manuelle Bearbeitung erforderlich - und bleibt bei Neustarts und Updates bestehen. Ein absoluter Pfad pro Zeile; <code>#</code>-Kommentare sind zulässig.",
"customModeTitle": "2. Benutzerdefinierter Modus (per Lauf)",
"customModeBody": "Das Starten eines Backups im <strong>Custom</strong>-Modus ersetzt die automatische Anwendung des Standardprofils durch eine Checkliste, die jeden Pfad anzeigt: die Standardprofileinträge und die persistenten Extras (vorangestellt mit <code>[+]</code> und bereits ausgewählt). Der Benutzer aktiviert oder deaktiviert Einträge für diesen bestimmten Lauf und kann auch <em>Eigenen Pfad hinzufügen</em> drücken, um einen neuen Pfad einzugeben - der dann für zukünftige Backups auf der Extras-Datei verbleibt.",
"customMissingTitle": "Aus der Quelle fehlende Pfade",
"customMissingBody": "Jeder Pfad aus dem Profil (Standard oder hinzugefügt), der auf dem Quellhost nicht vorhanden ist, wird in <code>metadata/missing_paths.txt</code> im Archiv aufgezeichnet. Das Backup schlägt nicht fehl und stoppt nicht – der Benutzer sieht am Ende eine Zusammenfassung der archivierten Pfade und fehlenden Pfade. In der Praxis geschieht dies bei optionalen Werkzeugpfaden wie <code>/etc/wireguard</code> oder <code>/etc/prometheus</code>, wenn diese Werkzeuge nicht installiert sind."
},
"manifest": {
"heading": "Der Manifest-Datenblock",
"intro": "<code>manifest.json</code> ist ein strukturiertes JSON-Dokument, das den Quellhost zum Zeitpunkt des Backups beschreibt. Es wird von <strong>sechs unabhängigen Erfassungsskripten</strong> orchestriert von <code>build_manifest.sh</code> produziert. Jeder Kollektor ist schreibgeschützt, erzeugt ein gut definiertes JSON-Fragment und fällt bei einem Ausfall auf einen sicheren leeren Standard zurück - das Manifest ist immer noch verwendbar, wenn ein Abschnitt unvollständig ist.",
"orchestratorCaption": "Die sechs Sammler verfassen das Manifest. Jeder Kollektor läuft in seinem eigenen Subprozess; ein Fehler in einem fällt auf einen dokumentierten sicheren Standard zurück und warnt, bricht aber das Backup nicht ab.",
"collectorRows": [
{
"collector": "collect_source_host.sh",
"produces": "source_host",
"content": "Hostname, PVE-Version (<code>pveversion</code>), PBS-Version, wenn der Host die Backup-Server-Rolle ausführt, Kernel (<code>uname -r</code>), Boot-Modus (efi/bios), Root-Dateisystemtyp, CPU-Modell + Architektur, Speicher in KB."
},
{
"collector": "collect_hardware.sh",
"produces": "hardware_inventory",
"content": "GPUs (mit Hersteller- und ProxMenux-Installationsprogramm), TPUs (Coral USB + M.2 mit <code>lsusb</code>/<code>lspci</code>-Erkennung), NICs (mit MAC-, PCI-Slot- und Bridge-Mitgliedschaft), drahtlose Geräte. GPU-Einträge tragen eine <code>passthrough_eligible</code>-Heuristik."
},
{
"collector": "collect_storage.sh",
"produces": "storage_inventory",
"content": "ZFS-Pools (mit Pooltyp + Mitglieds-Festplatten, die nach <code>/dev/disk/by-id/*</code>, <code>/dev/disk/by-partuuid/*</code> oder rohen <code>/dev/sdX</code>-Pfaden aufgelöst wurden, je nachdem, wie jeder Pool ursprünglich erstellt wurde), LVM-Volumengruppen + dünne Pools, physische Festplatten mit SMART-Fähigkeit, PVE <code>storage.cfg</code>-Einträge, externe Mounts."
},
{
"collector": "collect_kernel.sh",
"produces": "kernel_params",
"content": "Vom Betreiber hinzugefügte Parameter aus <code>/proc/cmdline</code>, ohne übliche Standardwerte wie <code>BOOT_IMAGE=</code>, <code>root=</code>, <code>ro/rw</code>, <code>quiet</code> und <code>splash</code>; beim Start geladene Module aus <code>/etc/modules</code>; sowie Pfade der Dateien <code>/etc/modprobe.d/*.conf</code> mit tatsächlichen Direktiven (<code>options</code>, <code>blacklist</code>, <code>install</code>, <code>alias</code>, <code>softdep</code>)."
},
{
"collector": "collect_proxmenux_state.sh",
"produces": "proxmenux_installed_components",
"content": "Lesen Sie <code>/usr/local/share/proxmenux/managed_installs.json</code> (Registrierung von allem, was ProxMenux installiert hat) und <code>installed_tools.json</code>. Jeder Eintrag behält den Installationspfad (<code>menu_script</code>) bei, so dass die Wiederherstellung genau den gleichen Installationsfluss auslösen kann."
},
{
"collector": "collect_guests.sh",
"produces": "vms_lxcs_at_backup",
"content": "Zählt VMs (<code>qm list</code>) und LXCs (<code>pct list</code>) auf, die zum Backup-Zeitpunkt vorhanden sind — VMID, Name, aktueller Status. Nur das Inventar: Die eigentlichen Gästedaten liegen in der Verantwortung von <code>vzdump</code> / PBS."
}
],
"schemaTitle": "Validierung des Schemas",
"schemaBody": "Das Manifest bestätigt gegen <code>scripts/backup_restore/schema/manifest.schema.json</code>. Das Ausführen von <code>build_manifest.sh --validate</code> löst eine Python-seitige JSON-Schemavalidierung aus (erfordert <code>python3</code> + <code>jsonschema</code>). Wenn das Modul nicht vorhanden ist, wird die Überprüfung still übersprungen - die Validierung ist in erster Linie eine Entwicklerhilfe, keine Laufzeitabhängigkeit."
},
"applications": {
"heading": "Das Anwendungsinventar",
"intro": "Zwei Inventare erfassen die zusätzlich zu den Proxmox-VE-Basispaketen installierte Software: die Paketliste unter <code>metadata/</code> und das Komponentenverzeichnis im rootfs, beide unten beschrieben. Die Wiederherstellung installiert die Benutzersoftware je nach ursprünglichem Installationsweg mit APT oder den ProxMenux-Installationsskripten neu.",
"packagesTitle": "packages.manual.list",
"packagesBody": "Eine alphabetisch sortierte Textliste aus <code>apt-mark showmanual</code> mit allen auf dem Quellhost <em>ausdrücklich installierten</em> APT-Paketen. Als Abhängigkeiten des Proxmox-VE-Basissystems installierte Pakete fehlen darin; APT auf dem Ziel zieht sie selbst nach. Bei der Wiederherstellung liest <code>_rs_run_complete_extras</code> die Liste und wendet einen dreistufigen <em>Filter gegen Kaskadenentfernung</em> an: <code>dpkg -s</code> erkennt bereits installierte Pakete, für Bibliotheken werden vorhandene andere Hauptversionen erkannt und <code>apt-get install --simulate</code> prüft das Risiko von Folgeentfernungen. Danach folgt <code>apt-get install -y</code>.",
"componentsTitle": "components_status.json (Teil des rootfs)",
"componentsBody": "Ein JSON-Verzeichnis unter <code>/usr/local/share/proxmenux/</code> erfasst jede von ProxMenux installierte Komponente mit ihrem genauen Zustand: Version und ProxMenux-spezifische Merkmale (bei NVIDIA der boolesche Wert <code>patched</code>, bei Coral die DKMS-Version). Die Datei liegt im rootfs und nicht unter <code>metadata/</code>, weil sie <em>erst gelesen wird, nachdem</em> das rootfs auf das Ziel kopiert wurde. Der nach dem Start ausgeführte Dispatcher (<code>apply_cluster_postboot.sh</code>) geht alle Einträge durch und ruft den <code>--auto-reinstall</code>-Hook der jeweiligen Komponente auf. Dieser liest den gespeicherten Zustand und stellt die Installation für den aktuellen Kernel des Zielsystems wieder her.",
"componentInstallersTitle": "Installationsskripte für Komponenten",
"componentInstallersBody": "Vier ProxMenux-Installateure stellen derzeit einen <code>--auto-reinstall</code>-Einstiegspunkt frei:",
"installerRows": [
{
"component": "nvidia_driver",
"installer": "gpu_tpu/nvidia_installer.sh",
"action": "Lesen Sie <code>version</code> + <code>patched</code>. Downloads der exakt gleichen NVIDIA-Runfile, baut DKMS-Module gegen den Kernel des Ziels und wendet den ProxMenux-Patch erneut an, wenn die Quelle ihn hatte."
},
{
"component": "coral_driver",
"installer": "gpu_tpu/install_coral.sh",
"action": "Lesen Sie die Coral Driver Version. Kompiliert das DKMS-Modul gegen den Kernel des Ziels."
},
{
"component": "amdgpu_top",
"installer": "gpu_tpu/amd_gpu_tools.sh",
"action": "Lesen Sie die aufgezeichnete Version. Laden Sie die genaue <code>.deb</code> aus dem GitHub-Release erneut herunter."
},
{
"component": "intel_gpu_tools",
"installer": "gpu_tpu/intel_gpu_tools.sh",
"action": "APT installiert das Paket. Idempotent, wenn bereits vorhanden von <code>packages.manual.list</code>."
}
]
},
"restoreFlow": {
"heading": "Wie die Wiederherstellung die drei Nutzlasten verbraucht",
"intro": "Die Wiederherstellung ist eine sechsstufige Pipeline. Jede Stufe liest eine bestimmte Untergruppe des Archivs und aktualisiert den Zielhost. Keine Stufe erfordert, dass der Quellhost erreichbar ist - das Archiv ist vollständig in sich geschlossen.",
"stagesCaption": "Stufe 1 wertet das Manifest aus und legt fest, was geändert werden darf. Stufe 2 kopiert rootfs-Pfade, die auf dem laufenden System angewendet werden können. Stufe 3 bereitet riskante Pfade für den nächsten Start vor. Stufe 3b importiert ZFS-Datenpools ohne Root-Dateisystem, deren Datenträger vollständig vorhanden sind. Stufe 4 installiert Pakete. Stufe 5 installiert nach dem Neustart Komponenten für den Kernel des Ziels neu.",
"stageRows": [
{
"stage": "1",
"name": "Kompatibilitätsprüfung",
"reads": "manifest.json",
"action": "Läuft <code>hb_compat_check</code> aus. Vergleicht Quelle und Zielhardware (NICs, Storage IDs), PVE-Version und Hauptkernel-Version. Setzt <code>HB_COMPAT_KERNEL_DIRECTION</code> (<code>same</code>, <code>bk_newer</code> oder <code>bk_older</code>) ein und füllt <code>RS_SKIP_PATHS</code> mit Hardware-Drift- und Cross-Kernel-Ausschlüssen."
},
{
"stage": "2",
"name": "Anwenden im laufenden Betrieb",
"reads": "rootfs/ (nur sichere Pfade)",
"action": "<code>_rs_apply … hot</code> kopiert <code>hb_classify_path</code>=<code>hot</code>-Einträge direkt auf das Live-Ziel. Alles, was unter <code>/etc/pve</code>, <code>/etc/network</code> oder als <em>reboot</em>/<em>dangerous</em> klassifiziert ist, wird verschoben."
},
{
"stage": "3",
"name": "Ausstehende Vorbereitung",
"reads": "rootfs/ (Reboot + gefährliche Pfade)",
"action": "<code>_rs_prepare_pending_restore</code> bereitet riskante Pfade unter <code>/var/lib/proxmenux/pending-restore/</code> vor, schreibt <code>plan.env</code>, <code>apply-on-boot.list</code> und <code>rs-skip-paths.txt</code> und aktiviert <code>proxmenux-restore-onboot.service</code> für den nächsten Start."
},
{
"stage": "3b",
"name": "Import von Datenpools",
"reads": "manifest.storage_inventory + ZFS-Zustand des Ziels",
"action": "<code>_rs_import_data_pools</code> importiert jeden Nicht-Root-ZFS-Pool, dessen vollständiger Satz von Festplatten auf dem Ziel vorhanden ist. Pools mit einem fremden Hostid werden mit <code>zpool import -f</code> getestet. Pools, denen eine Festplatte fehlt, werden mit einer Warnung übersprungen. Das Ergebnis pro Pool wird in <code>/var/log/proxmenux/restore-datapools-&lt;timestamp&gt;.log</code> aufgezeichnet."
},
{
"stage": "4",
"name": "Paketinstallation",
"reads": "metadata/packages.manual.list",
"action": "<code>_rs_run_complete_extras</code> führt den kaskadensicheren Filter aus und ruft <code>apt-get install -y</code> mit der Paketliste auf. Die volle Ausgabe geht an <code>/var/log/proxmenux/restore-apt-*.log</code>."
},
{
"stage": "5",
"name": "Postboot",
"reads": "rootfs (bereits angewendet) + components_status.json",
"action": "Nach dem Neustart spielt <code>apply_pending_restore.sh</code> die zurückgestellten Pfade ab und <code>apply_cluster_postboot.sh</code> läuft <code>update-initramfs</code>, <code>update-grub</code> (oder <code>proxmox-boot-tool refresh</code>) und iteriert über <code>components_status.json</code> und feuert den <code>--auto-reinstall</code>-Hook jeder Komponente."
}
]
},
"whyItWorks": {
"heading": "Warum der Drei-Payload-Split verwendet wird",
"body": "Die Aufteilung richtet sich nach dem <strong>Lebenszyklus</strong> der Daten. Dateisysteminhalte werden mit <code>rsync</code> übertragen: schnell, nachvollziehbar und atomar je Datei. Der vor Änderungen auszuwertende Konfigurationszustand liegt als <strong>strukturiertes JSON</strong> vor: unabhängig lesbar, per Schema versionierbar und maschinell mit dem Zielzustand vergleichbar. Neu zu installierende Software wird als <strong>Inventar</strong> mit Namen und Versionen erfasst. Der Paketmanager des Ziels und die ProxMenux-Installationsskripte wählen die passenden Binärdateien. Jeder Datenblock erfüllt seine eigene Aufgabe. Zusammen ermöglichen sie eine auf konsistente Wiederherstellung ausgerichtete, fehlertolerante Verarbeitung: Bei beschädigtem Manifest bleibt rootfs wiederherstellbar; ein fehlendes Paket verhindert die Komponenteninstallation nicht; scheitert ein Komponenteninstallationsskript an einem Eintrag, wird der nächste trotzdem bearbeitet."
}
}
@@ -0,0 +1,93 @@
{
"meta": {
"title": "ProxMenux Sichern und Wiederherstellen – Übersicht | Vollständige Hostsicherung und -wiederherstellung für Proxmox VE",
"description": "ProxMenux Backup & Restore erfasst den vollständigen Zustand eines Proxmox-Hosts – Dateisystem, strukturiertes Konfigurationsmanifest und installierte Pakete/Komponenten – und reproduziert ihn auf demselben oder einem anderen Host. Das Backup und die Wiederherstellung sind in sich geschlossen: keine externen Abhängigkeiten und Kernel-übergreifende Wiederherstellungen werden durch einen richtungsbewussten Safe-Subset-Filter und eine Kernel-agnostische Hydratation unterstützt.",
"ogTitle": "ProxMenux Sicherung und Wiederherstellung – Übersicht",
"ogDescription": "Vollständige Hostsicherung und -wiederherstellung für Proxmox VE mit strukturiertem Manifest, Paketliste und Neuinstallationsprogrammen für Komponenten.",
"twitterTitle": "ProxMenux Sichern und Wiederherstellen | ProxMenux",
"twitterDescription": "Vollständige Hostsicherung und -wiederherstellung für Proxmox VE mit strukturiertem Manifest, Paketliste und Komponenten-Neuinstallationsprogrammen."
},
"header": {
"title": "Sichern und Wiederherstellen",
"description": "Vollständige Hostsicherung und -wiederherstellung für Proxmox VE. Erfasst Dateisystem, Konfiguration und installierte Komponenten in einem einzigen Archiv und reproduziert den Host auf derselben oder einer anderen Proxmox-Installation ohne externe Abhängigkeiten.",
"section": "Sichern und Wiederherstellen"
},
"intro": {
"title": "Was es ist, in einem Absatz",
"body": "Eine ProxMenux-Sicherung erfasst den vollständigen Zustand eines Proxmox-Hosts: <strong>das Dateisystem</strong> mit den relevanten Verzeichnissen unter <code>/etc</code>, <code>/root</code> und <code>/var/lib/pve-cluster</code> sowie optionalen eigenen Pfaden; <strong>ein strukturiertes Manifest</strong> im JSON-Format mit erkannter Hardware, Kernel-Parametern, Netzwerkkonfiguration, ZFS-Zustand, Benutzern und Cron-Einträgen; und <strong>ein Anwendungsinventar</strong> mit allen von APT als manuell installiert markierten Paketen und den von ProxMenux installierten Komponenten samt exakten Versionen. Alle drei unterstützten Ziele – lokales Archiv, Proxmox Backup Server (empfohlen) und Borg – erhalten denselben eigenständigen Datenbestand. Mit jedem davon lässt sich der Zielhost wiederherstellen, ohne dass der Quellhost während der Wiederherstellung erreichbar sein muss."
},
"video": {
"heading": "Videoanleitung",
"intro": "Beobachten Sie Backup & Restore lieber in Aktion, bevor Sie es konfigurieren? Diese exemplarische Vorgehensweise umfasst eine vollständige End-to-End-Demo der Funktion in ProxMenux.",
"title": "ProxMenux – Anleitung zum Sichern und Wiederherstellen",
"caption": "Externes Video auf YouTube. Spielt im erweiterten Datenschutzmodus (keine Cookies, bis Sie auf „Play“ drücken)."
},
"whatItIsNot": {
"heading": "Was es nicht ist",
"intro": "Dieser Abschnitt beschreibt Sicherung und Wiederherstellung <strong>auf Host-Ebene</strong>: die Proxmox-Installation selbst, nicht die darauf ausgeführten Anwendungen und Gastsysteme.",
"items": [
"<strong>Dies ist kein Sicherungswerkzeug für VMs oder CTs.</strong> Gastfestplatten und RAM-Zustand werden nicht erfasst; dafür ist <code>vzdump</code> zuständig. Die <strong>Konfigurationsdateien</strong> der Gäste (<code>/etc/pve/nodes/&lt;node&gt;/qemu-server/*.conf</code> und <code>lxc/*.conf</code>) werden <strong>jedoch</strong> gesichert. Nach der Wiederherstellung erscheint das Gastinventar erneut, und die Festplatten können aus einer vorhandenen PBS- oder lokalen Sicherung wiederhergestellt und zugeordnet werden.",
"<strong>Dies ist kein clusterweiter Vorgang.</strong> Jeder Knoten sichert sich selbst. Die Clusterzugehörigkeit wird mit <code>/etc/pve</code> erfasst, sodass ein wiederhergestellter Knoten erneut aufgenommen werden kann. Die Wiederherstellung eines ganzen Clusters erfordert jedoch die Abstimmung zwischen den einzelnen Knoten.",
"<strong>Dies ist kein vollständiges Festplattenabbild.</strong> Kernel-Binärdateien, initramfs und Boot-Partition werden nicht gesichert. Bei der Wiederherstellung nutzt ProxMenux die Boot-Dateien des Zielhosts, die mit <code>update-initramfs</code> und dem Bootloader-Werkzeug automatisch neu erzeugt werden, und installiert passende Treiber für den dort laufenden Kernel."
]
},
"threePillars": {
"heading": "Die drei Säulen eines Backups",
"intro": "Ein ProxMenux-Archiv ist um drei in sich geschlossene Nutzdaten herum strukturiert. Bei der Wiederherstellung werden alle drei zusammen verwendet, um den Quellhost auf einem Ziel zu reproduzieren, auf dem möglicherweise nicht einmal derselbe Kernel installiert ist.",
"diagramCaption": "Jedes Backup versendet unabhängig vom Ziel dieselben drei Payloads. Die Wiederherstellung verbraucht alle drei: rootfs zum Ablegen von Dateien, Manifest zum Erkennen von Abweichungen und Kernel-übergreifenden Unterschieden und Anwendungsinventar zum Neuinstallieren von Paketen und Komponenten im eigenen Kernel des Ziels.",
"pillar1Label": "Dateisystem",
"pillar1Detail": "rootfs/\n(rsync von /etc,\n/etc/systemd/network,\n/root sowie ein\nsqlite3-Snapshot\nvon /var/lib/pve-cluster,\n+ optionale Pfade)",
"pillar2Label": "Manifest",
"pillar2Detail": "manifest.json\n(Hardware, Kernel-\nParameter, Netzwerk,\nZFS, Benutzer, Cron,\nZFS-Pools, Speicher)",
"pillar3Label": "Anwendungen",
"pillar3Detail": "packages.manual.list\n+ components_status.json\n(manuelle APT-Pakete + ProxMenux-\nInstaller mit Versionen)"
},
"restoreIsUniversal": {
"heading": "Die Wiederherstellung reproduziert den Quellhost, nicht das Archiv",
"body": "Beim Wiederherstellen eines ProxMenux-Backups wird nicht nur das Dateisystem extrahiert. Der Wiederherstellungsfluss liest das Manifest, um Abweichungen zwischen der Quelle und dem Ziel zu erkennen (Hardwareunterschiede, NIC-Umbenennungen, Kernelversion, ZFS-Pool-Identität), spielt das Dateisystem erneut ab und löst dann das richtige Komponenteninstallationsprogramm für jeden Dienst aus, der auf der Quelle installiert wurde (NVIDIA-Treiber, Coral TPU, AMD GPU-Tools, Intel-GPU-Tools). Jedes Installationsprogramm wird für den aktuellen Kernel des <strong>Ziels</strong> ausgeführt, sodass der wiederhergestellte Host nicht davon abhängt, dass der Kernel der Quelle vorhanden ist. Wenn der Kernel des Ziels neuer ist als der des Backups, führt ein Kernel-unabhängiger <strong>Hydration</strong>-Durchgang die eigene Optimierung des Benutzers (IOMMU-Tokens, VFIO-Geräte-IDs, benutzerdefinierte Sonderanpassungen, GRUB-Schlüssel) in die neue Startkonfiguration des Ziels ein, ohne Kernel-gebundene Dateien wörtlich zu kopieren."
},
"twoInterfaces": {
"heading": "Zwei Schnittstellen, ein Backend",
"intro": "Alle Schritte der Sicherung und Wiederherstellung sind über zwei Oberflächen erreichbar. Beide rufen dieselbe Shell-Bibliothek auf, erstellen identische Archive und verwenden dasselbe Auftragsverzeichnis.",
"cliLabel": "ProxMenux Scripts (TUI)",
"cliDetail": "Menü → Dienstprogramme →\nHost-Sicherung/Wiederherstellung\n\nDialogbasierter Ablauf,\nSSH-freundlich, skriptfähig\nzur unbeaufsichtigten Nutzung.",
"webLabel": "ProxMenux Monitor (Web UI)",
"webDetail": "Registerkarte Backups in der\nWeboberfläche von Monitor.\n\nWiederherstellung mit einem Klick,\nlaufende Protokollanzeige, integriert\nmit Benachrichtigungen und der\nAnzeige von Rollback-Differenzen."
},
"whereNext": {
"heading": "Wohin geht es von hier aus?",
"intro": "Jeder Unterabschnitt unten behandelt einen Aspekt des Arbeitsablaufs ausführlich. Beginnen Sie mit <em>Wie es funktioniert</em>, wenn das Ziel darin besteht, zu verstehen, was das Archiv enthält und warum. Wechseln Sie zu <em>Ziele</em>, um das Ziel für die Kopie zu konfigurieren. Lesen Sie <em>Wiederherstellung</em> und <em>Cross-Kernel-Wiederherstellung</em> für die Wiederherstellungsseite.",
"items": [
{
"label": "So funktioniert es",
"href": "/docs/backup-restore/how-it-works",
"tail": "– die drei Payloads (rootfs, Manifest, Anwendungen) im Detail, mit den Collectors, die sie erzeugen, und dem Format jeder Datei."
},
{
"label": "Ziele",
"href": "/docs/backup-restore/destinations",
"tail": "– Vergleich von lokal, Proxmox Backup Server (empfohlen) und Borg und wie man sie jeweils konfiguriert."
},
{
"label": "Backups erstellen",
"href": "/docs/backup-restore/creating-backups",
"tail": "– einmalige Sicherungen, das Standardpfadprofil, Hinzufügen benutzerdefinierter Pfade, Verschlüsselung für PBS."
},
{
"label": "Geplante Jobs",
"href": "/docs/backup-restore/scheduled-jobs",
"tail": "– neue Jobs im Vergleich zum Anhängen an einen vorhandenen PVE-vzdump-Job, Planungsformate, das Jobdetail-Modal."
},
{
"label": "Wiederherstellen",
"href": "/docs/backup-restore/restoring",
"tail": "– die drei Aktionen für ein Archiv (Anzeigen, Herunterladen, Wiederherstellen), vollständige vs. benutzerdefinierte Wiederherstellung, der Post-Boot-Dispatcher und warum die letzten zehn Minuten wichtig sind."
},
{
"label": "Kernelübergreifende Wiederherstellung",
"href": "/docs/backup-restore/cross-kernel",
"tail": " — vom Versionswechsel abhängiges Verhalten bei unterschiedlichen Quell- und Zielkerneln, der Filter für eine sichere Teilmenge und die vier Hydratationsphasen."
}
]
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,152 @@
{
"meta": {
"title": "Geplante Aufträge — Timer, Attachment-Modus, Retention | ProxMenux",
"description": "Geplante ProxMenux Host-Backup-Jobs. Zwei Erstellungsmodi (eigener systemd-Timer oder Attachment zu einem vorhandenen PVE vzdump-Job), Retentionswerte, die pro Job über proxmox-backup-client/borg/local prune angewendet werden, Storage-Layout unter /var/lib/proxmenux/backup-jobs und das Runner-Script, das Archive erzeugt, die mit dem interaktiven Fluss identisch sind.",
"ogTitle": "ProxMenux Backup — geplante Aufträge",
"ogDescription": "Unbeaufsichtigte geplante Host-Backups mit Attachment-Modus, Retention und den gleichen drei Zielen wie der interaktive Fluss.",
"twitterTitle": "Geplante Jobs | ProxMenux",
"twitterDescription": "Unbeaufsichtigte geplante Host-Backup-Jobs mit Attach-Modus und Retention."
},
"header": {
"title": "Geplante Aufträge",
"description": "Unbeaufsichtigte Host-Backup-Jobs. Zwei Erstellungsmodelle: ein neuer unabhängiger Job mit einem eigenen Zeitplan oder ein Job, der an eine bestehende PVE vzdump-Aufgabe angehängt ist, die den Zeitplan und die Aufbewahrung dieser Aufgabe erbt. Beide produzieren Archive, die mit dem interaktiven Fluss identisch sind.",
"section": "Sicherung und Wiederherstellung"
},
"intro": {
"title": "Die beiden planmäßigen Job-Modelle",
"body": "Ein geplanter Job kann nach einem von zwei Modellen erstellt werden:",
"modelsList": [
"<strong>Neuer unabhängiger job</strong> — ProxMenux definiert den Jobplan selbst mit einem eigenen systemd-Timer, unabhängig von anderen Aufgaben auf dem Host. Kompatibel mit allen drei Destinationen: Local, PBS und Borg.",
"<strong>An eine bestehende PVE vzdump-Task anhängen</strong> – der Job hat keinen eigenen Zeitplan; er wird automatisch ausgeführt, wenn die übergeordnete PVE vzdump-Task, die bereits die VMs und LXCs auf diesem Host sichert, ausgelöst wird. Erbt den Zeitplan und die Beibehaltung von der übergeordneten Aufgabe. Kompatibel mit Local und PBS (Borg wird nicht unterstützt, da PVE keinen nativen Scheduler für Borg hat)."
]
},
"attachBadge": {
"title": "Attach-Modus — empfohlen, wenn bereits eine PVE vzdump-Task existiert",
"body": "Wenn bereits ein PVE-vzdump-Auftrag für die VMs und LXCs dieses Knotens eingerichtet ist, wird das angehängte Host-Backup nach dem Gast-Backup im <strong>selben Sicherungszyklus</strong> ausgeführt. Bei der Wiederherstellung stammen die Gastkonfigurationen aus dem Host-Backup (unter <code>/etc/pve</code>) und die Gastfestplatten aus den vzdump-Backups dieses Zyklus. Dies erleichtert eine koordinierte Wiederherstellung des gesamten Knotens, ist aber kein atomarer Snapshot: Änderungen während des Zyklus können Unterschiede zwischen Hostkonfiguration und Gastfestplattenzustand hinterlassen."
},
"frequencyBadge": {
"title": "Empfohlene Häufigkeit",
"body": "Um die Kompatibilität zwischen einem Host-Backup und seiner zukünftigen Wiederherstellung zu maximieren, führen Sie häufig Host-Backups aus. Je näher das Backup dem aktuellen Zustand des Hosts ist, desto weniger Konfigurations-, Paket- und Komponentendrift muss die Wiederherstellung in Einklang bringen."
},
"modes": {
"heading": "Die beiden Modi",
"rows": [
{
"mode": "Neuer geplanter Auftrag",
"backends": "Lokal, PBS, Borg",
"schedule": "Eigener <code>OnCalendar</code>-Ausdruck (systemd-Kalendersyntax, z. B. <code>daily</code> oder <code>Mon..Fri 03:00</code>).",
"retention": "Separat abgefragt: <code>keep-last</code>, <code>keep-hourly</code>, <code>keep-daily</code>, <code>keep-weekly</code>, <code>keep-monthly</code>, <code>keep-yearly</code>. Wird vom Ausführungsskript nach jedem erfolgreichen Backup angewendet."
},
{
"mode": "Anhängen an einen PVE vzdump Job",
"backends": "Lokal, PBS (Borg hat keinen PVE-seitigen Scheduler)",
"schedule": "Vererbt vom Eltern-PVE-Job. Auf der ProxMenux-Seite ist kein systemd-Timer installiert.",
"retention": "Aus der <code>prune-backups</code>-Konfiguration des übergeordneten Auftrags übernommen (über <code>hb_pve_prune_to_keep_env</code> eins zu eins den <code>KEEP_*</code>-Variablen des Ausführungsskripts zugeordnet)."
}
]
},
"attachDetail": {
"heading": "Wie Attach Mode funktioniert",
"intro": "PVE speichert <code>vzdump</code>-Aufträge in <code>/etc/pve/jobs.cfg</code> — einen Abschnitt pro Auftrag mit dem Speicherziel für VM- und LXC-Backups. Der Attach-Modus erfordert ein von ProxMenux unterstütztes Backend (Lokal oder PBS). Das Host-Backup wird nach Abschluss des Gast-Backups über den job-end-Hook ausgeführt.",
"steps": [
{
"step": "1",
"detail": "Während der Auftragserstellung listet ProxMenux kompatible übergeordnete PVE-Aufgaben über <code>hb_pve_list_vzdump_jobs_for_backend</code> auf. Der Benutzer wählt einen aus."
},
{
"step": "2",
"detail": "Der <code>.env</code> des Jobs wird mit <code>PVE_PARENT_JOB</code>, <code>PVE_STORAGE</code> und den geerbten <code>KEEP_*</code>-Werten geschrieben; es wird kein systemd-Timer erstellt."
},
{
"step": "3",
"detail": "<code>hb_install_vzdump_hook</code> registriert einen Skript-Hook in <code>/etc/vzdump.conf</code>. In der job-end-Phase jedes vzdump-Auftrags vergleicht er den übergebenen <code>$STOREID</code> mit <code>PVE_STORAGE</code> aller aktivierten angehängten Aufträge und startet das Ausführungsskript bei Übereinstimmung. Der Abgleich erfolgt nach Speicher, nicht nach der ID des gewählten übergeordneten Auftrags."
},
{
"step": "4",
"detail": "Das Archiv landet im selben Speicher, den die vzdump-Dumps gerade geschrieben haben: <code>path/dump/</code> für Local oder das PBS-Repository, das auf dem PVE-Speichereintrag konfiguriert ist."
}
],
"outroBody": "Der Attach-Modus hat keinen eigenen Timer. Das Deaktivieren oder Löschen des gewählten übergeordneten PVE-Auftrags stoppt dessen Auslösung; andere vzdump-Aufträge mit demselben Speicher können das Host-Backup weiterhin auslösen. Deaktivieren oder löschen Sie den ProxMenux-Auftrag selbst, um dies zu verhindern. Beim Deaktivieren bleibt der Eintrag auf der Festplatte und kann später erneut aktiviert oder angehängt werden."
},
"storageLayout": {
"heading": "Dateien, die einen Job ausmachen",
"intro": "Jeder geplante Job wird vollständig durch drei oder vier Dateien auf der Festplatte beschrieben. Das Lesen gibt die vollständige Konfiguration des Jobs, ohne sich auf die Benutzeroberfläche zu verlassen.",
"rows": [
{
"path": "/var/lib/proxmenux/backup-jobs/JOB_ID.env",
"content": "Backend, Backup-ID oder Ziel, Zeitplan (Neuer Auftrag) oder übergeordneter PVE-Auftrag (Attach-Modus), Aktivierungsstatus, Aufbewahrungswerte <code>KEEP_*</code> und Verweise auf Zugangsdaten."
},
{
"path": "/var/lib/proxmenux/backup-jobs/JOB_ID.paths",
"content": "Ein absoluter Pfad pro Zeile - die eingefrorene Auswahl wurde zum Zeitpunkt der Joberstellung aus dem Profil aufgelöst. Das Bearbeiten der Datei führt den Job mit der neuen Auswahl beim nächsten Auslösen des Timers erneut aus."
},
{
"path": "/etc/systemd/system/proxmenux-backup-JOB_ID.timer + .service",
"content": "Nur neuer Modus. Der Dienst ruft <code>run_scheduled_backup.sh JOB_ID</code> auf. Der Timer plant es mit <code>Persistent=true</code> (verpasste Ausführungen werden beim nächsten Boot nachgeholt) und einem kleinen <code>RandomizedDelaySec=120</code>, um die Last zu verteilen, wenn mehrere Jobs den gleichen OnCalendar-Ausdruck teilen."
},
{
"path": "/etc/vzdump.conf script-hook",
"content": "Nur Attach-Modus. Einmal durch <code>hb_install_vzdump_hook</code> installiert; vergleicht <code>PVE_STORAGE</code> jedes angehängten Auftrags mit <code>$STOREID</code>, das PVE dem Hook-Skript übergibt."
}
]
},
"runner": {
"heading": "Was beim Start eines Auftrags geschieht",
"intro": "Jeder Job - ob New-Model oder Attachment - führt die gleiche dreistufige Sequenz aus:",
"steps": [
"<strong>Backup vorbereiten.</strong> Liest die Job-Konfiguration (Ziel, Profil, Pfade) und stellt den Archivbaum genau so zusammen, wie es der interaktive Fluss tut. Das Ergebnis ist das gleiche Archiv, das ein manuelles Backup mit diesen Einstellungen erzeugen würde.",
"<strong>An das Ziel schreiben.</strong> Überträgt oder schreibt das Archiv in das konfigurierte Ziel – eine lokale <code>.tar.zst</code>-Datei, ein PBS-Backup oder ein Borg-Archiv – mit genau den gleichen Tools und Anmeldeinformationen, die ein manuelles Backup für dasselbe Ziel verwenden würde.",
"<strong>Aufbewahrungsregeln anwenden.</strong> Entfernt alte Backups vom Zielort, wobei die Anzahl der <code>keep-last</code> / <code>keep-daily</code> / <code>keep-weekly</code> für den Auftrag konfiguriert bleibt. Das Beschneiden wird vom Zielort selbst durchgeführt: PBS wendet seine eigene Aufbewahrung an, Borg führt <code>borg prune</code> aus und bei Lokal löscht ProxMenux die Dateien, die außerhalb des <code>keep-last</code>-Fensters liegen."
]
},
"management": {
"heading": "Aufträge verwalten",
"intro": "Das Scheduler-Menü (Scripts TUI) und die Registerkarte Monitor Backups zeigen die gleichen Aktionen bei jedem Job.",
"rows": [
{
"action": "Jetzt ausführen",
"detail": "Ruft das Ausführungsskript sofort auf und umgeht Timer bzw. vzdump-Hook. Damit lässt sich die Auftragskonfiguration prüfen, ohne auf die nächste geplante Ausführung zu warten."
},
{
"action": "Aktivieren/Deaktivieren",
"detail": "Neuer Modus: <code>systemctl enable/disable --now</code> der Timer. Attach-Modus: Dreht das <code>ENABLED</code>-Flag im Job Env um — das Hook-Skript berücksichtigt es beim nächsten PVE-Aufruf."
},
{
"action": "Bearbeiten",
"detail": "Öffnet Ziel, Zeitplan, Profil und Aufbewahrungsaufforderungen neu und schreibt die Jobdateien neu. Bewahrt die Job ID auf."
},
{
"action": "Löschen",
"detail": "Entfernt die Job env, Pfaddatei, systemd Timer + Service (Neuer Modus) und deaktiviert die Hakenbindung (Attach-Modus). Berührt keine Archive bereits am Zielort."
},
{
"action": "Protokoll anzeigen",
"detail": "Zeigt laufend an: <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code> – eine Protokolldatei pro Lauf. Der Runner gibt außerdem eine kompakte Statuszeile an journald unter dem Dienst systemd aus."
}
]
},
"notifications": {
"heading": "Benachrichtigungen",
"body": "Jeder geplante Lauf feuert die gleichen <code>hb_notify_lifecycle</code>-Ereignisse ab wie der interaktive Fluss (<code>start</code>, <code>complete</code>, <code>fail</code>). Wenn Benachrichtigungskanäle im Monitor konfiguriert sind, tauchen unbeaufsichtigte Jobs auf die gleiche Weise wie manuelle Backups auf - ein Benutzer muss das Protokoll nicht überprüfen, um zu wissen, ob ein Job erfolgreich war."
},
"whereNext": {
"heading": "Wohin Sie als nächstes gehen",
"items": [
{
"label": "Backups erstellen",
"href": "/docs/backup-restore/creating-backups",
"tail": "- der interaktive Fluss, der das Backend mit dem Scheduler teilt."
},
{
"label": "Ziele",
"href": "/docs/backup-restore/destinations",
"tail": "Per-Backend-Konfiguration, die sowohl vom interaktiven Flow als auch vom Scheduler verwendet wird."
},
{
"label": "Wiederherstellung",
"href": "/docs/backup-restore/restoring",
"tail": " — der Ablauf zur Wiederherstellung der von den Aufträgen erzeugten Backups."
}
]
}
}
+175
View File
@@ -0,0 +1,175 @@
{
"meta": {
"title": "VMs auf Proxmox VE erstellen: Synology, Windows, Linux und NAS-Assistenten | ProxMenux",
"description": "Erstellen und konfigurieren Sie VMs auf Proxmox VE mit ProxMenux. Assistenten für NAS-Systeme (Synology DSM, TrueNAS, OpenMediaVault, XigmaNAS usw.), Windows, Linux-Distributionen und ein externer macOS-Installer. Sinnvolle Voreinstellungen für Hardware, Speicher und Netzwerk.",
"ogTitle": "VMs auf Proxmox VE erstellen: Assistenten für Synology, Windows, Linux und NAS",
"ogDescription": "ProxMenux-Assistenten für VMs mit Synology DSM, TrueNAS, OMV, XigmaNAS, Windows und Linux auf Proxmox VE.",
"ogImageAlt": "ProxMenux-Menü „VM erstellen“",
"twitterTitle": "Erstellen von VMs auf Proxmox VE | ProxMenux",
"twitterDescription": "Assistenten für VMs mit Synology, TrueNAS, OMV, XigmaNAS, Windows und Linux auf Proxmox VE."
},
"header": {
"title": "VM erstellen",
"description": "ProxMenux gruppiert die VM-Erstellung zu einem interaktiven Dispatcher. Wählen Sie die Betriebssystemfamilie und der passende Wizard übernimmt ISO-Auswahl, CPU, RAM, BIOS, Netzwerk, Speicher und - optional - GPU Passthrough.",
"section": "Virtuelle Maschinen"
},
"intro": {
"title": "Wofür dieses Menü ist",
"body": "Das Menü „VM erstellen“ verzweigt zu mehreren Assistenten. Es fragt nach der Betriebssystemfamilie und lädt ISO-Auswahl und Konfigurator. Der Standardablauf nutzt sinnvolle ProxMenux-Voreinstellungen; der erweiterte Ablauf zeigt alle verfügbaren Optionen vor der Erstellung."
},
"opening": {
"heading": "Öffnen des Menüs",
"body": "Wählen Sie im ProxMenux-Hauptmenü <strong>VM erstellen</strong>. Es erscheint:",
"imageAlt": "Menü zur VM-Erstellung mit drei ProxMenux-Optionen (NAS/Windows/Linux) und Community Scripts darunter (macOS/Andere)"
},
"families": {
"heading": "Drei OS-Familien",
"intro": "Die drei ProxMenux-Einträge oben im Menü teilen sich die gleiche zugrunde liegende Engine und den gleichen Post-ISO-Flow - sie leiten nur zu verschiedenen ISO-Selektoren und wenden Standardwerte an, die auf jede Familie abgestimmt sind. Wählen Sie diejenige, die zu dem Gast passt, den Sie installieren möchten.",
"routes": [
{
"key": "nas",
"title": "NAS-System",
"icon": "HardDrive",
"href": "/docs/create-vm/system-nas",
"accent": "border-emerald-300 bg-emerald-50",
"iconBg": "bg-emerald-100 text-emerald-700",
"description": "Acht NAS-Betriebssysteme als eigene VMs. Die meisten nutzen den automatischen ISO-Ablauf; Synology DSM verwendet den spezialisierten Loader-Assistenten.",
"bullets": [
"Synology DSM (Arc / RR / Alpine RedPill M-shell Loader)",
"TrueNAS SCALE und CORE (ZFS)",
"OpenMediaVault (Debian-basiert)",
"XigmaNAS (FreeBSD ZFS)",
"Rockstor (openSUSE / Btrfs), ZimaOS, FygoOS"
]
},
{
"key": "windows",
"title": "Windows-System",
"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 und Server-Editionen mit Windows-freundlichen Standardeinstellungen (q35 + OVMF + TPM 2.0) und VirtIO Treiber vormontiert.",
"bullets": [
"UUP Dump für aktuelle ISOs",
"Oder lokale ISO von /var/lib/vz/template/iso",
"TPM 2.0 automatisch hinzugefügt",
"VirtIO Treiber ISO angehängt an ide3",
"Gastagent-Kanal aktiviert"
]
},
{
"key": "linux",
"title": "Linux-System",
"icon": "Laptop",
"href": "/docs/create-vm/system-linux",
"accent": "border-amber-300 bg-amber-50",
"iconBg": "bg-amber-100 text-amber-700",
"description": "Kuratierter Katalog offizieller Linux-ISOs, die automatisch aus dem Upstream heruntergeladen werden, sowie ein lokaler ISO-Picker für alles andere.",
"bullets": [
"Ubuntu (Desktop / Server, 20.04–25.10)",
"Debian (Desktop / Netinst, 11–13)",
"Fedora, Arch, Rocky, Mint, openSUSE",
"Alpine, Kali, Manjaro",
"Lokaler ISO Pfad für benutzerdefinierte Images"
]
}
]
},
"community": {
"title": "Community-Scripts (nicht hier dokumentiert)",
"intro": "Die beiden Einträge unter dem <em>Community Scripts</em>-Separator führen Code aus, der <strong>nicht Teil von ProxMenux</strong> ist, so dass sie absichtlich außerhalb dieser Dokumentation bleiben:",
"macosRich": "<strong>macOS-System</strong>: führt den externen Installer <osxLink>OSX-PROXMOX</osxLink> aus. Er klont das Originalrepository, bereitet den Host vor und <strong>startet ihn nach Abschluss automatisch neu</strong>. Beachten Sie die Dokumentation dieses Projekts.",
"othersRich": "<strong>System Sonstige (Linux-basiert)</strong> lädt eine kuratierte Liste von Linux-basierten Installateuren der Community (Home-Server-Betriebssysteme, Router-/Firewall-Appliances usw.). Jedes Community-Script wird außerhalb von ProxMenux gepflegt."
},
"afterPick": {
"heading": "Was passiert, nachdem Sie ein OS ausgewählt haben",
"intro": "Sobald die ISO ausgewählt ist, nimmt der Dispatcher den gleichen Weg unabhängig von der OS-Familie:",
"items": [
"<strong>Standard oder Erweitert.</strong> Bestätigen Sie die ProxMenux-Vorgaben oder öffnen Sie den vollständigen Konfigurator für CPU-Modell und Kerne, RAM, BIOS/UEFI, Netzwerkkartenmodell und Maschinentyp.",
"<strong>Speicherplan.</strong> Kombinieren Sie virtuelle Laufwerke, importierte Laufwerke und PCI-Passthrough-Geräte wie ganze Controller oder NVMe in derselben VM.",
"<strong>Optionales GPU-Passthrough.</strong> Wird eine geeignete GPU erkannt, bietet ProxMenux nach der VM-Erstellung den GPU-Assistenten an. Ein Neustart kann erforderlich sein.",
"<strong>VM-Erstellung.</strong> Die VM wird erstellt, getaggt und mit einer formatierten HTML-Beschreibung für schnellen Zugriff in der Proxmox-Oberfläche versehen."
],
"tipTitle": "Bevorzugt Advanced für VMs, die Sie behalten möchten",
"tipBody": "Default Presets funktionieren gut für schnelle Tests. Für einen VM, den Sie behalten möchten, können Sie mit dem Advanced-Pfad den richtigen BIOS (SeaBIOS vs OVMF/UEFI), den Maschinentyp (<code>i440fx</code> vs <code>q35</code>) und den Festplattencontroller (VirtIO SCSI single vs SATA) im Voraus auswählen - diese müssen später schmerzhaft geändert werden."
},
"scripts": {
"heading": "Involvierte Skripte",
"intro": "Der Einstieg lädt mehrere gemeinsame Komponentenskripte per source, für die es keine eigene Dokumentationsseite gibt. Sie sind hier als Referenz aufgelistet. Jede Unterseite verlinkt das Hauptskript ihres Ablaufs.",
"headerScript": "Skript",
"headerRole": "Rolle",
"rows": [
{
"path": "menus/create_vm_menu.sh",
"role": "Einstieg und Weiterleitung."
},
{
"path": "vm/select_nas_iso.sh",
"role": "ISO/Appliance Selektor für NAS-Systeme (Synology, TrueNAS, OMV, Rockstor, XigmaNAS, ZimaOS, FygoOS)."
},
{
"path": "vm/select_windows_iso.sh",
"role": "Windows ISO Selector. Delegierte an den UUP Dump Builder, wenn nötig."
},
{
"path": "vm/select_linux_iso.sh",
"role": "Linux ISO-Selektor für den Linux-Flow (Mainstream-Distributionen)."
},
{
"path": "vm/synology.sh",
"role": "Synology DSM-Flow: holt Loader und DSM-Bild und bereitet das VM-Profil vor."
},
{
"path": "vm/zimaos.sh",
"role": "ZimaOS flow: lädt das Image herunter und verbindet es mit der VM-Definition."
},
{
"path": "vm/vm_configurator.sh",
"role": "Standard vs Advanced Wizard: CPU Modell/Kerne, RAM, BIOS, NIC, Maschinentyp."
},
{
"path": "vm/disk_selector.sh",
"role": "Speicherplan: virtuelle Festplatte, Festplattenimport oder Controller/NVMe Passthrough."
},
{
"path": "vm/vm_creator.sh",
"role": "Endgültige VM-Erstellung: wendet die Konfiguration an, fügt Speicher an, schreibt die HTML-Beschreibung."
},
{
"path": "vm/guest_agent_config.sh",
"role": "Optionaler QEMU Guest Agent Setup Hook, der von mehreren Flows verwendet wird."
}
]
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager",
"label": "Festplattenmanager",
"tail": "Anfügen vorhandener physischer Festplatten oder Importieren von Festplattenabbildern in VMs."
},
{
"href": "/docs/utils/UUp-Dump-ISO-Creator",
"label": "UUP-Dump-ISO-Erstellung",
"tail": "— erzeugen Sie Windows-Installations-ISOs, die als Boot-Medien verwendet werden können."
},
{
"href": "/docs/utils/import-vm",
"label": "VM von OVA / OVF importieren",
"tail": "— vorgefertigte VMs von VMware / VirtualBox / ProxMenux-Exporten einbringen."
},
{
"href": "/docs/hardware/gpu-vm-passthrough",
"label": "GPU zu VM hinzufügen (Passthrough)",
"tail": "- einen GPU in einen frisch erstellten VM zu übergeben."
},
{
"href": "/docs/help-info/vm-ct-commands",
"label": "VM und CT Verwaltungsbefehle",
"tail": "— qm-Referenz für die CLI-Seite."
}
]
}
}
@@ -0,0 +1,453 @@
{
"title": "Skript zum Erstellen einer Synology-VM",
"stepLabel": "Schritt",
"intro": {
"heading": "Einleitung",
"intro": "ProxMenux bietet ein automatisiertes Skript, das eine virtuelle Maschine (VM) erstellt und konfiguriert, um Synology DSM (DiskStation Manager) auf Proxmox VE zu installieren. Dieses Skript vereinfacht den Prozess, indem es einen der verfügbaren Loader zum VM-Boot herunterlädt und hinzufügt und Ihnen die Option zwischen vier verschiedenen Optionen bietet:",
"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-Projekt)",
"url": "https://github.com/PeterSuh-Q3/tinycore-redpill",
"extra": ""
}
],
"customLoader": "Benutzerdefinierter Loader - Option zur Verwendung eines benutzerdefinierten Loaders, wenn Sie es vorziehen, Ihre eigene Konfiguration zu ändern oder zu erstellen",
"simplifiesIntro": "Das Skript vereinfacht den VM-Erstellungsprozess durch die folgenden Optionen:",
"simplifies": [
"Auswahl der Standard- oder erweiterten Konfiguration",
"Konfiguration von CPU, RAM, BIOS und Maschinentyp",
"Virtuelles Laufwerk oder Passthrough eines physischen Laufwerks"
]
},
"config": {
"heading": "Standard- und erweiterte Konfiguration",
"intro": "Das Skript bietet zwei Konfigurationsmodi:",
"defaultHeading": "Standardkonfiguration",
"defaultIntro": "Wenn Sie die Standardkonfiguration auswählen, wendet das Skript automatisch die folgenden Werte an:",
"headerParam": "Parameter",
"headerValue": "Standardwert",
"defaultRows": [
{
"param": "Maschinentyp",
"value": "q35"
},
{
"param": "BIOS-Typ",
"value": "OVMF (UEFI)"
},
{
"param": "CPU-Typ",
"value": "Host"
},
{
"param": "Anzahl der Kerne",
"value": "2"
},
{
"param": "RAM-Größe",
"value": "4096 MB"
},
{
"param": "Brücke",
"value": "vmbr0"
},
{
"param": "MAC-Adresse",
"value": "Automatisch generiert"
},
{
"param": "VM nach Abschluss starten",
"value": "Nein"
}
],
"defaultOutro": "Wenn Sie die Konfiguration anpassen möchten, wählen Sie die Option Erweiterte Einstellungen im Menü aus.",
"advancedHeading": "Erweiterte Konfiguration",
"advancedIntro": "Wenn Sie die erweiterte Konfiguration auswählen, können Sie mit dem Skript jeden Parameter anpassen:",
"headerOptions": "Optionen",
"advancedRows": [
{
"param": "Maschinentyp",
"options": "q35 oder i440fx"
},
{
"param": "BIOS-Typ",
"options": "OVMF (UEFI) oder SeaBIOS (Legacy)"
},
{
"param": "CPU-Typ",
"options": "Host oder KVM64"
},
{
"param": "Anzahl der Kerne",
"options": "Anzahl CPU-Kerne"
},
{
"param": "RAM-Größe",
"options": "Der VM zugewiesene Speichermenge"
},
{
"param": "Brücke",
"options": "Netzwerkbrücke für die Verbindung"
},
{
"param": "MAC-Adresse",
"options": "Eigene MAC-Adresse"
},
{
"param": "VLAN",
"options": "VLAN-Tag (falls verwendet)"
},
{
"param": "MTU",
"options": "Maximale Übertragungseinheit"
}
]
},
"diskSelection": {
"heading": "Auswahl der Datenträger",
"intro": "Im Speicherplan können Sie virtuelle und physische Laufwerke sowie PCI-Controller oder NVMe-Geräte hinzufügen. Die Laufwerksoptionen werden unten erläutert.",
"virtualHeading": "Virtuelle Festplatte",
"virtualItems": [
"Das Skript listet die in Proxmox verfügbaren Speicheroptionen auf",
"Der Benutzer wählt die Festplatte und Größe in GB",
"Virtuelle Laufwerke werden als <strong>SATA</strong> zugewiesen (sata0, sata1 usw.). Virtuelle und physische Datenlaufwerke teilen die sechs SATA-Anschlüsse 0–5; der Loader nutzt einen eigenen IDE-Anschluss."
],
"physicalHeading": "Passthrough eines physischen Laufwerks",
"physicalItems": [
"Das Skript erkennt alle verfügbaren physischen Festplatten",
"Der Benutzer wählt die physische Festplatte oder die Festplatten aus, die er verwenden möchte.",
"Physische Laufwerke werden als <strong>SATA</strong>-Geräte zugewiesen. Sie teilen die sechs SATA-Anschlüsse 0–5 mit virtuellen Datenlaufwerken; es gibt kein zusätzliches Kontingent von sechs physischen Laufwerken."
]
},
"loaderInstall": {
"heading": "Loader installieren",
"intro1": "Das Skript lädt und extrahiert den Loader automatisch aus dem Repository des Entwicklers. Wenn der Download fehlschlägt, zeigt das Skript eine Fehlermeldung an.",
"intro2Rich": "<strong>AuxXxilium Arc</strong>, <strong>RedPill RR</strong> und <strong>Alpine RedPill M-shell</strong> werden automatisch heruntergeladen und entpackt.",
"customRich": "Für <strong>Custom Loader</strong> sucht das Skript nach Dateien in <code>/var/lib/vz/template/iso</code>. Wenn mehrere Dateien gefunden werden, werden Sie aufgefordert, die gewünschte Datei auszuwählen.",
"uploadIntro": "Sie können benutzerdefinierte Loader über die lokalen Speicheroptionen hochladen:",
"imageAlt": "Custom Loader hinzufügen",
"imageCaption": "Custom Loader hinzufügen"
},
"vmCreation": {
"heading": "VM erstellen",
"intro": "Sobald der Loader heruntergeladen wurde, erstellt das Skript den VM mit den folgenden Befehlen:",
"items": [
"<code>qm create</code> – Erstellt die virtuelle Maschine mit den konfigurierten Parametern",
"<code>qm importdisk</code> importiert das Loader-Abbild in den Proxmox-Speicher. Danach weist das Skript es der VM aus Kompatibilitätsgründen als ide0 zu.",
"<code>qm set</code> – Zuweisung von Konfigurationswerten wie CPU, RAM und Speicher",
"<code>qm set VMID --boot order=ide0</code> legt den Loader als Bootgerät fest. Ersetzen Sie VMID durch die VM-ID."
]
},
"stepGuide": {
"heading": "Schrittweise Anleitung zur Loader-Konfiguration",
"intro": "Jeder Loader hat eigene Menüs und Konfigurationsmethoden. Die sechs Schritte unten erklären den gemeinsamen Ablauf; bei Abweichungen folgen Sie den aktuellen Loader-Anweisungen. Die M-shell-Bilder zeigen eine ältere TinyCore-Oberfläche, während das aktuelle Skript Alpine RedPill M-shell herunterlädt.",
"selectorHeading": "Wählen Sie Ihren Loadertyp:",
"loaderButtons": {
"arc": "Arc Loader",
"rr": "RR Loader",
"tinycore": "TinyCore Loader"
}
},
"steps": [
{
"id": "step1",
"title": "Starten Sie die VM und öffnen Sie das Hauptmenü",
"intro": "Sobald der VM erstellt wurde, starten Sie ihn. Beim ersten Booten des VM greifen Sie auf das Hauptmenü des Loaders zu, um das DSM-Modell auszuwählen und zu konfigurieren, das Sie erstellen möchten. Sobald der Loader erstellt wurde, wird dieser Schritt übersprungen, es sei denn, Sie erzwingen manuell eine Rekonfiguration vom Bootmonitor. Alle Loader haben auch die Möglichkeit, den Loader über ein Webinterface zu konfigurieren.",
"loaders": {
"arc": [
{
"htmlBefore": "<strong>Web-Schnittstelle</strong>, Um auf die Web-Schnittstelle zuzugreifen, öffnen Sie einfach einen Webbrowser und geben Sie die IP-Adresse ein, die in der Konsolenausgabe des VM angezeigt wird. Zum Beispiel in unserem Fall: http://192.169.0.32.",
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_0_1.png",
"alt": "Arc-Loader-Weboberfläche",
"caption": "Arc-Loader-Weboberfläche"
},
{
"htmlBefore": "<strong>Terminaloberfläche</strong>: Öffnen Sie sie direkt in der VM-Konsole.",
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_1_1.png",
"alt": "Arc-Loader-Terminaloberfläche",
"caption": "Arc-Loader-Terminaloberfläche"
}
],
"rr": [
{
"htmlBefore": "<strong>Web-Schnittstelle</strong>, um auf die Web-Schnittstelle zuzugreifen, öffnen Sie einfach einen Webbrowser und geben Sie die IP-Adresse ein, die in der Konsolenausgabe des VM angezeigt wird, gefolgt von Port <strong>7681</strong>. Zum Beispiel in unserem Fall: <code>http://192.169.0.33:7681</code>.",
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_0_2.png",
"alt": "RR Befehlsbeispiel",
"caption": "RR-Loader-Weboberfläche"
},
{
"htmlBefore": "<strong>Terminaloberfläche</strong>: Geben Sie in der VM-Konsole <strong>menu.sh</strong> ein, um sie zu öffnen.",
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_1_1.png",
"alt": "Oberfläche von RR Loader",
"caption": "RR-Loader-Terminaloberfläche"
}
],
"tinycore": [
{
"htmlBefore": "<strong>Web-Schnittstelle</strong>, um auf die Web-Schnittstelle zuzugreifen, öffnen Sie einfach einen Webbrowser und geben Sie die IP-Adresse ein, die in der Konsolenausgabe des VM angezeigt wird, gefolgt von Port <strong>7681</strong>. Zum Beispiel in unserem Fall: <code>http://192.169.0.35:7681</code>.",
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_0_1.png",
"alt": "TinyCore-Loader-Oberfläche",
"caption": "TinyCore-Loader-Weboberfläche"
},
{
"htmlBefore": "<strong>Terminaloberfläche</strong>: Öffnen Sie sie direkt in der VM-Konsole. Achten Sie auf Aufforderungen, eine Taste zum Fortfahren zu drücken oder die Sprache zu ändern.",
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_1_1.png",
"alt": "TinyCore-Loader-Oberfläche",
"caption": "Terminaloberfläche von TinyCore Loader"
}
]
}
},
{
"id": "step2",
"title": "Modell auswählen",
"intro": "Wählen Sie nach dem Laden des Menüs das Synology DSM-Modell aus, das Sie installieren möchten. Abhängig vom Loader müssen Sie manchmal die Optionen erweitern, um mehr Modelle zu sehen.",
"outro": "In unserem Beispiel wählen wir das SA6400-Modell.",
"loaders": {
"arc": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_2_1.png",
"alt": "Arc Model Auswahl",
"caption": "Arc Model Auswahl"
}
],
"rr": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_2_1.png",
"alt": "RR Modellauswahl",
"caption": "RR Modellauswahl"
}
],
"tinycore": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_2_1.png",
"alt": "TinyCore Modellauswahl",
"caption": "TinyCore Modellauswahl"
}
]
}
},
{
"id": "step3",
"title": "Wählen Sie DSM-Version",
"intro": "Nachdem Sie das Modell ausgewählt haben, müssen Sie die DSM-Version auswählen, die Sie installieren möchten.",
"loaders": {
"arc": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_3_1.png",
"alt": "Versionsauswahl in Arc – Schritt 1",
"caption": "Versionsauswahl in Arc – Schritt 1"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_3_2.png",
"alt": "Versionsauswahl in Arc – Schritt 2",
"caption": "Versionsauswahl in Arc – Schritt 2"
}
],
"rr": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_1.png",
"alt": "RR Versionsauswahl - Schritt 1",
"caption": "RR Versionsauswahl - Schritt 1"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_2.png",
"alt": "RR Versionsauswahl - Schritt 2",
"caption": "RR Versionsauswahl - Schritt 2"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_3.png",
"alt": "RR Versionsauswahl - Schritt 3",
"caption": "RR Versionsauswahl - Schritt 3"
}
],
"tinycore": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_3_1.png",
"alt": "TinyCore Versionsauswahl - Schritt 1",
"caption": "TinyCore Versionsauswahl - Schritt 1"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_3_2.png",
"alt": "TinyCore Versionsauswahl - Schritt 2",
"caption": "TinyCore Versionsauswahl - Schritt 2"
}
]
}
},
{
"id": "step4",
"title": "Addons auswählen",
"intro": "Mit diesem Schritt können Sie dem Loader zusätzliche Funktionen oder benutzerdefinierte Konfigurationen hinzufügen.",
"loaders": {
"arc": [
{
"htmlBefore": "<strong>Arc</strong> bietet Ihnen die Möglichkeit, die Einstellungen automatisch zu konfigurieren oder manuell anzupassen. Wenn die automatische Konfiguration ausgewählt ist, beginnt der Loader mit der Anwendung der erforderlichen Einstellungen und startet automatisch neu, sobald der Prozess abgeschlossen ist.",
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_1.png",
"alt": "Arc Auto Konfiguration",
"caption": "Arc Auto Konfiguration"
},
{
"htmlBefore": "Wenn wir uns dafür entscheiden, den automatischen Modus nicht zu verwenden, betreten wir das Menü, um verschiedene Optionen zu konfigurieren, die für den Loader erforderlich sind:",
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_2.png",
"alt": "Arc Manual Konfiguration",
"caption": "Arc Manual Konfiguration"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_3.png",
"alt": "Arc SN/Mac Konfiguration",
"caption": "Arc SN/Mac Konfiguration"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_4.png",
"alt": "Arc Sata Portmap",
"caption": "Arc Sata Portmap (verwenden Sie die empfohlene Option)"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_5.png",
"alt": "Arc Addons Auswahl",
"caption": "Arc Addons Auswahl"
}
],
"rr": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_1.png",
"alt": "RR Addon Schritt 1",
"caption": "RR Addon Schritt 1"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_2.png",
"alt": "RR Addon Schritt 2",
"caption": "RR-Addon – Schritt 2: Zum Hinzufügen von Addons klicken."
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_3.png",
"alt": "RR Addon Schritt 3",
"caption": "RR Addon Schritt 3 - Wählen Sie das gewünschte aus, indem Sie darauf klicken. Wenn Sie mehr hinzufügen möchten, wiederholen Sie den Vorgang aus den Bildern 2.4.2 und 2.4.3."
}
],
"tinycore": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_1.png",
"alt": "TinyCore SN Konfiguration",
"caption": "TinyCore SN Konfiguration"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_2.png",
"alt": "TinyCore Zufallsoption",
"caption": "TinyCore-Zufallsoption – die zufällige Auswahl wird empfohlen."
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_3.png",
"alt": "TinyCore MAC Konfiguration",
"caption": "TinyCore MAC Konfiguration"
},
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_4.png",
"alt": "TinyCore VM MAC",
"caption": "TinyCore VM MAC - Wählen Sie den MAC Ihres VM oder einen zufälligen MAC"
}
]
}
},
{
"id": "step5",
"title": "Bauen Sie den Loader",
"intro": "Sobald Sie das Modell, die DSM-Version und die Addons ausgewählt haben, erstellen Sie den Loader. Dieser Vorgang kann je nach Loader und ausgewählter Konfiguration einige Minuten dauern. Um zu starten, wählen Sie die Option \"Build the Loader\".",
"loaders": {
"arc": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_5_1.png",
"alt": "Loader in Arc erstellen",
"caption": "Loader in Arc erstellen"
}
],
"rr": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_5_1.png",
"alt": "Loader in RR erstellen",
"caption": "Loader in RR erstellen"
}
],
"tinycore": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_5_1.png",
"alt": "Loader in TinyCore erstellen",
"caption": "Loader in TinyCore erstellen"
}
]
}
},
{
"id": "step6",
"title": "Loader starten",
"intro": "Sobald der Loader gebaut wurde, werden Sie zum Booten aufgefordert. Der VM wird mit der von Ihnen erstellten Konfiguration neu gestartet und die DSM-Installation gestartet.",
"loaders": {
"arc": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_6_1.png",
"alt": "Loader in Arc starten",
"caption": "Loader in Arc starten"
}
],
"rr": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_6_1.png",
"alt": "Loader in RR starten",
"caption": "Loader in RR starten"
}
],
"tinycore": [
{
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_6_1.png",
"alt": "Loader in TinyCore starten",
"caption": "Loader in TinyCore starten"
}
]
}
}
],
"dsmInstall": {
"heading": "Starten der DSM Installation",
"intro": "Sobald der Loader gebootet ist, können Sie Ihr Synology-Gerät finden, indem Sie:",
"afterCode": "Folgen Sie den Anweisungen auf dem Bildschirm, um die DSM-Installation abzuschließen.",
"setupAlt": "DSM-Einrichtung",
"setupCaption": "DSM-Einrichtungsbildschirm",
"patience": "Bitte haben Sie Geduld - der Prozess kann einige Minuten dauern. Der prozentuale Fortschritt wird automatisch aktualisiert, wenn das Setup fortschreitet. Ein Countdown beginnt, sobald die Installation kurz vor dem Abschluss steht.",
"finishAlt": "Installation abgeschlossen",
"finishCaption": "Installation abgeschlossen"
},
"tips": {
"heading": "Tipps",
"introItem": "Beachten Sie, dass sich die verfügbaren Optionen je nach Loaderversion und Entwicklerupdates ändern können. Wenn während des Loader-Erstellungsprozesses Probleme auftreten, lesen Sie die Loader-Dokumentation:",
"docLinks": [
{
"label": "Arc-Dokumentation",
"url": "https://github.com/AuxXxilium/arc"
},
{
"label": "RR Dokumentation",
"url": "https://github.com/RROrg/rr"
},
{
"label": "TinyCore Dokumentation",
"url": "https://github.com/PeterSuh-Q3/tinycore-redpill"
}
],
"olderModels": "Einige ältere DSM-Modelle können Probleme beim Erkennen von Festplatten oder der Netzwerkkarte haben. Es wird empfohlen, neuere Modelle zu verwenden.",
"updateLabel": "Aktualisieren:",
"updateBody": "Einige Loader bieten die Möglichkeit, den Loader direkt aus dem Menü zu aktualisieren.",
"importantLabel": "Wichtig:",
"importantBody": "ProxMenux bietet keine Unterstützung für die verschiedenen Loader."
}
}
@@ -0,0 +1,292 @@
{
"meta": {
"title": "VM erstellen: Linux-System | ProxMenux-Dokumentation",
"description": "Erstellen Sie Linux-VMs auf Proxmox VE mit ProxMenux. Beschreibt den ausgewählten Katalog offizieller ISO-Abbilder (Ubuntu, Debian, Fedora, Arch, Rocky, Mint, openSUSE, Alpine, Kali, Manjaro), den gemeinsamen Speicherplan, optionales GPU-Passthrough und Tipps nach der Installation.",
"ogTitle": "VM erstellen: Linux-System | ProxMenux-Dokumentation",
"ogDescription": "Erstellen Sie Linux-VMs auf Proxmox VE mit ProxMenux. Kuratierter ISO-Katalog, einheitlicher Speicherplan, optionaler GPU-Durchlauf und Tipps nach der Installation.",
"ogImageAlt": "ProxMenux Linux VM Menü"
},
"header": {
"title": "VM erstellen: Linux-System",
"description": "Erstellen Sie eine Linux-VM auf Proxmox VE. ProxMenux bietet einen ausgewählten Katalog offizieller Linux-ISOs zum Herunterladen und eine Auswahl lokaler ISOs. Alle Wege führen durch den gemeinsamen VM-Assistenten, den Speicherplan und den optionalen GPU-Passthrough-Assistenten.",
"section": "Virtuelle Maschinen"
},
"intro": {
"title": "Was dieses Skript macht",
"body": "Wählt eine offizielle Linux-ISO zum automatischen Herunterladen oder eine bereits hochgeladene lokale ISO. Danach führt der gemeinsame Assistent durch CPU, RAM und BIOS, den Speicherplan, optionales GPU-Passthrough und die VM-Erstellung."
},
"image": {
"alt": "ProxMenux Linux Installationsoptionen",
"caption": "Linux Installationsoptionen"
},
"config": {
"heading": "Standard- oder erweiterte Konfiguration",
"intro": "Nachdem die ISO ausgewählt wurde, fragt ProxMenux, ob das Standardprofil VM verwendet oder der erweiterte Wizard geöffnet werden soll.",
"defaultHeading": "Standardkonfiguration",
"headerParam": "Parameter",
"headerValue": "Standardwert",
"defaultRows": [
{
"param": "Maschinentyp",
"valueRich": "<code>q35</code>"
},
{
"param": "BIOS",
"value": "OVMF (UEFI)"
},
{
"param": "CPU-Typ",
"value": "Host"
},
{
"param": "Kerne",
"value": "2"
},
{
"param": "RAM",
"value": "4096 MB"
},
{
"param": "Brücke",
"valueRich": "<code>vmbr0</code>"
},
{
"param": "MAC-Adresse",
"value": "Autogeneriert"
},
{
"param": "Nach Abschluss starten",
"value": "Nein"
}
],
"advancedHeading": "Erweiterte Konfiguration",
"advancedIntro": "Der erweiterte Wizard stellt jeden Parameter einzeln dar:",
"headerOptions": "Optionen",
"advancedRows": [
{
"param": "Maschinentyp",
"optionsRich": "<code>q35</code> oder <code>i440fx</code>"
},
{
"param": "BIOS",
"options": "OVMF (UEFI) oder SeaBIOS (Legacy)"
},
{
"param": "CPU-Typ",
"options": "Host, KVM64 und weitere aufgeführte CPU-Modelle"
},
{
"param": "Kerne",
"options": "Anzahl CPU-Kerne"
},
{
"param": "RAM",
"options": "Speicher zugewiesen VM"
},
{
"param": "Brücke",
"options": "Netzbrücke"
},
{
"param": "MAC-Adresse",
"options": "Eigene MAC-Adresse"
},
{
"param": "VLAN",
"options": "VLAN-Tag (fakultativ)"
},
{
"param": "MTU",
"options": "MTU-Größe"
}
]
},
"storagePlan": {
"heading": "Speicherplan",
"body": "Nach CPU / RAM öffnet ProxMenux das <strong>Storage Plan</strong>-Menü, in dem Sie virtuelle Festplatten, importierte Festplatten und PCI-Durchgangsgeräte im selben VM kombinieren können, indem Sie Elemente einzeln hinzufügen und beenden, wenn Sie fertig sind.",
"virtualDiskTitle": "a. Virtuelle Festplatte hinzufügen",
"virtualDiskItems": [
"Listet die auf dem Host verfügbaren Proxmox-Speicher auf.",
"Sie wählen den Zielspeicher und die Größe in GB aus.",
"Das Laufwerk nutzt den gewählten Bus: SCSI (Standard), SATA, VirtIO oder IDE. SATA hat sechs Anschlüsse von 0 bis 5: <code>sata0</code>, <code>sata1</code>, …."
],
"importDiskTitle": "b. Physisches Laufwerk hinzufügen",
"importDiskItems": [
"Erkennt physische Festplatten, die sicher importiert werden können (System und geschützte Festplatten sind verborgen).",
"Sie wählen eine oder mehrere Festplatten über eine Checkliste aus.",
"Importierte Laufwerke nutzen den gewählten Bus und werden über <code>qm set</code> zugewiesen."
],
"pciTitle": "c. Controller oder NVMe hinzufügen (PCI-Passthrough)",
"pciItems": [
"Erkennt SATA-/SAS-HBAs und NVMe-Geräte und ermöglicht die Zuweisung eines <em>ganzen Controllers</em> an die VM. IOMMU muss aktiv sein; das Skript bietet die Aktivierung und bei Bedarf einen Neustart an.",
"Ein Bestätigungsschritt warnt vor einem kontrollerweiten Risiko (die gesamte Karte, einschließlich jeder Festplatte, verlässt den Host).",
"PCI-Geräte werden mit Befehlen wie <code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code> zugewiesen. Ersetzen Sie VMID und PCI_ADDRESS durch VM-ID und PCI-Adresse und verwenden Sie für jedes Gerät einen freien hostpci-Index."
],
"resetTitle": "Zurücksetzen und abschließen",
"resetBody": "Das Menü bietet <strong>r</strong> zum Zurücksetzen und Neubeginnen sowie <strong>d</strong> zum Abschließen und Fortfahren. Ein leerer Plan kann nicht abgeschlossen werden."
},
"gpu": {
"heading": "Optionaler GPU-Durchgang",
"body": "Nach dem Speicherplan bietet ProxMenux bei einer geeigneten GPU den Passthrough-Assistenten an. Siehe <gpuLink>GPU zu einer VM hinzufügen (Passthrough)</gpuLink>. Ein Host-Neustart kann erforderlich sein."
},
"autoFeatures": {
"heading": "Automatische VM-Funktionen",
"efiTitle": "EFI-Laufwerk",
"efiBody": "Wenn OVMF (UEFI) ausgewählt ist, erstellt ProxMenux eine 4 MB EFI-Systemplatte auf dem von Ihnen ausgewählten Speicher, sodass die Firmware einen Platz zum Speichern ihrer Variablen hat.",
"isoTitle": "ISO-Anschluss",
"isoBody": "Die Installation ISO ist als CD-ROM an <code>ide2</code> angebracht, bereit für den ersten Boot.",
"guestTitle": "QEMU Gastagent",
"guestBody": "Der Gastagentenkanal ist in der VM-Konfiguration aktiviert. Sie müssen den Agenten immer noch im Gast installieren - siehe unten."
},
"installOptions": {
"heading": "Linux Installationsoptionen",
"officialHeading": "Offizielle ISO (traditionelle Installation)",
"officialBody": "ProxMenux bietet eine ausgewählte Liste offizieller Linux-ISOs. Wählen Sie eine aus; das Skript lädt sie direkt vom Spiegelserver der Distribution nach <code>/var/lib/vz/template/iso</code> und bindet sie in die VM ein.",
"officialImageAlt": "Auswahl der Linux-Distribution",
"officialImageCaption": "Auswahl der Linux-Distribution",
"localHeading": "Lokale ISO-Datei",
"localBody": "Verwendet eine Linux-ISO, die bereits unter <code>/var/lib/vz/template/iso</code> liegt. Das Skript listet alle gefundenen <code>*.iso</code>-Dateien zur Auswahl auf.",
"localImageAlt": "Lokales ISO-Auswahlmenü",
"localImageCaption": "Lokales ISO-Auswahlmenü",
"distros": [
{
"name": "Ubuntu",
"variants": [
"25.10 Desktop",
"24.04 Desktop",
"22.04 Desktop",
"20.04 Desktop",
"25.10 Server",
"24.04 Server",
"22.04 Server",
"20.04 Server"
]
},
{
"name": "Debian",
"variants": [
"13 Desktop",
"12 Desktop",
"11 Desktop",
"13 Netinst",
"12 Netinst",
"11 Netinst"
]
},
{
"name": "Fedora",
"variants": [
"Workstation 42"
]
},
{
"name": "Arch Linux",
"variants": [
"neueste Version"
]
},
{
"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": "Was das Skript Ende-zu-Ende macht",
"items": [
"Erhält die Linux ISO (offizieller Download oder lokale Datei).",
"Wendet die Standard- oder erweiterte CPU / RAM / BIOS / Maschinentypkonfiguration an.",
"Öffnet den Speicherplan und verbindet die ausgewählten virtuellen Festplatten, importierten Festplatten und PCI-Geräte.",
"Erstellt die EFI-Festplatte, wenn UEFI ausgewählt ist.",
"Montiert die Linux ISO auf <code>ide2</code>.",
"Legt die Bootreihenfolge fest: zuerst Laufwerk, dann ISO.",
"Aktiviert den QEMU Guest Agent Kanal.",
"Optional läuft der GPU Passthrough-Assistent.",
"Generiert eine stilisierte HTML-Beschreibung, die dem VM beigefügt ist.",
"Startet die VM, wenn Sie dies gewählt haben."
]
},
"postInstall": {
"heading": "Tipps nach der Installation",
"guestAgentHeading": "Installieren Sie den QEMU Guest Agent in der VM",
"guestAgentBody": "ProxMenux aktiviert den Gastagentenkanal in der VM-Konfiguration; den Agenten selbst müssen Sie im Gast installieren. Er unterstützt kontrolliertes Herunterfahren und das Einfrieren von Dateisystemen während Backups, um die Datenkonsistenz zu verbessern.",
"debian": "Debian / Ubuntu",
"fedora": "Fedora / Rocky / RHEL",
"arch": "Arch Linux",
"opensuse": "openSUSE",
"virtioHeading": "VirtIO-Unterstützung in Linux",
"virtioBody": "Moderne Linux-Distributionen enthalten normalerweise VirtIO-Treiber für Laufwerke und Netzwerk. Wählen Sie <code>virtio</code> für VirtIO-Blockgeräte oder <code>scsi</code> mit dem konfigurierten VirtIO-SCSI-Controller; der Netzwerkadapter nutzt ebenfalls <code>virtio</code>. Prüfen Sie die Treiberunterstützung bei älteren Installern.",
"virtioWarnTitle": "Sehr alte Distributionen",
"virtioWarnBody": "Sehr alte Installer können die benötigten VirtIO-Treiber nicht enthalten. Verwenden Sie dann einen emulierten SATA-/SCSI-Controller oder stellen Sie passende Treiber bereit.",
"trimHeading": "TRIM / discard bei SSD-Speicher aktivieren",
"trimBody": "Liegt die VM auf SSD-basiertem Proxmox-Speicher und wurde das Laufwerk mit dem Flag <code>discard</code> zugewiesen, können Sie TRIM-Befehle aus dem Gast weiterleiten. Zwei Möglichkeiten:",
"trimItems": [
"Führen Sie <code>fstrim -av</code> regelmäßig aus (oder aktivieren Sie die <code>fstrim.timer</code>-Einheit in systemd-Distributionen).",
"Oder mounten Sie Dateisysteme mit der Option <code>discard</code> in <code>/etc/fstab</code>."
],
"balloonHeading": "Dynamische Speicherzuweisung (Ballooning)",
"balloonBody": "Moderne Linux-Kernel enthalten normalerweise den Treiber <code>virtio_balloon</code>. Mit aktiviertem Balloon-Gerät kann Proxmox Speicherstatistiken erfassen. Dynamische Rückgewinnung setzt zudem einen Mindestwert unterhalb des konfigurierten Maximums voraus; gleiche Werte ergeben eine feste Speicherzuweisung."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager/import-disk-image-vm",
"label": "Disk-Image in VM importieren",
"tail": " — ein vorhandenes Linux-Abbild im Format .qcow2 / .img / .raw einer neuen VM zuweisen."
},
{
"href": "/docs/utils/import-vm",
"label": "VM von OVA / OVF importieren",
"tail": " — eine aus VMware / VirtualBox / Proxmox exportierte Linux-VM importieren."
},
{
"href": "/docs/hardware/gpu-vm-passthrough",
"label": "GPU zu VM hinzufügen (Passthrough)",
"tail": "- für Linux-VMs, die GPU-Beschleunigung benötigen."
},
{
"href": "/docs/help-info/vm-ct-commands",
"label": "VM und CT Verwaltungsbefehle",
"tail": "— qm CLI Referenz."
},
{
"href": "/docs/create-vm",
"label": "Übersicht zur VM-Erstellung",
"tail": "."
}
]
}
}
@@ -0,0 +1,147 @@
{
"meta": {
"title": "VM erstellen: System NAS | ProxMenux Dokumentation",
"description": "Erstellen Sie virtuelle NAS-Maschinen auf Proxmox VE mit ProxMenux. Unterstützt Synology DSM (Loader), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS und FygoOS. Umbrel OS ist über ein Community-Script verfügbar.",
"ogTitle": "VM erstellen: System NAS | ProxMenux Dokumentation",
"ogDescription": "Erstellen Sie virtuelle NAS-Maschinen auf Proxmox VE mit ProxMenux. Unterstützt Synology DSM (Loader), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS und FygoOS.",
"ogImageAlt": "ProxMenux System NAS Menü"
},
"header": {
"title": "VM erstellen: System NAS",
"description": "ProxMenux unterstützt acht NAS-Betriebssysteme als dedizierte VMs sowie einen optionalen Umbrel OS-Pfad über ein Community-Skript. Die meisten Systeme teilen sich den gleichen Auto-ISO-Flow; Synology DSM verwendet einen spezialisierten Loader-Assistenten.",
"section": "Virtuelle Maschinen"
},
"intro": {
"title": "Wie der NAS-Selektor funktioniert",
"body": "Im allgemeinen ISO-Ablauf versucht die NAS-Auswahl, die neueste stabile Version vom Projektspiegel zu ermitteln, und nutzt bei Bedarf eine Ersatzversion. Nach dem ISO-Download öffnet sich der gemeinsame Konfigurator für CPU, RAM, Laufwerke und Netzwerk. Synology DSM und ZimaOS verwenden eigene Installationsabläufe."
},
"image": {
"alt": "ProxMenux System NAS-Selektor",
"caption": "System-NAS-Auswahl"
},
"flowBadges": {
"loader": "Loader-Ablauf",
"auto-iso": "Automatischer ISO-Ablauf",
"dedicated": "Dediziertes Skript"
},
"labels": {
"base": "Basis",
"fileSystem": "Dateisystem",
"viewDetails": "Details anzeigen"
},
"supported": {
"heading": "Unterstützte NAS-Systeme",
"cards": [
{
"name": "Synology DSM",
"tagline": "DiskStation Manager mit dem ARC / RR-Loader. Erfordert die Konfiguration des Loaders vor dem ersten Booten.",
"icon": "HardDrive",
"base": "Linux (Custom)",
"fileSystem": "Btrfs, ext4",
"href": "/docs/create-vm/system-nas/synology",
"flow": "loader"
},
{
"name": "TrueNAS SCALE",
"tagline": "Debian-basiertes TrueNAS mit Docker-Apps in aktuellen Versionen und ZFS als primärem Dateisystem. Ältere SCALE-Versionen nutzten 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": "FreeBSD-basiertes TrueNAS mit Schwerpunkt ZFS-Speicher. Jails und Plugins in CORE 13.3 sind veraltet und werden nicht unterstützt.",
"icon": "Database",
"base": "FreeBSD",
"fileSystem": "ZFS",
"href": "/docs/create-vm/system-nas/system-nas-others#truenas-core",
"flow": "auto-iso"
},
{
"name": "OpenMediaVault",
"tagline": "Schlankes Debian-basiertes NAS mit modularer Plugin-Architektur. Gut für ältere Hardware.",
"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": "FreeBSD-basierte NAS - der ursprüngliche Nachfolger von FreeNAS, konzentriert auf ZFS und Einfachheit.",
"icon": "Database",
"base": "FreeBSD",
"fileSystem": "ZFS, UFS",
"href": "/docs/create-vm/system-nas/system-nas-others#xigmanas",
"flow": "auto-iso"
},
{
"name": "Rockstor",
"tagline": "openSUSE-basierte NAS rund um Btrfs. Rock-ons (Docker Apps) erweitern die Funktionalität.",
"icon": "HardDrive",
"base": "openSUSE Leap",
"fileSystem": "Btrfs",
"href": "/docs/create-vm/system-nas/system-nas-others#rockstor",
"flow": "auto-iso"
},
{
"name": "ZimaOS",
"tagline": "Schlankes NAS-Betriebssystem für Medien, Docker-Apps und Hausautomation. Verwendet einen eigenen Installer.",
"icon": "MonitorIcon",
"base": "Buildroot (aus CasaOS hervorgegangen)",
"fileSystem": "ext4",
"href": "/docs/create-vm/system-nas/system-nas-others#zimaos",
"flow": "dedicated"
},
{
"name": "FygoOS",
"tagline": "Internationale Ausgabe von fnOS: ein Debian-basiertes NAS mit Speichervolumen, Apps und Medien-Streaming, das über seine Web-Schnittstelle und die Fygo-Apps verwaltet wird.",
"icon": "Server",
"base": "Debian Linux",
"fileSystem": "Btrfs, ext4",
"href": "/docs/create-vm/system-nas/system-nas-others#fygoos",
"flow": "auto-iso"
}
]
},
"umbrel": {
"title": "Gemeinschaftsoption: Umbrel OS",
"bodyRich": "Der neunte NAS-Menüeintrag ist <strong>Umbrel OS</strong>. Er startet einen außerhalb von ProxMenux gepflegten <umbrelLink>community-scripts-Installer</umbrelLink> und ist hier nicht dokumentiert. Der Installer übernimmt den gesamten Ablauf und zeigt am Ende die Standardzugangsdaten an."
},
"zfsMem": {
"title": "Faustregel für den ZFS-Arbeitsspeicher",
"bodyRich": "Weisen Sie TrueNAS für den Grundbetrieb mindestens <strong>8 GB RAM</strong> zu, bei höherer Last mehr. ZFS nutzt RAM für den ARC-Cache; eine allgemeine Leistungsgrenze bei 8 GB gibt es aber nicht für jedes ZFS-NAS. Beachten Sie die Anforderungen der Distribution sowie Laufwerke, Dienste und Apps. Schlanke OMV- oder Rockstor-Systeme können weniger benötigen."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/create-vm/system-nas/synology",
"label": "Synology-VM",
"tail": "— dediziertes Installationsprogramm für Synology DSM (Xpenology) auf Proxmox."
},
{
"href": "/docs/create-vm/system-nas/system-nas-others",
"label": "Sonstige System-NAS",
"tail": "TrueNAS, OpenMediaVault, Rockstor, XigmaNAS, FygoOS und ähnliches."
},
{
"href": "/docs/disk-manager/import-disk-vm",
"label": "Datenträger in VM importieren",
"tail": "- reale physische Festplatten an den NAS VM übergeben (empfohlen über virtuelle Festplatten für die Produktion)."
},
{
"href": "/docs/help-info/zfs-commands",
"label": "ZFS Verwaltungsbefehle",
"tail": "— nützlich, wenn Ihre NAS-Distribution ZFS darunter verwendet."
},
{
"href": "/docs/create-vm",
"label": "Übersicht zur VM-Erstellung",
"tail": "."
}
]
}
}
@@ -0,0 +1,400 @@
{
"meta": {
"title": "VM erstellen: Synology DSM | ProxMenux-Dokumentation",
"description": "Erstellen Sie eine Synology-DSM-VM auf Proxmox VE. ProxMenux lädt den gewählten Loader (Arc, RR, Alpine RedPill M-shell oder ein eigenes Abbild), importiert ihn als Bootlaufwerk der VM und konfiguriert CPU, RAM und Speicher mit dem Standard- oder erweiterten Assistenten.",
"ogTitle": "VM erstellen: Synology DSM | ProxMenux-Dokumentation",
"ogDescription": "Erstellen Sie eine Synology DSM virtuelle Maschine auf Proxmox VE mit ProxMenux."
},
"header": {
"title": "VM erstellen: Synology DSM",
"description": "Erstellen Sie eine Synology-DSM-VM auf Proxmox VE. ProxMenux lädt den gewählten Loader (Arc, RR, Alpine RedPill M-shell oder ein eigenes Abbild), importiert ihn als Bootlaufwerk der VM und konfiguriert CPU, RAM und Speicher mit dem Standard- oder erweiterten Assistenten.",
"section": "Virtuelle Maschinen · NAS"
},
"loaderLabels": {
"arc": "Arc Loader",
"rr": "RR Loader",
"tinycore": "TinyCore Loader"
},
"whatThisDoes": {
"title": "Was das macht",
"bodyRich": "ProxMenux automatisiert die VM-Vorbereitung für Synology DSM: Es lädt einen unterstützten Loader, importiert ihn als IDE-Bootlaufwerk in eine neue VM und übernimmt die gewählten CPU-, RAM-, Netzwerk- und Speichereinstellungen. Loader-Erstellung, DSM-Modellwahl und DSM-Installation erfolgen <strong>innerhalb der VM</strong> über die Web- oder Terminaloberfläche des Loaders. Die Community pflegt diese sich häufig ändernden Schritte; diese Seite bietet eine Ausgangsbasis."
},
"supportedLoaders": {
"heading": "Unterstützte Loader",
"intro": "Mit dem Skript können Sie zwischen vier Loader-Quellen wählen:",
"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-Projekt)",
"url": "https://github.com/PeterSuh-Q3/tinycore-redpill"
}
],
"customRich": "<strong>Custom Loader</strong> – legen Sie Ihr eigenes Loader-Image in <code>/var/lib/vz/template/iso</code> und das Skript wird es abholen."
},
"config": {
"heading": "Standard- oder erweiterte Konfiguration",
"intro": "Wenn Sie das Skript ausführen, wird gefragt, ob Sie das ProxMenux-Standardprofil VM verwenden oder den erweiterten Assistenten öffnen möchten. Standardwerte sind auf DSM abgestimmt und funktionieren für die meisten Installationen.",
"defaultHeading": "Standardkonfiguration",
"headerParam": "Parameter",
"headerValue": "Standardwert",
"defaultRowsRich": [
{
"param": "Maschinentyp",
"valueRich": "<code>q35</code>"
},
{
"param": "BIOS",
"valueRich": "OVMF (UEFI)"
},
{
"param": "CPU-Typ",
"valueRich": "Host"
},
{
"param": "Kerne",
"valueRich": "2"
},
{
"param": "RAM",
"valueRich": "4096 MB"
},
{
"param": "Brücke",
"valueRich": "<code>vmbr0</code>"
},
{
"param": "MAC-Adresse",
"valueRich": "Autogeneriert"
},
{
"param": "Nach Abschluss starten",
"valueRich": "Nein"
}
],
"advancedHeading": "Erweiterte Konfiguration",
"advancedIntro": "Der erweiterte Assistent zeigt jede Einstellung einzeln. Sie können die folgenden Werte ändern:",
"headerOptions": "Optionen",
"advancedRowsRich": [
{
"param": "Maschinentyp",
"optionsRich": "<code>q35</code> oder <code>i440fx</code>"
},
{
"param": "BIOS",
"optionsRich": "OVMF (UEFI) oder SeaBIOS (Legacy)"
},
{
"param": "CPU-Typ",
"optionsRich": "Host oder KVM64"
},
{
"param": "Kerne",
"optionsRich": "Anzahl CPU-Kerne"
},
{
"param": "RAM",
"optionsRich": "Der VM zugewiesener Speicher"
},
{
"param": "Brücke",
"optionsRich": "Netzbrücke"
},
{
"param": "MAC-Adresse",
"optionsRich": "Eigene MAC-Adresse"
},
{
"param": "VLAN",
"optionsRich": "VLAN-Tag (fakultativ)"
},
{
"param": "MTU",
"optionsRich": "MTU-Größe"
}
]
},
"storagePlan": {
"heading": "Speicherplan",
"introRich": "Nach CPU und RAM öffnet ProxMenux das Menü <strong>Speicherplan</strong>. Dort können Sie virtuelle und importierte Laufwerke sowie PCI-Passthrough-Geräte in derselben VM <strong>kombinieren</strong>. Fügen Sie die Elemente einzeln hinzu und schließen Sie den Plan danach ab.",
"virtualHeading": "a. Virtuelle Festplatte hinzufügen",
"virtualItemsRich": [
"Listet die auf dem Host verfügbaren Proxmox-Speicher auf.",
"Sie wählen den Zielspeicher und die Größe in GB aus.",
"Das Laufwerk wird als SATA zugewiesen (<code>sata0</code>, <code>sata1</code>, …). Virtuelle und physische Datenlaufwerke teilen sich die sechs SATA-Anschlüsse 0–5."
],
"importHeading": "b. Physisches Laufwerk hinzufügen",
"importItemsRich": [
"Erkennt physische Festplatten, die sicher importiert werden können (System und geschützte Festplatten sind verborgen).",
"Sie wählen eine oder mehrere Festplatten über eine Checkliste aus.",
"Importierte Festplatten werden als SATA über <code>qm set</code> angehängt."
],
"pciHeading": "c. Controller oder NVMe hinzufügen (PCI-Passthrough)",
"pciItemsRich": [
"Erkennt SATA-/SAS-HBAs und NVMe-Geräte und ermöglicht die Zuweisung eines <em>ganzen Controllers</em> an die VM. IOMMU muss aktiv sein; das Skript bietet die Aktivierung und bei Bedarf einen Neustart an.",
"Ein Bestätigungsschritt warnt vor einem kontrollerweiten Risiko (die gesamte Karte, einschließlich jeder Festplatte, verlässt den Host).",
"PCI-Geräte werden mit Befehlen wie <code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code> zugewiesen. Ersetzen Sie VMID und PCI_ADDRESS durch VM-ID und PCI-Adresse und verwenden Sie für jedes Gerät einen freien hostpci-Index."
],
"resetCalloutTitle": "Zurücksetzen und abschließen",
"resetCalloutBodyRich": "Das Menü bietet <strong>r</strong> zum Zurücksetzen der Auswahl und <strong>d</strong> zum Abschließen und Fortfahren. Ein leerer Plan ist nicht zulässig; Synology benötigt mindestens ein Laufwerk für DSM."
},
"gpu": {
"heading": "Optionaler GPU-Durchgang",
"bodyRich": "Nach dem Speicherplan fragt das Skript bei einer geeigneten GPU nach deren Zuweisung an die VM. Siehe <link>GPU zu einer VM hinzufügen (Passthrough)</link>. Ein Host-Neustart kann erforderlich sein."
},
"loaderInstall": {
"heading": "Loader installieren",
"intro1Rich": "<strong>Arc</strong>, <strong>RR</strong> und <strong>Alpine RedPill M-shell</strong> werden automatisch aus ihren ursprünglichen GitHub-Repositories heruntergeladen und entpackt. Schlägt der Download fehl, bricht das Skript mit einer klaren Meldung ab.",
"intro2Rich": "Für die Option <strong>Custom Loader</strong> scannt das Skript <code>/var/lib/vz/template/iso</code>. Wenn mehr als ein Kandidat gefunden wird, werden Sie aufgefordert, den gewünschten auszuwählen.",
"uploadIntro": "Sie können benutzerdefinierte Loader aus dem lokalen Proxmox-Speicher hochladen:",
"imageAlt": "Custom Loader hinzufügen",
"imageCaption": "Custom Loader hinzufügen"
},
"vmCreation": {
"heading": "VM-Erstellung – ausgeführte Skriptbefehle",
"introRich": "Sobald Sie den Loader bestätigt haben, führt ProxMenux das Äquivalent dieser <code>qm</code>-Befehle aus:",
"itemsRich": [
"<code>qm create</code> — erstellt die VM mit den gewählten CPU-, RAM-, BIOS- und Maschineneinstellungen.",
"<code>qm importdisk</code> importiert das Loader-Abbild in den Proxmox-Speicher. Danach weist das Skript es der VM als <strong>IDE</strong>-Laufwerk an ide0 zu.",
"<code>qm set VMID --sata0 DISK_REFERENCE</code> weist ein geplantes Datenlaufwerk zu. Ersetzen Sie VMID und DISK_REFERENCE durch VM-ID und Laufwerksreferenz; nutzen Sie einen freien SATA-Index 0–5. Der Netzwerkadapter wird mit qm create konfiguriert.",
"<code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code> weist einen gewählten PCI-Controller oder ein NVMe-Gerät zu. Ersetzen Sie VMID und PCI_ADDRESS durch VM-ID und PCI-Adresse und nutzen Sie einen freien hostpci-Index pro Gerät.",
"<code>qm set VMID --boot order=ide0</code> legt den Loader als Bootgerät fest. Ersetzen Sie VMID durch die VM-ID."
]
},
"stepByStep": {
"heading": "Schrittweise Loader-Konfiguration",
"intro": "Die sechs gemeinsamen Schritte sind: VM starten, Modell, DSM-Version und Addons wählen, Loader erstellen und starten. Menüs und Optionen ändern sich je nach Version. Die M-shell-Bilder zeigen eine ältere TinyCore-Oberfläche; das aktuelle Skript lädt Alpine RedPill M-shell. Folgen Sie dessen aktuellen Anweisungen.",
"warnCalloutTitle": "Die Loader werden nicht von ProxMenux gepflegt",
"warnCalloutBody": "Arc, RR und Alpine RedPill M-shell sind Community-Projekte mit eigener Release-Kadenz. Wenn ein Schritt anders aussieht als die Screenshots unten, hat der Loader wahrscheinlich aktualisiert - überprüfen Sie die eigene Dokumentation des Loaders (Links unten auf dieser Seite)."
},
"stepBadge": "Schritt",
"step1": {
"title": "Starten Sie die VM und öffnen Sie das Hauptmenü",
"intro": "Starten Sie die erstellte VM. Beim ersten Start öffnet sich die Loader-Konfiguration, in der Sie das DSM-Modell auswählen und erstellen. Spätere Starts überspringen diesen Schritt, sofern Sie keine neue Konfiguration im Bootmenü erzwingen. Alle drei Loader bieten Terminal- und Weboberflächen.",
"arc": {
"webRich": "<strong>Web-Schnittstelle.</strong> Öffnen Sie einen Browser und gehen Sie zu der in der VM-Konsole gezeigten IP (in unserem Beispiel: <code>http://192.168.0.32</code>).",
"webAlt": "Arc-Loader-Weboberfläche",
"webCaption": "Arc-Loader-Weboberfläche",
"termRich": "<strong>Terminaloberfläche</strong>: Öffnen Sie sie direkt in der VM-Konsole.",
"termAlt": "Arc-Loader-Terminaloberfläche",
"termCaption": "Arc-Loader-Terminaloberfläche"
},
"rr": {
"webRich": "<strong>Web-Schnittstelle.</strong> Öffnen Sie einen Browser und gehen Sie zu der IP, die in der VM-Konsole angezeigt wird, gefolgt von Port <strong>7681</strong> (Beispiel: <code>http://192.168.0.33:7681</code>).",
"webAlt": "RR-Loader-Weboberfläche",
"webCaption": "RR-Loader-Weboberfläche",
"termRich": "<strong>Terminaloberfläche.</strong> Geben Sie in der VM-Konsole <code>menu.sh</code> ein, um sie zu öffnen.",
"termAlt": "RR-Loader-Terminaloberfläche",
"termCaption": "RR-Loader-Terminaloberfläche"
},
"tinycore": {
"webRich": "<strong>Web-Schnittstelle.</strong> Öffnen Sie einen Browser und gehen Sie zu der IP, die in der VM-Konsole angezeigt wird, gefolgt von Port <strong>7681</strong> (Beispiel: <code>http://192.168.0.35:7681</code>).",
"webAlt": "TinyCore Loader-Web-Schnittstelle",
"webCaption": "TinyCore Loader-Web-Schnittstelle",
"termRich": "<strong>Terminaloberfläche</strong>: Öffnen Sie sie direkt in der VM-Konsole. Achten Sie auf Aufforderungen, eine Taste zum Fortfahren zu drücken oder die Sprache zu ändern.",
"termAlt": "Terminaloberfläche von TinyCore Loader",
"termCaption": "Terminaloberfläche von TinyCore Loader"
}
},
"step2": {
"title": "Modell auswählen",
"introRich": "Wählen Sie das Synology DSM-Modell aus, das Sie installieren möchten. Abhängig vom Loader müssen Sie möglicherweise die Optionen erweitern, um die vollständige Liste zu sehen. In den folgenden Screenshots verwenden wir das Modell <strong>SA6400</strong> als Beispiel.",
"arc": {
"alt": "Modellauswahl in Arc",
"caption": "Modellauswahl in Arc"
},
"rr": {
"alt": "Auswahl des RR-Modells",
"caption": "Auswahl des RR-Modells"
},
"tinycore": {
"alt": "TinyCore Modellauswahl",
"caption": "TinyCore Modellauswahl"
}
},
"step3": {
"title": "Wählen Sie DSM-Version",
"intro": "Nachdem Sie das Modell ausgewählt haben, wählen Sie die zu installierende DSM-Version aus.",
"arc": [
{
"alt": "Versionsauswahl in Arc – Schritt 1",
"caption": "Versionsauswahl in Arc – Schritt 1"
},
{
"alt": "Versionsauswahl in Arc – Schritt 2",
"caption": "Versionsauswahl in Arc – Schritt 2"
}
],
"rr": [
{
"alt": "RR Versionsauswahl - Schritt 1",
"caption": "RR Versionsauswahl - Schritt 1"
},
{
"alt": "RR Versionsauswahl - Schritt 2",
"caption": "RR Versionsauswahl - Schritt 2"
},
{
"alt": "RR Versionsauswahl - Schritt 3",
"caption": "RR Versionsauswahl - Schritt 3"
}
],
"tinycore": [
{
"alt": "TinyCore Versionsauswahl - Schritt 1",
"caption": "TinyCore Versionsauswahl - Schritt 1"
},
{
"alt": "TinyCore Versionsauswahl - Schritt 2",
"caption": "TinyCore Versionsauswahl - Schritt 2"
}
]
},
"step4": {
"title": "Addons auswählen",
"intro": "Mit diesem Schritt können Sie dem Loader zusätzliche Funktionen oder benutzerdefinierte Konfiguration hinzufügen.",
"arc": {
"autoRich": "<strong>Arc</strong> bietet einen automatischen Modus (empfohlen) und einen manuellen Modus. Im automatischen Modus wendet der Loader sinnvolle Standardwerte an und startet selbstständig neu, wenn er fertig ist.",
"autoAlt": "Arc Auto Konfiguration",
"autoCaption": "Arc Auto Konfiguration",
"manualRich": "Wenn Sie manuell auswählen, gehen Sie eine nach der anderen durch die Optionen:",
"manualAlt": "Manuelle Konfiguration in Arc",
"manualCaption": "Manuelle Konfiguration in Arc",
"snMacAlt": "Arc SN/MAC",
"snMacCaption": "Arc SN / MAC-Konfiguration",
"portmapAlt": "Arc SATA portmap",
"portmapCaption": "Arc SATA Portmap (verwenden Sie die empfohlene Option)",
"addonsAlt": "Arc-Addons",
"addonsCaption": "Arc Addons Auswahl"
},
"rr": [
{
"alt": "RR-Addon — Schritt 1",
"caption": "RR-Addon — Schritt 1"
},
{
"alt": "RR-Addon — Schritt 2",
"caption": "RR-Addon — Schritt 2: Drücken Sie, um ein Addon hinzuzufügen"
},
{
"alt": "RR-Addon — Schritt 3",
"caption": "RR-Addon - Schritt 3: Klicken Sie auf das gewünschte Addon. Wiederholen Sie die beiden vorherigen Screenshots, um mehr hinzuzufügen."
}
],
"tinycore": [
{
"alt": "TinyCore SN-Konfiguration",
"caption": "TinyCore SN-Konfiguration"
},
{
"alt": "TinyCore Zufallsoption",
"caption": "TinyCore Zufallsoption (empfohlen)"
},
{
"alt": "TinyCore MAC Konfiguration",
"caption": "TinyCore MAC Konfiguration"
},
{
"alt": "TinyCore VM MAC",
"caption": "TinyCore — Wählen Sie den MAC des VM oder einen zufälligen"
}
]
},
"step5": {
"title": "Bauen Sie den Loader",
"introRich": "Wenn das Modell, die DSM-Version und die Addons ausgewählt sind, wählen Sie <strong>Build the Loader</strong>. Dies kann je nach Loader und den ausgewählten Optionen einige Minuten dauern.",
"arc": {
"alt": "Loader in Arc erstellen",
"caption": "Loader in Arc erstellen"
},
"rr": {
"alt": "Loader in RR erstellen",
"caption": "Loader in RR erstellen"
},
"tinycore": {
"alt": "Loader in TinyCore erstellen",
"caption": "Loader in TinyCore erstellen"
}
},
"step6": {
"title": "Loader starten",
"intro": "Sobald der Loader erstellt ist, startet der VM mit der von Ihnen erstellten Konfiguration neu und die DSM-Installation beginnt.",
"arc": {
"alt": "Loader in Arc starten",
"caption": "Loader in Arc starten"
},
"rr": {
"alt": "Loader in RR starten",
"caption": "Loader in RR starten"
},
"tinycore": {
"alt": "Loader in TinyCore starten",
"caption": "Loader in TinyCore starten"
}
},
"dsmInstall": {
"heading": "Starten der DSM-Installation",
"intro": "Nach dem Loader-Start finden Sie Ihre DSM-VM, indem Sie Folgendes öffnen:",
"afterCode": "Folgen Sie den Anweisungen auf dem Bildschirm, um die DSM-Installation abzuschließen.",
"setupAlt": "DSM-Einrichtung",
"setupCaption": "DSM-Einrichtungsbildschirm",
"patience": "Seien Sie geduldig - der Prozess kann mehrere Minuten dauern. Fortschritt wird automatisch aktualisiert und ein Countdown wird angezeigt, wenn sich die Installation dem Abschluss nähert.",
"finishAlt": "Installation abgeschlossen",
"finishCaption": "Installation abgeschlossen"
},
"tips": {
"heading": "Tipps",
"recentTitle": "Verwenden Sie aktuelle DSM-Modelle",
"recentBody": "Einige ältere DSM-Modelle haben Schwierigkeiten, Festplatten oder die Netzwerkkarte zu erkennen. Bevorzugt aktuelle Modelle (z.B. SA6400) für ein reibungsloseres First-Boot-Erlebnis.",
"updateTitle": "Aktualisieren des Loaders",
"updateBody": "Einige Loader bieten die Möglichkeit, sich direkt aus ihrem Konfigurationsmenü zu aktualisieren - Sie müssen den VM nicht zerstören und neu erstellen.",
"warnTitle": "ProxMenux unterstützt die Loader nicht",
"warnBody": "ProxMenux automatisiert die VM-Seite. Loader-Probleme (Modell nicht gefunden, Add-on nicht installiert, DSM weigert sich zu booten) sind hier außerhalb des Umfangs - verwenden Sie den eigenen Issue-Tracker und die Dokumentation jedes Loaders.",
"docsHeading": "Loader-Dokumentation",
"docLinks": [
{
"label": "Arc-Dokumentation",
"url": "https://github.com/AuxXxilium/arc"
},
{
"label": "RR-Dokumentation",
"url": "https://github.com/RROrg/rr"
},
{
"label": "TinyCore Dokumentation",
"url": "https://github.com/PeterSuh-Q3/tinycore-redpill"
}
]
},
"related": {
"heading": "Verwandte Themen",
"itemsRich": [
{
"href": "/docs/create-vm/system-nas",
"label": "Übersicht über System NAS",
"tail": "— Vergleich von Synology vs TrueNAS / OMV / Rockstor / XigmaNAS."
},
{
"href": "/docs/create-vm/system-nas/system-nas-others",
"label": "Sonstige System-NAS",
"tail": " — andere NAS-Distributionen als Synology."
},
{
"href": "/docs/disk-manager/import-disk-vm",
"label": "Datenträger in VM importieren",
"tail": "- Reale Festplatten an Synology VM übergeben (empfohlen für die Speicherleistung)."
},
{
"href": "/docs/create-vm",
"label": "Übersicht zur VM-Erstellung",
"tail": "."
}
]
}
}
@@ -0,0 +1,312 @@
{
"meta": {
"title": "VM erstellen: Andere NAS-Systeme | ProxMenux Dokumentation",
"description": "Erstellen Sie TrueNAS SCALE, TrueNAS CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS und FygoOS virtuelle Maschinen auf Proxmox VE mit ProxMenux. Deckt die Standard- / erweiterte Konfiguration, den neuen Speicherplan, den optionalen GPU-Durchgang und die empfohlenen Spezifikationen pro System ab.",
"ogTitle": "VM erstellen: Andere NAS-Systeme | ProxMenux Dokumentation",
"ogDescription": "Erstellen Sie TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS und FygoOS VMs auf Proxmox VE mit ProxMenux.",
"ogImageAlt": "ProxMenux NAS-Selektor"
},
"header": {
"title": "VM erstellen: Andere NAS-Systeme",
"description": "ProxMenux erstellt eine installationsbereite VM für TrueNAS SCALE, TrueNAS CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS und FygoOS. Diese Seite beschreibt den gemeinsamen Ablauf mit Standard- und erweiterten Einstellungen, Speicherplan und optionalem GPU-Passthrough sowie Hinweise und Ressourcenempfehlungen pro System.",
"section": "Virtuelle Maschinen · NAS"
},
"intro": {
"title": "Wie diese Systeme entstehen",
"bodyRich": "Alle sieben Systeme teilen sich den gleichen ProxMenux-Assistenten. Der NAS-Selektor wählt den passenden Installer aus (erkennt automatisch die neueste stabile Version für TrueNAS, OMV, XigmaNAS, Rockstor und FygoOS) und übergibt dann den generischen VM-Konfigurator und den Speicherplan. ZimaOS verwendet ein eigenes Installationsskript (<code>vm/zimaos.sh</code>), folgt jedoch der gleichen CPU/RAM/Speicherung/optional-GPU-Sequenz."
},
"config": {
"heading": "Standard- oder erweiterte Konfiguration",
"intro": "Wenn ein NAS ausgewählt ist, fragt ProxMenux, ob das standardmäßige VM-Profil verwendet oder der erweiterte Wizard geöffnet werden soll. Die Standardeinstellungen sind auf NAS-Workloads abgestimmt - mehr RAM als ein einfaches Linux VM, da ZFS-basierte Systeme es für den ARC-Cache benötigen.",
"defaultHeading": "Standardkonfiguration",
"headerParam": "Parameter",
"headerValue": "Standardwert",
"defaultRowsRich": [
{
"param": "Maschinentyp",
"valueRich": "<code>q35</code>"
},
{
"param": "BIOS",
"valueRich": "OVMF (UEFI)<note> — SeaBIOS für OpenMediaVault</note>"
},
{
"param": "CPU-Typ",
"valueRich": "Host"
},
{
"param": "Kerne",
"valueRich": "2"
},
{
"param": "RAM",
"valueRich": "8192 MB<note> — 4096 MB für ZimaOS</note>"
},
{
"param": "Brücke",
"valueRich": "<code>vmbr0</code>"
},
{
"param": "MAC-Adresse",
"valueRich": "Autogeneriert"
},
{
"param": "Nach Abschluss starten",
"valueRich": "Nein"
}
],
"advancedHeading": "Erweiterte Konfiguration",
"advancedIntro": "Der erweiterte Wizard stellt jeden Parameter einzeln dar:",
"headerOptions": "Optionen",
"advancedRowsRich": [
{
"param": "Maschinentyp",
"optionsRich": "<code>q35</code> oder <code>i440fx</code>"
},
{
"param": "BIOS",
"optionsRich": "OVMF (UEFI) oder SeaBIOS (Legacy)"
},
{
"param": "CPU-Typ",
"optionsRich": "Host, KVM64 und weitere aufgeführte CPU-Modelle (ZimaOS: Host oder KVM64)"
},
{
"param": "Kerne",
"optionsRich": "Anzahl CPU-Kerne"
},
{
"param": "RAM",
"optionsRich": "Speicher zugewiesen VM"
},
{
"param": "Brücke",
"optionsRich": "Netzbrücke"
},
{
"param": "MAC-Adresse",
"optionsRich": "Eigene MAC-Adresse"
},
{
"param": "VLAN",
"optionsRich": "VLAN-Tag (fakultativ)"
},
{
"param": "MTU",
"optionsRich": "MTU-Größe"
}
],
"zfsCalloutTitle": "ZFS und RAM",
"zfsCalloutBody": "TrueNAS SCALE/CORE und XigmaNAS nutzen ZFS, dessen ARC-Cache von RAM profitiert. TrueNAS benötigt mindestens 8 GB für den Grundbetrieb; 16 GB oder mehr helfen bei anspruchsvollen Diensten und Apps. Bemessen Sie die VM nach Distribution und Last; 8 GB sind kein allgemeines ZFS-Minimum. Schlanke OMV-, Rockstor- oder ZimaOS-Systeme können weniger benötigen."
},
"storagePlan": {
"heading": "Speicherplan",
"intro": "Nach CPU / RAM öffnet ProxMenux das Speicherplanmenü, in dem Sie virtuelle Festplatten, importierte Festplatten und PCI-Durchlaufgeräte im selben VM kombinieren können, indem Sie Elemente einzeln hinzufügen und beenden, wenn Sie fertig sind.",
"virtualHeading": "a. Virtuelle Festplatte hinzufügen",
"virtualItemsRich": [
"Listen Sie die auf dem Host verfügbaren Proxmox-Speichervolumen auf.",
"Sie wählen den Zielspeicher und die Größe in GB aus.",
"Das Laufwerk nutzt den gewählten Bus: SCSI (Standard), SATA, VirtIO oder IDE (ZimaOS: SCSI oder SATA). SATA hat sechs Anschlüsse von 0 bis 5: <code>sata0</code>, <code>sata1</code>, …."
],
"importHeading": "b. Physisches Laufwerk hinzufügen",
"importItemsRich": [
"Erkennt physische Festplatten, die sicher importiert werden können (System und geschützte Festplatten sind verborgen).",
"Sie wählen eine oder mehrere Festplatten über eine Checkliste aus.",
"Importierte Laufwerke nutzen den gewählten Bus und werden über <code>qm set</code> zugewiesen."
],
"pciHeading": "c. Controller oder NVMe hinzufügen (PCI-Passthrough)",
"pciItemsRich": [
"Erkennt SATA-/SAS-HBAs und NVMe-Geräte und ermöglicht die Zuweisung eines <em>ganzen Controllers</em> an die VM. IOMMU muss aktiv sein; das Skript bietet die Aktivierung und bei Bedarf einen Neustart an.",
"Ein Bestätigungsschritt warnt vor einem kontrollerweiten Risiko (die gesamte Karte, einschließlich jeder Festplatte, verlässt den Host).",
"PCI-Geräte werden mit Befehlen wie <code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code> zugewiesen. Ersetzen Sie VMID und PCI_ADDRESS durch VM-ID und PCI-Adresse und verwenden Sie für jedes Gerät einen freien hostpci-Index."
],
"resetCalloutTitle": "Zurücksetzen und abschließen",
"resetCalloutBodyRich": "Das Menü bietet <strong>r</strong> zum Zurücksetzen und Neubeginnen sowie <strong>d</strong> zum Abschließen und Fortfahren. Ein leerer Plan kann nicht abgeschlossen werden."
},
"gpu": {
"heading": "Optionaler GPU-Durchgang",
"bodyRich": "Nach dem Speicherplan bietet ProxMenux bei einer geeigneten GPU den Passthrough-Assistenten an. Siehe <link>GPU zu einer VM hinzufügen (Passthrough)</link>. Ein Host-Neustart kann erforderlich sein."
},
"autoFeatures": {
"heading": "Automatische VM-Funktionen",
"efiTitle": "EFI-Laufwerk",
"efiBody": "Bei OVMF (UEFI) erstellt ProxMenux automatisch ein 4-MB-EFI-Laufwerk auf dem gewählten Speicher, mit einem zum Speichertyp passenden Format, etwa raw bei Verzeichnisspeicher.",
"isoTitle": "ISO-Anschluss",
"isoBodyRich": "Die Installations-ISO wird heruntergeladen (falls erforderlich) und als CD-ROM an <code>ide2</code> angehängt, bereit zum ersten Booten.",
"guestTitle": "QEMU Gastagent",
"guestBody": "Der Gastagentenkanal ist in der VM-Konfiguration aktiviert. Sie müssen den Agenten immer noch im Gast installieren, nachdem das NAS-Betriebssystem aktiviert ist."
},
"endToEnd": {
"heading": "Was das Skript Ende-zu-Ende macht",
"itemsRich": [
"Erkennt und lädt die neueste stabile ISO herunter (oder verwendet die Fallback-Version, wenn der Upstream nicht erreichbar ist).",
"Wendet den standardmäßigen oder erweiterten CPU / RAM / BIOS / Maschinentyp an.",
"Öffnet den Speicherplan und verbindet die ausgewählten virtuellen Festplatten, importierten Festplatten und PCI-Geräte.",
"Erstellt eine EFI-Disk, wenn UEFI ausgewählt ist.",
"Befestigt die Installation ISO auf <code>ide2</code>.",
"Legt die Bootreihenfolge fest: zuerst Laufwerk, dann ISO.",
"Aktiviert den QEMU Guest Agent Kanal.",
"Optional läuft der GPU Passthrough-Assistent.",
"Generiert eine stilisierte HTML-Beschreibung, die dem VM beigefügt ist.",
"Startet den VM, wenn Sie sich dafür entschieden haben."
]
},
"perSystem": {
"heading": "Systembezogene Anmerkungen",
"shellLabel": "Shell-Schnittstelle",
"webLabel": "Webschnittstelle"
},
"systems": {
"truenasScale": {
"id": "truenas-scale",
"title": "TrueNAS SCALE",
"icon": "Database",
"officialName": "TrueNAS SCALE",
"officialUrl": "https://www.truenas.com/truenas-scale/",
"description": "Debian-basiertes TrueNAS mit Docker-Apps in aktuellen Versionen, Linux KVM und ZFS als primärem Dateisystem. Ältere SCALE-Versionen nutzten Kubernetes. Es verbindet ZFS-Speicher mit einem Container-Ökosystem.",
"specs": [
"Empfohlene Schnittstelle: SATA oder SCSI (beide unterstützen Discard/Trim)",
"RAM: 8 GB (16 GB+ für echte Workloads empfohlen)",
"Mindestens CPU Kerne: 2 (4+ empfohlen)",
"UEFI (OVMF) Boot empfohlen",
"VirtIO Netzwerkadapter für besten Durchsatz"
],
"shellImg": "/vm/truenas/truenas-scale-shell.png",
"webImg": "/vm/truenas/truenas-scale-web.png",
"shellAlt": "TrueNAS SCALE Shell-Schnittstelle",
"webAlt": "TrueNAS SCALE Web-Schnittstelle"
},
"truenasCore": {
"id": "truenas-core",
"title": "TrueNAS CORE",
"icon": "Database",
"officialName": "TrueNAS CORE",
"officialUrl": "https://www.truenas.com/truenas-core/",
"description": "FreeBSD-basiertes TrueNAS, früher FreeNAS, mit Schwerpunkt ZFS. Jails, Plugins und Virtualisierung in CORE 13.3 sind veraltet und nicht unterstützt; die Entwicklung konzentriert sich auf Linux-basierte Ausgaben.",
"specs": [
"Empfohlenes Interface: SATA",
"RAM: 8 GB (16 GB+ empfohlen)",
"Mindestens CPU Kerne: 2 (4+ empfohlen)",
"UEFI (OVMF) Boot empfohlen",
"VirtIO Netzwerkadapter für besten Durchsatz"
],
"shellImg": "/vm/truenas/truenas-core-shell.png",
"webImg": "/vm/truenas/truenas-core-web.png",
"shellAlt": "TrueNAS CORE Shell-Schnittstelle",
"webAlt": "TrueNAS-CORE-Weboberfläche"
},
"openmediavault": {
"id": "openmediavault",
"title": "OpenMediaVault",
"icon": "Server",
"officialName": "openmediavault.org",
"officialUrl": "https://www.openmediavault.org",
"description": "Debian-basiertes NAS mit modularen Plugins. Ressourcenschonend und gut für bescheidene Hardware geeignet, wenn ZFS nicht benötigt wird.",
"specs": [
"Empfohlene Schnittstelle: SATA oder VirtIO",
"RAM: 2 GB (4 GB+ empfohlen)",
"Mindestens CPU Kerne: 1 (2+ empfohlen)",
"BIOS: ProxMenux standardmäßig auf SeaBIOS für OMV (bei Bedarf in Advanced überschreiben)",
"VirtIO Netzwerkadapter für besten Durchsatz"
],
"shellImg": "/vm/openmediavault/openmediavault-shell.png",
"webImg": "/vm/openmediavault/openmediavault-web.png",
"shellAlt": "OpenMediaVault Shell-Schnittstelle",
"webAlt": "OpenMediaVault Web-Schnittstelle"
},
"xigmanas": {
"id": "xigmanas",
"title": "XigmaNAS",
"icon": "Database",
"officialName": "xigmanas.com",
"officialUrl": "https://www.xigmanas.com",
"description": "FreeBSD-basierte NAS – die direkte Fortsetzung der ursprünglichen FreeNAS-Codebasis (0.7). Konzentriert auf ZFS und Einfachheit, mit einem leichteren Footprint als TrueNAS.",
"specs": [
"Empfohlene Schnittstelle: SATA oder SCSI",
"RAM: 4 GB (8 GB+ empfohlen für ZFS)",
"Mindestens CPU Kerne: 2",
"UEFI (OVMF) Boot empfohlen",
"VirtIO Netzwerkadapter für besten Durchsatz"
]
},
"rockstor": {
"id": "rockstor",
"title": "Rockstor",
"icon": "HardDrive",
"officialName": "rockstor.com",
"officialUrl": "https://rockstor.com",
"description": "openSUSE Leap-basierte NAS rund um Btrfs. Snapshots, Subvolumes und das Rock-ons App Framework (Docker) für Medien, Filesharing und Backup.",
"specs": [
"Empfohlene Schnittstelle: SATA oder VirtIO",
"RAM: 2 GB (4 GB+ empfohlen)",
"Mindestens CPU Kerne: 2",
"UEFI (OVMF) Boot empfohlen",
"VirtIO Netzwerkadapter für besten Durchsatz"
],
"shellImg": "/vm/rockstor/rockstor-shell.png",
"webImg": "/vm/rockstor/rockstor-web.png",
"shellAlt": "Rockstor Shell-Schnittstelle",
"webAlt": "Rockstor Web-Schnittstelle"
},
"zimaos": {
"id": "zimaos",
"title": "ZimaOS",
"icon": "MonitorIcon",
"officialName": "zimaspace.com",
"officialUrl": "https://www.zimaspace.com/zimaos",
"description": "Schlankes NAS-/Home-Server-System auf Buildroot-Basis, aus CasaOS hervorgegangen, für Medien, Docker-Apps und Hausautomation. Der eigene ProxMenux-Installer (vm/zimaos.sh) lädt ein vorgefertigtes Image und bietet CPU-, RAM- und Speicherkonfiguration.",
"specs": [
"Empfohlene Schnittstelle: SATA oder VirtIO",
"Standard RAM: 4 GB (genug für Medien / selbst gehostete Apps)",
"Mindestens CPU Kerne: 2",
"UEFI-Start (OVMF)",
"VirtIO Netzwerkadapter für besten Durchsatz"
]
},
"fygoos": {
"id": "fygoos",
"title": "FygoOS",
"icon": "Server",
"officialName": "fygonas.com",
"officialUrl": "https://fygonas.com",
"description": "Internationale Ausgabe des Debian-basierten fnOS. ProxMenux lädt die neueste Installer-ISO von fygonas.com und bindet sie in die VM ein. Das System belegt ein Laufwerk; der übrige Platz kann App- und Dateivolumes aufnehmen. Nach der Installation zeigt die Konsole die Webadresse auf Port 5666 (Port 80 leitet dorthin um). Öffnen Sie sie, um das Gerät zu benennen und das Administratorkonto anzulegen.",
"specs": [
"Systemdiskette: FygoOS schlägt eine 64 GB Systempartition vor, die in einer VM kleiner sein kann",
"Installation: Graphical Install oder Rescuing Install, falls der grafische Modus scheitert",
"UEFI (OVMF) booten ohne Secure Boot Keys, wie es der Installer benötigt",
"Netzwerk: Ethernet mit DHCP standardmäßig",
"VirtIO Netzwerkadapter für besten Durchsatz"
]
}
},
"related": {
"heading": "Verwandte Themen",
"itemsRich": [
{
"href": "/docs/create-vm/system-nas",
"label": "Übersicht über System NAS",
"tail": "Schneller Vergleich aller NAS-Optionen."
},
{
"href": "/docs/create-vm/system-nas/synology",
"label": "Synology-VM",
"tail": "- für den Synology DSM (Xpenology) Flow."
},
{
"href": "/docs/disk-manager/import-disk-vm",
"label": "Datenträger in VM importieren",
"tail": "- empfohlen für NAS-Anwendungsfälle (echte Festplatten > virtuelle Festplatten)."
},
{
"href": "/docs/help-info/zfs-commands",
"label": "ZFS Verwaltungsbefehle",
"tail": "— wenn Sie TrueNAS oder eine andere ZFS-unterstützte Distribution auswählen."
},
{
"href": "/docs/create-vm",
"label": "Übersicht zur VM-Erstellung",
"tail": "."
}
]
}
}
@@ -0,0 +1,259 @@
{
"meta": {
"title": "VM erstellen: Windows-System | ProxMenux-Dokumentation",
"description": "Erstellen und konfigurieren Sie virtuelle Windows-Maschinen auf Proxmox VE mit ProxMenux. Enthält UUP Dump ISO- und lokale ISO-Pfade, Standard / erweiterte Konfiguration, den einheitlichen Speicherplan, optionalen GPU-Passthrough, TPM 2.0-Setup und VirtIO-Treiberinstallation.",
"ogTitle": "VM erstellen: Windows-System | ProxMenux-Dokumentation",
"ogDescription": "Erstellen Sie Windows-VMs auf Proxmox VE mit ProxMenux: UUP Dump oder lokale ISO, gemeinsamer Speicherplan, optionales GPU-Passthrough, TPM 2.0 und VirtIO-Treiber.",
"ogImageAlt": "ProxMenux Windows VM Menü"
},
"header": {
"title": "VM erstellen: Windows-System",
"description": "Erstellen Sie eine Windows-VM auf Proxmox VE. ProxMenux führt durch ISO-Auswahl (UUP Dump oder lokal), CPU, RAM, Maschinentyp, gemeinsamen Speicherplan, optionales GPU-Passthrough, TPM 2.0 und die Installation der VirtIO-Treiber.",
"section": "Virtuelle Maschinen"
},
"intro": {
"title": "Was dieses Skript macht",
"body": "Der Windows-Ablauf fragt nach der ISO-Quelle: UUP Dump oder eine lokale Kopie unter <code>/var/lib/vz/template/iso</code>. Danach startet der gemeinsame VM-Assistent mit Windows-Vorgaben: <code>q35</code>, OVMF und TPM 2.0. Die VirtIO-Treiber-ISO wird als zweites CD-ROM eingebunden; die VM ist damit bereit für den Windows-Installer."
},
"image": {
"alt": "ProxMenux Windows Installationsoptionen",
"caption": "Windows-Installationsoptionen"
},
"config": {
"heading": "Standard- oder erweiterte Konfiguration",
"intro": "Nachdem die ISO ausgewählt wurde, fragt ProxMenux, ob das Standardprofil VM verwendet oder der erweiterte Wizard geöffnet werden soll. Das Standardprofil ist auf moderne Windows Desktop- und Server-Editionen abgestimmt.",
"defaultHeading": "Standardkonfiguration",
"headerParam": "Parameter",
"headerValue": "Standardwert",
"defaultRows": [
{
"param": "Maschinentyp",
"valueRich": "<code>q35</code>"
},
{
"param": "BIOS",
"value": "OVMF (UEFI)"
},
{
"param": "CPU-Typ",
"value": "Host"
},
{
"param": "Kerne",
"value": "4"
},
{
"param": "RAM",
"value": "8192 MB"
},
{
"param": "Brücke",
"valueRich": "<code>vmbr0</code>"
},
{
"param": "MAC-Adresse",
"value": "Autogeneriert"
},
{
"param": "TPM",
"value": "Aktiviert (v2.0)"
},
{
"param": "Nach Abschluss starten",
"value": "Nein"
}
],
"advancedHeading": "Erweiterte Konfiguration",
"advancedIntro": "Der erweiterte Assistent zeigt jede Einstellung einzeln:",
"headerOptions": "Optionen",
"advancedRows": [
{
"param": "Maschinentyp",
"optionsRich": "<code>q35</code> oder <code>i440fx</code>"
},
{
"param": "BIOS",
"options": "OVMF (UEFI) oder SeaBIOS (Legacy)"
},
{
"param": "CPU-Typ",
"options": "Host, KVM64 und weitere aufgeführte CPU-Modelle"
},
{
"param": "Kerne",
"options": "Anzahl CPU-Kerne"
},
{
"param": "RAM",
"options": "Der VM zugewiesener Speicher"
},
{
"param": "Brücke",
"options": "Netzbrücke"
},
{
"param": "MAC-Adresse",
"options": "Eigene MAC-Adresse"
},
{
"param": "VLAN",
"options": "VLAN-Tag (fakultativ)"
},
{
"param": "MTU",
"options": "MTU-Größe"
},
{
"param": "TPM",
"options": "TPM 2.0 wird für Windows automatisch hinzugefügt; der Assistent hat dafür keinen Schalter."
}
],
"tpmWarnTitle": "TPM-Anforderungen hängen von der Windows-Ausgabe ab",
"tpmWarnBody": "Windows 11 benötigt normalerweise TPM 2.0. Windows Server 2022 benötigt es für bestimmte Sicherheitsfunktionen, nicht für jede Installation. ProxMenux fügt für Windows ein virtuelles TPM hinzu; der erweiterte Assistent bietet dafür keinen Schalter."
},
"storagePlan": {
"heading": "Speicherplan",
"body": "Nach CPU / RAM öffnet ProxMenux das <strong>Storage Plan</strong>-Menü, in dem Sie virtuelle Festplatten, importierte Festplatten und PCI-Durchgangsgeräte im selben VM kombinieren können, indem Sie Elemente einzeln hinzufügen und beenden, wenn Sie fertig sind.",
"virtualDiskTitle": "a. Virtuelle Festplatte hinzufügen",
"virtualDiskItems": [
"Listet die auf dem Host verfügbaren Proxmox-Speicher auf.",
"Sie wählen den Zielspeicher und die Größe in GB aus.",
"Das Laufwerk nutzt den gewählten Bus: SCSI (Standard), SATA, VirtIO oder IDE. SATA hat sechs Anschlüsse von 0 bis 5: <code>sata0</code>, <code>sata1</code>, …."
],
"importDiskTitle": "b. Physisches Laufwerk hinzufügen",
"importDiskItems": [
"Erkennt physische Festplatten, die sicher importiert werden können (System und geschützte Festplatten sind verborgen).",
"Sie wählen eine oder mehrere Festplatten über eine Checkliste aus.",
"Importierte Laufwerke nutzen den gewählten Bus und werden über <code>qm set</code> zugewiesen."
],
"pciTitle": "c. Controller oder NVMe hinzufügen (PCI-Passthrough)",
"pciItems": [
"Erkennt SATA-/SAS-HBAs und NVMe-Geräte und ermöglicht die Zuweisung eines <em>ganzen Controllers</em> an die VM. IOMMU muss aktiv sein; das Skript bietet die Aktivierung und bei Bedarf einen Neustart an.",
"Ein Bestätigungsschritt warnt vor einem kontrollerweiten Risiko (die gesamte Karte, einschließlich jeder Festplatte, verlässt den Host).",
"PCI-Geräte werden mit Befehlen wie <code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code> zugewiesen. Ersetzen Sie VMID und PCI_ADDRESS durch VM-ID und PCI-Adresse und verwenden Sie für jedes Gerät einen freien hostpci-Index."
],
"resetTitle": "Zurücksetzen und abschließen",
"resetBody": "Das Menü bietet <strong>r</strong> zum Zurücksetzen und Neubeginnen sowie <strong>d</strong> zum Abschließen und Fortfahren. Ein leerer Plan kann nicht abgeschlossen werden."
},
"gpu": {
"heading": "Optionaler GPU-Durchgang",
"body": "Nach dem Speicherplan bietet ProxMenux bei einer geeigneten GPU den Passthrough-Assistenten an. Siehe <gpuLink>GPU zu einer VM hinzufügen (Passthrough)</gpuLink>. Ein Host-Neustart kann erforderlich sein."
},
"autoFeatures": {
"heading": "Automatische VM-Funktionen",
"efiTitle": "EFI-Laufwerk",
"efiBody": "Wenn OVMF (UEFI) ausgewählt ist, erstellt ProxMenux eine 4 MB EFI-Systemplatte auf dem Speicher, den Sie auswählen, und fügt sie an die VM an, so dass die UEFI-Firmware einen Platz zum Speichern ihrer Variablen hat.",
"tpmTitle": "TPM 2.0",
"tpmBody": "ProxMenux fügt Windows-VMs ein virtuelles TPM 2.0 hinzu. Es erfüllt die TPM-Anforderung von Windows 11 und ermöglicht TPM-abhängige Funktionen in Windows Server.",
"isoTitle": "ISO-Anschluss",
"isoBody": "Die Installations-ISO wird an <code>ide2</code> eingebunden. Die VirtIO-Treiber-ISO wird bei Bedarf heruntergeladen und an <code>ide3</code> eingebunden, bereit für <em>Treiber laden</em>.",
"guestTitle": "QEMU Gastagent",
"guestBody": "Der Gastagentenkanal ist in der VM-Konfiguration aktiviert. Der Agent selbst wird in Windows installiert, indem <code>virtio-win-guest-tools.exe</code> nach der Einrichtung ausgeführt wird."
},
"installOptions": {
"heading": "Windows-Installationsoptionen",
"intro": "ProxMenux bietet zwei Methoden, um die Windows-Installationsmedien zu erhalten:",
"uupTitle": "UUP-Dump-ISO-Erstellung",
"uupLogoAlt": "UUP Dump Logo",
"uupBody": "Das <strong>UUP Dump ISO Creator</strong>-Skript ist ein ProxMenux-Dienstprogramm, das eine Windows ISO im laufenden Betrieb von Microsofts Windows Update-Servern erstellt. Es zieht saubere, offizielle Installationsdateien (einschließlich Insider Preview Builds).",
"uupItems": [
"Zugriff auf die neuesten Windows Builds.",
"Unterstützt Insider Preview Versionen.",
"Saubere, offizielle Microsoft Installationsdateien.",
"Automatische ISO Erstellung und Montage im VM.",
"Unterstützt Home, Pro und Enterprise Editionen."
],
"uupLearnMore": "Erfahren Sie mehr über UUP Dump ISO Creator",
"localTitle": "Installieren mit lokaler ISO",
"localBody": "Verwendet eine Windows-ISO, die Sie bereits in den lokalen Speicher des Hosts hochgeladen haben (<code>/var/lib/vz/template/iso</code>). Das Skript listet jede Nicht-VirtIO ISO auf, die es findet, und lässt Sie eine auswählen.",
"localImageAlt": "Lokales ISO-Auswahlmenü",
"localImageCaption": "Lokales ISO-Auswahlmenü"
},
"endToEnd": {
"heading": "Was das Skript Ende-zu-Ende macht",
"items": [
"Bezieht die Windows-ISO aus UUP Dump oder einer lokalen Kopie.",
"Wendet die Standard- oder erweiterte CPU / RAM / BIOS / Maschinentypkonfiguration an.",
"Öffnet den Speicherplan und verbindet die ausgewählten virtuellen Festplatten, importierten Festplatten und PCI-Geräte.",
"Erstellt bei UEFI-Installationen das EFI-Laufwerk und weist das TPM-2.0-Gerät zu.",
"Befestigt die Windows ISO auf <code>ide2</code>.",
"Lädt die VirtIO-Treiber-ISO herunter und bindet sie an <code>ide3</code> ein.",
"Legt die Bootreihenfolge fest: zuerst Laufwerk, dann ISO.",
"Aktiviert den QEMU Guest Agent Kanal.",
"Optional läuft der GPU Passthrough-Assistent.",
"Generiert eine stilisierte HTML-Beschreibung, die dem VM beigefügt ist.",
"Startet die VM, wenn Sie dies gewählt haben."
]
},
"virtio": {
"heading": "VirtIO Treiber während der Installation",
"body": "Der VM-Ersteller nutzt standardmäßig SCSI-Laufwerke mit VirtIO-SCSI-Controller und einen VirtIO-Netzwerkadapter. Eine normale Windows-ISO kann deren Treiber von der an <code>ide3</code> eingebundenen VirtIO-ISO benötigen. SATA-Laufwerke funktionieren meist mit Windows-eigenen Treibern; SATA ändert den VirtIO-Netzwerkadapter nicht.",
"warnTitle": "VirtIO-Netzwerktreiber laden, wenn Windows kein Netzwerk hat",
"warnBody": "Die VM nutzt einen VirtIO-Netzwerkadapter (<code>virtio</code>). Enthält Windows dessen Treiber nicht, laden Sie ihn während der Installation für den Netzwerkzugriff. Sonst können Aktivierung und Windows Update beim ersten Start fehlen.",
"stepLabel": "Schritt",
"steps": [
{
"title": "Zugriff auf den Bildschirm \"Wo möchten Sie Windows installieren?\"",
"body": "Wenn während der Windows-Einrichtung keine Festplatten angezeigt werden, ist der Speichertreiber für Ihre ausgewählte Schnittstelle (SCSI oder VirtIO) noch nicht geladen. Laden Sie es manuell von der montierten VirtIO ISO.",
"img": "/vm/windows/virtio-step-1.png",
"caption": "Windows-Setup ohne Festplatten angezeigt"
},
{
"title": "Klicken Sie auf „Treiber laden“",
"bodyRich": "Klicken Sie auf <strong>Treiber laden</strong>, durchsuchen Sie die eingebundene VirtIO-ISO und wählen Sie den Speichertreiber für die gewählte Laufwerksschnittstelle.",
"img": "/vm/windows/virtio-step-2.png",
"caption": "Klicken Sie auf Load Driver, um den VirtIO ISO zu durchsuchen"
},
{
"title": "Durchsuchen des richtigen Treiberordners",
"bodyRich": "Wählen Sie auf der VirtIO-ISO <code>vioscsi</code> für den VirtIO-SCSI-Controller oder <code>viostor</code> für VirtIO-Blockgeräte. Wählen Sie danach den Unterordner für Windows-Version und Architektur.",
"img": "/vm/windows/virtio-step-3.png",
"caption": "Durchsuchen des entsprechenden Treiberordners"
},
{
"title": "Wählen Sie den Treiber",
"bodyRich": "Windows listet die verfügbaren Treiber auf. Wählen Sie diejenige, die zu Ihrem Setup passt (normalerweise <strong>Red Hat VirtIO SCSI-Controller</strong>) und klicken Sie auf <strong>Next</strong>.",
"img": "/vm/windows/virtio-step-4.png",
"caption": "Wählen Sie den VirtIO-Treiber aus, der zu Ihrer Festplattenschnittstelle passt"
},
{
"title": "(Optional) Installieren Sie den Netzwerktreiber",
"bodyRich": "Wenn Sie auch VirtIO als Netzwerkschnittstelle ausgewählt haben, laden Sie den Netzwerktreiber aus dem <code>NetKVM</code>-Ordner derselben ISO und wählen Sie den Unterordner für Ihre Windows-Version aus. Ohne diesen Schritt installiert Windows ohne Internetzugang.",
"img": "/vm/windows/virtio-step-5.png",
"caption": "Laden Sie den VirtIO-Netzwerktreiber, um das Internet während der Installation zu aktivieren"
}
],
"tipTitle": "Nach der Installation: virtio-win-guest-tools.exe ausführen",
"tipBody": "Öffnen Sie nach der Windows-Installation die VirtIO-ISO im Datei-Explorer und starten Sie <code>virtio-win-guest-tools.exe</code>. Es installiert die übrigen Treiber für Netzwerk, Anzeige, Eingabe und Ballooning sowie den QEMU Guest Agent in einem Durchgang."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/utils/UUp-Dump-ISO-Creator",
"label": "UUP-Dump-ISO-Erstellung",
"tail": " — aktuelle Windows-Installations-ISOs auf dem Proxmox-Host erstellen."
},
{
"href": "/docs/disk-manager/import-disk-image-vm",
"label": "Disk-Image in VM importieren",
"tail": " — ein vorhandenes Windows-Disk-Image (.vmdk, .qcow2, .img oder .raw) in eine bestehende VM importieren; .vhdx vorher in ein unterstütztes Format konvertieren."
},
{
"href": "/docs/hardware/gpu-vm-passthrough",
"label": "GPU zu VM hinzufügen (Passthrough)",
"tail": "- für Windows VMs mit hardwarebeschleunigtem GPU."
},
{
"href": "/docs/help-info/vm-ct-commands",
"label": "VM und CT Verwaltungsbefehle",
"tail": "— qm CLI Referenz."
},
{
"href": "/docs/create-vm",
"label": "Übersicht zur VM-Erstellung",
"tail": "."
}
]
}
}
@@ -0,0 +1,128 @@
{
"meta": {
"title": "Hinzufügen von Controller oder NVMe zu VM | ProxMenux Dokumentation",
"description": "PCI-Passthrough eines Speichercontrollers (SATA-/SAS-HBA) oder NVMe-Geräts an eine Proxmox-VM mit ProxMenux. Das Werkzeug aktiviert IOMMU, erkennt Konflikte und richtet die Zuweisung mit qm set --hostpci ein.",
"ogTitle": "Hinzufügen von Controller oder NVMe zu VM | ProxMenux Dokumentation",
"ogDescription": "Weisen Sie einer Proxmox-VM einen vollständigen SATA-/SAS-HBA oder ein NVMe-Gerät zu. ProxMenux übernimmt IOMMU, Konflikterkennung und die hostpci-Zuweisung."
},
"header": {
"title": "Controller oder NVMe zu VM hinzufügen",
"description": "Weisen Sie einer Proxmox-VM einen vollständigen SATA-/SAS-Host-Bus-Adapter (HBA) oder ein NVMe-Gerät per PCI-Passthrough zu. ProxMenux prüft IOMMU und aktiviert es mit Ihrer Zustimmung, ermittelt geeignete Geräte, schließt Konflikte aus und trägt die Zuweisung mit qm set --hostpci ein.",
"section": "Datenträgerverwaltung · VM"
},
"intro": {
"title": "Was dies tut (und nicht tut)",
"body": "Dies ist <strong>Passthrough auf Geräteebene</strong>: Die PCIe-Karte wird der Kontrolle des Host-Kernels entzogen und an <code>vfio-pci</code> gebunden. Die VM sieht den Controller selbst statt einzeln durchgereichter Laufwerke und lädt ihren eigenen Treiber für dieses Modell. Alle am Controller angeschlossenen Laufwerke folgen automatisch, mit nativen SMART-Daten, vollständigen Firmware-Funktionen und ohne Proxmox-Zwischenschicht."
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Der Fluss hat zwei Phasen mit klarer Trennung zwischen \"Sammeln von Informationen, Überprüfen von IOMMU und Auflisten von Kandidaten\" und \"Tatsächliches Anbringen des PCI-Geräts\". Bis zur endgültigen Bestätigung wird nichts an die VM-Konfiguration geschrieben."
},
"iommu": {
"heading": "IOMMU-Gruppen - warum die gesamte Karte auf einmal geht",
"body": "Die Isolationsgrenze für PCI-Passthrough ist die <strong>IOMMU-Gruppe</strong>, die kleinste von der IOMMU der CPU isolierbare Einheit. Geräte derselben Gruppe lassen sich nicht voneinander isolieren. Teilt ein SATA-Controller die Gruppe mit einem USB-Controller, muss für SATA-Passthrough möglicherweise auch USB vom Host gelöst werden, oder Passthrough ist nicht möglich. Dabei werden nicht automatisch alle Geräte der Gruppe der VM zugewiesen.",
"outro": "ProxMenux zeigt die IOMMU-Gruppe neben jedem Gerät und warnt Sie, wenn eine Gruppe mehr als nur den gewünschten Controller trägt. Sie können weiterhin fortfahren, wenn die zusätzlichen Geräte in der Gruppe akzeptabel sind (z. B. alle Festplattencontroller) oder zurückgehen, wenn dies nicht der Fall ist."
},
"prereqs": {
"heading": "Voraussetzungen",
"items": [
"<strong>CPU und Mainboard unterstützen</strong> VT-d (Intel) oder AMD-Vi, und die Funktion ist in der Firmware (BIOS/UEFI) aktiviert. ProxMenux kann die Kernelkonfiguration aktivieren, aber keine Firmware-Einstellung umschalten.",
"Die Ziel-VM ist vor dem Anschließen von PCI-Geräten <strong>ausgeschaltet</strong>.",
"Der Controller/NVMe <strong> ist nicht derjenige, der das Proxmox Root-Dateisystem</strong> hält. Das Skript verbirgt alles, was vom Host verwendet wird.",
"Das Gastbetriebssystem hat Treiber für das Controllermodell. Linux unterstützt nahezu jeden HBA ab Werk; unter Windows muss der Herstellertreiber <em>vor</em> dem Start mit angeschlossenem Controller installiert sein."
],
"warnTitle": "Live Migration ist nicht möglich",
"warnBody": "Ein VM mit PCI-Durchgang ist an den Knoten gebunden, der die Karte physisch hält. Live-Migration über Knoten wird fehlschlagen. Planen Sie Backups / Replikation entsprechend."
},
"steps": {
"heading": "Schritt für Schritt",
"stepLabel": "Schritt",
"list": [
{
"title": "Ziel-VM auswählen",
"bodyRich": "ProxMenux liest <code>qm list</code> und zeigt alle VMs an. Wählen Sie die VM, die den Controller erhalten soll.",
"img": "/disk/nvme-passthrough/vm-selection.png",
"alt": "VM Auswahldialog",
"caption": "VM Auswahldialog"
},
{
"title": "IOMMU-Prüfung",
"bodyRich": "Wenn IOMMU auf der Kernel-Cmdline nicht aktiviert ist, bietet ProxMenux an, sie zu aktivieren. Es bearbeitet <code>/etc/kernel/cmdline</code> (für systemd-Boot) oder <code>/etc/default/grub</code> (für GRUB) und fügt den richtigen Parameter für Ihren CPU hinzu:",
"items": [
"<code>intel_iommu=on</code> für Intel CPUs.",
"<code>amd_iommu=on</code> für AMD CPUs."
],
"outro": "Nach dieser Änderung ist ein Neustart erforderlich. Das Skript bietet einen Neustart jetzt oder später an; Passthrough kann erst fortgesetzt werden, wenn die neue Kernel-Kommandozeile aktiv ist.",
"img": "/disk/nvme-passthrough/iommu-warning.png",
"alt": "Dialog „IOMMU erforderlich“",
"caption": "IOMMU Erforderlich — Angebot zum Aktivieren und Neustarten"
},
{
"title": "Geräteaufzählung",
"body": "ProxMenux listet jeden Speichercontroller (SATA / SAS HBA) und jedes NVMe-Gerät auf dem PCI-Bus auf. Für jedes Gerät zeigt es:",
"items": [
"PCI-Adresse (<code>00:17.0</code>, <code>01:00.0</code>, ...).",
"Hersteller- und Gerätebeschreibung.",
"IOMMU-Gruppe - und eine ⚠ Warnung, wenn die Gruppe mit anderen, nicht verwandten Geräten geteilt wird.",
"Die aktuell am Controller angeschlossenen Laufwerke, damit Sie wissen, welche zur VM wechseln."
],
"img": "/disk/nvme-passthrough/device-list.png",
"alt": "Controller / NVMe Geräteaufzählung",
"caption": "Controller / NVMe Geräteaufzählung mit IOMMU Gruppeninfo"
},
{
"title": "Konflikterkennung",
"bodyRich": "Das Skript sperrt eindeutig unsichere Geräte: bereits einer anderen VM über <code>hostpci</code> zugewiesene Geräte, vom Host verwendete Geräte wie den Root-Laufwerkscontroller sowie Geräte in IOMMU-Gruppen, deren andere Mitglieder nicht sicher erkannt werden können. Geeignete Geräte stehen zur Auswahl.",
"img": "/disk/nvme-passthrough/conflict-warning.png",
"alt": "Konflikterkennungswarnung",
"caption": "Konflikterkennung: Gerät mit Angabe des Grundes gesperrt"
},
{
"title": "Zuweisen und abschließen",
"bodyRich": "Für jedes gewählte Gerät führt ProxMenux <code>qm set &lt;VMID&gt; --hostpciN &lt;pci-addr&gt;,pcie=1</code> aus und verwendet den nächsten freien <code>hostpci</code>-Slot. Wurde IOMMU in dieser Sitzung aktiviert, wird vor dem Start der VM an den erforderlichen Neustart erinnert.",
"img": "/disk/nvme-passthrough/assignment.png",
"alt": "Zusammenfassung der Zuweisung",
"caption": "Zusammenfassung der Zuweisung: belegte hostpciN-Slots und zugewiesene PCI-Adressen"
}
]
},
"manual": {
"heading": "Manuelles Äquivalent"
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noGroupsTitle": "IOMMU aktiviert, aber keine Gruppen unter /sys/kernel/iommu_groups/",
"noGroupsBody": "Ein Neustart ist erforderlich, damit die Kernel-Cmdline wirksam wird. Wenn die Gruppen nach dem Neustart immer noch fehlen, ist VT-d / AMD-Vi wahrscheinlich in der Firmware deaktiviert - überprüfen Sie das BIOS / UEFI-Setup.",
"busyTitle": "VM startet nicht: \"hostpciN: device busy\"",
"busyBody": "Ein anderer Prozess hält das PCI-Gerät noch belegt. Häufige Ursachen sind eine abgestürzte VM, die es nicht freigegeben hat, oder der Host-Kernel, der es beim letzten Start wieder übernommen hat. Prüfen Sie mit <code>lspci -nnk -s &lt;addr&gt;</code> den gebundenen Treiber; es sollte <code>vfio-pci</code> sein. Ein vollständiger Neustart des Hosts behebt dies meist.",
"noDisksTitle": "Gast sieht den Controller, aber nicht die Festplatten",
"noDisksBody": "Im Gast fehlt der Treiber für das Controllermodell. Unter Linux tritt dies selten auf, unter Windows hingegen schon. Installieren Sie den Herstellertreiber, etwa von LSI/Broadcom für ältere SAS-HBAs, solange die Karte nicht zugewiesen ist, und starten Sie dann mit zugewiesener Karte neu.",
"sharedTitle": "Die IOMMU-Gruppe enthält ein nicht zugehöriges Gerät",
"sharedBody": "Möglichkeiten: (a) die Karte in einen anderen PCIe-Slot setzen, um ihre Gruppe zu ändern, (b) <em>ACS override</em> im Kernel aktivieren, um Gruppen aufzuteilen (Sicherheitskompromiss, vor der Anwendung recherchieren), oder (c) eine andere Karte in einer besser isolierten Gruppe wählen."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager/import-disk-vm",
"label": "Datenträger in VM importieren",
"tail": "Alternatives Modell: Befestigen Sie eine physische Festplatte über Proxmox ohne vollständigen PCIe-Durchgang."
},
{
"href": "/docs/hardware/gpu-vm-passthrough",
"label": "GPU zu VM hinzufügen (Passthrough)",
"tail": "- gleiche IOMMU / VFIO-Konzepte, die auf einen GPU angewendet wurden."
},
{
"href": "/docs/help-info/gpu-commands",
"label": "GPU Durchgangsbefehle",
"tail": "IOMMU-Verifizierungsbefehle gelten auch für den Controller / NVMe-Durchgang."
},
{
"href": "/docs/disk-manager",
"label": "Übersicht Disk Manager",
"tail": "."
}
]
}
}
@@ -0,0 +1,142 @@
{
"meta": {
"title": "Physischen Datenträger formatieren oder löschen | ProxMenux-Dokumentation",
"description": "Physische Datenträger auf Proxmox VE mit ProxMenux löschen und formatieren. Vier Betriebsarten, strenge Sicherheitsfilter gegen Systemlaufwerke, eingehängte oder verwendete Laufwerke und doppelte Bestätigung mit Eingabe des vollständigen Pfads.",
"ogTitle": "Physischen Datenträger formatieren oder löschen | ProxMenux-Dokumentation",
"ogDescription": "Physische Datenträger auf Proxmox löschen oder formatieren. Sicherheitsfilter, vier Betriebsarten und doppelte Bestätigung."
},
"header": {
"title": "Physischen Datenträger formatieren / löschen",
"description": "Wischen oder formatieren Sie sicher eine physische Festplatte auf dem Proxmox-Host. ProxMenux zeigt nur Festplatten an, die völlig frei sind (keine Systemnutzung, keine Gastreferenz, keine Mounts) und erzwingt eine doppelte Bestätigung - ja / nein plus Eingabe des vollständigen Festplattenpfads -, bevor Daten zerstört werden.",
"section": "Disk Manager · Dienstprogramme"
},
"danger": {
"title": "Zerstörendes Werkzeug",
"body": "Jede Operation hier schreibt auf die Festplatte. Es gibt kein Rückgängigmachen. ProxMenux wendet strenge Sicherheitsfilter und Bestätigungen an, aber die Verantwortung für die Auswahl der richtigen Festplatte liegt bei Ihnen. Lesen Sie den Festplattenpfad zweimal laut aus, bevor Sie ihn eingeben."
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Der Ablauf hat zwei Phasen mit einer dreifachen Sicherheitsprüfung dazwischen. In Phase 1 werden Laufwerksauswahl, Betriebsart und Dateisystemdetails erfasst. Geschrieben wird erst, wenn Phase 2 unmittelbar vor der Ausführung eine abschließende erneute Prüfung bestanden hat."
},
"visibility": {
"heading": "Sichtbarkeitsregeln",
"intro": "Bevor das Menü überhaupt erscheint, filtert ProxMenux die Festplattenliste. Es werden nur Kandidaten gezeigt, die nachweislich sicher sind:",
"items": [
"<strong>Angezeigt</strong> werden Laufwerke, die <em>nicht</em> vom Host genutzt werden (Root-Pool, Swap, eingehängte Dateisysteme, aktives ZFS/LVM/RAID) und <em>nicht</em> in einer VM-/LXC-Konfiguration referenziert sind, unabhängig vom Betriebszustand des Gasts.",
"<strong>Ausgeblendet</strong>: Host- und Systemlaufwerke.",
"<strong>Ausgeblendet</strong>: in VM-/LXC-Konfigurationen referenzierte Laufwerke."
],
"safetyTitle": "Sicherheit bei Bestätigung und Ausführung",
"safetyItems": [
"Bei Laufwerken mit veralteten oder aktiven Metadaten erscheinen detaillierte Warnungen <em>vor</em> der Bestätigung.",
"Von einer <strong>laufenden</strong> VM genutzte Laufwerke werden bei der Bestätigung <strong>vollständig gesperrt</strong>.",
"Laufwerke mit eingehängten Partitionen werden bei der Ausführung <strong>vollständig gesperrt</strong>. Unmittelbar vor dem Schreiben erfolgt eine neue Prüfung.",
"Zwei Bestätigungen sind immer erforderlich: ein <em>Ja/Nein</em>-Dialog und die exakte Eingabe des vollständigen Laufwerkspfads."
]
},
"modes": {
"heading": "Betriebsarten",
"intro": "Nachdem Sie eine Festplatte ausgewählt haben, wählen Sie einen von vier Modi. Sie unterscheiden sich darin, was sie zerstören und was sie zurücklassen.",
"headerMode": "Modus",
"headerPart": "Partitionstabelle",
"headerData": "Daten",
"headerUseCase": "Anwendungsfall",
"rows": [
{
"mode": "1. Alles löschen",
"part": "Zerstört",
"data": "Signaturen gelöscht",
"useCase": "Entfernt die Partitionstabelle sowie Dateisystem- und RAID-Metadaten, überschreibt die ersten und letzten 16 MiB mit Nullen und führt bei Laufwerken mit Discard-Unterstützung ein TRIM über den gesamten Datenträger aus. Die übrigen Daten werden nicht überschrieben und können auf HDDs noch wiederherstellbar sein; dies ist kein sicheres Löschen."
},
{
"mode": "2. FS-Etiketten entfernen",
"part": "Erhalten",
"data": "Erhalten",
"useCase": "Entfernt alte ZFS-/LVM-/RAID-Signaturen, damit das Laufwerk nicht mehr automatisch eingebunden wird. Nutzdaten werden nicht flächig überschrieben, können durch das Entfernen der Signaturen aber unzugänglich werden."
},
{
"mode": "3. Daten mit Nullen überschreiben",
"part": "Erhalten",
"data": "Zerstört (mit Nullen überschrieben)",
"useCase": "Bestehende Partitionen mit Nullen überschreiben und die Partitionstabelle erhalten. Nicht zugewiesener Speicher und SSD-Reservebereiche sind nicht erfasst; dies garantiert keine vollständige Gerätesanitisierung."
},
{
"mode": "4. Vollformat",
"part": "Neue GPT",
"data": "Zerstört",
"useCase": "Einsatzbereites Laufwerk mit einer neuen Partition und einem neuen Dateisystem."
}
],
"fullFormatOutro": "<strong>Vollständiges Formatieren</strong> führt zu zwei weiteren Dialogen:",
"fullFormatItems": [
"<strong>Dateisystem</strong>: <code>ext4</code>, <code>xfs</code>, <code>exfat</code> (portabel) oder <code>btrfs</code>. Fehlen Werkzeuge wie <code>mkfs.btrfs</code>, wird mit einer klaren Meldung abgebrochen.",
"<strong>Label</strong> — optionales Dateisystem-Etikett zur Identifizierung."
]
},
"steps": {
"heading": "Schritt für Schritt",
"stepLabel": "Schritt",
"list": [
{
"title": "Freies Laufwerk wählen",
"body": "ProxMenux listet jede Festplatte auf, die die oben genannten Sichtbarkeitsfilter passiert. Festplatten mit ⚠-Markern tragen veraltete Metadaten und werden mit den Details angezeigt, damit Sie wissen, was Sie überschreiben möchten."
},
{
"title": "Wählen Sie einen Betriebsmodus",
"bodyRich": "Wählen Sie gemäß obiger Tabelle <strong>Alles löschen</strong>, <strong>FS-Etiketten entfernen</strong>, <strong>Daten mit Nullen überschreiben</strong> oder <strong>Vollständiges Formatieren</strong>."
},
{
"title": "(Nur Vollformat) Dateisystem und Label auswählen",
"body": "ext4 / xfs / exfat / btrfs, plus ein optionales Etikett."
},
{
"title": "Zweimal bestätigen",
"bodyRich": "ProxMenux zeigt eine Zusammenfassung der geplanten Aktion. Sie bestätigen im Ja/Nein-Dialog und <strong>geben den vollständigen Laufwerkspfad</strong> exakt wie angezeigt ein, etwa <code>/dev/sdc</code>. Jede andere Eingabe bricht ab."
},
{
"title": "Revalidierung und Ausführung",
"body": "Kurz vor dem Schreiben überprüft das Skript den Festplattenzustand erneut. Wurde zwischenzeitlich eine Partition gemountet oder ein VM gestartet, wird die Ausführung abgebrochen. Ansonsten läuft die gewählte Operation und eine Zusammenfassung wird am Ende gedruckt."
}
]
},
"manual": {
"heading": "Manuelle Äquivalente",
"body": "Wenn Sie es vorziehen, die entsprechenden Befehle von Hand auszuführen:"
},
"troubleshoot": {
"notListedTitle": "Disk nicht im Menü aufgeführt",
"notListedBody": "Das Laufwerk wurde aus Sicherheitsgründen ausgeblendet. Häufige Gründe: Es ist eingehängt, auch unter <code>/mnt/tmp</code>, aktives Mitglied von ZFS/LVM/RAID, in einer VM-/LXC-Konfiguration referenziert oder das Proxmox-Root-Laufwerk. Prüfen Sie auf dem Host <code>lsblk -f</code> und <code>cat /proc/mdstat</code>, um den Grund zu ermitteln.",
"busyTitle": "\"Disk may be busy\" / Unmount fehlgeschlagen",
"busyBody": "Etwas hält immer noch eine offene Datei auf einer Partition dieser Festplatte - meistens ein Container oder eine Shell, deren cwd sich in einem Mountpoint befindet. Identifizieren Sie es mit <code>lsof | grep /dev/sdX</code> oder <code>fuser -vm /dev/sdX1</code>, stoppen Sie es und führen Sie das Tool erneut aus."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager/smart-disk-test",
"label": "SMART-Festplattenstatus und -test",
"tail": "Überprüfen Sie eine Festplatte vor / nach dem Wischen, um zu bestätigen, dass sie gesund ist."
},
{
"href": "/docs/disk-manager/import-disk-vm",
"label": "Datenträger in VM importieren",
"tail": "Übergeben Sie eine frisch formatierte Festplatte an eine VM."
},
{
"href": "/docs/storage-share/host-local-disk",
"label": "Lokale Festplatte als Proxmox-Speicher hinzufügen",
"tail": "Registrieren Sie eine gelöschte Festplatte als Proxmox-Speicherpool."
},
{
"href": "/docs/help-info/storage-commands",
"label": "Speicher- und Festplattenbefehle",
"tail": " — Referenz für lsblk, blkid und parted."
},
{
"href": "/docs/disk-manager",
"label": "Übersicht Disk Manager",
"tail": "."
}
]
}
}
@@ -0,0 +1,110 @@
{
"meta": {
"title": "Datenträgerbild in VM importieren | ProxMenux Dokumentation",
"description": "Importieren Sie eine Disk-Image-Datei (.img / .qcow2 / .vmdk / .raw) mit ProxMenux in ein vorhandenes Proxmox VM. Per-Image-Schnittstelle, SSD-Emulation und bootfähiges Flag, mit qm importdisk unter der Haube.",
"ogTitle": "Datenträgerbild in VM importieren | ProxMenux Dokumentation",
"ogDescription": "Importieren Sie .img / .qcow2 / .vmdk / .raw Disk-Images in einen vorhandenen VM mit ProxMenux. Verwendet qm importdisk unter der Haube."
},
"header": {
"title": "Disk-Image in VM importieren",
"description": "Importieren Sie eine Disk-Image-Datei (.img, .qcow2, .vmdk oder .raw) in eine vorhandene Proxmox VM. ProxMenux sammelt jede Entscheidung im Voraus - Ziel VM, Proxmox-Speicher, Quellverzeichnis, Schnittstelle, SSD-Emulation, Boot-Order - und führt dann qm importdisk für jedes ausgewählte Image aus.",
"section": "Datenträgerverwaltung · VM"
},
"intro": {
"title": "Was das macht",
"body": "Anders als <em>Datenträger in VM importieren</em>, das ein physisches Laufwerk direkt zuweist, verwendet dieser Ablauf eine <strong>Datei</strong> auf dem Host, etwa einen Export eines anderen Hypervisors, ein heruntergeladenes Cloud-Image oder ein aus einer Sicherung extrahiertes Image. Sie wird in ein Proxmox-VM-Laufwerk auf dem gewählten Speicher umgewandelt. Die Originaldatei bleibt erhalten: ProxMenux kopiert sie, statt sie zu verschieben."
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Der Ablauf hat zwei Phasen. Phase 1 erfasst über Dialoge vorab alle Entscheidungen: VM, Speicher, Quellverzeichnis, Images und Optionen je Image. Phase 2 führt <code>qm importdisk</code> für jedes ausgewählte Image aus. Vor Beginn von Phase 2 wird weder etwas kopiert noch die VM-Konfiguration verändert."
},
"prereqs": {
"heading": "Voraussetzungen",
"items": [
"Mindestens eine VM ist auf dem Host definiert. Die Ziel-VM sollte <strong>ausgeschaltet</strong> sein.",
"Mindestens eine Disk-Image-Datei in einem unterstützten Format liegt im Quellverzeichnis. Unterstützt werden <code>.img</code>, <code>.qcow2</code>, <code>.vmdk</code> und <code>.raw</code>.",
"Genug freien Speicherplatz auf dem Ziel-Proxmox-Speicher, um jede importierte Festplatte zu halten.",
"ProxMenux sucht standardmäßig nach Images in <code>/var/lib/vz/template/iso</code>. Sie können es auf jedes andere Verzeichnis auf dem Host verweisen, wenn es gefragt wird."
]
},
"steps": {
"heading": "Schritt für Schritt",
"stepLabel": "Schritt",
"list": [
{
"title": "Ziel-VM auswählen",
"bodyRich": "ProxMenux liest <code>qm list</code> und zeigt jeden VM an. Wählen Sie diejenige aus, die die importierten Festplatten erhält."
},
{
"title": "Wählen Sie den Proxmox-Speicher",
"bodyRich": "Die Liste enthält jeden Speicher, für den der Inhaltstyp <code>images</code> aktiviert ist. Wenn es nur einen Kandidaten gibt, wird er automatisch ausgewählt und der Dialog wird übersprungen."
},
{
"title": "Wählen Sie das Quellverzeichnis",
"bodyRich": "Wählen Sie das Standardverzeichnis (<code>/var/lib/vz/template/iso</code>) oder geben Sie einen benutzerdefinierten Pfad ein - in der Regel, wo Sie das Image heruntergeladen / hochgeladen haben. Das Skript lehnt Pfade ab, die nicht existieren."
},
{
"title": "Wählen Sie ein oder mehrere Images",
"bodyRich": "Das Verzeichnis wird nach <code>.img</code> / <code>.qcow2</code> / <code>.vmdk</code> / <code>.raw</code> Dateien gescannt. Sie können mehrere gleichzeitig auswählen; jede wird im nächsten Schritt die Per-Bild-Optionen durchlaufen."
},
{
"title": "Per-Image Optionen",
"intro": "Für jedes ausgewählte Image fragt ProxMenux:",
"items": [
"<strong>Interface</strong> — <code>scsi</code> (Standard), <code>virtio</code>, <code>sata</code> oder <code>ide</code>. Passt dazu, wie der Gast die Festplatte sehen wird.",
"<strong>SSD-Emulation</strong>: nur für Nicht-VirtIO-Schnittstellen verfügbar. Fügt <code>ssd=1</code> hinzu, damit der Gast das Laufwerk als SSD erkennt. Discard/TRIM muss separat konfiguriert werden.",
"<strong>Bootfähig</strong>: Bei Ja nimmt ProxMenux das Laufwerk als primäres Startgerät in die Bootreihenfolge der VM auf."
]
},
{
"title": "Importieren und zuweisen",
"bodyRich": "ProxMenux führt <code>qm importdisk</code> für jedes Image aus (Konvertierung des Formats im laufenden Betrieb, wo dies erforderlich ist), fügt die resultierende Festplatte mit den von Ihnen gewählten Optionen an den nächsten freien Slot (<code>scsiN</code>, <code>sataN</code>, ...) an und aktualisiert - wenn Sie eine Festplatte als bootfähig markiert haben - die Boot-Order. Fortschritt zeigt sich im Terminal."
}
]
},
"manual": {
"heading": "Manuelles Äquivalent",
"body": "Ein einzelnes Image lässt sich mit drei <code>qm</code>-Befehlen importieren:",
"warnTitle": "Konvertierung des Disk-Image-Formats",
"warnBody": "Wenn der Zielspeicher das Quellformat nativ nicht halten kann (z. B. LVM-Speicher <code>.qcow2</code>), konvertiert <code>qm importdisk</code> das Image transparent. Dies kann mehrere Minuten für Multi-GB-Bilder dauern; planen Sie entsprechend und unterbrechen Sie das Skript nicht."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noImagesTitle": "\"Keine kompatiblen Disk Images gefunden\"",
"noImagesBody": "Das Skript fand keine Datei mit <code>.img</code>, <code>.qcow2</code>, <code>.vmdk</code> oder <code>.raw</code>. Prüfen Sie die Erweiterung einschließlich Groß-/Kleinschreibung, ob die Datei direkt im gewählten Verzeichnis liegt (Unterverzeichnisse werden nicht durchsucht) und ob root sie lesen darf.",
"slowTitle": "Import ist langsam",
"slowBody": "Konvertierungen zwischen VMDK, QCOW2 und raw können durch CPU und E/A begrenzt sein. Die Importgeschwindigkeit hängt von Quelllesezugriffen, Zielschreibzugriffen und nötiger Dekomprimierung ab. Bevorzugen Sie nach Möglichkeit raw- oder qcow2-Quellen.",
"uefiTitle": "Importiertes Laufwerk startet in der UEFI-Shell",
"uefiBody": "Das Image wurde für Legacy (SeaBIOS) gebaut, aber der VM verwendet OVMF (oder umgekehrt). Wechseln Sie entweder den VM BIOS in Proxmox, um das Image abzugleichen, oder bauen Sie das Image vor dem Importieren im richtigen Modus neu auf."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager/import-disk-vm",
"label": "Datenträger in VM importieren",
"tail": " — derselbe Ablauf für physische Laufwerke (Passthrough)."
},
{
"href": "/docs/utils/import-vm",
"label": "VM von OVA / OVF importieren",
"tail": "- wenn Sie ein vollständiges VM-Paket haben, nicht nur ein Festplattenimage."
},
{
"href": "/docs/utils/UUp-Dump-ISO-Creator",
"label": "UUP-Dump-ISO-Erstellung",
"tail": "- Generieren Sie eine Windows ISO, wenn Sie eine für eine neue Installation benötigen."
},
{
"href": "/docs/help-info/storage-commands",
"label": "Speicher- und Festplattenbefehle",
"tail": " — Referenz für qm importdisk und qemu-img convert."
},
{
"href": "/docs/disk-manager",
"label": "Übersicht Disk Manager",
"tail": "."
}
]
}
}
@@ -0,0 +1,115 @@
{
"meta": {
"title": "Datenträger zu LXC importieren | ProxMenux Dokumentation",
"description": "Befestigen Sie eine physische Festplatte an einen vorhandenen LXC-Container auf Proxmox VE mit ProxMenux. Behandelt Dateisystemerkennung / -formatierung, Einhängepunkt, unprivilegierte → privilegierte Konvertierung und persistente Gerätepfade.",
"ogTitle": "Datenträger zu LXC importieren | ProxMenux Dokumentation",
"ogDescription": "Befestigen Sie eine physische Festplatte an einen vorhandenen LXC-Container. Behandelt Dateisystem, Mount Point und unprivilegierte → privilegierte Konvertierung."
},
"header": {
"title": "Datenträger in LXC importieren",
"description": "Fügen Sie eine physische Festplatte an einen vorhandenen LXC-Container auf dem Proxmox-Host an. ProxMenux erkennt freie Festplatten, formatiert sie optional mit einem unterstützten Dateisystem und verkabelt die Partition mit persistenten Gerätepfaden an einen Einhängepunkt im Container.",
"section": "Datenträgerverwaltung · LXC"
},
"intro": {
"title": "VM-Passthrough und LXC-Passthrough",
"body": "LXC-Passthrough stellt hier <strong>kein rohes Blockgerät</strong> bereit. Der Container erhält einen <em>Einhängepunkt</em>, also ein Verzeichnis auf der gewählten Host-Partition. Anders als bei einer VM nutzt der Gast den Host-Kernel; das Dateisystem (ext4/xfs/btrfs) wird daher vom Proxmox-Host gelesen, verwaltet und dem Container zugänglich gemacht."
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Der Fluss hat zwei Phasen mit klarer Trennung zwischen \"Sammeln von Informationen und Entscheidungen\" und \"tatsächliches Ändern der Containerkonfiguration\". Bis zur endgültigen Bestätigung wird nichts in den CT eingebaut.",
"summary": "ProxMenux blendet das Root-Laufwerk, eingehängte Laufwerke und bereits in VM-/LXC-Konfigurationen referenzierte Laufwerke aus. Aktive ZFS-/LVM-/RAID-Mitglieder werden ausgeblendet; alte Signaturen werden mit ⚠ markiert, damit Sie sie vor dem Formatieren löschen können."
},
"prereqs": {
"heading": "Voraussetzungen",
"items": [
"Mindestens ein LXC-Container, der auf dem Host definiert ist.",
"Der Container ist <strong>privilegiert</strong>, oder Sie nehmen das Konvertierungsangebot des Skripts an.",
"Mindestens eine physische Festplatte, die vom Host oder einem anderen Gast nicht verwendet wird."
],
"warnTitle": "Privilegierter Container erforderlich",
"warnBody": "Dieses Skript benötigt für die direkte Laufwerkszuweisung einen <strong>privilegierten</strong> Container. Bei <code>unprivileged: 1</code> bietet es an, <code>/etc/pve/lxc/&lt;CTID&gt;.conf</code> direkt zu ändern. Das ändert das Sicherheitsmodell, ordnet vorhandene Dateieigentümer aber nicht neu zu. Sichern Sie den Container und prüfen Sie die Eigentümer vor der Zustimmung, oder erstellen Sie ihn privilegiert neu."
},
"steps": {
"heading": "Schritt für Schritt",
"stepLabel": "Schritt",
"list": [
{
"title": "Wählen Sie den Zielcontainer",
"img": "/disk/select-container.png",
"caption": "Auswahlmenü für Container",
"bodyRich": "ProxMenux listet jeden LXC-Container auf dem Host auf (<code>pct list</code>). Wählen Sie diejenige, die die Festplatte erhalten wird. Wenn der Container nicht privilegiert ist, wird Ihnen angeboten, ihn jetzt umzuwandeln."
},
{
"title": "Wählen Sie die physische Festplatte",
"img": "/disk/disk-selection-ct.png",
"caption": "Freie Festplatten auf dem Host erkannt (mit ⚠ Labels für veraltete Metadaten)",
"bodyRich": "Nur sichere Kandidaten werden angezeigt. Anders als bei VMs weist dieses Skript <strong>ein Laufwerk pro Durchlauf</strong> zu. Führen Sie es für jedes weitere Laufwerk erneut aus."
},
{
"title": "Formatieren oder wiederverwenden",
"intro": "Das Skript überprüft die Festplatte:",
"items": [
"Wenn es bereits ein unterstütztes Dateisystem (ext4 / xfs / btrfs) trägt, können Sie es so wiederverwenden, wie es ist (bestehende Dateien bleiben erhalten).",
"Wenn es kein unterstütztes Dateisystem hat, wird Ihnen angeboten, es zu formatieren. Wählen Sie ext4 / xfs / btrfs."
]
},
{
"title": "Wählen Sie den Mount Point",
"bodyRich": "Geben Sie den Pfad ein, unter dem der Container das Laufwerk sehen soll, etwa <code>/mnt/data</code> oder <code>/mnt/disk_passthrough</code>. Dies ist der Pfad <em>innerhalb</em> des Containers; der Host sieht die Partition bereits unter <code>/dev/disk/by-id/…</code>."
},
{
"title": "Zuweisen und prüfen",
"img": "/disk/assignment-ct.png",
"caption": "Zuordnung zu CT",
"bodyRich": "ProxMenux fügt der Containerkonfiguration einen neuen <code>mpN:</code>-Eintrag hinzu, überspringt belegte Indizes und liest die Konfiguration zur Bestätigung erneut. Bei laufendem Container wird die Einhängung sofort angewendet, andernfalls beim nächsten Start.",
"extraImg": "/disk/result-point.png",
"extraAlt": "Mount Point erfolgreich erstellt",
"extraCaption": "Einhängepunkt erstellt und geprüft"
}
]
},
"manual": {
"heading": "Manuelles Äquivalent",
"body": "Das Skript wickelt <code>pct set</code> ab. Ein direkter Aufruf für eine einzelne Festplatte sieht so aus:"
},
"important": {
"heading": "Wichtige Überlegungen",
"items": [
"<strong>Ein Laufwerk pro Durchlauf</strong>. Führen Sie das Skript für jedes weitere Laufwerk erneut aus.",
"Hängen Sie <strong>nicht</strong> dieselbe Partition an mehrere Container an, die sie gleichzeitig bereitstellen könnten – gleichzeitige Schreibvorgänge beschädigen das Dateisystem.",
"<strong>Alte Metadaten</strong> (RAID / ZFS / LVM-Signaturen) müssen manuell gelöscht werden, bevor Sie das Skript formatieren lassen, andernfalls weigert sich <code>mkfs</code> zu überschreiben. Verwenden Sie dafür das <wipeLink>Format / Wipe Physical Disk</wipeLink> Tool."
]
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"unprivTitle": "\"Kann nicht mit einem unprivilegierten Container fortfahren\"",
"unprivBody": "Sie haben die Konvertierung abgelehnt; das Skript wurde daher ohne Änderungen beendet. Um fortzufahren, führen Sie es erneut aus und stimmen zu: Das Skript stoppt den Container, sichert seine Konfiguration in <code>/etc/pve/lxc/&lt;CTID&gt;.conf.bak</code> und ersetzt <code>unprivileged: 1</code> durch <code>unprivileged: 0</code>. Diese Änderung allein wandelt die UID-/GID-Eigentümer vorhandener Dateien nicht um; sichern Sie den Container daher vorher und passen Sie die Eigentümer an. Alternativ stellen Sie ihn privilegiert wieder her oder erstellen ihn neu.",
"permsTitle": "Berechtigungen im Container sind falsch",
"permsBody": "Beim Einhängen in einen privilegierten Container bleiben vorhandene Dateieigentümer erhalten; ein neues Dateisystem gehört häufig <code>root:root</code>. Läuft der Dienst unter einem anderen Benutzer, etwa <code>www-data</code> für Nextcloud, prüfen Sie dessen UID/GID und passen Sie die nötigen Dateien mit <code>chown</code>/<code>chmod</code> an. Dies verändert auch den zugrunde liegenden Datenträger."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager/import-disk-vm",
"label": "Datenträger in VM importieren",
"tail": " — entsprechender Ablauf für VMs."
},
{
"href": "/docs/storage-share/lxc-mount-points",
"label": "LXC-Einhängepunkte (Host ↔ CT)",
"tail": "- Hostverzeichnisse mit einem CT teilen, anstatt eine ganze Festplatte anzuhängen."
},
{
"href": "/docs/help-info/vm-ct-commands",
"label": "VM und CT Verwaltungsbefehle",
"tail": "- pct config / push / pull Referenz."
},
{
"href": "/docs/disk-manager",
"label": "Übersicht Disk Manager",
"tail": "."
}
]
}
}
@@ -0,0 +1,113 @@
{
"meta": {
"title": "Datenträger zu VM importieren | ProxMenux Dokumentation",
"description": "Befestigen Sie eine physische Festplatte an eine vorhandene Proxmox VM mit ProxMenux. Sichere Festplattenerkennung (ausgenommen System, montiert, in Gebrauch, ZFS/RAID/LVM), persistente /dev/disk/by-id-Pfade und SATA / SCSI / VirtIO / IDE-Schnittstellen.",
"ogTitle": "Datenträger zu VM importieren | ProxMenux Dokumentation",
"ogDescription": "Befestigen Sie eine physische Festplatte an eine vorhandene Proxmox VM. Verwendet persistente /dev/disk/by-id-Pfade und unterstützt SATA / SCSI / VirtIO / IDE."
},
"header": {
"title": "Datenträger in VM importieren",
"description": "Weisen Sie einer vorhandenen VM ein physisches Laufwerk des Proxmox-Hosts zu. ProxMenux erkennt freie Laufwerke, lässt Sie Ziel-VM und Bustyp (SATA/SCSI/VirtIO/IDE) wählen und verwendet persistente /dev/disk/by-id-Pfade. So bleibt die Zuordnung bei Neustarts und geänderter Gerätereihenfolge bestehen.",
"section": "Datenträgerverwaltung · VM"
},
"intro": {
"title": "Was das macht",
"body": "Ein physisches Laufwerk wird als Backend einer virtuellen Laufwerksschnittstelle zugewiesen. Der Gast erhält nicht automatisch native SMART-Daten oder Funktionen des physischen Controllers; dafür ist Controller-PCI-Passthrough geeignet. Das Laufwerk wird, falls vorhanden, über seinen Pfad <code>/dev/disk/by-id/…</code> zugewiesen, sodass eine geänderte Gerätereihenfolge beim Start die Zuordnung nicht unterbricht; andernfalls wird <code>/dev/sdX</code> verwendet."
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Der Fluss hat zwei Phasen mit klarer Trennung zwischen \"Sammeln von Informationen und Entscheidungen\" und \"tatsächliches Anbringen von Festplatten am VM\". Bis zur endgültigen Bestätigung bleibt die VM-Konfiguration unberührt.",
"summary": "ProxMenux blendet unsichere Kandidaten aus: Root-Laufwerk, auf dem Host eingehängte Laufwerke, aktive ZFS-/LVM-/RAID-Mitglieder und bereits in VM-/LXC-Konfigurationen referenzierte Laufwerke. Laufwerke mit <em>alten</em>, nicht mehr verwendeten ZFS-/RAID-/LVM-Metadaten erscheinen mit ⚠, werden aber nicht gesperrt."
},
"prereqs": {
"heading": "Voraussetzungen",
"items": [
"Mindestens ein VM, der auf dem Host definiert ist (das Skript wird direkt an <code>qm list</code> gesendet).",
"Die <strong>Ziel-VM ist ausgeschaltet</strong>. Läuft sie, bricht das Skript mit einer Meldung ab; das Hinzufügen im laufenden Betrieb ist nicht Teil dieses Ablaufs.",
"Mindestens eine physische Festplatte auf dem Host, die nicht vom Host oder einem anderen Gast verwendet wird."
]
},
"steps": {
"heading": "Schritt für Schritt",
"stepLabel": "Schritt",
"list": [
{
"title": "Ziel-VM auswählen",
"bodyRich": "ProxMenux listet alle VMs auf dem Host über <code>qm list</code> auf. Wählen Sie die VM für das Laufwerk. Läuft sie, bricht das Skript ab und fordert Sie auf, sie zuerst herunterzufahren."
},
{
"title": "Wählen Sie die physische Festplatte(n) zum Anbringen",
"img": "/disk/disk-selection.png",
"caption": "Freie Festplatten auf dem Host erkannt (mit ⚠ Labels für veraltete Metadaten)",
"body": "Das Skript scannt jede Host-Disk und zeigt nur diejenigen an, die sicher angehängt werden können. Mit der Checkliste können Sie eine oder mehrere auf einmal auswählen. Disks mit alten ZFS / LVM / RAID-Signaturen werden immer noch angezeigt, gekennzeichnet mit ⚠, so dass Sie wissen, dass sie ein Wischen benötigen, bevor der Gast sie formatieren kann."
},
{
"title": "Wählen Sie die Bus-Schnittstelle",
"img": "/disk/disk-assigment.png",
"caption": "Auswahl der Busschnittstellen",
"intro": "Wählen Sie aus, wie der Gast die Festplatte sehen soll:",
"items": [
"<strong>SCSI</strong> – moderner Standard für Linux und Windows mit installierten VirtIO-SCSI-Treibern.",
"<strong>SATA</strong> — breite Kompatibilität, funktioniert out of the box auf praktisch jedem Gast.",
"<strong>VirtIO</strong>: effizientes paravirtualisiertes Blockgerät; benötigt Gasttreiber.",
"<strong>IDE</strong>: für ältere Gäste ohne einen der oben genannten Treiber."
]
},
{
"title": "Zuweisen und prüfen",
"bodyRich": "ProxMenux verbindet jede ausgewählte Festplatte mit dem besten <code>/dev/disk/by-id/</code>-Pfad, überspringt Slot-Indizes, die bereits in der VM-Konfiguration verwendet werden (<code>scsi0</code>, <code>sata0</code>, ...) und liest die Konfiguration erneut, um die Zuordnung zu bestätigen. Am Ende wird eine Zusammenfassung gedruckt."
}
]
},
"manual": {
"heading": "Manuelles Äquivalent",
"body": "Das Skript ist ein Wrapper um <code>qm set</code>. Der genaue Befehl für eine einzelne Festplatte sieht so aus:",
"migrationTitle": "Live Migration ist nicht möglich",
"migrationBody": "Eine VM mit einem direkt zugewiesenen physischen Laufwerk ist <strong>an den Host gebunden, der dieses bereitstellt</strong>. Ein anderer Knoten hat normalerweise weder denselben Pfad <code>/dev/disk/by-id/…</code> noch dessen Daten. Sichern und übertragen Sie diese separat oder verwenden Sie verwaltete virtuelle Laufwerke auf gemeinsamem oder unterstützt repliziertem Speicher. Gehen Sie nicht davon aus, dass Proxmox-Speicherreplikation dieses Gerät umfasst.",
"shareTitle": "Teilen Sie keine physische Festplatte zwischen VMs",
"shareBody": "Wenn Sie dieselbe physische Festplatte gleichzeitig an zwei VMs anbringen, werden die Daten beim nächsten Schreiben beschädigt. ProxMenux erkennt diese Situation und blockiert sie, aber wenn Sie das Skript umgehen (direktes <code>qm set</code>), stellen Sie sicher, dass nur ein Gast jemals die Festplatte mountet."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noDisksTitle": "\"Für diesen VM sind keine Festplatten verfügbar\"",
"noDisksIntro": "Das Skript fand Festplatten, aber jeder Kandidat wurde herausgefiltert. Häufige Gründe:",
"noDisksItems": [
"Jede verbleibende Festplatte wird bereits in der Konfiguration des Ziels VM referenziert.",
"Jede verbleibende Festplatte wird auf dem Host montiert oder ist Teil eines aktiven ZFS / LVM / RAID.",
"Der Host hat nur die Root Disk installiert."
],
"noDisksOutro": "Führen Sie <code>lsblk -f</code> auf dem Host aus, um den Status jeder Festplatte zu überprüfen.",
"noVisibleTitle": "VM sieht die Festplatte nach dem Booten nicht",
"noVisibleBody": "Bei <strong>SCSI</strong> oder <strong>VirtIO</strong> benötigt der Gast den passenden Treiber. Linux bringt ihn im Kernel mit; unter Windows installieren Sie ihn von der VirtIO-ISO (siehe <winLink>VM erstellen: Windows</winLink>). SATA auf der Hardware-Registerkarte der VM ist ein schneller Test, ob das Laufwerk zugewiesen ist."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager/import-disk-image-vm",
"label": "Disk-Image in VM importieren",
"tail": " — derselbe Ablauf für Disk-Image-Dateien (qcow2 / vmdk / raw / img)."
},
{
"href": "/docs/disk-manager/import-disk-lxc",
"label": "Datenträger in LXC importieren",
"tail": " — entsprechender Ablauf für LXC-Container."
},
{
"href": "/docs/disk-manager/add-controller-nvme-vm",
"label": "Controller oder NVMe zu VM hinzufügen",
"tail": "- wenn Sie einen vollständigen PCIe / NVMe-Durchgang anstelle eines Festplattenanschlusses benötigen."
},
{
"href": "/docs/help-info/storage-commands",
"label": "Speicher- und Festplattenbefehle",
"tail": "qm importdisk und zugehörige Shell-Referenz."
},
{
"href": "/docs/disk-manager",
"label": "Übersicht Disk Manager",
"tail": "."
}
]
}
}
@@ -0,0 +1,135 @@
{
"meta": {
"title": "Proxmox-Datenträgerverwaltung: VM/LXC-Zuweisung, SMART-Tests, Löschen | ProxMenux",
"description": "Verwalten Sie physische Laufwerke auf einem Proxmox-VE-Host mit ProxMenux: Laufwerke VMs oder LXC zuweisen (qm set scsi/sata/virtio, pct mp), img-/qcow2-/vmdk-/raw-Images importieren, ganze HBAs oder NVMe-Controller durchreichen, Laufwerke mit Sicherheitsprüfungen löschen und SMART-Selbsttests ausführen.",
"ogTitle": "Proxmox-Datenträgerverwaltung: VM/LXC-Zuweisung, SMART-Tests, Löschen",
"ogDescription": "Laufwerke VMs/LXC zuweisen, Images importieren, Controller per PCI durchreichen, Laufwerke sicher bedienen und SMART-Tests auf Proxmox VE ausführen.",
"twitterTitle": "Proxmox-Datenträgerverwaltung | ProxMenux",
"twitterDescription": "Laufwerke VMs/LXC zuweisen, Images importieren, PCI-Passthrough, Löschen mit Sicherheitsprüfungen und SMART-Tests."
},
"header": {
"title": "Festplattenmanager",
"description": "Das Menü Datenträgerverwaltung bündelt ProxMenux-Werkzeuge für physische Laufwerke auf einem Proxmox-Host: Zuweisung an VMs und LXC, Import von Disk-Images, Passthrough ganzer Controller oder NVMe-Geräte, Löschen mit Sicherheitsprüfungen und SMART-Tests.",
"section": "Festplattenmanager"
},
"intro": {
"title": "Wofür dieses Menü ist",
"body": "Diese Werkzeuge arbeiten mit <strong>für den Proxmox-Host sichtbaren physischen Laufwerken und dort gespeicherten Image-Dateien</strong>. Es gibt drei Gruppen: <strong>VM</strong> (Laufwerke zuweisen oder Images importieren), <strong>LXC</strong> (Laufwerke an Container anbinden) und <strong>Dienstprogramme</strong> (Formatierung und SMART-Status). Zuweisung und Löschen blenden Systemlaufwerke und belegte Laufwerke aus oder sperren sie; SMART-Prüfungen können sie ohne Löschen untersuchen."
},
"opening": {
"heading": "Öffnen des Menüs",
"body": "Wählen Sie im Hauptmenü von ProxMenux <strong>Disk Manager</strong>. Sie werden sehen:",
"imageAlt": "Disk Manager Menü mit VM, LXC und Utilities Blöcken"
},
"groups": {
"heading": "Drei Werkzeuggruppen",
"intro": "Das Disk Manager-Menü ist in drei Gruppen unterteilt: <strong>VM</strong>, <strong>LXC</strong> und <strong>Utilities</strong>. Klicken Sie auf eine Karte, um direkt zu den Werkzeugen in dieser Gruppe zu springen.",
"vmTitle": "VM",
"vmBody": "Tools, die auf vorhandenen virtuellen Maschinen arbeiten. Der VM muss ausgeschaltet werden; ProxMenux validiert dies, bevor er die Konfiguration berührt.",
"vmItems": [
"Datenträger in VM importieren",
"Disk-Image in VM importieren",
"Controller oder NVMe zu VM hinzufügen"
],
"lxcTitle": "LXC",
"lxcBody": "Werkzeuge für bestehende LXC-Container. Dieses Skript benötigt einen privilegierten Container und bietet bei Bedarf die Änderung der Einstellung an. Lesen Sie zuerst die Hinweise zur Konvertierung und zu Dateieigentümern auf der Werkzeugseite.",
"lxcItems": [
"Datenträger in LXC importieren"
],
"utilitiesTitle": "Dienstprogramme",
"utilitiesBody": "Hostseitige Tools, die auf den Festplatten selbst arbeiten, unabhängig von VM oder Containern.",
"utilitiesItems": [
"Physischen Datenträger formatieren / löschen",
"SMART-Festplattenstatus und -test"
]
},
"vm": {
"heading": "VM",
"intro": "Tools, die auf vorhandenen virtuellen Maschinen arbeiten. Der VM muss ausgeschaltet werden; ProxMenux validiert dies, bevor er die Konfiguration berührt.",
"options": [
{
"icon": "HardDrive",
"href": "/docs/disk-manager/import-disk-vm",
"title": "Datenträger in VM importieren",
"description": "Befestigen Sie eine nicht zugewiesene physische Festplatte an eine vorhandene VM. Unterstützt SATA / SCSI / VirtIO / IDE, verwendet persistente /dev/disk/by-id-Pfade."
},
{
"icon": "FileDown",
"href": "/docs/disk-manager/import-disk-image-vm",
"title": "Disk-Image in VM importieren",
"description": "Importieren Sie Disk-Image-Dateien (.img / .qcow2 / .vmdk / .raw) in eine vorhandene VM. Zweiphasiger Ablauf mit qm importdisk im Hintergrund."
},
{
"icon": "Cpu",
"href": "/docs/disk-manager/add-controller-nvme-vm",
"title": "Controller oder NVMe zu VM hinzufügen",
"description": "PCI-Durchgang eines ganzen SATA / SAS HBA- oder NVMe-Geräts zu einem VM. Behandelt IOMMU Enablement und Konflikterkennung."
}
]
},
"lxc": {
"heading": "LXC",
"intro": "Werkzeuge für bestehende LXC-Container. Dieses Skript benötigt einen privilegierten Container und bietet bei Bedarf die Änderung der Einstellung an. Lesen Sie zuerst die Hinweise zur Konvertierung und zu Dateieigentümern auf der Werkzeugseite.",
"options": [
{
"icon": "Boxes",
"href": "/docs/disk-manager/import-disk-lxc",
"title": "Datenträger in LXC importieren",
"description": "Befestigen Sie eine nicht zugewiesene physische Festplatte an einem vorhandenen LXC-Container als Montagepunkt. Behandelt Dateisystemerkennung / Format und privilegierte Konvertierung."
}
]
},
"utilities": {
"heading": "Dienstprogramme",
"intro": "Hostseitige Tools, die auf den Festplatten selbst arbeiten, unabhängig von VM oder Containern.",
"options": [
{
"icon": "Eraser",
"href": "/docs/disk-manager/format-disk",
"title": "Physische Festplatte formatieren/löschen (sicher)",
"description": "Laufwerke mit strengen Sicherheitskontrollen löschen: Nur vollständig freie Laufwerke werden angezeigt, und eine doppelte Bestätigung ist immer erforderlich."
},
{
"icon": "Activity",
"href": "/docs/disk-manager/smart-disk-test",
"title": "SMART-Festplattenstatus und -test",
"description": "Führen Sie SMART Gesundheitschecks und kurze / lange Selbsttests auf SATA-, SAS- und NVMe-Laufwerken durch. Exportiert JSON für den Monitor."
}
]
},
"safety": {
"title": "Sicherheitsregeln für Laufwerkszuweisung und Löschen",
"intro": "Zuweisungs- und Löschvorgänge filtern Geräte aus, die den Host gefährden könnten:",
"items": [
"Das <strong>Systemlaufwerk</strong> sowie Root-Pool, Swap und aktive ZFS-/LVM-/RAID-Mitglieder bleiben ausgeblendet.",
"Auf dem Host <strong>eingehängte</strong> Laufwerke werden ausgeblendet oder bei der Ausführung gesperrt.",
"Datenträger <strong>, auf die mit einem laufenden VM oder LXC</strong> verwiesen wird, können nicht neu zugewiesen oder gelöscht werden.",
"Operationen, die den Host-Status ändern können (IOMMU enable, Wipe) erfordern eine explizite Bestätigung."
]
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/storage-share",
"label": "Speicher- und Freigabemanager",
"tail": "- registrieren Sie den Speicher in Proxmox selbst (NFS / Samba / iSCSI / local) und teilen Sie Ordner zwischen Host und CTs."
},
{
"href": "/docs/help-info/storage-commands",
"label": "Speicher- und Festplattenbefehle",
"tail": "— Blockgeräte, LVM, pvesm, SMART Referenz."
},
{
"href": "/docs/help-info/zfs-commands",
"label": "ZFS Verwaltungsbefehle",
"tail": "— für ZFS-Pools und Datensätze."
},
{
"href": "/docs/hardware/gpu-vm-passthrough",
"label": "GPU zu VM hinzufügen (Passthrough)",
"tail": "- die gleichen IOMMU / VFIO-Konzepte für GPUs."
}
]
}
}
@@ -0,0 +1,146 @@
{
"meta": {
"title": "SMART-Laufwerksstatus und Tests | ProxMenux-Dokumentation",
"description": "Führen Sie SMART-Gesundheitsprüfungen und Festplattentests auf Proxmox VE mit ProxMenux aus. Unterstützt SATA / SAS (smartmontools) und NVMe (nvme-cli). Kurze und lange Selbsttests, JSON Export für ProxMenux Monitor Integration.",
"ogTitle": "SMART-Laufwerksstatus und Tests | ProxMenux-Dokumentation",
"ogDescription": "SMART Gesundheitschecks und Selbsttests für SATA / SAS und NVMe Laufwerke auf Proxmox. JSON Export für den Monitor."
},
"header": {
"title": "SMART-Festplattenstatus und -test",
"description": "Lesen Sie SMART-Daten und lösen Sie Selbsttests auf den physischen Festplatten aus, die an den Proxmox-Host angeschlossen sind. ProxMenux installiert automatisch Smartmontools für SATA / SAS und nvme-cli für NVMe, führt die Aktion innerhalb der Laufwerk-Firmware aus (lange Tests überleben Terminalschluss) und exportiert JSON-Ergebnisse für den ProxMenux Monitor.",
"section": "Disk Manager · Dienstprogramme"
},
"intro": {
"title": "Wofür das ist",
"body": "SMART (Self-Monitoring, Analysis and Reporting Technology) ermöglicht es dem Laufwerk selbst, seinen Zustand zu melden und Selbsttests durchzuführen. Dieses Tool stellt diese Daten frei, ohne dass Sie sich die richtige <code>smartctl</code>/<code>nvme</code>-Aufrufung merken müssen, und behält die Ausgabe als JSON, so dass der Monitor Trends im Laufe der Zeit zeichnen kann."
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Alle Aktionen hier sind zerstörungsfrei - SMART liest die Laufwerk-Firmware-Zähler, und Selbsttests werden innerhalb des Laufwerks selbst in die Warteschlange gestellt. Es ist keine Phasentrennung erforderlich. Der Ablauf ist: Abhängigkeitsprüfung → Festplattenauswahl → Aktionsauswahl → Werkzeugaufruf (smartctl oder nvme-cli abhängig vom Festplattenbus) → gedruckte Ausgabe plus JSON Export für den Monitor."
},
"deps": {
"heading": "Abhängigkeiten",
"body": "Das Tool installiert automatisch, was es beim ersten Durchlauf benötigt. SATA / SAS-Laufwerke verlassen sich auf <code>smartmontools</code>; NVMe-Laufwerke verlassen sich auf <code>nvme-cli</code>. Beide:"
},
"actions": {
"heading": "Verfügbare Maßnahmen",
"headerAction": "Aktion",
"headerWhat": "Was gelesen oder ausgeführt wird",
"headerDur": "Dauer",
"rows": [
{
"action": "Schneller Gesundheitszustand",
"whatRich": "Insgesamt PASSED/FAILED + Schlüsselattribute.<br /><code>smartctl -H</code> + <code>-A</code> (SATA/SAS) oder <code>nvme smart-log</code> (NVMe).",
"dur": "Sofort"
},
{
"action": "Vollständiger Bericht",
"whatRich": "Vollständige SMART-Daten, scrollbar. <code>smartctl -x</code> für SATA/SAS oder <code>nvme smart-log</code> + <code>id-ctrl</code> für NVMe.",
"dur": "Sofort"
},
{
"action": "Kurztest",
"what": "Grundlegende Oberfläche und elektrische Überprüfung, in der Warteschlange innerhalb der Firmware des Laufwerks.",
"dur": "~2 Minuten"
},
{
"action": "Lange Prüfung",
"what": "Vollständiger Scan der gesamten Oberfläche. Läuft auf der Laufwerk-Hardware - bleibt bestehen, auch wenn Sie das Terminal schließen.",
"dur": "Stunden (abhängig von der Laufwerksgröße)"
},
{
"action": "Testfortschritt prüfen",
"what": "Status des aktiven oder letzten Selbsttests.",
"dur": "Sofort"
}
],
"tipTitle": "Lange Tests laufen nach dem Schließen des Terminals weiter",
"tipBody": "Ein langer Test läuft <em>im Laufwerk</em> und benötigt keinen weiterlaufenden ProxMenux-Prozess. Schließen Sie das Terminal und verwenden Sie später <strong>Testfortschritt prüfen</strong>. Ein Host-Neustart, Controller-Reset oder Stromausfall kann den Test und die Ergebniserfassung unterbrechen; eine automatische Fortsetzung ist nicht garantiert."
},
"json": {
"heading": "JSON Export für den Monitor",
"intro": "Status-, Kurztest- und Fortschrittsaktionen schreiben eine JSON-Datei mit Zeitstempel nach <code>/usr/local/share/proxmenux/smart/&lt;disk&gt;/</code>; Langtestergebnisse werden im Hintergrund erfasst. Der vollständige Bericht wird nur angezeigt. Die Struktur ist:",
"outro": "ProxMenux Monitor liest diese Dateien zur Darstellung von Zustandstrends je Laufwerk. Beim Erreichen der Aufbewahrungsgrenze werden alte Dateien automatisch entfernt."
},
"steps": {
"heading": "Schritt für Schritt",
"stepLabel": "Schritt",
"list": [
{
"title": "Laufwerk auswählen",
"body": "ProxMenux listet jede physische Festplatte auf dem Host mit ihrem Modell und ihrer Größe auf. Im Gegensatz zum Format-Tool wird diese Liste nicht durch die Sicherheit gefiltert - das Lesen von SMART ist eine zerstörungsfreie Operation.",
"img": "/disk/smart/disk-selection.png",
"alt": "SMART Plattenauswahlmenü",
"caption": "SMART Plattenauswahlmenü"
},
{
"title": "Wählen Sie eine Aktion",
"body": "Wählen Sie schnellen Status, vollständigen Bericht, Kurztest, Langtest oder Testfortschritt. Das Menü bleibt nach jeder Aktion offen, sodass Sie mehrere Abfragen desselben Laufwerks ausführen können.",
"img": "/disk/smart/action-menu.png",
"alt": "SMART Aktionsmenü",
"caption": "SMART Aktionsmenü (5 Aktionen + Abbruch)"
},
{
"title": "(Nur langer Test) Hintergrundausführung bestätigen",
"body": "ProxMenux weist darauf hin, dass der Test nach dem Schließen des Terminals weiterläuft, und zeigt den Speicherort der JSON-Ergebnisse. Bestätigen Sie, um den Test zu starten.",
"img": "/disk/smart/long-test-warning.png",
"alt": "Dialog über lange Testbestätigung",
"caption": "Lange Testbestätigung – läuft im Hintergrund, Ergebnis wird in JSON gespeichert"
},
{
"title": "Prüfergebnisse",
"bodyRich": "Status-, Test- und Fortschrittsausgaben erscheinen im Terminal; <strong>Vollständiger Bericht</strong> öffnet sich in einem scrollbaren Dialog. JSON wird für die oben genannten Aktionen exportiert, nicht für den vollständigen Bericht. Verwenden Sie bei Langtests später <strong>Testfortschritt prüfen</strong> für dasselbe Laufwerk.",
"img": "/disk/smart/quick-status.png",
"alt": "Schnelle Ausgabe des Gesundheitszustands",
"caption": "Schnelle Ausgabe des Gesundheitszustands (SATA — smartctl -H + -A)"
}
]
},
"manual": {
"heading": "Manuelle Äquivalente",
"nvmeWarnTitle": "NVMe Selbsttests sind Laufwerk-Firmware abhängig",
"nvmeWarnBody": "Nicht jedes NVMe-Laufwerk unterstützt den kurzen / langen Selbsttestbefehl. Wenn ein Laufwerk den Test ablehnt, sind das SMART-Protokoll und die ID-Controllerdaten (<code>nvme smart-log</code> + <code>id-ctrl</code>) immer noch das zuverlässigste Gesundheitssignal."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noSmartTitle": "\"Konnte SMART-Daten aus /dev/sdX nicht lesen\"",
"noSmartBody": "Die Festplatte befindet sich wahrscheinlich hinter einem RAID / SAS-Controller, der SMART nicht durchläuft. Versuchen Sie mit Megaraid-basierten Karten <code>smartctl -d megaraid,N /dev/sdX</code>. Für HBAs im IT-Modus funktioniert der direkte Aufruf.",
"longTitle": "Langer Test nie abgeschlossen",
"longBody": "Der Test läuft in der Laufwerksfirmware; hohe E/A-Last kann ihn verzögern. Nutzen Sie eine ruhige Zeit, etwa nachts. Bei SATA zeigt <code>smartctl -c</code> den verbleibenden Prozentsatz, bei SAS <code>smartctl -l selftest</code>; das Selbsttestprotokoll zeigt Abschlussstatus und gegebenenfalls fehlerhafte LBAs. Lesefehler müssen untersucht werden; langsamer Fortschritt allein beweist keinen defekten Sektor."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager/format-disk",
"label": "Physischen Datenträger formatieren / löschen",
"tail": "Wiederverwendung einer Festplatte, nachdem bestätigt wurde, dass sie gesund ist."
},
{
"href": "/docs/help-info/storage-commands",
"label": "Speicher- und Laufwerksbefehle → SMART-Laufwerksstatus",
"tail": "Referenz smartctl/nvme."
},
{
"href": "/docs/help-info/zfs-commands",
"label": "ZFS Verwaltungsbefehle",
"tail": " — zpool scrub prüft ZFS-Datenprüfsummen und ergänzt SMART-Hardwaretests."
},
{
"href": "/docs/monitor/dashboard/storage",
"label": "ProxMenux Monitor — Speicherregister",
"tail": " — Laufwerksdetailansicht mit den hier exportierten JSON-Daten: vollständige SMART-Tabelle, Verlauf und PDF-Bericht."
},
{
"href": "/docs/monitor/dashboard/hardware",
"label": "ProxMenux Monitor — Register Hardware",
"tail": "Speicherzusammenfassung mit Modell, Kapazität und ausgehandelter Verbindungsgeschwindigkeit (aktuell vs. maximal auf NVMe)."
},
{
"href": "/docs/disk-manager",
"label": "Übersicht Disk Manager",
"tail": "."
}
]
}
}
@@ -0,0 +1,58 @@
{
"meta": {
"title": "Externe Repositorys | ProxMenux-Dokumentation",
"description": "ProxMenux bindet ausgewählte externe Skript-Repositorys wie community-scripts und ZimaOS als Alternativen in einigen Menüs ein. Jedes Skript ist mit seiner Quelle gekennzeichnet. Fehlerberichte gehören an den ursprünglichen Maintainer.",
"ogTitle": "Externe Repositorys | ProxMenux-Dokumentation",
"ogDescription": "Externe Skript-Repositorys, die als Alternativen in ProxMenux-Menüs eingebunden sind."
},
"header": {
"title": "Externe Repositorys",
"description": "ProxMenux bindet ausgewählte externe Skript-Repositorys als Alternativen in einige Menübereiche ein. Die Skripte stammen aus vertrauenswürdigen Drittquellen und werden im Menü klar mit ihrer Herkunft gekennzeichnet.",
"section": "Externe Repositorys"
},
"practice": {
"title": "Was das in der Praxis bedeutet",
"body": "Verwendet eine Menüoption ein externes Skript statt eigenen ProxMenux-Codes, nennt das Menü ausdrücklich dessen Herkunft und Repository. ProxMenux startet diese Skripte, verändert sie aber nicht. Für Fehler in ihrem Verhalten ist der Maintainer des jeweiligen Repositorys zuständig."
},
"integrated": {
"heading": "Derzeit eingebunden",
"usedInLabel": "Verwendung in:",
"items": [
{
"name": "community-scripts / ProxmoxVE",
"url": "https://community-scripts.github.io/ProxmoxVE/",
"description": "Führt die Arbeit von ttecks Helper Scripts fort. Umfangreicher Katalog von Skripten zur Bereitstellung von LXCs wie Home Assistant, Plex oder Frigate, VMs, Erweiterungen und PVE-Anpassungen in einem Durchgang.",
"usedIn": "Helper-Scripts-Starter und Netzwerk (Korrektur des NIC-Offloadings für Intel e1000e)"
}
]
},
"attribution": {
"heading": "Urheberangaben und Anerkennung",
"items": [
"Die ursprünglichen Autoren werden stets im Menü und auf der Dokumentationsseite zum jeweiligen Skript genannt.",
"Ein Link zum Quell-Repository erscheint sowohl vor dem Skriptstart als auch auf der zugehörigen Dokumentationsseite.",
"Unterstützen Sie die Entwickler dieser externen Projekte mit einem ⭐, durch Sponsoring oder mit aussagekräftigen Fehlerberichten."
]
},
"report": {
"title": "Wo Sie Probleme mit externen Skripten melden können",
"body": "Funktioniert ein externes Skript nicht wie erwartet, <strong>melden Sie das direkt im jeweiligen Repository</strong>, nicht bei ProxMenux. ProxMenux lädt das Skript herunter und führt es unverändert aus. Der ursprüngliche Maintainer kann den Fehler einordnen und beheben. ProxMenux-Issues sind für Probleme mit dem Starter oder der Einbindung des Skripts gedacht."
},
"suggest": {
"heading": "Vorschläge für neue externe Repositorys",
"intro": "Haben Sie ein Skript oder Repository gefunden, das gut in ein ProxMenux-Menü passt? Schlagen Sie es vor über:",
"discussionTitle": "💬 Diskussion eröffnen",
"discussionBody": "Ideal für Ideen: Holen Sie Rückmeldungen aus der Community ein, bevor daraus eine Funktionsanfrage wird.",
"issueTitle": "🐛 Issue eröffnen",
"issueBody": "Für konkrete Funktionsanfragen mit klar abgegrenztem Umfang."
},
"candidate": {
"title": "Was macht einen guten Integrationskandidaten aus",
"items": [
"Quelloffen und aktiv betreut.",
"Idempotent: kann sicher mehrfach ausgeführt werden.",
"Verändert die zentrale Proxmox-Konfiguration nicht unbemerkt.",
"Löst ein Problem, das ProxMenux noch nicht abdeckt, und vermeidet so doppelte Funktionen."
]
}
}
+677
View File
@@ -0,0 +1,677 @@
{
"meta": {
"title": "Glossar | ProxMenux-Dokumentation",
"description": "Definitionen der Begriffe aus der ProxMenux-Dokumentation zu Proxmox, Speicher, Netzwerken und Virtualisierung.",
"ogTitle": "Glossar | ProxMenux-Dokumentation",
"ogDescription": "Schnellreferenz für die technischen Begriffe, die in der ProxMenux-Dokumentation verwendet werden."
},
"header": {
"title": "Glossar",
"description": "Kurze Definitionen der Begriffe aus ProxMenux und zur Funktionsweise von Proxmox.",
"section": "Glossar"
},
"callout": {
"title": "Wie man diese Seite benutzt",
"bodyRich": "Jeder Eintrag enthält eine Kategorie und eine kurze Definition. <em>Siehe auch</em> führt zur passenden Dokumentation. Mit der A–Z-Navigation springen Sie direkt zu einem Buchstaben."
},
"jumpHeading": "Zu einem Buchstaben springen",
"seeAlsoLabel": "Siehe auch:",
"aliasesLabel": "auch:",
"missingCallout": {
"title": "Ein Begriff fehlt?",
"leadRich": "Fehlt ein Begriff, erstellen Sie ein Issue oder einen PR auf <ext>GitHub</ext>. Das Glossar steht in <code>web/messages/en/docs/glossary.json</code>, ergänzt durch die jeweiligen Sprachkataloge."
},
"entries": [
{
"term": "ACS",
"aliases": [
"Access Control Services",
"ACS-Override"
],
"category": "Virtualisierung",
"definitionRich": "PCIe-Zugriffskontrollen zur Isolierung des Geräteverkehrs. IOMMU-Gruppen hängen von Hardware und Topologie ab. Der Kernel-Patch <em>ACS override</em> kann die von Linux gemeldeten Gruppen aufteilen, schafft aber keine Hardware-Isolierung; die Zuweisung an getrennte VMs birgt ein Sicherheitsrisiko.",
"seeAlso": [
{
"label": "Controller oder NVMe zu VM hinzufügen",
"href": "/docs/disk-manager/add-controller-nvme-vm"
}
]
},
{
"term": "ARC",
"aliases": [
"Adaptive Replacement Cache"
],
"category": "Speicher",
"definitionRich": "ZFS-Lesecache im RAM des Hosts für kürzlich und häufig verwendete Datenblöcke. Das Standardlimit hängt von Proxmox-Version und Installationseinstellungen ab. ProxMenux bietet bei der Nachinstallation eine Option zur Begrenzung.",
"seeAlso": [
{
"label": "Nachinstallation: Speicher",
"href": "/docs/post-install/storage"
},
{
"label": "ZFS-Befehle",
"href": "/docs/help-info/zfs-commands"
}
]
},
{
"term": "Bind-Mount",
"category": "Linux",
"definitionRich": "Linux-Funktion, die einen Teil des Dateisystems unter einem weiteren Pfad zugänglich macht. ProxMenux nutzt Bind-Mounts, um Host-Verzeichnisse über <code>pct set -mpN</code> in LXC-Container einzubinden.",
"seeAlso": [
{
"label": "LXC-Einhängepunkte",
"href": "/docs/storage-share/lxc-mount-points"
}
]
},
{
"term": "Netzwerk-Bond",
"aliases": [
"Bündelung von Netzwerkschnittstellen",
"Link-Aggregation"
],
"category": "Netzwerk",
"definitionRich": "Bündelt mehrere physische Netzwerkschnittstellen zu einer logischen Schnittstelle für Redundanz (active-backup), höheren Gesamtdurchsatz (LACP / 802.3ad) oder beides. Konfiguration in <code>/etc/network/interfaces</code>."
},
{
"term": "Brücke",
"aliases": [
"vmbrX",
"vmbr0",
"Linux Bridge"
],
"category": "Netzwerk",
"definitionRich": "Virtueller Layer-2-Switch auf dem Host. <code>vmbr0</code> verbindet Gäste üblicherweise mit dem physischen Netzwerk. Weitere Bridges (<code>vmbr1</code>, <code>vmbr2</code>...) können Gastnetze je nach physischen Verbindungen und Konfiguration trennen.",
"seeAlso": [
{
"label": "Brückenanalyse und geführte Reparatur",
"href": "/docs/network/bridge-analysis"
}
]
},
{
"term": "Ceph",
"category": "Speicher",
"definitionRich": "Verteilter Speicher für hyperkonvergente Proxmox-Cluster. OSDs (Object Storage Daemons) bilden die Grundlage für Objekt-, Block- und Dateispeicher. Die erforderliche Ceph-Version hängt von Proxmox-Version und Upgrade-Pfad ab; beachten Sie die passende Upgrade-Anleitung.",
"seeAlso": [
{
"label": "Aktualisieren Sie PVE 8 auf PVE 9",
"href": "/docs/utils/upgrade-pve8-pve9"
}
]
},
{
"term": "CT",
"aliases": [
"Container",
"LXC-Container"
],
"category": "Proxmox",
"definitionRich": "Proxmox-Kurzbezeichnung für einen LXC-Container. Seine numerische CTID verweist auf <code>/etc/pve/lxc/&lt;CTID&gt;.conf</code>. Siehe auch <strong>LXC</strong>.",
"seeAlso": [
{
"label": "VMs und Container verwalten",
"href": "/docs/help-info/vm-ct-commands"
}
]
},
{
"term": "deb822",
"category": "Linux",
"definitionRich": "Modernes Format für APT-Paketquellen: <code>.sources</code>-Dateien mit strukturierten Blöcken und den Feldern Types, URIs, Suites, Components und Signed-By. Ersetzt das einzeilige <code>.list</code>-Format; Standard ab PVE 9 / Debian Trixie.",
"seeAlso": [
{
"label": "Aktualisieren Sie PVE 8 auf PVE 9",
"href": "/docs/utils/upgrade-pve8-pve9"
}
]
},
{
"term": "dGPU",
"aliases": [
"Dedizierte GPU"
],
"category": "Virtualisierung",
"definitionRich": "Separate Grafikkarte, meist über PCIe angebunden, im Gegensatz zu einer <strong>iGPU</strong>. Sie kann per VFIO einer VM zugewiesen oder über Gerätedateien und den Host-Treiber von mehreren LXC-Containern genutzt werden, sofern Hardware und Anwendungen dies unterstützen.",
"seeAlso": [
{
"label": "GPU an VM durchreichen",
"href": "/docs/hardware/gpu-vm-passthrough"
}
]
},
{
"term": "Dialog",
"category": "Linux",
"definitionRich": "Auf ncurses basierendes Werkzeug für Menüs, Eingabeaufforderungen und Fortschrittsbalken im Terminal. Die Menüs von ProxMenux verwenden dialog."
},
{
"term": "DKMS",
"aliases": [
"Unterstützung von dynamischen Kernmodulen"
],
"category": "Linux",
"definitionRich": "Framework zum Neubauen registrierter externer Kernelmodule wie NVIDIA oder ZFS bei Kerneländerungen. Erfolgreiche Builds benötigen kompatiblen Modulquellcode und passende Kernel-Header.",
"seeAlso": [
{
"label": "Installieren Coral TPU (Host)",
"href": "/docs/hardware/install-coral-tpu-host"
}
]
},
{
"term": "Fail2Ban",
"category": "Linux",
"definitionRich": "Dienst, der Protokolle auf wiederholte Anmeldefehler überwacht und die betreffenden IP-Adressen über die Firewall sperrt. ProxMenux liefert vorkonfigurierte Jails für SSH, die Proxmox-Oberfläche und Monitor.",
"seeAlso": [
{
"label": "Fail2Ban",
"href": "/docs/security/fail2ban"
}
]
},
{
"term": "Fastfetch",
"category": "Linux",
"definitionRich": "Systeminformationswerkzeug mit ASCII-Grafik beim Anmelden an der Shell. Ersetzt <code>neofetch</code> und kann bei der ProxMenux-Nachinstallation optional aktiviert werden.",
"seeAlso": [
{
"label": "Nach der Installation: Optionales",
"href": "/docs/post-install/optional"
}
]
},
{
"term": "GRUB",
"aliases": [
"GRand Unified Bootloader"
],
"category": "Linux",
"definitionRich": "Bootloader für GRUB-basierte Linux-Installationen. Konfiguration in <code>/etc/default/grub</code> und <code>/boot/grub/</code>; Änderungen mit <code>update-grub</code> übernehmen. Proxmox kann auch systemd-boot verwenden; prüfen Sie vor Änderungen an Kernelparametern den aktiven Bootloader.",
"seeAlso": [
{
"label": "GPU Durchgangsbefehle",
"href": "/docs/help-info/gpu-commands"
}
]
},
{
"term": "iGPU",
"aliases": [
"Integrierte GPU"
],
"category": "Virtualisierung",
"definitionRich": "Im CPU-Paket integrierter Grafikprozessor, etwa Intel UHD / Iris oder Radeon in Ryzen-APUs. Wird häufig über <code>/dev/dri</code> von mehreren LXC-Containern genutzt, statt exklusiv an eine VM durchgereicht zu werden.",
"seeAlso": [
{
"label": "GPU zu LXC hinzufügen",
"href": "/docs/hardware/igpu-acceleration-lxc"
}
]
},
{
"term": "ifupdown / ifupdown2",
"category": "Netzwerk",
"definitionRich": "Klassische Debian-Netzwerkkonfiguration über <code>/etc/network/interfaces</code>. Proxmox verwendet standardmäßig die neu entwickelte Variante <code>ifupdown2</code>, die laufende Konfigurationen mit <code>ifreload -a</code> neu laden kann."
},
{
"term": "initramfs",
"category": "Linux",
"definitionRich": "Anfängliches RAM-Dateisystem für den Start, bevor das eigentliche Root-Dateisystem eingehängt ist. Enthält früh benötigte Treiber. Nach Änderungen an VFIO, IOMMU oder Speichertreibern mit <code>update-initramfs -u -k all</code> neu erstellen."
},
{
"term": "IOMMU",
"aliases": [
"Eingangs-/Ausgangsspeicherverwaltungseinheit",
"VT-d",
"AMD-Vi"
],
"category": "Virtualisierung",
"definitionRich": "Hardware-Funktion (Intel VT-d / AMD-Vi) für PCIe-Passthrough an VMs. Im Firmware-Setup aktivieren und die Kernel-Unterstützung prüfen. Je nach Plattform und Kernelvorgaben können Parameter wie <code>intel_iommu=on</code> oder <code>amd_iommu=on</code> erforderlich sein.",
"seeAlso": [
{
"label": "Post-Install: Virtualisierung",
"href": "/docs/post-install/virtualization"
},
{
"label": "GPU an VM durchreichen",
"href": "/docs/hardware/gpu-vm-passthrough"
}
]
},
{
"term": "IOMMU-Gruppe",
"category": "Virtualisierung",
"definitionRich": "Gerätegruppe als kleinste IOMMU-Isolationseinheit. Geräte innerhalb einer Gruppe sind nicht unbedingt gegeneinander isoliert; prüfen Sie vor VFIO-Zuweisungen alle Mitglieder. Auflisten mit <code>find /sys/kernel/iommu_groups/ -type l | sort -V</code>."
},
{
"term": "iSCSI",
"aliases": [
"Internet SCSI"
],
"category": "Speicher",
"definitionRich": "Protokoll für Blockspeicher über IP: Ein entferntes Laufwerk erscheint als lokales SCSI-Gerät. In Proxmox mit <code>pvesm add iscsi</code> einbinden.",
"seeAlso": [
{
"label": "Hinzufügen von iSCSI-Ziel als Proxmox-Speicher",
"href": "/docs/storage-share/host-iscsi"
}
]
},
{
"term": "KVM",
"aliases": [
"Kernel-basierte virtuelle Maschine"
],
"category": "Virtualisierung",
"definitionRich": "Linux-Kernelmodul, das den Host zum Hypervisor macht. Zusammen mit <strong>QEMU</strong> für die Geräteemulation bildet es die Grundlage der Proxmox-VMs."
},
{
"term": "LVM",
"aliases": [
"Logical Volume Manager"
],
"category": "Speicher",
"definitionRich": "Linux-Volumeverwaltung mit Volume Groups (VG) aus physischem Speicher und darin liegenden Logical Volumes (LV). LVM-basierte Proxmox-Installationen nutzen häufig LVM-thin für Gastlaufwerke; andere Speicherarten sind möglich. Werkzeuge: <code>pvs</code>, <code>vgs</code> und <code>lvs</code>.",
"seeAlso": [
{
"label": "Befehle für Speicher und Datenträger",
"href": "/docs/help-info/storage-commands"
}
]
},
{
"term": "LXC",
"aliases": [
"Linux Containers"
],
"category": "Linux",
"definitionRich": "Virtualisierung auf Betriebssystemebene: Isolierte Benutzerumgebungen teilen den Host-Kernel. Üblicherweise weniger Overhead als VMs, jedoch mit anderer Isolationsgrenze. Proxmox verwaltet LXC-Container über <code>pct</code>.",
"seeAlso": [
{
"label": "VMs und Container verwalten",
"href": "/docs/help-info/vm-ct-commands"
}
]
},
{
"term": "Lynis",
"category": "Linux",
"definitionRich": "Open-Source-Sicherheitsprüfer von CISOfy. Analysiert den Host und liefert einen Härtungswert sowie konkrete Verbesserungsvorschläge. ProxMenux installiert die aktuelle Version aus dem ursprünglichen GitHub-Repository statt des älteren Debian-Pakets.",
"seeAlso": [
{
"label": "Lynis",
"href": "/docs/security/lynis"
}
]
},
{
"term": "MAC-Adresse",
"aliases": [
"Hardware-Adresse"
],
"category": "Netzwerk",
"definitionRich": "Meist 48-Bit-Kennung einer Ethernet-Schnittstelle, durch Hardware oder Software vergeben. ProxMenux ordnet unter <em>Persistente Netzwerknamen</em> MAC-Adressen feste Namen (<code>eno1</code>, <code>enp3s0</code>) zu, damit diese nach einer PCI-Neunummerierung gleich bleiben.",
"seeAlso": [
{
"label": "Persistente Schnittstellennamen",
"href": "/docs/network/persistent-names"
}
]
},
{
"term": "MOTD",
"aliases": [
"Botschaft des Tages"
],
"category": "Linux",
"definitionRich": "Text nach der SSH-Anmeldung, gespeichert in <code>/etc/motd</code>. ProxMenux kann bei der Nachinstallation ein Banner hinzufügen; der Deinstaller stellt die vorherige Datei wieder her, falls eine Sicherung existiert."
},
{
"term": "NFS",
"aliases": [
"Netzwerkdateisystem"
],
"category": "Speicher",
"definitionRich": "Aus Unix stammendes Protokoll zur Dateifreigabe im Netzwerk. In Proxmox mit <code>pvesm add nfs</code> als Speicher einbinden; ProxMenux bietet außerdem eigene Abläufe für NFS-Clients und -Server in LXC.",
"seeAlso": [
{
"label": "Speicher- und Freigabemanager",
"href": "/docs/storage-share"
}
]
},
{
"term": "nftables / iptables",
"category": "Netzwerk",
"definitionRich": "Linux-Firewallwerkzeuge. <code>nftables</code> ist das moderne Framework; <code>iptables</code> unterstützt klassische oder nft-kompatible Backends. Das klassische <code>pve-firewall</code> verwendet iptables, das alternative proxmox-firewall hingegen nftables.",
"seeAlso": [
{
"label": "Netzbefehle",
"href": "/docs/help-info/network-commands"
}
]
},
{
"term": "nouveau",
"category": "Linux",
"definitionRich": "Offener NVIDIA-Grafiktreiber im Linux-Kernel. Beim Installieren des proprietären NVIDIA-Treibers verhindern Sie, dass nouveau dieselbe GPU belegt, üblicherweise durch Blacklisting und Neubauen des initramfs.",
"seeAlso": [
{
"label": "NVIDIA Installationsleitfaden",
"href": "/guides/nvidia"
}
]
},
{
"term": "No-Subscription-Repository",
"category": "Proxmox",
"definitionRich": "Proxmox-Paketquelle ohne Enterprise-Abonnement. Pakete werden weniger umfassend validiert als im Enterprise-Repository, das Proxmox für den Produktivbetrieb empfiehlt. ProxMenux bietet die Repository-Konfiguration bei der Nachinstallation.",
"seeAlso": [
{
"label": "Post-Install: Grundeinstellungen",
"href": "/docs/post-install/basic-settings"
}
]
},
{
"term": "OVA / OVF",
"aliases": [
"Open Virtualization Format"
],
"category": "Virtualisierung",
"definitionRich": "DMTF-Formate zum Verpacken portabler VMs. <strong>OVA</strong> bündelt die Dateien in einem TAR-Archiv; <strong>OVF</strong> beschreibt die VM in XML mit zugehörigen Laufwerksdateien, häufig VMDK. Importmöglichkeiten hängen vom Zielhypervisor und der Konfiguration ab.",
"seeAlso": [
{
"label": "VM nach OVA / OVF exportieren",
"href": "/docs/utils/export-vm"
},
{
"label": "VM von OVA / OVF importieren",
"href": "/docs/utils/import-vm"
}
]
},
{
"term": "OVMF",
"aliases": [
"UEFI Firmware",
"Open Virtual Machine Firmware"
],
"category": "Virtualisierung",
"definitionRich": "UEFI-Firmware für VMs, auswählbar mit <code>qm set &lt;vmid&gt; -bios ovmf</code>. Für UEFI-Gäste, etwa Windows 11 und Secure-Boot-Konfigurationen. <code>efidisk0</code> speichert EFI-Variablen dauerhaft; viele andere Gäste können weiterhin klassisches BIOS nutzen.",
"seeAlso": [
{
"label": "GPU an VM durchreichen",
"href": "/docs/hardware/gpu-vm-passthrough"
}
]
},
{
"term": "PBS",
"aliases": [
"Proxmox Backup Server"
],
"category": "Proxmox",
"definitionRich": "Eigenständiges Proxmox-Sicherungsprodukt mit inkrementeller Übertragung, Deduplizierung und optionaler clientseitiger Verschlüsselung für VMs und CTs. Als vzdump-Ziel nutzbar; ein separater Backupserver ist Sicherungen auf dem geschützten Host vorzuziehen."
},
{
"term": "pct",
"category": "Proxmox",
"definitionRich": "Kommandozeilenwerkzeug für LXC-Container in Proxmox: <code>pct list / start / stop / shutdown / config / enter / exec / push / pull / destroy</code>.",
"seeAlso": [
{
"label": "VMs und Container verwalten",
"href": "/docs/help-info/vm-ct-commands"
}
]
},
{
"term": "pmxcfs",
"aliases": [
"Proxmox Cluster Filesystem"
],
"category": "Proxmox",
"definitionRich": "FUSE-basiertes virtuelles Dateisystem unter <code>/etc/pve/</code>. Repliziert Konfigurationsänderungen zwischen den Clusterknoten; Änderungen in <code>/etc/pve/</code> werden automatisch verteilt."
},
{
"term": "pveam",
"aliases": [
"Proxmox-VE-Appliance-Verwaltung"
],
"category": "Proxmox",
"definitionRich": "Werkzeug für den lokalen CT-Vorlagenkatalog. <code>pveam update</code> aktualisiert den Index; <code>pveam available</code> listet Vorlagen auf und <code>pveam download &lt;storage&gt; &lt;template&gt;</code> lädt eine herunter."
},
{
"term": "pveproxy",
"category": "Proxmox",
"definitionRich": "HTTPS-Dienst für Proxmox-Weboberfläche und Webterminal auf Port 8006. Wird bei Hauptversions-Upgrades neu gestartet; deshalb verweigert ProxMenux das Upgrade PVE 8 → 9 im Webterminal."
},
{
"term": "pvesm",
"aliases": [
"Proxmox-Speicherverwaltung"
],
"category": "Proxmox",
"definitionRich": "CLI-Tool zur Verwaltung von Proxmox-Speicher. <code>pvesm status</code> zeigt alle konfigurierten Speicher an; <code>pvesm add &lt;type&gt;</code> registriert neue (NFS, Samba, iSCSI, dir, ZFS, LVM, ...).",
"seeAlso": [
{
"label": "Befehle für Speicher und Datenträger",
"href": "/docs/help-info/storage-commands"
}
]
},
{
"term": "Privilegierter Container",
"category": "Linux",
"definitionRich": "LXC-Container, dessen root-Benutzer <em>auf Host-UID 0 abgebildet wird</em>; Namespaces und weitere Einschränkungen gelten weiterhin. Weniger isoliert als unprivilegierte Container. GPU-, USB- und Samba-Zugriff benötigen diesen Modus nicht grundsätzlich; Berechtigungen und UID-Zuordnungen sind entscheidend."
},
{
"term": "ProxMenux Monitor",
"category": "ProxMenux",
"definitionRich": "Optionales Web-Dashboard für ProxMenux. Zeigt aktuelle Host-Statistiken zu CPU, RAM, Datenträgern und Netzwerk sowie eine VM-/LXC-Übersicht; Anmeldung mit 2FA über TCP-Port <code>8008</code>.",
"seeAlso": [
{
"label": "ProxMenux Monitor",
"href": "/docs/settings/proxmenux-monitor"
}
]
},
{
"term": "qcow2",
"aliases": [
"QEMU Copy-On-Write v2"
],
"category": "Speicher",
"definitionRich": "VM-Laufwerksformat, häufig auf Verzeichnisspeichern genutzt. Unterstützt bedarfsgerechte Speicherbelegung, Snapshots und Copy-on-Write. Konvertieren mit <code>qemu-img convert -O qcow2 ...</code>."
},
{
"term": "qm",
"aliases": [
"QEMU-Verwaltung"
],
"category": "Proxmox",
"definitionRich": "Kommandozeilenwerkzeug für VMs in Proxmox: <code>qm list / start / stop / shutdown / config / set / destroy / importdisk / migrate</code>. Entspricht <code>pct</code> für Container.",
"seeAlso": [
{
"label": "VMs und Container verwalten",
"href": "/docs/help-info/vm-ct-commands"
}
]
},
{
"term": "Q35",
"category": "Virtualisierung",
"definitionRich": "QEMU-Maschinentyp mit emuliertem Intel-Q35-Chipsatz und PCIe-Unterstützung. Gegenüber i440FX für PCIe-Passthrough und moderne Gäste empfohlen. Einstellen mit <code>qm set &lt;vmid&gt; -machine q35</code>."
},
{
"term": "QEMU",
"category": "Virtualisierung",
"definitionRich": "Freier Maschinenemulator und Virtualisierer. Proxmox kombiniert ihn mit KVM, um VMs mit nahezu nativer Leistung auszuführen."
},
{
"term": "rclone",
"category": "Linux",
"definitionRich": "Kommandozeilenwerkzeug für zahlreiche Cloudspeicher wie Google Drive, Dropbox, OneDrive, Mega und S3. Die Cloud-Backup-Anleitung nutzt es, um entfernten Speicher als Verzeichnis für vzdump-Archive einzuhängen.",
"seeAlso": [
{
"label": "Sicherungen in persönlichem Cloud-Speicher",
"href": "/guides/backup_cloud"
}
]
},
{
"term": "Samba / SMB / CIFS",
"category": "Speicher",
"definitionRich": "Microsoft-Protokollfamilie für Dateifreigaben. <strong>SMB</strong> ist das Protokoll, <strong>Samba</strong> die freie Linux-Implementierung und <strong>CIFS</strong> ein älterer SMB-Dialekt. In Proxmox mit <code>pvesm add cifs</code> einbinden.",
"seeAlso": [
{
"label": "Speicher- und Freigabemanager",
"href": "/docs/storage-share"
}
]
},
{
"term": "SeaBIOS",
"category": "Virtualisierung",
"definitionRich": "Freie Implementierung eines klassischen BIOS für QEMU. Standardfirmware neuer VMs, sofern nicht OVMF gewählt wird. Geeignet für ältere Systeme und Linux-Installationen ohne UEFI-Anforderung."
},
{
"term": "smartctl / SMART",
"aliases": [
"Self-Monitoring, Analysis and Reporting Technology"
],
"category": "Speicher",
"definitionRich": "In Laufwerke integrierte Diagnose für Zustand, Fehlerzähler und Selbsttests. Das Kommandozeilenwerkzeug ist <code>smartctl</code> aus <code>smartmontools</code>; <code>nvme-cli</code> ergänzt NVMe-spezifische Befehle.",
"seeAlso": [
{
"label": "SMART-Festplattenstatus und -test",
"href": "/docs/disk-manager/smart-disk-test"
},
{
"label": "Speicherbefehle → SMART Abschnitt",
"href": "/docs/help-info/storage-commands"
}
]
},
{
"term": "systemd / systemctl / journalctl",
"category": "Linux",
"definitionRich": "Init-System von Debian / Proxmox. <code>systemctl</code> verwaltet Dienste: starten, stoppen, aktivieren und Status anzeigen. <code>journalctl</code> liest das binäre Journal von <code>systemd-journald</code>."
},
{
"term": "sysctl",
"category": "Linux",
"definitionRich": "Werkzeug zum Lesen und Ändern von Kernelparametern. Dauerhafte Einstellungen stehen üblicherweise in <code>/etc/sysctl.d/*.conf</code>; die Unterstützung für <code>/etc/sysctl.conf</code> hängt vom Ladedienst ab. ProxMenux bietet bei der Nachinstallation ein sysctl-Profil.",
"seeAlso": [
{
"label": "Post-Install: Netzwerk",
"href": "/docs/post-install/network"
}
]
},
{
"term": "trixie",
"category": "Linux",
"definitionRich": "Codename für Debian 13, die OS-Basis für Proxmox VE 9. Vorgänger: <em>bookworm</em> (Debian 12 / PVE 8).",
"seeAlso": [
{
"label": "Aktualisieren Sie PVE 8 auf PVE 9",
"href": "/docs/utils/upgrade-pve8-pve9"
}
]
},
{
"term": "udev",
"category": "Linux",
"definitionRich": "Linux-Geräteverwaltung. Reagiert auf Hardware-Ereignisse und erstellt oder entfernt Einträge unter <code>/dev</code>. Regeln in <code>/etc/udev/rules.d/</code> können Schnittstellennamen an MAC-Adressen binden, NVIDIA-Gerätedateien beim Laden des Treibers erstellen und weitere Aufgaben übernehmen."
},
{
"term": "UID / GID idmap",
"aliases": [
"UID-Schaltung"
],
"category": "Linux",
"definitionRich": "Bei der Standardzuordnung <strong>unprivilegierter</strong> LXC-Container sind Host-UIDs und -GIDs um <code>+100000</code> verschoben: Container-UID 0 entspricht Host-UID 100000, UID 1000 entspricht 101000. Eigene Zuordnungen können abweichen; Dateieigentümer auf Bind-Mounts müssen dazu passen.",
"seeAlso": [
{
"label": "LXC-Einhängepunkte",
"href": "/docs/storage-share/lxc-mount-points"
}
]
},
{
"term": "Unprivilegierter Container",
"category": "Linux",
"definitionRich": "LXC-Container, dessen root auf eine unprivilegierte Host-UID abgebildet wird, normalerweise 100000. Das begrenzt Host-Rechte bei gemeinsamem Kernel. Hardwarezugriff bleibt mit passenden Geräteberechtigungen und Zuordnungen möglich; privilegierter Betrieb ist nicht grundsätzlich nötig."
},
{
"term": "VFIO",
"aliases": [
"Virtuelle Funktion I/O"
],
"category": "Virtualisierung",
"definitionRich": "Linux-Kernel-Framework für sichere Gerätetreiber im Userspace, genutzt beim direkten Durchreichen von PCIe-Geräten an VMs. Beteiligt sind <code>vfio</code>, <code>vfio_iommu_type1</code> und <code>vfio_pci</code>; Konfiguration in <code>/etc/modprobe.d/vfio.conf</code>.",
"seeAlso": [
{
"label": "Post-Install: Virtualisierung",
"href": "/docs/post-install/virtualization"
}
]
},
{
"term": "VirtIO",
"category": "Virtualisierung",
"definitionRich": "Paravirtualisierte Treiber für Netzwerk, Speicher, Memory-Ballooning und GPU. Vermeiden den Aufwand emulierter älterer Hardware wie e1000 oder IDE. Der Gast benötigt passende Treiber: in Linux enthalten, für Windows als separate ISO verfügbar."
},
{
"term": "VLAN",
"aliases": [
"Virtuelles LAN"
],
"category": "Netzwerk",
"definitionRich": "802.1Q-Tags zur Aufteilung eines physischen Netzwerks in mehrere logische Netze. Pro Bridge oder Netzwerkschnittstelle in <code>/etc/network/interfaces</code> konfigurierbar."
},
{
"term": "VM",
"aliases": [
"Virtuelle Maschine"
],
"category": "Proxmox",
"definitionRich": "Von Proxmox mit QEMU/KVM verwaltete virtuelle Maschine mit eigenem Gast-Kernel. Ihre numerische VMID entspricht <code>/etc/pve/qemu-server/&lt;VMID&gt;.conf</code>. Üblicherweise mehr Overhead als LXC, mit getrennter Kernel-Isolationsgrenze.",
"seeAlso": [
{
"label": "VMs und Container verwalten",
"href": "/docs/help-info/vm-ct-commands"
}
]
},
{
"term": "vzdump",
"category": "Proxmox",
"definitionRich": "Proxmox-Sicherungswerkzeug für VMs und CTs. Dateiarchive sind <strong>nicht inkrementell</strong>; PBS-Ziele unterstützen inkrementelle Übertragungen. Aufträge legen Modus (snapshot / suspend / stop), Kompression (etwa zstd, gzip oder lzo), Aufbewahrung und Benachrichtigungen fest.",
"seeAlso": [
{
"label": "Befehle für Sicherung und Wiederherstellung",
"href": "/docs/help-info/backup-commands"
}
]
},
{
"term": "ZFS",
"aliases": [
"Zettabyte File System"
],
"category": "Speicher",
"definitionRich": "Dateisystem und Volumeverwaltung mit Snapshots, Send/Receive-Replikation, Prüfsummen und Kompression. Beschädigte Daten können mit einer gültigen redundanten Kopie repariert werden. Der Lesecache <strong>ARC</strong> nutzt RAM und lässt sich begrenzen.",
"seeAlso": [
{
"label": "Befehle zur ZFS-Verwaltung",
"href": "/docs/help-info/zfs-commands"
}
]
}
]
}
@@ -0,0 +1,235 @@
{
"meta": {
"title": "Proxmox-Sicherungsbefehle — vzdump, qmrestore, pct restore | ProxMenux",
"description": "Referenz der Sicherungs- und Wiederherstellungsbefehle von Proxmox VE: vzdump für VMs und LXC-Container, qmrestore für VMs, pct restore für Container, geplante Sicherungen in /etc/pve/jobs.cfg, Hook-Skripte und auszuschließende Pfade.",
"ogTitle": "Proxmox-Sicherungsbefehle — vzdump, qmrestore, pct restore",
"ogDescription": "Referenz der Befehle vzdump, qmrestore und pct restore zum Sichern und Wiederherstellen von Proxmox VMs und LXC Containern.",
"twitterTitle": "Proxmox Backup Befehle | ProxMenux",
"twitterDescription": "vzdump, qmrestore und pct restore Befehle zum Sichern und Wiederherstellen von Proxmox VMs und Containern."
},
"header": {
"title": "Sicherung und Wiederherstellung",
"description": "Kuratierte Referenz der Befehle vzdump, qmrestore und pct restore für Proxmox Backup-Workflows. Enthält Planung, erweiterte Optionen wie Hook-Skripte / Ausschlusspfade / I / O-Priorität und Backup-Dateiverwaltung.",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Drei Backup-Modi",
"body": "Bei VMs ist <strong>snapshot</strong> eine Live-Sicherung ohne Speicher-Snapshot-Anforderung. <strong>suspend</strong> pausiert die VM davor und verbessert die Konsistenz nicht unbedingt. <strong>stop</strong> fährt sie zunächst herunter; eine zuvor laufende VM kann nach Beginn der Sicherung weiterlaufen. Bei LXC ist es anders: snapshot benötigt Snapshot-fähigen Speicher, suspend nutzt zwei rsync-Durchläufe, und stop hält den Container während der gesamten Sicherung an."
},
"commandGroups": [
{
"title": "VM-Sicherung",
"commands": [
{
"command": "vzdump <vmid>",
"description": "Erstellen Sie ein Backup eines bestimmten VM/CT"
},
{
"command": "vzdump <vmid> --storage <storage>",
"description": "VM auf einen bestimmten Speicher sichern"
},
{
"command": "vzdump <vmid> --mode snapshot",
"description": "Snapshot-Backup erstellen (für VMs)"
},
{
"command": "vzdump <vmid> --mode suspend",
"description": "VM vor der Live-Sicherung pausieren, veralteter suspend-Modus"
},
{
"command": "vzdump <vmid> --mode stop",
"description": "VM vor dem Start der Sicherung herunterfahren"
},
{
"command": "vzdump --all",
"description": "Backup aller VMs und Container"
},
{
"command": "vzdump --all --exclude <vmid1>,<vmid2>",
"description": "Backup aller außer spezifizierten VMs"
}
]
},
{
"title": "Backup-Optionen",
"commands": [
{
"command": "vzdump <vmid> --compress zstd",
"description": "Verwenden Sie zstd Kompression für Backup"
},
{
"command": "vzdump <vmid> --compress gzip --pigz <threads>",
"description": "Verwenden Sie pigz mit mehreren Threads"
},
{
"command": "vzdump <vmid> --storage <storage> --notes-template <text>",
"description": "Notizen zum Backup hinzufügen"
},
{
"command": "vzdump <vmid> --mailto <email>",
"description": "Senden Sie Benachrichtigung E-Mail"
},
{
"command": "vzdump <vmid> --prune-backups keep-last=<n>",
"description": "Halten Sie nur n Backups pro VM"
},
{
"command": "vzdump <vmid> --stdexcludes 0",
"description": "Keine temporären Dateien ausschließen"
},
{
"command": "vzdump <vmid> --quiet 1",
"description": "Ausgabemeldungen unterdrücken"
}
]
},
{
"title": "Backups wiederherstellen",
"commands": [
{
"command": "qmrestore <backup-file> <vmid>",
"description": "VM aus dem Backup wiederherstellen"
},
{
"command": "qmrestore <backup-file> <vmid> --storage <storage>",
"description": "Wiederherstellen zu einem bestimmten Speicher"
},
{
"command": "qmrestore <backup-file> <vmid> --unique",
"description": "VM mit neu erzeugten zufälligen MAC-Adressen wiederherstellen"
},
{
"command": "pct restore <vmid> <backup-file>",
"description": "Container aus dem Backup wiederherstellen"
},
{
"command": "pct restore <vmid> <backup-file> --storage <storage>",
"description": "Container auf einen bestimmten Speicher wiederherstellen"
},
{
"command": "pct restore <vmid> <backup-file> --rootfs <storage>:<size-GiB>",
"description": "Mit Root-Disk auf dem gewählten Speicher und in der gewählten Größe wiederherstellen"
},
{
"command": "pct restore <vmid> <backup-file> --unprivileged 1",
"description": "Wiederherstellen als unprivilegierte CT"
}
]
},
{
"title": "Sicherungsverwaltung",
"commands": [
{
"command": "ls -la /var/lib/vz/dump/",
"description": "Backups am Standardstandort auflisten"
},
{
"command": "find /var/lib/vz/dump/ -name \"*.vma*\"",
"description": "VM Backups finden"
},
{
"command": "find /var/lib/vz/dump/ -name \"*.tar*\"",
"description": "Container-Backups finden"
},
{
"command": "pvesm list <storage> --content backup",
"description": "Backups im spezifischen Speicher auflisten"
},
{
"command": "rm /var/lib/vz/dump/<backup-file>",
"description": "Löschen einer Backup-Datei"
},
{
"command": "cat /etc/vzdump.conf",
"description": "Backup Konfiguration anzeigen"
}
]
},
{
"title": "Geplante Backups",
"commands": [
{
"command": "cat /etc/pve/jobs.cfg",
"description": "Backup-Zeitplan anzeigen"
},
{
"command": "nano /etc/vzdump.conf",
"description": "Backup-Konfiguration bearbeiten"
},
{
"command": "systemctl list-timers",
"description": "systemd-Timer auflisten"
},
{
"command": "systemctl status cron",
"description": "Status des cron-Dienstes prüfen"
},
{
"command": "pvenode task list --typefilter vzdump",
"description": "Abgeschlossene Sicherungsaufgaben auflisten"
},
{
"command": "pvenode task log <upid>",
"description": "Protokoll einer Sicherungsaufgabe anhand der UPID anzeigen"
}
]
},
{
"title": "Fortgeschrittene Operationen",
"commands": [
{
"command": "qmrestore <backup> <vmid> --force",
"description": "Wiederherstellung erzwingen und vorhandene VM überschreiben"
},
{
"command": "vzdump <vmid> --dumpdir <directory>",
"description": "Benutzerdefiniertes Backup-Verzeichnis angeben"
},
{
"command": "vzdump <vmid> --script <script>",
"description": "Hook-Script während des Backups ausführen"
},
{
"command": "vzdump <vmid> --exclude-path <path>",
"description": "Bestimmte Pfade aus dem Backup ausschließen"
},
{
"command": "vzdump <vmid> --ionice <priority>",
"description": "I/O-Priorität für Backup-Prozess festlegen"
},
{
"command": "vzdump <vmid> --lockwait <minutes>",
"description": "Warten auf Sperre"
},
{
"command": "qm importdisk <vmid> <disk-image> <storage>",
"description": "Eine Datenträgerabbilddatei (zum Beispiel raw, qcow2 oder vmdk) als unbenutzten Datenträger importieren, kein vzdump-Sicherungsarchiv"
}
]
}
],
"testRestores": {
"title": "Wiederherstellung testen",
"bodyRich": "Stellen Sie regelmäßig eine Sicherung mit <code>qmrestore --unique</code> auf einer freien Test-VMID wieder her. Starten Sie die VM in einem isolierten Testnetz und prüfen Sie den Inhalt. unique erzeugt neue MAC-Adressen, ändert aber keine statischen IPs oder Anwendungseinstellungen. Testen Sie Container entsprechend mit <code>pct restore</code>."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/help-info/vm-ct-commands",
"label": "VM- und CT-Verwaltung",
"tail": " — qm- und pct-Befehle für den Lebenszyklus der Gäste."
},
{
"href": "/docs/help-info/storage-commands",
"label": "Speicher und Datenträger",
"tail": "- pvesm Storage Management."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
@@ -0,0 +1,162 @@
{
"meta": {
"title": "Proxmox-Befehle für GPU-Passthrough — lspci, VFIO, IOMMU, qm set hostpci | ProxMenux",
"description": "Referenz für GPU-Passthrough auf Proxmox VE: Geräteidentifikation mit lspci, VFIO-Module, IOMMU-Gruppen (intel_iommu / amd_iommu), GRUB- und initramfs-Updates, qm set hostpci0 sowie die Einrichtung von NVIDIA-, AMD- und Intel-GPUs.",
"ogTitle": "Proxmox-Befehle für GPU-Passthrough — lspci, VFIO, IOMMU, qm set hostpci",
"ogDescription": "Referenz zur Prüfung und Einrichtung von GPU-Passthrough auf Proxmox VE: PCI-Geräte, VFIO-Module, IOMMU-Gruppen, Kernel-Startparameter und qm set hostpci.",
"twitterTitle": "Proxmox-Befehle für GPU-Passthrough | ProxMenux",
"twitterDescription": "PCI-Geräte prüfen, VFIO und IOMMU konfigurieren und GPUs an VMs unter Proxmox VE durchreichen."
},
"header": {
"title": "GPU-Passthrough",
"description": "Referenz für GPU-/TPU-Passthrough auf Proxmox: Geräteidentifikation (lspci), Einrichtung der VFIO-Module, IOMMU-Prüfung, initramfs-/GRUB-Updates und Konfiguration je VM (qm set hostpci, machine q35, bios ovmf).",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "IOMMU muss in BIOS / UEFI aktiviert sein",
"body": "Aktivieren Sie IOMMU zuerst in der Firmware: Suchen Sie im BIOS/UEFI nach <em>VT-d</em>, <em>AMD-Vi</em> oder <em>IOMMU</em>. Unter Linux ist es bei AMD und bei Intel mit Proxmox-Kerneln ab 6.8 standardmäßig aktiv. Ältere Intel-Kernel benötigen gegebenenfalls <code>intel_iommu=on</code>. Die optionale Einstellung <code>iommu=pt</code> steuert den IOMMU-Passthrough-Modus und erfordert kein pauschales Abschalten des Host-Framebuffers."
},
"commandGroups": [
{
"title": "Geräteidentifikation",
"commands": [
{
"command": "lspci -nn | grep -i nvidia",
"description": "Liste NVIDIA PCI-Geräte"
},
{
"command": "lspci -nn | grep -i vga",
"description": "Liste aller VGA-kompatiblen Geräte"
},
{
"command": "lspci -nn | grep -i amd",
"description": "Liste der AMD PCI-Geräte"
},
{
"command": "lspci -nnk | grep -A3 VGA",
"description": "VGA-Geräte mit Kerneltreibern auflisten"
},
{
"command": "lspci -v -s <PCI_ID>",
"description": "Detaillierte Informationen für ein bestimmtes PCI-Gerät anzeigen"
}
]
},
{
"title": "VFIO Konfiguration",
"commands": [
{
"command": "dmesg | grep -i vfio",
"description": "VFIO-Modulmeldungen prüfen"
},
{
"command": "cat /etc/modprobe.d/vfio.conf",
"description": "VFIO-Passthrough-Konfiguration prüfen"
},
{
"command": "ls -la /etc/modprobe.d/",
"description": "Liste aller Modprobe-Konfigurationsdateien"
},
{
"command": "cat /etc/modules",
"description": "Beim Start geladene Module anzeigen"
},
{
"command": "lsmod | grep vfio",
"description": "Überprüfen Sie, ob VFIO-Module geladen sind"
}
]
},
{
"title": "IOMMU Konfiguration",
"commands": [
{
"command": "cat /etc/default/grub",
"description": "GRUB Optionen für IOMMU überprüfen"
},
{
"command": "update-grub",
"description": "GRUB-Änderungen anwenden"
},
{
"command": "dmesg | grep -i iommu",
"description": "IOMMU-Nachrichten im Kernelprotokoll überprüfen"
},
{
"command": "dmesg | grep -e DMAR -e IOMMU",
"description": "DMAR und IOMMU Nachrichten überprüfen"
},
{
"command": "find /sys/kernel/iommu_groups/ -type l | sort -V",
"description": "Liste der IOMMU-Gruppen"
}
]
},
{
"title": "Systemaktualisierungen",
"commands": [
{
"command": "update-initramfs -u",
"description": "Initramfs-Änderungen anwenden (VFIO)"
},
{
"command": "update-initramfs -u -k all",
"description": "Aktualisieren Sie Initramfs für alle Kernel"
},
{
"command": "cat /proc/cmdline",
"description": "Aktuelle Kernel-Boot-Parameter anzeigen"
}
]
},
{
"title": "VM Konfiguration",
"commands": [
{
"command": "qm config <vmid> | grep hostpci",
"description": "PCI-Durchgangskonfiguration für eine VM anzeigen"
},
{
"command": "qm set <vmid> -hostpci0 <PCI_ID>,pcie=1,x-vga=1",
"description": "GPU-Passthrough zu einer VM hinzufügen"
},
{
"command": "cat /etc/pve/qemu-server/<vmid>.conf",
"description": "VM-Konfigurationsdatei anzeigen"
},
{
"command": "qm set <vmid> -machine q35",
"description": "Setzen Sie VM auf den Q35-Chipsatz (empfohlen für den Durchgang)"
},
{
"command": "qm set <vmid> -bios ovmf",
"description": "VM auf UEFI/OVMF einstellen, empfohlen bei UEFI-fähigem GPU-ROM"
}
]
}
],
"afterChangesTip": {
"title": "Nach dem Wechsel von GRUB- oder Modprobe-Konfigurationen",
"bodyRich": "Auf Hosts mit GRUB übernehmen Sie Startparameter mit <code>update-grub</code>. Aktualisieren Sie Moduländerungen mit <code>update-initramfs -u -k all</code> und starten Sie neu. Andere Bootloader benötigen ihr eigenes Verfahren. Prüfen Sie mit <code>cat /proc/cmdline</code> die Kernelparameter, mit <code>dmesg | grep -i iommu</code> die IOMMU-Initialisierung und mit <code>find /sys/kernel/iommu_groups/ -type l | sort -V</code> die vorhandenen Gruppen."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/hardware/gpu-vm-passthrough",
"label": "GPU zu VM hinzufügen (Passthrough)",
"tail": "- interaktiver ProxMenux-Flow."
},
{
"href": "/docs/hardware/igpu-acceleration-lxc",
"label": "GPU zu LXC hinzufügen",
"tail": " — Zugriff auf die GPU-Geräte des Hosts mit einem LXC-Container teilen."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
+87
View File
@@ -0,0 +1,87 @@
{
"meta": {
"title": "Proxmox-Befehlsreferenz — qm, pct, vzdump, zpool, pveversion | ProxMenux",
"description": "Ausgewählte wichtige Proxmox-VE- und Linux-Befehle nach Themen: Systemprüfung, VM- und LXC-Verwaltung (qm / pct), Speicher und Datenträger, Netzwerk, Updates, GPU-Passthrough, ZFS, Sicherung und Wiederherstellung sowie CLI-Werkzeuge für den Alltag.",
"ogTitle": "Proxmox-Befehlsreferenz — qm, pct, vzdump, zpool",
"ogDescription": "Ausgewählte hilfreiche Proxmox-VE- und Linux-Befehle nach Themen: System, VM/CT, Speicher, Netzwerk, Updates, GPU-Passthrough, ZFS, Sicherungen und CLI-Werkzeuge.",
"twitterTitle": "Proxmox-Befehlsreferenz | ProxMenux",
"twitterDescription": "Ausgewählte hilfreiche Proxmox-VE- und Linux-Befehle nach Themen."
},
"header": {
"title": "Hilfe und Informationen",
"description": "Ausgewählte nützliche Linux- und Proxmox-VE-Befehle nach Themen. Die neun Kategorien reichen von einer kurzen pveversion-Abfrage bis zu mehrzeiligen Abläufen mit zfs send/receive. Die Sammlung ergänzt die GPU-, Datenträger- und Freigabebereiche von ProxMenux als zentrale Referenz.",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Was das ist",
"body": "Ein nach Themen geordneter Katalog der Befehle für den Alltag auf einem Proxmox-Host. In ProxMenux können Sie einen Befehl direkt über seine Nummer starten oder einen eigenen an der Eingabeaufforderung einfügen. Auf dieser Website steht jede Kategorie als Tabelle zum Kopieren bereit."
},
"opening": {
"heading": "Öffnen des Menüs",
"body": "Im Hauptmenü von ProxMenux drücken Sie <kbd>h</kbd>. Sie werden sehen:",
"imageAlt": "Hilfe- und Infomenü mit 9-Befehlskategorien"
},
"categories": {
"heading": "Die neun Kategorien",
"options": [
{
"icon": "Terminal",
"href": "/docs/help-info/system-commands",
"title": "Nützliche Systembefehle",
"description": "pveversion, uptime, free, journalctl, hostnamectl, Informationen zum aktuellen Benutzer, lynis-Audit und fastfetch."
},
{
"icon": "Cpu",
"href": "/docs/help-info/vm-ct-commands",
"title": "VM- und CT-Verwaltung",
"description": "qm list / config / start / stop / migrate, pct list / config / enter, Snapshots und Klonen."
},
{
"icon": "HardDrive",
"href": "/docs/help-info/storage-commands",
"title": "Speicher und Datenträger",
"description": "lsblk, blkid, smartctl, Informationen zu Mounts, pvesm status und LVM-Befehle."
},
{
"icon": "Network",
"href": "/docs/help-info/network-commands",
"title": "Netzwerkbefehle",
"description": "ip / ss / nmcli, Prüfung von Netzwerkbrücken, ping / traceroute, DNS-Abfragen und fail2ban-client."
},
{
"icon": "Package",
"href": "/docs/help-info/update-commands",
"title": "Updates und Pakete",
"description": "apt update / dist-upgrade, apt-cache policy, dpkg-Abfragen und Prüfung der Repository-Dateien."
},
{
"icon": "Cpu",
"href": "/docs/help-info/gpu-commands",
"title": "GPU-Passthrough",
"description": "Prüfungen mit lspci / dmesg, Kontrolle der IOMMU-Aktivierung, Bindung an vfio-pci und GPU-Nutzung auf dem Host."
},
{
"icon": "Database",
"href": "/docs/help-info/zfs-commands",
"title": "ZFS-Verwaltung",
"description": "zpool / zfs für Status, Datasets, Snapshots, send/receive, ARC-Anpassung und TRIM."
},
{
"icon": "Archive",
"href": "/docs/help-info/backup-commands",
"title": "Sicherung und Wiederherstellung",
"description": "vzdump, qmrestore / pct restore, Hilfswerkzeuge für Proxmox Backup Server und Snapshot-Vorgänge."
},
{
"icon": "Wrench",
"href": "/docs/help-info/tools-commands",
"title": "System-CLI-Tools",
"description": "tmux, screen, htop / btop, ncdu, jq, dig, lsof, watch — Administrationswerkzeuge für den Alltag."
}
]
},
"tip": {
"title": "Durchsuchbar aus der globalen Suche",
"body": "Jeder Befehl auf diesen Seiten wird durch die Dokumentationssuche indiziert. Wenn Sie sich an ein Flag oder Fragment erinnern, aber nicht, auf welcher Seite es sich befindet, klicken Sie auf die Suchleiste oben - Sie landen direkt auf dem richtigen Eintrag."
}
}
@@ -0,0 +1,174 @@
{
"meta": {
"title": "Proxmox-Netzwerkbefehle — ip, ping, ss, pve-firewall, iptables | ProxMenux",
"description": "Referenz für die Netzwerkkonfiguration auf Proxmox-VE-Hosts: ip / ip link / ip addr, ping, traceroute, mtr, ss, ethtool, dig und nslookup sowie pve-firewall, iptables und nftables für Paketfilter. Prüfung von Netzwerkbrücken, Bonds und VLANs.",
"ogTitle": "Proxmox-Netzwerkbefehle — ip, ping, ss, pve-firewall, iptables",
"ogDescription": "Netzwerkbefehle für Proxmox VE: Schnittstellenprüfung, Verbindungstests, Überwachung, Firewall (pve-firewall, iptables, nftables) und DNS-Abfragen.",
"twitterTitle": "Proxmox-Netzwerkbefehle | ProxMenux",
"twitterDescription": "Netzwerkinspektion, Test, Konfiguration und Firewall-Befehle für Proxmox VE."
},
"header": {
"title": "Netzwerkbefehle",
"description": "Ausgewählte Befehle für das Proxmox-Hostnetzwerk: Schnittstelleninformationen, Verbindungstests, Konfiguration, Verkehrsüberwachung und Firewall-Verwaltung. Enthält ip / ss / nmcli / ethtool / tcpdump / pve-firewall.",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Schneller Überblick über die Schnittstellen",
"body": "<code>ip a</code> zeigt jede Schnittstelle mit ihren IP-Adressen und ihrer MAC-Adresse. <code>ip r</code> zeigt die Routingtabelle. Zusammen beantworten sie in Sekunden die meisten Fragen dazu, ob eine Schnittstelle richtig konfiguriert ist."
},
"commandGroups": [
{
"title": "Netzinformationen",
"commands": [
{
"command": "ip a",
"description": "Netzwerkschnittstellen und IPs anzeigen"
},
{
"command": "ip r",
"description": "Routing-Tabelle anzeigen"
},
{
"command": "ip -s link",
"description": "Verkehrsstatistiken pro Schnittstelle anzeigen"
},
{
"command": "brctl show",
"description": "Konfigurierte Netzwerkbrücken anzeigen"
},
{
"command": "cat /etc/network/interfaces",
"description": "Rohe Netzwerkkonfiguration anzeigen"
}
]
},
{
"title": "Netzwerktests",
"commands": [
{
"command": "ping <host>",
"description": "Überprüfen Sie die Konnektivität mit einem anderen Host"
},
{
"command": "traceroute <host>",
"description": "Route zu einem Host verfolgen"
},
{
"command": "mtr <host>",
"description": "Ping und Traceroute in Echtzeit kombinieren"
},
{
"command": "dig <domain>",
"description": "DNS-Suche nach einer Domain"
},
{
"command": "nslookup <domain>",
"description": "Alternative DNS-Abfrage"
}
]
},
{
"title": "Netzwerkkonfiguration",
"commands": [
{
"command": "ifreload -a",
"description": "Netzwerkkonfiguration neu laden (ifupdown2)"
},
{
"command": "ethtool <iface>",
"description": "Informationen zum Ethernet-Gerät anzeigen"
},
{
"command": "resolvectl status",
"description": "DNS-Auflösungsstatus anzeigen"
},
{
"command": "nmcli device show",
"description": "Netzwerkgerätedetails anzeigen (wenn NetworkManager verwendet wird)"
},
{
"command": "ip link set <iface> up",
"description": "Netzwerkschnittstelle aktivieren"
},
{
"command": "ip link set <iface> down",
"description": "Netzwerkschnittstelle deaktivieren"
}
]
},
{
"title": "Netzüberwachung",
"commands": [
{
"command": "ss -tuln",
"description": "Abhörports anzeigen (TCP/UDP)"
},
{
"command": "netstat -tuln",
"description": "Alternative Anzeige der lauschenden Ports"
},
{
"command": "lsof -i",
"description": "Liste offener Netzwerkdateien und Verbindungen"
},
{
"command": "tcpdump -i <iface>",
"description": "Pakete auf dem Interface erfassen"
},
{
"command": "iftop -i <iface>",
"description": "Überwachen der Bandbreitennutzung an der Schnittstelle"
}
]
},
{
"title": "Firewall-Verwaltung",
"commands": [
{
"command": "iptables -L -n -v",
"description": "Aktive Firewall-Regeln anzeigen (iptables)"
},
{
"command": "nft list ruleset",
"description": "Nftables-Regeln anzeigen"
},
{
"command": "pve-firewall status",
"description": "Überprüfen Sie den Proxmox-Firewall-Status"
},
{
"command": "pve-firewall compile",
"description": "Firewall-Regeln für alle Knoten kompilieren"
},
{
"command": "pve-firewall reload",
"description": "Laden Sie die Proxmox-Firewallregeln neu"
}
]
}
],
"iptablesTip": {
"title": "iptables vs nftables",
"bodyRich": "Der klassische Dienst <code>pve-firewall</code> erzeugt iptables-Regeln. Der alternative Dienst proxmox-firewall verwendet <strong>nftables</strong>. Prüfen Sie das iptables-Backend mit <code>iptables -L -n -v</code> und das nftables-Backend mit <code>nft list ruleset</code>. Verwenden Sie die Werkzeuge des aktiven Backends; die Listen sind nicht austauschbar."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/network",
"label": "Netzwerkmanagement",
"tail": "— ProxMenux interaktive Netzwerktools (Brückenanalyse, persistente Namen, Überwachung)."
},
{
"href": "/docs/help-info/tools-commands",
"label": "System-CLI-Tools",
"tail": " — weitere Werkzeuge zur Netzwerküberwachung."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
@@ -0,0 +1,232 @@
{
"meta": {
"title": "Proxmox-Befehle für Speicher und Datenträger — lsblk, LVM, pvesm, qm importdisk | ProxMenux",
"description": "Speicher- und Datenträgerbefehle auf Proxmox VE: lsblk, blkid, parted, lvdisplay, vgdisplay, pvs, mount, df, du, ncdu, pvesm status sowie qm importdisk und qemu-img convert für VM-Datenträger.",
"ogTitle": "Proxmox-Befehle für Speicher und Datenträger — lsblk, LVM, pvesm, qm importdisk",
"ogDescription": "Referenz von Speicher- und Festplattenbefehlen auf Proxmox VE — Festplatteninspektion, LVM, Mounts, Proxmox Storage Management, VM Festplattenimport und Bildkonvertierung.",
"twitterTitle": "Proxmox Speicherbefehle | ProxMenux",
"twitterDescription": "Festplatteninspektion, Mount-Info, LVM-Verwaltung, Proxmox-Speicher und VM-Festplattenimport- / -konvertierungsbefehle."
},
"header": {
"title": "Speicher und Datenträger",
"description": "Kuratierte Referenz für die Speicherinspektion auf Proxmox-Hosts: Blockgeräte, Partitionen, Mounts, LVM-Volumes, Proxmox-Speicherkonfiguration und einige VM-Festplattenoperationen (importdisk, qemu-img convert).",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Schneller Überblick über die Datenträger",
"body": "<code>lsblk</code> zeigt Blockgeräte und Partitionen als Baum. Prüfen Sie dauerhafte Kennungen mit <code>ls -lh /dev/disk/by-id/</code>: Sie bleiben für denselben Datenträger normalerweise über Neustarts und geänderte Gerätereihenfolgen hinweg stabil. Ein Plattentausch oder eine andere Identitätsdarstellung durch den Controller kann den by-id-Pfad ändern."
},
"commandGroups": [
{
"title": "Laufwerksinformationen",
"commands": [
{
"command": "lsblk",
"description": "Blockgeräte und Partitionen auflisten"
},
{
"command": "fdisk -l",
"description": "Listen Sie Festplatten mit detaillierten Informationen auf"
},
{
"command": "blkid",
"description": "UUID und Dateisystemtyp von Blockgeräten anzeigen"
},
{
"command": "ls -lh /dev/disk/by-id/",
"description": "Listen Sie persistente Festplattenkennungen auf"
},
{
"command": "parted -l",
"description": "Detailliertes Partitionslayout mit GPT-Informationen"
}
]
},
{
"title": "Speichernutzung",
"commands": [
{
"command": "df -h",
"description": "Festplattennutzung nach Einhängepunkt anzeigen"
},
{
"command": "du -sh /path",
"description": "Größe eines Verzeichnisses anzeigen"
},
{
"command": "mount | grep ^/dev",
"description": "Gemountete Speichergeräte anzeigen"
},
{
"command": "cat /proc/mounts",
"description": "Zeigt alle aktiven Mounts vom Kernel an"
}
]
},
{
"title": "LVM-Verwaltung",
"commands": [
{
"command": "pvdisplay",
"description": "Physische Volumes (LVM) anzeigen"
},
{
"command": "vgdisplay",
"description": "Volumengruppen anzeigen (LVM)"
},
{
"command": "lvdisplay",
"description": "Logische Volumes (LVM) anzeigen"
},
{
"command": "pvs",
"description": "Übersichtliche Ausgabe physischer Datenträger"
},
{
"command": "vgs",
"description": "Übersichtliche Ausgabe von Volumengruppen"
},
{
"command": "lvs",
"description": "Übersichtliche Ausgabe logischer Volumes"
}
]
},
{
"title": "Proxmox-Speicher",
"commands": [
{
"command": "cat /etc/pve/storage.cfg",
"description": "Proxmox-Speicherkonfiguration anzeigen"
},
{
"command": "pvesm status",
"description": "Status aller Speicherpools anzeigen"
},
{
"command": "pvesm status --enabled 1",
"description": "Aktivierte konfigurierte Speicher auflisten"
},
{
"command": "pvesm list <storage>",
"description": "Listen Sie den Inhalt eines bestimmten Speichers auf"
},
{
"command": "pvesm scan nfs <server>",
"description": "NFS-Exporte eines Servers ermitteln"
}
]
},
{
"title": "Plattenaktionen",
"commands": [
{
"command": "qm importdisk <vmid> <image_path> <storage>",
"description": "Disk-Image als ungenutzten VM-Datenträger importieren und anschließend gesondert anschließen"
},
{
"command": "qm set <vmid> -<bus><index> <disk_path>",
"description": "Weisen Sie die physische Festplatte VM zu (Durchgangsmodus)"
},
{
"command": "qemu-img convert -O <format> <input> <output>",
"description": "Format eines nicht aktiv verwendeten Disk-Images konvertieren"
}
]
},
{
"title": "SMART-Zustand der Datenträger",
"commands": [
{
"command": "smartctl --scan",
"description": "Liste SMART-fähige Geräte auf dem Host"
},
{
"command": "smartctl -i /dev/<disk>",
"description": "Grundlegende Geräteinformationen: Modell, Firmware und Seriennummer"
},
{
"command": "smartctl -H /dev/<disk>",
"description": "Schneller Gesundheitscheck — insgesamt PASSED / FAILED"
},
{
"command": "smartctl -A /dev/<disk>",
"description": "Nur SMART-Attribute (Rohwerte, Schwellenwerte)"
},
{
"command": "smartctl -a /dev/<disk>",
"description": "Vollständige SMART-Informationen — Informationen + Attribute + Selbsttestprotokoll"
},
{
"command": "smartctl -t short /dev/<disk>",
"description": "Starten Sie einen kurzen Selbsttest (~2 Minuten, läuft im Hintergrund)"
},
{
"command": "smartctl -t long /dev/<disk>",
"description": "Starten Sie einen langen Selbsttest (Stunden, läuft im Hintergrund)"
},
{
"command": "smartctl -l selftest /dev/<disk>",
"description": "Selbsttestprotokoll anzeigen (Ergebnisse vergangener Tests)"
},
{
"command": "smartctl -X /dev/<disk>",
"description": "Abbruch des laufenden Selbsttests"
}
]
},
{
"title": "NVMe-Datenträgerzustand",
"commands": [
{
"command": "nvme list",
"description": "Liste NVMe-Geräte, die für den Kernel sichtbar sind"
},
{
"command": "nvme smart-log /dev/<nvme>",
"description": "NVMe-spezifisches SMART-Log (Temperatur, Verschleiß, Fehler)"
},
{
"command": "nvme id-ctrl /dev/<nvme>",
"description": "Controller-Info (Modell, Firmware, Fähigkeiten)"
},
{
"command": "nvme error-log /dev/<nvme>",
"description": "Letzte NVMe-Fehlerprotokolleinträge"
}
]
}
],
"lvmTip": {
"title": "LVM kurze vs lange Befehle",
"bodyRich": "Beide Formen stehen zur Verfügung. <code>pvs</code> / <code>vgs</code> / <code>lvs</code> erzeugen kompakte Tabellen mit je einer Zeile pro physischem Volume, Volumengruppe beziehungsweise logischem Volume. <code>pvdisplay</code> / <code>vgdisplay</code> / <code>lvdisplay</code> liefern ausführlichere mehrzeilige Angaben. Für alltägliche Prüfungen sind die kurzen Formen praktisch."
},
"smartInfo": {
"title": "SMART für SATA/SAS im Vergleich zu NVMe",
"bodyRich": "<strong>SATA-/SAS-Datenträger einschließlich SSDs</strong> lassen sich mit <code>smartctl</code> aus <code>smartmontools</code> prüfen, das standardmäßig in Proxmox installiert ist. Geben Sie das Gerät an, etwa <code>/dev/sda</code> oder <code>/dev/sdb</code>. <strong>NVMe-Datenträger</strong> verwenden ein anderes natives Protokoll. Auch <code>smartctl</code> unterstützt sie. <code>nvme</code> aus <code>nvme-cli</code> bietet spezielle Abfragen für Controller, Namespaces und den NVMe-Zustand. Installieren Sie es bei Bedarf mit <code>apt install nvme-cli</code>."
},
"selfTestWarn": {
"title": "Selbsttests laufen im Hintergrund",
"bodyRich": "Auf unterstützten Laufwerken starten <code>smartctl -t short /dev/&lt;disk&gt;</code> und <code>smartctl -t long /dev/&lt;disk&gt;</code> Hintergrundtests und kehren sofort zurück. Prüfen Sie den Fortschritt mit <code>smartctl -a /dev/&lt;disk&gt;</code> anhand von \"Self-test routine in progress\" oder lesen Sie nach Abschluss <code>smartctl -l selftest /dev/&lt;disk&gt;</code>. Kurze Tests dauern oft etwa zwei Minuten, lange Tests mitunter Stunden. Das Laufwerk bleibt nutzbar, die I/O-Leistung kann jedoch sinken."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/help-info/zfs-commands",
"label": "ZFS-Verwaltung",
"tail": "- zpool / zfs-Befehle für ZFS-gestützten Speicher."
},
{
"href": "/docs/disk-manager",
"label": "Festplattenmanager",
"tail": " — interaktive ProxMenux-Abläufe für Datenträgerdurchreichung, Import, Formatierung und SMART."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
@@ -0,0 +1,158 @@
{
"meta": {
"title": "Proxmox-VE-Systembefehle — pveversion, uptime, journalctl, systemctl | ProxMenux",
"description": "Proxmox-VE- und Linux-Systembefehle für Versionen, Betriebszeit, Speicher, Dienste, Protokolle und Benutzer sowie Audit- und Übersichtswerkzeuge. Enthält einen Dienstneustart; nicht alle Beispiele sind reine Lesezugriffe.",
"ogTitle": "Proxmox-VE-Systembefehle — pveversion, uptime, journalctl, systemctl",
"ogDescription": "Proxmox-VE- und Linux-Systembefehle für Version, Betriebszeit, Dienste, Protokolle und Benutzerinformationen, einschließlich Dienstverwaltung und Audit-Werkzeugen.",
"twitterTitle": "Proxmox VE Systembefehle | ProxMenux",
"twitterDescription": "Wesentliche Systeminspektionsbefehle für Proxmox VE — Version, Status, Dienste, Protokolle, Benutzerinformationen."
},
"header": {
"title": "Nützliche Systembefehle",
"description": "Befehle zur Prüfung des Proxmox-Hosts: Version, Kernel, Betriebszeit, Speicher, Status der Weboberfläche, aktuelle Protokolle und angemeldete Benutzer sowie Audit- und Übersichtswerkzeuge. Die meisten lesen den Zustand aus. systemctl restart pveproxy startet jedoch den Web-Proxy neu, und Audit-Werkzeuge können Berichte und Protokolle schreiben.",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Was das ist",
"body": "Dieselbe nummerierte Liste wie unter <em>Nützliche Systembefehle</em> in ProxMenux. Kopieren Sie einen Befehl über die Schaltfläche oder schlagen Sie die genaue Option nach."
},
"commandGroups": [
{
"title": "Systeminformationen",
"commands": [
{
"command": "pveversion",
"description": "Proxmox-Version anzeigen"
},
{
"command": "pveversion -v",
"description": "Detaillierte Informationen zur Proxmox-Version"
},
{
"command": "hostnamectl",
"description": "System-Hostname und Kernel-Informationen"
},
{
"command": "uname -a",
"description": "Kernel- und Architekturinformationen"
},
{
"command": "cat /etc/os-release",
"description": "Details zur Betriebssystemversion"
}
]
},
{
"title": "Systemstatus",
"commands": [
{
"command": "uptime",
"description": "Betriebszeit des Systems"
},
{
"command": "uptime -p",
"description": "Betriebszeit in gut lesbarem Format"
},
{
"command": "free -h",
"description": "RAM- und Swap-Nutzung"
},
{
"command": "who -b",
"description": "Letzte Systemstartzeit"
},
{
"command": "last -x | grep shutdown",
"description": "Frühere Abschaltungen"
}
]
},
{
"title": "Dienstverwaltung",
"commands": [
{
"command": "systemctl status pveproxy",
"description": "Überprüfen Sie den Status der Proxmox-Web-Benutzeroberfläche"
},
{
"command": "systemctl restart pveproxy",
"description": "Starten Sie den Web-UI-Proxy neu"
},
{
"command": "journalctl -xe",
"description": "Systemfehler und Protokolle"
},
{
"command": "dmesg -T | tail -n 50",
"description": "Letzte 50 Kernel-Protokollzeilen"
}
]
},
{
"title": "Benutzerinformationen",
"commands": [
{
"command": "whoami",
"description": "Aktueller Benutzer"
},
{
"command": "id",
"description": "Aktuelle Benutzer-UID, GID und Gruppen"
},
{
"command": "who",
"description": "Angemeldete Benutzer"
},
{
"command": "w",
"description": "Benutzeraktivität und Betriebszeit"
},
{
"command": "uptime && w",
"description": "Betriebszeit und wer angemeldet ist"
},
{
"command": "cut -d: -f1,3,4 /etc/passwd",
"description": "Alle Benutzer mit UID und GID"
},
{
"command": "getent passwd | column -t -s :",
"description": "Lesbare Benutzertabelle (UID, Shell usw.)"
}
]
},
{
"title": "Werkzeuge für Prüfungen und Zusammenfassungen",
"commands": [
{
"command": "lynis audit system",
"description": "Führen Sie ein vollständiges Systemsicherheitsaudit durch"
},
{
"command": "fastfetch",
"description": "Systemzusammenfassung im ASCII-Format anzeigen"
}
]
}
],
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/help-info/update-commands",
"label": "Updates und Pakete",
"tail": " — apt- und PVE-Upgrade-Befehle."
},
{
"href": "/docs/help-info/tools-commands",
"label": "System-CLI-Tools",
"tail": " — htop, btop, ncdu und ähnliche Werkzeuge."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
@@ -0,0 +1,276 @@
{
"meta": {
"title": "Linux-CLI-Werkzeuge für Proxmox — htop, iftop, journalctl, rsync, tmux | ProxMenux",
"description": "Linux-CLI-Werkzeuge für die tägliche Proxmox-VE-Verwaltung: Überwachung (htop, atop, glances, iotop), Netzwerk (iftop, nmap, mtr, ss), Dateien und Text (find, grep, journalctl), Leistung (iostat, perf, strace), Sicherheit (fail2ban, lynis, lsof) und Fernverwaltung (ssh, rsync, tmux).",
"ogTitle": "Linux-CLI-Werkzeuge für Proxmox — htop, iftop, journalctl, rsync, tmux",
"ogDescription": "CLI-Tools für die Proxmox VE-Verwaltung, gruppiert nach Zweck: Überwachung, Netzwerk, Datei/Text, Leistung, Sicherheit und Remote-Admin.",
"twitterTitle": "Linux-CLI-Werkzeuge für Proxmox | ProxMenux",
"twitterDescription": "CLI-Werkzeuge für die tägliche Proxmox-VE-Verwaltung, nach Zweck gruppiert."
},
"header": {
"title": "System-CLI-Tools",
"description": "CLI-Werkzeuge für die tägliche Proxmox-Hostverwaltung nach Zweck: Überwachung, Netzwerk, Dateien und Text, Leistungsanalyse, Sicherheit, Fernverwaltung und Systemkonfiguration.",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Die meisten werden nach der Installation eingerichtet",
"body": "Wenn Sie das ProxMenux-Skript nach der Installation mit der Standardauswahl ausgeführt haben, sind die meisten Werkzeuge bereits vorhanden. Fehlende Werkzeuge bietet der <utilsLink>Installer für Systemwerkzeuge</utilsLink> in vordefinierten Gruppen an, etwa Basis, Entwicklung, Netzwerk und Analyse."
},
"commandGroups": [
{
"title": "Systemüberwachung",
"commands": [
{
"command": "htop",
"description": "Interaktive Prozessanzeige mit CPU/Speichernutzung"
},
{
"command": "top",
"description": "Linux-Prozesse in Echtzeit anzeigen"
},
{
"command": "atop",
"description": "Fortschrittlicher System- und Prozessmonitor"
},
{
"command": "glances",
"description": "Systemüberwachungstool mit Webinterface"
},
{
"command": "nmon",
"description": "Leistungsüberwachungsinstrument"
},
{
"command": "iotop",
"description": "Datenträger-I/O der Prozesse überwachen"
},
{
"command": "vmstat 1",
"description": "Virtuelle Speicherstatistiken jede Sekunde melden"
}
]
},
{
"title": "Netzwerk-Tools",
"commands": [
{
"command": "iftop",
"description": "Anzeige der Bandbreitennutzung auf einer Schnittstelle"
},
{
"command": "nmap <host>",
"description": "Netzwerkexploration und Sicherheitsscanning"
},
{
"command": "tcpdump -i <interface>",
"description": "Netzwerkverkehr mitschneiden"
},
{
"command": "netstat -tuln",
"description": "Netzwerkverbindungen anzeigen"
},
{
"command": "ss -tuln",
"description": "Ein weiteres Dienstprogramm zur Untersuchung von Sockets"
},
{
"command": "mtr <host>",
"description": "Netzwerkdiagnose-Tool kombiniert Ping und Traceroute"
},
{
"command": "iperf3 -s",
"description": "Führen Sie iperf-Server für Bandbreitentests aus"
}
]
},
{
"title": "Datei- und Texttools",
"commands": [
{
"command": "find / -name <filename>",
"description": "Dateien nach Namen finden"
},
{
"command": "grep -r 'pattern' /path",
"description": "Suche nach Mustern in Dateien"
},
{
"command": "sed -i 's/old/new/g' file",
"description": "Text in Dateien ersetzen"
},
{
"command": "awk '{print $1}' file",
"description": "Textverarbeitungswerkzeug"
},
{
"command": "tail -f /var/log/syslog",
"description": "Log-Datei in Echtzeit verfolgen"
},
{
"command": "less /var/log/messages",
"description": "Datei ansehen mit Paginierung"
},
{
"command": "journalctl -f",
"description": "Folgen Sie systemd Journal Logs"
}
]
},
{
"title": "Leistungsanalyse",
"commands": [
{
"command": "iostat -x 1",
"description": "CPU- und I/O-Statistiken ausgeben"
},
{
"command": "mpstat -P ALL 1",
"description": "CPU-Auslastung ausgeben"
},
{
"command": "perf top",
"description": "Systemprofilierungstool"
},
{
"command": "strace <command>",
"description": "Systemaufrufe und Signale verfolgen"
},
{
"command": "lsof",
"description": "Offene Dateien auflisten"
},
{
"command": "pstree",
"description": "Prozessbaum anzeigen"
},
{
"command": "slabtop",
"description": "Anzeige von Kernel-Slab-Cache-Informationen"
}
]
},
{
"title": "Sicherheits-Tools",
"commands": [
{
"command": "fail2ban-client status",
"description": "Fail2Ban-Status anzeigen"
},
{
"command": "chage -l <username>",
"description": "Passwortverfallsinformationen anzeigen"
},
{
"command": "lastlog",
"description": "Letztes Login aller Benutzer anzeigen"
},
{
"command": "last",
"description": "Liste der zuletzt angemeldeten Benutzer"
},
{
"command": "w",
"description": "Zeigen Sie, wer angemeldet ist und was sie tun"
},
{
"command": "lynis audit system",
"description": "Sicherheitsaudit-Tool"
},
{
"command": "openssl s_client -connect host:port",
"description": "SSL/TLS-Verbindungen testen"
}
]
},
{
"title": "Fernverwaltung",
"commands": [
{
"command": "ssh <user>@<host>",
"description": "Sichere Shell-Verbindung"
},
{
"command": "scp <file> <user>@<host>:<path>",
"description": "Dateien sicher kopieren"
},
{
"command": "rsync -avz <src> <dest>",
"description": "Dateien/Ordner synchronisieren"
},
{
"command": "screen",
"description": "Terminal-Multiplexer"
},
{
"command": "tmux",
"description": "Alternativer Terminal-Multiplexer"
},
{
"command": "ssh-keygen -t rsa -b 4096",
"description": "SSH-Schlüsselpaar erzeugen"
},
{
"command": "ssh-copy-id <user>@<host>",
"description": "Kopieren des SSH-Schlüssels zum Server"
}
]
},
{
"title": "Systemkonfiguration",
"commands": [
{
"command": "systemctl status <service>",
"description": "Dienststatus prüfen"
},
{
"command": "journalctl -u <service>",
"description": "Dienstprotokolle anzeigen"
},
{
"command": "timedatectl",
"description": "Systemzeit und -datum verwalten"
},
{
"command": "hostnamectl",
"description": "Hostnamen verwalten"
},
{
"command": "localectl",
"description": "Gebietsschema und Tastatur des Systems verwalten"
},
{
"command": "update-alternatives --config <name>",
"description": "Systemalternativen konfigurieren"
},
{
"command": "dpkg-reconfigure <package>",
"description": "Rekonfigurieren eines installierten Pakets"
}
]
}
],
"tmuxTip": {
"title": "Verwenden Sie tmux / screen für lang laufende Befehle",
"bodyRich": "Führen Sie lange Aufgaben wie Sicherungen, größere Upgrades oder rsync-Übertragungen in <code>tmux</code> oder <code>screen</code> aus, damit ein SSH-Abbruch die Terminalsitzung nicht beendet. Verbinden Sie sich für eine tmux-Sitzung wieder mit demselben Host und Benutzer und führen Sie <code>tmux attach</code> aus. Screen-Sitzungen haben einen eigenen Befehl zum Wiederverbinden."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/utils/system-utils",
"label": "Installationsprogramm für Systemdienstprogramme",
"tail": " — fehlende Werkzeuge installieren."
},
{
"href": "/docs/help-info/system-commands",
"label": "Nützliche Systembefehle",
"tail": " — Proxmox-spezifische Befehle zur Systemprüfung."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
@@ -0,0 +1,170 @@
{
"meta": {
"title": "Proxmox-Befehle für Updates und Pakete — apt, pveupgrade, dpkg | ProxMenux",
"description": "Update- und Paketbefehle für Proxmox VE: apt update, apt upgrade, apt dist-upgrade, pveupgrade, dpkg -l, Abfragen zu Paketen und Repository-Konfiguration in /etc/apt/sources.list.d/.",
"ogTitle": "Proxmox-Befehle für Updates und Pakete — apt, pveupgrade, dpkg",
"ogDescription": "Befehle apt, pveupgrade und dpkg, um Proxmox VE auf dem neuesten Stand zu halten — Systemupgrades, Paketverwaltung, Repository-Konfiguration.",
"twitterTitle": "Proxmox-Update-Befehle | ProxMenux",
"twitterDescription": "Befehle mit apt und pveupgrade zur Verwaltung von Updates und Paketen auf Proxmox-VE-Hosts."
},
"header": {
"title": "Updates und Pakete",
"description": "Ausgewählte Befehle mit apt und für Proxmox-Upgrades: Systemupdates, Installation, Entfernung und vollständige Bereinigung von Paketen, Paketabfragen mit apt-cache policy und dpkg -l sowie Prüfung der Repository-Konfiguration.",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Aktualisieren Sie den Index immer zuerst",
"body": "<code>apt update</code> aktualisiert den lokalen Paketindex aus den konfigurierten Repositorys. Ohne diesen Schritt kann <code>apt install</code> veraltete Versionen verwenden oder mit „Unable to locate package“ scheitern."
},
"commandGroups": [
{
"title": "Systemaktualisierungen",
"commands": [
{
"command": "apt update && apt upgrade -y",
"description": "Paketlisten aktualisieren und installierte Pakete aktualisieren (apt upgrade)"
},
{
"command": "apt dist-upgrade -y",
"description": "Vollständiges System-Upgrade, einschließlich Abhängigkeiten"
},
{
"command": "apt update",
"description": "Nur Paketlisten aktualisieren"
},
{
"command": "apt upgrade",
"description": "Nur Pakete aktualisieren (interaktiv)"
},
{
"command": "apt full-upgrade",
"description": "Pakete mit Auflösung von Abhängigkeiten aktualisieren (interaktiv)"
}
]
},
{
"title": "Proxmox-Aktualisierungen",
"commands": [
{
"command": "pveupdate",
"description": "Proxmox-Paketlisten aktualisieren"
},
{
"command": "pveupgrade",
"description": "Interaktives Proxmox-Paketupgrade starten"
},
{
"command": "pve8to9 --full",
"description": "Bereitschaft für das Upgrade von PVE 8 auf 9 prüfen, ohne es durchzuführen"
},
{
"command": "ceph versions",
"description": "Ceph-Daemon-Versionen vor der Planung eines Ceph-Upgrades anzeigen"
}
]
},
{
"title": "Paketverwaltung",
"commands": [
{
"command": "apt autoremove --purge",
"description": "Entfernen Sie nicht verwendete Pakete und deren Konfiguration"
},
{
"command": "apt clean",
"description": "Löschen Sie das lokale Repository der abgerufenen Paketdateien"
},
{
"command": "apt autoclean",
"description": "Löschen Sie nur veraltete Paketdateien"
},
{
"command": "apt install <package>",
"description": "Installieren Sie ein bestimmtes Paket"
},
{
"command": "apt remove <package>",
"description": "Paket entfernen"
},
{
"command": "apt purge <package>",
"description": "Entfernen eines Pakets und seiner Konfigurationsdateien"
}
]
},
{
"title": "Paketinformationen",
"commands": [
{
"command": "apt list --installed",
"description": "Liste aller installierten Pakete"
},
{
"command": "apt search <keyword>",
"description": "Pakete nach Keyword suchen"
},
{
"command": "apt show <package>",
"description": "Detaillierte Informationen zu einem Paket anzeigen"
},
{
"command": "dpkg -l",
"description": "Liste aller installierten Pakete (alternative)"
},
{
"command": "dpkg -l | grep <keyword>",
"description": "Installierte Pakete nach Keyword suchen"
},
{
"command": "apt-cache policy <package>",
"description": "Paketversionen und Prioritäten anzeigen"
}
]
},
{
"title": "Repository-Verwaltung",
"commands": [
{
"command": "cat /etc/apt/sources.list",
"description": "Haupt-APT-Repository-Quellen anzeigen"
},
{
"command": "ls -la /etc/apt/sources.list.d/",
"description": "Liste zusätzlicher Repository-Quelldateien"
},
{
"command": "cat /etc/apt/sources.list.d/pve-enterprise.list",
"description": "Proxmox-Enterprise-Repository-Konfiguration in der .list-Datei von PVE 8 anzeigen"
},
{
"command": "apt-key list",
"description": "Veraltete Repository-Signaturschlüssel auflisten, sofern apt-key verfügbar ist"
}
]
}
],
"backupWarn": {
"title": "Machen Sie ein Backup vor größeren Upgrades",
"bodyRich": "Für reguläre Updates empfiehlt Proxmox <code>apt update &amp;&amp; apt full-upgrade</code>. Prüfen Sie die vorgeschlagenen Paketänderungen vor der Bestätigung. Für <strong>Upgrades auf eine neue Hauptversion</strong> (PVE 8 → 9) verwenden Sie den ProxMenux-Ablauf <upgradeLink>PVE 8 auf PVE 9 aktualisieren</upgradeLink>. Er ergänzt Vorabprüfungen, Repository-Migration und anschließende Validierung. Erstellen Sie zuvor eine Sicherung."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/utils/system-update",
"label": "Proxmox System Update (interaktiv)",
"tail": "- Wrapper, der all dies mit einem Bestätigungsdialog, einem automatischen DKMS-Wiederaufbau von ProxMenux-verwalteten Treibern bei der Installation eines neuen Kernels und einer Neustartaufforderung erledigt. Ebenfalls startbar über die Schaltfläche Jetzt aktualisieren des ProxMenux Monitor-Dashboards."
},
{
"href": "/docs/utils/upgrade-pve8-pve9",
"label": "Aktualisieren Sie PVE 8 auf PVE 9",
"tail": "- für Major-Version-Upgrades."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
@@ -0,0 +1,182 @@
{
"meta": {
"title": "Proxmox-Befehle qm und pct — VM- und LXC-Verwaltung | ProxMenux",
"description": "Proxmox-VE-Befehle qm und pct für VMs und LXC-Container: list, config, start, stop, shutdown, reboot, destroy, clone, migrate, snapshot und resize sowie pct exec / enter / push / pull für Container.",
"ogTitle": "Proxmox-Befehle qm und pct — VM- und LXC-Verwaltung",
"ogDescription": "Referenz der Befehle Proxmox VE qm und pct — Verwalten von virtuellen Maschinen und LXC-Containern aus dem CLI: Starten, Stoppen, Konfigurieren, Snapshot, Migration, Klonen, Zerstören.",
"twitterTitle": "Proxmox-Befehle qm / pct | ProxMenux",
"twitterDescription": "Kuratierte qm / pct-Befehle zur Verwaltung virtueller Maschinen und LXC-Container in Proxmox VE."
},
"header": {
"title": "VM- und CT-Verwaltung",
"description": "Ausgewählte Befehle mit qm für VMs und pct für LXC-Container: Auflistung, Lebenszyklus (start / stop / shutdown / destroy), Konfigurationsprüfung und Container-Aktionen mit exec, enter, push und pull.",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Finden Sie zuerst eine VMID oder CTID",
"body": "Fast jeder Befehl benötigt eine numerische ID. Verwenden Sie <code>qm list</code> für VMs und <code>pct list</code> für Container. Ersetzen Sie <code>&lt;vmid&gt;</code> / <code>&lt;ctid&gt;</code> in den Snippets durch die tatsächliche ID, bevor Sie ausführen."
},
"commandGroups": [
{
"title": "Auflistung und Informationen",
"commands": [
{
"command": "qm list",
"description": "Listen Sie alle virtuellen Maschinen auf"
},
{
"command": "pct list",
"description": "Alle LXC Container auflisten"
},
{
"command": "qm config <vmid>",
"description": "VM-Konfiguration über den Parser von qm anzeigen"
},
{
"command": "pct config <ctid>",
"description": "Containerkonfiguration über den Parser von pct anzeigen"
}
]
},
{
"title": "Konfigurationsdateien (raw)",
"commands": [
{
"command": "cat /etc/pve/qemu-server/<vmid>.conf",
"description": "Rohe VM-Konfigurationsdatei anzeigen"
},
{
"command": "cat /etc/pve/lxc/<ctid>.conf",
"description": "Rohe CT-Konfigurationsdatei anzeigen"
},
{
"command": "nano /etc/pve/qemu-server/<vmid>.conf",
"description": "Bearbeiten der VM-Konfigurationsdatei (nano)"
},
{
"command": "nano /etc/pve/lxc/<ctid>.conf",
"description": "Bearbeiten der CT-Konfigurationsdatei (nano)"
},
{
"command": "vi /etc/pve/qemu-server/<vmid>.conf",
"description": "Bearbeiten der VM-Rohkonfigurationsdatei (vi)"
},
{
"command": "vi /etc/pve/lxc/<ctid>.conf",
"description": "Bearbeiten der CT-Rohkonfigurationsdatei (vi)"
}
]
},
{
"title": "VM-Verwaltung",
"commands": [
{
"command": "qm start <vmid>",
"description": "Starten Sie eine virtuelle Maschine. Verwenden Sie die richtige <vmid>"
},
{
"command": "qm stop <vmid>",
"description": "Erzwingen Sie das Stoppen einer virtuellen Maschine. Verwenden Sie die richtige <vmid>"
},
{
"command": "qm shutdown <vmid>",
"description": "Virtuelle Maschine geordnet herunterfahren"
},
{
"command": "qm reset <vmid>",
"description": "Zurücksetzen einer virtuellen Maschine (Hard Reboot)"
},
{
"command": "qm suspend <vmid>",
"description": "Virtuelle Maschine pausieren"
},
{
"command": "qm resume <vmid>",
"description": "Wiederaufnahme einer suspendierten virtuellen Maschine"
},
{
"command": "qm destroy <vmid>",
"description": "Eine VM löschen (unwiderruflich). Verwenden Sie die richtige <vmid>"
}
]
},
{
"title": "Containermanagement",
"commands": [
{
"command": "pct start <ctid>",
"description": "Starten Sie einen Container. Verwenden Sie die richtige <ctid>"
},
{
"command": "pct stop <ctid>",
"description": "Stoppen eines Containers erzwingen. Verwenden Sie die richtige <ctid>"
},
{
"command": "pct shutdown <ctid>",
"description": "Container geordnet herunterfahren"
},
{
"command": "pct reboot <ctid>",
"description": "Neustart eines Containers"
},
{
"command": "pct destroy <ctid>",
"description": "Eine CT löschen (irreversibel). Verwenden Sie die richtige <ctid>"
}
]
},
{
"title": "Containerbetrieb",
"commands": [
{
"command": "pct exec <ctid> -- getent passwd | column -t -s :",
"description": "CT-Benutzer im Tabellenformat anzeigen"
},
{
"command": "pct exec <ctid> -- ps aux --sort=-%mem | head",
"description": "Prozesse mit dem höchsten Speicherverbrauch im CT"
},
{
"command": "pct enter <ctid>",
"description": "Shell des Containers öffnen"
},
{
"command": "pct push <ctid> <source> <dest>",
"description": "Kopieren der Datei vom Host zum Container"
},
{
"command": "pct pull <ctid> <source> <dest>",
"description": "Kopieren der Datei vom Container zum Host"
}
]
}
],
"destroyWarn": {
"title": "Zerstörung ist irreversibel",
"bodyRich": "<code>qm destroy</code> und <code>pct destroy</code> entfernen die Gastkonfiguration und ihre verwalteten Datenträger-Volumes. Externe oder per Bind-Mount eingebundene Daten werden dadurch nicht zwangsläufig gelöscht. Die CLI fragt standardmäßig nicht nach. Sichern Sie benötigte Daten vorher; siehe <backupLink>Sicherung und Wiederherstellung</backupLink>."
},
"qmConfigTip": {
"title": "qm config im Vergleich zur direkten Bearbeitung der .conf-Datei",
"bodyRich": "<code>qm config &lt;vmid&gt;</code> und <code>pct config &lt;ctid&gt;</code> zeigen die Konfiguration über Proxmox-Parser an. Verwenden Sie für normale Änderungen <code>qm set</code> oder den entsprechenden pct-Befehl. Direkte Änderungen an <code>/etc/pve/qemu-server/&lt;vmid&gt;.conf</code> oder <code>/etc/pve/lxc/&lt;ctid&gt;.conf</code> umgehen Validierung und Sperren der Verwaltungsbefehle; die Datei muss weiterhin lesbar bleiben. Stoppen Sie den Gast und sichern Sie die Datei vor manuellen Reparaturen. <code>pmxcfs</code> synchronisiert die Konfiguration zwischen Clusterknoten, nicht die Datenträgerinhalte der Gäste."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/help-info/backup-commands",
"label": "Sicherung und Wiederherstellung",
"tail": " — vzdump und qmrestore / pct restore."
},
{
"href": "/docs/help-info/storage-commands",
"label": "Speicher und Datenträger",
"tail": " — qm importdisk und Datenträgerverwaltung."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
@@ -0,0 +1,227 @@
{
"meta": {
"title": "ZFS-Befehle auf Proxmox — zpool, zfs snapshot, send/receive, scrub | ProxMenux",
"description": "ZFS-Verwaltungsbefehle auf Proxmox VE: zpool create / status / history, zfs list / get / set, Snapshots, clone, zfs send und receive, scrub, clear, replace, zpool iostat und ARC-Übersicht.",
"ogTitle": "ZFS-Befehle auf Proxmox — zpool, zfs snapshot, send/receive, scrub",
"ogDescription": "Referenz der Befehle zpool und zfs auf Proxmox VE — Pools, Datensätze, Snapshots, Replikation, Wartung.",
"twitterTitle": "ZFS-Befehle auf Proxmox | ProxMenux",
"twitterDescription": "zpool und zfs Befehle für Proxmox VE: Pools, Datensätze, Snapshots, Replikation, Wartung."
},
"header": {
"title": "ZFS-Verwaltung",
"description": "Ausgewählte zpool- und zfs-Befehle: Poolprüfung, Erstellen, Lesen, Ändern und Löschen von Datasets, Snapshots, clone und inkrementelles oder rekursives send/receive, Wartung mit scrub / clear / replace sowie I/O-Statistiken und ARC-Übersicht.",
"section": "Hilfe und Informationen"
},
"intro": {
"title": "Zwei Kommandofamilien",
"body": "<code>zpool *</code> verwaltet die Speicherpools (physische Schicht – Festplatten, vdevs, Redundanz). <code>zfs *</code> verwaltet die Datensätze und Snapshots, die sich in diesen Pools befinden (logische Schicht – Dateisysteme, Volumes, Snapshots, Eigenschaften)."
},
"commandGroups": [
{
"title": "Poolinformationen",
"commands": [
{
"command": "zpool list",
"description": "Alle ZFS Pools auflisten"
},
{
"command": "zpool status",
"description": "Detaillierter Poolstatus und Gesundheit anzeigen"
},
{
"command": "zpool status -v",
"description": "Ausführlichen Poolstatus mit Fehlern anzeigen"
},
{
"command": "zpool history",
"description": "Befehlshistorie für alle Pools anzeigen"
},
{
"command": "zpool history <pool>",
"description": "Befehlshistorie für bestimmten Pool anzeigen"
},
{
"command": "zpool get all <pool>",
"description": "Alle Eigenschaften eines Pools anzeigen"
}
]
},
{
"title": "Datensatzverwaltung",
"commands": [
{
"command": "zfs list",
"description": "Alle ZFS-Datensätze auflisten"
},
{
"command": "zfs list -r <pool>",
"description": "Alle Datensätze in einem Pool rekursiv auflisten"
},
{
"command": "zfs create <pool>/<dataset>",
"description": "Erstellen eines neuen Datensatzes"
},
{
"command": "zfs destroy <pool>/<dataset>",
"description": "Zerstören Sie einen Datensatz"
},
{
"command": "zfs rename <pool>/<dataset> <pool>/<new-name>",
"description": "Umbenennen eines Datasets"
},
{
"command": "zfs get all <pool>/<dataset>",
"description": "Alle Eigenschaften eines Datasets anzeigen"
},
{
"command": "zfs set compression=on <pool>/<dataset>",
"description": "Komprimierung in einem Dataset ermöglichen"
}
]
},
{
"title": "Snapshot-Verwaltung",
"commands": [
{
"command": "zfs list -t snapshot",
"description": "Alle Snapshots auflisten"
},
{
"command": "zfs list -t snapshot -r <pool>",
"description": "Liste alle Snapshots in einem Pool"
},
{
"command": "zfs snapshot <pool>/<dataset>@<snapshot-name>",
"description": "Erstellen Sie einen Snapshot"
},
{
"command": "zfs destroy <pool>/<dataset>@<snapshot-name>",
"description": "Löschen eines Snapshots"
},
{
"command": "zfs rollback <pool>/<dataset>@<snapshot-name>",
"description": "Rollback zu einem Snapshot"
},
{
"command": "zfs hold <tag> <pool>/<dataset>@<snapshot-name>",
"description": "Snapshot mit einem Hold vor dem Löschen schützen"
},
{
"command": "zfs release <tag> <pool>/<dataset>@<snapshot-name>",
"description": "Hold-Schutz eines Snapshots aufheben"
}
]
},
{
"title": "Klonen und Send/Receive",
"commands": [
{
"command": "zfs clone <pool>/<dataset>@<snapshot> <pool>/<clone-name>",
"description": "Erstellen Sie einen Klon aus einem Snapshot"
},
{
"command": "zfs send <pool>/<dataset>@<snapshot> > backup.zfs",
"description": "Schnappschuss an eine Datei senden"
},
{
"command": "zfs receive <pool>/<dataset> < backup.zfs",
"description": "Erhalten Sie einen Snapshot aus einer Datei"
},
{
"command": "zfs send -i <pool>/<dataset>@<snap1> <pool>/<dataset>@<snap2> > incr.zfs",
"description": "Senden Sie inkrementellen Snapshot"
},
{
"command": "zfs send -R <pool>/<dataset>@<snapshot> > full-recursive.zfs",
"description": "Rekursive Snapshots senden"
}
]
},
{
"title": "Wartung und Reparatur",
"commands": [
{
"command": "zpool scrub <pool>",
"description": "Scrub-Prüfung eines Pools starten"
},
{
"command": "zpool scrub -s <pool>",
"description": "Laufenden Scrub stoppen"
},
{
"command": "zpool clear <pool>",
"description": "Fehlerzähler eines Pools zurücksetzen"
},
{
"command": "zpool clear <pool> <device>",
"description": "Fehlerzähler eines bestimmten Geräts zurücksetzen"
},
{
"command": "zpool replace <pool> <old-device> <new-device>",
"description": "Ein ausgefallenes Gerät ersetzen"
},
{
"command": "zpool offline <pool> <device>",
"description": "Nehmen Sie ein Gerät offline"
},
{
"command": "zpool online <pool> <device>",
"description": "Bringen Sie ein Gerät online"
}
]
},
{
"title": "Leistung und Überwachung",
"commands": [
{
"command": "zpool iostat",
"description": "I/O-Statistiken für Pools anzeigen"
},
{
"command": "zpool iostat -v",
"description": "Detaillierte I/O-Statistiken anzeigen"
},
{
"command": "zpool iostat 5",
"description": "I/O Statistiken alle 5 Sekunden anzeigen"
},
{
"command": "arc_summary",
"description": "ARC-Statistik anzeigen (falls installiert)"
},
{
"command": "zfs get compressratio <pool>/<dataset>",
"description": "Komprimierungsverhältnis anzeigen"
},
{
"command": "zfs get used,available,referenced <pool>/<dataset>",
"description": "Speicherplatznutzung anzeigen"
}
]
}
],
"bestPractices": {
"title": "Best Practices für den Betrieb",
"bodyRich": "Planen Sie regelmäßig <code>zpool scrub</code> zur Prüfsummenprüfung ein und kontrollieren Sie das Ergebnis. Halten Sie Kapazität frei: Die Auswirkungen eines fast vollen Pools hängen von Last und Aufbau ab. Verwenden Sie <code>zpool replace</code> für ausgefallene Geräte und das Verfahren für den jeweiligen vdev-Typ. Detach + add ist kein gleichwertiger Austausch und kann die Topologie verändern oder Redundanz aufheben."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/help-info/storage-commands",
"label": "Speicher und Datenträger",
"tail": " — allgemeine Blockgeräte- und LVM-Befehle."
},
{
"href": "/docs/help-info/backup-commands",
"label": "Sicherung und Wiederherstellung",
"tail": " — vzdump, qmrestore."
},
{
"href": "/docs/help-info",
"label": "Übersicht über Hilfe und Informationen",
"tail": "."
}
]
}
}
+93
View File
@@ -0,0 +1,93 @@
{
"meta": {
"title": "ProxMenux installieren | ProxMenux-Dokumentation",
"description": "Installieren Sie ProxMenux mit einem Befehl auf Proxmox-VE-Hosts ab Version 8. Enthält vorgefertigte JSON-Kataloge für acht Sprachen: Englisch, Spanisch, Französisch, Deutsch, Italienisch, Portugiesisch, Slowakisch und Schwedisch. Wählen Sie die Sprache bei der Installation oder ändern Sie sie später unter Einstellungen. Ein Beta-Kanal bietet frühzeitigen Zugriff auf neue Funktionen.",
"ogTitle": "ProxMenux installieren | ProxMenux-Dokumentation",
"ogDescription": "Installieren Sie ProxMenux auf Proxmox VE 8+ in einem Befehl. Stabile und Beta-Kanäle verfügbar."
},
"header": {
"title": "Installation von ProxMenux",
"description": "Der Installer wird mit einem Befehl auf einem Proxmox-VE-Host ab Version 8 gestartet. Er installiert die nötigen Abhängigkeiten, lädt die Skripte herunter, richtet den Menüstarter ein und fragt beim ersten Durchlauf nach der Sprache. Zwei Kanäle stehen bereit: stabil (Standard) und Beta.",
"section": "Installation"
},
"stable": {
"heading": "Installieren",
"intro": "Führen Sie dies im Terminal Ihres Proxmox-Hosts aus:",
"code": "bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\""
},
"during": {
"heading": "Während der Installation",
"intro": "ProxMenux installiert und konfiguriert automatisch die benötigten Abhängigkeiten:",
"tablePackage": "Paket",
"tablePurpose": "Zweck",
"rows": [
{
"package": "dialog",
"purpose": "Interaktive Terminalmenüs"
},
{
"package": "curl",
"purpose": "Downloads und Konnektivitätsprüfungen"
},
{
"package": "jq",
"purpose": "JSON-Verarbeitung"
},
{
"package": "git",
"purpose": "Klonen und Aktualisieren von Repositorys"
}
],
"outro": "Der Installer lädt außerdem den Skriptbaum nach <code>/usr/local/share/proxmenux/</code> und erstellt das Startskript unter <code>/usr/local/bin/menu</code>. Das Web-Dashboard <strong>ProxMenux Monitor</strong> wird als <code>proxmenux-monitor.service</code> registriert.",
"imageAlt": "ProxMenux Installation im Gange"
},
"first": {
"heading": "Erster Start",
"intro": "Führen Sie nach der Installation Folgendes aus:",
"code": "menu",
"outro": "ProxMenux öffnet das Hauptmenü. Von dort können Sie alle auf dieser Website beschriebenen Abläufe starten. Auf einem frisch installierten Proxmox-Host ist <postlink>Nach der Installation</postlink> ein guter Ausgangspunkt."
},
"beta": {
"heading": "Beta-Kanal",
"calloutTitle": "Was ist das Beta-Programm?",
"calloutBody": "Möchten Sie neue Funktionen vor der offiziellen Veröffentlichung testen und die endgültige Version mitgestalten? Das Beta-Programm von ProxMenux bietet frühzeitigen Zugriff auf Neuerungen einschließlich aktueller Monitor-Builds aus dem Zweig <code>develop</code>. Beta-Versionen können Fehler oder unvollständige Funktionen enthalten. Ihre Rückmeldungen helfen, diese vor der stabilen Veröffentlichung zu beheben.",
"intro": "Installieren Sie die Beta-Version anstelle der stabilen mit:",
"code": "bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/develop/install_proxmenux_beta.sh)\"",
"outro": "Die Beta ist freiwillig und muss ausdrücklich über den Beta-Installer installiert werden. Sobald eine stabile Version erscheint, informiert ProxMenux beim nächsten Start von <code>menu</code> und bietet den automatischen Wechsel an. Zum vorzeitigen Ausstieg wählen Sie unter Einstellungen <betalink>Beta-Programm deaktivieren</betalink>."
},
"updating": {
"heading": "Aktualisierung",
"body": "ProxMenux verwaltet seine Updates selbst. Ist eine neue Version verfügbar, bietet der nächste Aufruf von <code>menu</code> das Update an. Bei Zustimmung werden die Dateien und Einstellungen des Werkzeugs in der bestehenden Installation ersetzt. Ein manueller Download ist nicht nötig. Stabile Installationen erhalten stabile Updates, Beta-Installationen Beta-Updates sowie den oben beschriebenen Wechselhinweis. Die Anzeige hängt davon ab, wo <code>menu</code> läuft: Über SSH oder die Proxmox-Konsole erscheint ein Ja/Nein-Dialog; bei Zustimmung wird sofort aktualisiert. Im WebSocket-Terminal von ProxMenux Monitor erscheint stattdessen eine Information, weil dieses Terminal während des Updates unterbrochen würde. Sie zeigt den einzeiligen Installer (<code>bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\"</code> für stabil oder die entsprechende URL von <code>install_proxmenux_beta.sh</code> für Beta), den Sie über SSH oder die Konsole ausführen sollen."
},
"uninstall": {
"heading": "Deinstallation",
"body": "In ProxMenux: <strong>Einstellungen → ProxMenux deinstallieren</strong>. Die Deinstallation entfernt den Skriptbaum, das Startskript und den Monitor-Dienst sowie auf Wunsch ausgewählte Abhängigkeiten. <code>/root/.bashrc</code> und <code>/etc/motd</code> werden aus den von Post-Install angelegten Sicherungen wiederhergestellt, sofern diese vorhanden sind (andernfalls wird die ProxMenux-Zeile aus der MOTD entfernt). Vollständige Anleitung: <uninstalllink>ProxMenux deinstallieren</uninstalllink>."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"virustotalTitle": "VirusTotal markiert die Installations-URL",
"virustotalBody": "Der in Issue #162 gemeldete Treffer von <em>Chong Lua Dao</em> bei 1 von 95 Prüfungen wurde vom Maintainer als Fehlalarm eingestuft. Der Installer wird mit einem Befehl gestartet, der das Skript herunterlädt und ausführt (<code>bash -c \"$(wget -qLO - …)\"</code>) und kann <code>jq</code> aus dessen offizieller GitHub-Veröffentlichung herunterladen. Dieses <em>Verhalten</em> kann heuristische Scanner auslösen. Der damalige Bericht ist keine Bewertung aller künftigen Downloads. Der Installer ist quelloffen und überprüfbar. Weitere Hintergründe in <issuelink>Issue #162</issuelink>.",
"aptTitle": "Installation schlägt mit apt-Fehlern fehl",
"aptBody": "Meist fehlt ein Proxmox-Repository oder ist falsch konfiguriert. Der Installer bezieht Abhängigkeiten über apt; fehlerhafte Repository-Einstellungen lassen apt scheitern. Das kommt etwa bei noch nicht aktualisierten Minimalinstallationen von Proxmox 8 vor. Führen Sie zuerst <code>apt-get update</code> manuell aus, beheben Sie alle Fehler und starten Sie den Installer erneut.",
"menuTitle": "`menu: command not found` nach der Installation",
"menuBody": "Das Startskript liegt unter <code>/usr/local/bin/menu</code>. Prüfen Sie dies mit <code>ls -lh /usr/local/bin/menu</code>. Fehlt es, wurde die Installation vorzeitig beendet; starten Sie den Installer erneut. Existiert es, wird aber nicht gefunden, fehlt <code>/usr/local/bin</code> in PATH. Korrigieren Sie PATH oder starten Sie direkt <code>/usr/local/bin/menu</code>.",
"stuckTitle": "Die Installation hängt oder geht nicht voran",
"stuckBody": "Wenn eine Installation, Neuinstallation oder Aktualisierung wegen eines Verbindungsproblems hängen bleibt, brechen Sie mit <strong>Ctrl + C</strong> ab und starten Sie den Installer manuell erneut.",
"otherTitle": "Weitere Probleme",
"otherBody": "Prüfen Sie <issueslink>GitHub Issues</issueslink> auf bekannte Probleme oder eröffnen Sie ein neues Issue mit den relevanten Protokollen. Bei Monitor-Problemen in der Beta fügen Sie die Ausgabe von <code>journalctl -u proxmenux-monitor -n 50</code> bei."
},
"next": {
"heading": "Was kommt als nächstes",
"postInstall": "<postlink>Skript nach der Installation</postlink> — Anpassungen und Absicherung eines frisch installierten Proxmox-Hosts.",
"introduction": "<introlink>Einführung</introlink> — vollständiger Überblick über die Funktionen.",
"monitor": "<monitorlink>ProxMenux Monitor</monitorlink> — Web-Dashboard für den Host (automatisch neben dem Menü installiert)."
},
"requirements": {
"heading": "Anforderungen und bewährte Verfahren",
"reqTitle": "Anforderungen",
"reqBody": "Proxmox VE <strong>8.x oder neuer</strong>. PVE 7 und ältere Versionen werden nicht unterstützt. Der Host benötigt Internetzugang für Skripte, Abhängigkeiten und die AppImage von ProxMenux Monitor. Führen Sie den Installer als <strong>root</strong> auf dem Proxmox-Host aus.",
"inspectTitle": "Überprüfen Sie immer Skripte, die Sie aus dem Internet ausführen",
"inspectReview": "<sourcelink>Prüfen Sie den Quellcode des Installers</sourcelink>, bevor Sie ihn ausführen.",
"inspectCoc": "Alle ausführbaren Links entsprechen dem <coclink>ProxMenux-Verhaltenskodex</coclink>."
}
}
+206
View File
@@ -0,0 +1,206 @@
{
"meta": {
"title": "ProxMenux — Proxmox VE über Menüs verwalten | Open Source",
"description": "Open-Source-Werkzeug zur menügesteuerten Verwaltung von Proxmox VE. ProxMenux vereint zwei Komponenten: eine CLI/TUI für Anpassungen nach der Installation, VMs und LXC-Container, GPU- und Coral-TPU-Durchreichung, Datenträger, Speicher und Netzwerk sowie ein selbst gehostetes Webdashboard mit proaktiver Zustandsüberwachung, Benachrichtigungen per Telegram, Discord oder E-Mail, KI-gestützter Umformulierung und REST-API.",
"ogTitle": "ProxMenux — Proxmox VE über Menüs verwalten",
"ogDescription": "Open-Source-CLI/TUI und Webdashboard für Proxmox VE: Anpassungen nach der Installation, VMs, GPUs, Datenträger, Netzwerk, Speicher und Sicherheit. Dazu ein separater Monitor mit Zustandsprüfungen, Benachrichtigungen, KI-Umformulierung und REST-API.",
"twitterTitle": "ProxMenux — Proxmox VE über Menüs verwalten",
"twitterDescription": "Open-Source-CLI/TUI und Webdashboard für Proxmox VE. Zustandsüberwachung, Benachrichtigungen, KI-Umformulierung und REST-API."
},
"header": {
"title": "Einleitung",
"description": "ProxMenux ist ein menügesteuertes Open-Source-Werkzeug für Proxmox VE. Zwei Komponenten bilden das Projekt: eine CLI/TUI für häufige Aufgaben rund um Host, VMs, Container, Speicher, Netzwerk und Sicherheit sowie ein selbst gehostetes Webdashboard mit proaktiver Zustandsüberwachung, Benachrichtigungen, optionaler KI-Umformulierung und REST-API.",
"section": "Einleitung"
},
"hero": {
"tagline": "<strong>Ein Menü für alle Abläufe.</strong> Aufgaben, für die Sie sonst das Wiki, zwei Forenthreads und eine kopierte Befehlsfolge brauchen, stehen als nummerierte Menüoption bereit und lassen sich in Sekunden starten.",
"audience": "Für <em>neue</em> Proxmox-Nutzer mit bewusst gewählten, sicheren Voreinstellungen und <em>erfahrene</em> Administratoren, die Routineaufgaben mit weniger Tastatureingaben erledigen möchten. Kostenlos und quelloffen, mit einer aktiven Community auf <github>GitHub</github>."
},
"twoProducts": {
"heading": "Zwei Produkte, ein Projekt",
"intro": "ProxMenux umfasst zwei Komponenten im selben Quellbaum. Der Installer installiert beide auf dem Host: Scripts stellt die Terminaloberfläche bereit, Monitor das Webdashboard:",
"scripts": {
"title": "ProxMenux Scripts",
"body": "Die ursprüngliche CLI/TUI, die Sie mit <code>menu</code> starten. Neun Funktionsbereiche für Optimierungen nach der Installation, VMs und LXC-Container, GPU- und Coral-TPU-Durchreichung, Datenträger, Speicher, Netzwerk, Sicherheit und Hilfsprogramme sowie eine sorgfältig zusammengestellte Befehlsreferenz. Läuft in lokalen Terminals, per SSH und im Webterminal."
},
"monitor": {
"title": "ProxMenux Monitor",
"body": "Selbst gehostetes Webdashboard als AppImage. Hostmetriken in Echtzeit, proaktive Zustandsüberwachung, Benachrichtigungen, optionale KI-Umformulierung mit sechs Anbietern, integriertes Webterminal und REST-API. Aktivierung im Scripts-Menü unter Einstellungen → ProxMenux Monitor."
},
"calloutTitle": "Was ProxMenux verwaltet",
"calloutIntro": "Drei Schichten, die alle aus dem gleichen Projekt erreichbar sind:",
"layers": [
"<strong>Der Proxmox-Host</strong> — Paketquellen, Pakete, Netzwerk, ZFS, Ceph, Kernel und Überwachung.",
"<strong>Virtuelle Maschinen (VMs)</strong> — Erstellen, GPU-Durchreichung, OVA-/OVF-Import und -Export sowie Durchreichen von Datenträgern.",
"<strong>LXC-Container</strong> — Erstellen, Einhängepunkte, GPU-/TPU-Durchreichung sowie NFS-/Samba-Clients und -Server."
]
},
"scriptsSection": {
"heading": "ProxMenux Scripts - was Sie bekommen",
"intro": "Neun Funktionsbereiche mit jeweils eigenem Menü innerhalb von <code>menu</code> und einer Detailseite in der Dokumentation. Klicken Sie auf eine beliebige Karte, um direkt zur Übersicht dieses Abschnitts zu springen.",
"items": [
{
"title": "Nach der Installation",
"description": "Optimierungen für frisch installierte Proxmox-Systeme: Paketquellen, Kernel, Zeitsynchronisierung, grundlegende Sicherheit und Leistung, mit rückgängig zu machenden Optionen.",
"icon": "Server",
"href": "/docs/post-install"
},
{
"title": "GPUs und Coral TPU",
"description": "NVIDIA-, Intel-iGPU-, AMD- und Coral-TPU-Durchreichung an VMs und LXC-Container, mit Umschaltung zwischen VM- und LXC-Modus.",
"icon": "Cpu",
"href": "/docs/hardware/nvidia-host"
},
{
"title": "VM erstellen",
"description": "Assistenten für NAS-Systeme, Windows und Linux mit sinnvollen Voreinstellungen für Hardware, Speicher und Netzwerk.",
"icon": "Server",
"href": "/docs/create-vm"
},
{
"title": "Festplattenmanager",
"description": "Physische Datenträger für VMs und LXC einbinden, formatieren und löschen, SMART-Tests ausführen sowie qcow2-, vmdk- und vdi-Abbilder importieren — alles über ein Menü.",
"icon": "HardDrive",
"href": "/docs/disk-manager"
},
{
"title": "Speicher und Freigaben",
"description": "NFS-, Samba-/CIFS-, iSCSI- und lokalen Speicher in Proxmox registrieren und Ordner zwischen Host und LXC-Containern über Bind-Mounts oder Netzwerkprotokolle freigeben.",
"icon": "Boxes",
"href": "/docs/storage-share"
},
{
"title": "Netzwerk",
"description": "Diagnose ohne Änderungen, Abläufe mit Analyse und anschließenden Vorschlägen sowie geführte Reparaturen an /etc/network/interfaces. Vor Änderungen werden Sicherungen erstellt.",
"icon": "Network",
"href": "/docs/network"
},
{
"title": "Sicherheit",
"description": "Fail2Ban zum Schutz von SSH und Weboberflächen vor Einbruchsversuchen sowie Lynis für Sicherheitsprüfungen — Installation und Verwaltung mit sinnvollen Voreinstellungen.",
"icon": "Shield",
"href": "/docs/security"
},
{
"title": "Dienstprogramme",
"description": "Windows-ISOs mit UUP Dump erstellen, CLI-Werkzeuge installieren, geführte Systemupdates und das Upgrade von PVE 8 auf 9 durchführen sowie VMs im OVA-/OVF-Format exportieren und importieren.",
"icon": "Wrench",
"href": "/docs/utils"
},
{
"title": "Befehlsreferenz",
"description": "Eine ausgewählte Sammlung von Linux- und Proxmox-Befehlen nach Themen: System, VM/CT mit qm und pct, Speicher, Netzwerk, ZFS, GPU-Durchreichung, Sicherungen und CLI-Werkzeuge für den Alltag.",
"icon": "BookOpen",
"href": "/docs/help-info"
}
]
},
"monitorSection": {
"heading": "ProxMenux Monitor - was Sie bekommen",
"intro": "Das Webdashboard wird direkt auf dem Proxmox-Host über TCP-Port 8008 bereitgestellt. Klicken Sie auf eine Karte, um die jeweilige Dokumentationsseite zu öffnen, oder lesen Sie zuerst die <link>Monitor-Übersicht</link>.",
"items": [
{
"title": "Zustandsüberwachung",
"description": "Alle fünf Minuten werden zehn Kategorien geprüft: CPU, Arbeitsspeicher, Speicher, Datenträger/SMART, Netzwerk, VMs, Dienste, Protokolle, Updates und Sicherheit. Mit Schweregraden und Unterdrückung je Kategorie.",
"icon": "Activity",
"href": "/docs/monitor/health-monitor"
},
{
"title": "Benachrichtigungen",
"description": "Telegram, Discord, E-Mail, Gotify, Pushover und Apprise für mehrere Kanäle — mit Vermeidung von Duplikaten, Mindestabständen, Bündelung gleichzeitiger Meldungen, Ruhezeiten und vollständigem Verlauf.",
"icon": "Bell",
"href": "/docs/monitor/notifications"
},
{
"title": "KI-Assistent",
"description": "Optionale Umformulierung von Benachrichtigungen in verständliche Sprache. Sechs Anbieter: OpenAI, Anthropic Claude, Google Gemini, Groq, OpenRouter und lokales Ollama. Dreizehn Sprachen in der Sprachauswahl der KI.",
"icon": "Sparkles",
"href": "/docs/monitor/ai-assistant"
},
{
"title": "Webterminal",
"description": "Interaktive Shell auf dem Proxmox-Host im Browser sowie ein separates ProxMenux-Scripts-Terminal, das das Menü in der Weboberfläche ausführt.",
"icon": "Terminal",
"href": "/docs/monitor/dashboard/terminal"
},
{
"title": "REST API",
"description": "HTTP-Endpunkte für System, Zustand, Speicher/SMART, Netzwerk, VMs, Benachrichtigungen und Sicherheit — nutzbar für Homepage, Home Assistant, Prometheus und eigene Skripte.",
"icon": "Code2",
"href": "/docs/monitor/api"
},
{
"title": "Integrationen",
"description": "Nativer Proxmox-VE-Webhook, Metrikabruf durch Prometheus, Prüfungen mit Uptime Kuma, Widgets für Homepage, Home Assistant und Glance, n8n-/Zapier-Abläufe und Tailscale Secure Gateway.",
"icon": "Plug",
"href": "/docs/monitor/integrations"
}
]
},
"installPaths": {
"heading": "Installationsvarianten",
"intro": "Beide Installer installieren Scripts und Monitor. Scripts verwendet vorab erstellte JSON-Kataloge in acht Sprachen ohne Online-Übersetzung. Sie wählen den stabilen oder den Beta-Kanal; Monitor wird als AppImage verteilt und aus seiner entpackten Laufzeitumgebung gestartet:",
"headerPath": "Install path",
"headerBundles": "Enthaltene Komponenten",
"headerWhen": "Wann geeignet",
"rows": [
{
"pathRich": "<strong>Scripts: stabil</strong>",
"bundles": "CLI/TUI mit vorab erstellten JSON-Übersetzungen in acht Sprachen, ohne Übersetzungs-venv oder Online-Übersetzungsdienst.",
"when": "Regulärer Einsatz mit dem stabilen Veröffentlichungskanal."
},
{
"pathRich": "<strong>Scripts: Beta</strong>",
"bundles": "Dieselbe mehrsprachige Oberfläche aus dem develop-Zweig, um kommende Änderungen zu testen.",
"when": "Frühzeitiges Testen neuer Funktionen mit höherem Fehlerrisiko."
},
{
"pathRich": "<strong>Monitor</strong>",
"bundles": "Eigenständiges AppImage mit Webdashboard auf TCP-Port 8008. Der Installer entpackt die Laufzeitumgebung und verwaltet den Dienst; Monitor lässt sich über die Einstellungen steuern.",
"when": "Wenn Sie den Host über ein Webdashboard auf Handy, Tablet oder im Browser überwachen möchten."
}
],
"outro": "Detaillierte Installationsbefehle und Voraussetzungen stehen auf der <link>Installationsseite</link>."
},
"warnSource": {
"title": "Prüfen Sie Skripte aus dem Internet vor der Ausführung",
"body": "ProxMenux ist quelloffen. Sie können jedes Skript auf GitHub prüfen. Lesen Sie vor dem Ausführen des Installationsbefehls den Quellcode. Tun Sie das auch bei anderen Automatisierungswerkzeugen.",
"sourceLabel": "ProxMenux Quelle ansehen",
"cocLabel": "Verhaltenskodex"
},
"next": {
"heading": "Nächste Schritte",
"items": [
{
"lead": "<strong>Neu bei ProxMenux?</strong> ",
"linkHref": "/docs/installation",
"linkLabel": "Mit einem Befehl installieren",
"tailRich": " und starten Sie <code>menu</code>."
},
{
"lead": "<strong>Proxmox gerade installiert?</strong> Beginnen Sie mit dem ",
"linkHref": "/docs/post-install",
"linkLabel": "Post-Install-Skript",
"tail": "."
},
{
"lead": "<strong>Möchten Sie ein Webdashboard?</strong> ",
"linkHref": "/docs/monitor",
"linkLabel": "ProxMenux Monitor",
"tail": " wird in der Dokumentation vorgestellt: Funktionen, Aufbau und Absicherung."
},
{
"lead": "<strong>Suchen Sie einen bestimmten Befehl?</strong> Die ",
"linkHref": "/docs/help-info",
"linkLabel": "Befehlsreferenz",
"tail": " bietet eine nach Themen geordnete Auswahl mit Kopierschaltflächen."
},
{
"lead": "<strong>Möchten Sie ausführlichere Anleitungen?</strong> Der ",
"linkHref": "/guides",
"linkLabel": "Anleitungsbereich",
"tail": " behandelt Coral TPU, NVIDIA-Durchreichung, Kodi in LXC und weitere Themen."
}
]
}
}
@@ -0,0 +1,110 @@
{
"meta": {
"title": "Schnittstellen sichern und neu starten | ProxMenux-Dokumentation",
"description": "Manuelle Schnappschüsse erstellen und unter /var/backups/proxmenux/ gespeicherte Backups von /etc/network/interfaces durchsuchen und wiederherstellen. Mit bestätigtem Neustart des Netzwerkdienstes und Schnellansicht der aktuellen Konfiguration.",
"ogTitle": "Schnittstellen sichern und neu starten | ProxMenux-Dokumentation",
"ogDescription": "Snapshot und Wiederherstellung der Proxmox-Netzwerkkonfiguration; Neustart des Netzwerkdienstes mit Bestätigung."
},
"header": {
"title": "Schnittstellen sichern und neu starten",
"description": "Vier Werkzeuge für /etc/network/interfaces: einen manuellen Schnappschuss erstellen, die aktuelle Konfiguration anzeigen, ein früheres Backup mit optionaler Vorschau wiederherstellen und den Netzwerkdienst nach ausdrücklicher Zustimmung neu starten. Sie verwenden dasselbe Backup-Verzeichnis wie die geführten Reparaturen.",
"section": "Netzwerk"
},
"intro": {
"title": "Was das macht",
"body": "Verwaltet das gleiche Backup-Verzeichnis, das von den geführten Reparaturflüssen verwendet wird (<code>/var/backups/proxmenux/</code>). Sie können vor jeder manuellen Änderung eine zusätzliche Momentaufnahme machen, alle vorhandenen Backups durchsuchen und zu einem von ihnen zurückkehren - immer mit einem neuen Pre-Restore-Backup, das automatisch als zweites Sicherheitsnetz übernommen wird."
},
"shared": {
"heading": "Das gemeinsame Backup-Verzeichnis",
"intro": "Jedes Backup im Netzwerkmenü landet an der gleichen Stelle:",
"outro": "Dateinamen werden mit einem Zeitstempel versehen, nach Datum sortiert und nie überschrieben. Das Verzeichnis wird bei der ersten Verwendung erstellt."
},
"show": {
"heading": "Netzwerkkonfigurationsdatei anzeigen",
"body": "Gibt <code>/etc/network/interfaces</code> unverändert im Terminal aus. Schreibgeschützt. Nützlich zur Kontrolle vor einem Backup oder nach einer Wiederherstellung. Es gibt kein separates Werkzeug zum Vergleich mit dem vorherigen Backup; die aktuelle Datei direkt zu prüfen ist daher am einfachsten."
},
"create": {
"heading": "Netzwerk-Backup erstellen",
"body": "Kopiert den aktuellen <code>/etc/network/interfaces</code> mit einem neuen Zeitstempel in das Backup-Verzeichnis. Das ist es — keine Analyse, keine Aufforderungen, nur eine Momentaufnahme.",
"whenTitle": "Wann Sie ein manuelles Backup durchführen sollten",
"whenBody": "Vor der manuellen Bearbeitung von <code>/etc/network/interfaces</code>, vor der Installation eines Pakets, das den Netzwerkstack ändern kann (z. B. NetworkManager, Open vSwitch), oder vor Hardwareänderungen. Geführte Reparaturen erstellen bereits automatisch einen Schnappschuss — diese Option ist für <em>manuelle</em> Eingriffe."
},
"restore": {
"heading": "Netzwerksicherung wiederherstellen",
"intro": "Listet alle Backups in <code>/var/backups/proxmenux/</code> vom neuesten zum ältesten auf und führt durch eine abgesicherte Wiederherstellung:",
"steps": [
{
"title": "1. Wählen Sie ein Backup",
"body": "Ein Menü listet jedes Backup nach seinem Zeitstempel auf. Wenn keine Backups vorhanden sind, wird der Flow mit einer klaren Nachricht beendet.",
"tone": "blue"
},
{
"title": "2. Optionale Vorschau",
"body": "Bietet an, das ausgewählte Backup in einer scrollbaren Ansicht zu öffnen, bevor Sie es festlegen. Standardmäßig ja – überspringen Sie es nicht auf einem entfernten Host.",
"tone": "blue"
},
{
"title": "3. Backup vor der Wiederherstellung",
"body": "Erstellt vor dem Überschreiben von <code>/etc/network/interfaces</code> ein <strong>weiteres</strong> Backup des aktuellen Zustands. Eine Wiederherstellung ist selbst ein destruktiver Vorgang. Mit dem neuen Schnappschuss können Sie zurückkehren, falls das gewählte Backup falsch war.",
"tone": "amber"
},
{
"title": "4. Anwenden der Wiederherstellung",
"body": "Kopiert das ausgewählte Backup über <code>/etc/network/interfaces</code>. Die Dateiänderung ist auf der Festplatte; der Live-Kernel-Zustand spiegelt immer noch die vorherige Konfiguration wider.",
"tone": "amber"
},
{
"title": "5. Optionaler Neustart",
"body": "Fragt, ob <code>systemctl restart networking</code> jetzt ausgeführt werden soll. Lehnen Sie ab, um die Änderung auf den nächsten Neustart zu verschieben.",
"tone": "emerald"
}
],
"autoBackupTitle": "Jede Wiederherstellung erstellt automatisch ein eigenes Backup",
"autoBackupBody": "Die Auswahl von <em>Netzwerksicherung wiederherstellen</em> erstellt immer einen neuen Schnappschuss der <em>aktuellen</em> Konfiguration, bevor sie überschrieben wird. Falls Sie das falsche Backup wiederherstellen, enthält die neueste Datei in <code>/var/backups/proxmenux/</code> den vorherigen Zustand."
},
"restart": {
"heading": "Starten Sie den Netzwerkdienst neu",
"body": "Führt nach einer Ja/Nein-Bestätigung <code>systemctl restart networking</code> aus. Meldet das Ergebnis mit <code>msg_ok</code> / <code>msg_error</code>. Die meisten Abläufe in diesem Menü bieten am Ende selbst einen Neustart an. Diese Option dient zum Neustart nach manueller Bearbeitung oder wenn Sie den zuvor angebotenen Neustart abgelehnt haben.",
"warnTitle": "Kurze Trennung garantiert; dauerhafte Trennung möglich",
"warnBody": "Ein Neustart von <code>networking</code> deaktiviert alle in <code>/etc/network/interfaces</code> deklarierten Schnittstellen und wendet ihre Konfiguration erneut an. SSH-Sitzungen über diese Schnittstellen brechen ab. Ist die neue Konfiguration ungültig, kehrt das Netzwerk nicht zurück. Nur ausführen, wenn:",
"warnItems": [
"Sie Konsolen-/IPMI-/iKVM-Zugriff bereithalten, <em>oder</em>",
"Sie sich direkt neben dem Rechner befinden, <em>oder</em>",
"Sie haben gerade erfolgreich zu einer bekannten guten Konfiguration zurückgerollt und wollen sie anwenden."
]
},
"manualRollback": {
"heading": "Manuelles Rollback von einer Konsole",
"intro": "Wenn Sie das Menü nicht erreichen können (kein SSH, Dialogabsturz, ...), aber eine Konsole erreichen können, besteht das Rollback aus zwei Befehlen:",
"outro": "Das ist <em>dieselbe</em> Operation wie im Menü, nur von Hand eingegeben. Startet <code>networking</code> weiterhin nicht, prüfen Sie <code>journalctl -u networking -b</code> auf den zugrunde liegenden Syntax- oder Treiberfehler."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noneTitle": "„Keine Backups gefunden“ bei der Wiederherstellung",
"noneBody": "Das Verzeichnis <code>/var/backups/proxmenux/</code> existiert nicht oder enthält keine <code>interfaces_backup_*</code>-Dateien. Führen Sie <em>Netzwerk-Backup erstellen</em> mindestens einmal aus oder starten Sie eine geführte Reparatur, die automatisch ein Backup erstellt. Prüfen Sie mit <code>ls /var/backups/proxmenux/</code>.",
"unreachTitle": "Der Netzwerkneustart gelingt, aber der Host ist weiterhin nicht erreichbar",
"unreachBody": "Entweder ist die neue Konfiguration falsch oder die beim Neustart angewendete Konfiguration weist Ihre Verwaltungs-IP nicht zu. Setzen Sie sie über die Konsole zurück (siehe oben). Nutzen Sie danach <bridgeLink>Brückenanalyse</bridgeLink> und <configLink>Konfigurationsanalyse</configLink>, um den Fehler vor einem erneuten Anwenden zu verstehen.",
"emptyTitle": "Die Wiederherstellungsvorschau zeigt eine leere Datei",
"emptyBody": "Die Backup-Datei ist leer (0 Bytes). Das passiert, wenn ein Kopiervorgang bei einem früheren Durchlauf unbemerkt fehlgeschlagen ist. Wählen Sie ein älteres Backup oder führen Sie <em>Netzwerk-Backup erstellen</em> jetzt erneut aus, wenn die aktuelle Konfiguration funktioniert."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Brückenanalyse und geführte Reparatur",
"href": "/docs/network/bridge-analysis",
"tail": " — der häufigste Grund, warum hier ein Backup erstellt wird."
},
{
"label": "Konfigurationsanalyse und geführte Bereinigung",
"href": "/docs/network/config-analysis",
"tailRich": "— schreibt auch automatisch an <code>/var/backups/proxmenux/</code>."
},
{
"label": "Diagnose",
"href": "/docs/network/diagnostics",
"tail": "- Überprüfen Sie den Live-Zustand nach einer Wiederherstellung."
}
]
}
}
@@ -0,0 +1,132 @@
{
"meta": {
"title": "Brückenanalyse & geführte Reparatur | ProxMenux Dokumentation",
"description": "Erkennt vmbrX-Bridges mit fehlenden oder ungültigen physischen Ports (typisch nach PCI-Reenumeration), meldet diese mit vorgeschlagenen Shell-Befehlen und bietet eine 5-schrittgesteuerte Reparatur mit obligatorischem Backup.",
"ogTitle": "Brückenanalyse & geführte Reparatur | ProxMenux Dokumentation",
"ogDescription": "Proxmox-Bridge-Ports nach Hardwareänderungen prüfen und reparieren, mit geführtem Ablauf und sicherer Rückkehr zur vorherigen Konfiguration."
},
"header": {
"title": "Brückenanalyse und geführte Reparatur",
"description": "Prüft jede in /etc/network/interfaces deklarierte vmbrX-Bridge und ob ihre physischen Ports tatsächlich existieren. Fehlende Ports können schrittweise repariert werden. Die Analyse ist schreibgeschützt; die Reparatur erfordert Zustimmung, zeigt eine Vorschau und erstellt ein Backup.",
"section": "Netzwerk"
},
"intro": {
"title": "Was das macht",
"body": "Liest jede Bridge in <code>/etc/network/interfaces</code>, prüft ihre Zeile <code>bridge-ports</code> und ob jeder deklarierte Port, etwa <code>enp3s0</code>, auf dem Host existiert. Fehlt ein Port, schlägt das Werkzeug einen Ersatz vor und wendet die Änderung nach ausdrücklicher Zustimmung mit dem Ablauf <strong>sichern, Vorschau anzeigen, anwenden, überprüfen</strong> an."
},
"when": {
"heading": "Wenn Sie das brauchen",
"intro": "Linux weist vorhersehbare Schnittstellennamen aus PCI-Topologie und Slot-Reihenfolge zu. Mehrere Ereignisse mischen sie und lassen <code>/etc/network/interfaces</code> auf Namen verweisen, die nicht mehr existieren:",
"items": [
"Hinzufügen oder Entfernen einer PCIe-Karte (ein NIC, ein GPU, ein HBA, ein NVMe-Träger).",
"Verschieben einer vorhandenen Karte in einen anderen PCIe-Slot.",
"BIOS / UEFI Updates, die PCI-Geräte erneut aufzählen.",
"Migration der Boot-Disk auf andere Hardware."
],
"outro": "Nach dem nächsten Start versucht die Bridge, einen nicht mehr vorhandenen Port einzubinden. Sie lässt sich nicht aktivieren und der Host verliert seine Netzwerkverbindung. <link>Persistente Schnittstellennamen</link> verhindern eine Wiederholung. Falls Sie bereits ausgesperrt sind, beschreibt diese Seite den Wiederherstellungsweg."
},
"bigPicture": {
"heading": "Überblick",
"diagram1": {
"arrowLabel": "Stufe 1",
"nodes": {
"sourceLabel": "/etc/network/interfaces",
"sourceDetail": "auto vmbr0\niface vmbr0 inet static\n bridge-ports enp3s0",
"bridgeLabel": "Analysieren (schreibgeschützt)",
"bridgeDetail": "ip link show enp3s0\n→ nicht vorhanden",
"targetLabel": "Bericht + Vorschlag",
"targetDetail": "❌ enp3s0: NICHT GEFUNDEN\nErsetzen mit: eno1\n(noch keine Änderungen)"
}
},
"diagram2": {
"arrowLabel": "mit Backup anwenden",
"nodes": {
"sourceLabel": "Geführte Reparatur",
"sourceDetail": "1. Backup\n2. Aktuelle Konfiguration anzeigen\n3. Änderungsvorschau\n4. Anwenden\n5. Überprüfen",
"targetLabel": "/etc/network/interfaces (neu)",
"targetDetail": "auto vmbr0\niface vmbr0 inet static\n bridge-ports eno1"
}
}
},
"step1": {
"heading": "Schritt 1: Analyse (schreibgeschützt)",
"intro": "Nach Auswahl von <strong>Brückenkonfiguration analysieren</strong> bricht das Werkzeug sofort ab, falls der Host nicht den klassischen Debian-/Proxmox-Stack nutzt. Andernfalls prüft es jede Bridge und meldet:",
"items": [
"Brückenname, aktueller Status (UP / DOWN), zugewiesene IP.",
"Jeder deklarierte Port und ob er derzeit existiert (<code>ip link show &lt;port&gt;</code>).",
"Für jeden ungültigen Port: ein vorgeschlagener Ersatz (die erste verfügbare physische Schnittstelle) sowie der genaue Befehl <code>sed</code>, um ihn manuell anzuwenden.",
"Brücken ohne <code>bridge-ports</code> und verwaiste <code>auto</code>-Einträge (kein passender <code>iface</code>-Block)."
],
"readonlyTitle": "Garantie einer schreibgeschützten Analyse",
"readonlyBody": "Bis zu diesem Punkt hat das Skript keinen einzigen Änderungsbefehl ausgeführt. Sie können die Analyse offen lassen, die vorgeschlagenen <code>sed</code>-Befehle kopieren und sie manuell anwenden, wenn Sie möchten - oder die nächste Aufforderung akzeptieren, um in die geführte Reparatur einzusteigen."
},
"step2": {
"heading": "Schritt 2: geführte Reparatur (5 Schritte)",
"intro": "Wird nur gestartet, wenn Sie der Aufforderung am Ende der Analyse zustimmen. Jeder Schritt zeigt die geplante Aktion und bittet vor dem Fortfahren um Bestätigung.",
"steps": [
{
"title": "1. Sicherheitssicherung",
"body": "Kopiert <code>/etc/network/interfaces</code> in <code>/var/backups/proxmenux/interfaces_backup_&lt;TIMESTAMP&gt;</code>. Der genaue Sicherungspfad wird vor der Kopie und danach mit dem Rollback-Befehl angezeigt.",
"tone": "blue"
},
{
"title": "2. Überprüfung der aktuellen Konfiguration",
"body": "Öffnet das Live <code>/etc/network/interfaces</code> in einem scrollbaren Dialog, so dass Sie genau sehen können, was geändert werden soll.",
"tone": "blue"
},
{
"title": "3. Vorgeschlagene Änderungen anzeigen",
"body": "Listet genau die betroffenen Bridges und geplanten Portersetzungen auf. Falls inzwischen kein Reparaturbedarf mehr besteht, weil der Port zwischenzeitlich wieder aufgetaucht ist, endet der Ablauf mit <em>„Keine Änderungen erforderlich.“</em>",
"tone": "blue"
},
{
"title": "4. Änderungen anwenden",
"body": "Für jede betroffene Brücke läuft <code>sed -i \"/iface $bridge/,/bridge-ports/ s/bridge-ports.*/bridge-ports $new_ports/\"</code> gegen <code>/etc/network/interfaces</code>. Wenn für eine Brücke kein gültiger Ersatz verfügbar war, wird die Substitution übersprungen und in Schritt 5 gemeldet.",
"tone": "amber"
},
{
"title": "5. Überprüfung",
"body": "Liest die Datei erneut und bestätigt, dass der neue Port jeder Bridge existiert. Gibt den Befehl zum Zurücksetzen aus (<code>cp &lt;backup&gt; /etc/network/interfaces</code>). Bietet abschließend <strong>Netzwerk neu starten</strong> an — stimmen Sie nur zu, wenn ein Konsolenzugang als Ersatz bereitsteht.",
"tone": "emerald"
}
],
"restartTitle": "Netzwerkneustart ≠ risikoloses Rückgängigmachen",
"restartBody": "Die Reparatur wird auf den Datenträger geschrieben, unabhängig davon, ob Sie den Dienst neu starten. <code>systemctl restart networking</code> wendet die Änderung <em>jetzt</em> an und kann Ihre SSH-Sitzung unterbrechen, wenn der neue Port falsch ist. Lehnen Sie ab, wird die Änderung dennoch beim nächsten Systemstart wirksam. Prüfen Sie daher die neue Konfiguration oder setzen Sie sie mit dem angezeigten Befehl zurück."
},
"edits": {
"heading": "Was wird bearbeitet (genau)",
"body": "Nur die Zeile <code>bridge-ports</code> jeder betroffenen Bridge. Andere Direktiven (<code>address</code>, <code>netmask</code>, <code>gateway</code>, <code>bridge-stp</code>, …) bleiben unverändert. Das Skript erstellt oder entfernt in diesem Ablauf keine <code>iface</code>-Blöcke — dafür ist <link>Konfigurationsanalyse &amp; Bereinigung</link> zuständig."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"unsupportedTitle": "Die Analyse bricht mit „Nicht unterstützter Netzwerkstack“ ab",
"unsupportedBody": "Der Host läuft netplan, systemd-networkd oder NetworkManager. Das Tool unterstützt nur <code>/etc/network/interfaces</code>. Schalten Sie den Host zuerst auf den klassischen Stack oder bearbeiten Sie die Konfiguration mit dem nativen Tooling des Managers (z.B. <code>netplan apply</code>).",
"noSuggestTitle": "Kein Vorschlag wird für einen ungültigen Port gedruckt",
"noSuggestBody": "Der Host hat null freie physische Schnittstellen (alles befindet sich entweder bereits in einer anderen Brücke oder existiert nicht). Die Analyse greift auf <code>bridge-ports none</code> zurück, so dass die Brücke zumindest ohne Port auftauchen kann. Fügen Sie eine NIC hinzu oder migrieren Sie Ports zwischen Brücken manuell, bevor Sie erneut ausführen.",
"stillDownTitle": "Die Reparatur ist abgeschlossen, aber die Brücke ist noch DOWN",
"stillDownBody": "<code>sed</code> hat die Datei aktualisiert, aber <code>systemctl restart networking</code> wurde abgelehnt. Führen Sie den Befehl nach Prüfung der neuen Konfiguration manuell aus oder starten Sie das System neu. Wurde der Neustart angenommen und bleibt die Bridge DOWN, prüfen Sie mit <code>ip link show</code>, ob der neue Port existiert, und suchen Sie mit <code>journalctl -u networking</code> nach der Ursache: nicht eingestecktes Kabel, nicht ausgehandelte Verbindung oder ein Port, der schon zu einer anderen Bridge gehört.",
"lostSshTitle": "Ich habe den SSH-Zugang direkt nach dem Neustart des Netzwerks verloren",
"lostSshIntro": "Verwenden Sie Konsole / IPMI / iKVM, um den Host zu erreichen. Wiederherstellen des Backups:",
"lostSshOutro": "Führen Sie dann die Analyse erneut von der Konsole aus aus, um herauszufinden, warum der Vorschlag nicht funktioniert hat (normalerweise: Der Ersatzanschluss ist nicht wirklich angeschlossen)."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Persistente Schnittstellennamen",
"href": "/docs/network/persistent-names",
"tail": " — bindet Namen an MAC-Adressen, damit dieses Szenario nicht erneut auftritt."
},
{
"label": "Konfigurationsanalyse und geführte Bereinigung",
"href": "/docs/network/config-analysis",
"tailRich": "— für verwaiste <code>iface</code>-Blöcke (die andere Hälfte des gleichen Problems)."
},
{
"label": "Schnittstellen sichern und neu starten",
"href": "/docs/network/backup-restore",
"tail": "- manuelle Snapshots und der Wiederherstellungsbrowser."
}
]
}
}
@@ -0,0 +1,122 @@
{
"meta": {
"title": "Konfigurationsanalyse und geführte Bereinigung | ProxMenux-Dokumentation",
"description": "Erkennt iface-Blöcke in /etc/network/interfaces, die auf physische NICs verweisen, die nicht mehr auf dem Host vorhanden sind. Meldet sie und bietet eine 5-schrittgesteuerte Entfernung mit obligatorischem Backup und einer Blockvorschau.",
"ogTitle": "Konfigurationsanalyse und geführte Bereinigung | ProxMenux-Dokumentation",
"ogDescription": "Finden und entfernen Sie verwaiste Schnittstellenblöcke, die durch Hardwareänderungen zurückgelassen wurden, mit vollständiger Vorschau und Rollback."
},
"header": {
"title": "Konfigurationsanalyse und geführte Bereinigung",
"description": "Untersucht jeden iface-Block in /etc/network/interfaces und prüft, ob die zugehörige physische Netzwerkkarte noch vorhanden ist. Meldet nach Hardwareänderungen verbliebene verwaiste Blöcke und bietet eine geführte Entfernung mit Backup, Vorschau und Bestätigung für jeden Block.",
"section": "Netzwerk"
},
"intro": {
"title": "Was das macht",
"body": "Identifiziert <code>iface</code>-Deklarationen, deren unterstützende NIC nicht mehr auf dem Host vorhanden ist (typisch nach dem Ersetzen oder Entfernen einer Netzwerkkarte). Anschließend wird eine geführte Bereinigung angeboten, bei der <em>nur</em> die verwaisten Blöcke entfernt werden, mit einer Sicherung, einer Vorschau pro Abschnitt und einer expliziten endgültigen Bestätigung."
},
"differs": {
"heading": "Wie es sich von der Brückenanalyse unterscheidet",
"headerAspect": "Aspekt",
"headerBridge": "Brückenanalyse",
"headerConfig": "Konfigurationsanalyse",
"rows": [
{
"aspect": "Untersucht",
"bridge": "Brücken (<code>vmbrX</code>) und ihre <code>bridge-ports</code>-Linie",
"config": "Jeder <code>iface</code>-Block (ausgenommen Loopback, Bridges, Bonds)"
},
{
"aspect": "Erkennt",
"bridge": "Brücken, die auf einen nicht vorhandenen Port verweisen",
"config": "Standalone-Schnittstellenblöcke für NICs, die nicht existieren"
},
{
"aspect": "Reparaturmaßnahmen",
"bridge": "Ersetzt den Portnamen in <code>bridge-ports</code>",
"config": "Entfernen Sie den gesamten <code>iface</code>-Block"
},
{
"aspect": "Ausgenommen sind",
"bridge": "Nichts – jede Brücke wird analysiert",
"config": "Bridges (<code>vmbrX</code>) und Bonds (<code>bondX</code>) bleiben immer erhalten, da sie virtuell sind und beim Start vorübergehend fehlen können"
}
],
"outro": "In der Praxis führen Sie oft beide Werkzeuge in dieser Reihenfolge aus: zuerst <strong>Konfigurationsanalyse</strong>, um verwaiste Blöcke zu entfernen, dann <link>Brückenanalyse</link>, um Bridges, die auf die entfernte Schnittstelle verwiesen, neu zuzuordnen."
},
"step1": {
"heading": "Schritt 1: Analyse (schreibgeschützt)",
"intro": "Bricht sofort ab, wenn der Host nicht den klassischen Netzwerkstack nutzt. Andernfalls werden alle konfigurierten Schnittstellen außer Loopback mit ihrem Status aufgelistet:",
"virtTitle": "Virtuelle Schnittstellen sind geschützt",
"virtBody": "Bridges (<code>vmbrX</code>) und Bonds (<code>bondX</code>) sind virtuelle Konstrukte. Sie können zum Zeitpunkt der Prüfung durchaus fehlen, etwa eine Bridge ohne Ports. Daher schlägt die Analyse nur die Entfernung physischer Netzwerkkarten vor, niemals die dieser virtuellen Schnittstellen."
},
"step2": {
"heading": "Schritt 2: geführte Bereinigung (5 Schritte)",
"intro": "Wird nur gestartet, wenn Sie der Aufforderung am Ende der Analyse zustimmen. Jeder Schritt muss bestätigt werden; bei Abbruch wird ohne Schreiben beendet.",
"steps": [
{
"title": "1. Sicherheitssicherung",
"body": "Kopiert <code>/etc/network/interfaces</code> nach <code>/var/backups/proxmenux/interfaces_backup_&lt;TIMESTAMP&gt;</code>. Der Pfad wird vorher und nachher angezeigt.",
"tone": "blue"
},
{
"title": "2. Bestätigen Sie die Entfernungsliste",
"body": "Listet genau die zu entfernenden physischen Schnittstellenblöcke auf. Sind die Netzwerkkarten zwischen Analyse und Bereinigung wieder aufgetaucht, etwa nach erneutem Einsetzen einer Karte, endet der Ablauf mit <em>„Keine Bereinigung erforderlich.“</em>",
"tone": "blue"
},
{
"title": "3. Vorschau der genauen Block(s)",
"body": "Öffnet eine scrollbare Ansicht jedes <code>iface</code>-Blocks, der gelöscht werden würde, exakt wie in der Datei. Hier können Sie etwa einen wichtigen <code>up</code>-Hook erkennen, den Sie behalten möchten.",
"tone": "blue"
},
{
"title": "4. Entfernung anwenden",
"body": "Für jede verwaiste Schnittstelle läuft <code>sed -i \"/^iface $iface/,/^$/d\" /etc/network/interfaces</code>. Das löscht von der passenden <code>iface</code>-Zeile bis zur nächsten leeren Zeile.",
"tone": "amber"
},
{
"title": "5. Überprüfung",
"body": "Liest die Datei erneut, listet auf, was entfernt wurde, und überprüft die verbleibenden Schnittstellen erneut. Gibt den Rollback-Befehl aus. Führt <strong>nicht</strong> einen automatischen Neustart des Netzwerks durch. Das Entfernen eines nicht verwendeten Blocks kann sicher beim nächsten Neustart angewendet werden und vermeidet eine Beeinträchtigung des Live-Status.",
"tone": "emerald"
}
],
"noRestartTitle": "Startet das Netzwerk nicht automatisch neu",
"noRestartBody": "Im Gegensatz zur Brückenreparatur bietet der Bereinigungsfluss keinen Neustart des Dienstes. Das Entfernen eines unbenutzten Schnittstellenblocks hat keine unmittelbaren Auswirkungen auf die laufende Konfiguration, so dass ein Neustart unnötig ist und ein unnötiges Verbindungsrisiko darstellt. Die Änderung wird beim nächsten manuellen <code>systemctl restart networking</code> oder beim nächsten Neustart wirksam."
},
"caveats": {
"heading": "Wichtige Vorbehalte",
"boundaryTitle": "Die Blockgrenze ist die erste leere Linie",
"boundaryBody": "Das <code>sed</code>-Muster löscht von <code>iface &lt;name&gt;</code> bis zur nächsten leeren Zeile. Fehlt in <code>/etc/network/interfaces</code> eine Leerzeile zwischen Blöcken, was nach manueller Bearbeitung möglich ist, kann auch der nächste Block gelöscht werden. Deshalb ist <strong>Schritt 3 obligatorisch</strong>: Prüfen Sie die Vorschau vor der Bestätigung.",
"tandemTitle": "Ein Waisen-Iface, das von einer Brücke verwendet wird, wird hier erkannt, nicht in der Brückenanalyse",
"tandemBody": "Wenn <code>vmbr0</code> <code>bridge-ports enp3s0</code> deklariert und <code>enp3s0</code> einen eigenen Block <code>iface enp3s0 inet manual</code> hat, bleibt nach der Entfernung von <code>enp3s0</code> eine ungültige Referenz in <code>vmbr0</code>. Führen Sie danach die <link>Brückenanalyse</link> aus, um den Bridge-Port neu zuzuordnen oder zu entfernen. Beide Abläufe sind für die gemeinsame Verwendung ausgelegt."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"notFoundTitle": "Die Analyse zeigt mein neues NIC als \"NICHT GEFUNDEN\"",
"notFoundBody": "Der Kernel sieht das Gerät unter einem anderen Namen als in der Datei. Führen Sie <code>ip link show</code> aus, um den tatsächlichen Namen zu erhalten. Dies ist genau der Fall, wenn <link>Persistente Schnittstellennamen</link> das Problem verhindern würden.",
"tooMuchTitle": "Die Bereinigung hat zu viel entfernt (einen Block, den ich behalten wollte)",
"tooMuchBody": "Wiederherstellen aus dem in Schritt 5 gedruckten Backup:",
"tooMuchOutro": "Bearbeiten Sie die Datei von Hand, um eine klare leere Linie zwischen den Blöcken hinzuzufügen, bevor Sie die Bereinigung erneut ausführen, oder entfernen Sie den problematischen Block manuell.",
"bridgeBreakTitle": "Eine Brücke funktioniert nach dem Aufräumen nicht mehr",
"bridgeBreakBody": "Die Bridge war auf einen Port angewiesen, dessen <code>iface</code>-Block gerade entfernt wurde. Führen Sie die <link>Brückenanalyse</link> aus; der Vorschlag ordnet der Bridge eine vorhandene physische Schnittstelle zu."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Brückenanalyse und geführte Reparatur",
"href": "/docs/network/bridge-analysis",
"tail": " — der natürliche nächste Schritt nach einer Bereinigung."
},
{
"label": "Persistente Schnittstellennamen",
"href": "/docs/network/persistent-names",
"tail": " — verhindert, dass sich nach jeder Hardwareänderung verwaiste Blöcke ansammeln."
},
{
"label": "Schnittstellen sichern und neu starten",
"href": "/docs/network/backup-restore",
"tail": "- manuelle Snapshots und der Wiederherstellungsbrowser."
}
]
}
}
@@ -0,0 +1,94 @@
{
"meta": {
"title": "Diagnose | ProxMenux Dokumentation",
"description": "Drei einmalige, schreibgeschützte Diagnoseprüfungen: Routingtabelle anzeigen, Konnektivität testen und erweiterte Diagnose. Reine Prüfung — schreibt nie in /etc/network/interfaces und führt nie ändernde Befehle aus, mit einer ausdrücklichen Ausnahme: Wird NetworkManager erkannt, kann er nach Ihrer Zustimmung vollständig entfernt werden.",
"ogTitle": "Diagnose | ProxMenux Dokumentation",
"ogDescription": "Schreibgeschützte Netzwerkdiagnose für den Proxmox-Host: Routing, Erreichbarkeit und erweiterte Statistiken."
},
"header": {
"title": "Diagnose",
"description": "Drei einmalige, schreibgeschützte Prüfungen des aktuellen Netzwerkzustands: Routingtabelle, Konnektivitätstest und erweiterte Statistiken. Keine schreibt in /etc/network/interfaces — jederzeit sicher nutzbar, auch über SSH. Für interaktive Echtzeitüberwachung siehe Überwachungswerkzeuge für Echtzeitdaten.",
"section": "Netzwerk"
},
"intro": {
"title": "Was das macht",
"body": "Berichtet über Routing, Erreichbarkeit und zusammengefasste Statistiken, <strong>ohne etwas zu ändern</strong>. Damit können Sie den ordnungsgemäßen Netzwerkbetrieb bestätigen oder doppelte IP-Adressen erkennen. Für die kontinuierliche Verkehrsbeobachtung siehe <monitoringLink>Überwachungswerkzeuge für Echtzeitdaten</monitoringLink>; zur Anzeige der unverarbeiteten Konfigurationsdatei siehe <backupLink>Schnittstellen sichern und neu starten</backupLink>."
},
"routing": {
"heading": "Routing-Tabelle anzeigen",
"body": "Listet alle aktuell vom Kernel verwendeten Routen auf (<code>ip route show</code>) und hebt das Standard-Gateway hervor. Damit lässt sich prüfen, ob Internetverkehr die erwartete Schnittstelle verwendet und keine veralteten Routen Vorrang haben."
},
"connectivity": {
"heading": "Konnektivität testen",
"intro": "Sendet zwei ICMP-Sonden nacheinander an drei Ziele und meldet jede einzelne. Führt dann eine <code>nslookup google.com</code> aus, um die DNS-Auflösung unabhängig von ICMP zu überprüfen.",
"headerTest": "Test",
"headerTarget": "Ziel",
"headerConfirms": "Was es bestätigt",
"rows": [
{
"test": "Google DNS",
"target": "8.8.8.8",
"confirms": "Externe Erreichbarkeit über bekannte Anycast IP"
},
{
"test": "Cloudflare DNS",
"target": "1.1.1.1",
"confirms": "Unabhängige zweite Meinung, wenn Google ICMP blockiert"
},
{
"test": "Gateway",
"target": "(Standardroute)",
"confirms": "L2/L3-Verbindung zum lokalen Router"
},
{
"test": "DNS-Auflösung",
"target": "google.com",
"confirms": "Der DNS-Server ist erreichbar und antwortet"
}
],
"readingTitle": "Lesen des Ergebnisses",
"readingBody": "Wenn der Gateway-Test besteht, aber die öffentlichen DNS-Ziele fehlschlagen, haben Sie lokale Konnektivität, aber kein Internet - überprüfen Sie den Upstream des Gateways. Wenn die DNS-Auflösung fehlschlägt, Pings zu <code>8.8.8.8</code> jedoch erfolgreich sind, ist das Problem der Resolver, nicht das Netzwerk: Überprüfen Sie <code>/etc/resolv.conf</code>."
},
"advanced": {
"heading": "Erweiterte Diagnose",
"intro": "Fasst netzwerkweite Statistiken zusammen und prüft auf häufige Probleme. Meldet die Anzahl aktiver Verbindungen, lauschende Ports und die Gesamtzahl der Schnittstellen und weist ausdrücklich auf zwei problematische Konstellationen hin:",
"items": [
"<strong>NetworkManager läuft auf einem Proxmox-Host.</strong> NetworkManager und Proxmox’ <code>ifupdown</code> stehen im Konflikt: Beide versuchen, Schnittstellen zu verwalten, sodass Bridges ständig ihren Zustand wechseln oder nicht aktiviert werden. Wird NetworkManager erkannt, bietet das Werkzeug an, ihn interaktiv zu stoppen, zu deaktivieren und vollständig zu entfernen (dies ist die <em>einzige</em> Diagnose, die das System ändern kann, und nur nach ausdrücklicher Zustimmung).",
"<strong>Doppelte IP-Adressen auf verschiedenen Schnittstellen.</strong> Zwei Schnittstellen mit derselben IPv4-Adresse verursachen sporadische Verbindungsprobleme, die innerhalb der VM äußerst schwer zu untersuchen sind. Erkannt über <code>ip -4 addr show | sort | uniq -d</code>."
],
"nmTitle": "Die NetworkManager-Eingabeaufforderung ist hier die einzige Änderungsaktion",
"nmBody": "Alle anderen Prüfungen in der erweiterten Diagnose sind schreibgeschützt. Die Entfernung von NetworkManager erfordert eine Ja/Nein-Bestätigung und führt <code>systemctl stop / disable</code> + <code>apt-get purge -y network-manager</code> aus. Wenn Sie ablehnen, ändert sich nichts."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"gwTitle": "Konnektivität testen meldet einen Gatewayfehler, aber der Host hat Internetzugriff",
"gwBody": "Einige Router reagieren nicht auf ICMP von ihrer internen Schnittstelle aus, selbst wenn sie den Datenverkehr gerne weiterleiten. Testen Sie mit <code>traceroute 8.8.8.8</code> von einer Konsole aus: Wenn der zweite Hop Ihr ISP ist und der öffentliche DNS-Test bestanden ist, ist das Gateway trotz des fehlgeschlagenen Pings in Ordnung.",
"dupTitle": "Die erweiterte Diagnose meldet weiterhin doppelte IP-Adressen, obwohl ich eine entfernt habe",
"dupBody": "Der Check betrachtet den Live-Kernel-Status, nicht die Config-Datei. Führen Sie <code>ip -4 addr show</code> aus, um zu bestätigen; wenn das Duplikat noch vorhanden ist, hält es immer noch eine Schnittstelle. Verwenden Sie <code>ip addr del &lt;IP&gt;/&lt;mask&gt; dev &lt;iface&gt;</code>, um es aus dem Live-Zustand zu entfernen, und bearbeiten Sie dann <code>/etc/network/interfaces</code>, wenn es auch persistent ist."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Überwachungswerkzeuge für Echtzeitdaten",
"href": "/docs/network/monitoring",
"tail": "— interaktive iftop / iptraf-ng / iperf3 Launcher."
},
{
"label": "Brückenanalyse und geführte Reparatur",
"href": "/docs/network/bridge-analysis",
"tail": " — wenn einem vmbrX der physische Port fehlt."
},
{
"label": "Konfigurationsanalyse und geführte Bereinigung",
"href": "/docs/network/config-analysis",
"tail": " — wenn eine alte Netzwerkkarte noch deklariert, aber nicht mehr vorhanden ist."
},
{
"label": "Schnittstellen sichern und neu starten",
"href": "/docs/network/backup-restore",
"tail": " — um vor jeder Änderung einen Schnappschuss der Konfiguration zu erstellen."
}
]
}
}
+107
View File
@@ -0,0 +1,107 @@
{
"meta": {
"title": "Proxmox-Netzwerkverwaltung — Bridges, Bonds, Diagnose, Reparatur | ProxMenux",
"description": "Schreibgeschützte Diagnose, Analysen mit anschließenden Vorschlägen und geführte Reparaturen für den Debian-/Proxmox-Netzwerkstack (/etc/network/interfaces). Prüfen Sie Bridges und Bonds, starten Sie Live-Überwachungswerkzeuge, vergeben Sie dauerhafte Schnittstellennamen, erstellen Sie Backups und starten Sie das Netzwerk sicher neu — mit obligatorischen Backups und schrittweiser Vorschau.",
"ogTitle": "Proxmox-Netzwerkverwaltung — Bridges, Bonds, Diagnose, Reparatur",
"ogDescription": "Diagnose, Analyse und geführte Reparaturen für den Proxmox-Netzwerkstack mit obligatorischen Backups und Schritt-für-Schritt-Vorschau.",
"twitterTitle": "Proxmox-Netzwerkverwaltung | ProxMenux",
"twitterDescription": "Brücken, Bonds, Diagnosen und geführte Reparaturen für den Proxmox-Netzwerkstack mit obligatorischen Backups."
},
"header": {
"title": "Netzwerkmanagement",
"description": "Schreibgeschützte Diagnose, Analyseberichte mit anschließenden Vorschlägen und geführte Reparaturen für den klassischen Debian-/Proxmox-Netzwerkstack. Jeder destruktive Vorgang erstellt zuerst ein Backup und zeigt die genauen Änderungen vor der Anwendung an.",
"section": "Netzwerk"
},
"intro": {
"title": "Wozu dieses Menü dient",
"body": "Prüfen, diagnostizieren und reparieren Sie bei Bedarf die Netzwerkkonfiguration des Proxmox-Hosts, ohne den Fernzugriff zu verlieren. Die Werkzeuge folgen einem Prinzip: <strong>zuerst lesen, dann Vorschläge machen und Änderungen nur mit ausdrücklicher Zustimmung und einer Sicherheitskopie anwenden</strong>. Es gibt keine Schaltfläche „Alles automatisch reparieren“."
},
"openingMenu": {
"heading": "Öffnen des Menüs",
"intro": "Wählen Sie im Hauptmenü von ProxMenux <strong>Netzwerk</strong>. Folgendes wird angezeigt:",
"imageAlt": "Menü Netzwerkmanagement mit Diagnose, Überwachung, Analyse, Reparatur, persistenten Namen und Backup-Optionen"
},
"safety": {
"heading": "Das Sicherheitsmodell",
"body": "Das Bearbeiten der Netzwerkkonfiguration auf einem entfernten Proxmox-Host ist eine der einfachsten Möglichkeiten, sich auszusperren. ProxMenux behandelt jede Aktion entsprechend. Die Werkzeuge fallen in drei Verhaltensstufen - wählen Sie die Karte, die Ihrer Absicht entspricht:"
},
"tiers": {
"readOnly": {
"title": "Schreibgeschützt",
"body": "Reine Inspektion. Kann das System unter keinen Umständen ändern.",
"items": [
"Routingtabelle, Konnektivitätstests, fortgeschrittene Statistiken",
"Verkehrsüberwachung in Echtzeit (iftop, iptraf-ng)",
"Bandbreitentest (iperf3)"
]
},
"analyze": {
"title": "Analysieren, dann vorschlagen",
"body": "Erkennt Probleme, druckt einen Bericht mit vorgeschlagenen Shell-Befehlen und stoppt. Sie entscheiden, ob Sie anschließend in die geführte Reparatur eintreten möchten.",
"items": [
"Brückenkonfigurationsanalyse",
"Netzwerkkonfigurationsanalyse"
]
},
"apply": {
"title": "Mit Backup anwenden",
"body": "Ändert das System. Erstellt immer zuerst ein Backup der betroffenen Datei mit Zeitstempel und zeigt vor dem Schreiben eine Vorschau an.",
"items": [
"Persistente Schnittstellennamen (.link-Dateien)",
"Manuelles Backup, Wiederherstellung und Neustart des Dienstes"
]
}
},
"classicTitle": "Nur klassischer Stack",
"classicBody": "Jede Analyse- und Reparaturfunktion prüft den aktiven Netzwerkmanager, bevor sie etwas ändert. Wenn der Host <strong>netplan</strong>, <strong>systemd-networkd</strong> oder <strong>NetworkManager</strong> verwendet, bricht das Werkzeug sofort mit einer klaren Meldung ab — das Menü unterstützt nur den klassischen Debian-/Proxmox-Stack unter <code>/etc/network/interfaces</code>. Das ist beabsichtigt: Eine netplan-Datei nach Regeln für <code>ifupdown</code> zu bearbeiten, würde die Konfiguration unbemerkt beschädigen.",
"backups": {
"heading": "Wo Backups gespeichert werden",
"intro": "Jede geführte Reparatur, Wiederherstellung oder manuelle Sicherung schreibt eine zeitgestempelte Kopie von <code>/etc/network/interfaces</code> auf <code>/var/backups/proxmenux/</code>:",
"rollbackIntro": "So rollen Sie manuell von einer Konsole zurück:"
},
"readOnlySection": {
"heading": "Schreibgeschützte Prüfung",
"body": "Der Ausgangspunkt, wenn etwas nicht stimmt. Reine Prüfung — schreibt nie in <code>/etc/network/interfaces</code> und führt nie einen ändernden Befehl aus (mit einer ausdrücklichen Ausnahme: Wird NetworkManager erkannt, kann er nach Ihrer Zustimmung vollständig entfernt werden). Jederzeit sicher über SSH nutzbar.",
"options": [
{
"title": "Diagnose",
"description": "Drei einmalige, schreibgeschützte Prüfungen: Routingtabelle anzeigen, Konnektivität testen und erweiterte Diagnose. Reine Prüfung — schreibt nie in das System."
},
{
"title": "Überwachungswerkzeuge für Echtzeitdaten",
"description": "Drei interaktive Launcher: iftop (Echtzeitbandbreite pro Hostpaar), iptraf-ng (Multi-Mode-Traffic-Monitor) und iperf3 (Bandbreitentest, Server / Client-Modus)."
}
]
},
"analyzeSection": {
"heading": "Analysieren, dann vorschlagen",
"body": "Wenn eine Prüfung oder ein tatsächlicher Ausfall auf ein Konfigurationsproblem hinweist, kommen diese Werkzeuge zum Einsatz. Jedes untersucht den relevanten Teil von <code>/etc/network/interfaces</code>, gibt einen detaillierten Bericht mit dem genauen Shell-Befehl zur Behebung jedes Befunds aus und <strong>stoppt</strong>. Wenn Sie anschließend die optionale geführte Reparatur annehmen, wird vor jeder Änderung eine Sicherung erstellt und die Änderung vor dem Schreiben angezeigt.",
"options": [
{
"title": "Brückenanalyse und geführte Reparatur",
"description": "Erkennt vmbrX-Bridges mit fehlenden oder ungültigen Ports, etwa nach einer neuen PCI-Gerätenummerierung. Zeigt zuerst einen Bericht an und repariert nur, wenn Sie dem geführten Ablauf mit 5 Schritten zustimmen."
},
{
"title": "Konfigurationsanalyse und geführte Bereinigung",
"description": "Findet in /etc/network/interfaces deklarierte physische Schnittstellen, die nicht mehr existieren (Waisenkonfigurationen, die durch Hardwareänderungen zurückgelassen wurden). Meldet sie und bietet eine geführte Entfernung an."
}
]
},
"applySection": {
"heading": "Mit Backup anwenden",
"body": "Diese Werkzeuge schreiben bestimmungsgemäß auf den Datenträger. Jedes erstellt vorher ein Backup der betroffenen Datei mit Zeitstempel. Destruktive Optionen wie Wiederherstellen und Neustarten erfordern eine ausdrückliche Ja/Nein-Bestätigung. <em>Persistente Schnittstellennamen</em> werden erst beim nächsten Neustart wirksam, sodass die Einrichtung auch auf einem entfernten Host sicher geplant werden kann.",
"options": [
{
"title": "Persistente Schnittstellennamen",
"description": "Bindet Schnittstellennamen (eno1, enp3s0, …) über systemd-.link-Dateien an MAC-Adressen. Die Namen bleiben bei PCI-Steckplatzwechseln, Kernel-Upgrades und beim Hinzufügen oder Entfernen anderer Netzwerkkarten erhalten."
},
{
"title": "Schnittstellen sichern und neu starten",
"description": "Manueller Snapshot von /etc/network/interfaces, Durchsuchen und Wiederherstellen früherer Backups, Anzeigen der Live-Konfiguration und Neustart des Netzwerkdienstes bei Bedarf."
}
]
},
"consoleTitle": "Konsolenzugriff bereithalten",
"consoleSubTitle": "Vor jeder Reparatur auf einem entfernten Host",
"consoleBody": "Wenn Sie über SSH verbunden sind und nur einen Zugangsweg zum Host haben, halten Sie vor Netzwerkänderungen einen Ersatzweg bereit: eine physische Konsole, IPMI oder iKVM oder einen anderen Rechner im selben LAN. Die geführten Reparaturen sind sicher und bieten immer einen Befehl zum Zurücksetzen. Eine falsch konfigurierte Bridge oder eine unterbrochene Verbindung kann Sie dennoch aussperren, bis Sie die Konsole erreichen."
}
@@ -0,0 +1,136 @@
{
"meta": {
"title": "Überwachungswerkzeuge für Echtzeitdaten | ProxMenux-Dokumentation",
"description": "Drei interaktive Netzwerküberwachungsstarter: iftop (Echtzeitbandbreite pro Hostpaar), iptraf-ng (Multi-Mode-Traffic-Monitor) und iperf3 (Bandbreitentest, Server / Client-Modus). Jeder wird bei der ersten Verwendung installiert.",
"ogTitle": "Überwachungswerkzeuge für Echtzeitdaten | ProxMenux-Dokumentation",
"ogDescription": "Interaktive Netzwerküberwachung und Bandbreitentests für den Proxmox-Host: iftop, iptraf-ng, iperf3."
},
"header": {
"title": "Überwachungswerkzeuge für Echtzeitdaten",
"description": "Drei interaktive Starter zur Echtzeit-Netzwerkbeobachtung und Bandbreitenmessung: iftop, iptraf-ng und iperf3. Jedes Werkzeug wird beim ersten Gebrauch automatisch über apt installiert, läuft im Vordergrund und wird mit der angegebenen Taste beendet. Sie ändern die Netzwerkkonfiguration des Hosts nicht; iperf3 erzeugt Testverkehr.",
"section": "Netzwerk"
},
"intro": {
"title": "Was das macht",
"body": "Drei interaktive Monitoring-Tools, jedes hinter seinem eigenen Menüeintrag. Beim ersten Start eines Pakets wird das Paket lautlos über <code>apt-get</code> installiert. Nachfolgende Starts beginnen sofort. Keines dieser Tools ändert die Host-Netzwerkkonfiguration."
},
"when": {
"heading": "Welches Werkzeug Sie wann verwenden",
"headerQuestion": "Fragestellung",
"headerUse": "Verwenden",
"rows": [
{
"question": "Wer lastet die Verbindung <em>gerade jetzt</em> aus?",
"use": "iftop"
},
{
"question": "Welche Protokollaufschlüsselung / Paketgrößen / TCP-Flows fließen?",
"use": "iptraf-ng"
},
{
"question": "Wie viel Bandbreite ist tatsächlich zwischen zwei Hosts verfügbar?",
"use": "iperf3"
}
]
},
"iftop": {
"heading": "Netzwerknutzung in Echtzeit (iftop)",
"body": "Bandbreite pro Hostpaar (Quelle ↔ Ziel) in Echtzeit — wie <code>top</code> für Netzwerkverkehr. Zeigt die größten Datenströme oben an, mit gleitenden Durchschnitten über 2/10/40 Sekunden. Das beste Werkzeug für die Frage <em>„Warum ist mein Uplink ausgelastet?“</em>.",
"exit": "<strong>Beenden:</strong> Drücken Sie <kbd>q</kbd>. ProxMenux zeigt vor dem Start einen Erinnerungsdialog.",
"keysTitle": "Nützliche Tasten in iftop",
"keysBody": "<kbd>n</kbd> DNS-Auflösung umschalten, <kbd>p</kbd> Portnummern anzeigen, <kbd>P</kbd> Anzeige pausieren, <kbd>t</kbd> Zeilenrichtung umschalten (gesendet / empfangen / beides), <kbd>1</kbd>/<kbd>2</kbd>/<kbd>3</kbd> nach dem Durchschnitt über 2 s / 10 s / 40 s sortieren. Vollständige Liste unter <code>man iftop</code>."
},
"iptraf": {
"heading": "Netzwerküberwachungstool (iptraf-ng)",
"intro": "Ein menügesteuerter Verkehrsmonitor mit mehreren Modi. iftop beantwortet <em>„wer“</em>, iptraf-ng beantwortet <em>„was“</em>: Byte-/Paketzähler pro Protokoll, Verfolgung des TCP-Verbindungszustands, Paketgrößenhistogramme und LAN-Aktivität pro Station.",
"menuIntro": "Beim Start erhalten Sie ein Menü mit fünf Optionen:",
"headerMode": "Modus",
"headerUseFor": "Verwenden Sie es für",
"rows": [
{
"mode": "IP traffic monitor",
"useFor": "Live TCP / UDP/ICMP / Other-IP-Flow-Liste mit Byte-Zählern und Verbindungszustand"
},
{
"mode": "General interface stats",
"useFor": "Aggregierte IPv4/IPv6/TCP/UDP/ICMP/Nicht-IP-Paketzahl pro NIC"
},
{
"mode": "Detailed interface stats",
"useFor": "Gleiche wie oben, aber für eine Schnittstelle, mit Paketgröße und -rate Details"
},
{
"mode": "Statistical breakdowns",
"useFor": "Histogramm der Paketgrößenverteilung nach TCP / UDP Port"
},
{
"mode": "LAN station monitor",
"useFor": "Per-MAC-Verkehrsstatistiken für die lokale Broadcast-Domain"
}
],
"exit": "<strong>Beenden:</strong> Drücken Sie in einer beliebigen Ansicht <kbd>x</kbd> oder im Hauptmenü <kbd>Q</kbd>. ProxMenux zeigt vor dem Start einen Erinnerungsdialog.",
"logTitle": "Erfasste Daten in einer Datei protokollieren",
"logBody": "Jeder Modus bietet an, erfasste Statistiken unter <code>/var/log/iptraf-ng/</code> zu protokollieren. Nützlich zur Aufzeichnung einer Verkehrsspitze: Lassen Sie das Werkzeug laufen, protokollieren Sie in eine Datei und prüfen Sie diese später, statt die Live-Anzeige mitlesen zu müssen."
},
"iperf3": {
"heading": "Bandbreitentest (iperf3)",
"intro1": "Misst den tatsächlichen TCP-Durchsatz zwischen zwei Hosts. Anders als iftop / iptraf-ng, die vorhandenen Verkehr beobachten, erzeugt iperf3 künstlichen Verkehr für einen Belastungstest der Verbindung. Unverzichtbar für Fragen wie <em>„Erreicht mein 10-GbE-Link wirklich 10 GbE?“</em> oder <em>„Liegt der Engpass an der Netzwerkkarte, am Switch oder am Speicher?“</em>.",
"intro2": "iperf3 ist ein <strong>Werkzeug für zwei Hosts</strong>: Eine Seite läuft als Server und lauscht auf TCP-Port 5201, die andere als Client, der sich verbindet, Daten sendet und die Rate ausgibt. Der ProxMenux-Starter fragt nach dem gewünschten Modus:",
"headerMode": "Modus",
"headerBehaviour": "Verhalten",
"headerCli": "Entsprechender CLI-Befehl",
"rows": [
{
"mode": "Server",
"behaviour": "Lauscht auf TCP-Port 5201 und gibt für jeden eingehenden Test Ergebnisse aus. Beenden mit Ctrl+C.",
"cli": "iperf3 -s"
},
{
"mode": "Client",
"behaviour": "Fragt nach der Server-IP / Hostname, verbindet, führt einen Standard-10-Sekunden-Test aus und druckt den Bericht aus.",
"cli": "iperf3 -c <target>"
}
],
"workflowIntro": "Typischer Workflow zum Testen einer 10 GbE-Verbindung zwischen zwei Proxmox-Hosts:",
"workflow": [
"Öffnen Sie auf Host A das Netzwerkmenü → <em>Bandbreitentest (iperf3)</em> → wählen Sie <strong>Server</strong>.",
"Öffnen Sie auf Host B den gleichen Menüeintrag → Wählen Sie <strong>Client</strong> → Geben Sie die IP von Host A ein.",
"Warten Sie 10 Sekunden. Vergleichen Sie die gemeldete Rate mit dem theoretischen Maximum des Links."
],
"sample": "Beispiel für die Client-Ausgabe:",
"flagsTitle": "Nützliche manuelle Flags (aus einer Shell ausgeführt)",
"flagsBody": "<code>-t 60</code> längerer Test (60 s statt 10 s), <code>-P 4</code> 4 parallele Datenströme (lastet schneller aus), <code>-R</code> umgekehrte Richtung (Server → Client), <code>-u -b 100M</code> UDP-Test mit 100 Mbit/s (für Jitter- und Paketverlustmessungen), <code>-p 5202</code> anderer Port (mehrere parallele Tests). Vollständige Liste unter <code>man iperf3</code>.",
"firewallTitle": "Öffnen Sie den Firewall-Port auf dem Server",
"firewallBody": "Der Server hört standardmäßig auf TCP <strong>5201</strong>. Wenn Sie den Server in einem Proxmox-Host mit einer strengen Firewall (Datacenter oder Host-Level) betreiben, erlauben Sie für die Dauer des Tests eingehende TCP 5201 von der IP des Clients und schließen Sie ihn erneut. Gleiches gilt für <code>nftables</code> / <code>iptables</code> auf bloßen Hosts."
},
"install": {
"heading": "Erster Start installiert das Paket",
"body": "Alle drei Starter prüfen, ob das Programm vorhanden ist, und führen bei Bedarf <code>apt-get update -qq &amp;&amp; apt-get install -y &lt;pkg&gt;</code> aus. Die Installation erfolgt ohne Ausgabe: Das Menü kann beim ersten Mal 10–30 Sekunden lang eingefroren wirken. Spätere Starts erfolgen sofort."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"hangTitle": "Die Installation hängt beim ersten Start endlos",
"hangBody": "Der Host hat kein Internet oder die Apt-Repos sind nicht erreichbar. Brechen Sie mit <kbd>Ctrl</kbd>+<kbd>C</kbd> ab, führen Sie <code>apt-get update</code> manuell aus, um den tatsächlichen Fehler anzuzeigen (DNS, Repo-Signatur, Proxy …), und kehren Sie dann zum Menü zurück.",
"refusedTitle": "iperf3-Client: „unable to connect to server: Connection refused“",
"refusedBody": "Entweder läuft der Server nicht oder seine Firewall blockiert TCP 5201. Prüfen Sie auf dem Server mit <code>ss -tlnp | grep 5201</code>, ob iperf3 lauscht. Lauscht es, aber der Client kann sich weiterhin nicht verbinden, prüfen Sie die Firewalls auf dem Weg zwischen beiden Hosts.",
"slowTitle": "iperf3 meldet deutlich weniger als die erwartete Verbindungsgeschwindigkeit",
"slowBody": "Häufige Ursachen nach Wahrscheinlichkeit: (1) Die CPU eines Hosts begrenzt den Durchsatz — versuchen Sie <code>iperf3 -c &lt;target&gt; -P 4</code> zur Nutzung mehrerer Kerne; (2) der Weg enthält eine langsamere Verbindung, etwa einen Gigabit-Switch zwischen zwei 10-GbE-Karten; (3) unterschiedliche MTU — prüfen Sie <code>ip link show</code> an beiden Enden; (4) deaktiviertes NIC-Offloading — siehe Community-Skript <em>Disable NIC Offloading</em> bei einer Intel-e1000e-Karte.",
"noTrafficTitle": "iftop / iptraf-ng zeigt keinen Traffic für einen beschäftigten Host an",
"noTrafficBody": "Die Standarderfassung erfolgt auf der ersten erkannten Schnittstelle. Geben Sie die richtige explizit aus der Shell an: <code>iftop -i vmbr0</code> oder <code>iptraf-ng -i vmbr0</code>. Der Menüstarter verwendet den Standard; für nicht standardmäßige Schnittstellen, laufen Sie von einer Konsole aus."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Diagnose",
"href": "/docs/network/diagnostics",
"tail": " — die einmaligen, schreibgeschützten Prüfungen (Routing, Konnektivität, erweiterte Statistiken)."
},
{
"label": "Brückenanalyse und geführte Reparatur",
"href": "/docs/network/bridge-analysis",
"tail": "Wenn die Überwachung zeigt, dass eine Schnittstelle oder Brücke nicht das tut, was sie sollte."
}
]
}
}
@@ -0,0 +1,130 @@
{
"meta": {
"title": "Persistente Schnittstellennamen | ProxMenux-Dokumentation",
"description": "Binden Sie Proxmox-Schnittstellennamen (eno1, enp3s0, …) über systemd-.link-Dateien an MAC-Adressen, damit sie bei neuer PCI-Nummerierung, Kernel-Upgrades und beim Hinzufügen oder Entfernen anderer Netzwerkkarten erhalten bleiben.",
"ogTitle": "Persistente Schnittstellennamen | ProxMenux-Dokumentation",
"ogDescription": "Verhindern Sie, dass sich Proxmox-Schnittstellennamen bei Hardwareänderungen ändern. Verwendet systemd-.link-Dateien mit Zuordnung über die MAC-Adresse."
},
"header": {
"title": "Persistente Schnittstellennamen",
"description": "Erstellt pro physischer Netzwerkkarte eine systemd-.link-Datei, die den vom Kernel vergebenen Namen an die MAC-Adresse der Karte bindet. Nach der Anwendung beim nächsten Neustart bleiben die Schnittstellennamen beim Hinzufügen, Entfernen oder Umstecken von PCIe-Karten stabil.",
"section": "Netzwerk"
},
"intro": {
"title": "Was das macht",
"body": "Schreibt für jede physische Netzwerkkarte des Hosts eine kleine Datei unter <code>/etc/systemd/network/10-&lt;iface&gt;.link</code> mit der Regel: <em>„Das Gerät mit dieser MAC-Adresse muss immer diesen Namen tragen.“</em> systemd-udevd wendet die Regel bei jedem Start an, bevor <code>ifupdown</code> die Datei <code>/etc/network/interfaces</code> liest."
},
"problem": {
"heading": "Das Problem, das dies löst",
"intro": "Linux leitet Standard-Schnittstellennamen aus der PCI-Topologie ab — <code>eno1</code> = onboard, <code>enp3s0</code> = die Karte in PCI-Bus 3, Steckplatz 0 usw. Das Namensschema ist deterministisch, <em>solange die Hardwareanordnung gleich bleibt</em>. Ändert sich die Anordnung, verschieben sich die Namen:",
"items": [
"Fügen Sie einen GPU vor einem vorhandenen NIC hinzu → die NIC-Busnummer kann sich ändern → Namensänderungen.",
"Bewegen Sie eine Karte in einen anderen PCIe-Slot → Namensänderungen.",
"BIOS / UEFI-Update, das Geräte erneut auflistet → Namen können sich ändern.",
"Ersetzen Sie eine fehlerhafte Karte durch das gleiche Modell in einem anderen Slot → Namensänderungen."
],
"outro": "Nach einer solchen Änderung verweist <code>/etc/network/interfaces</code> weiterhin auf den <em>alten</em> Namen. Die Bridge lässt sich nicht aktivieren und der Host verliert die Netzwerkverbindung. Persistente Namen verhindern, dass dieses Szenario erneut auftritt."
},
"howWorks": {
"heading": "Wie es funktioniert",
"arrowLabel": "je NIC",
"nodes": {
"detectLabel": "Physische NIC erkennen",
"detectDetail": "ls /sys/class/net/\nvmbr / bond / docker / veth /\nwireguard … ausschließen",
"readLabel": "Jede MAC-Adresse lesen",
"readDetail": "cat /sys/class/net/\n '<'iface'>'/address",
"writeLabel": ".link-Datei schreiben",
"writeDetail": "/etc/systemd/network/\n 10-'<'iface'>'.link"
},
"minimalIntro": "Jede generierte Datei ist absichtlich minimal:",
"minimalOutro": "Beim Start erkennt systemd-udevd das Gerät anhand der MAC-Adresse und weist den gewünschten Namen zu, <em>bevor</em> andere Komponenten wie ifupdown oder die Standardbenennung des Kernels darauf zugreifen. Das Dateipräfix <code>10-</code> sorgt dafür, dass diese Regeln früh und vor der Standarddatei <code>99-default.link</code> geladen werden."
},
"scope": {
"heading": "Was geschrieben wird, was übersprungen wird",
"headerType": "Typ",
"headerBehaviour": "Verhalten",
"headerWhy": "Warum",
"rows": [
{
"type": "Onboard-/PCIe-Netzwerkkarte",
"behaviour": "<code>.link</code> Datei geschrieben",
"why": "Unterstützt durch ein echtes PCI-Gerät - der Fall, für den das Tool geeignet ist"
},
{
"type": "Wi-Fi (phy80211)",
"behaviour": "<code>.link</code> Datei geschrieben",
"why": "Hat einen echten MAC und profitiert von Namensstabilität"
},
{
"type": "Brücken (vmbrX)",
"behaviour": "Übersprungen",
"why": "Virtuell; Name kommt von <code>/etc/network/interfaces</code>"
},
{
"type": "Bonds (bondX)",
"behaviour": "Übersprungen",
"why": "Virtuell; Bondname wird von ifupdown festgelegt"
},
{
"type": "veth / docker0 / br-XXXX",
"behaviour": "Übersprungen",
"why": "Erstellt auf Anfrage von Docker / LXC - keine persistente Hardware"
},
{
"type": "tap / fwpr / fwln",
"behaviour": "Übersprungen",
"why": "Erstellt auf Anfrage von Proxmox per VM/CT"
},
{
"type": "WireGuard / Cilium / Tailscale",
"behaviour": "Übersprungen",
"why": "Software-Schnittstellen, die von eigenen Daemons verwaltet werden"
}
]
},
"safety": {
"heading": "Sicherheitsnetz: Frühere .link-Dateien werden gesichert",
"intro": "Wenn <code>/etc/systemd/network/</code> bereits <code>.link</code>-Dateien enthält (aus einem früheren Lauf oder anderen Tools), werden diese in ein Backup-Verzeichnis mit Zeitstempel kopiert, bevor die neuen generiert werden:",
"outro": "Zum Zurückrollen: Kopieren Sie die Dateien aus dem Backup-Verzeichnis zurück und starten Sie neu.",
"rebootTitle": "Effekt beim nächsten Neustart, nicht sofort",
"rebootBody": "Änderungen an <code>.link</code>-Dateien gelten nur beim Booten, wenn udev Geräte erneut auflistet. Das Tool meldet <em>\"Änderungen gelten nach dem Neustart\"</em> aus diesem Grund. Das Umbenennen einer Schnittstelle ist riskant und wird nicht versucht: Ein aktiver <code>vmbr0</code> mit Mitgliedern müsste atomar neu konfiguriert werden, weshalb die Operation auf den nächsten sauberen Boot verschoben wird."
},
"afterReboot": {
"heading": "Nach dem Reboot",
"intro": "Sobald die Namen angeheftet sind, ist der Workflow für zukünftige Hardwareänderungen einfach:",
"items": [
"Ausschalten, Hardware ändern (Karte hinzufügen, in einen anderen Steckplatz umstecken, …), starten.",
"Jedes NIC behält seinen vorherigen Namen, weil sein MAC mit einer <code>.link</code>-Datei übereinstimmt.",
"Wenn ein NIC ersetzt wird (anderer MAC), erhält er einen Standard-Kernelnamen (<code>enp&lt;bus&gt;s&lt;slot&gt;</code>); Führen Sie dieses Menü erneut aus, um einen <code>.link</code>-Eintrag für den MAC der neuen Karte hinzuzufügen."
]
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"emptyTitle": "\"Keine physischen Schnittstellen gefunden\" nach dem Ausführen des Tools",
"emptyBody": "Der Kernel erkennt auf dem Host keine auf PCI oder phy80211 basierenden Schnittstellen. Prüfen Sie mit <code>ls -l /sys/class/net/</code> — jeder Eintrag sollte entweder einen <code>device</code>-Symlink (PCI) oder einen <code>phy80211</code>-Eintrag (WLAN) haben. Fehlt bei einer echten Netzwerkkarte beides, ist der Treiber nicht geladen.",
"noChangeTitle": "Nach dem Neustart änderten sich die Namen nicht wie erwartet",
"noChangeBody": "Überprüfen Sie, ob die Datei vorhanden und gut geformt ist: <code>cat /etc/systemd/network/10-&lt;iface&gt;.link</code>. Dann überprüfen Sie udev logs: <code>journalctl -u systemd-udevd -b | grep -i link</code>. Eine häufige Ursache ist ein veralteter <code>net.ifnames=0</code>-Kernelparameter, der die vorhersagbare Benennung vollständig deaktiviert - entfernen Sie ihn aus <code>/etc/default/grub</code>, führen Sie <code>update-grub</code> aus, Neustart.",
"undoTitle": "Ich möchte persistente Benennung rückgängig machen",
"undoBody": "Löschen Sie entweder die <code>.link</code>-Dateien (<code>rm /etc/systemd/network/10-*.link</code>) oder stellen Sie sie aus dem beim vorherigen Durchlauf erstellten Backup-Verzeichnis wieder her. Starten Sie neu, um die Änderung anzuwenden."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Brückenanalyse und geführte Reparatur",
"href": "/docs/network/bridge-analysis",
"tailRich": " — der Wiederherstellungsweg, wenn sich die Namen <em>bereits</em> geändert haben."
},
{
"label": "Konfigurationsanalyse und geführte Bereinigung",
"href": "/docs/network/config-analysis",
"tail": "- um verwaiste Blöcke zu entfernen, die durch Namensverschiebungen zurückgelassen wurden."
},
{
"label": "Diagnose",
"href": "/docs/network/diagnostics",
"tailRich": " — bestätigen Sie die neuen Namen nach dem Neustart mit <em>Routingtabelle anzeigen</em>."
}
]
}
}
@@ -0,0 +1,171 @@
{
"meta": {
"title": "So wird ein OCI-Image umgesetzt | ProxMenux",
"description": "Vom Image-Repository und der Compose-Datei über eine überprüfbare Vorlage und einen Bereitstellungsplan zu einem nativen LXC unter Proxmox VE – ohne Docker im Container."
},
"header": {
"title": "So wird ein OCI-Image umgesetzt",
"description": "Vom Image-Repository und der Compose-Datei über eine überprüfbare Vorlage und einen Bereitstellungsplan zu einem nativen LXC, ohne Docker darin zu installieren.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "pipeline",
"title": "Der Umsetzungsablauf",
"blocks": [
{
"mermaid": {
"chartCode": "flowchart LR\n A[\"{{repo}}\"] --> B[\"Compose + README\"]\n B --> C[\"{{converter}}\"]\n C --> D[\"{{template}}\"]\n D --> E{\"{{blockers}}\"}\n E -- \"{{no}}\" --> F[\"{{review}}\"]\n F --> D\n E -- \"{{yes}}\" --> G[\"{{plan}}\"]\n G --> H[\"pct create\"]\n H --> I[\"{{lxc}}\"]",
"labels": {
"repo": "Image-Repository",
"converter": "Konverter",
"template": "JSON-Vorlage",
"blockers": "Keine Hindernisse?",
"no": "Nein",
"yes": "Ja",
"review": "Prüfung / Overlay",
"plan": "Bereitstellungsplan",
"lxc": "Nativer LXC"
}
}
},
{
"p": "Der Konverter liest das vom Projekt veröffentlichte Image und die Compose-Datei und erzeugt eine JSON-Vorlage. Lassen sich Anforderungen noch nicht umsetzen und verhindern dadurch die Installation, wird die Vorlage vor der Veröffentlichung im Katalog geprüft. Eine Datei mit geprüften Anpassungen, das Overlay, löst diese Hindernisse. Nur Vorlagen ohne verbleibende Hindernisse werden zur Installation angeboten."
}
]
},
{
"id": "template",
"title": "Was die Vorlage bewahrt",
"blocks": [
{
"cards": {
"items": [
{
"icon": "archive",
"title": "Image-Identität",
"body": "Repository, fortlaufend aktualisiertes Tag, Architektur, ermittelter Digest und Quellrevision."
},
{
"icon": "braces",
"title": "Container-Vertrag",
"body": "Entrypoint, Cmd, Umgebung, Benutzer, Arbeitsverzeichnis, Stoppsignal, Ports und Volumes."
},
{
"icon": "layers",
"title": "Umsetzung für Proxmox VE",
"body": "Ressourcen, Sicherheit, Mountpoints, Geräte, sysctls und Zustandsprüfungen sowie die jeweils nötigen Anpassungen mit ihrer Begründung."
},
{
"icon": "shield",
"title": "Kompatibilität",
"body": "Unterstützte Schlüssel, noch nicht umgesetzte Anforderungen, die die Installation verhindern, und der Status jeder Validierung."
}
]
}
}
]
},
{
"id": "sources",
"title": "OCI liefert den Prozess, Compose die Umgebung",
"blocks": [
{
"table": {
"headers": [
"Quelle",
"Beispiel",
"Natives Ergebnis"
],
"rows": [
[
"OCI-Metadaten",
"<code>Entrypoint</code>, <code>Cmd</code>, <code>User</code>",
"Proxmox VE importiert sie beim Erstellen des CT"
],
[
"Docker Compose",
"<code>environment</code>, <code>volumes</code>, <code>devices</code>",
"LXC-Umgebungseinträge, <code>mpN</code> und <code>devN</code>"
],
[
"ProxMenux-Profil",
"GPU, Zustandsprüfung, Zugangsdaten",
"Rückfragen und geprüfte Anpassungen"
],
[
"Benutzer",
"VMID, Speicher, Netzwerk",
"Der Instanzvertrag"
]
]
}
}
]
},
{
"id": "install",
"title": "Was während der Installation passiert",
"blocks": [
{
"steps": {
"items": [
{
"title": "Referenz auflösen",
"body": "Die Registry wird abgefragt, die Architektur des Hosts ausgewählt und der konkrete Digest festgehalten, auf den das fortlaufend aktualisierte Tag verweist."
},
{
"title": "Herunterladen und prüfen",
"body": "Skopeo lädt das Image als OCI-Archiv herunter. Bevor etwas erstellt wird, wird jede Schicht anhand ihres Digests geprüft und entpackt. Ist der Download beschädigt, wird er einmal wiederholt, bevor die Installation abbricht."
},
{
"title": "Dateisystem erstellen",
"body": "<code>pct create</code> erstellt das rootfs aus dem Archiv und übernimmt die offiziellen Prozessmetadaten des Images."
},
{
"title": "Ressourcen anbinden",
"body": "Die deklarierten Volumes, Netzwerkeinstellungen, Umgebung, Geräte und Sicherheitsprofile werden eingebunden."
},
{
"title": "Konsole",
"body": "Die Konsolenausgabe des Containers wird auf dem Host gespeichert. Die Proxmox-VE-Konsole öffnet eine Shell, sofern das Image eine enthält."
},
{
"title": "Prüfen",
"body": "Beim ersten Start wird gewartet, bis der Container eine Adresse hat und der Dienst antwortet. Schlägt dies fehl, wird die Installation nicht als erfolgreich gemeldet."
},
{
"title": "Konfiguration erfassen",
"body": "Die tatsächlich verwendete Konfiguration wird im Instanzvertrag gespeichert, den Aktualisierungen und Neuerstellungen verwenden."
}
]
}
}
]
},
{
"id": "example",
"title": "Beispiel: ein Image mit /config und /downloads",
"intro": "Eine typische Compose-Definition und die daraus erzeugte Proxmox-VE-Konfiguration. Die von der Anwendung erwarteten Pfade bleiben unverändert.",
"blocks": [
{
"codeGrid": {
"items": [
{
"title": "Docker Compose",
"code": "image: lscr.io/linuxserver/example:latest\nenvironment:\n - PUID=1000\n - PGID=1000\nvolumes:\n - config:/config\n - /srv/downloads:/downloads\nports:\n - 8080:8080"
},
{
"title": "/etc/pve/lxc/VMID.conf (Auszug)",
"code": "entrypoint: /init\nmp0: local-lvm:vm-VMID-disk-1,mp=/config,backup=1,size=8G\nmp1: /srv/downloads,mp=/downloads\nnet0: name=eth0,bridge=vmbr0,ip=dhcp,type=veth\nlxc.environment.runtime: PUID=1000\nlxc.environment.runtime: PGID=1000"
}
]
}
},
{
"p": "<code>mp0</code> ist ein zweiter Datenträger des Containers, der im gewählten Speicher <code>vm-VMID-disk-N</code> heißt. Er wird unter <code>/config</code> eingehängt und mit <code>backup=1</code> in die Containersicherung aufgenommen. <code>mp1</code> erstellt keinen Datenträger, sondern bindet das Host-Verzeichnis <code>/srv/downloads</code> unter <code>/downloads</code> im LXC ein. Port 8080 wird nicht weitergeleitet: Der LXC hat eine eigene Adresse, unter der der Dienst antwortet."
}
]
}
]
}
@@ -0,0 +1,278 @@
{
"meta": {
"title": "Image außerhalb des Katalogs installieren | ProxMenux",
"description": "Übernehmen Sie ein OCI-Image aus einer Compose-Datei, einer URL, einem docker run-Befehl oder einer Image-Referenz und prüfen Sie vor der Installation, welche Konfiguration ProxMenux umsetzen kann."
},
"header": {
"title": "Image außerhalb des Katalogs installieren",
"description": "Ein eigenes Image wird anhand seiner Compose-Datei, eines docker run-Befehls oder allein seiner Referenz für LXC umgesetzt. Das Ergebnis wird zur Prüfung angezeigt, bevor ein LXC erstellt wird.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "intro",
"blocks": [
{
"calloutInfo": {
"title": "Derselbe Konverter und Installer",
"body": "Die Option <strong>Image außerhalb des Katalogs installieren</strong> nutzt denselben Konverter und Installer wie die Katalogvorlagen. Der Unterschied: Der Vertrag wird erst in diesem Moment aus der angegebenen Definition erzeugt und vor dem Erstellen eines LXC validiert."
}
}
]
},
{
"id": "sources",
"title": "Wie das Image beschrieben wird",
"intro": "Die erste Ansicht fragt, wie das Image beschrieben ist. Vier Möglichkeiten liefern eine Definition, die umgesetzt wird. Eine fünfte verwendet nur den Image-Namen. Drei weitere lesen eine bereits geschriebene oci-compose-Datei.",
"blocks": [
{
"table": {
"headers": [
"Option",
"Was eingelesen wird"
],
"rows": [
[
"Compose-Datei im Terminal einfügen",
"Fügen Sie den YAML-Inhalt im Terminal ein und schließen Sie mit Ctrl+D ab."
],
[
"Compose-Datei auf diesem Host lesen",
"Ein Pfad auf dem Knoten, standardmäßig <code>/root/docker-compose.yml</code>. Die Datei muss existieren und darf höchstens 256 KiB groß sein."
],
[
"Compose-Datei von einer Adresse herunterladen",
"Eine <code>http://</code>- oder <code>https://</code>-Adresse, die den unverarbeiteten YAML-Inhalt bereitstellt. Es werden höchstens 256 KiB heruntergeladen."
],
[
"docker run-Befehl im Terminal einfügen",
"Der vom Projekt veröffentlichte Befehl. Ports, Umgebung, Volumes, Geräte, Capabilities, Benutzer, gemeinsam genutzter Speicher und die weiteren unterstützten Optionen werden umgesetzt."
],
[
"Nur die Image-Referenz, ohne Compose-Datei",
"Eine Referenz wie <code>ghcr.io/user/application:latest</code>. Die Registry wird abgefragt und die OCI-Metadaten des Images werden übernommen."
],
[
"oci-compose im Terminal einfügen",
"Fügen Sie den JSON-Inhalt im Terminal ein und schließen Sie mit Ctrl+D ab. Er wird nicht konvertiert, sondern geprüft und so installiert, wie er geschrieben ist."
],
[
"oci-compose-Datei auf diesem Host lesen",
"Eine JSON-Datei auf dem Knoten, standardmäßig <code>/root/oci-compose.json</code>, mit höchstens 2 MiB."
],
[
"oci-compose von einer Adresse herunterladen",
"Eine <code>http://</code>- oder <code>https://</code>-Adresse, die die JSON-Datei bereitstellt. Es werden höchstens 2 MiB heruntergeladen."
]
]
}
},
{
"figure": {
"src": "/oci-manager/custom-source-menu.png",
"alt": "Menü zur Auswahl der Beschreibung eines Images außerhalb des Katalogs",
"caption": "Möglichkeiten zur Beschreibung eines Images außerhalb des Katalogs."
}
}
]
},
{
"id": "reference-only",
"title": "Was die Image-Referenz allein liefert",
"intro": "Das Image enthält seine Prozessmetadaten, aber nicht die gesamte Umgebung, die eine Compose-Datei gewöhnlich ergänzt.",
"blocks": [
{
"table": {
"headers": [
"Aus dem Image gelesen",
"Nicht im Image enthalten",
"Folge"
],
"rows": [
[
"<code>Entrypoint</code>, <code>Cmd</code>, <code>User</code>, <code>WorkingDir</code> und die enthaltene Umgebung",
"Variablen, die nur in der Dokumentation stehen",
"Werden bei der Installation oder über Ändern ergänzt"
],
[
"Vom Image deklarierte Volumes",
"Host-Verzeichnisse, die nur in der Compose-Datei angegeben sind",
"Weitere Pfade werden vor der Installation ergänzt"
],
[
"<code>EXPOSE</code>-Ports",
"URL, Protokoll oder funktionale Zustandsprüfung",
"Port und Prüfverfahren des Dienstes werden bestätigt"
],
[
"Architekturen und Digest in der Registry",
"Geräte, Privilegien oder externe Abhängigkeiten",
"Ohne eine entsprechende Anforderung in der Definition werden sie nicht aktiviert"
]
]
}
}
]
},
{
"id": "review",
"title": "Vor der Installation prüfen",
"intro": "Nach dem Umsetzen der Definition zeigt ProxMenux seine Interpretation, bevor VMID, Ressourcen oder Speicher abgefragt werden.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Analysieren",
"body": "Dienste, Image, Ports, Pfade, Umgebung, Geräte, Sicherheit und Zustandsprüfung werden eingelesen."
},
{
"title": "Registry abfragen",
"body": "Das Image muss in seiner Registry vorhanden sein; die veröffentlichten Architekturen werden aufgelistet. Bei einer privaten Registry wird das dafür gespeicherte Konto verwendet."
},
{
"title": "Nicht angewendete Optionen auflisten",
"body": "Labels, Docker-Netzwerke, Swarm-Einstellungen und andere Schlüssel ohne Wirkung in einem LXC werden aufgelistet."
},
{
"title": "Optionen ohne sichere Entsprechung blockieren",
"body": "Schlüssel ohne sichere Entsprechung erscheinen unter <strong>Nicht umsetzbare Optionen</strong>; die Installation wird dann nicht fortgesetzt. Nichts wird stillschweigend verworfen."
},
{
"title": "Geheime Werte abfragen",
"body": "Variablen, deren Namen auf Passwort, Token oder Schlüssel hinweisen, werden bei der Installation als sensible Werte abgefragt."
}
]
}
},
{
"figure": {
"src": "/oci-manager/custom-review.png",
"alt": "Zusammenfassung der Interpretation einer Compose-Datei durch ProxMenux",
"caption": "Zusammenfassung, die vor der Abfrage von VMID und Ressourcen erscheint."
}
},
{
"p": "Nach Bestätigung der Zusammenfassung folgt derselbe Ablauf wie im Katalog: Name, Standard- oder erweiterter Modus, VMID, CPU, Arbeitsspeicher, Netzwerk, Start mit dem Knoten, persistente und zusätzliche Pfade, kompatible Geräte und abschließende Zusammenfassung."
}
]
},
{
"id": "examples",
"title": "Eingabebeispiele",
"blocks": [
{
"codeGrid": {
"items": [
{
"title": "Compose",
"code": "services:\n app:\n image: ghcr.io/example/app:latest\n ports:\n - \"8080:8080\"\n volumes:\n - ./config:/config\n - /srv/media:/media\n environment:\n TZ: Europe/Madrid"
},
{
"title": "docker run",
"code": "docker run -d \\\n --name app \\\n -p 8080:8080 \\\n -e TZ=Europe/Madrid \\\n -v app-config:/config \\\n -v /srv/media:/media \\\n ghcr.io/example/app:latest"
}
]
}
}
]
},
{
"id": "oci-compose",
"title": "Eine von Hand geschriebene oci-compose-Datei",
"intro": "oci-compose ist die JSON-Datei, aus der eine Anwendung installiert wird. Der Katalog enthält eine solche Datei pro Anwendung. Dasselbe Format kann von Hand geschrieben und über diese Option installiert werden.",
"blocks": [
{
"p": "Bei einer handgeschriebenen Datei legt der Autor Image, Ports, Variablen, Volumes und Installationsfragen fest. ProxMenux ergänzt den Rest beim Einlesen. Das Format kann Dinge ausdrücken, die Compose nicht enthält: Fragetexte, bei der Installation erzeugte Passwörter, GPU-Profile, Eigentümer einzelner Volumes, die Prüfung des ersten Starts und abschließend angezeigte Zugangsdaten."
},
{
"steps": {
"items": [
{
"title": "Prüfen",
"body": "Dateien mit Fehlern werden nicht installiert. Jeder Fehler nennt das betroffene Feld. Bei ungültigem JSON werden Zeile und Spalte angegeben."
},
{
"title": "Überprüfen",
"body": "Eine gültige Datei zeigt, was sie installiert: Image, Webadresse, Ports, persistente Pfade, abgefragte Variablen und geschriebene Dateien."
},
{
"title": "Installieren",
"body": "Die Installation erfolgt wie bei jeder Kataloganwendung mit Standard- oder erweiterten Einstellungen."
}
]
}
},
{
"calloutWarning": {
"title": "Eine Datei, die Privilegien festlegt",
"body": "oci-compose legt fest, was im Container eingehängt wird und mit welchen Privilegien. Die Prüfung zeigt dies vor der Installation. Installieren Sie nur Dateien aus vertrauenswürdigen Quellen."
}
},
{
"p": "Die <readmeLink>README der OCI-Engine</readmeLink> beschreibt das Format Block für Block und enthält zwei vollständige Beispiele. Auch ein Installationsdatensatz kann so eingelesen werden: Verwendet wird nur die ursprüngliche Vorlage, keine der damaligen Antworten."
}
]
},
{
"id": "private-registries",
"title": "Images aus privaten Registries",
"intro": "Ein Image aus einer privaten Registry, etwa ein privates GitHub-Paket oder ein privates Docker-Hub-Repository, wird mit einem in ProxMenux gespeicherten Konto gelesen.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Die Registry verweigert den Image-Zugriff",
"body": "Meldet die Registry, dass ein Konto benötigt wird, bietet die Prüfung eine Anmeldung an und liest das Image danach erneut."
},
{
"title": "Anmelden",
"body": "Benutzername und Passwort oder Zugriffstoken mit Download-Berechtigung. Die Registry prüft sie; gespeichert werden sie nur bei erfolgreicher Anmeldung."
},
{
"title": "Installieren und aktuell halten",
"body": "Dieses Konto wird beim Herunterladen während der Installation und ebenso für Aktualisieren, Ändern, Neuerstellen, Watchdog und die Update-Prüfung des Monitors verwendet – auf jedem Cluster-Knoten."
}
]
}
},
{
"p": "<strong>Registry-Konten</strong> im Hauptmenü von OCI manager Apps zeigt gespeicherte Konten nach Registry und Benutzer, niemals ihre geheimen Zugangsdaten. Pro Konto können Images geprüft, heruntergeladen oder installiert sowie Zugangsdaten aktualisiert oder entfernt werden."
},
{
"list": {
"items": [
"GitHub (<code>ghcr.io</code>): Als Benutzer dient das GitHub-Konto, als Passwort ein persönliches Zugriffstoken mit <code>read:packages</code>-Berechtigung.",
"Docker Hub (<code>docker.io</code>): Als Benutzer dient das Docker-Hub-Konto, als Passwort ein Zugriffstoken mit Leseberechtigung.",
"Andere Registries, auch mit eigenem Port wie <code>registry.example.com:5000</code>: Benutzername und Passwort oder Token dieser Registry."
]
}
},
{
"calloutInfo": {
"title": "Wo die Konten gespeichert werden",
"body": "Unter <code>/etc/pve/priv/proxmenux/registry-auth.json</code>, nur für root lesbar, im selben Ordner wie die Speicherpasswörter von Proxmox. <code>/etc/pve</code> wird von allen Cluster-Knoten gemeinsam genutzt. Ein auf einem Knoten hinzugefügtes Konto gilt daher auf allen. Die Host-Sicherung enthält die Datei; die Deinstallation von ProxMenux entfernt sie auf allen Knoten."
}
}
]
},
{
"id": "limits",
"title": "Nicht installierbare Definitionen",
"blocks": [
{
"list": {
"items": [
"Ein Dockerfile ohne veröffentlichtes Image: Das Image muss zuerst gebaut und in einer OCI-Registry veröffentlicht werden.",
"Eine Compose-Datei mit mehreren Diensten: Diese Option installiert jeweils einen Dienst in einem Container, auch wenn mehrere Dienste dasselbe Image verwenden.",
"<code>configs</code>, externe Geheimnisse oder Geräteformate, die sich nicht eindeutig umsetzen lassen.",
"Shell-Ersetzungen wie <code>$(command)</code>: Stattdessen muss der resultierende Wert angegeben werden.",
"Nicht erkannte <code>docker run</code>-Optionen und <code>--env-file</code>: Verwenden Sie stattdessen eine Compose-Datei mit expliziten Werten."
]
}
}
]
}
]
}
@@ -0,0 +1,392 @@
{
"meta": {
"title": "Geräte und Beschleunigung | ProxMenux",
"description": "Wie OCI manager Apps GPU, NVIDIA, Coral, USB, FUSE und weitere Geräte als geprüfte native Proxmox-VE-Ressourcen für einen OCI-Container bereitstellt."
},
"header": {
"title": "Geräte und Beschleunigung",
"description": "GPU, NVIDIA, Coral, USB, FUSE und Blockgeräte werden validierte native Proxmox VE-Ressourcen des Containers.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "principle",
"title": "Das Gerät, das die Anwendung benötigt, nicht der gesamte Host",
"blocks": [
{
"p": "Ein in der Compose-Datei oder im Anwendungsprofil angefordertes Gerät wird als konkreter <code>devN</code>-Eintrag oder LXC-Mount eingerichtet. Das Anfordern einer GPU, eines USB-Geräts oder eines Coral-Beschleunigers macht den Container nicht privilegiert."
},
{
"flow": {
"nodes": [
{
"label": "Host-Inventar",
"detail": "/dev/dri/renderD128\nGID 993 · Intel"
},
{
"label": "ProxMenux",
"detail": "Hersteller und\nBerechtigungen geprüft"
},
{
"label": "LXC",
"detail": "dasselbe Gerät\neffektive GID"
}
]
}
}
]
},
{
"id": "origin",
"title": "Woher die Geräteanforderung kommt",
"blocks": [
{
"table": {
"headers": [
"Quelle",
"Was gelesen wird",
"Was der Installateur macht"
],
"rows": [
[
"Docker Compose",
"<code>devices</code>, <code>group_add</code>, <code>deploy.resources</code> und NVIDIA Anforderungen",
"Jede Anforderung wird zu einer Geräteanforderung, die zur Überprüfung angezeigt wird"
],
[
"Katalogprofil",
"Die tatsächliche GPU-, Coral-, OpenCL-, USB- oder FUSE-Unterstützung der Anwendung",
"Es werden nur die für dieses Image validierten Optionen angeboten"
],
[
"Bildmetadaten und Dokumentation",
"VA-API, Selkies, LinuxServer Mods oder die NVIDIA Laufzeit",
"Die dokumentierten Variablen und die Vorbereitung werden hinzugefügt"
],
[
"Auswahl der Nutzer",
"Nur CPU, Intel/AMD, OpenCL, NVIDIA oder ein optionales Gerät",
"Die Auswahl wird im Instanzvertrag gespeichert"
]
]
}
},
{
"calloutWarning": {
"title": "Erkannte Geräte werden nicht automatisch eingebunden",
"body": "Der Host wird inventarisiert, aber nur Geräte, die in der Compose-Datei oder in einem kompatiblen Profil deklariert sind, werden angeboten und angehängt. Ein GPU, USB-Dongle oder Coral auf dem Host ist nicht jedem LXC ausgesetzt."
}
}
]
},
{
"id": "identify",
"title": "Wie das Host-Gerät identifiziert wird",
"intro": "Bevor der LXC geändert wird, wird das Gerät auf dem Host gelesen und mit dem gewählten Profil verglichen.",
"blocks": [
{
"table": {
"headers": [
"Typ",
"Identität",
"Validierung"
],
"rows": [
[
"Intel/AMD DRM",
"<code>/dev/dri/renderD*</code> und <code>/sys/class/drm/NODE/device/vendor</code>",
"Ein Zeichengerät mit dem Anbieter <code>0x8086</code> (Intel) oder <code>0x1002</code> (AMD)"
],
[
"AMD OpenCL",
"Der Render-Knoten plus <code>/dev/kfd</code>, wenn das Profil es benötigt",
"Existenz, Typ, Anbieter, Berechtigungen und deklarierte Kompatibilität"
],
[
"AMD ROCm",
"Der Renderknoten, <code>/dev/kfd</code> und die Generation, die der Compute-Treiber in <code>/sys/class/kfd/kfd/topology/nodes/*/properties</code> meldet",
"Eine GPU-Generation, für die das ROCm-Image der Anwendung passende Rechenkernel enthält — die dort genannten RDNA2-GPUs und neuere — wird unverändert angeboten. Andere GPUs dieser Familien, etwa Radeon 680M und 780M, werden als experimentell angeboten und nie vorausgewählt: ROCm unterstützt sie nicht offiziell, die Anwendung meldet sie als Generation ihrer Familie (<code>HSA_OVERRIDE_GFX_VERSION</code>), und vor dem Download des größeren Images ist eine Bestätigung erforderlich. Ältere GPUs, etwa die integrierte Grafik eines Ryzen 5000U, werden nicht angeboten; Immich führt die Erkennung weiter auf der CPU aus."
],
[
"NVIDIA",
"<code>nvidia-smi</code> und <code>nvidia-container-cli</code>",
"GPU, UUID, PCI-Bus, Treiberversion, Toolkit, <code>/dev/nvidia*</code>-Knoten, Binärdateien und Bibliotheken"
],
[
"Coral PCIe/M.2",
"<code>/dev/apex_N</code> und sein Link in <code>/sys/dev/char/MAJOR:MINOR</code>",
"Zeichengeräteknoten, Major-/Minor-Nummern, Eigentümer, GID und Berechtigungen"
],
[
"USB und serielle",
"<code>/dev/ttyUSB*</code>, <code>/dev/ttyACM*</code> oder <code>/dev/bus/usb/BBB/DDD</code>",
"Zeichenknoten; für USB auch Anbieter, Produkt und Seriennummer, wenn sysfs sie veröffentlicht"
],
[
"KVM, TUN, FUSE, Video und generische SCSI",
"<code>/dev/kvm</code>, <code>/dev/net/tun</code>, <code>/dev/fuse</code>, <code>/dev/videoN</code> oder <code>/dev/sgN</code>",
"Unterstützter Pfad, Knotentyp und effektive Berechtigungen"
],
[
"Optisches Laufwerk",
"<code>/dev/srN</code>",
"Ein Blockgerät"
]
]
}
}
]
},
{
"id": "install",
"title": "Was passiert während der Installation",
"blocks": [
{
"steps": {
"items": [
{
"title": "Das Template bietet seine Profile",
"body": "Nur CPU, Intel/AMD VA-API, AMD OpenCL, Intel OpenCL oder NVIDIA. Die Optionen gehören zum Image, nicht zu einem gemeinsamen Menü."
},
{
"title": "Ein Profil wird gewählt",
"body": "Es definiert die Geräteknoten, die Umgebung, die Mods oder die Laufzeit, die die Anwendung benötigt."
},
{
"title": "Ein Pfad wird vorgeschlagen",
"body": "Für DRM <code>/dev/dri/renderD128</code>, das auf einem Host mit mehreren Renderknoten geändert werden kann. Für USB oder seriell wird der konkrete Knoten ausgewählt."
},
{
"title": "Validierung",
"body": "Existenz, Typ, erlaubter Anbieter, Berechtigungen und GID werden überprüft. Eine Abweichung stoppt die Operation."
},
{
"title": "Der Vertrag ist geschrieben",
"body": "Pfad, Modus, GID, Schreibzugriff und Profil werden für Updates und Neuerstellungen aufgezeichnet."
},
{
"title": "Einbinden und testen",
"body": "<code>pct set</code> fügt den <code>devN</code>-Eintrag hinzu und der Zugriff wird dann im LXC überprüft. LinuxServer-Images werden auch als Benutzer <code>abc</code> überprüft."
}
]
}
}
]
},
{
"id": "config",
"title": "Wie es in der LXC-Konfiguration erscheint",
"intro": "Beispiele: <code>dev0</code> und <code>dev1</code> sind die freien Slots, die Proxmox VE zuweist, und <code>renderD128</code>, <code>apex_0</code> und die GID hängen von der Hardware des Knotens ab.",
"blocks": [
{
"codeGrid": {
"items": [
{
"title": "Intel/AMD VA-API",
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=993,deny-write=0"
},
{
"title": "Coral PCIe/M.2",
"code": "dev0: path=/dev/apex_0,mode=0660,gid=GID,deny-write=0"
},
{
"title": "Ein spezifisches USB-Gerät",
"code": "dev0: path=/dev/bus/usb/003/004,mode=0660,gid=GID,deny-write=0"
},
{
"title": "AMD OpenCL",
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=GID,deny-write=0\ndev1: path=/dev/kfd,mode=0660,gid=GID,deny-write=0"
}
]
}
},
{
"p": "Die GID wird mit <code>stat</code> auf dem Host gelesen und in den <code>devN</code>-Eintrag geschrieben; es wird nicht angenommen, dass die Gruppen <code>render</code> und <code>video</code> eine feste Nummer haben. Das Gerät behält den gleichen <code>/dev</code>-Pfad innerhalb des LXC, wo die anwendungseigenen Mechanismen danach suchen."
}
]
},
{
"id": "profiles",
"title": "Profile, die ein Image bieten kann",
"blocks": [
{
"table": {
"headers": [
"Profil",
"Umsetzung",
"Angeboten, wenn"
],
"rows": [
[
"Intel/AMD VA-API",
"<code>/dev/dri</code> Renderknoten",
"Die Anwendung unterstützt Videobeschleunigung"
],
[
"OpenCL",
"Renderknoten, <code>/dev/kfd</code> bei Bedarf und der offizielle Mod",
"Das Image oder Profil dokumentiert es"
],
[
"NVIDIA",
"Treibergeräte und Bibliotheken des Hosts",
"Der Host hat einen funktionierenden Treiber und das NVIDIA Container Toolkit"
],
[
"Coral",
"<code>/dev/apex_0</code> oder USB-Bus",
"Das Profil erklärt Coral-Unterstützung (Frigate)"
],
[
"USB, seriell, FUSE",
"Ein einzelnes Gerät, ein validierter Baum oder eine LXC-Funktion",
"Der Vertrag verlangt es"
]
]
}
}
]
},
{
"id": "nvidia",
"title": "NVIDIA",
"blocks": [
{
"calloutWarning": {
"title": "Voraussetzung auf dem Knoten: NVIDIA Container Toolkit",
"body": "Ein funktionierender Treiber auf Proxmox VE reicht nicht aus, um einem OCI-Image eine NVIDIA-GPU zu geben. OCI Manager Apps verwendet <code>nvidia-container-cli</code> aus dem NVIDIA Container Toolkit, um die Geräte zu identifizieren und die Binärdateien und Bibliotheken zu erhalten, die dem geladenen Treiber entsprechen."
}
},
{
"p": "<nvidiaLink>ProxMenux NVIDIA installer</nvidiaLink> installiert das NVIDIA Container Toolkit aus dem offiziellen NVIDIA-Repository zusammen mit dem Treiber. Es überprüft seine vier Pakete, validiert <code>nvidia-container-cli</code> und zeichnet das Ergebnis im Change Journal von <auditLink>Audit & Report</auditLink> auf."
},
{
"p": "Diese beiden Befehle auf dem Host zeigen an, ob der Treiber und das Toolkit verfügbar sind:"
},
{
"shell": {
"code": "nvidia-smi -L\nnvidia-container-cli --version"
}
},
{
"p": "Auf einem Host, auf dem der Treiber auf andere Weise installiert wurde, wird das Toolkit aus dem offiziellen stabilen Repository installiert:"
},
{
"shell": {
"code": "apt-get update\napt-get install -y --no-install-recommends ca-certificates curl gnupg2\n\ncurl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \\\n | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg\n\ncurl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \\\n | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \\\n > /etc/apt/sources.list.d/nvidia-container-toolkit.list\n\napt-get update\napt-get install -y nvidia-container-toolkit libnvidia-container-tools"
}
},
{
"p": "Das von OCI manager Apps verwendete Inventar stammt aus der Ausgabe von:"
},
{
"shell": {
"code": "nvidia-container-cli list --device all --libraries --binaries --firmwares --ipcs"
}
},
{
"calloutInfo": {
"title": "Docker Laufzeitkonfiguration ist nicht beteiligt",
"body": "Die Container sind native LXCs ohne Docker-Daemon. Daher spielt <code>nvidia-ctk runtime configure --runtime=docker</code> keine Rolle: ProxMenux fragt <code>nvidia-container-cli</code> direkt ab und trägt Geräte und Mounts in die LXC-Konfiguration ein. Die aktuellen Befehle und unterstützten Plattformen stehen in der <toolkitLink>Installationsanleitung zum NVIDIA Container Toolkit</toolkitLink>."
}
},
{
"cards": {
"items": [
{
"icon": "cpu",
"title": "Inventar aus dem Treiber",
"body": "<code>nvidia-container-cli</code> listet Geräteknoten, Binärdateien, Firmware und Bibliotheken des installierten Treibers auf."
},
{
"icon": "refresh",
"title": "Keine feste Version",
"body": "Die Vorlage nennt keine Bibliotheksdateien. Das Profil wird vom aktuellen Host generiert."
},
{
"icon": "shield",
"title": "Nur lesbare Mounts",
"body": "Die Hostbibliotheken werden schreibgeschützt montiert, anstatt in den Container kopiert zu werden."
},
{
"icon": "hardDrive",
"title": "Treiberänderungen",
"body": "Nach einem Treiberwechsel wird das Inventar erneut generiert, bevor die betroffenen LXCs starten."
}
]
}
},
{
"code": {
"title": "NVIDIA Ergebnis (vereinfacht)",
"code": "devN: path=/dev/nvidia0,...\ndevN: path=/dev/nvidiactl,...\ndevN: path=/dev/nvidia-uvm,...\nlxc.mount.entry: HOST_LIBRARY CONTAINER_LIBRARY none ro,bind,create=file 0 0"
}
},
{
"p": "Nur <code>/dev/nvidia0</code> zu übergeben ist nicht genug. Die Benutzerraumkomponenten des geladenen Treibers werden schreibgeschützt montiert, und <code>nvidia-smi</code> läuft dann innerhalb des LXC, um GPU, UUID, PCI-Bus und Version mit dem Host-Inventar zu vergleichen."
}
]
},
{
"id": "usb",
"title": "USB, serielle und USB Coral",
"blocks": [
{
"calloutWarning": {
"title": "USB-Nummerierung kann sich ändern",
"body": "Ein Pfad wie <code>/dev/bus/usb/003/004</code> kann sich ändern, wenn das Gerät wieder angeschlossen wird oder der Host neu gestartet wird. Das Profil zeichnet Anbieter, Produkt und Seriennummer auf, wenn sie verfügbar sind, aber eine neue Busadresse wird nicht automatisch neu zugeordnet."
}
},
{
"p": "Ein Peripheriegerät wird durch seinen konkreten Knoten angegeben: <code>/dev/ttyUSB0</code>, <code>/dev/ttyACM0</code>, <code>/dev/apex_0</code> oder <code>/dev/bus/usb/BBB/DDD</code>. Die Weitergabe des gesamten <code>/dev</code> wird nicht akzeptiert. Coral wird nur Anwendungen angeboten, deren Profil es deklariert."
}
]
},
{
"id": "trees",
"title": "Gerätebäume und LXC-Funktionen",
"blocks": [
{
"table": {
"headers": [
"Anforderung",
"Umsetzung",
"Umfang"
],
"rows": [
[
"<code>/dev/dvb</code>, <code>/dev/snd</code> oder <code>/dev/bus/usb</code>",
"Jeder Zeichenknoten des Baumes erhält seinen eigenen <code>devN</code>-Eintrag mit dem Host-Modus und GID",
"Nur der angeforderte Baum, nicht der Rest von <code>/dev</code>"
],
[
"<code>/dev/fuse</code>",
"Der Knoten und, wenn das Profil es benötigt, die <code>fuse=1</code>-Funktion",
"FUSE allein veröffentlicht keine Mounts für andere LXCs"
],
[
"<code>/dev/net/tun</code>",
"Ein <code>devN</code>-Eintrag auf demselben Pfad innerhalb des LXC",
"Die VPN- oder Netzwerkkonfiguration bleibt in der Anwendung"
],
[
"<code>/dev/kvm</code>",
"Ein validierter <code>devN</code>-Eintrag",
"Angeboten nur, wenn der Vertrag es verlangt"
]
]
}
}
]
},
{
"id": "security",
"title": "Bestätigungen nach Risikograd",
"blocks": [
{
"p": "Konkrete Geräte, optionale Privilegien, erforderliche Privilegien, AppArmor- oder seccomp-Entspannung und der Zugriff auf den Host-PID-Namespace werden als separate Fälle behandelt, nicht unter einem generischen privilegierten Label. Jede Option mit einem Risiko wird während der Installation erklärt und bestätigt."
}
]
}
]
}
+213
View File
@@ -0,0 +1,213 @@
{
"meta": {
"title": "OCI manager Apps | ProxMenux",
"description": "Führen Sie offizielle OCI-Images als native LXC-Container unter Proxmox VE aus – mit persistenten Daten, Gerätezugriff, Anwendungen aus mehreren Containern und transaktionalen Aktualisierungen."
},
"header": {
"title": "OCI manager Apps",
"description": "Offizielle OCI-Images laufen als native LXC-Container unter Proxmox VE. Das vom Maintainer veröffentlichte Image bleibt unverändert; ProxMenux bildet die Umgebung nach, die Docker Compose dafür eingerichtet hätte.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "model",
"blocks": [
{
"calloutInfo": {
"title": "Ein OCI-Image, ein nativer LXC",
"body": "In den Containern läuft keine Docker Engine. Proxmox VE importiert das Dateisystem und die OCI-Metadaten des Images. Die Anwendung wird zum Hauptprozess eines nativen LXC und lässt sich mit denselben Werkzeugen verwalten wie andere Container auf dem Knoten."
}
},
{
"flow": {
"nodes": [
{
"label": "Quelle",
"detail": "OCI-Image\nCompose und Dokumentation"
},
{
"label": "ProxMenux",
"detail": "JSON-Vertrag\nValidierung und Planung"
},
{
"label": "Proxmox VE",
"detail": "Nativer LXC\nVolumes und Geräte"
}
],
"caption": "Die Anwendung wird nicht neu gebaut. Ihre Umgebung wird deklarativ beschrieben und nachgebildet."
}
}
]
},
{
"id": "where",
"title": "Wo Sie es finden",
"intro": "Öffnen Sie auf dem Proxmox-Knoten als root den Eintrag <strong>OCI manager Apps (Technology Preview)</strong> im ProxMenux-Hauptmenü. Die erste Ansicht bietet:",
"blocks": [
{
"list": {
"items": [
"<strong>Anwendungen suchen</strong> – den gesamten Katalog nach Namen durchsuchen.",
"<strong>Alle Anwendungen</strong> – den vollständigen Katalog samt Anzahl der Anwendungen anzeigen.",
"<strong>Installierte OCI-Anwendungen verwalten</strong> – vorhandene Installationen aktualisieren, ändern, entfernen oder wiederherstellen.",
"<strong>Registry-Konten</strong> – Konten zum Installieren und Aktualisieren von Images aus privaten Registries verwalten.",
"<strong>Image außerhalb des Katalogs installieren</strong> – eine Compose-Datei, einen <code>docker run</code>-Befehl oder eine Image-Referenz übernehmen und anpassen.",
"Die Kategorien des Katalogs, jeweils mit der Anzahl ihrer Anwendungen."
]
}
},
{
"figure": {
"src": "/oci-manager/main-menu.png",
"alt": "Hauptansicht von OCI manager Apps mit Suche, Gesamtkatalog, Anwendungsverwaltung, eigenen Images und Katalogkategorien.",
"caption": "Hauptansicht von OCI manager Apps."
}
},
{
"p": "Nach der Auswahl einer Anwendung sehen Sie deren Beschreibung, das verwendete Image und zwei Installationsarten. <strong>Mit Standardeinstellungen installieren</strong> fragt nur die grundlegenden Entscheidungen ab: Speicher, Datenablage, Adresse und Start. <strong>Mit erweiterten Einstellungen installieren</strong> führt nacheinander durch alle Optionen: VMID und Ressourcen, Speicher für jeden Pfad, Netzwerk-Bridge und Geräte."
},
{
"p": "Tatsächlich getestete Anwendungen zeigen in dieser Ansicht <strong>Geprüft</strong> und sind in den Listen mit ✓ gekennzeichnet. Das gilt für Tests im ProxMenux-Labor ebenso wie für Tests durch die Community."
}
]
},
{
"id": "beta",
"title": "Warum es als Technology Preview gekennzeichnet ist",
"blocks": [
{
"p": "OCI manager Apps verwendet die Bezeichnung <strong>Technology Preview</strong>, die Proxmox VE den aus OCI-Images erstellten Anwendungscontainern zuweist. Deren Unterstützung wurde mit Proxmox VE 9.1 eingeführt. Die Bezeichnung betrifft die zugrunde liegende Proxmox-Technik, nicht die ProxMenux-Engine: Das Verhalten dieser Container kann sich zwischen Proxmox-VE-Versionen noch ändern. Die Kennzeichnung bleibt bestehen, bis Proxmox VE diese Unterstützung als stabil einstuft."
},
{
"p": "Die Funktionen von OCI manager Apps werden im ProxMenux-Labor getestet: Installation, Aktualisierung, Änderung, Neuerstellung, Sicherung, Wiederherstellung, Migration und Watchdog. Jede Anwendung wird separat geprüft. Tatsächlich getestete Anwendungen tragen die Kennzeichnung <strong>Geprüft</strong> und ein ✓ in den Listen."
}
]
},
{
"id": "translation",
"title": "Wie Docker Anforderungen beschreibt und OCI manager Apps sie umsetzt",
"blocks": [
{
"table": {
"headers": [
"Anforderung",
"Darstellung in Docker",
"Umsetzung durch OCI manager Apps"
],
"rows": [
[
"Anwendung ausführen",
"<code>image</code>, <code>entrypoint</code>, <code>command</code>",
"OCI-rootfs und Hauptprozess des LXC"
],
[
"Konfiguration erhalten",
"<code>volumes: /config</code>",
"Ein persistentes <code>mpN</code>-Volume, das in die Sicherung aufgenommen wird, oder ein Verzeichnis auf dem Host."
],
[
"Dienst bereitstellen",
"<code>ports</code>",
"Eine eigene Adresse für den LXC und die Zugriffs-URL des Dienstes."
],
[
"Hardware verwenden",
"<code>devices</code>, <code>group_add</code>",
"<code>devN</code>-Einträge mit der tatsächlich verwendeten Gruppen-ID (GID) des Hosts und einem validierten Profil."
],
[
"Abhängigkeiten verbinden",
"<code>networks</code>, <code>depends_on</code>",
"Eine private Netzwerk-Bridge, feste Adressen, Startreihenfolge und Zustandsprüfungen."
],
[
"Aktualisieren",
"Mit <code>pull</code> herunterladen und neu erstellen",
"Ein neues rootfs mit demselben Persistenzvertrag."
]
]
}
}
]
},
{
"id": "kept",
"title": "Was erhalten bleibt und was sich ändert",
"blocks": [
{
"cards": {
"items": [
{
"icon": "archive",
"title": "Bleibt erhalten",
"body": "Das offizielle Image, seine internen Pfade, seine Umgebung, sein Startprozess und seine Nutzungsdokumentation."
},
{
"icon": "boxes",
"title": "Wird angepasst",
"body": "Die Laufzeitumgebung: Netzwerk, Persistenz, Geräte, Berechtigungen und Abhängigkeiten werden mit den nativen LXC-Funktionen von Proxmox VE umgesetzt."
},
{
"icon": "shield",
"title": "Ohne Entsprechung",
"body": "Eine Compose-Option ohne sichere Entsprechung wird als Installationshindernis aufgeführt. Vorlagen mit solchen Hindernissen werden nicht zur Installation angeboten. Sensible Optionen müssen während der Installation bestätigt werden."
},
{
"icon": "refresh",
"title": "Wird gespeichert",
"body": "Image-Digest, Ressourcen, Pfade, Netzwerk, Geräte und Zugehörigkeit zu einem Stack werden im Instanzvertrag gespeichert. Aktualisierungen und Neuerstellungen bilden diesen Vertrag wieder ab."
}
]
}
}
]
},
{
"id": "pages",
"title": "Seiten in diesem Abschnitt",
"blocks": [
{
"next": {
"items": [
{
"label": "So wird ein OCI-Image umgesetzt",
"href": "/docs/oci-manager/architecture",
"tail": "Vom Image und seiner Compose-Datei zu einem nativen LXC."
},
{
"label": "Image außerhalb des Katalogs installieren",
"href": "/docs/oci-manager/custom-image",
"tail": "Compose-Datei, docker run oder eine Image-Referenz."
},
{
"label": "Daten, Pfade und Netzwerk",
"href": "/docs/oci-manager/storage-network",
"tail": "Container-Volumes, Host-Verzeichnisse, rclone-Mounts und Adressen."
},
{
"label": "Geräte und Beschleunigung",
"href": "/docs/oci-manager/hardware",
"tail": "GPU, NVIDIA, Coral, USB und weitere Geräte."
},
{
"label": "Anwendungen mit mehreren Containern",
"href": "/docs/oci-manager/stacks",
"tail": "Anwendung, Datenbank und Cache als koordinierte LXCs."
},
{
"label": "Installieren, aktualisieren und ändern",
"href": "/docs/oci-manager/lifecycle",
"tail": "Der Instanzvertrag und seine Vorgänge."
},
{
"label": "In ProxMenux Monitor",
"href": "/docs/oci-manager/monitor",
"tail": "Versionen, Aktualisierungen, Konsolenausgabe und Terminal."
}
]
}
}
]
}
]
}
@@ -0,0 +1,499 @@
{
"meta": {
"title": "Installieren, Aktualisieren und Ändern | ProxMenux",
"description": "Der Instanzvertrag eines OCI-Containers und die darauf beruhenden Vorgänge: Aktualisieren, Ändern, Entfernen, Fortsetzen eines unterbrochenen Vorgangs und Wiederherstellen des Betriebs nach einer Wiederherstellung auf diesem oder einem anderen Host."
},
"header": {
"title": "Installation, Aktualisierung und Änderung",
"description": "Jede Instanz behält einen reproduzierbaren Vertrag, sodass ihr rootfs ersetzt werden kann, ohne Konfiguration oder persistente Daten zu verlieren.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "contract",
"title": "Der Instanzvertrag",
"blocks": [
{
"p": "Nach einer Installation wird die effektive Konfiguration in <code>/usr/local/share/proxmenux/oci/instances/VMID/oci-compose.json</code> gespeichert. Es ist keine Kopie der ursprünglichen Compose-Datei: Es ist der reproduzierbare Vertrag des LXC, der auf diesem Host existiert."
},
{
"code": {
"code": "instances/\n└── 105/\n └── oci-compose.json\n ├── image and resolved digest\n ├── resources and network\n ├── environment (secrets protected)\n ├── container disks and host directories\n ├── hardware profile and devices\n ├── console log and terminal mode\n └── stack membership and lifecycle"
}
},
{
"p": "Eine Kopie des Vertrags liegt im Container unter <code>/.proxmenux/oci-record.json</code> und ist nur für dessen Benutzer root lesbar. Eine Containersicherung enthält daher immer den zu diesem Zeitpunkt gültigen Vertrag. Eine zweite Kopie liegt unter <code>/etc/pve/priv/proxmenux/oci</code>; dieses Verzeichnis ist auf allen Clusterknoten verfügbar und nur für root des Hosts lesbar. Beide Kopien werden nach jeder Installation, Aktualisierung und Änderung geschrieben."
}
]
},
{
"id": "manage",
"title": "Verwalten installierter OCI-Anwendungen",
"intro": "Diese Option auf dem Hauptbildschirm listet die registrierten Instanzen mit ihrer Anwendung und ihrem Image auf. Vor jeder Aktion wird jede Instanz mit ihrem Vertrag abgeglichen; ein CT, der nicht mehr zu seinem Datensatz passt, wird weder geändert noch gelöscht. Dieselbe Aktualisierungsfunktion und derselbe Editor stehen auf der Registerkarte Aktualisierungen von <monitorLink>ProxMenux Monitor</monitorLink> bereit.",
"blocks": [
{
"table": {
"headers": [
"Option",
"Was sich ändert",
"Was erhalten bleibt"
],
"rows": [
[
"Aktualisieren Sie das Image mit der gespeicherten Konfiguration",
"Das rootfs wird durch das Image ersetzt, das der gespeicherte Kanal aktuell bereitstellt",
"Vertrag, Containerplatten, Hostverzeichnisse, Netzwerk und Geräte"
],
[
"Ändern: Ressourcen, Netzwerk, Pfade und GPU bearbeiten",
"Der Editor öffnet sich mit dem aktuellen Vertrag; der CT wird mit den Änderungen neu erstellt",
"Die Daten von Container-Disks und Host-Verzeichnissen"
],
[
"Watchdog: Neustart der Anwendung, wenn sie abstürzt",
"Ob die Anwendung nach einem selbstständigen Beenden erneut gestartet wird. Es wird nichts neu erstellt",
"Die gesamte Installation; nur die Wahl ist im Vertrag gespeichert"
],
[
"Entfernen: Löschen Sie die Anwendung und ihre Container",
"Der LXC oder jedes Mitglied eines Stacks und seine Verträge werden gelöscht",
"Host-Verzeichnisse mit ihren Inhalten"
]
]
}
},
{
"p": "Für eine Anwendung mit mehreren Containern bietet das Menü <strong>Alle Container der Anwendung aktualisieren</strong>, <strong>Zusätzliche Pfade und Geräte ändern</strong>, <strong>Alle Container mit ihrer gespeicherten Konfiguration neu erstellen</strong>, den Watchdog und die Entfernung. Ändern fügt die zusätzlichen Pfade und Geräte des Anwendungscontainers hinzu oder entfernt sie, ohne etwas neu zu erstellen. Bei Immich lässt sich damit auch ändern, womit die Erkennung ausgeführt wird. Neu erstellen erstellt jeden Container anhand des ursprünglich installierten Images neu, ohne nach einem neueren zu suchen."
},
{
"figure": {
"src": "/oci-manager/manage-menu.png",
"alt": "Liste der installierten OCI-Anwendungen und der Optionen zum Aktualisieren, Ändern und Entfernen",
"caption": "Verwalten Sie installierte OCI-Anwendungen."
}
}
]
},
{
"id": "update",
"title": "Transaktionsaktualisierung",
"blocks": [
{
"mermaid": {
"chartCode": "sequenceDiagram\n participant U as {{user}}\n participant P as ProxMenux\n participant R as {{registry}}\n participant X as Proxmox VE\n U->>P: {{update}}\n P->>R: {{resolve}}\n R-->>P: digest\n P->>P: {{verify}}\n P->>X: {{backup}}\n P->>X: {{import}}\n P->>X: {{reapply}}\n X-->>P: healthcheck\n alt {{healthy}}\n P-->>U: {{commit}}\n else {{failure}}\n P->>X: Rollback\n P-->>U: {{restored}}\n end",
"labels": {
"user": "Benutzer",
"registry": "OCI-Register",
"update": "Instanz aktualisieren",
"resolve": "Tag auflösen",
"verify": "Archiv prüfen und Vorabprüfungen durchführen",
"backup": "Stoppen und sichern Sie den CT",
"import": "Neues rootfs importieren",
"reapply": "Den Vertrag erneut anwenden",
"healthy": "in Ordnung",
"failure": "Ausfall",
"commit": "Vertrag mit dem neuen Digest veröffentlicht",
"restored": "Frühere Instanz wiederhergestellt"
}
}
},
{
"list": {
"items": [
"Wenn die Registry weiterhin den installierten Digest bedient, wird nichts heruntergeladen und die Instanz nicht berührt.",
"Das neue Image wird Schicht für Schicht verifiziert, bevor der CT stoppt. Ein Download, der beschädigt ankommt, wird ein zweites Mal abgerufen; ein bereits zwischengespeichertes Image, das den Check nicht besteht, wird erneut heruntergeladen.",
"Nach der Installation in Proxmox VE geänderte Einstellungen (Arbeitsspeicher, Swap, Kerne, CPU-Limit, CPU-Priorität, Start mit dem Knoten) bleiben erhalten und werden in den neuen Vertrag übernommen.",
"Die LAN-Schnittstelle, die die Arr-Suite und Multi-Container-Anwendungen hinzufügen (<code>net1</code>) und die Startreihenfolge (<code>startup</code>) werden an den neuen Container zurückgegeben.",
"Jeder andere Unterschied zwischen dem CT und seinem Vertrag stoppt das Update, bevor der CT gestoppt wird."
]
}
},
{
"flow": {
"nodes": [
{
"label": "Vorher",
"detail": "rootfs A\n/config mp0\n/media Hostverzeichnis"
},
{
"label": "Aktualisierung",
"detail": "ersetzt nur\ndas rootfs"
},
{
"label": "Nachher",
"detail": "rootfs B\n/config mp0\n/media Hostverzeichnis"
}
]
}
},
{
"p": "Bevor etwas gestoppt wird, prüft der Vorgang, ob ausreichend Platz für die Sicherung vorhanden ist: die belegten Daten der zu sichernden Volumes plus eine Reserve. Die Sicherung wird neben dem Anwendungsdatensatz auf dem Systemlaufwerk des Hosts gespeichert. Reicht der Platz dort nicht aus, fragt das Menü nach einem anderen Host-Speicher, der Sicherungen unterstützt. Dort wird die Sicherung erstellt und nach Abschluss des Vorgangs gelöscht. Die Auswahl wird für diese Anwendung auch für geplante Aktualisierungen gespeichert. Hat kein Speicher ausreichend Platz, wird der Vorgang abgelehnt und die Anwendung bleibt unverändert. Der Platzbedarf des neuen Images wird vor dem Herunterladen ebenso geprüft."
}
]
},
{
"id": "recovery",
"title": "Wiederherstellung eines unterbrochenen Vorgangs",
"intro": "Ein Update und eine Änderung verwenden eine persistente Transaktion. Wenn der Prozess, das Terminal oder der Knoten nach dem Stoppen des CT unterbrochen wird, wird die Operation nicht als abgeschlossen angesehen.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Ausstehender Marker",
"body": "Beim Öffnen von „Installierte OCI-Anwendungen verwalten“ zeigt der gespeicherte Zustand, dass der Ersatz nie veröffentlicht wurde."
},
{
"title": "Status anzeigen",
"body": "Zeigt die Phase an, die erreicht wurde, ohne Container oder Daten zu ändern."
},
{
"title": "Wiederherstellen der vorherigen Installation",
"body": "Stellt die vor dem Ersatz erstellte und geprüfte native Sicherung sowie den vorherigen Vertrag wieder her."
},
{
"title": "Stacks als Einheit",
"body": "Für eine Multi-Container-Anwendung wird jedes Mitglied aus dem gleichen Transaktionspunkt wiederhergestellt, nicht nur das ausgewählte."
}
]
}
},
{
"calloutWarning": {
"title": "Host-Verzeichnisse liegen außerhalb des Rollbacks",
"body": "Die Sicherung umfasst das rootfs und die darin eingeschlossenen Containerlaufwerke. Ein Hostverzeichnis wird nicht zurückgesetzt, da andere LXCs dessen Daten verwenden können."
}
}
]
},
{
"id": "watchdog",
"title": "Watchdog: Neustart einer Anwendung, die stoppt",
"intro": "Proxmox hat keine Neustartrichtlinie: Wenn der Prozess eines Anwendungscontainers endet, bleibt der Container gestoppt. Mit dem Watchdog wird eine Anwendung, die von selbst aufhört, erneut gestartet. Es tut für eine OCI-Anwendung, was <code>restart: unless-stopped</code> in einer Compose-Datei tut.",
"blocks": [
{
"table": {
"headers": [
"Was passiert",
"Mit aktiviertem Watchdog"
],
"rows": [
[
"Die Anwendung stürzt ab oder ihr Prozess endet",
"Der Container wird innerhalb von Sekunden wieder gestartet"
],
[
"Es wird von Proxmox, vom Monitor oder mit <code>pct</code> gestoppt oder heruntergefahren",
"Er bleibt gestoppt, bis ihn jemand startet"
],
[
"Ein Backup, eine Migration oder eine ProxMenux-Operation arbeitet daran",
"Nichts wird getan, bis das endet"
],
[
"Er war beim Start des Hosts bereits gestoppt",
"Er bleibt gestoppt; dafür ist <strong>Mit Proxmox starten</strong> zuständig"
],
[
"Es stoppt direkt nach dem Start",
"Bei einer Anwendung, die Sekunden nach dem Start wieder stoppt oder gar nicht startet, werden fünf Startversuche unternommen. Dazwischen liegen Wartezeiten von 30 Sekunden, 1, 2 und 5 Minuten. Danach bleibt sie gestoppt und eine Benachrichtigung wird gesendet"
]
]
}
},
{
"p": "Das Installationsprogramm fragt in beiden Installationsmodi danach und schlägt den im Anwendungsrezept angegebenen Wert vor. Später lässt sich die Einstellung unter <strong>Installierte OCI-Anwendungen verwalten</strong> oder mit dem Schalter <strong>Watchdog</strong> des Containers in <monitorLink>ProxMenux Monitor</monitorLink> ändern. Sie gilt für alle Container einer Anwendung mit mehreren Containern. Ein einziger Host-Dienst, <code>proxmenux-oci-watchdog.service</code>, überwacht alle Anwendungen, für die dies aktiviert wurde; seine Installation erscheint auf der Registerkarte Änderungen von Audit & Report."
},
{
"calloutInfo": {
"title": "Was der Host nicht sagen kann",
"body": "Der Exit-Code der Anwendung erreicht den Host nicht. Daher sind ein reguläres Beenden und ein Absturz nicht unterscheidbar; in beiden Fällen wird neu gestartet, wie bei <code>always</code> und <code>unless-stopped</code> in Docker. Ein außerhalb von Proxmox mit <code>lxc-stop</code> oder <code>systemctl</code> angeforderter Stopp hinterlässt keinen Stopp-Task und wird als selbstständiges Beenden gewertet."
}
}
]
},
{
"id": "restore",
"title": "Backup, Wiederherstellung und ein weiterer Host",
"intro": "Eine mit vzdump oder Proxmox Backup Server erstellte Sicherung enthält den Container, die für die Sicherung ausgewählten Containerlaufwerke und die Kopie seines Vertrags. Was die Installation auf dem Host speichert, ist nicht darin enthalten. <strong>Installierte OCI-Anwendungen verwalten</strong> erkennt Container, die auf einem Host ohne ihren Vertrag wiederhergestellt wurden, etwa nach einer Proxmox-Neuinstallation oder auf einem anderen Host, und bietet ihre erneute Registrierung an.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Wiederherstellen der Container in Proxmox",
"body": "Vom Sicherungsspeicher, mit der ursprünglichen ID oder einer beliebigen freien ID. Bei einer Anwendung mit mehreren Containern werden alle ihre Container benötigt."
},
{
"title": "Installierte OCI-Anwendungen verwalten öffnen",
"body": "Die wiederhergestellten Container werden aufgelistet und die Wiederherstellung ihrer Registrierung wird angeboten. Die Schaltfläche <strong>Wiederherstellen</strong> auf der Registerkarte Aktualisierungen von <monitorLink>ProxMenux Monitor</monitorLink> öffnet denselben Vorgang."
},
{
"title": "Überprüfen Sie vor dem Wechsel",
"body": "Die Wiederherstellung überprüft, ob der Host alles hat, was jede Anwendung benötigt. Eine Anwendung, die nicht als Ganzes wiederhergestellt werden kann, bleibt so, wie sie gefunden wurde, mit dem Grund."
},
{
"title": "Registrieren und starten",
"body": "Der Vertrag wird auf diesem Host registriert und was die Installation darauf aufbewahrt, wird erneut geschrieben. Das Starten der Anwendungen ist eine separate Frage, die mit Nein beantwortet wird, wenn die ursprünglichen Container noch auf einem anderen Host ausgeführt werden."
}
]
}
},
{
"figure": {
"src": "/oci-manager/restore-offer.png",
"alt": "Dialog, der die wiederhergestellten Container auflistet und anbietet, sie wiederherzustellen",
"caption": "Die beim Öffnen von „Installierte OCI-Anwendungen verwalten“ angebotene Wiederherstellung."
}
},
{
"table": {
"headers": [
"Was der Host behalten hat",
"Nach der Wiederherstellung"
],
"rows": [
[
"Instanzvertrag",
"Wird aus der Kopie im Container registriert und mit der von Proxmox wiederhergestellten Konfiguration abgeglichen"
],
[
"Privates Netzwerk einer Multicontainer-Anwendung",
"Wird mit derselben Bridge und demselben Subnetz neu erstellt; die festen Adressen der Container ändern sich nicht"
],
[
"Startreihenfolge einer Anwendung mit mehreren Containern",
"Das Abhängigkeits-Hookscript und sein Vertrag werden wieder installiert; Snippets sind auf dem <code>local</code>-Speicher aktiviert, wenn kein Speicher sie akzeptiert"
],
[
"Netzwerk sysctls und Host-Monitor-Datei",
"Nochmals geschrieben in <code>/etc/pve/proxmenux</code>"
],
[
"NVIDIA Laufzeit",
"Der Hook eines unprivilegierten Containers wird erneut installiert. Ein privilegierter Container erhält die Treiberdateien dieses Hosts statt der Dateien seines ursprünglichen Hosts"
],
[
"Rclone mount",
"Das Hookscript und die Programme, die das Mount veröffentlichen, werden erneut geschrieben, mit den gleichen Ansichten auf dem Host"
],
[
"Host-Firewallregel eines Host-Monitors",
"Wird erneut abgefragt, für seinen Web-Port und das Subnetz der Bridge auf diesem Host"
],
[
"<code>lost+found</code> jeder wiederhergestellten Festplatte",
"Wird entfernt, wenn es leer ist; bei einer Wiederherstellung wird es angelegt, und manche Anwendungen starten nicht, wenn es in ihrem Datenverzeichnis liegt"
],
[
"Disks auf einem anderen Speicher wiederhergestellt",
"Der Vertrag wird auf den Speicher aktualisiert, auf dem sie sich jetzt befinden"
]
]
}
},
{
"p": "Ein mit einer anderen ID wiederhergestellter Container behält seine Anwendung. Der Vertrag, sein Konsolenprotokoll, seine Netzwerk-sysctls, das Hookscript einer Rclone-Einhängung und die Startreihenfolge einer Anwendung mit mehreren Containern werden mit den IDs registriert, die die Container auf diesem Host haben."
},
{
"table": {
"headers": [
"Was eine Wiederherstellung verhindert",
"Was zu tun ist"
],
"rows": [
[
"Ein Container einer Multicontainer-Anwendung fehlt",
"Stellen Sie es auch wieder her; Die Anwendung wird als Ganzes wiederhergestellt"
],
[
"Das private Subnetz wird bereits auf diesem Host verwendet",
"Die Wiederherstellung wird abgebrochen und nichts wird geändert: Die Adressen der Container sind fixiert und werden nicht in ein anderes Subnetz verschoben"
],
[
"Ein Hostverzeichnis existiert nicht",
"Mounten oder erstellen Sie es mit seinen Daten; ein Backup des Containers enthält keine Hostverzeichnisse"
],
[
"Ein Gerät existiert nicht auf diesem Host",
"Verbinden Sie es oder entfernen Sie es aus dem Container in Proxmox"
],
[
"Eine Anwendung mit NVIDIA auf einem Host ohne Treiber",
"Installieren Sie den NVIDIA-Treiber und das Container Toolkit"
],
[
"Das Backup wurde erstellt, bevor die Kopie des Vertrages existierte",
"Der Container bleibt als gewöhnlicher LXC und wird nicht wieder angeboten"
]
]
}
},
{
"calloutInfo": {
"title": "Ein Container, der zurückkommt",
"body": "Ein Container, der von einem älteren Backup wiederhergestellt, zu einem Snapshot zurückgerollt oder von einem anderen Knoten zurückgegeben wurde, trägt den Vertrag des Zustands, in dem er sich befindet. Wenn es für eine Operation ausgewählt wird und sein Vertrag von dem dieses Hosts abweicht, startet die Operation nicht und der Container wird zur Wiederherstellung angeboten."
}
},
{
"figure": {
"src": "/oci-manager/restore-result.png",
"alt": "Ergebnis der Wiederherstellung mit privatem Netzwerk, Startreihenfolge und registrierten Containern",
"caption": "Das Ergebnis einer Wiederherstellung, Schritt für Schritt."
}
}
]
},
{
"id": "remove",
"title": "Entfernen einer OCI-Anwendung",
"blocks": [
{
"p": "Vor der Bestätigung wird eine Zusammenfassung aus der tatsächlichen Konfiguration erstellt: die zu entfernenden Container, die damit gelöschten Daten, das freigegebene private Netzwerk und die erhaltenen Hostverzeichnisse. Die Bestätigung steht standardmäßig auf <strong>Nein</strong>, da die Daten gelöschter Laufwerke anschließend nicht wiederhergestellt werden können."
},
{
"table": {
"headers": [
"Ressource",
"Beim Entfernen",
"Grund"
],
"rows": [
[
"rootfs und Container-Festplatten",
"Gelöscht",
"Sie gehören nur zum Container"
],
[
"Hostverzeichnis",
"Bleibt mit seinem Inhalt erhalten",
"Andere Anwendungen können es verwenden"
],
[
"Host-Dateien des Containers",
"Gelöscht",
"Sein Konsolenprotokoll, Netzwerk-Sysctls, Rclone Mount Hookscript und seine Registrierung in der App-Registerkarte von ProxMenux Monitor dienen keinem anderen Container"
],
[
"Von mehreren Installationen gemeinsam genutzte Dateien",
"Gelöscht mit der letzten Installation, die sie verwendet",
"Die Host-Monitor-Datei und das Dependency-Hookscript von Multi-Container-Anwendungen"
],
[
"Instanzvertrag",
"Nach erfolgreicher Entfernung gelöscht",
"Kein CT ist mehr damit verbunden"
],
[
"Private Bridge eines Stacks",
"Mit dem Stack freigegeben",
"Es sind keine Mitglieder mehr zu verbinden"
],
[
"Von der Arr-Suite gemeinsam genutztes Netzwerk",
"Wird beim Entfernen der letzten Anwendung der Suite freigegeben",
"Jede Anwendung der Suite ist unabhängig und wird einzeln entfernt"
],
[
"Ein einzelnes Mitglied eines Stapels",
"Wird nicht einzeln entfernt",
"Die gesamte Anwendung wird entfernt, so dass kein Stapel unvollständig bleibt"
],
[
"Ein Container auf einem anderen Knoten des Clusters",
"Nicht entfernt",
"Seine Datensatz- und Hostdateien befinden sich auf dem Knoten, auf dem es installiert wurde: Es wird dort entfernt, nachdem es zurück migriert wurde."
]
]
}
},
{
"figure": {
"src": "/oci-manager/remove-summary.png",
"alt": "Zusammenfassung zum Entfernen mit den betroffenen Containern, Daten und Hostverzeichnissen",
"caption": "Die Entfernungszusammenfassung, aufgebaut aus der realen Konfiguration."
}
}
]
},
{
"id": "archives",
"title": "Heruntergeladene Images und Speicherplatz auf dem Host",
"blocks": [
{
"p": "Das OCI-Archiv dient zum Erstellen des rootfs; der laufende CT liest es nicht. Nach einer Installation oder Aktualisierung werden die dabei heruntergeladenen Archive mit ihrer Größe aufgelistet und zur Löschung angeboten. Ihre Löschung gibt Speicherplatz frei, ohne den Container oder seine Daten zu beeinträchtigen."
},
{
"calloutInfo": {
"title": "Updates benötigen das Archiv nicht",
"body": "Ohne Archiv löst ein Update den gespeicherten Kanal auf und lädt den neuen Digest herunter. Mit ihm wird ein Archiv nur dann wiederverwendet, wenn seine Referenz und Integrität mit dem übereinstimmen, was angefordert wird."
}
}
]
},
{
"id": "registry",
"title": "Einträge und Bereinigung",
"blocks": [
{
"p": "Beim Öffnen von <strong>Installierte OCI-Anwendungen verwalten</strong> werden zuerst Reste von Containern entfernt, die auf keinem Clusterknoten mehr existieren: der als Verlauf aufbewahrte Datensatz eines über die Proxmox-Oberfläche gelöschten Containers sowie Host-Dateien, die bei einer Entfernung zurückblieben. Ein Datensatz mit einem unterbrochenen Vorgang bleibt erhalten, da seine Sicherung noch benötigt werden könnte. Volumes und Hostverzeichnisse werden niemals aufgrund bloßer Schlussfolgerungen gelöscht."
}
]
},
{
"id": "cluster",
"title": "In einem Cluster: Migration und hohe Verfügbarkeit",
"intro": "Ein OCI-Container ist ein gewöhnlicher Proxmox-LXC: Er kann wie jeder andere migriert oder von HA verwaltet werden, mit denselben Einschränkungen. Alles, was er zum Starten benötigt, wird dort gespeichert, wo jeder Clusterknoten darauf zugreifen kann.",
"blocks": [
{
"table": {
"headers": [
"Teil",
"Auf einem anderen Knoten des Clusters"
],
"rows": [
[
"Konsolenlogbuch",
"Der Container erstellt <code>/var/log/proxmenux/oci</code> vor dem Start auf dem jeweiligen ausführenden Knoten. Jeder Knoten behält das Protokoll der von ihm ausgeführten Starts."
],
[
"Netzwerk sysctls und Host-Monitor",
"Werden in <code>/etc/pve/proxmenux</code> gespeichert, das alle Clusterknoten gemeinsam nutzen, sodass ein migrierter Container sie findet."
],
[
"Containerfestplatten",
"Proxmox verschiebt sie mit dem Container. Für HA müssen ihre Daten auf dem Zielknoten verfügbar sein, über gemeinsamen Speicher oder eine unterstützte Replikationskonfiguration."
],
[
"Host-Verzeichnisse und Geräte",
"Die gleichen Regeln wie bei jedem LXC: Ein Host-Verzeichnis muss auf dem Zielknoten vorhanden sein und als gemeinsam genutzt markiert werden, und ein GPU, Coral oder NPU muss dort vorhanden sein."
],
[
"ProxMenux-Datensatz",
"Der Vertrag bleibt auf dem Knoten, auf dem die Anwendung installiert wurde; alle Knoten lesen die Kopie unter <code>/etc/pve/priv/proxmenux/oci</code>. Eine migrierte Anwendung mit einem einzelnen Container wird auf dem Zielknoten registriert, sobald <strong>Installierte OCI-Anwendungen verwalten</strong> geöffnet oder eine Aktion für sie gestartet wird. Eine Anwendung mit mehreren Containern wird dort zur Wiederherstellung angeboten, da ihr privates Netzwerk auf diesem Knoten erstellt werden muss."
]
]
}
},
{
"calloutWarning": {
"title": "Nicht für hohe Verfügbarkeit",
"body": "Eine Multicontainer-Anwendung erreicht ihre Mitglieder über eine private Brücke des Knotens, auf dem sie installiert wurde, so dass ihre Mitglieder auf diesem Knoten bleiben. Ein Hostmonitor, z. B. Glances im Hostmodus oder Netdata, überwacht den Knoten, auf dem er ausgeführt wird; das Bewegen würde einen anderen Knoten überwachen."
}
},
{
"p": "Ein Backup, das außerhalb des Clusters wiederhergestellt wird, erhält die Dateien von <code>/etc/pve/proxmenux</code>, die der Container verwendet, wenn die Anwendung wiederhergestellt wird."
}
]
},
{
"id": "channel",
"title": "Ein Rolling Tag ist kein unbeaufsichtigtes Update",
"blocks": [
{
"p": "Der Katalog installiert das vom Maintainer veröffentlichte Rolling-Tag. Der tatsächliche Digest wird aufgelöst und aufgezeichnet und nur durch eine explizite Aktualisierung mit Vorabprüfung und Rollback geändert. <monitorLink>ProxMenux Monitor</monitorLink> vergleicht den installierten Digest mit dem von der Registry veröffentlichten Digest und zeigt und meldet, wenn ein neues Image verfügbar ist."
}
]
}
]
}
@@ -0,0 +1,213 @@
{
"meta": {
"title": "OCI Container in ProxMenux Monitor | ProxMenux",
"description": "Was ProxMenux Monitor für einen mit OCI manager Apps installierten Container zeigt: Anwendungs- und Image-Versionen, neue Images, Konsolenausgabe und Proxmox-VE-Terminal."
},
"header": {
"title": "In ProxMenux Monitor",
"description": "Ein mit OCI manager Apps installierter Container erscheint wie jeder andere LXC unter VMs & LXCs. Sein Detaildialog liest den Installationsdatensatz: Anwendungs- und Image-Versionen, neue Images, Konsolenausgabe und Terminal.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "intro",
"blocks": [
{
"calloutInfo": {
"title": "Die Aufzeichnung ist die Quelle",
"body": "OCI manager Apps kennt die installierte Anwendung und ihre Herkunft. Der Monitor liest diesen Installationsdatensatz, statt die Anwendung im Container zu untersuchen. Diese Informationen stehen deshalb sowohl bei laufendem als auch bei gestopptem Container zur Verfügung."
}
},
{
"table": {
"headers": [
"Tab.",
"Was ändert sich für einen OCI Container"
],
"rows": [
[
"Status",
"Ein <strong>Watchdog</strong> Switch unter Start beim Booten: Die Anwendung wird wieder gestartet, wenn sie von selbst stoppt"
],
[
"App",
"Die Anwendung wird aus dem Datensatz identifiziert und Updates werden nach Image verfolgt"
],
[
"Aktualisierungen",
"Das Image wird aktualisiert oder die Anwendung geändert, mit dem gleichen Ablauf wie das OCI-Menü"
],
[
"Mounts",
"Containerfestplatten und Hostverzeichnisse mit ihrer Belegung"
],
[
"Protokolle",
"Nur für OCI-Container: die Konsolenausgabe der Anwendung"
]
]
}
}
]
},
{
"id": "app",
"title": "App",
"intro": "Die Registerkarte <appLink>App</appLink> bietet die installierte Anwendung als Erkennung mit dem Namen, dem Logo, dem Port und dem Schema des Datensatzes. Die Registrierung öffnet den Editor mit der Methode <strong>OCI-Image (installiert von ProxMenux)</strong>, die keine Konfiguration benötigt.",
"blocks": [
{
"cards": {
"items": [
{
"icon": "boxes",
"title": "Anwendung",
"body": "Die Version der Anwendung im Image, gelesen aus dem Image selbst: seine Umgebung oder seine <code>org.opencontainers.image.version</code> Label. Es ist informativ."
},
{
"icon": "archive",
"title": "Image",
"body": "Das Build-Datum und der Digest des installierten Images. Das Update wird hier entschieden: Der installierte Digest wird mit dem verglichen, den die Registry heute für dasselbe Tag veröffentlicht."
}
]
}
},
{
"list": {
"items": [
"Wenn die Registry einen neuen Digest veröffentlicht, zeigt die Karte <strong>Neues Image</strong> mit seinem Datum und Digest an, auch wenn sich die Anwendungsversion im Inneren nicht geändert hat: Ein Neuaufbau auf einer aktualisierten Basis ist ein Update.",
"Wenn die Digests übereinstimmen, liest die Karte <strong>Version</strong>.",
"Die Karte verlinkt auf das Repository des Images: das GitHub-Projekt oder die Docker-Hub-Seite für ein offizielles Image.",
"Der Zugangslink verwendet die LAN-Adresse des Containers, auch für das Hauptmitglied einer Multicontainer-Anwendung, die eine zweite Adresse in ihrem privaten Netzwerk hat.",
"Die Schaltfläche <strong>Daten aktualisieren</strong> liest den Datensatz und die Registry erneut. Die Optionen zum Suchen oder Registrieren weiterer Anwendungen werden nicht angeboten: Der Container enthält genau die Anwendung seines Datensatzes."
]
}
},
{
"figure": {
"src": "/oci-manager/monitor-app-tab.png",
"alt": "App-Tab eines OCI-Containers mit Anwendungsversion, Image und Repository-Link",
"caption": "Registerkarte App eines mit OCI manager Apps installierten Containers."
}
},
{
"p": "Der Check läuft einmal täglich mit den Update-Checks des Monitors und <strong>Daten aktualisieren</strong> führt ihn sofort aus. Ein neues Image wird als Benachrichtigung über die in <notificationsLink>Benachrichtigungen</notificationsLink> konfigurierten Kanäle gesendet. Das Update wird über den Tab Updates angewendet."
}
]
},
{
"id": "updates",
"title": "Aktualisierungen",
"intro": "Bei einem mit OCI manager Apps installierten Container zeigt die Registerkarte Updates die Anwendung mit ihrem installierten Image und gegebenenfalls dem neuen Image aus der Registry, im selben Format wie andere Anwendungen. Die Paket- und Anwendungs-Updater eines gewöhnlichen LXC werden nicht angeboten.",
"blocks": [
{
"table": {
"headers": [
"Schaltfläche",
"Was es öffnet"
],
"rows": [
[
"Aktualisierung",
"Die Aktualisierung aus <lifecycleLink>Installierte OCI-Anwendungen verwalten</lifecycleLink> für diesen Container im Monitor-Terminal. Sie kann mit oder ohne neues Image ausgeführt werden; ohne neues Image wird nichts verändert. Bei einer Multicontainer-Anwendung werden alle Mitglieder aktualisiert."
],
[
"Ändern",
"Der Editor der Anwendung (Ressourcen, Netzwerk, Pfade und GPU). In einer Multicontainer-Anwendung werden die zusätzlichen Pfade und Geräte des Anwendungscontainers hinzugefügt oder entfernt und in Immich wird geändert, was die Erkennung ausführt."
],
[
"Wiederherstellen",
"Ersetzt Update, wenn eine Operation auf dem Container unterbrochen wurde, und öffnet seine Wiederherstellung."
],
[
"Wiederherstellen (wiederhergestellter Container)",
"Wird für einen aus einem Backup wiederhergestellten Container ohne Vertrag auf diesem Host unter <strong>Wiederhergestellte OCI-Anwendung</strong> angezeigt. Öffnet die <lifecycleLink>Wiederherstellung</lifecycleLink> im Monitor-Terminal; Aktualisieren und Ändern erscheinen nach der Registrierung."
]
]
}
},
{
"p": "Externe Änderungen, Hostverzeichnisse und Multicontainer-Anwendungen werden wie im OCI-Menü behandelt. In einer Multicontainer-Anwendung erscheinen die Buttons und die Optionen nur auf dem Hauptcontainer; die anderen Mitglieder zeigen ihr Image, eine Notiz, dass sie vom Hauptcontainer aktualisiert werden, und eine Schaltfläche, die es öffnet. Wenn das Terminal schließt, werden das Image, der Datensatz und die Mounts erneut gelesen."
},
{
"table": {
"headers": [
"Option",
"Verhalten"
],
"rows": [
[
"Das vor dem Update erstellte Backup behalten",
"Jedes Update sichert den Container, um ihn wiederherzustellen, wenn das Update fehlschlägt. Mit dieser Option wird dasselbe Backup im ausgewählten Speicher gespeichert und erscheint unter den Backups des CT; auf Proxmox Backup Server wird vor dem Update ein Backup geschrieben."
],
[
"Geplante Updates",
"Das Image wird zum gewählten Zeitpunkt nur aktualisiert, wenn die Registry ein neues veröffentlicht, und optional nur, wenn es 1, 3, 7 oder 14 Tage alt ist. Ein Container mit Änderungen außerhalb von ProxMenux wird übersprungen und gemeldet."
]
]
}
}
]
},
{
"id": "logs",
"title": "Protokolle",
"intro": "Die Registerkarte Logs erscheint nur bei mit OCI manager Apps installierten Containern, zwischen Mounts und Backups. Sie zeigt Standardausgabe und Standardfehler des Hauptprozesses des Images, entsprechend der Ausgabe von <code>docker logs</code> bei Docker-Containern.",
"blocks": [
{
"list": {
"items": [
"Die Ausgabe wird auf dem Host in <code>/var/log/proxmenux/oci/VMID.console.log</code> (Modus 0600) vom ersten Start und über Neustarts gehalten, so dass sie mit gestopptem Container gelesen werden kann.",
"Die Datei wird bei 10 MB gedreht und behält drei komprimierte Kopien (<code>/etc/logrotate.d/proxmenux-oci</code>).",
"Jeder Start des Containers wird in der Ausgabe markiert. Die Registerkarte zeigt die Ausgabe seit dem letzten Start standardmäßig; <strong>Vollständiger Verlauf</strong> zeigt auch die vorherigen.",
"Wenn die Anwendung entfernt wird, wird ihre Ausgabe mit ihr entfernt.",
"Die letzten 100-, 500- oder 1000-Zeilen werden gezeigt. Während der Container läuft, werden neue Zeilen live verfolgt; das Scrollen nach oben pausiert das Folgen und <strong>Follow</strong> nimmt es wieder auf.",
"Ein Filter zeigt nur die Zeilen an, die einen Text enthalten, und <strong>Herunterladen</strong> speichert die geladenen Zeilen.",
"Farbcodes werden entfernt und eine Zeile, die eine Fortschrittsleiste neu zeichnet, wird in ihrem endgültigen Zustand angezeigt.",
"Die Registerkarte liest die Datei bei jedem Öffnen; es wird nicht zwischengespeichert."
]
}
},
{
"calloutInfo": {
"title": "Zugangsdaten beim ersten Start",
"body": "Images, die ein generiertes Passwort beim ersten Start ausdrucken, lassen es in dieser Ausgabe, wie <code>docker logs</code>. Der Installateur liest es von dort aus, um es in seiner Zusammenfassung zu zeigen."
}
},
{
"figure": {
"src": "/oci-manager/monitor-logs-tab.png",
"alt": "Logs Tab mit dem Konsolenausgang eines OCI-Containers, dem Zeilenwähler, dem Filter und der Follow-Taste",
"caption": "Konsolenausgabe eines OCI-Containers."
}
}
]
},
{
"id": "terminal",
"title": "Proxmox VE Konsole",
"blocks": [
{
"p": "Ein OCI-Image startet seinen eigenen Prozess als PID 1 und keinen Anmeldedienst. Die übliche LXC-Konsole würde deshalb ein Terminal ohne antwortenden Login-Prozess öffnen. Mit OCI manager Apps installierte Container erhalten <code>cmode: shell</code>: Die Proxmox-VE-Konsole öffnet über <code>lxc-attach</code> eine Shell, entsprechend <code>docker exec</code>. Die laufende Anwendung bleibt dabei unverändert."
},
{
"list": {
"items": [
"Die Shell ist diejenige, die <code>/etc/passwd</code> dem Root im Image gibt. Ein Image, dessen Root keine Shell hat oder keine ausliefert, behält die Standardkonsole.",
"Die Shell ist root im Container, ohne Passwort. Wer es öffnen kann, wird durch die <code>VM.Console</code>-Berechtigung von Proxmox VE entschieden.",
"Das Terminal des Monitors betritt den Container mit <code>pct enter</code>, was auf die gleiche Weise funktioniert."
]
}
}
]
},
{
"id": "mounts",
"title": "Mounts",
"blocks": [
{
"p": "Die Registerkarte <mountsLink>Mounts</mountsLink> listet die Festplatten und Hostverzeichnisse des Containers auf. Die Belegung einer Containerfestplatte auf Blockspeicher wie LVM-thin wird aus deren Dateisystem gelesen, das nur im Container eingehängt ist."
}
]
}
]
}
@@ -0,0 +1,404 @@
{
"meta": {
"title": "Multicontainer-Anwendungen | ProxMenux",
"description": "Wie OCI manager Apps eine Anwendung mit Datenbank und Cache als koordinierte native LXCs umsetzt: Planung, privates Netzwerk, Abhängigkeits-Hook, Validierung und transaktionale Aktualisierungen."
},
"header": {
"title": "Anwendungen mit mehreren Containern",
"description": "Eine Anwendung mit Datenbank, Cache und anderen Diensten wird zu mehreren koordinierten nativen LXCs, die als eine installiert und aktualisiert werden.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "intro",
"blocks": [
{
"calloutInfo": {
"title": "Eine Anwendung für den Benutzer, mehrere LXCs für Proxmox VE",
"body": "Eine Multicontainer-Definition ist ein Eintrag des Katalogs. Der Installer erstellt einen nativen LXC pro Dienst und behält seine Abhängigkeiten explizit. Immich, Nextcloud, Paperless-ngx und Tandoor werden auf diese Weise installiert."
}
},
{
"mermaid": {
"chartCode": "flowchart LR\n C[\"Docker Compose\"] --> O[\"{{plan}}\"]\n O --> A[\"{{app}}<br/>{{appNet}}\"]\n O --> D[\"{{db}}<br/>{{private}}\"]\n O --> R[\"{{cache}}<br/>{{private}}\"]\n V1[(\"config\")] --> A\n V2[(\"database\")] --> D\n V3[(\"cache\")] --> R\n D --> A\n R --> A",
"labels": {
"plan": "Stack-Plan",
"app": "Anwendungs-LXC",
"appNet": "LAN + privat",
"db": "PostgreSQL LXC",
"cache": "Valkey LXC",
"private": "privat"
}
}
}
]
},
{
"id": "plan",
"title": "1. Der Plan, bevor ein Container existiert",
"blocks": [
{
"p": "Es wird kein LXC erstellt, während die Compose-Definition interpretiert wird. Ein vollständiger Plan steht an erster Stelle, mit jedem Mitglied, Image, VMID, Netzwerk, Pfad, Geheimnis, Ordnung und Gesundheitscheck. Wenn der Plan nicht konsistent ist, wird die Installation nicht gestartet."
},
{
"table": {
"headers": [
"Planelement",
"Inhalt",
"Vor dem Erstellen geprüft"
],
"rows": [
[
"Mitglieder",
"Hauptanwendung, Datenbank, Cache, maschinelles Lernen und andere Abhängigkeiten",
"Einzigartige VMIDs, bekannte Rollen und genau ein Hauptmitglied"
],
[
"Images",
"Rollende Referenz, Architektur und aufgelöster Digest jedes Dienstes",
"Alle existieren, unterstützen die Architektur und bestehen die OCI-Integritätsprüfung"
],
[
"Netzwerk",
"Private Bridge, Subnetz, eine feste Adresse pro Dienst und LAN-Zugang für das Hauptmitglied",
"Keine Kollision mit vorhandenen Brücken oder Subnetzen und keine wiederholte Adresse"
],
[
"Persistenz",
"Container-Disks, Host-Verzeichnisse, Besitzer und Backup",
"Keine überlappenden Pfade, Speicher verfügbar und deklarierte Berechtigungen"
],
[
"Geheimnisse",
"Datenbankpasswort, Anwendungsschlüssel und erste Anmeldeinformationen",
"Einmal generiert und nur an die Mitglieder gegeben, die sie verwenden"
],
[
"Lebenszyklus",
"Start-Order, Stop-Order und Gesundheitscheck pro Mitglied",
"Die Hauptanwendung startet zuletzt und stoppt zuerst"
]
]
}
}
]
},
{
"id": "create",
"title": "2. Erstellung, Mitglied für Mitglied",
"blocks": [
{
"steps": {
"items": [
{
"title": "Reservieren Sie jeden VMID",
"body": "Das Proxmox-VE-Inventar und das Instanzverzeichnis werden geprüft. Ein vorhandener CT wird nicht übernommen; ein Vertrag, der noch zu einer anderen Instanz gehört, wird nicht wiederverwendet."
},
{
"title": "Jedes Image vorbereiten",
"body": "Alle Images werden aufgelöst, heruntergeladen und verifiziert, bevor der erste Container erstellt wird."
},
{
"title": "Erstellen Sie alle Rootfs",
"body": "Die offiziellen OCI-Metadaten werden importiert und die ProxMenux-Instanzidentität und die Mitgliedsrolle hinzugefügt."
},
{
"title": "Privates Netzwerk",
"body": "Eine Brücke und ein Subnetz werden erstellt und jedes Mitglied erhält seine feste Adresse; nur das Hauptmitglied erhält auch die LAN-Schnittstelle."
},
{
"title": "Persistenz",
"body": "Jede Datenbank und Konfiguration erhält eine eigene Containerplatte; nur Daten, die freigegeben werden sollen, verwenden Hostverzeichnisse."
},
{
"title": "Umgebung",
"body": "Interne Endpunkte, Shared Secrets und Servicevariablen werden geschrieben. Die Anwendung erreicht ihre Abhängigkeiten an ihren reservierten Privatadressen."
},
{
"title": "Aufzeichnung",
"body": "Jedes Mitglied zeichnet seine native Konfiguration, die Rootfs-Änderungen, die Updates reproduzieren müssen, und seine Beziehung zum Stack auf."
}
]
}
}
]
},
{
"id": "checks",
"title": "3. Starten und Überprüfen Sie jeden Container",
"intro": "Ein erstellter LXC bedeutet noch keinen betriebsbereiten Dienst. Die Abhängigkeiten starten der Reihe nach und durchlaufen jeweils eine dienstspezifische Prüfung.",
"blocks": [
{
"table": {
"headers": [
"Dienst",
"Überprüfung",
"Was es zeigt"
],
"rows": [
[
"PostgreSQL",
"<code>pg_isready</code> im CT mit erwartetem Host, Benutzer und Datenbank",
"Der Server akzeptiert Verbindungen für die konfigurierte Datenbank"
],
[
"Redis / Valkey",
"<code>redis-cli</code> oder <code>valkey-cli</code> <code>PING</code> gegen seine Privatadresse",
"Der Broker hört zu und antwortet"
],
[
"Immich Maschinelles Lernen",
"HTTP <code>GET /ping</code>, plus eine Überprüfung der ausgewählten GPU-Laufzeit",
"Der Service antwortet und die angeforderte Beschleunigung ist nicht auf CPU zurückgefallen"
],
[
"Nextcloud",
"<code>GET /status.php</code> mit <code>installed=true</code>, <code>maintenance=false</code> und <code>needsDbUpgrade=false</code>",
"Initialisierung ohne anstehende Migration beendet"
],
[
"Paperless-ngx / Tandoor",
"HTTP über die LAN-Adresse und den realen Port des Dienstes",
"Das Frontend und seine Abhängigkeiten stellen die Anwendung bereit"
],
[
"Hauptanwendung",
"Der Endpunkt seines Templates, zum Beispiel <code>/api/server/ping</code> in Immich",
"Der gesamte Stapel arbeitet durch die Anwendung, die die Abhängigkeiten verwendet"
]
]
}
},
{
"calloutWarning": {
"title": "Laufend bedeutet nicht funktionsfähig",
"body": "Der laufende Zustand sagt nur, dass der LXC-Prozess existiert. Wenn der Dienst eine bessere Prüfung bietet, wird eine Exec- oder HTTP-Prüfung mit einem Timeout verwendet. Wenn ein Mitglied stoppt oder seine Prüfung nicht besteht, wird der Stapel nicht als installiert deklariert."
}
}
]
},
{
"id": "hook",
"title": "4. Der Abhängigkeits-Hook",
"blocks": [
{
"p": "Der Haken wird nur auf den Hauptcontainer eines abhängigen Stapels gesetzt. Proxmox VE behält das Skript als Snippet und führt es als <code>hookscript</code> dieses CT aus. Das Stack-Rezept ist nicht im Skript geschrieben: Es befindet sich in einem separaten privaten Vertrag."
},
{
"codeGrid": {
"items": [
{
"title": "Hauptkonfiguration CT",
"code": "hookscript: local:snippets/proxmenux-stack-dependencies.sh"
},
{
"title": "Privatvertrag (Beispiel)",
"code": "/etc/pve/priv/proxmenux-stack-VMID.json\n{\n \"schema\": 1,\n \"stack\": \"immich\",\n \"dependencies\": [\n {\"vmid\": 107, \"label\": \"PostgreSQL\", \"healthcheck\": {...}},\n {\"vmid\": 108, \"label\": \"Valkey\", \"healthcheck\": {...}},\n {\"vmid\": 106, \"label\": \"Machine Learning\", \"healthcheck\": {...}}\n ]\n}"
}
]
}
},
{
"snippet": {
"summary": "Vollständige Quelle von proxmenux-stack-dependencies.sh",
"pathCode": "local:snippets/proxmenux-stack-dependencies.sh",
"snippetCode": "stackDependencyHook"
}
},
{
"p": "Das Skript ist für jeden Stack gleich. VMIDs, Namen, Prüftypen und Timeouts stammen aus dem privaten Vertrag <code>/etc/pve/priv/proxmenux-stack-VMID.json</code> jedes Stacks."
},
{
"steps": {
"items": [
{
"title": "Proxmox VE ruft pre-start auf",
"body": "Bevor der Haupt-CT startet, läuft der Hook mit seinem VMID und der Lebenszyklusphase."
},
{
"title": "Eine Sperre pro Stack",
"body": "<code>flock</code> auf <code>/run/lock/proxmenux-stack-VMID.lock</code> verhindert zwei Startsequenzen gleichzeitig."
},
{
"title": "Der Vertrag wird gelesen und validiert",
"body": "Ein bekanntes Schema, numerische Abhängigkeiten, Labels, ein exec, http oder Running Check und ein positives Timeout sind erforderlich."
},
{
"title": "Abhängigkeiten in der Reihenfolge",
"body": "Jeder CT muss vorhanden sein; ein gestoppter wird gestartet und ein bereits laufender wird nicht neu gestartet."
},
{
"title": "Auf Betriebsbereitschaft warten",
"body": "Der Check läuft alle zwei Sekunden, und der CT wird ebenfalls bestätigt, dass er noch läuft."
},
{
"title": "Der Haupt-CT startet",
"body": "Wenn jede Abhängigkeit bereit ist, endet der Vorstart und Proxmox VE startet die Anwendung."
}
]
}
},
{
"calloutInfo": {
"title": "Der Haken stoppt Abhängigkeiten nicht",
"body": "Die Post-Start-, Pre-Stop- und Post-Stop-Phasen tun nichts. Das Stoppen des Haupt-CT lässt PostgreSQL, Redis, Valkey oder Machine Learning laufen. Der Hook ordnet den Start an; er verwandelt nicht mehrere LXCs in einen Prozess."
}
},
{
"table": {
"headers": [
"Typ",
"Beispiel",
"Spätere Starts"
],
"rows": [
[
"Abhängiger Stapel",
"Immich, Nextcloud, Anwendung mit PostgreSQL",
"Der Haken des Haupt-CT startet die Abhängigkeiten und wartet auf sie"
],
[
"Anwendungssuite",
"Arr Suite",
"Kein Hauptmitglied: jeder LXC folgt seinem eigenen <code>onboot</code>"
],
[
"Einzelne Anwendung",
"Jellyfin",
"Proxmox VE startet diesen LXC direkt"
]
]
}
}
]
},
{
"id": "stack-checks",
"title": "5. Kontrollen am Stapel als Ganzes",
"blocks": [
{
"list": {
"items": [
"Jede VMID existiert, ist einzigartig und behält die erwartete Instanzidentität.",
"Jeder Vertrag gehört zum selben Stack, behält seine Rolle und seine aufgezeichnete native Konfiguration.",
"Das Hauptmitglied ist das letzte in <code>start_order</code> und das erste in <code>stop_order</code>.",
"Es fehlt keine Member-, Volume- oder Rootfs-Adaption.",
"Der Haken zeigt auf das offizielle Snippet, sein Inhalt ist unverändert und sein Vertrag entspricht dem Stapelrezept.",
"Die beobachteten Images und Digests stimmen mit den vorbereiteten OCI-Archiven überein.",
"Geräte, GPU-Profile, Mounts, Geheimnisse und Endpunkte stimmen immer noch mit den Verträgen überein.",
"Nachdem alle Abhängigkeiten ihre Prüfung bestanden haben, prüft der Endpunkt der Hauptanwendung die Integration zwischen den Mitgliedern."
]
}
}
]
},
{
"id": "manage",
"title": "Verwalten eines installierten Stapels",
"intro": "Unter <strong>Installierte OCI-Anwendungen verwalten</strong> führt jedes Mitglied zum gesamten Stack. Das Menü bietet <strong>Alle Container der Anwendung aktualisieren</strong>, <strong>Zusätzliche Pfade und Geräte ändern</strong>, <strong>Alle Container mit ihrer gespeicherten Konfiguration neu erstellen</strong> und <strong>Entfernen: Anwendung und Container löschen</strong>. Die Neuerstellung baut jeden Container anhand des gespeicherten Digests aus seinem ursprünglichen Image neu auf, ohne nach einem neueren zu suchen. Sie verwendet dieselben Schritte wie ein Update und wird für aktualisierbare Stacks angeboten.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Jedes Mitglied",
"body": "Der Vertrag des Mitglieds nennt die Haupt-VMID und die vollständige Liste der Mitglieder."
},
{
"title": "Der Stapel ist reproduzierbar",
"body": "Identitäten, Verträge, Hook, Anpassungen und eine koordinierte Wiederholung für dieses Rezept werden validiert."
},
{
"title": "Images zuerst",
"body": "Die Anwendung wird nicht gestoppt, bis jeder Digest gelöst, heruntergeladen und verifiziert wurde."
},
{
"title": "Stoppen und sichern Sie das Set",
"body": "Verifizierte native Backups werden mit gestopptem Stack übernommen, sodass Anwendung und Datenbanken zum selben Zeitpunkt gehören."
},
{
"title": "Aktualisieren und überprüfen Sie jedes Mitglied",
"body": "Anpassung, Netzwerk, Mounts, Geheimnisse und Geräte werden vor dem Gesundheitscheck jedes Mitglieds erneut angewendet."
},
{
"title": "Alles veröffentlichen oder wiederherstellen",
"body": "Die neuen Verträge werden nur veröffentlicht, wenn jedes Mitglied besteht. Wenn einer scheitert, wird jedes Mitglied wiederhergestellt."
}
]
}
},
{
"table": {
"headers": [
"Ändern",
"Was sich ändert",
"Was erhalten bleibt"
],
"rows": [
[
"Extra Pfade und Geräte",
"Sie werden dem Anwendungscontainer hinzugefügt oder daraus entfernt, der neu gestartet wird. Es wird nichts neu erstellt",
"Die Daten der Anwendung, ihrer Datenbank und der anderen Container"
],
[
"Was die Erkennung ausführt (Immich)",
"Der Machine Learning Container nimmt das Image und die Geräte des CPU oder eines GPU des Hosts auf. Die gesamte Anwendung wird gestoppt und aktualisiert, wie in einem Update",
"Der Modell-Cache, die Bibliothek und die Datenbank. Wenn etwas fehlschlägt, werden die vorherigen Container und die vorherige Auswahl wiederhergestellt"
]
]
}
},
{
"calloutWarning": {
"title": "Ein Stack ohne koordinierte Wiederholung wird nicht aktualisiert",
"body": "Wenn die Vorbereitung eines Stapels nicht reproduziert werden kann, wird die Aktualisierung abgelehnt, bevor der Stapel gestoppt wird. Die Anwendung läuft so, wie sie ist."
}
}
]
},
{
"id": "failure",
"title": "6. Wenn etwas versagt",
"blocks": [
{
"p": "Während einer Installation stoppt und entfernt ein Fehler die unvollständigen Container, die die Operation erstellt hat, und die private Bridge, wenn die Operation sie erstellt hat. Ein Stack wird nicht als gültig veröffentlicht, bis die gesamte Sequenz beendet ist."
},
{
"p": "Ein Update ist transaktional: Alle Images werden zuerst vorbereitet, dann stoppt der Stapel, jedes Mitglied wird gesichert und das Backup verifiziert, und nur dann werden alle Rootfs ersetzt. Mitglieder beginnen eins nach dem anderen mit ihrem Gesundheitscheck; Wenn einer fehlschlägt, wird jedes Mitglied aus dem gleichen Backup-Satz wiederhergestellt, so dass die Datenbank und die Anwendung niemals zu verschiedenen Momenten gehören."
},
{
"mermaid": {
"chartCode": "flowchart LR\n P[\"{{prepare}}\"] --> S[\"{{stop}}\"]\n S --> B[\"{{backup}}\"]\n B --> R[\"{{replace}}\"]\n R --> H{\"{{healthy}}\"}\n H -- \"{{yes}}\" --> C[\"{{commit}}\"]\n H -- \"{{no}}\" --> X[\"{{rollback}}\"]",
"labels": {
"prepare": "Jedes Image vorbereiten",
"stop": "Stop, Hauptelement zuerst",
"backup": "Verifiziertes Backup jedes CT",
"replace": "rootfs ersetzen",
"healthy": "Alle funktionsfähig?",
"yes": "Ja",
"no": "Nein",
"commit": "Verträge veröffentlichen",
"rollback": "Jedes Mitglied wiederherstellen"
}
}
}
]
},
{
"id": "not-assumed",
"title": "Was ein Stack nicht beinhaltet",
"blocks": [
{
"list": {
"items": [
"Eine in einem Fluss installierte Suite, wie die Arr-Suite, ist kein abhängiger Stapel: Ihre Container haben keine Startreihenfolge zwischen ihnen.",
"Das private Netzwerk ersetzt nicht die Authentifizierung, TLS oder die Konfiguration jeder Anwendung.",
"Das Backup eines LXC enthält nicht die Brücke, den Haken oder die Verträge des Rests des Stapels.",
"Prowlarr, Sonarr oder Radarr erhalten von ProxMenux keine Indexer, Profile oder Anbieter."
]
}
}
]
}
]
}
@@ -0,0 +1,305 @@
{
"meta": {
"title": "Daten, Pfade und Netzwerk | ProxMenux",
"description": "So bewahrt OCI manager Apps die Daten eines OCI-Containers: Container-Datenträger, Host-Verzeichnisse, rclone-Mounts, Adressen und private Netzwerke."
},
"header": {
"title": "Daten, Pfade und Netzwerk",
"description": "Was im rootfs liegt, was beim Ersetzen erhalten bleibt, wie Container Daten gemeinsam nutzen und wie jeder Container seine Adresse erhält.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "intro",
"blocks": [
{
"calloutInfo": {
"title": "Persistenz wird vor dem Erstellen des LXC festgelegt",
"body": "Vor dem Erstellen des Containers werden die vom Image und seiner Compose-Datei deklarierten Volumes ausgelesen. Jeder Pfad, der eine Aktualisierung überstehen muss, erhält einen vom rootfs unabhängigen Mountpoint. Das rootfs enthält damit nur die zum Image gehörenden Dateien und kann ersetzt werden."
}
}
]
},
{
"id": "questions",
"title": "Was der Installer abfragt",
"intro": "Die Vorlage gibt die von der Anwendung benötigten Pfade vor. Jeder wird auf einem Container-Datenträger oder in einem Host-Verzeichnis abgelegt. Vor der Zusammenfassung können weitere Pfade ergänzt werden.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Benötigte Pfade",
"body": "<code>/config</code>, <code>/data</code>, Bibliotheken, Downloads und alle von der Anwendung deklarierten Volumes werden aufgelistet."
},
{
"title": "Speicherort",
"body": "Jeder Pfad wird auf einem Container-Datenträger oder in einem vorhandenen Host-Verzeichnis abgelegt."
},
{
"title": "Speicher und Größe",
"body": "Ein Container-Datenträger wird mit der angegebenen Größe auf einem Proxmox-VE-Speicher erstellt. Die Standardinstallation verwendet <code>local-lvm</code>. Die erweiterte Installation fragt für jeden Pfad zuerst den Speicher und dann die Größe ab; vorgeschlagen wird der Speicher des rootfs. Der Datenträger erscheint als <code>vm-VMID-disk-N</code> und wird als <code>mpN</code> eingebunden."
},
{
"title": "Host-Verzeichnis",
"body": "Das Host-Verzeichnis wird über seinen Pfad angegeben. Existiert es noch nicht, wird es angelegt und dem Host-Benutzer zugeordnet, auf den der Container-Benutzer abgebildet wird."
},
{
"title": "Weitere Pfade",
"body": "Vor der Installation können weitere Zuordnungen von Host-Pfad oder Volume zu einem Pfad im Container ergänzt werden."
},
{
"title": "Zusammenfassung",
"body": "Vor dem Erstellen des CT wird die vollständige Pfadzuordnung angezeigt und im Instanzvertrag gespeichert."
}
]
}
}
]
},
{
"id": "options",
"title": "Die beiden persistenten Speicherorte",
"blocks": [
{
"table": {
"headers": [
"Eigenschaft",
"Container-Datenträger",
"Host-Verzeichnis"
],
"rows": [
[
"In der Konfiguration",
"<code>mpN: STORAGE:vm-VMID-disk-N,mp=/config,backup=1,size=16G</code>",
"<code>mpN: /mnt/oci-shared/media,mp=/data/media</code>"
],
[
"Containersicherung (vzdump)",
"Mit <code>backup=1</code> enthalten",
"Nicht enthalten"
],
[
"Größe",
"Festgelegt; durch Vergrößern des Mountpoints erweiterbar",
"Der freie Platz im Dateisystem oder Dataset des Hosts"
],
[
"Andere Container",
"Nur vom zugehörigen Container eingebunden",
"Dasselbe Verzeichnis kann in mehrere Container eingebunden werden"
],
[
"Snapshots und Wiederherstellung",
"Von Proxmox VE zusammen mit dem CT verwaltet",
"Im Speicher des Hosts verwaltet"
],
[
"Beim Entfernen der Anwendung",
"Wird mit dem Container gelöscht",
"Bleibt mit seinem Inhalt erhalten"
],
[
"Beim Verschieben des CT auf einen anderen Knoten",
"Wird mit dem CT verschoben",
"Derselbe Pfad muss auf dem anderen Knoten vorhanden sein"
]
]
}
},
{
"p": "Das rootfs ist den Binärdateien und dem Inhalt des Images vorbehalten. Eine Aktualisierung oder Neuerstellung ersetzt es, ohne eine der beiden Arten von Mountpoints anzutasten."
}
]
},
{
"id": "example",
"title": "Beispiel: ein Container mit beiden Speicherorten",
"blocks": [
{
"code": {
"title": "Jellyfin als CT 151 auf local-lvm installiert (Auszug)",
"code": "rootfs: local-lvm:vm-151-disk-0,size=8G\n# Container disk, part of the CT backup\nmp0: local-lvm:vm-151-disk-1,mp=/config,backup=1,size=16G\n\n# Host directory, outside the CT backup\nmp1: /mnt/oci-shared/media,mp=/data/media"
}
},
{
"p": "Eine Aktualisierung oder Neuerstellung ersetzt nur das rootfs: <code>mp0</code> bewahrt Benutzer, Bibliotheken und Einstellungen, während <code>mp1</code> weiterhin dieselben Medien bereitstellt. Die Wiederherstellung der CT-Sicherung stellt <code>/config</code> wieder her. Das Medienverzeichnis wird bei Bedarf aus der Sicherung des Host-Speichers wiederhergestellt."
},
{
"flow": {
"nodes": [
{
"label": "Vertrag",
"detail": "/config"
},
{
"label": "Speicherort",
"detail": "Container-Datenträger\noder Host-Verzeichnis"
},
{
"label": "LXC",
"detail": "Für die Anwendung\nimmer /config"
}
],
"caption": "Die Anwendung sieht den vom Image vorgegebenen Pfad. Nur der Speicherort ändert sich."
}
}
]
},
{
"id": "shared",
"title": "Ein Host-Verzeichnis, mehrere Container",
"blocks": [
{
"mermaid": {
"chartCode": "flowchart TB\n H[\"{{host}}<br/>/mnt/oci-shared/media\"]\n H --> Q[\"qBittorrent<br/>/data\"]\n H --> J[\"Jellyfin<br/>/data\"]\n H --> R[\"Radarr / Sonarr<br/>/data\"]\n Q -. \"{{config}}\" .-> QV[(\"/config mpN\")]\n J -. \"{{config}}\" .-> JV[(\"/config mpN\")]\n R -. \"{{config}}\" .-> RV[(\"/config mpN\")]",
"labels": {
"host": "Host-Verzeichnis",
"config": "Eigene Konfiguration"
}
}
},
{
"p": "Jeder Container speichert seine Konfiguration auf einem eigenen Datenträger. Bibliothek oder Downloads liegen in einem gemeinsamen Host-Verzeichnis, das in allen Containern unter demselben internen Pfad eingebunden wird. So ist der Pfad, in den eine Anwendung schreibt, derselbe, aus dem eine andere liest."
}
]
},
{
"id": "rclone",
"title": "Cloud-Speicher über die rclone-Anwendung",
"intro": "Der rclone-Eintrag im Katalog bietet neben der Installation auch <strong>Mount in einem vorhandenen rclone-OCI-Container aktivieren</strong>. Dabei wird ein bereits in der rclone-Weboberfläche angelegtes und autorisiertes Remote eingehängt und auf dem Host bereitgestellt. Andere Container können es als Host-Verzeichnis nutzen.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Container und Remote",
"body": "Die VMID des rclone-Containers, der genaue Name des Remotes und optional ein Pfad darin."
},
{
"title": "Mount-Name und Cache",
"body": "Der Name des Mounts und der VFS-Cache-Modus: <code>off</code>, <code>minimal</code>, <code>writes</code> oder <code>full</code> (Standard)."
},
{
"title": "Bereitgestellte Ansichten",
"body": "Ein gemeinsames Stammverzeichnis, standardmäßig <code>/mnt/oci-shared</code>, enthält eine Ansicht mit Lese- und Schreibzugriff unter <code>/mnt/oci-shared/remotes/NAME</code> sowie eine schreibgeschützte Ansicht unter <code>/mnt/oci-shared/remotes-ro/NAME</code>."
},
{
"title": "Aktivierung",
"body": "Nach der Bestätigung wird der CT gestoppt. Sein Startbefehl und ein Proxmox-VE-Hookscript werden eingerichtet, dann wird er wieder gestartet. Der Vorgang wartet, bis beide Ansichten auf dem Host eingehängt sind."
}
]
}
},
{
"calloutInfo": {
"title": "Wenn der Mount nicht zustande kommt",
"body": "Die vorherige Container-Konfiguration wird wiederhergestellt und der Container erneut gestartet. Eine fehlgeschlagene Aktivierung lässt rclone damit im bisherigen Zustand."
}
}
]
},
{
"id": "network",
"title": "Adressen und Netzwerke",
"intro": "Eine einzelne Anwendung benötigt eine Adresse. Eine Anwendung aus mehreren Containern braucht zusätzlich ein stabiles Netzwerk zwischen ihren Mitgliedern.",
"blocks": [
{
"cards": {
"items": [
{
"icon": "network",
"title": "Anwendung mit einem Container",
"body": "Gewählt werden die Netzwerk-Bridge sowie DHCP oder eine feste Adresse im CIDR-Format. Der LXC hat eine eigene Adresse, und die Zusammenfassung zeigt die vollständigen Dienst-URLs."
},
{
"icon": "waypoints",
"title": "Anwendung mit mehreren Containern",
"body": "Ein freies Subnetz wird ermittelt und eine dauerhafte private Bridge erstellt. Jedes Mitglied – Anwendung, Datenbank und Cache – erhält dort eine feste Adresse."
}
]
}
},
{
"flow": {
"nodes": [
{
"label": "LAN",
"detail": "Erreichbare Adresse\nnur für den Hauptdienst"
},
{
"label": "Haupt-LXC",
"detail": "Web / API\nLAN + privates Netzwerk"
},
{
"label": "Privates Netzwerk",
"detail": "PostgreSQL · Valkey · ML\nfeste Adressen"
}
],
"caption": "Abhängigkeiten kommunizieren über das private Netzwerk und haben keine Adresse im LAN."
}
},
{
"p": "Der Stack-Vertrag speichert Bridge, Subnetz, Adressen und Beziehungen zwischen den Diensten. Bei einer Aktualisierung der Anwendung wird dieselbe Topologie für alle Mitglieder wiederverwendet. ProxMenux Monitor öffnet den Hauptcontainer über seine LAN-Adresse, nicht über seine Adresse im privaten Netzwerk."
}
]
},
{
"id": "ownership",
"title": "Datei- und Verzeichnisbesitz",
"blocks": [
{
"list": {
"items": [
"Neue Verzeichnisse werden mit der UID und GID angelegt, auf die der unprivilegierte LXC abgebildet wird.",
"Bei vorhandenen Verzeichnissen wird der Eigentümer nicht rekursiv geändert.",
"Sockets, Systemdateien und sensible Pfade werden nicht als allgemeine Host-Verzeichnisse angeboten."
]
}
}
]
},
{
"id": "backup",
"title": "Was eine Containersicherung enthält",
"blocks": [
{
"table": {
"headers": [
"Bestandteil",
"In der vzdump-Sicherung des CT",
"Aufbewahrungsort"
],
"rows": [
[
"OCI-rootfs",
"Ja",
"In der CT-Sicherung; außerdem aus Image und Vertrag neu erstellbar"
],
[
"Container-Datenträger mit <code>backup=1</code>",
"Ja",
"Die CT-Sicherung"
],
[
"Host-Verzeichnis",
"Nein",
"Die Sicherung des Host-Speichers"
],
[
"Instanzvertrag",
"Ja, die im CT mitgeführte Kopie",
"<code>/.proxmenux/oci-record.json</code> im CT; weitere Host- und Cluster-Kopien werden separat gespeichert"
],
[
"Anwendung mit mehreren Containern",
"Jedes Mitglied in einer eigenen Sicherung",
"Die Sicherungen aller Mitglieder sowie der Stack-Vertrag und seine Netzwerk-Bridge auf dem Host"
]
]
}
}
]
}
]
}
@@ -0,0 +1,172 @@
{
"meta": {
"title": "Automatisiertes Nachinstallationsskript | ProxMenux Dokumentation",
"description": "Das automatisierte Nachinstallationsskript von ProxMenux führt 14 festgelegte, hardwareabhängige Optimierungen auf einem neuen Proxmox-VE-Host aus. Es gibt keine Funktionsauswahlliste; Systemaktualisierung, Bannerentfernung, manche Log2RAM-Installationen und Neustart können jedoch eine Bestätigung verlangen. Rückgängig zu machende Konfigurationsänderungen werden erfasst.",
"ogTitle": "Automatisiertes Nachinstallationsskript | ProxMenux Dokumentation",
"ogDescription": "14 festgelegte, hardwareabhängige Optimierungen für einen neuen Proxmox-VE-Host, mit Bestätigungen für einige Aktionen und Erfassung rückgängig zu machender Änderungen."
},
"header": {
"title": "Automatisiertes Post-Install-Skript",
"description": "ProxMenux führt 14 festgelegte Basisoptimierungen ohne Funktionsauswahlliste aus. Einige Aktionen verlangen eine Bestätigung. Rückgängig zu machende Konfigurationsänderungen werden für Optimierungen deinstallieren erfasst; Paket-Upgrades werden nicht als reversibel beschrieben.",
"section": "Post-Installation · Automatisiert"
},
"intro": {
"title": "Wann automatisiert ausgewählt werden soll",
"body": "Führen Sie dies auf einem frisch installierten Proxmox-Host aus, wenn Sie eine sinnvolle Basislinie wünschen, ohne Entscheidungen treffen zu müssen. Das Skript ist idempotent – ​​es ist sicher, es zweimal auszuführen, es wendet lediglich dieselben Konfigurationen erneut an. Opt-in-Funktionen (Fastfetch, IOMMU, Ceph Repo, HA, AMD-Fixes…) sind absichtlich <strong>nicht</strong> Teil dieses Pfades; Wählen Sie sie bei Bedarf unter <link>Anpassbar</link> aus."
},
"applies": {
"heading": "Was das Skript anwendet",
"intro": "Die Optimierungen werden genau in dieser Reihenfolge angewendet. Die Spalte <em>Kategorie</em> verlinkt auf die ausführliche Dokumentation jeder Änderung in der anpassbaren Nachinstallation.",
"headerNum": "#",
"headerTool": "Werkzeug",
"headerWhat": "Was es tut",
"headerCategory": "Kategorie"
},
"optimizations": [
{
"tool": "APT-Repositorys + vollständiges Upgrade",
"what": "Deaktiviert die Enterprise-Quellen pve-enterprise.sources und ceph.sources, erstellt eine passende No-Subscription-Quelle für den Debian-Codenamen des Hosts und führt apt update && apt full-upgrade -y aus (offizieller Proxmox-Upgrade-Befehl).",
"category": "Grundeinstellungen",
"categorySlug": "basic-settings"
},
{
"tool": "Subskriptionsbanner entfernen",
"what": "Passt die Weboberfläche an, um den Hinweis „Kein gültiges Abonnement“ auszublenden. Fragt vorher nach Bestätigung; über Optimierungen deinstallieren rückgängig zu machen.",
"category": "Anpassung",
"categorySlug": "customization"
},
{
"tool": "IPv4 erzwingen",
"what": "Schreibt /etc/apt/apt.conf.d/99-force-ipv4, damit apt nur IPv4 nutzt und instabile IPv6-Verbindungen zu Spiegelservern umgeht.",
"category": "Netzwerk",
"categorySlug": "network"
},
{
"tool": "Sprachpakete überspringen",
"what": "Schreibt /etc/apt/apt.conf.d/99-disable-translations, um übersetzte Paketbeschreibungsindizes nicht mehr herunterzuladen und die Datenmenge bei apt-Updates zu verringern.",
"category": "Grundeinstellungen",
"categorySlug": "basic-settings"
},
{
"tool": "Erhöhung der Systemgrenzen",
"what": "Erhöht inotify-Überwachungen, nofile/nproc-Grenzen, Kernel-Schlüsselbundgrenzen und fs.file-max über sysctl.d, limits.d, pam und systemd — ausreichend für Hosts mit vielen Containern.",
"category": "System",
"categorySlug": "system"
},
{
"tool": "Speicherabstimmung",
"what": "Setzt vm.swappiness=10, ausgewogene Anteile noch nicht geschriebener Speicherseiten, vm.max_map_count=262144 und bei Unterstützung proaktive Speicherkompaktierung. Die Overcommit-Richtlinie des Kernels bleibt auf dem Proxmox-Standard.",
"category": "System",
"categorySlug": "system"
},
{
"tool": "Verhalten bei Kernel-Panik",
"what": "Konfiguriert den Host so, dass er 10 Sekunden nach einer Panik / oops / Hardlockup neu startet, anstatt auf unbestimmte Zeit einzufrieren.",
"category": "System",
"categorySlug": "system"
},
{
"tool": "Netzwerk-Stack abstimmen",
"what": "TCP Buffer Sizing, IPv4-Härtung (redirects off, rp_filter=2, martian log off), lokaler Portbereich 1024-65535, TCP MTU-Probing, RFC 1337, plus ein Helfer bei /usr/local/sbin/proxmenux-fwbr-tune, der mit einer oneshot systemd-Einheit und einer udev-Regel verdrahtet ist, so dass rp_filter=0 / log_martians=0 jedes Mal wieder auf fwbr*/fwln*/fwpr*/tap*-Schnittstellen angewendet werden, wenn Proxmox sie bei VM Start / Stop, Neustart oder Live-Migration neu erstellt.",
"category": "Netzwerk",
"categorySlug": "network"
},
{
"tool": "Bashrc-Anpassung (root)",
"what": "Farbige PS1, gebräuchliche Aliase (l/la/ll/ls/grep), Zeitstempel-Historie und Bash-Completion-Sourcing, alles in einem PMX_CORE_BASHRC eingezäunten Block, so dass es leicht zu entfernen ist.",
"category": "Anpassung",
"categorySlug": "customization"
},
{
"tool": "Log2RAM (SSD-bewusst, auto)",
"what": "Reduziert SSD-/NVMe-Verschleiß durch Verschieben von /var/log in eine tmpfs-RAM-Disk mit regelmäßiger Synchronisierung auf Datenträger. Installation aus dem Upstream-Projekt bei SSD oder NVMe als Systemplatte. Die Größe richtet sich nach dem Host-RAM (128M / 256M / 512M). Ein Schutz leert alte Journale ab 80% Belegung und kürzt stark wachsende Logs ab 92% vor dem Schreiben. Regelmäßige Synchronisierung wird geplant und journald an den verfügbaren Platz angepasst. Details unter <link>Log2RAM</link>.",
"category": "Speicher",
"categorySlug": "storage"
},
{
"tool": "ZFS Autotrim (nur SSD)",
"what": "Aktiviert zpool autotrim=on in jedem ZFS-Pool, dessen vdevs alle SSD/NVMe mit TRIM-Unterstützung sind (überprüft /sys/block/[dev]/queue/rotational und discard_granularity). Pools, die von HDDs unterstützt werden, werden automatisch übersprungen. Nur Pools, die tatsächlich von ProxMenux geändert wurden, werden zur Deinstallation aufgezeichnet - Pools, die Sie manuell autotrimieren, werden in Ruhe gelassen.",
"category": "Speicher",
"categorySlug": "storage"
},
{
"tool": "Journald Größenbeschränkungen",
"what": "Erzwingt dauerhaften Speicher, begrenzt SystemMaxUse=64M / RuntimeMaxUse=60M und aktiviert Komprimierung sowie Info-Protokollierung für Monitor. Wird bei aktivem Log2RAM automatisch übersprungen, da dieses die Anpassung selbst übernimmt.",
"category": "System",
"categorySlug": "system"
},
{
"tool": "Logrotate abstimmen",
"what": "Setzt global daily und danach size 10M, behält 7 Rotationen und aktiviert Komprimierung sowie copytruncate. Das spätere Größenkriterium hat Vorrang; einzelne Logregeln können es überschreiben. Für Log2RAM geeignet, die Häufigkeit hängt aber von Regeln und Timer ab.",
"category": "System",
"categorySlug": "system"
},
{
"tool": "Persistente Schnittstellennamen",
"what": "Schreibt einen <code>/etc/systemd/network/10-proxmenux-&lt;iface&gt;.link</code> pro physischem NIC (jeder beginnt mit einem 'Managed by ProxMenux'-Header), der den MAC an den aktuellen Namen anheftet, so dass <code>eth0</code> / <code>enp…</code> Namen über Neustarts und neue NIC-Ergänzungen stabil bleiben.",
"category": "Netzwerk",
"categorySlug": "network"
}
],
"hardwareTitle": "Hardwareabhängige Standardwerte",
"hardwareBody": "Das Skript liest die Host-Hardware vor dem Anwenden von Einstellungen. Log2RAM ist standardmäßig nur auf SSD / NVMe Root-Festplatten installiert (es wird aufgefordert, wenn die Erkennung etwas anderes sagt). Die Ramdisk-Größe von Log2RAM wird aus der Gesamt-RAM (<code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>'>' 16 GB → 512M</code>) ausgewählt. Die Journald-Limits werden an die Ramdisk-Größe angepasst, wenn Log2RAM aktiv ist, um ein Ausfüllen zu vermeiden.",
"upgrade": {
"heading": "Paketlisten und System aktualisieren",
"intro": "Der erste Schritt der automatisierten Nachinstallation ist das Proxmox-Upgrade. Für einen laufenden Host innerhalb derselben Hauptversion empfiehlt Proxmox selbst:",
"after": "Diese Zeile ist der offizielle Befehl für aktuelle Proxmox-Versionen. Das automatisierte Skript führt <strong>genau</strong> das aus und ergänzt Repository-Bereinigung und Nacharbeiten gemäß Upgrade-Anleitung — dieselben Schritte wie das separate Werkzeug <link>Proxmox-Systemaktualisierung</link>:",
"items": [
"Deaktiviert die Enterprise-Quellen <code>pve-enterprise.sources</code> / <code>ceph.sources</code>, entfernt alte Repository-Dateien und erstellt eine saubere No-Subscription-Quelle für den Codenamen des Hosts.",
"Führt das Upgrade nicht interaktiv mit <code>DEBIAN_FRONTEND=noninteractive</code> und <code>--force-confdef --force-confold</code> aus. Angepasste Konfigurationsdateien bleiben erhalten, auch wenn sie sich im Upstream geändert haben.",
"Installiert wichtige Proxmox-Pakete, wenn sie fehlen (<code>zfsutils-linux</code>, <code>proxmox-backup-restore-image</code>, <code>chrony</code>).",
"LVM Metadaten-Sanitätsprüfung, <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code> und eine Neustartaufforderung nur, wenn der Kernel tatsächlich geändert wurde."
],
"sameTitle": "Gleicher Updater, zwei Einstiegspunkte",
"sameBody": "Das automatisierte Paket und das eigenständige <link>Proxmox System Update</link>-Dienstprogramm teilen sich die gleichen zugrunde liegenden Skripte (<code>update-pve8.sh</code> / <code>update-pve9_2.sh</code>). Verwenden Sie das Dienstprogramm selbst, wenn Sie nur den Host aktualisieren möchten, ohne den Rest der Optimierungen anzuwenden."
},
"endResult": {
"heading": "Erwartetes Endergebnis",
"body": "Am Ende sehen Sie eine Erfolgsmeldung mit Ausgaben der einzelnen Schritte und eine Neustartfrage, da einige Kerneleinstellungen einen Neustart benötigen. Sie können den Neustart verschieben; die Einstellungen gelten beim nächsten Start.",
"imageAlt": "Automatisiertes Nachinstallationsskript — abschließende Terminalausgabe mit erfolgreich angewendeten Optimierungen"
},
"notDoes": {
"heading": "Was dieses Skript nicht tut",
"items": [
"Automatische Zeitzonenerkennung (im Quellskript auskommentiert; bei Bedarf die anpassbare Nachinstallation verwenden).",
"Portmapper / rpcbind deaktivieren (siehe <secLink>Sicherheit</secLink>).",
"IOMMU / VFIO aktivieren (siehe <virtLink>Virtualisierung</virtLink>).",
"Fastfetch / Figurine / Ceph-Repository / HA / AMD-CPU-Korrekturen installieren (siehe <optLink>Optional</optLink>).",
"pigz installieren oder ZFS ARC abstimmen (siehe <perfLink>Leistung</perfLink> / <storLink>Speicher</storLink>)."
]
},
"xshokTitle": "xshok-proxmox-Erkennung",
"xshokBody": "Wenn der Host zuvor das <code>xshok-proxmox</code>-Skript ausgeführt hat, erkennt ProxMenux die Markierungsdatei und warnt Sie, bevor Sie fortfahren. Einige Tweaks können sich überschneiden. Das Begleitskript ist veraltet - wenn Sie sich entscheiden, trotzdem fortzufahren, überprüfen Sie <link>die Übersicht</link> für den Kontext.",
"revert": {
"heading": "Rückgängig machen",
"body": "Jedes Werkzeug der Tabelle wird in <code>/usr/local/share/proxmenux/installed_tools.json</code> erfasst. Unter <link>Optimierungen deinstallieren</link> können Sie einzelne Änderungen zurücksetzen. Sicherungen geänderter Konfigurationsdateien liegen mit der Endung <code>.bak</code> neben den Originalen."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — wählen Sie im selben Katalog genau die gewünschten Funktionen."
},
{
"label": "Optimierungen deinstallieren",
"href": "/docs/post-install/uninstall",
"tail": " — einzelne hier angewendete Änderungen rückgängig machen."
},
{
"label": "Nützliche Systembefehle",
"href": "/docs/help-info/system-commands",
"tail": " — Änderungen überprüfen (uptime, free, journalctl usw.)."
},
{
"label": "Übersicht Post-Install",
"href": "/docs/post-install",
"tail": "."
}
]
}
}
@@ -0,0 +1,240 @@
{
"meta": {
"title": "Post-Install: Grundeinstellungen | ProxMenux Dokumentation",
"description": "Grundlegende Optionen nach der Installation: Wechseln Sie zu kostenlosen Proxmox-Repositories und Upgraden, erkennen Sie automatisch die Zeitzone und aktivieren Sie NTP, überspringen Sie APT-Sprachdownloads und wählen Sie aus 25 gängigen System-Dienstprogrammen zur Installation."
},
"header": {
"title": "Post-Install: Grundeinstellungen",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was diese Kategorie abdeckt",
"body": "Fünf Grundlagen für einen neuen Proxmox-Host: auf Community-Repositories ohne Abonnement umstellen, das System vollständig aktualisieren, Zeitzone und NTP automatisch konfigurieren, APT-Sprachdownloads zur Einsparung von Bandbreite und Speicherplatz abschalten und aus 25 gängigen Systemwerkzeugen wählen."
},
"upgrade": {
"heading": "Paketlisten und System aktualisieren",
"intro": "Stellt APT auf das kostenlose Repository <em>pve-no-subscription</em> statt des abonnementpflichtigen Enterprise-Repositorys um und aktualisiert das gesamte System. Die Schritte hängen von der Proxmox-VE-Hauptversion ab; ProxMenux erkennt sie und startet das passende Skript.",
"headerVersion": "PVE-Version",
"headerScript": "Versionsabhängiges Startskript",
"headerCodename": "Debian-Codename",
"rows": [
{
"version": "9.x",
"script": "update-pve9_2.sh",
"codename": "trixie"
},
{
"version": "8.x",
"script": "update-pve8.sh",
"codename": "bookworm"
}
],
"officialTitle": "Die offizielle Proxmox Empfehlung",
"officialBody": "Die offizielle Proxmox-Anleitung empfiehlt diese genaue Reihenfolge:",
"officialOutro": "Das ist der übliche Befehl für Updates innerhalb der installierten Proxmox-VE-Hauptversion. Prüfen Sie die Repositories und vorgeschlagenen Paketänderungen, <em>bevor</em> Sie fortfahren. Ein Hauptversionswechsel erfordert das offizielle Migrationsverfahren.",
"doesTitle": "Was die ProxMenux-Option tut - verifiziert gegen das Skript",
"doesIntro": "Das ProxMenux-Update wickelt die oben genannten exakten apt-Befehle ab und fügt eine Reihe von Pre-/Post-Schritten hinzu, die Sie sich sonst von Hand merken müssten. Jedes Element unten ist, was das Dispatcher-Skript tatsächlich tut (siehe <link>Proxmox System Update</link> für die vollständige Aufschlüsselung):",
"doesItems": [
"<strong>Zuerst die Repositories bereinigen.</strong> Deaktiviert die Enterprise-Quellen <code>pve-enterprise.sources</code> / <code>ceph.sources</code>, entfernt alte Repository-Dateien früherer PVE-Versionen und erstellt eine saubere <code>proxmox.sources</code> für den kostenlosen Kanal <em>pve-no-subscription</em>, passend zum Debian-Codenamen: trixie für PVE 9, bookworm für PVE 8.",
"<strong>Debian-Repositories neu schreiben</strong> mit main / updates / security und <code>non-free-firmware</code>, damit die Firmwarewarnung beim Upgrade entfällt.",
"<strong>Führt das offizielle Upgrade aus.</strong> <code>apt-get update</code> gefolgt von <code>apt full-upgrade -y</code> (PVE 9) oder <code>apt dist-upgrade -y</code> (PVE 8), jeweils nicht interaktiv mit <code>--force-confdef --force-confold</code>, um angepasste Konfigurationsdateien zu erhalten.",
"<strong>Installiert fehlende wichtige Pakete:</strong> <code>zfsutils-linux</code>, <code>proxmox-backup-restore-image</code>, <code>chrony</code>.",
"<strong>LVM-Metadaten prüfen.</strong> Sucht nach VMs mit Festplatten-Passthrough, die veraltete Physical-Volume-Header auf Rohdatenträger geschrieben haben könnten. Warnt bei Auffälligkeiten, ohne sie automatisch zu beheben.",
"<strong>Bereinigt danach:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>, dann Neustartabfrage bei Kernel-Update oder vorhandener Datei <code>/var/run/reboot-required</code>."
],
"shortTitle": "Kurz gesagt",
"shortBody": "Die Option führt das empfohlene <code>apt update && apt full-upgrade -y</code> aus, ergänzt die im offiziellen Leitfaden genannte Repository- und Nachbereitung und fragt am Ende nach dem Neustart. Siehe <link>Proxmox-Systemupdate</link> mit vollständigem Ablaufdiagramm — derselbe Updater ist als eigenständiges Werkzeug im Hauptmenü verfügbar.",
"subTitle": "Nicht auf einen abonnierten Host anwenden",
"subBody": "Wenn Sie ein Proxmox-Abonnement haben und Enterprise-Repositories behalten möchten, überspringen Sie diese Option. Sie deaktiviert Enterprise und stellt auf den Community-Kanal um. Paketupgrade und Repository-Umschreibung lassen sich unter Optimierungen deinstallieren nicht zurücksetzen. Einen späteren Kanalwechsel müssen Sie gezielt über die Repository-Konfiguration vornehmen.",
"safetyTitle": "Sicherheitsüberprüfung nach der Aktualisierung",
"safetyBody": "Nach dem Upgrade prüft das Skript auf Festplatten mit veralteten PV-Metadaten (Physical Volume) - ein Edge Case, der auftreten kann, wenn ein VM mit Festplattendurchgang LVM-Header auf eine Rohplatte kritzelt. Wenn etwas Verdächtiges gefunden wird, sehen Sie eine Warnung, die <code>pvs</code> zur Inspektion vorschlägt. Es wird nicht automatisch gehandelt."
},
"time": {
"heading": "Zeit automatisch synchronisieren",
"intro": "Erkennt die öffentliche IP des Servers über <code>dig myip.opendns.com @resolver1.opendns.com</code>, fragt dann <code>ipapi.co/'{'ip'}'/timezone</code>, um die passende IANA-Zeitzone nachzuschlagen, und wendet sie mit <code>timedatectl set-timezone</code> an. Endlich ermöglicht NTP mit <code>timedatectl set-ntp true</code>.",
"depTitle": "Abhängig von zwei externen Diensten",
"depBody": "Der Lookup basiert darauf, dass OpenDNS und <code>ipapi.co</code> erreichbar sind und ihre Antworten korrekt sind. Wenn Sie Proxmox hinter einem VPN oder einem VLAN ausführen, das aus einer anderen Region austritt, ist die automatisch erkannte Zeitzone möglicherweise falsch. In diesem Fall überspringen Sie diese Option und legen Sie die Zeitzone von Hand fest:",
"revertTitle": "Reversibel aus dem Menü Deinstallieren",
"revertBody": "<link>Optimierungen deinstallieren</link> setzt die Zeitzone auf UTC zurück, eine sichere Vorgabe. NTP bleibt aktiv; die Uhr synchronisiert sich weiter und zeigt UTC, bis Sie eine andere Zeitzone einstellen."
},
"languages": {
"heading": "Das Herunterladen zusätzlicher Sprachen überspringen",
"intro": "Bei <code>apt update</code> kann APT übersetzte Paketbeschreibungen zusätzlich zu den Hauptmetadaten herunterladen. Die Option deaktiviert diese Downloads zur Einsparung von Bandbreite und Speicherplatz. Zuvor <strong>stellt ProxMenux sicher, dass die Locale des Hosts generiert ist</strong>: Es liest <code>/etc/default/locale</code> oder <code>/etc/environment</code>, ergänzt <code>/etc/locale.gen</code> bei Bedarf und führt <code>locale-gen</code> aus. Die Shell-Locale bleibt erhalten.",
"writtenTitle": "Was geschrieben wird",
"revertTitle": "Reversibel aus dem Menü Deinstallieren",
"revertBody": "Das Löschen von <code>/etc/apt/apt.conf.d/99-disable-translations</code> (manuell oder aus dem Menü Deinstallieren) stellt das Standardverhalten wieder her und APT lädt Sprachdateien erneut herunter."
},
"utilities": {
"heading": "Allgemeine Systemdienstprogramme installieren",
"intro": "Öffnet eine gruppierte Auswahlliste mit <strong>25 ausgewählten Werkzeugen</strong>. Wählen und bestätigen Sie; ProxMenux installiert sie über <code>apt</code>, überprüft das Ergebnis und zeigt eine Zusammenfassung.",
"imageAlt": "Auswahldialog für ProxMenux-Systemwerkzeuge: Leertaste zum Auswählen, Eingabetaste zum Bestätigen",
"reuseTitle": "Die gleiche Liste wird an anderer Stelle wiederverwendet",
"reuseBody": "Der Katalog mit 25 Werkzeugen ist zentral definiert: <code>PROXMENUX_UTILS</code> in <code>scripts/global/utils-install-functions.sh</code>. Unter <em>Dienstprogramme und Werkzeuge → Systemwerkzeuge</em> finden Sie dieselbe Liste für spätere Installationen ohne erneuten Nachinstallationslauf.",
"listTitle": "Was ist in der Liste",
"groups": [
{
"group": "Systemüberwachung",
"items": [
{
"pkg": "htop",
"desc": "Interaktiver Prozess-Viewer"
},
{
"pkg": "btop",
"desc": "Moderner Ressourcenmonitor (CPU, RAM, Festplatten, Netz, Prozesse)"
},
{
"pkg": "s-tui",
"desc": "Terminaloberfläche für CPU-Belastungstests und Überwachung"
},
{
"pkg": "iftop",
"desc": "Live-Bandbreitennutzung pro Verbindung"
},
{
"pkg": "iotop",
"desc": "Datenträger-I/O pro Prozess"
},
{
"pkg": "iptraf-ng",
"desc": "Interaktiver IP-LAN-Monitor"
}
]
},
{
"group": "Netzwerk",
"items": [
{
"pkg": "iperf3",
"desc": "Messen Sie die maximal erreichbare Bandbreite zwischen Hosts"
},
{
"pkg": "net-tools",
"desc": "Legacy-Tools (ifconfig, netstat, route). Immer noch praktisch für schnelle Überprüfungen."
},
{
"pkg": "ipset",
"desc": "Verwalten Sie große IP-Sets im Kernel – nützlich mit iptables/nftables-Regeln."
}
]
},
{
"group": "Download und Archiv",
"items": [
{
"pkg": "axel",
"desc": "Leichter paralleler Download-Beschleuniger"
},
{
"pkg": "aria2",
"desc": "Multi-Source-/Multi-Protokoll-Downloader (HTTP, FTP, BitTorrent, Metalink)"
},
{
"pkg": "unzip",
"desc": "ZIP-Archive extrahieren"
},
{
"pkg": "zip",
"desc": "ZIP-Archive erstellen"
},
{
"pkg": "cabextract",
"desc": "Extrahieren von Microsoft CAB-Archiven (bei der Arbeit mit Windows ISOs praktisch)"
},
{
"pkg": "wimtools",
"desc": "Windows-WIM-Abbilder bearbeiten (extrahieren, aufteilen, einbinden, anwenden)"
},
{
"pkg": "genisoimage",
"desc": "ISO-9660-Abbilder aus einem Verzeichnis erstellen"
}
]
},
{
"group": "Text und Dateien",
"items": [
{
"pkg": "dos2unix",
"desc": "CRLF-Zeilenenden (Windows) in LF-Zeilenenden (Unix) umwandeln"
},
{
"pkg": "grc",
"desc": "Färbt Ausgaben von ping, traceroute, dig, tail usw. mit Syntaxhervorhebung ein"
},
{
"pkg": "plocate",
"desc": "Schnelle Dateisuche (indexiert). Führen Sie `updatedb` nach der Installation aus, um den Index zu erstellen."
}
]
},
{
"group": "Remote und Sessions",
"items": [
{
"pkg": "sshpass",
"desc": "Nicht interaktive SSH-Passwortauthentifizierung (für Skripte, nicht für den täglichen Gebrauch)"
},
{
"pkg": "tmux",
"desc": "Terminal-Multiplexer: Sitzungen abkoppeln, Fenster teilen und Sitzungen bei Verbindungsabbrüchen erhalten"
}
]
},
{
"group": "Hardware und Low-Level",
"items": [
{
"pkg": "msr-tools",
"desc": "CPU modellspezifische Register lesen/schreiben (rdmsr, wrmsr)"
},
{
"pkg": "intel-gpu-tools",
"desc": "Intel GPU Diagnoseprogramme einschließlich `intel_gpu_top`"
}
]
},
{
"group": "Virtualisierung",
"items": [
{
"pkg": "libguestfs-tools",
"desc": "VM-Festplattenabbilder untersuchen und ändern (virt-ls, virt-cat, guestmount…)"
},
{
"pkg": "chntpw",
"desc": "Bearbeiten von Windows SAM - nützlich für die Passwortwiederherstellung auf Windows VMs, die Sie erben"
}
]
}
],
"actionTitle": "Einige davon in Aktion",
"noBulkTitle": "Nur von ProxMenux installierte Werkzeuge werden entfernt",
"noBulkBody": "ProxMenux erfasst nur ausgewählte Pakete, die noch nicht installiert waren. Optimierungen deinstallieren entfernt diese Pakete vollständig und lässt zuvor vorhandene Pakete bestehen. Für APT-Upgrades gibt es kein sicheres atomares Zurückrollen: Das Entfernen der Werkzeuge macht das System-Upgrade nicht rückgängig."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Proxmox-Systemupdate",
"href": "/docs/utils/system-update",
"tail": " — Führt den Zyklus apt update + dist-upgrade bei Bedarf erneut aus."
},
{
"label": "Installationsprogramm für Systemdienstprogramme",
"href": "/docs/utils/system-utils",
"tail": "— Installation (oder Neuinstallation) von Dienstprogrammen einzeln nach der Nachinstallation."
},
{
"label": "Befehle für Updates und Pakete",
"href": "/docs/help-info/update-commands",
"tail": " — APT-Referenz für die Shell."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
@@ -0,0 +1,106 @@
{
"meta": {
"title": "Anpassbares Post-Install-Script | ProxMenux Dokumentation",
"description": "Wählen Sie genau die Optimierungen aus, die ProxMenux auf Ihrem Proxmox-VE-Host anwenden soll. 10 Kategorien, etwa 35 einzelne Werkzeuge und eine Auswahl mit Kontrollkästchen. Enthält alle Funktionen des automatischen Skripts plus ausdrücklich wählbare Optionen wie IOMMU, Fastfetch, Figurine, Ceph, HA und AMD-Korrekturen.",
"ogTitle": "Anpassbares Post-Install-Script | ProxMenux Dokumentation",
"ogDescription": "10 Kategorien, ~35 individuelle Optimierungen. Wählen Sie genau das aus, was Sie auf einem Proxmox VE-Host wünschen. Reversible Veränderungen werden verfolgt."
},
"header": {
"title": "Anpassbares Post-Install-Script",
"description": "Wählen Sie genau die Optimierungen für Ihren Proxmox-VE-Host. ProxMenux gruppiert etwa 35 Werkzeuge in 10 Kategorien in einem gemeinsamen Auswahldialog. Dieselbe Grundlage wie Automatisch, aber mit voller Kontrolle über die angewendeten Änderungen.",
"section": "Post-Installation · Anpassbar"
},
"intro": {
"title": "Wann Sie Anpassbar wählen sollten",
"body": "Wählen Sie diesen Weg, wenn Sie die gewünschten oder unerwünschten Anpassungen bereits kennen. Eine nach Kategorien gruppierte Auswahlliste erlaubt das Vorwählen, Abwählen und Kombinieren von Optimierungen. Einträge können später erneut angewendet werden. Reversible Konfigurationsänderungen werden für <link>Optimierungen deinstallieren</link> erfasst; Paket-Upgrades gelten nicht als reversibel."
},
"compare": {
"heading": "Vergleich mit Automatisch",
"body": "Anpassbar umfasst das gesamte <link>automatische Skript</link>: dieselben 14 Basisoptimierungen plus zahlreiche ausdrücklich wählbare Optionen, die Automatisch absichtlich auslässt. Diese sind nur für bestimmte Hardware (AMD-Korrekturen), Hostinganbieter (OVH RTM) oder Arbeitslasten nützlich (IOMMU/VFIO, Ceph-Repository, Hochverfügbarkeit, Fastfetch, Figurine, ZFS-ARC-Anpassung, pigz, automatische ZFS-Snapshots, vzdump-Geschwindigkeitsgrenzen, Open vSwitch, TCP BBR …)."
},
"categoriesSection": {
"heading": "Die 10 Kategorien",
"body": "Das anpassbare Skript gruppiert die Optimierungen in 10 Kategorien in einem gemeinsamen Auswahldialog. Jede Kategorie hat eine eigene Dokumentationsseite. Öffnen Sie eine Karte für die Begründung, Vorgaben und Prüfschritte jeder Option."
},
"categories": [
{
"name": "Grundeinstellungen",
"description": "APT-Quellen bereinigen, das offizielle Proxmox-Upgrade ausführen und Zeitzone, Gebietsschema sowie häufig benötigte Werkzeuge einrichten. Die Grundlage aller anderen Gruppen."
},
{
"name": "System",
"description": "Optimieren Sie das Protokollsubsystem und die Kernel-Grenzwerte für einen Host, der viele VMs und Container enthält. Behandelt journald, Logrotate, Sysctl (Speicher, Dateibeschränkungen), Kernel-Panic-Verhalten und schnelle Neustarts."
},
{
"name": "Virtualisierung",
"description": "Bereitet den Host auf erweiterte Virtualisierung vor. Installiert den passenden Gastagenten, wenn Proxmox selbst in einer unterstützten VM läuft, und aktiviert IOMMU/VFIO für die PCI-Durchreichung von GPUs, Controllern und TPUs."
},
{
"name": "Netzwerk",
"description": "Härtet und optimiert den Netzwerkstack des Hosts. Erzwingt IPv4 für APT, wendet sysctl-Härtung und TCP-Pufferanpassungen an, bietet Open vSwitch, TCP BBR und TCP Fast Open und bindet persistente Schnittstellennamen an MAC-Adressen."
},
{
"name": "Speicher",
"description": "Richten Sie die gängigen Speicher-Subsysteme von Proxmox ein: ZFS ARC Sizing, ZFS auto-snapshot, ZFS autotrim für SSD/NVMe Pools und vzdump Geschwindigkeitsbegrenzungen, um eine Sättigung der Festplatte bei Backups zu vermeiden."
},
{
"name": "Sicherheit",
"description": "Verringert die standardmäßig offene Angriffsfläche. Deaktiviert die RPC-Dienste portmapper/rpcbind, die Proxmox nicht benötigt, aber lauschen lässt."
},
{
"name": "Anpassung",
"description": "Ändern Sie das visuelle und Shell-Erlebnis des Hosts: Farben und Aliase in bashrc, MOTD-Banner und Entfernen des Abonnementbescheids in der Web-Benutzeroberfläche."
},
{
"name": "Überwachung",
"description": "Integriert den Host in OVH Real-Time Monitoring. Installiert RTM nur, wenn ProxMenux einen OVH-Server erkennt; auf anderen Hosts ändert die Option nichts."
},
{
"name": "Leistung",
"description": "Beschleunigen Sie Kompressionsvorgänge (Backups, Transfers), indem Sie gzip durch sein paralleles Gegenstück pigz ersetzen."
},
{
"name": "Fakultativ",
"description": "Nischenstücke, die nicht jeder Host braucht: AMD CPU Fixes, Fastfetch-Banner, Figurine 3D-Hostname, Indexaktualisierung des PVE Appliance Managers, Ceph Repository, High Availability Services, Log2RAM zur Reduzierung des SSD-Verschleisses und ein ZRAM-Swap-Profil."
}
],
"mixTip": {
"title": "Automatisch und Anpassbar kombinieren",
"body": "Ein übliches Vorgehen: zuerst <strong>Automatisch</strong> für sinnvolle Grundeinstellungen, dann <strong>Anpassbar</strong> öffnen und nur benötigte Zusatzwerkzeuge wählen, etwa IOMMU für GPU-Passthrough. Änderungen werden unabhängig erfasst; Deinstallieren zeigt alle angewendeten Einträge unabhängig vom verwendeten Weg."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Automatische Nachinstallation",
"href": "/docs/post-install/automated",
"tail": " — sinnvolle Vorgaben ohne Rückfragen anwenden."
},
{
"label": "Optimierungen deinstallieren",
"href": "/docs/post-install/uninstall",
"tail": " — jede Auswahl sauber rückgängig machen."
},
{
"label": "Grundeinstellungen",
"href": "/docs/post-install/basic-settings",
"tail": "— Repos, Zeit, Sprache, Dienstprogramme."
},
{
"label": "Virtualisierung",
"href": "/docs/post-install/virtualization",
"tail": "— IOMMU + VFIO für Passthrough."
},
{
"label": "Sicherheit",
"href": "/docs/post-install/security",
"tailRich": " · <storageLink>Speicher</storageLink> · <networkLink>Netzwerk</networkLink> · <customLink>Anpassung</customLink> — weitere Kategorien."
},
{
"label": "Übersicht nach der Installation",
"href": "/docs/post-install",
"tail": "."
}
]
}
}
@@ -0,0 +1,74 @@
{
"meta": {
"title": "Nach der Installation: Anpassung | ProxMenux-Dokumentation",
"description": "Anpassungen im anpassbaren ProxMenux-Skript nach der Installation: farbige Bash-Eingabeaufforderung mit nützlichen Aliasen, ProxMenux-Banner in der MOTD und Entfernung des Abonnementhinweises aus der Proxmox-Weboberfläche."
},
"header": {
"title": "Nach der Installation: Anpassung",
"description": "Optische und praktische Anpassungen für den Proxmox-Host. Sie machen die Shell angenehmer und blenden den Abonnementhinweis in der Weboberfläche aus. Bashrc, MOTD und Abonnementbanner werden erfasst und lassen sich über Deinstallieren zurücksetzen.",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was diese Kategorie abdeckt",
"body": "Drei kleine, unabhängige Optionen: eine <strong>farbige Bash-Eingabeaufforderung mit Aliasen</strong> für die root-Shell, ein einzeiliges <strong>MOTD-Banner</strong> bei SSH-Anmeldung und Entfernung des <strong>Popups „Kein gültiges Abonnement“</strong>, das Proxmox bei jeder Web-Anmeldung zeigt."
},
"bashrc": {
"heading": "bashrc anpassen",
"intro": "Injiziert einen kuratierten Block in <code>/root/.bashrc</code> mit einer farbigen Eingabeaufforderung, Zeitstempel-Historie, Standard-<code>ls</code>/<code>grep</code>-Aliasen und einem <code>source</code> für die Bash-Vervollständigung. Macht das Arbeiten über SSH spürbar angenehmer und macht deutlich, auf welchem Host Sie sich befinden, wenn Sie viele Tabs geöffnet haben.",
"writesTitle": "Was ProxMenux zu .bashrc hinzufügt",
"writesOutro": "Der Block wird durch die <code>PMX_CORE_BASHRC</code>-Marker begrenzt. Das Ausführen des Skripts ersetzt den vorherigen Block, anstatt ihn zu duplizieren. Die ursprüngliche <code>.bashrc</code> wird einmal auf <code>/root/.bashrc.bak</code> gesichert, und eine <code>source /root/.bashrc</code>-Zeile wird an <code>/root/.bash_profile</code> angehängt, so dass die Aufforderung auch für Login-Shells gilt (z. B. nach <code>su -</code>).",
"rootTitle": "Gilt nur für root",
"rootBody": "Die Anpassung zielt auf die Shell des Root-Kontos ab. Andere Benutzer, die Sie auf dem Host erstellen, behalten ihre eigenen Standardeinstellungen. Wenn Sie Proxmox ausschließlich über die Web-Benutzeroberfläche verwalten und niemals die Shell verwenden, ist diese Option reine Ästhetik und Sie können sie überspringen."
},
"motd": {
"heading": "Richten Sie ein benutzerdefiniertes MOTD-Banner ein",
"intro": "Stellt <em>\"This system is optimised by: ProxMenux\"</em> an den Anfang von <code>/etc/motd</code>, der Nachricht nach erfolgreicher SSH-Anmeldung oberhalb der Shell-Eingabeaufforderung und vor den <code>update-motd</code>-Skripten. Harmlos und rein informativ — als schnelle sichtbare Bestätigung, dass ProxMenux auf diesem Host angewendet wurde.",
"writesTitle": "Was ProxMenux schreibt",
"writesOutro": "Bei der ersten Anwendung erfasst ProxMenux, ob <code>/etc/motd</code> existierte und speichert seinen ursprünglichen Inhalt unter <code>/usr/local/share/proxmenux</code>. Die Operation ist idempotent: Wenn die Markierungslinie bereits vorhanden ist, wird nichts hinzugefügt. Ältere Anlagen mit einem vorhandenen <code>/etc/motd.bak</code> werden in den gleichen reversiblen Zustand migriert."
},
"banner": {
"heading": "Abonnementbanner entfernen",
"intro": "Entfernt den Dialog <em>„Sie haben kein gültiges Abonnement für diesen Server“</em>, der bei jeder Anmeldung ohne Enterprise-Abonnement in der Proxmox-Weboberfläche erscheint. ProxMenux berücksichtigt die Version und startet das passende Skript für die unterschiedlichen UI-Pakete der Hauptversionen.",
"versionTitle": "Skriptauswahl nach Version",
"versionItems": [
"<strong>PVE 9.x</strong> führt <code>remove-banner-pve-v3.sh</code> aus (patcht sowohl die Desktop-<code>proxmoxlib.js</code> als auch die neue Yew-basierte mobile Benutzeroberfläche).",
"<strong>PVE 8.x</strong> führt <code>remove-banner-pve8.sh</code> aus (nur auf dem Desktop)."
],
"versionOutro": "Vor dem Patchen sichert ProxMenux die ursprünglichen JS/Template-Dateien mit einem Zeitstempel auf <code>/usr/local/share/proxmenux/backups/</code>. Der Deinstallationsfluss verwendet diese Backups, um die Originaldateien wiederherzustellen, und greift auf die Neuinstallation der Proxmox-Benutzeroberflächenpakete zurück, wenn das Backup fehlt oder beschädigt ist.",
"breakTitle": "Kann nach Proxmox Updates brechen",
"breakBody": "Proxmox-UI-Updates überschreiben regelmäßig <code>proxmoxlib.js</code>, wodurch der Hinweis zurückkehren kann. Sie können die Option danach erneut anwenden oder den Hinweis bis dahin hinnehmen. ProxMenux installiert außerdem einen APT-Hook zum automatischen erneuten Patchen bei Paket-Upgrades. Unter <link>Optimierungen deinstallieren</link> erfahren Sie, wie dieser Hook entfernt wird.",
"legalTitle": "Rechtliche Anmerkung (immer wiederholenswert)",
"legalBody": "Diese Option blendet nur den UI-Hinweis aus. Sie gewährt <strong>keinen</strong> Enterprise-Support oder Zugriff auf das Enterprise-Repository und ändert die Softwarelizenz nicht. Proxmox VE wird unter GNU AGPLv3 veröffentlicht. Ein Abonnement unterstützt das Projekt und ermöglicht den Enterprise-Updatekanal. Wählen Sie eine passende Supportstufe für Ihre Umgebung."
},
"verify": {
"heading": "Verifizierung",
"intro": "Nach Anwendung aller drei:",
"reversibleTitle": "Alle drei Anpassungsänderungen werden verfolgt",
"reversibleBody": "<link>Optimierungen deinstallieren</link> stellt <code>/root/.bashrc</code> wieder her, gibt MOTD zu seinem genauen Pre-ProxMenux-Inhalt zurück (oder entfernt die Datei, wenn sie vorher nicht existierte) und stellt die gepatchten UI-Dateien aus dem Backup wieder her oder installiert die betroffenen Proxmox-Pakete bei Bedarf neu."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Fakultativ",
"href": "/docs/post-install/optional",
"tail": " — Fastfetch und Figurine, weitere visuelle Anpassungen."
},
{
"label": "Versionsinformationen anzeigen",
"href": "/docs/settings/show-version-information",
"tail": " — bestätigt, dass die Anpassungen als installiert erfasst sind."
},
{
"label": "Optimierungen deinstallieren",
"href": "/docs/post-install/uninstall",
"tail": " — bashrc, motd und Abonnementhinweis zurücksetzen."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
@@ -0,0 +1,106 @@
{
"meta": {
"title": "Proxmox VE Post-Install-Script — Automatisiert und anpassbar | ProxMenux",
"description": "Überblick über die ProxMenux-Skripte nach der Installation von Proxmox VE. Das automatische Skript wendet sinnvolle Vorgaben ohne Rückfragen an. Mit dem anpassbaren Skript wählen Sie gezielt aus 10 Kategorien. Unter Optimierungen deinstallieren können unterstützte reversible Änderungen zurückgesetzt werden.",
"ogTitle": "Proxmox VE Post-Install-Script — Automatisiert und anpassbar",
"ogDescription": "Übliche Proxmox VE-Postinstallationsoptimierungen in 10-Kategorien anwenden - automatisiert oder à la carte mit reversiblen Optionen.",
"twitterTitle": "Proxmox VE Post-Install-Script | ProxMenux",
"twitterDescription": "Automatisierte und anpassbare Nachinstallationsoptimierungen für Proxmox VE – mit reversiblen Optionen."
},
"header": {
"title": "Post-Install Skripte",
"description": "Konfigurieren Sie einen neuen Proxmox VE-Host mit den ProxMenux-Optimierungen nach der Installation. Wenden Sie die Baseline automatisch an, wählen Sie einzelne Optionen aus, aktualisieren Sie installierte Funktionen oder stellen Sie unterstützte reversible Änderungen wieder her. Paket-Upgrades werden nicht als reversibel dargestellt.",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Wozu dieses Menü dient",
"body": "Direkt nach der Installation von Proxmox VE machen Dutzende kleine Änderungen den Host schneller und leichter wartbar: Repositories ohne Abonnement, sinnvolle journald-Limits und TCP-Puffer, SSD-schonende Protokollspeicherung, bashrc-Verbesserungen und mehr. ProxMenux automatisiert sie und erfasst die unterstützten reversiblen Konfigurationsänderungen."
},
"openingMenu": {
"heading": "Öffnen des Menüs",
"body": "Wählen Sie im Hauptmenü von ProxMenux <strong>Einstellungen nach der Installation von Proxmox</strong>. Folgendes wird angezeigt:",
"imageAlt": "Menü für Skripte nach der Installation: Automatisch, Anpassbar, der bedingte Eintrag Verfügbare Updates anwenden (nur bei ausstehenden Updates) und Deinstallieren, gefolgt von Community-Skripten"
},
"threeWays": {
"heading": "Vier Möglichkeiten, Optimierungen anzuwenden",
"body": "Die vier ProxMenux-Einträge nutzen denselben Code und dasselbe Register installierter Werkzeuge, bieten aber unterschiedliche Kontrolle. <em>Verfügbare Updates anwenden</em> erscheint nur, wenn für mindestens eine installierte Optimierung eine neuere Version auf dem Datenträger liegt als die registrierte. Direkt nach der Einrichtung bleibt der Eintrag verborgen."
},
"routes": [
{
"title": "Automatisch",
"description": "Eine sorgfältig ausgewählte Gruppe von 14 sicheren, stets nützlichen Optimierungen, die nacheinander ohne Rückfragen angewendet werden. Eine gute Vorgabe für die meisten Benutzer.",
"bullets": [
"Repositories ohne Abonnement + Systemupgrade",
"Speicher, Kernel, Netzwerk-Tuning",
"Log2RAM (automatisch auf SSD/NVMe erkannt)",
"Journald + Logrotate-Größenbeschränkungen",
"Persistente Schnittstellennamen"
]
},
{
"title": "Anpassbar",
"description": "Etwa 35 einzelne Optimierungen in 10 Kategorien. Sie wählen genau aus, welche angewendet werden. Dieselbe Grundlage wie Automatisch, aber mit voller Kontrolle.",
"bullets": [
"Auswahllisten pro Kategorie",
"Enthält alle Funktionen von Automatisch plus ausdrücklich auswählbare Optionen (IOMMU, Fastfetch, Figurine, Ceph, HA, AMD-Korrekturen …)",
"Beliebig oft ausführbar — die Änderungen sind idempotent"
]
},
{
"title": "Verfügbare Updates anwenden",
"description": "Liegt eine Nachinstallationsoptimierung (Log2Ram, Speichereinstellungen, Logrotate …) auf dem Datenträger in einer neueren Version vor als der auf dem Host erfassten, zeigt dieser Menüpunkt nur die betroffenen Optimierungen an. Er führt die jeweilige Funktion erneut aus und aktualisiert den gespeicherten Versionsstand. Alles andere bleibt unverändert.",
"bullets": [
"Jede Optimierung einzeln auswählen (nur geänderte)",
"Dieselbe Auswahl ist im Monitor-Dashboard verfügbar",
"Eine gemeinsame Benachrichtigung, wenn neue Updates verfügbar werden"
]
},
{
"title": "Optimierungen deinstallieren",
"description": "Unterstützte rückgängig machbare Änderungen werden in einer JSON-Datei erfasst und mit einer Wiederherstellungsfunktion verknüpft. Aktionen ohne sichere Rückkehrmöglichkeit, etwa ein vollständiges Paketupgrade, sind bewusst ausgeschlossen.",
"bullets": [
"Erkennt zuvor angewendete Optimierungen automatisch",
"Wählt für jeden Eintrag den passenden Rückweg: aus einem vorhandenen .bak-Backup wiederherstellen, den sysctl.d-Konfigurationsausschnitt löschen, wenn keine Sicherung nötig war, oder das unveränderte Originalpaket mit --force-confnew neu installieren (z. B. beim Abonnementbanner)",
"Neustartabfrage bei Bedarf (VFIO, persistente Namen usw.)"
]
}
],
"whichTitle": "Welches sollten Sie wählen?",
"whichBody": "Bei einer neuen Proxmox-Installation mit sinnvollen Grundeinstellungen ohne Entscheidungen: <autoLink><strong>Automatisch</strong></autoLink>. Wenn Sie die gewünschten oder unerwünschten Anpassungen schon kennen: <customLink><strong>Anpassbar</strong></customLink>. Für eine bereits angewendete Optimierung, deren neuere Version auf dem Datenträger liegt: <updatesLink><strong>Verfügbare Updates anwenden</strong></updatesLink>. Zum sauberen Zurücksetzen früherer Änderungen: <uninstallLink><strong>Optimierungen deinstallieren</strong></uninstallLink>. Sie können kombinieren: zuerst Automatisch, dann unter Anpassbar Optionen wie Fastfetch oder IOMMU hinzufügen und später einzelne Einträge zurücksetzen.",
"mixing": {
"heading": "Mischen mit anderen Post-Installation-Scripts",
"stackTitle": "Stapeln Sie nicht mehrere Post-Installationsskripte",
"stackBody": "Das Ausführen mehrerer Post-Installationsskripte auf demselben Host kann doppelte Konfigurationsdateien, widersprüchliche sysctl-Einträge oder, schlimmer noch, defekte Netzwerke nach dem Neustart verursachen. Wenn Sie das <strong>Helper-Scripts Post Install</strong> bereits angewendet haben, können sich einige ProxMenux-Optimierungen mit dem bereits konfigurierten überschneiden. Bleiben Sie bei einem Post-Installations-Tool pro Host.",
"xshokTitle": "xshok-proxmox: veraltet",
"xshokBody": "Frühere Versionen von ProxMenux verwies auf <a>xshok-proxmox</a> als Begleitwerkzeug nach der Installation. Dieses Projekt ist jetzt veraltet und wird nicht mehr von ProxMenux angeboten. Wenn ein früherer Lauf von xshok-proxmox Markierungen auf dem Host hinterlassen hat, erkennt ProxMenux sie immer noch und wird Sie warnen - aber es ist nicht etwas, das Sie heute neben ProxMenux installieren sollten."
},
"community": {
"heading": "Gemeinschaftsskripte",
"body": "Das Menü bietet zwei Drittanbieterskripte aus dem Projekt <a>community-scripts</a>: <em>Proxmox VE Post Install</em> und <em>Proxmox VE Microcode</em>. Die Wrapper laden die Originalskripte mit <code>wget | bash</code> herunter und führen sie aus. ProxMenux pflegt sie nicht. Lesen Sie vor der Ausführung <link>Externe Repositories</link> für Details und Hinweise zur Vertrauenswürdigkeit."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Proxmox-Systemupdate",
"href": "/docs/utils/system-update",
"tail": " — hält den Host nach der Ersteinrichtung aktuell."
},
{
"label": "Sicherheit",
"href": "/docs/security",
"tail": "- Fail2Ban + Lynis oben auf der Nachinstallationshärtung."
},
{
"label": "Versionsinformationen anzeigen",
"href": "/docs/settings/show-version-information",
"tail": " — zeigt, welche Komponenten nach der Installation als installiert erfasst sind."
},
{
"label": "Befehle für Updates und Pakete",
"href": "/docs/help-info/update-commands",
"tail": " — Referenz für apt / pveupgrade."
}
]
}
}
@@ -0,0 +1,56 @@
{
"meta": {
"title": "Nach der Installation: Überwachung | ProxMenux-Dokumentation",
"description": "Überwachungsoptionen im ProxMenux anpassbaren Post-Installationsskript. Derzeit eine einzige Option: OVH Real-Time Monitoring (RTM) installieren, das nur aktiviert wird, wenn der Host als OVH-Server erkannt wird."
},
"header": {
"title": "Nach der Installation: Überwachung",
"description": "Überwachungsoptionen im anpassbaren Skript nach der Installation. Diese kleine, anbieterspezifische Kategorie installiert den OVH-Real-Time-Monitoring-Agenten auf dedizierten OVH-Servern und tut auf anderen Hosts nichts.",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Zweckgebundener enger Anwendungsbereich",
"body": "Die Überwachung nach der Installation beschränkt sich auf <strong>einen anbieterspezifischen Agenten</strong>. Allgemeine Überwachung mit Prometheus, Grafana oder node_exporter gehört nicht dazu, da Entscheidungen über einen separaten Host, Datenaufbewahrung und Alarmziele nicht in einen Ein-Klick-Schritt passen. Der mitgelieferte ProxMenux Monitor erfüllt den Großteil dieser Aufgabe ohne externen Agenten."
},
"ovh": {
"heading": "Installation von OVH Real-Time Monitoring (RTM)",
"intro": "Wenn Ihr Proxmox-Host ein dedizierter Server ist, der von <a>OVHcloud</a> gemietet wird, können Sie RTM aktivieren, um Hardware-Telemetrie (CPU-Temperatur, PSU-Status, Festplatte SMART, RAID-Controller-Zustand usw.) dem OVH-Bedienfeld auszusetzen. Dies ist der gleiche Agent, den OVH für seine eigene \"Server Monitoring\" -Funktion verwendet.",
"decisionsTitle": "Wie ProxMenux entscheidet",
"decisionsItems": [
"Ermittelt die öffentliche IP-Adresse des Hosts mit <code>curl ipinfo.io/ip</code>.",
"Sucht den besitzenden ISP mit einer <code>whois</code>-Abfrage zu <code>v4.whois.cymru.com</code> nach.",
"Wenn das Ergebnis OVH nennt, lädt es <code>last-public-ovh-infra-yak.snap.mirrors.ovh.net/yak/archives/apply.sh</code> herunter und leitet es mit dem Puppet-Manifest für RTM v2 an <code>bash</code> weiter.",
"Wenn im Ergebnis OVH <em>nicht</em> erwähnt wird, ist nichts installiert. Die Option ist eine No-Op."
],
"remoteTitle": "Remote-Skript per Pipe an bash übergeben",
"remoteBody": "Die Installation läuft <code>wget -qO - https://…apply.sh | bash</code>. Wenn der OVH-Spiegel jemals kompromittiert wird, wird das Skript als root auf Ihrem Host ausgeführt. Bevor Sie diese Option aktivieren, entscheiden Sie, ob Sie der Spiegelkette von OVH mehr vertrauen als der Überwachung, die Sie erhalten. Für die meisten Heimlabor- oder Nicht-OVH-Benutzer sollte diese Option einfach ausgeschaltet bleiben.",
"noOpTitle": "Nur aktivieren, wenn der Host tatsächlich bei OVH ist",
"noOpBody": "Die Option ist ein No-Op auf Nicht-OVH-Servern, so dass das Ankreuzen auf einem Heimlabor Proxmox nichts kaputt macht. Auf einem Nicht-OVH-Host druckt das Skript <em>\"Kein OVH-Server, überspringt die RTM-Installation\"</em> und verlässt es sauber; es werden keine Pakete installiert.",
"runsTitle": "Was ProxMenux ausführt",
"verifyTitle": "Verifizierung",
"verifyBody": "Auf einem echten OVH-Host sollten Sie nach einem Neustart das <a>RTM-Dashboard</a> in Ihrem OVH-Manager sehen, das mit Live-Daten für den Host gefüllt ist. Auf der Proxmox-Seite ist der RTM-Sammler ein systemd-Service - überprüfen Sie es direkt:",
"troubleTitle": "Fehlerbehebung",
"revertTitle": "RTM über das Menü Deinstallieren entfernen",
"revertBody": "Ist RTM als installiert registriert, bietet Optimierungen deinstallieren einen Eintrag für OVH Real-Time Monitoring. Er führt <code>apt-get purge -y ''ovh-rtm*'' ''rtm'' ''rtm-*''</code> aus, löscht /etc/rtm und markiert RTM als deinstalliert. Puppet-Reste müssen eventuell manuell bereinigt werden; prüfen Sie RTM-spezifische Manifeste unter <code>/etc/puppet/</code>. Auf einem Nicht-OVH-Host wurden keine RTM-Pakete installiert, daher ist nichts zu entfernen."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "ProxMenux Monitor",
"href": "/docs/settings/proxmenux-monitor",
"tail": "- lokales Web-Dashboard für den Host (funktioniert bei jedem Anbieter, nicht nur OVH)."
},
{
"label": "Nützliche Systembefehle",
"href": "/docs/help-info/system-commands",
"tail": "– Referenz zur Überwachung des lokalen Hosts."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
@@ -0,0 +1,128 @@
{
"meta": {
"title": "Post-Install: Netzwerk | ProxMenux Dokumentation",
"description": "Netzwerkoptionen im anpassbaren Nachinstallationsskript von ProxMenux: APT über IPv4 erzwingen, ein abgestimmtes sysctl-Profil anwenden, Open vSwitch installieren, TCP BBR + Fast Open aktivieren und Schnittstellennamen an MAC-Adressen binden."
},
"header": {
"title": "Post-Install: Netzwerk",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was diese Kategorie abdeckt",
"body": "Fünf unabhängige Netzwerkoptionen: Zwei sind einfach (<strong>APT über IPv4</strong>, <strong>Open vSwitch installieren</strong>), zwei passen das TCP-Verhalten an (<strong>Netzwerk-sysctl-Profil</strong>, <strong>BBR + Fast Open</strong>). Eine behebt ein häufiges Betriebsproblem: <strong>Schnittstellennamen fest zuweisen</strong>, damit eine neue Netzwerkkarte oder ein BIOS-Update <code>enp3s0</code> nicht in <code>enp4s0</code> umbenennt und Ihre Bridges unterbricht."
},
"ipv4": {
"heading": "Erzwingen Sie, dass APT IPv4 verwendet",
"intro": "Schreibt <code>Acquire::ForceIPv4 \"true\";</code> in <code>/etc/apt/apt.conf.d/99-force-ipv4</code>. APT weigert sich dann, IPv6 für Paketdownloads zu verwenden, auch wenn der Host über IPv6-Konnektivität verfügt.",
"tipTitle": "Wer profitiert",
"tipBody": "Hilfreich bei instabilen oder gegenüber IPv4 langsameren IPv6-Verbindungen oder wenn der Debian-/Proxmox-Spiegel gelegentlich über IPv6 ausfällt. Auf Hosts ohne IPv6 unproblematisch. In einem funktionierenden Dual-Stack-Netz sorgt es für vorhersehbares Verhalten: apt überrascht Sie nicht mit einer IPv6-Zeitüberschreitung."
},
"sysctl": {
"heading": "Netzwerkoptimierungen anwenden",
"intro": "Schreibt ein abgestimmtes sysctl-Profil nach <code>/etc/sysctl.d/99-network.conf</code>. Es umfasst Socket-Puffer des Kernels, ICMP-Härtung, grundlegenden Schutz vor Adressfälschung und TCP-Puffergrößen für einen Hypervisor mit vielen gleichzeitigen Datenströmen.",
"tunedTitle": "Was angepasst wird",
"headerArea": "Thema",
"headerSettings": "Schlüsseleinstellungen",
"rows": [
{
"area": "Socket-Puffer des Kernels",
"settings": "<code>netdev_max_backlog=8192</code>, <code>rmem_max=16M</code>, <code>wmem_max=16M</code>, <code>somaxconn=8192</code>"
},
{
"area": "ICMP-Härtung",
"settings": "<code>icmp_echo_ignore_broadcasts=1</code>, <code>icmp_ignore_bogus_error_responses=1</code>"
},
{
"area": "Routing-Sicherheit",
"settings": "<code>accept_redirects=0</code>, <code>accept_source_route=0</code>, <code>secure_redirects=0</code>, <code>send_redirects=0</code>, <code>log_martians=0</code>"
},
{
"area": "Rückwärtspfadfilter",
"settings": "<code>rp_filter=2</code> (lockerer Modus, siehe Hinweis unten)"
},
{
"area": "TCP",
"settings": "<code>tcp_mtu_probing=1</code>, <code>tcp_rfc1337=1</code>, <code>tcp_sack=1</code>, <code>tcp_rmem=8K/87K/16M</code>, <code>tcp_wmem=8K/64K/16M</code>"
},
{
"area": "Ports",
"settings": "<code>ip_local_port_range=1024 65535</code> (Bereich kurzlebiger Ports)"
},
{
"area": "Unix-Sockets",
"settings": "<code>net.unix.max_dgram_qlen=4096</code>"
}
],
"sourceOutro": "Es fügt auch <code>source /etc/network/interfaces.d/*</code> zu <code>/etc/network/interfaces</code> hinzu, wenn nicht bereits vorhanden - Standardpraxis, so dass Sie modulare Schnittstellensnippets ablegen können, ohne die Hauptdatei zu bearbeiten.",
"fwbrTitle": "Automatisches Tuning von virtuellen Firewall Bridges",
"fwbrBody": "Zusätzlich zum sysctl-Profil installiert ProxMenux das Hilfsskript <code>/usr/local/sbin/proxmenux-fwbr-tune</code>. Es setzt <code>rp_filter=0</code> und <code>log_martians=0</code> für die Schnittstellen <code>fwbr*</code> / <code>fwln*</code> / <code>fwpr*</code> / <code>tap*</code>, die Proxmox für VMs und Container erstellt. Die einmalig ausgeführte Unit <code>proxmenux-fwbr-tune.service</code> ruft es beim Booten auf, die Regel <code>/etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules</code> bei jedem <code>net add</code>-Ereignis mit diesen Präfixen. So werden auch bei VM-Start/-Stopp, Neustart und Live-Migration neu erstellte Schnittstellen erfasst. Direkt nach der Installation verarbeitet das Skript zudem alle bereits vorhandenen Schnittstellen.",
"rpFilterTitle": "Warum rp_filter=2 (lose) statt 1 (streng)",
"rpFilterBody": "Strenge Rückwärtspfadfilterung verwirft Pakete, deren Quelladresse über eine <em>andere</em> Schnittstelle erreichbar wäre. Das ist ein sinnvoller Standard für Clients, kann aber auf einem Proxmox-Host Probleme verursachen: VM-Verkehr kommt häufig über eine Bridge an und geht bei asymmetrischem Routing über einen Uplink hinaus. <code>rp_filter=2</code> (locker) verwirft nur Pakete mit tatsächlich nicht erreichbaren Quelladressen. Der Kompromiss: etwas geringere Erkennung lokaler IP-Adressfälschung, dafür ein funktionierendes VM-Netz."
},
"ovs": {
"heading": "Open vSwitch installieren",
"intro": "Installiert <code>openvswitch-switch</code> + <code>openvswitch-common</code>. Damit steht OVS als Alternative zu den standardmäßigen Linux-Bridges von Proxmox bereit. Die Installation allein ändert keine Netzwerkkonfiguration; vorhandene <code>vmbrX</code>-Bridges funktionieren weiter. Wenn Sie eine neue Bridge <em>erstellen</em>, können Sie OVS im Typ-Auswahlmenü der Proxmox-Oberfläche wählen.",
"tipTitle": "Wenn OVS Sinn macht",
"tipBody": "Ziehen Sie OVS in Betracht, wenn Sie <strong>VLAN-Trunking mit nicht zusammenhängenden VLAN-IDs</strong>, <strong>LACP mit LLDP in bestimmten Modi</strong>, <strong>feingranulare Programmierung von Datenflüssen</strong> (OpenFlow) oder die Zusammenarbeit mit SDN-Controllern benötigen. Für ein Heimlabor mit wenigen VLANs und einem LACP-Uplink sind Linux-Bridges + <code>vmbrX.VID</code> einfacher und gut geeignet.",
"revertTitle": "Reversibel aus dem Menü Deinstallieren",
"revertBody": "OVS wird erfasst. <link>Optimierungen deinstallieren</link> führt <code>apt purge</code> für <code>openvswitch-switch</code> und <code>openvswitch-common</code> aus. Migrieren Sie OVS-Bridges <em>vor</em> der Deinstallation zu Linux-Bridges, sonst verlieren die VMs darauf beim nächsten Start die Netzwerkanbindung. Manuelles Äquivalent:"
},
"bbr": {
"heading": "TCP BBR + TCP Fast Open aktivieren",
"intro": "Schreibt zwei sysctl-Dateien und lädt sie neu. BBR ersetzt CUBIC durch Googles bandbreitenbasierten Überlastungsalgorithmus, der Verbindungen mit hoher Kapazität und Latenz sowie verlustbehaftete Verbindungen besser verarbeitet. TCP Fast Open (TFO) spart bei wiederholten TCP-Verbindungen einen Umlauf, indem bereits der SYN Daten mitführt.",
"verifyTitle": "Verifizierung",
"impactTitle": "Die Wirkung hängt von der Arbeitslast ab",
"impactBody": "BBR ist bei hoher Latenz oder Paketverlust besonders hilfreich (kontinentübergreifende Replikation, VPN-Tunnel, mobile Clients). Im LAN zwischen zwei Rechnern am selben Switch liegt der Unterschied oft innerhalb der Messschwankungen. TFO hilft besonders bei kurzen, wiederholten HTTP-Verbindungen.",
"revertTitle": "Reversibel aus dem Menü Deinstallieren",
"revertBody": "BBR/TFO werden erfasst. <link>Optimierungen deinstallieren</link> entfernt die zwei sysctl-Dateien (<code>/etc/sysctl.d/99-kernel-bbr.conf</code> und <code>99-tcp-fastopen.conf</code>) und lädt die übrige Konfiguration neu. Das Löschen setzt aktive Kernelwerte nicht automatisch zurück. Standards wie <code>cubic</code> und <code>tcp_fastopen=1</code> gelten nach einem Neustart, sofern keine andere Konfiguration sie überschreibt. Manuelles Äquivalent:"
},
"names": {
"heading": "Schnittstellennamen (persistent)",
"intro": "Durchläuft alle physischen Netzwerkkarten des Hosts (überspringt Loopback, Docker-veths, Bridges, TAP-Geräte, Bonds, Cilium, ZeroTier und WireGuard). Für jede schreibt es eine systemd-<code>.link</code>-Datei, die den aktuellen Namen an die aktuelle MAC-Adresse bindet. Damit hat die MAC-Zuordnung Vorrang vor der Namenslogik des Kernels.",
"whyTitle": "Warum das wichtig ist",
"whyItems": [
"Das Hinzufügen oder Entfernen von PCIe-Geräten kann die Busnummerierung verschieben und <code>enp3s0</code> in <code>enp4s0</code> verwandeln. Wenn Ihr <code>/etc/network/interfaces</code> auf den alten Namen verweist, verschwindet die Brücke beim Neustart.",
"BIOS / Firmware-Updates ändern manchmal, wie Geräte aufgezählt werden, mit dem gleichen Effekt.",
"Das Hilfsskript schreibt <code>.link</code>-Dateien für physische Netzwerkkarten, auch für Bond-Ports, mit der MAC, die sysfs gerade meldet; bei Bond-Ports kann das die gemeinsame MAC des Bonds sein, prüfen Sie ihre Namen daher nach einem Neustart. Virtuelle Schnittstellen wie LXC-veth-Geräte und die Bond-Geräte selbst werden übersprungen. Namenskonflikte virtueller <code>hotplug</code>-NICs behebt es nicht."
],
"writtenTitle": "Was geschrieben wird",
"writtenIntro": "Eine Datei pro physischem NIC, bei <code>/etc/systemd/network/10-proxmenux-&lt;iface&gt;.link</code>. Jede Datei beginnt mit dem Header <code># Managed by ProxMenux — do not edit</code>, so dass ProxMenux seine eigenen Dateien von benutzer- oder paketgebundenen <code>.link</code>-Dateien unterscheiden kann.",
"writtenOutro": "<code>.link</code>-Dateien anderer Pakete oder des Benutzers bleiben erhalten; nur Dateien mit ProxMenux-Header werden verwaltet. Bei erneutem Ausführen gleicht die Funktion ihren Bestand ab: Sie liest <code>MACAddress=</code> aus jeder <code>10-proxmenux-*.link</code> und entfernt Dateien, deren MAC unter <code>/sys/class/net/</code> nicht mehr vorkommt. Dateien älterer ProxMenux-Versionen im Format <code>10-&lt;iface&gt;.link</code> werden beim ersten Lauf automatisch migriert.",
"pveTitle": "PVE 9 vs PVE 8",
"pveBody": "Das Skript nutzt systemd-<code>.link</code>-Dateien für feste Namen. Auf Proxmox VE 9 lädt es danach zusätzlich udev-Regeln neu, damit eine bereits festgelegte NIC, die erneut angeschlossen oder erkannt wird, ihre Regel ohne Neustart übernimmt. Prüfen Sie vorhandene Schnittstellen nach einem Neustart auf PVE 8 und PVE 9. Der Host bleibt bei <code>ifupdown2</code>. In beiden Fällen setzt das Skript das Neustart-Flag, damit die anpassbare Nachinstallation danach fragt.",
"reviewTitle": "Überprüfen Sie zuerst bestehende /etc/network/interfaces",
"reviewBody": "Verweist die ältere Konfiguration in <code>/etc/network/interfaces</code> auf automatisch vom Kernel erzeugte NIC-Namen, ist das Festschreiben der <em>aktuellen</em> Namen sinnvoll. Haben Sie die Konfiguration bereits manuell an bestimmte Namen angepasst, prüfen Sie vor dem Neustart sorgfältig, ob die festen Namen mit der interfaces-Datei übereinstimmen.",
"revertTitle": "Reversibel aus dem Menü Deinstallieren",
"revertBody": "<link>Optimierungen deinstallieren</link> löscht nur <code>10-proxmenux-*.link</code>-Dateien mit ProxMenux-Header aus <code>/etc/systemd/network/</code>. Jede vom Benutzer oder anderen Paketen hinzugefügte <code>.link</code>-Datei bleibt erhalten. Beim nächsten Neustart gilt wieder das Standard-Namensverhalten von systemd."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Netzwerkmanagement",
"href": "/docs/network",
"tail": " — Diagnose, Bridge-Analyse und geführte Reparaturen."
},
{
"label": "Persistente Schnittstellennamen",
"href": "/docs/network/persistent-names",
"tail": " — dieselbe Funktion später als eigener Menüpunkt; verwenden Sie eine der beiden Möglichkeiten."
},
{
"label": "Referenz der Netzwerkbefehle",
"href": "/docs/help-info/network-commands",
"tail": " — ip, ss, ethtool, sysctl."
},
{
"label": "Optimierungen deinstallieren",
"href": "/docs/post-install/uninstall",
"tail": " — diese Netzwerkänderungen rückgängig machen."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
@@ -0,0 +1,177 @@
{
"meta": {
"title": "ProxMenux Post-Install: Optionale Einstellungen",
"description": "Anleitung zu optionalen Einstellungen im ProxMenux-Skript nach der Installation für zusätzliche Proxmox VE-Funktionen und -Optimierungen.",
"ogTitle": "ProxMenux Post-Install: Optionale Einstellungen",
"ogDescription": "Anleitung zu optionalen Einstellungen im ProxMenux-Skript nach der Installation für zusätzliche Proxmox VE-Funktionen und -Optimierungen.",
"ogImageAlt": "ProxMenux Optionale Einstellungen nach der Installation"
},
"title": "Optionale Einstellungen",
"intro": "Die Kategorie <strong>Optionale Einstellungen</strong> bietet zusätzliche Funktionen und Optimierungen für Ihre Proxmox-VE-Installation. Sie sind nicht unbedingt erforderlich, können aber in bestimmten Situationen die Fähigkeiten des Systems erweitern.",
"available": "Verfügbare optionale Funktionen",
"stepLabel": "Schritt",
"ceph": {
"title": "Aktuelle Ceph Unterstützung hinzufügen",
"intro": "Diese Option installiert die neueste Ceph-Speichersystemunterstützung für Proxmox VE. Ceph ist ein verteiltes Speichersystem, das hohe Leistung, Zuverlässigkeit und Skalierbarkeit bietet.",
"doesIntro": "Was sie tut:",
"doesItems": [
"Fügt das Ceph-Repository zu Ihrem System hinzu",
"Paketlisten aktualisieren",
"Installiert Ceph-Pakete mit dem Befehl 'pveceph install'",
"Überprüft die Installation"
],
"howUse": "Verwendung: Nach der Installation können Sie den Ceph-Speicher mit der Proxmox VE-Weboberfläche oder den Befehlszeilentools konfigurieren und verwalten.",
"automates": "Diese Anpassung automatisiert die folgenden Befehle:"
},
"amd": {
"title": "AMD-CPU-Korrekturen anwenden",
"intro": "Diese Option wendet spezifische Korrekturen für AMD EPYC und Ryzen CPUs an, um die Stabilität und Kompatibilität zu verbessern.",
"doesIntro": "Was sie tut:",
"doesItems": [
"Erkennen, ob ein AMD EPYC oder Ryzen CPU vorhanden ist",
"Wendet den Kernelparameter 'idle=nomwait' an, um zufällige Abstürze zu verhindern (über /etc/kernel/cmdline auf systemd-Boot-Hosts oder /etc/default/grub auf GRUB-Hosts — mit einem .bak des Originals)",
"Konfiguriert KVM, um bestimmte MSRs (Model Specific Registers) für eine bessere Windows-Gastkompatibilität zu ignorieren"
],
"howUse": "Verwendung: Diese Fixes werden automatisch angewendet und erfordern einen Systemneustart.",
"automates": "Diese Anpassung automatisiert die folgenden Befehle:"
},
"ha": {
"title": "Hochverfügbarkeitsdienste ermöglichen",
"intro": "Diese Option ermöglicht High Availability (HA)-Dienste in Proxmox VE und ermöglicht ein automatisches Failover von VMs und Containern im Falle eines Knotenausfalls.",
"doesIntro": "Was sie tut:",
"doesItems": [
"Aktiviert und startet den Dienst pve-ha-lrm (Local Resource Manager)",
"Aktiviert und startet den pve-ha-crm (Cluster Resource Manager) Service",
"Aktiviert und startet den corosync-Dienst für die Clusterkommunikation"
],
"howUse": "Verwendung: Nach Aktivierung dieser Dienste können Sie HA-Gruppen und -Ressourcen in der Proxmox VE-Weboberfläche konfigurieren.",
"automates": "Diese Anpassung automatisiert die folgenden Befehle:"
},
"pveam": {
"title": "Proxmox VE Appliance Manager aktualisieren",
"intro": "Aktualisiert den lokalen Index der Containervorlagen, den <code>pveam</code> in der Proxmox-Oberfläche bereitstellt. So ist die Liste der verfügbaren Softwarevorlagen beim nächsten Erstellen eines LXC aktuell.",
"doesIntro": "Was sie tut:",
"doesItems": [
"Führt <code>pveam update</code> gegen die Proxmox-Spiegelserver aus, um den aktuellen Katalog der Softwarevorlagen abzurufen",
"Füllt die Liste der Softwarevorlagen in der Weboberfläche beim Erstellen eines Containers"
],
"howUse": "Verwendung: Einmal ausführen, wenn die Vorlagenliste in der Oberfläche veraltet wirkt oder Sie den Spiegelserver gewechselt haben. Es lädt nur den Katalogindex herunter, nicht die Vorlagen selbst.",
"automates": "Diese Anpassung automatisiert den folgenden Befehl:"
},
"fastfetch": {
"title": "Installieren und Konfigurieren von Fastfetch",
"intro": "Diese Option installiert und konfiguriert leise Fastfetch, ein Systeminformationstool, das Systemspezifikationen und ein benutzerdefiniertes Logo beim Login anzeigt.",
"doesLabel": "Was sie tut:",
"doesItems": [
"Lädt und installiert die neueste Fastfetch-Version ohne zusätzliche Rückfragen",
"Ermöglicht Ihnen die Auswahl eines benutzerdefinierten Logos (<strong>ProxMenux, Proxmox, Helper-Scripts, Home-Labs-Club, Proxmology</strong> oder ein benutzerdefiniertes).",
"Konfiguriert Fastfetch zur Anzeige von <em>\"System optimiert durch ProxMenux\"</em>",
"Richtet Fastfetch so ein, dass es automatisch bei der Konsolenanmeldung ausgeführt wird"
],
"importantLabel": "Wichtig:",
"importantBody": "Wenn Sie sich über SSH mit Proxmox verbinden, sollten Sie das <strong>Proxmox</strong>-Logo auswählen oder ein benutzerdefiniertes mit <code>jp2a</code> oder <code>img2txt</code> erstellen. Die anderen Logos werden mit <code>chafa</code> generiert und werden in einer Standard-SSH-Sitzung möglicherweise nicht korrekt angezeigt.",
"customLabel": "Eigene Logos:",
"customBody1": "Um ein benutzerdefiniertes Logo zu verwenden, legen Sie Ihre ASCII-Kunsttextdatei in: <code>/usr/local/share/fastfetch/logos/</code>",
"customBody2": "Sie können benutzerdefinierte Logos mit Tools wie <code>chafa</code>, <code>jp2a</code> oder <code>img2txt</code> erstellen.",
"customBody3": "Für beste Ergebnisse:",
"customItems": [
"Halten Sie die Logohöhe auf 35-Linien oder weniger, um Proportionen beizubehalten und in das Terminal zu passen",
"Verwenden Sie <code>chafa</code> für Farblogos (in SSH-Sitzungen möglicherweise nicht korrekt angezeigt)",
"Verwenden Sie <code>jp2a</code> oder <code>img2txt</code> für SSH-kompatible Logos"
],
"examplesLabel": "Beispiel Logos:",
"logos": [
{
"name": "ProxMenux",
"alt": "ProxMenux-Logo",
"src": "https://macrimi.github.io/ProxMenux/fastfetch/proxmenux.png"
},
{
"name": "Proxmox",
"alt": "Proxmox-Logo",
"src": "https://macrimi.github.io/ProxMenux/fastfetch/proxmox.png"
},
{
"name": "JC Channel",
"alt": "JC-Channel-Logo",
"src": "/fastfetch/jc-channel.png"
},
{
"name": "Helper-Scripts",
"alt": "Helper-Scripts-Logo",
"src": "https://macrimi.github.io/ProxMenux/fastfetch/helper-scripts.png"
},
{
"name": "Home-Labs-Club",
"alt": "Home-Labs-Club-Logo",
"src": "https://macrimi.github.io/ProxMenux/fastfetch/home-labs-club.png"
},
{
"name": "Proxmology",
"alt": "Proxmology-Logo",
"src": "https://macrimi.github.io/ProxMenux/fastfetch/proxmology.png"
}
],
"automates": "Diese Anpassung automatisiert die folgenden Befehle:"
},
"figurine": {
"title": "Installieren und Konfigurieren von Figurine",
"intro": "Diese Option installiert und konfiguriert Figurine, ein Tool, das stilvolle ASCII-Textbanner für Ihr Terminal erstellt und Ihren Hostnamen in einem optisch ansprechenden 3D-Format anzeigt.",
"doesLabel": "Was sie tut:",
"doesItems": [
"Lädt Figurine v2.1.1 von GitHub herunter und installiert die passende Version für die Host-Architektur (AMD64, ARM64 oder ARMv7)",
"Erstellen Sie eine Begrüßungsnachricht, die Ihren Hostnamen in 3D ASCII-Kunst anzeigt, wenn Sie sich anmelden",
"Aktualisiert eine vorhandene Figurine-Programmdatei erst nach erfolgreichem Download und Entpacken",
"Richtet die Willkommensnachricht so ein, dass sie automatisch beim Login ausgeführt wird"
],
"practicalLabel": "Praktische Verwendung:",
"practicalBody": "Beim Verwalten mehrerer Proxmox-Knoten in einem Cluster bietet Figurine eine sofortige visuelle Anzeige, an welchem Knoten Sie gerade angemeldet sind. Dies verhindert versehentliche Befehle auf dem falschen Knoten und verbessert Ihren Workflow bei der Verwaltung mehrerer Server.",
"exampleLabel": "Beispielausgabe:",
"imageAlt": "Figurine Beispielausgabe",
"automates": "Diese Anpassung automatisiert den folgenden Prozess:",
"outro": "Nach der Installation wird Ihr Hostname bei jeder Anmeldung in 3D ASCII-Kunst angezeigt, wodurch sofort klar wird, an welchem Proxmox-Knoten Sie arbeiten."
},
"log2ram": {
"title": "Log2RAM installieren (SSD/NVMe Verschleißreduzierung)",
"intro": "Log2RAM bindet <code>/var/log</code> als tmpfs-RAM-Disk ein und synchronisiert regelmäßig auf den Datenträger. Das Puffern häufiger journald-Schreibvorgänge im RAM kann SSD-Verschleiß und Datenträger-I/O verringern. Synchronisierung und sauberes Herunterfahren sichern die Logs; bei abruptem Stromausfall können Einträge seit der letzten Synchronisierung verloren gehen.",
"upstreamLabel": "Vorgelagertes Projekt:",
"upstreamUrl": "https://github.com/azlux/log2ram",
"upstreamLinkLabel": "azlux/log2ram auf GitHub",
"doesLabel": "Was ProxMenux tut:",
"doesItems": [
"Erkennt anhand von <code>/sys/block/&lt;dev&gt;/queue/rotational</code>, ob die Systemplatte SSD/NVMe ist. Bei einer rotierenden Festplatte fragt die automatisierte Variante vor der Installation nach.",
"Klont das Originalprojekt (<code>azlux/log2ram</code>) nach <code>/tmp/log2ram</code> und passt <code>install.sh</code> an: <code>rsync -aAXv</code> wird durch <code>rsync -aXv --no-acls</code> ersetzt. Dadurch wird der Fehler <em>set_acl: Operation not supported</em> mit Exitcode 23 vermieden, der beim Verschieben von /var/log auf Dateisystemen ohne ACL-Unterstützung auftreten kann. Die systemd-Unit <code>log2ram</code> wird nach Installation aktiviert.",
"Größe der Ramdisk auf Basis des Hosts RAM: <code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>&gt; 16 GB → 512M</code>. Schreibt den Wert in <code>SIZE=</code> in <code>/etc/log2ram.conf</code>.",
"Plant eine regelmäßige Datenträgersynchronisierung über <code>/etc/cron.d/log2ram</code>: alle 1 / 3 / 6 Stunden entsprechend derselben RAM-Stufe.",
"Installiert den Schutz <code>/usr/local/bin/log2ram-check.sh</code>, der über <code>/etc/cron.d/log2ram-auto-sync</code> alle 10 Minuten läuft. Bei 80% Belegung von <code>/var/log</code> bereinigt er journald. Bei 92% führt er zunächst <code>logrotate -f /etc/logrotate.d/proxmox-backup-api</code> aus, falls die Datei existiert: Die PBS-API-Logs sind oft der größte Platzverbraucher auf einem PBS-Host. Danach kürzt er <code>pveproxy access/error</code> und <code>pveam.log</code> vor der Synchronisierung. <code>log2ram write</code> allein kopiert tmpfs auf Disk, verkleinert es aber nicht. Der Schutz hilft gegen PVE-Ausfälle mit <em>No space left on device</em> durch unkontrolliertes Logwachstum.",
"Erkennt den Dienst <code>proxmox-backup-server</code> auf dem Host. Falls vorhanden, erstellt es <code>/etc/logrotate.d/proxmox-backup-api</code> (20 MB × 3 Rotationen) und <code>/etc/cron.hourly/proxmox-backup-logrotate</code>, damit die häufig stark wachsenden PBS-API-Logs auch zwischen Log2RAM-Synchronisierungen begrenzt werden. Ohne PBS erfolgt keine Änderung.",
"Stellt systemd-journald-Grenzwerte (<code>SystemMaxUse</code>, <code>RuntimeMaxUse</code>) so ein, dass sie in die Ramdisk passen, so dass ein einzelner Burst sie nicht füllen kann.",
"Wird in <code>installed_tools.json</code> erfasst und kann über Optimierungen deinstallieren rückgängig gemacht werden."
],
"howUseLabel": "Wie zu verwenden:",
"howUseBody": "Die automatisierte Variante installiert Log2RAM unbeaufsichtigt bei erkanntem SSD-/NVMe-Systemlaufwerk. Die anpassbare Variante fragt nach Größe, Intervall und Auto-Sync-Schutz. Die Abfrage nennt derzeit 90%, das erzeugte Skript nutzt jedoch 80% für Bereinigung und 92% für die oben beschriebene intensive Bereinigung.",
"verifyLabel": "Überprüfen und Verwalten aus der Shell:",
"verifyCode": "# Service state and configured timers\nsystemctl status log2ram\nsystemctl list-timers log2ram*\n\n# Current ramdisk usage — /var/log IS the tmpfs itself\ndf -h /var/log\n\n# Force a sync now (tmpfs → disk); does NOT shrink the tmpfs\nlog2ram write\n\n# Trigger the auto-sync guard on demand (vacuum + sync when usage is high)\n/usr/local/bin/log2ram-check.sh\n\n# Current config: SIZE, mail settings, path\ncat /etc/log2ram.conf\n\n# ProxMenux-specific cron jobs\ncat /etc/cron.d/log2ram /etc/cron.d/log2ram-auto-sync\n\n# Recent Log2RAM activity\njournalctl -u log2ram -n 50 --no-pager"
},
"zram": {
"title": "ZRAM-Swap-Profil aktivieren",
"intro": "Erstellt das komprimierte Swap-Gerät <code>/dev/zram0</code> im RAM mit <code>systemd-zram-generator</code>. Ausgelagerte Speicherseiten werden mit zstd komprimiert und im RAM gehalten, bevor Swap auf dem Datenträger genutzt wird.",
"doesLabel": "Was sie tut:",
"doesItems": [
"Installiert <code>systemd-zram-generator</code>, wenn es fehlt, und zeichnet auf, ob ProxMenux es installiert hat.",
"Schreibt <code>/etc/systemd/zram-generator.conf.d/90-proxmenux.conf</code>: ein <code>zram0</code>-Gerät mit einem Zehntel des Host-RAMs, zstd-Komprimierung (<code>zstd(level=9)</code> mit systemd-zram-generator ab 1.2.0) und Swap-Priorität 32767.",
"Mit dieser Priorität füllt der Kernel zuerst ZRAM. Ein vorhandener Swap auf der Festplatte behält seine eigene Priorität und nimmt die Seiten, die nicht mehr in ZRAM passen.",
"Sucht vor Änderungen nach einer anderen ZRAM-Konfiguration: aktivem zram-Swap, zram-Eintrag in <code>/etc/fstab</code>, systemd-Unit oder anderer Generatordatei. Wird eine gefunden, bricht die Option ab und lässt sie unverändert.",
"Startet <code>dev-zram0.swap</code> und überprüft, ob das aktive Gerät mit dem Profil übereinstimmt. Wenn nicht, wird der vorherige Zustand wiederhergestellt.",
"Wird in <code>installed_tools.json</code> erfasst und kann über Optimierungen deinstallieren rückgängig gemacht werden."
],
"howUseLabel": "Wie zu verwenden:",
"howUseBody": "Diese Option gibt es nur in der anpassbaren Variante; die automatisierte wendet sie nicht an. Das Gerät wird bei jedem Start neu erstellt. Solange es aktiv ist, zeigt die Karte „Arbeitsspeicher“ in ProxMenux Monitor Kapazität, belegten Swap, Algorithmus, Kompressionsverhältnis und tatsächlichen RAM-Verbrauch.",
"verifyLabel": "Überprüfen Sie von der Shell:",
"verifyCode": "# Active swap devices and their priority\nswapon --show\n\n# ZRAM device: algorithm, size and compressed data\nzramctl\n\n# Profile written by ProxMenux\ncat /etc/systemd/zram-generator.conf.d/90-proxmenux.conf\n\n# State of the swap unit\nsystemctl status dev-zram0.swap"
},
"autoApplication": {
"title": "Automatische Anwendung",
"body": "Wählen Sie in der anpassbaren Variante die optionalen Funktionen nach Bedarf. Log2RAM gehört mit Hardwareerkennung auch zur automatisierten Variante; ZRAM bleibt ausschließlich anpassbar. Die Abschnitte erläutern Abfragen und Voraussetzungen."
}
}
@@ -0,0 +1,61 @@
{
"meta": {
"title": "Nach der Installation: Leistung | ProxMenux-Dokumentation",
"description": "Leistungsoptionen im anpassbaren ProxMenux-Skript nach der Installation. Ersetzt das einsträngige gzip durch pigz (paralleles gzip) für schnellere Backups und Komprimierung auf Hosts mit mehreren Kernen."
},
"header": {
"title": "Nach der Installation: Leistung",
"description": "Leistungsoptionen innerhalb des anpassbaren Post-Installationsskripts. Derzeit enthält diese Kategorie eine einzige Optimierung: Ersetzen von gzip durch pigz, so dass Backups und Kompression jeden CPU-Kern anstelle von einem verwenden.",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was diese Kategorie abdeckt",
"body": "Die einzige Leistungsoption hier leitet das gzip des Systems auf eine parallele Implementierung um. Andere Leistungsanpassungen wie Speicheroptimierung, E/A-Scheduling, ZFS-ARC-Größe und Kernel-Limits finden Sie in ihren Kategorien (<em>System</em>, <em>Speicher</em>), da sie andere Subsysteme betreffen."
},
"pigz": {
"heading": "Verwenden Sie pigz für eine schnellere GZIP-Komprimierung",
"intro": "Standard-<code>gzip</code> komprimiert Daten mit <strong>einem einzigen CPU-Kern</strong>. Auf modernen Proxmox-Hosts mit 8, 16 oder 32 Kernen ist das ein großer Engpass bei VM-/CT-Backups mit <code>vzdump</code>, Logrotation und allen Vorgängen über <code>gzip</code>. <a>pigz</a> ist ein direkt einsetzbarer paralleler Ersatz: dieselbe gzip-kompatible Ausgabe, aber auf alle Kerne verteilte Arbeit.",
"doesTitle": "Was ProxMenux tut",
"doesIntro": "Fünf Schritte, alle idempotent:",
"doesItems": [
"Setzt <code>pigz: 1</code> in <code>/etc/vzdump.conf</code>, so dass das Backup-Tool von Proxmox pigz nativ verwendet.",
"Installiert das Paket <code>pigz</code> apt, falls nicht bereits vorhanden.",
"Schreibt ein Wrapper-Script bei <code>/bin/pigzwrapper</code>, das jedes Argument an <code>/usr/bin/pigz</code> weiterleitet.",
"Registriert eine dpkg-Umleitung für das Systemprogramm <code>gzip</code> (<code>/usr/bin/gzip</code> bei Proxmox VE 9, <code>/bin/gzip</code> bei Proxmox VE 8). Die Originaldatei bleibt daneben als <code>gzip.distrib</code> erhalten und wird durch den Wrapper ersetzt. Danach verwendet <em>alles</em>, was <code>gzip</code> aufruft — logrotate, <code>tar czf</code>, Skripte und vzdump — transparent pigz.",
"Prüft, ob die als <code>gzip.distrib</code> gespeicherte Datei ein funktionierender Gzip ist, bevor der Wrapper installiert wird, und installiert das <code>gzip</code>-Paket zuerst neu, wenn dies nicht der Fall ist. Ein Host, der noch den früheren <code>/bin/gzip.original</code>-Swap hat, wird in die Umleitung verschoben, wenn die Option erneut angewendet wird."
],
"replacesTitle": "Ersetzt ein Systemprogramm",
"replacesBody": "Ein Wrapper anstelle von <code>gzip</code> ist ungewöhnlich. Das ist sicher, da der Wrapper gzip-kompatible Ausgabe erzeugt. Skripte mit fest kodierten Pfaden, in restriktiven chroot-Umgebungen oder mit Prüfung von Binärdatei-Hashes können sich jedoch anders verhalten. Das Original bleibt als <code>gzip.distrib</code> erhalten. Durch die dpkg-Umleitung aktualisieren Updates des Pakets <code>gzip</code> und das Upgrade von Proxmox VE 8 auf 9 diese Datei, während der Wrapper erhalten bleibt.",
"revertTitle": "Reversibel aus dem Menü Deinstallieren",
"revertBody": "Diese Optimierung wird erfasst. <link>Optimierungen deinstallieren</link> kopiert das Original aus <code>gzip.distrib</code> über den Wrapper, entfernt die Umleitung und <code>pigzwrapper</code>, kommentiert die Zeile <code>pigz</code> in <code>/etc/vzdump.conf</code> aus und führt nach erfolgreicher gzip-Prüfung <code>apt purge pigz</code> aus. Manuelles Äquivalent für Proxmox VE 9:",
"verifyTitle": "Verifizierung",
"verifyBody": "Nach der Anwendung sollte <code>gzip --version</code> pigz erwähnen. Ein schneller Benchmark zeigt auch den Geschwindigkeitsunterschied auf einem Multi-Core-Host:",
"whenTitle": "Wenn das am wichtigsten ist",
"whenBody": "Der Nutzen wächst mit der <strong>Anzahl der CPU-Kerne</strong> und der <strong>Häufigkeit der Backups</strong>. Auf einem Heimlaborrechner mit 2 Kernen und einem täglichen vzdump ist der Vorteil gering. Auf einem Produktionshost mit 16 Kernen, der jede Nacht ein Dutzend VMs sichert, kann pigz das Backup-Zeitfenster auf einen Bruchteil der Zeit von einsträngigem gzip verkürzen."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Backup- und Wiederherstellungsbefehle",
"href": "/docs/help-info/backup-commands",
"tailRich": " — vzdump-CLI-Referenz einschließlich der Thread-Option <code>--pigz</code>."
},
{
"label": "Speicher",
"href": "/docs/post-install/storage",
"tail": " — Geschwindigkeitsgrenzen für vzdump und ZFS-ARC-Anpassungen."
},
{
"label": "System",
"href": "/docs/post-install/system",
"tail": " — Anpassung von Dateideskriptoren und Speicher."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
@@ -0,0 +1,57 @@
{
"meta": {
"title": "Post-Install: Sicherheit | ProxMenux Dokumentation",
"description": "Sicherheitsoptionen im anpassbaren ProxMenux-Skript nach der Installation. Derzeit eine Option: den Dienst portmapper/rpcbind deaktivieren, um die Angriffsfläche des Hosts zu reduzieren."
},
"header": {
"title": "Post-Install: Sicherheit",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was diese Kategorie abdeckt",
"body": "Die Sicherheit nach der Installation beschränkt sich auf <strong>Host-Härtung, die sicher unbeaufsichtigt angewendet werden kann</strong>: selten benötigte Dienste deaktivieren und dies über Deinstallieren wieder rückgängig machen. Aktive Sicherheitswerkzeuge wie Fail2Ban zur Einbruchsverhinderung und Lynis für Audits finden Sie unter <em>Sicherheit</em> im ProxMenux-Hauptmenü, außerhalb der Nachinstallation."
},
"rpcbind": {
"heading": "Portmapper/rpcbind deaktivieren",
"intro": "<code>rpcbind</code> (früher <code>portmap</code>) ordnet RPC-Programmnummern Netzwerkports zu. NFS und einige ältere RPC-Werkzeuge sind davon abhängig. Auf einem typischen Proxmox-Host ohne NFS-Server <strong>nutzt es nichts</strong>; aktiviert bleibt Port <code>111/tcp</code> auf allen Schnittstellen offen.",
"whyTitle": "Warum es sich lohnt zu deaktivieren",
"whyItems": [
"Reduziert die Angriffsfläche des Hosts – ein Hördienst weniger, um den man sich Sorgen machen muss.",
"Historisch missbraucht als Reflexions- / Verstärkungsvektor in DDoS-Angriffen. Durch das Deaktivieren von <code>rpcbind</code> wird dieser Verstärkungsfaktor für Ihren Host entfernt.",
"Entfernt das Rauschen, das es in Protokollen und <code>netstat</code> / <code>ss</code> erzeugt, wodurch echte Aktivitäten leichter zu erkennen sind."
],
"nfsTitle": "Deaktivieren Sie dies nicht, wenn Sie NFS verwenden",
"nfsBody": "NFS-Server <strong>und</strong> NFS-Client benötigen <code>rpcbind</code> zur Aushandlung der Ports für <code>mountd</code>, <code>statd</code>, <code>lockd</code> usw. Wenden Sie diese Option nicht an, wenn Ihr Proxmox-Host NFS-Freigaben <em>exportiert</em> oder NFS-Freigaben eines NAS <em>einbindet</em>. Das Einbinden schlägt sonst mit <code>mount.nfs: rpc.statd is not running</code> oder ähnlichen Fehlern fehl.",
"runsTitle": "Was ProxMenux ausführt",
"runsOutro": "Das Paket bleibt installiert. ProxMenux zeichnet den ursprünglichen aktivierten/aktiven Zustand von rpcbind.service und rpcbind.socket auf und deaktiviert und stoppt dann beide Einheiten, so dass die Socket-Aktivierung den Dienst nicht zurückbringen kann.",
"verifyTitle": "Verifizierung",
"verifyBody": "Bestätigen Sie nach der Anwendung, dass <code>rpcbind</code> deaktiviert ist und nichts auf Port 111 zuhört:",
"reversibleTitle": "Wiederherstellen des ursprünglichen Service-Status",
"reversibleBody": "Die Änderung wird in <code>installed_tools.json</code> erfasst. <link>Optimierungen deinstallieren</link> setzt jede rpcbind-Einheit auf den zuvor aufgezeichneten aktivierten/deaktivierten und aktiven/inaktiven Zustand zurück. Dabei wird nicht vorausgesetzt, dass rpcbind auf jedem Host aktiviert war."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Sicherheitsmenü",
"href": "/docs/security",
"tail": " — leistungsfähigere Werkzeuge: Fail2Ban (Einbruchsverhinderung) und Lynis (Audit)."
},
{
"label": "Lynis",
"href": "/docs/security/lynis",
"tail": "– Überprüfen Sie den Host, um weitere Möglichkeiten zur Härtung zu finden."
},
{
"label": "Nützliche Systembefehle",
"href": "/docs/help-info/system-commands",
"tail": " — Referenz für Dienststatus, journalctl und lynis audit."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
@@ -0,0 +1,167 @@
{
"meta": {
"title": "Nachinstallation: Speicher | ProxMenux Dokumentation",
"description": "Speicheroptimierungen im anpassbaren Nachinstallationsskript von ProxMenux: ZFS-ARC-Größe nach Host-RAM, regelmäßige Snapshots mit zfs-auto-snapshot und Entfernen der vzdump-Backup-Drosselung."
},
"header": {
"title": "Post-Installation: Speicher",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was diese Kategorie abdeckt",
"body": "Vier Speicheroptimierungen: <strong>ZFS ARC</strong> auf einen sinnvollen Anteil des Host-RAMs abstimmen, <strong>automatische ZFS-Snapshots</strong> installieren und planen, <strong>ZFS autotrim</strong> auf SSD-/NVMe-Pools aktivieren und <strong>vzdump</strong> von Drosselungen befreien. Wählen Sie die unabhängigen Optionen passend zu Ihrem System. Als fünfte speichernahe Option reduziert <link>Log2RAM</link> SSD-/NVMe-Schreibvorgänge, indem es <code>/var/log</code> in eine RAM-Disk verschiebt. Es steht unter Optional, weil das anpassbare Menü es dort einordnet."
},
"trackedTitle": "Alle vier werden im Deinstallationsmenü erfasst",
"trackedBody": "Jede Option registriert ein Werkzeug in <code>installed_tools.json</code> für <link>Optimierungen deinstallieren</link>. <code>zfs_arc</code> entfernt <code>/etc/modprobe.d/99-zfsarc.conf</code> und erstellt initramfs neu; <code>zfs_auto_snapshot</code> entfernt den Cron-Zeitplan und bietet die vollständige Paketentfernung an; <code>zfs_autotrim</code> setzt <code>autotrim=off</code> auf den zuvor aktivierten Pools; <code>vzdump_speed</code> stellt <code>/etc/vzdump.conf</code> aus der bei Installation erstellten <code>.bak</code> wieder her.",
"arc": {
"heading": "ZFS ARC-Größe optimieren",
"intro": "Der <strong>Adaptive Replacement Cache (ARC)</strong> ist der ZFS-Lesecache im RAM. Proxmox-VE-Installationen ab 8.1 setzen 10% RAM mit maximal 16 GiB; ältere oder aktualisierte Hosts können abweichen. Diese Option schreibt genau diese Regel ausdrücklich (RAM/10, höchstens 16 GiB, mindestens 64 MiB) in eine eigene Datei und deckt so auch ältere oder aktualisierte Hosts ab. Prüfen Sie vorhandene Einstellungen und Arbeitslast; ein kleinerer Cache ist nicht immer schneller.",
"sizingTitle": "Größenregeln",
"headerRam": "Host-Arbeitsspeicher",
"headerMax": "ARC-Obergrenze",
"rows": [
{
"ram": "Formel",
"max": "RAM / 10, höchstens 16 GiB und mindestens 64 MiB"
},
{
"ram": "8 GB Host",
"max": "≈ 819 MiB (RAM/10)"
},
{
"ram": "16 GB Host",
"max": "≈ 1.6 GiB (RAM/10)"
},
{
"ram": "64 GB Host",
"max": "≈ 6.4 GiB (RAM/10)"
},
{
"ram": "≥ 160 GB Host",
"max": "16 GiB (Obergrenze)"
}
],
"after": "Die Datei <code>/etc/modprobe.d/99-zfsarc.conf</code> enthält nur <code>options zfs zfs_arc_max=…</code>. Andere ZFS-Parameter (<code>zfs_arc_min</code>, L2ARC-Vorablesen/Schreibbegrenzung, TXG-Zeitlimit) werden nicht abgestimmt. Vorher prüft ein Abgleich andere <code>*.conf</code> in <code>/etc/modprobe.d/</code> auf <code>zfs_arc_min</code> / <code>zfs_arc_max</code>, sichert sie mit Manifest unter <code>/usr/local/share/proxmenux/backups/zfs_arc/</code> und entfernt daraus die widersprüchlichen Werte <code>zfs_arc_min</code> / <code>zfs_arc_max</code> (andere Optionen dieser Zeilen bleiben erhalten). Damit legt nur die ARC-Datei von ProxMenux den Grenzwert fest. Anschließend werden <code>update-initramfs -u -k all</code> und gegebenenfalls <code>proxmox-boot-tool refresh</code> ausgeführt, damit der Grenzwert auch im initramfs für ZFS-Root-Systeme ankommt.",
"rebootTitle": "Erfordert einen Neustart, um wirksam zu werden",
"rebootBody": "ARC-Einstellungen werden beim Laden des Kernelmoduls <code>zfs</code> gelesen. Für ZFS-Root-Hosts erzeugt ProxMenux initramfs mit <code>update-initramfs -u -k all</code> neu und aktualisiert bei Bedarf den Bootloader mit <code>proxmox-boot-tool refresh</code>. Der neue Modulparameter wird erst nach Neustart genutzt; das entsprechende Flag wird automatisch gesetzt.",
"safeTitle": "Sicher auf Nicht-ZFS-Hosts",
"safeBody": "Die Funktion schreibt die Konfiguration nur, wenn <code>zpool list</code> mindestens einen importierten ZFS-Pool meldet. Auf ext4 / LVM-only Proxmox-Hosts oder auf Maschinen, auf denen die ZFS-Tools installiert sind, aber kein Pool importiert wird, ist das Ankreuzen dieser Option ein No-Op - nichts wird geschrieben.",
"verifyTitle": "Verifizierung und manuelles Rollback"
},
"autoSnap": {
"heading": "ZFS-Auto-Snapshot installieren",
"intro": "Installiert <a>zfs-auto-snapshot</a> und schreibt die Cron-Zeitpläne für automatische Snapshots in mehreren Intervallen neu. Eine einfache zusätzliche Absicherung neben regulären vzdump-Backups.",
"cadenceTitle": "Von ProxMenux eingerichteter Snapshot-Zeitplan",
"headerLabel": "Etikett",
"headerRuns": "Ausführung",
"headerKept": "Snapshots behalten",
"rows": [
{
"label": "häufig",
"runs": "jede 15 min",
"kept": "4"
},
{
"label": "stündlich",
"runs": "jede Stunde",
"kept": "1"
},
{
"label": "täglich",
"runs": "einmal täglich",
"kept": "1"
},
{
"label": "wöchentlich",
"runs": "einmal pro Woche",
"kept": "1"
},
{
"label": "monatlich",
"runs": "einmal im Monat",
"kept": "1"
}
],
"conservativeTitle": "Zurückhaltende Aufbewahrungszahlen",
"conservativeBody": "ProxMenux wird mit konservativer Aufbewahrung ausgeliefert (nur 4 häufig + 1 jedes längeren Intervalls), sodass der ZFS snapshot-Speicher nicht überlastet wird. Wenn Sie eine längere Aufbewahrung wünschen, bearbeiten Sie die Zahlen in <code>/etc/cron.d/zfs-auto-snapshot</code>, <code>/etc/cron.hourly/zfs-auto-snapshot</code> usw., nachdem das Skript ausgeführt wird.",
"onlyZfsTitle": "Nur nützlich für ZFS Pools",
"onlyZfsBody": "Die Installation des Pakets auf einem Ext4-Host ist harmlos, aber sinnlos - es gibt keine ZFS-Datensätze, die es zum Schnappschuss verwenden kann. Überspringen Sie diese Option, wenn Sie ZFS nicht verwenden.",
"verifyTitle": "Verifizierung und manuelles Rollback"
},
"autotrim": {
"heading": "ZFS-Autotrim aktivieren (SSD/NVMe-Pools)",
"intro": "Aktiviert <code>autotrim</code> auf ZFS-Pools ausschließlich mit TRIM-fähigen SSDs oder NVMe-Laufwerken. Pools mit rotierenden Laufwerken werden vorsorglich übersprungen. Vorhandenes <code>autotrim=on</code> bleibt unverändert.",
"trimTitle": "Was TRIM macht und warum es auf ZFS wichtig ist",
"trimBody1": "SSDs und NVMe-Laufwerke arbeiten intern mit Löschblöcken, die größer als die logischen Dateisystemsektoren sind. Nach dem Löschen einer Datei weiß das Laufwerk zunächst nicht, dass die Sektoren frei sind. Seine Speicherbereinigung kopiert daher eventuell unnötige Daten beim Freimachen weiterer Blöcke. <strong>TRIM</strong> meldet dem Laufwerk freie Sektoren, damit es sie vorab löschen kann.",
"trimBody2": "Ohne TRIM verschlechtert sich die SSD-Leistung im Laufe der Zeit, da das Laufwerk keine vorgelöschten Blöcke mehr hat und die Lösch-on-Write-Funktion ausführen muss, und die Schreibverstärkung steigt - beides verkürzt die Lebensdauer des Laufwerks. Wenn TRIM aktiviert ist, kann das Laufwerk einen gesunden Pool leerer Blöcke zum Schreiben bereithalten.",
"trimBody3": "Mit <code>autotrim=on</code> trimmt ZFS kürzlich freigegebenen Platz im Hintergrund und bündelt Bereiche. Regelmäßiges <code>zpool trim &lt;pool&gt;</code> ist eine Alternative. Autotrim spart einen eigenen Zeitplan, belastet Geräte aber unterschiedlich; regelmäßiges manuelles TRIM kann für einfachere Laufwerke besser sein.",
"practicalTitle": "Warum kann die Aktivierung nützlich sein?",
"practicalItems": [
"<strong>Dauerhafte Schreibleistung.</strong> TRIM kann ungenutzte Blöcke effizient freigeben helfen. Nutzen und Latenzauswirkungen hängen von Gerät und Arbeitslast ab.",
"<strong>Laufwerkslebensdauer.</strong> Weniger unnötige interne Kopien können Schreibverstärkung und NAND-Verschleiß verringern. Eine bestimmte zusätzliche Lebensdauer ist nicht garantiert.",
"<strong>Kein geplanter Cron-Job zum Erinnern.</strong> Im Gegensatz zu einem periodischen <code>zpool trim</code> ist Autotrim Fire-and-Forget - der Pool erledigt es selbstständig."
],
"whenTitle": "Wann ist das notwendig?",
"whenIntro1": "<strong>Erwägen Sie die Aktivierung</strong> auf ZFS-Pools nur mit TRIM-fähigen SSD-/NVMe-Geräten. Prüfen Sie Verhalten und Latenz; geplantes manuelles TRIM kann geeigneter sein.",
"whenIntro2": "<strong>Das Skript überspringt es automatisch</strong> auf:",
"whenSkipItems": [
"Pools mit rotierenden HDD-vdevs — ein vorsichtiger Hardwarefilter dieses Skripts.",
"Laufwerke ohne in sysfs sichtbares <code>discard_granularity</code> — meist alte SSDs ohne TRIM oder Passthrough-Pfade, über die das Betriebssystem das zugrunde liegende Gerät nicht sieht.",
"Pools, in denen ZFS selbst die Eigenschaft nicht unterstützt meldet (selten; sehr alte Pools).",
"Pools bereits auf <code>autotrim=on</code> eingestellt (no-op)."
],
"whenIntro3": "<strong>Nicht relevant für ext4-nur Hosts</strong> - es gibt nichts für ZFS zu trimmen. Die Funktion wird in diesem Fall mit einer freundlichen Nachricht beendet.",
"recordedTitle": "Warum nur von ProxMenux geänderte Pools erfasst werden",
"recordedBody": "Die Funktion schreibt einen Pool nur dann in seine interne Zustandsdatei (<code>/usr/local/share/proxmenux/zfs_autotrim_pools</code>), wenn er diesen Pool aktiv von <code>off</code> nach <code>on</code> umgedreht hat. Pools, die Sie vor dem Ausführen des Skripts auf Autotrim hatten, werden aus der Liste ausgeschlossen, so dass eine zukünftige Deinstallation die Einstellungen, die Sie selbst konfiguriert haben, nicht deaktiviert - nur die eigenen Änderungen von ProxMenux werden zurückgesetzt.",
"manualTitle": "Manuelles Äquivalent (auf Ihrem Server ausgeführt)",
"manualIntro": "Die vollständige Sequenz, die das Skript gegen jeden Pool läuft, ist von Hand replizierbar. Dies ist, was Sie eingeben würden, wenn Sie dasselbe in einem einzelnen Pool ohne ProxMenux tun möchten:",
"verifyTitle": "Verifizierung und manuelles Rollback",
"oneShotTitle": "Einmaliges TRIM statt Hintergrundaktivität?",
"oneShotBody": "Einige Betreiber bevorzugen eine manuelle Trimmung während Off-Peak-Stunden anstelle von kontinuierlichen Trimmaktivitäten. Deaktivieren Sie Autotrim und planen Sie einen Cron-Job, der <code>zpool trim &lt;pool&gt;</code> ausführt - gleiches Endziel, unterschiedliche Kadenz."
},
"vzdump": {
"heading": "Erhöhen Sie die Backup-Geschwindigkeit von vzdump",
"intro": "Schreibt bwlimit: 0 und ionice: 5 in die globale vzdump-Konfiguration. Proxmox hat bereits standardmäßig kein Bandbreitenlimit; nur ein vorhandenes Limit wird entfernt. Gegenüber ionice: 7 erhöht 5 die Best-Effort-I/O-Priorität, sofern der Scheduler sie beachtet. Das kann Gäste beeinflussen und garantiert keine schnelleren Backups.",
"changedTitle": "Was sich in /etc/vzdump.conf ändert",
"backupTitle": "Erster Durchlauf erstellt ein .bak von vzdump.conf",
"backupBody": "Beim ersten Ausführen kopiert ProxMenux <code>/etc/vzdump.conf</code> vor Änderungen nach <code>/etc/vzdump.conf.bak</code>. Spätere Läufe überschreiben diese Sicherung nicht; frühere manuelle Einstellungen bleiben wiederherstellbar. <code>bwlimit</code> und <code>ionice</code> werden mit <code>sed</code> geändert, andere Optionen wie compress, pigz, tmpdir und exclude-path bleiben erhalten.",
"skipTitle": "Wann man das überspringt",
"skipBody": "Auf einem Host mit langsamem lokalem Speicher und VMs, die latenzempfindlich sind, kann das Entfernen der Bandbreitenobergrenze zu spürbaren Verlangsamungen bei Backups führen. Wenn Sie aus diesem Grund zuvor einen bestimmten <code>bwlimit</code> festgelegt haben, behalten Sie ihn bei - überspringen Sie diese Option.",
"verifyTitle": "Verifizierung und manuelles Rollback"
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "ZFS Verwaltungsbefehle",
"href": "/docs/help-info/zfs-commands",
"tail": "— zpool / zfs Referenz für ARC, Snapshots, Scrub."
},
{
"label": "Speicher- und Festplattenbefehle",
"href": "/docs/help-info/storage-commands",
"tail": "generische Blockgeräte und Proxmox-Speicherreferenz."
},
{
"label": "Backup- und Wiederherstellungsbefehle",
"href": "/docs/help-info/backup-commands",
"tail": " — vzdump-CLI-Referenz für Bandbreite und I/O-Priorität."
},
{
"label": "Optimierungen deinstallieren",
"href": "/docs/post-install/uninstall",
"tail": " — Änderungen an ARC / vzdump rückgängig machen."
},
{
"label": "Log2RAM",
"href": "/docs/post-install/optional#log2ram",
"tail": "- reduziert den Verschleiß von SSD/NVMe durch Ramdisk-Backing /var/log; dokumentiert unter Optional."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
@@ -0,0 +1,133 @@
{
"meta": {
"title": "Post-Install: System | ProxMenux Dokumentation",
"description": "Systemoptimierungen im anpassbaren Nachinstallationsskript von ProxMenux: Größenbegrenzungen für journald und logrotate, höhere Kernel- und Dateideskriptorgrenzen, ausgewogene Speicherabstimmung, schnelle Neustarts mit kexec und Wiederherstellung nach Kernel-Panik."
},
"header": {
"title": "Nach der Installation: System",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was diese Kategorie abdeckt",
"body": "Sechs unabhängige Systemoptimierungen. Sie stimmen <strong>journald</strong> und <strong>logrotate</strong> ab, damit Logs nicht die Platte füllen, erhöhen <strong>Kernel- und Dateideskriptorgrenzen</strong> für Anwendungen mit vielen offenen Dateien, sorgen für <strong>ausgewogene Speichernutzung</strong> auf einem Virtualisierungshost, ergänzen <strong>kexec</strong> für Neustarts ohne BIOS und konfigurieren <strong>automatische Wiederherstellung</strong> bei Kernel-Panik. Alle sechs werden erfasst und sind über das Deinstallationsmenü rückgängig zu machen."
},
"journald": {
"heading": "journald optimieren",
"intro": "Schreibt <code>/etc/systemd/journald.conf</code> mit sinnvollen Standardwerten neu, damit das systemd-Journal nicht nach und nach die Root-Partition füllt. Startet dann <code>systemd-journald</code> neu und bereinigt vorhandene Protokolle.",
"keyTitle": "Schlüsselwerte",
"keyItems": [
"<code>Storage=persistent</code> — Protokolle auf der Festplatte über Neustarts halten.",
"<code>SystemMaxUse=64M</code> / <code>RuntimeMaxUse=60M</code> — Grenzen für die Datenträger- und Speichernutzung des Journals.",
"<code>Compress=yes</code>, <code>Seal=no</code> — Logs komprimieren, kryptografische Vorwärtssicherung durch Versiegelung auslassen (spart CPU).",
"<code>MaxLevelStore=info</code> — info und höhere Schweregrade speichern. Erforderlich für den Logbetrachter von ProxMenux Monitor und damit Fail2Ban fehlgeschlagene SSH-/Proxmox-Anmeldungen im Journal erkennt.",
"Ratenbegrenzung: <code>1000 events / 30 s</code>, um eine Protokollflut zu vermeiden.",
"<code>ForwardToSyslog=no</code>, <code>ForwardToWall=no</code> - Duplizieren Sie keine Nachrichten in syslog oder senden Sie sie an Konsolen."
],
"tipTitle": "Warum MaxLevelStore=info wichtig ist",
"tipBody": "Ein strengerer Schweregrad wie <code>warning</code> lässt ProxMenux Monitor in allen Zeiträumen fast dieselben Einträge zeigen, weil die meisten Aktivitäten auf Info-Ebene liegen. Fail2Ban kann dadurch fehlgeschlagene Anmeldungen übersehen. Begrenzen Sie die Menge stattdessen mit <code>SystemMaxUse</code> und <code>RateLimitBurst</code>, ohne die gespeicherten Schweregrade einzuschränken."
},
"logrotate": {
"heading": "Logrotate optimieren",
"intro": "Schreibt <code>/etc/logrotate.conf</code> mit globalen Tages- und Größeneinstellungen, 7 aufbewahrten Rotationen, Komprimierung und <code>copytruncate</code> neu, damit Dienste ohne erneutes Öffnen der Logs weiterschreiben. Die spätere Größeneinstellung hat Vorrang vor täglich, sofern keine einzelne Logregel sie überschreibt. Original <code>logrotate.conf</code> wird beim ersten Anwenden nach <code>.bak</code> gesichert.",
"tipTitle": "Für Log2RAM geeignet",
"tipBody": "Die Anweisung <code>size 10M</code> hat Vorrang vor der vorherigen Tageseinstellung; es gilt <em>nicht</em> das zuerst eintretende Kriterium. Logrotate prüft den Grenzwert beim Ausführen, und einzelne Logregeln können globale Werte überschreiben. Für Log2RAMs RAM-basiertes <code>/var/log</code> sollten Regeln und Timerfrequenz geprüft werden, um die Belegung zu steuern."
},
"limits": {
"heading": "Verschiedene Systemgrenzen erhöhen",
"intro": "Erhöht Kernel-, systemd- und PAM-Grenzen, deren Standardwerte für Hosts mit vielen VMs, Containern und Netzwerkdiensten zu niedrig sein können.",
"headerFile": "Datei",
"headerSets": "Was es setzt",
"rows": [
{
"file": "/etc/sysctl.d/99-maxwatches.conf",
"sets": "<code>fs.inotify.max_user_watches / max_user_instances / max_queued_events = 1048576</code>"
},
{
"file": "/etc/sysctl.d/99-maxkeys.conf",
"sets": "<code>kernel.keys.maxkeys / root_maxkeys = 1000000</code>"
},
{
"file": "/etc/sysctl.d/99-swap.conf",
"sets": "<code>vm.swappiness = 10</code>, <code>vm.vfs_cache_pressure = 100</code>"
},
{
"file": "/etc/sysctl.d/99-fs.conf",
"sets": "<code>fs.nr_open / file-max = 2097152</code>, <code>fs.aio-max-nr = 1048576</code>"
},
{
"file": "/etc/security/limits.d/99-limits.conf",
"sets": "<code>nofile</code> und <code>nproc</code> bis 1,048,576 (unbegrenzt für root)"
},
{
"file": "/etc/systemd/system.conf + user.conf",
"sets": "<code>DefaultLimitNOFILE=1048576</code> für systemd-Dienste"
},
{
"file": "/etc/pam.d/common-session + runuser-l",
"sets": "<code>session required pam_limits.so</code>, also gelten die oben genannten für Login-Shells"
},
{
"file": "/root/.profile",
"sets": "<code>ulimit -n 1048576</code> für die Root-Shell"
}
],
"tipTitle": "Warum inotify wichtig ist",
"tipBody": "Docker, Syncthing, Node.js-Dateibeobachter und Plex-Bibliotheksscans können <code>max_user_watches</code> ausschöpfen. Der Standard hängt von Kernel und Host-RAM ab und ist nicht immer 8192. 1M erlaubt mehr Überwachungen, ohne sie vorab anzulegen. Aktive Überwachungen benötigen Kernel-Speicher; prüfen Sie die Nutzung auf speicherknappen Hosts."
},
"memory": {
"heading": "Optimieren der Speichereinstellungen",
"intro": "Schreibt ein ausgewogenes sysctl-Profil in <code>/etc/sysctl.d/99-memory.conf</code>. Entwickelt für einen Hypervisor-Host - bevorzugt es, VM-Arbeitssets in RAM zu halten und Seiten proaktiv freizugeben, damit Zuweisungsbursts nicht zum Stillstand kommen.",
"warnTitle": "swappiness=10 auf Hosts mit wenig freiem Speicher",
"warnBody": "Auf einem Host mit 16 GB RAM, auf dem viele VMs ausgeführt werden, kann die Senkung der Swappiness den Kernel zu OOM-Kill-Prozessen anstelle von Swaping bringen. Wenn Sie routinemäßig OOM-Ereignisse sehen, erhöhen Sie die Swappiness nach dem Ausführen des Skripts in <code>/etc/sysctl.d/99-memory.conf</code> auf 30–60."
},
"kexec": {
"heading": "Schnelle Neustarts ermöglichen (kexec)",
"intro": "Installiert <code>kexec-tools</code> und verkabelt es, so dass Sie den Host direkt in einen neuen Kernel <em> neu starten können, ohne die BIOS/UEFI-Firmware </em> zu durchlaufen. Auf großen Servern, auf denen POST 45 bis 90 Sekunden benötigt, verwandelt sich ein Neustart von einer Kaffeepause in einige Sekunden Ausfallzeit.",
"installsTitle": "Was ProxMenux installiert",
"installsItems": [
"Paket <code>kexec-tools</code> (debconf mit <code>kexec-tools/load_kexec boolean false</code> vorbeantwortet, damit apt nicht nachfragt und automatisches Laden beim Herunterfahren deaktiviert bleibt).",
"Systemd-Einheit <code>/etc/systemd/system/kexec-pve.service</code> lädt den Proxmox-Kernel und initrd beim Booten in den Speicher, wobei die aktuelle cmdline wiederverwendet wird.",
"Ein Aliasname in <code>/root/.bash_profile</code>: <code>reboot-quick</code> → <code>systemctl kexec</code>."
],
"usageIntro": "Nutzung nach dem nächsten Reboot (oder manuell <code>systemctl start kexec-pve</code>):",
"warnTitle": "Wann man Kexec nicht benutzt",
"warnBody": "kexec überspringt Firmware-Level Init. Wenn Sie sich auf BIOS/UEFI verlassen, um den Hardwarezustand zurückzusetzen - beispielsweise einen GPU, der Passthrough durchführt, der nur bei voller POST sauber zurückgesetzt wird, oder eine lästige HBA-Firmware - können Kexec-Neustarts diese Geräte in einem halbinitialisierten Zustand belassen. Verwenden Sie einen normalen <code>reboot</code> nach Kernel-Upgrades oder wenn Sie BIOS/UEFI Änderungen benötigen, um wirksam zu werden. <code>reboot-quick</code> ist für alltägliche Neustarts gedacht."
},
"panic": {
"heading": "Neustart bei Kernel-Panic aktivieren",
"intro": "Lässt den Kernel <strong>automatisch neu starten</strong>, statt dauerhaft am Panikbildschirm zu hängen. Besonders wichtig für entfernte Proxmox-Hosts ohne lokale Konsole: Bei blockiertem Kernel bleiben alle VMs aus, bis Sie den Host aus- und wieder einschalten können.",
"tipTitle": "Verbinden Sie dies mit Remote-Konsolenzugriff",
"tipBody": "Der automatische Neustart dient der Wiederherstellung, nicht der Fehlersuche. Um eine Panik zu <em>untersuchen</em>, statt nur neu zu starten, nutzen Sie <link>die kexec-Option</link> oben zusammen mit Kernel-kdump-Unterstützung, die ProxMenux nicht einrichtet. Alternativ zeichnen Sie vor Aktivierung eine serielle Konsole auf einem anderen Host auf."
},
"verify": {
"heading": "Verifizierung",
"intro": "Nach Anwendung der Systemoptimierungen:",
"tipTitle": "Wiederherstellung und Grenzen",
"tipBody": "Alle sechs Optionen werden in <code>installed_tools.json</code> erfasst und unter <link>Optimierungen deinstallieren</link> angeboten. Die Wiederherstellung entfernt die Konfigurationsdateien sowie kexec-Unit und Alias, schreibt journald.conf mit den systemd-Standardwerten neu und stellt logrotate.conf aus der Sicherung wieder her. Manche aktiven Grenzen brauchen eine neue Sitzung oder einen Neustart."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Nützliche Systembefehle",
"href": "/docs/help-info/system-commands",
"tail": "— die Änderungen überprüfen (free -h, journalctl, ulimit -a)."
},
{
"label": "Leistung",
"href": "/docs/post-install/performance",
"tail": " — zusätzliche Systemabstimmung (pigz)."
},
{
"label": "Optimierungen deinstallieren",
"href": "/docs/post-install/uninstall",
"tail": " — diese Änderungen rückgängig machen."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
@@ -0,0 +1,271 @@
{
"meta": {
"title": "Optimierungen deinstallieren | ProxMenux Dokumentation",
"description": "Macht reversible Nachinstallationsänderungen von ProxMenux rückgängig. Registrierte Werkzeuge haben eigene Deinstallationsfunktionen, die den vorherigen Hostzustand nach Möglichkeit erhalten."
},
"header": {
"title": "Optimierungen deinstallieren",
"description": "Stellen Sie reversible Änderungen wieder her, die durch die automatisierten oder anpassbaren Skripte nach der Installation vorgenommen wurden. ProxMenux registriert jede unterstützte Optimierung mit ihrer dedizierten Wiederherstellungsfunktion; Paket-Upgrades sind absichtlich ausgeschlossen.",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Warum es das gibt",
"body": "Jede unterstützte rückgängig zu machende Änderung wird <strong>erfasst</strong> in <code>/usr/local/share/proxmenux/installed_tools.json</code>. Dieses Verzeichnis steuert die Deinstallation: Es zeigt aktive Optimierungen und ruft deren Wiederherstellungsfunktion auf. Aktionen ohne sicheres Zurücksetzen, etwa vollständige Paket-Upgrades, werden nicht aufgenommen."
},
"openMenu": {
"heading": "Wie man es öffnet",
"body": "Öffnen Sie im Hauptmenü <strong>Proxmox-Nachinstallationseinstellungen → Optimierungen deinstallieren</strong>. Die Liste zeigt <em>aktuell angewendete</em> Optimierungen; nicht angewendete Einträge fehlen.",
"imageAlt": "Auswahlliste „Optimierungen deinstallieren“ mit aktiven Änderungen und Kontrollkästchen zum Zurücksetzen"
},
"howWorks": {
"heading": "Wie die Umkehrung funktioniert",
"steps": [
{
"title": "Gespeicherte Einträge und automatische Erkennung",
"body1": "Beim ersten Lauf sucht ProxMenux nach Erkennungsmerkmalen auf dem Host, etwa <code>/etc/sysctl.d/99-memory.conf</code>, <code>/etc/apt/apt.conf.d/99-force-ipv4</code>, installiertem <code>haveged</code> oder aktivem Log2RAM-Dienst. Erkannte Änderungen werden als rückgängig zu machen erfasst, auch wenn eine ältere ProxMenux-Version ohne Register sie vorgenommen hat.",
"body2": "Diese Migration wird nur einmal ausgeführt. Anschließend aktualisiert jeder Anwenden- oder Rückgängig-Vorgang den gespeicherten Eintrag direkt."
},
{
"title": "Änderungen zum Zurücksetzen auswählen",
"body1": "Die Checkliste zeigt pro Artikel ein menschenlesbares Label (z.B. <em>Speichereinstellungen Optimierung</em>, <em>IOMMU/VFIO PCI-Durchgang</em>, <em>Log2RAM (SSD-Schutz)</em>). Klicken Sie auf die, die Sie umkehren möchten. Nichts, was Sie nicht ankreuzen, wird berührt."
},
{
"title": "Rückgängigmachen wird ausgeführt",
"body1": "Für jedes ausgewählte Element ruft ProxMenux seine passende Deinstallationsfunktion auf. Die meisten Umkehrungen folgen einem von drei Mustern:",
"items": [
"<strong>Backup-basierte </strong> — Wiederherstellung eines <code>.bak</code>, das zum Zeitpunkt der Anwendung erfasst wurde (bashrc, logrotate.conf, journald.conf, GRUB/kernel cmdline).",
"<strong>Konfiguration löschen</strong> — ProxMenux-Dateien <code>/etc/sysctl.d/99-*.conf</code>, <code>/etc/apt/apt.conf.d/99-*</code> oder die systemd-Unit entfernen und neu laden.",
"<strong>Pakete neu installieren</strong> — bei UI-Änderungen wie dem Abonnementhinweis die Originalpakete mit <code>--force-confnew</code> neu installieren, um ausgelieferte Einstellungen wiederherzustellen."
],
"body2": "Jede Umkehrung protokolliert ihren Fortschritt. Elemente, die einen Neustart erfordern (VFIO, persistente Schnittstellennamen), setzen ein Flag, das die Neustartaufforderung am Ende auslöst."
},
{
"title": "Neustartabfrage am Ende",
"body1": "Nachdem die Umkehrung beendet ist, zeigt das Menü eine Neustartaufforderung an. Elemente, die Kernelparameter, Kernelmodule oder Netzwerknamen (VFIO, persistente Schnittstellennamen) geändert haben, benötigen den Neustart, um wirksam zu werden; andere Elemente nicht, und die Eingabeaufforderung ist ein Sicherheitsstandard und keine Per-Item-Überprüfung."
}
]
},
"reversible": {
"heading": "Was reversibel ist",
"intro": "Registrierte reversible Optimierungen und deren passende Deinstallateure werden hier nach Bereichen gruppiert:",
"groups": [
{
"title": "Repositories und APT",
"items": [
{
"tool": "Abonnementbanner entfernen",
"restores": "Zunächst wird versucht, die UI-Dateien aus ProxMenux-eigenen Backups wiederherzustellen (/usr/local/share/proxmenux/backups/proxmoxlib.js.backup.* und, wenn die mobile UI gepatcht wird, index.html.tpl.backup.*). Nur wenn ein Backup fehlt oder beschädigt ist, greift man auf die Neuinstallation von pve-manager, proxmox-widget-toolkit, libjs-extjs und libpve-http-server-perl mit force-confnew zurück. Löscht auch zwischengespeicherte .js / .gz-Kopien."
},
{
"tool": "APT-Sprachdateien überspringen",
"restores": "Entfernt /etc/apt/apt.conf.d/99-disable-translations, damit APT übersetzte Paketbeschreibungsindizes gemäß den übrigen Spracheinstellungen herunterladen kann."
},
{
"tool": "IPv4 für APT erzwingen",
"restores": "Entfernen von /etc/apt/apt.conf.d/99-force-ipv4."
},
{
"tool": "Systemwerkzeuge",
"restores": "Entfernt nur ausgewählte Werkzeugpakete vollständig, die ProxMenux als neu installiert erfasst hat. Zuvor vorhandene Pakete werden nie in diese Liste aufgenommen und bleiben unverändert."
}
]
},
{
"title": "Kernel, Speicher und Systemgrenzen",
"items": [
{
"tool": "Speichereinstellungen",
"restores": "Entfernt /etc/sysctl.d/99-memory.conf und lädt sysctl neu."
},
{
"tool": "Kernel Panic Konfiguration",
"restores": "Entfernen von /etc/sysctl.d/99-kernelpanic.conf."
},
{
"tool": "Systemgrenzen erhöhen",
"restores": "Entfernt /etc/sysctl.d/99-maxwatches.conf, 99-maxkeys.conf, 99-swap.conf, 99-fs.conf und /etc/security/limits.d/99-limits.conf. Setzt PAM-Grenzen und systemd DefaultLimitNOFILE zurück. In /root/.profile entfernt es nur die alte Zeile ulimit -n 256000; ulimit -n 1048576 des aktuellen Installers kann bleiben und manuelle Entfernung erfordern."
},
{
"tool": "ZRAM-Swapprofil",
"restores": "Deaktiviert den Swap auf /dev/zram0, stoppt dev-zram0.swap und entfernt /etc/systemd/zram-generator.conf.d/90-proxmenux.conf. Das systemd-zram-generator-Paket wird nur gelöscht, wenn ProxMenux es installiert hat und kein anderes ZRAM-Setup vorhanden ist. Wenn die Seiten in ZRAM nicht verschoben werden können, bleibt das Profil aktiv und es wird nichts entfernt."
}
]
},
{
"title": "Vernetzung",
"items": [
{
"tool": "Netzwerkoptimierungen",
"restores": "Entfernt /etc/sysctl.d/99-network.conf, 97-proxmenux-fwbr.conf und 98-proxmenux-rpf.conf sowie proxmenux-fwbr-tune.service, das Hilfsskript /usr/local/sbin/proxmenux-fwbr-tune und die udev-Regel /etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules. Entfernt außerdem source /etc/network/interfaces.d/* aus /etc/network/interfaces. Lädt sysctl, systemd und udev-Regeln neu."
},
{
"tool": "Open vSwitch",
"restores": "Führt apt purge für openvswitch-switch und openvswitch-common aus. Migrieren Sie OVS-Bridges vorher zu Linux-Bridges, sonst verlieren die VMs darauf beim nächsten Start die Netzwerkanbindung."
},
{
"tool": "TCP BBR + TCP Fast Open",
"restores": "Entfernt /etc/sysctl.d/99-kernel-bbr.conf und 99-tcp-fastopen.conf und lädt übrige sysctl-Konfiguration neu. Das Löschen setzt aktive Werte nicht zurück; Standards wie cubic und tcp_fastopen=1 gelten nach Neustart, sofern keine andere Konfiguration sie überschreibt."
},
{
"tool": "Persistente Schnittstellennamen",
"restores": "Entfernt nur die 10-proxmenux-*.link-Dateien mit dem ProxMenux-Header aus /etc/systemd/network/. Jede .link-Datei, die von einem anderen Paket bereitgestellt oder vom Benutzer geschrieben wurde, bleibt an Ort und Stelle. Schnittstellennamen kehren beim nächsten Neustart zum Standardverhalten von systemd zurück."
}
]
},
{
"title": "Protokollierung",
"items": [
{
"tool": "journald-Optimierung",
"restores": "Schreibt /etc/systemd/journald.conf mit ursprünglichen Standardwerten neu und startet systemd-journald neu."
},
{
"tool": "Logrotate-Optimierung",
"restores": "Stellt /etc/logrotate.conf aus der vor der Änderung erstellten .bak-Datei wieder her."
},
{
"tool": "Log2RAM",
"restores": "Stoppt und deaktiviert Dienst und Timer. Entfernt Cron-Jobs, systemd-Units, Programmdateien, Konfiguration und /var/log.hdd. Entfernt auch das apt-Paket, falls darüber installiert."
},
{
"tool": "Automatisches ZFS-TRIM",
"restores": "Liest /usr/local/share/proxmenux/zfs_autotrim_pools mit den tatsächlich geänderten Pools und führt jeweils zpool set autotrim=off aus. Bereits vor ProxMenux manuell aktivierter Autotrim bleibt bestehen."
}
]
},
{
"title": "Shell und Erscheinungsbild",
"items": [
{
"tool": "Bashrc anpassen",
"restores": "Wiederherstellt /root/.bashrc aus dem .bak-Backup. Wenn kein Backup vorhanden ist, wird der PMX_CORE_BASHRC-Block durch Markierungen entfernt."
},
{
"tool": "Eigenes MOTD-Banner",
"restores": "Stellen Sie den genauen ursprünglichen /etc/motd-Inhalt, der unter /usr/local/share/proxmenux gespeichert ist, wieder her, entfernen Sie die Datei, wenn sie vorher nicht vorhanden war, oder entfernen Sie den alten Marker sicher, wenn Sie eine ältere Installation migrieren."
},
{
"tool": "Fastfetch",
"restores": "Entfernt Programmdatei, Konfigurationsverzeichnis, update-motd-Hook und den abgegrenzten Block BEGIN FASTFETCH / END FASTFETCH aus /root/.bashrc, ~/.profile, /etc/profile und /etc/profile.d/fastfetch.sh. Entfernt ein installiertes apt-Paket vollständig."
},
{
"tool": "Figurine",
"restores": "Entfernt den Binär-, profile.d-Eintrag und den Alias-Block in bashrc/profile."
}
]
},
{
"title": "Hardware & Virtualisierung",
"items": [
{
"tool": "IOMMU / VFIO",
"restores": "Entfernt vfio Module aus /etc/modules, die Nouveau / Radeon / nvidia Blacklist Einträge und intel_iommu=on / amd_iommu=on / iommu=pt / pcie_acs_override Parameter aus /etc/kernel/cmdline (ZFS) oder GRUB. Baut Initramfs wieder auf."
},
{
"tool": "AMD-CPU-Korrekturen (Ryzen/EPYC)",
"restores": "Entfernt idle=nomwait aus Kernel cmdline (ZFS) oder GRUB und die ignore_msrs / report_ignored_msrs Optionen aus /etc/modprobe.d/kvm.conf."
},
{
"tool": "Gast-Agent für einen virtualisierten Proxmox-Host",
"restores": "Liest /usr/local/share/proxmenux/guest_agent.pkg und entfernt das erfasste Hostpaket vollständig. Der Installer wählt qemu-guest-agent, open-vm-tools oder virtualbox-guest-utils nach Hypervisor. Ohne Eintrag versucht die Deinstallation diese drei Pakete. Betroffen ist der verschachtelte Proxmox-Host, nicht Gastvorlagen."
}
]
},
{
"title": "Speicher",
"items": [
{
"tool": "ZFS-ARC-Größe anpassen",
"restores": "Entfernt /etc/modprobe.d/99-zfsarc.conf, stellt gesicherte widersprüchliche externe *.conf aus /usr/local/share/proxmenux/backups/zfs_arc/ wieder her, baut initramfs neu und führt proxmox-boot-tool refresh auf systemd-boot-Hosts aus."
},
{
"tool": "Automatische ZFS-Snapshots",
"restores": "Entfernt die Cron-Einträge, die das Skript geschrieben hat, und bietet an, zfs-auto-snapshot zu bereinigen. Bestehende Snapshot-Datensätze in den Pools bleiben intakt - entfernen Sie sie separat, wenn Sie sie weghaben möchten."
},
{
"tool": "vzdump-Geschwindigkeitsbegrenzung",
"restores": "Stellt /etc/vzdump.conf aus der Installationssicherung .bak wieder her und setzt bwlimit und ionice auf die Werte vor ProxMenux zurück."
}
]
},
{
"title": "Dienstleistungen & Extras",
"items": [
{
"tool": "Zeitsynchronisation",
"restores": "Setzt die Zeitzone mit timedatectl auf UTC als sicheren Standard zurück."
},
{
"tool": "Entropieerzeugung (haveged)",
"restores": "Stoppt und deaktiviert haveged und entfernt das Paket vollständig."
},
{
"tool": "kexec (schnelle Neustarts)",
"restores": "Deaktiviert kexec-pve.service, entfernt die Unit-Datei und den Alias reboot-quick aus /root/.bash_profile und entfernt kexec-tools vollständig."
},
{
"tool": "RPC / rpcbind deaktiviert",
"restores": "Stellt rpcbind.service und rpcbind.socket jeweils auf den zuvor erfassten Aktivierungs- und Laufzustand zurück: aktiviert/deaktiviert und aktiv/inaktiv."
},
{
"tool": "pigz (paralleles gzip)",
"restores": "Kopiert den echten gzip von gzip.distrib zurück, entfernt die dpkg-Umleitung und /bin/pigzwrapper, kommentiert die pigz-Linie in /etc/vzdump.conf und löscht pigz, sobald gzip verifiziert ist."
},
{
"tool": "Dienste mit hoher Verfügbarkeit",
"restores": "Stoppt und deaktiviert pve-ha-lrm, pve-ha-crm und corosync. Bestehende HA-Gruppen und Ressourcendefinitionen werden nicht gelöscht – entfernen Sie sie aus der Web-Benutzeroberfläche, wenn Sie sie nicht mehr benötigen."
},
{
"tool": "Ceph-Repository",
"restores": "Bereinigt die mit dieser Option installierten Ceph-Pakete, entfernt die deb822 /etc/apt/sources.list.d/ceph.sources auf PVE 9 (oder die alte Ceph-Liste auf PVE 8) und aktualisiert den APT-Cache."
},
{
"tool": "OVH RTM (Überwachung)",
"restores": "Entfernt Pakete passend zu ovh-rtm*, rtm und rtm-*, löscht /etc/rtm und entfernt den RTM-Registereintrag. Puppet-Reste unter /etc/puppet/ müssen eventuell manuell geprüft und bereinigt werden; das Verzeichnis wird nicht gelöscht. Auf Nicht-OVH-Hosts nimmt der Installer normalerweise keine Änderungen vor."
}
]
}
]
},
"edge": {
"heading": "Sonderfälle und Einschränkungen",
"packageTitle": "Neuinstallation betrifft laufende Proxmox-Pakete",
"packageBody": "Können ProxMenux-Sicherungen <strong>Abonnementhinweis entfernen</strong> nicht zurücksetzen, installiert der Rückfallweg <code>pve-manager</code>, <code>proxmox-widget-toolkit</code>, <code>libjs-extjs</code> und <code>libpve-http-server-perl</code> mit <code>--force-confnew</code> neu. Das betrifft die laufende Weboberfläche: Browser neu laden und einige Sekunden zum Wiederverbinden abwarten. Nicht während Migrationen oder Klonvorgängen ausführen.",
"rebootTitle": "Persistente Namen und VFIO benötigen einen Neustart",
"rebootBody": "Das Entfernen der <code>10-proxmenux-*.link</code>-Dateien (<em>Persistente Schnittstellennamen</em>) und Zurücksetzen von <em>IOMMU/VFIO</em> ändern den bereits gestarteten Zustand nicht; sie werden nach Neustart wirksam. ProxMenux setzt dafür automatisch das Neustart-Flag.",
"perItemTitle": "Sie können eine Sache rückgängig machen und den Rest behalten",
"perItemBody": "Der Deinstaller arbeitet per Item. Wenn Sie nur Log2RAM entfernen möchten, aber die Netzwerk-Tuning- und Bashrc-Änderungen beibehalten möchten, kreuzen Sie nur <em>Log2RAM</em> an. Nichts anderes wird berührt und die Registry wird entsprechend aktualisiert."
},
"inspect": {
"heading": "Kontrolle des Registers manuell",
"intro": "Wenn Sie sehen möchten, was verfolgt wird, ohne das Menü zu öffnen:",
"outro": "Jeder <code>\"tool\": true</code>-Eintrag entspricht etwas ProxMenux angewendet und kann umgekehrt werden. Das manuelle Entfernen eines Eintrags wird nicht empfohlen - verwenden Sie immer das Menü, das auch die Umkehrfunktion ausführt, anstatt nur die Änderung zu vergessen.",
"reinstallTitle": "Neuinstallieren nach Deinstallieren",
"reinstallBody": "Eine zurückgesetzte Optimierung kann später erneut angewendet werden. Öffnen Sie <link>das Nachinstallationsmenü</link> und starten Sie Automatisiert oder Anpassbar; das Register erfasst den neuen Zustand."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "Automatisiertes Post-Install",
"href": "/docs/post-install/automated",
"tail": " — die sinnvolle Grundkonfiguration erneut anwenden."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — eine andere Auswahl treffen."
},
{
"label": "Deinstallieren Sie ProxMenux",
"href": "/docs/settings/uninstall-proxmenux",
"tail": "- andere Operation: entfernt ProxMenux selbst, nicht seine angewandten Optimierungen."
},
{
"label": "Übersicht Post-Install",
"href": "/docs/post-install",
"tail": "."
}
]
}
}
@@ -0,0 +1,112 @@
{
"meta": {
"title": "Verfügbare Updates anwenden — Optimierungen nach der Installation | ProxMenux Dokumentation",
"description": "Wie ProxMenux neue Versionen von Nachinstallationsoptimierungen wie Log2Ram, Speichereinstellungen, Systemlimits, Logrotate und Netzwerkanpassungen erkennt und wie Sie sie im Nachinstallationsmenü oder Monitor-Dashboard anwenden."
},
"header": {
"title": "Verfügbare Updates anwenden",
"description": "Liegt eine Nachinstallationsoptimierung (Log2Ram, Speichereinstellungen, Systemlimits, Logrotate …) auf dem Datenträger in einer neueren Version vor als der auf dem Host erfassten, zeigt ProxMenux ein verfügbares Update an. Sie können es im Nachinstallationsmenü der Skriptoberfläche oder im Monitor-Dashboard anwenden. Beide Wege führen dieselbe Nachinstallationsfunktion erneut aus und aktualisieren den gespeicherten Versionsstand.",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was das ist",
"body": "ProxMenux-Nachinstallationsoptimierungen haben Versionsnummern, etwa <code>Log2ram SSD Protection v1.2</code>. Der Host erfasst aktive Optimierungen und ihre Versionen in <code>/usr/local/share/proxmenux/installed_tools.json</code>. Liefert eine neue ProxMenux-Version eine aktualisierte Optimierung, erkennt ProxMenux den Unterschied und bietet an, nur diese erneut anzuwenden, ohne die gesamte Nachinstallation zu wiederholen."
},
"why": {
"heading": "Warum es das gibt",
"body": "Nachinstallationsoptimierungen erhalten Verbesserungen wie bessere sysctl-Einstellungen, strengere Logrotate-Limits, neue Log2RAM-Größenregeln oder Fehlerkorrekturen. Ohne Updateweg mussten Sie den ganzen Skriptlauf mit <em>allen</em> Optimierungen wiederholen oder auf die Verbesserung verzichten. Verfügbare Updates anwenden erlaubt die ausdrückliche Auswahl einzelner Optimierungen, deren Version sich geändert hat."
},
"detection": {
"heading": "Wie Updates erkannt werden",
"steps": [
{
"title": "Versionierte Skripte auf Disk",
"body": "Jede Funktion nach der Installation deklariert ihre Version innerhalb des Skripts (<code>scripts/post_install/auto_post_install.sh</code> und <code>scripts/post_install/customizable_post_install.sh</code>). Ein Scanner extrahiert diese Versionen aus der Quelle auf der Festplatte."
},
{
"title": "Versioniertes Register auf dem Host",
"body": "Wenn der Operator jede Optimierung anwendete, schrieb der entsprechende <code>register_tool</code>-Aufruf die aktive Version in <code>/usr/local/share/proxmenux/installed_tools.json</code>. Diese Datei ist die Quelle der Wahrheit für \"was auf diesem Host gerade aktiv ist\"."
},
{
"title": "Monitor vergleicht beide Seiten",
"body": "Beim Start und alle 24 Stunden vergleicht der Monitor Festplattenversionen mit Registrierungsversionen. Jede Inkongruenz führt zu einem Eintrag in <code>/usr/local/share/proxmenux/updates_available.json</code>. Diese Datei steuert sowohl den Post-Install-Menüeintrag als auch die Monitor-Dashboardkarte."
},
{
"title": "Eine Benachrichtigung pro neuer Version",
"body": "Wenn mindestens eine Optimierung ein ausstehendes Update hat, sendet der Monitor eine einzelne gruppierte Benachrichtigung aus - zum Beispiel <em>\"4 ProxMenux Optimierungsupdate(s) verfügbar\"</em> - mit einer Zeile pro Tool im selben <code>name (vX → vY)</code>-Format, das für Proxmox-Paketupdates verwendet wird. Die Benachrichtigung ist Anti-Kaskade, so dass sie sich nicht Tag für Tag für denselben Satz wiederholt; nur eine neue Version (oder ein neues Tool, das in die Liste eintritt) löst sie erneut aus."
}
]
},
"pathA": {
"heading": "Pfad A — Aus dem Menü nach der Installation",
"intro": "Öffnen Sie im ProxMenux-Hauptmenü <strong>Einstellungen nach der Installation von Proxmox</strong>. Bei ausstehenden Updates erscheint <strong>Verfügbare Updates anwenden (N)</strong> direkt über <em>Optimierungen deinstallieren</em>. Die Zahl zeigt die Optimierungen mit neuerer Version auf dem Datenträger als im Register. Ist alles aktuell, bleibt der Eintrag verborgen.",
"menuAlt": "Das Menü Post-Install Scripts zeigt den bedingte Eintrag \"Verfügbare Updates anwenden (N)\" direkt über \"Optimierungen deinstallieren\" an, wobei das Zählabzeichen anzeigt, wie viele Optimierungen eine neuere Version auf der Festplatte haben",
"menuCaption": "<em>Verfügbare Updates anwenden (N)</em> erscheint nur, wenn mindestens eine Optimierung ein Update hat, und wird bei aktuellem Host ausgeblendet.",
"checklistBody": "Öffnet eine Auswahlliste aller ausstehenden Updates, jeweils im Format <code>name (vX → vY)</code>. Alle Zeilen sind standardmäßig ausgewählt; wählen Sie die ab, die Sie diesmal nicht anwenden möchten.",
"checklistAlt": "Auswahldialog Verfügbare Updates anwenden mit einer Zeile pro Optimierung, ihrem Namen und Versionswechsel (aktuell → verfügbar). Alle Zeilen sind ausgewählt.",
"checklistCaption": "Jede Optimierung einzeln wählen: Entscheiden Sie, welche Versionen aktualisiert werden. Dieselbe Grundlage wie Automatisch und Anpassbar wendet die Funktionen im Hintergrund erneut an und aktualisiert ihre Registerversionen."
},
"pathB": {
"heading": "Pfad B — Vom Monitor-Dashboard",
"intro": "Dieselben Updates erscheinen unter <link>Einstellungen → ProxMenux-Optimierungen</link> im Monitor. Bei ausstehenden Updates zeigt die Karte ein <strong>Update-Zählabzeichen</strong>, das die Auswahl einzelner Optimierungen öffnet. Jedes Werkzeug bietet auch eine eigene Updateaktion.",
"imageAlt": "Karte ProxMenux-Optimierungen in den Monitor-Einstellungen mit Zählabzeichen für ausstehende Updates zum Öffnen der Auswahl und Updateaktionen pro Werkzeug",
"imageCaption": "Die Optimierungskarte im Monitor bietet über ihr Zählabzeichen Zugriff auf Updates, sobald eine neuere Version auf dem Datenträger liegt, ohne Shell-Zugriff."
},
"applying": {
"heading": "Was beim Anwenden passiert",
"steps": [
{
"title": "Führt die Post-Installation-Funktion erneut aus",
"body": "Die Funktion der ausgewählten Optimierung wird gegen den Host erneut ausgeführt. Da jede Funktion nach der Installation <strong>idempotent</strong> ist, wird die Konfiguration nicht dupliziert - sie überschreibt die vorherige Version mit der neuen (Sysctl-Dateien, Drop-Ins, Serviceeinheiten usw.)."
},
{
"title": "Aktualisieren des Registers",
"body": "Der <code>register_tool</code>-Aufruf innerhalb der Funktion schreibt die neue Version in <code>installed_tools.json</code>. Beim nächsten Scan wird keine Diskrepanz mehr festgestellt und der Updateeintrag verschwindet sowohl aus dem Menü als auch aus der Monitorkarte."
},
{
"title": "Kein Neustart, es sei denn, die Funktion sagt es",
"body": "Die meisten Updates werden sofort wirksam. Updates, die Kernelmodule, persistente Schnittstellennamen oder VFIO berühren, zeigen die gleiche Neustartaufforderung wie eine Neuinstallation."
},
{
"title": "Registrieraktualisierung an den Monitor gesendet",
"body": "Nach dem Durchlauf sendet das Menü eine POST-Anfrage an <code>http://127.0.0.1:8008/api/updates/post-install/scan</code>, um <code>/usr/local/share/proxmenux/updates_available.json</code> neu zu erstellen. Nach Anwendung aller Updates verschwinden das Update-Zählabzeichen und der bedingte Shell-Menüeintrag ohne Warten auf den nächsten Scan. Die Optimierungskarte bleibt verfügbar."
}
],
"jqTitle": "jq ist erforderlich",
"jqBody": "Die Path-A-Checkliste basiert auf <code>jq</code>, um die ausstehenden Updates JSON zu analysieren. Wenn <code>jq</code> fehlt, verlässt der Fluss lautlos - Sie würden den Menüeintrag mit einer Zählung sehen, aber nach dem Auswählen von Zeilen würde nichts passieren. Auf jeder modernen Proxmox-Installation ist <code>jq</code> vorhanden; im Zweifelsfall führen Sie <code>apt install -y jq</code> aus."
},
"differs": {
"heading": "Wie es sich von den anderen Pfaden unterscheidet",
"headerPath": "Path",
"headerScope": "Umfang",
"headerWhen": "Wenn es Sinn macht",
"rows": [
{
"pathLabel": "Automatisch",
"pathHref": "/docs/post-install/automated",
"scope": "Wendet <em>jede</em> Optimierung des Pakets erneut an.",
"when": "Frischer Host oder vollständige Re-Baseline eines vollständig verwalteten Knotens."
},
{
"pathLabel": "Anpassbar",
"pathHref": "/docs/post-install/customizable",
"scope": "Wählen Sie aus dem vollständigen Katalog.",
"when": "Gezielt auswählen, welche Optimierungen auf dem Host aktiv sind."
},
{
"pathLabel": "Verfügbare Updates anwenden",
"pathHref": null,
"scope": "Nur Optimierungen mit neuerer Version auf dem Datenträger.",
"when": "Halten Sie bereits installierte Optimierungen aktuell, ohne den Rest zu berühren."
},
{
"pathLabel": "Optimierungen deinstallieren",
"pathHref": "/docs/post-install/uninstall",
"scope": "Optimierung rückgängig machen und ihren Registereintrag entfernen.",
"when": "Rollen Sie eine bestimmte Änderung zurück."
}
]
},
"notifTitle": "Benachrichtigung steuern",
"notifBody": "Ausstehende Updates werden durch <em>ProxMenux-Optimierungsupdates verfügbar</em> angekündigt. Das Ereignis ist auf allen Kanälen standardmäßig aktiv und kann unter <link>Einstellungen → Benachrichtigungen</link> pro Kanal stummgeschaltet werden. Es wird nur einmal pro unterschiedlicher Updategruppe ausgelöst, nicht bei jedem 24-Stunden-Scan."
}
@@ -0,0 +1,116 @@
{
"meta": {
"title": "Post-Install: Virtualisierung | ProxMenux Dokumentation",
"description": "Virtualisierungsoptionen im ProxMenux Anpassbares Post-Installationsskript: Installieren Sie automatisch den richtigen Gastagenten, wenn Proxmox in einem VM läuft, und aktivieren Sie IOMMU / VFIO, damit Sie PCI-Geräte (GPUs, NICs, HBAs) an Ihre eigenen VMs weitergeben können."
},
"header": {
"title": "Post-Install: Virtualisierung",
"section": "Einstellungen nach der Installation von Proxmox"
},
"intro": {
"title": "Was diese Kategorie abdeckt",
"body": "Zwei unabhängige Optionen. <strong>Passenden Gastagenten installieren</strong> hilft, wenn Proxmox selbst in einem anderen Hypervisor verschachtelt läuft. <strong>VFIO-IOMMU-Unterstützung aktivieren</strong> ist für die meisten Benutzer relevant: Es aktiviert die Kernelfunktionen zur direkten Zuweisung einer GPU, HBA oder Netzwerkkarte an eine VM mit nahezu nativer Leistung."
},
"guestAgent": {
"heading": "Relevanten Gastagenten installieren",
"intro": "Erkennt die Virtualisierungsumgebung des Proxmox-Hosts mit <code>systemd-detect-virt</code> und <code>dmidecode</code> und installiert das passende Gastwerkzeugpaket für die Kommunikation mit dem äußeren Hypervisor: geordnetes Herunterfahren, Uhrzeitsynchronisierung, IP-Meldung usw.",
"headerDetected": "Erkannter Host",
"headerPackage": "Installiertes Paket",
"rows": [
{
"detected": "QEMU / KVM",
"package": "qemu-guest-agent"
},
{
"detected": "VMware (ESXi, Workstation)",
"package": "open-vm-tools"
},
{
"detected": "VirtualBox",
"package": "virtualbox-guest-utils"
},
{
"detected": "Direkt auf Hardware (keiner)",
"package": "— no-op, nichts installiert"
}
],
"skipTitle": "Überspringen Sie dies auf Bare-Metal Proxmox",
"skipBody": "Wenn Proxmox direkt auf Hardware läuft (der übliche Fall), ist das Ankreuzen dieser Option ein No-Op - der Detektor gibt <code>none</code> zurück und das Skript wird ohne Änderungen beendet. Die Option ist nur für die Minderheit der Setups wichtig, die Proxmox <em> als Gast</em> für Tests oder Labors ausführen."
},
"vfio": {
"heading": "VFIO IOMMU-Unterstützung aktivieren",
"intro": "Aktiviert IOMMU auf dem Host und lädt die Kernelmodule für PCI-Passthrough (<code>vfio</code>, <code>vfio_iommu_type1</code>, <code>vfio_pci</code>). Damit kann ein physisches Gerät direkt einer VM zugewiesen werden, deren Gast einen nahezu hardwaredirekten Zugriff erhält.",
"whoTitle": "Wer das braucht",
"whoItems": [
"Sie möchten eine GPU an eine Windows-Gaming-VM oder macOS-VM durchreichen.",
"Sie haben eine dedizierte 10G NIC für eine Firewall / Router VM (OPNsense, pfSense).",
"Sie möchten einen HBA direkt an einen TrueNAS/Unraid VM für ZFS auf nackten Festplatten übergeben.",
"Sie planen, <em>Coral TPU</em>, eine Capture-Karte oder einen SDR-Dongle in einem VM zu verwenden."
],
"whoOutro": "Trifft nichts davon zu, können Sie die Option sicher überspringen. Für die Geräteweitergabe an einen <strong>LXC</strong>-Container statt an eine VM ist IOMMU <em>nicht</em> erforderlich.",
"doesTitle": "Was ProxMenux tut",
"doesIntro": "Die Funktion ist bootloaderbewusst: Sie erkennt, ob Proxmox auf ZFS (systemd-boot) oder LVM/ext4 (GRUB) ist und schreibt in die richtige Datei. Es ist auch idempotent - wenn die Parameter bereits vorhanden sind, wird nichts hinzugefügt.",
"headerBoot": "Bootstyp",
"headerFile": "Geänderte Datei",
"headerPost": "Schritt nach der Aktualisierung",
"bootRows": [
{
"boot": "systemd-boot (ZFS)",
"file": "/etc/kernel/cmdline",
"post": "proxmox-boot-tool refresh"
},
{
"boot": "GRUB (LVM/ext4)",
"file": "/etc/default/grub",
"post": "update-grub"
}
],
"kernelIntro": "Zusätzliche Kernelparameter:",
"modulesIntro": "Kernelmodule, die <code>/etc/modules</code> hinzugefügt wurden:",
"blacklistIntro": "Konfliktierende Treiber auf der schwarzen Liste in <code>/etc/modprobe.d/blacklist.conf</code>:",
"blacklistTitle": "GPU-Treibersperren verhindern die GPU-Nutzung auf dem Host",
"blacklistBody": "Die Sperrliste verhindert, dass der Host-Kernel <em>irgendeinen</em> GPU-Treiber bindet, damit VFIO die GPU übernehmen kann. Das ist für die Durchreichung an eine VM erwünscht, aber das <strong>Gegenteil</strong> dessen, was Sie zum <link>Installieren von NVIDIA-Treibern auf dem Host</link> benötigen, etwa für LXC-Transcodierung. Wählen Sie pro GPU einen Weg:",
"pathItems": [
"<strong>GPU → VM:</strong> aktivieren VFIO/IOMMU hier, lassen Sie die GPU-Treiber auf der schwarzen Liste.",
"<strong>GPU → LXC (oder Host):</strong> überspringen Sie diese Option, installieren Sie NVIDIA auf dem Host und sperren Sie nvidia/nouveau nicht.",
"<strong>Zwei GPUs:</strong> Eine kann einer VM, die andere einem LXC zugeordnet werden. Dafür ist eine gezieltere Konfiguration nötig: Binden Sie nur eine Karte über ihre PCI-ID an <code>vfio-pci</code>. Die Standardsperrliste ist dafür zu umfassend; bearbeiten Sie danach <code>blacklist.conf</code>."
],
"acsTitle": "Über pcie_acs_override - wissen, was Sie aktivieren",
"acsBody": "<code>pcie_acs_override=downstream,multifunction</code> entspannt den PCIe Access Control Services Check. Es ermöglicht dem Kernel, IOMMU-Gruppen aufzuteilen, die von der Firmware als monolithisch gemeldet werden, was manchmal die einzige Möglichkeit ist, ein Gerät einer Gruppe zu durchlaufen, ohne den Rest zu ziehen. Der Kompromiss ist <strong> reduzierte Isolation zwischen Geräten</strong>: ein bösartiger oder kompromittierter VM mit Durchgang hat eine größere Angriffsfläche über DMA. Gut für ein Heimlabor; Überlegen Sie zweimal, bevor Sie einen Host aktivieren, der nicht vertrauenswürdige Workloads ausführt. Wenn Sie es nicht benötigen, entfernen Sie dieses Token aus <code>/etc/kernel/cmdline</code> oder <code>/etc/default/grub</code>, nachdem das Skript ausgeführt wurde, und führen Sie den Schritt zur Aktualisierung des Bootloaders erneut aus.",
"rebootTitle": "Reboot erforderlich",
"rebootBody": "IOMMU, VFIO-Module und Sperrliste werden erst nach initramfs-Neuerstellung und Neustart wirksam. Das Skript führt <code>update-initramfs -u -k all</code> und die Bootloader-Aktualisierung aus und setzt „Neustart erforderlich“, sodass Anpassbar am Ende danach fragt.",
"verifyTitle": "Überprüfung nach dem Neustart",
"revertTitle": "Reversibel aus dem Menü Deinstallieren",
"revertBody": "<link>Optimierungen deinstallieren</link> macht alle Änderungen rückgängig: entfernt IOMMU-Parameter aus <code>/etc/kernel/cmdline</code> oder GRUB, VFIO-Module aus <code>/etc/modules</code> und die Treibersperren und erstellt initramfs neu. Erst ein Neustart wendet die Rücknahme an."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"label": "GPU zu VM hinzufügen (Passthrough)",
"href": "/docs/hardware/gpu-vm-passthrough",
"tail": "— natürlicher nächster Schritt, sobald IOMMU + VFIO aktiviert sind."
},
{
"label": "Controller oder NVMe zu VM hinzufügen",
"href": "/docs/disk-manager/add-controller-nvme-vm",
"tail": " — dieselbe Passthrough-Infrastruktur für Speichercontroller."
},
{
"label": "GPU-Passthrough-Befehle",
"href": "/docs/help-info/gpu-commands",
"tail": "Referenz der IOMMU-Prüfung."
},
{
"label": "Optimierungen deinstallieren",
"href": "/docs/post-install/uninstall",
"tail": " — IOMMU/VFIO sauber rückgängig machen."
},
{
"label": "Anpassbare Nachinstallation",
"href": "/docs/post-install/customizable",
"tail": " — zurück zum übergeordneten Menü."
}
]
}
}
+152
View File
@@ -0,0 +1,152 @@
{
"meta": {
"title": "Fail2Ban | ProxMenux-Dokumentation",
"description": "Installieren Sie Fail2Ban mit drei jails abgestimmt auf Proxmox (SSH aggressiv, Proxmox UI 8006, ProxMenux Monitor 8008). Beinhaltet den Fix journald MaxLevelStore, benutzerdefinierte Protokolldienste für Zuverlässigkeit, automatisch erkanntes nftables/iptables-Backend und SSH MaxAuthTries Härtung.",
"ogTitle": "Fail2Ban | ProxMenux-Dokumentation",
"ogDescription": "Brute-Force-Schutz für SSH und Proxmox-Weboberflächen mit Proxmox-spezifischen journald- und Backend-Korrekturen."
},
"header": {
"title": "Fail2Ban",
"description": "Installiert Fail2Ban für Proxmox: drei Jails (SSH aggressiv, Proxmox-Weboberfläche auf 8006, ProxMenux Monitor auf 8008 und Reverse Proxy), journald-Korrektur zum Speichern von SSH-Anmeldeereignissen, zwei Journal-zu-Datei-Dienste als Umgehung eines bekannten systemd-Backend-Problems, automatische Firewall-Backend-Erkennung und SSH-Härtung mit MaxAuthTries.",
"section": "Sicherheit"
},
"intro": {
"title": "Was das macht",
"body": "Installiert Fail2Ban aus Debian-Paketquellen und schreibt eine Proxmox-Konfiguration, die SSH, Proxmox-Weboberfläche und ProxMenux Monitor sofort schützt. Bei vorhandener Installation erscheint stattdessen ein Verwaltungsmenü zum Neuinstallieren oder Entfernen."
},
"firstLaunch": {
"heading": "Erststart-Dialog",
"body": "Ohne vorhandenes Fail2Ban zeigt das Skript einen Bestätigungsdialog mit den geplanten Installations- und Konfigurationsschritten. Abbrechen beendet ohne Änderungen; Bestätigen startet die Installation.",
"imageAlt": "Fail2Ban-Installationsbestätigung mit drei Jails, journald-Korrektur und SSH-Härtung"
},
"jails": {
"heading": "Die drei jails",
"headerJail": "Jail",
"headerProtects": "Schützt",
"headerRetries": "Fehlversuche / Zeitfenster",
"headerBan": "Sperrdauer",
"rows": [
{
"jail": "[sshd]",
"protects": "SSH (aggressiver Modus — umfasst ddos, mode, normal)",
"retries": "2 / 60 min",
"ban": "9 Stunden"
},
{
"jail": "[proxmox]",
"protects": "Proxmox web UI (Port 8006)",
"retries": "3 / 10 min",
"ban": "1 Stunde"
},
{
"jail": "[proxmenux]",
"protects": "ProxMenux Monitor (Port 8008 + http/https Reverse Proxy)",
"retries": "3 / 10 min",
"ban": "1 Stunde"
}
],
"outro": "Globale Standardwerte von <code>jail.local</code>: <code>ignoreip = 127.0.0.1/8 ::1</code>, <code>ignoreself = true</code>,<code> bantime = 86400</code> (24-Stunden-Fallback für jails, die es nicht überschreiben), <code>maxretry = 2</code>, <code>findtime = 1800</code>."
},
"journald": {
"heading": "Warum die journald-Korrektur wichtig ist",
"intro": "Proxmox liefert <code>/etc/systemd/journald.conf</code> mit <codeNw>MaxLevelStore=warning</codeNw>. journald verwirft Meldungen <em>unterhalb</em> von warning vor dem Speichern. SSH und PAM melden Anmeldefehler auf den Stufen <em>info</em> / <em>notice</em>, daher :",
"diagram": {
"sshLabel": "SSH / PAM",
"sshDetail": "Anmeldefehler\n(Stufe info / notice)",
"journaldLabel": "journald",
"journaldDetail": "MaxLevelStore=warning\n→ Ereignis ohne Hinweis verworfen",
"fail2banLabel": "Fail2Ban",
"fail2banDetail": "Nichts sehen\nNiemals etwas verbieten",
"arrowLabel": "Standard Proxmox"
},
"afterDiagram": "Der Installateur erkennt dies und schreibt ein Drop-in bei <codeXs>/etc/systemd/journald.conf.d/proxmenux-loglevel.conf</codeXs> und erhöht sowohl <code>MaxLevelStore</code> als auch <code>MaxLevelSyslog</code> auf <code>info</code>:",
"code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
"outro": "Dann startet <code>systemd-journald</code> neu. Das Drop-In wird bei der Deinstallation entfernt, wodurch der ursprüngliche Proxmox-Standard wiederhergestellt wird."
},
"loggers": {
"heading": "Warum zwei Custom Logger Services",
"intro1": "Fail2Ban kann direkt aus dem systemd-Journal lesen (<code>backend = systemd</code>). Auf Proxmox gibt es jedoch bekannte Zuverlässigkeitsprobleme mit Worker-Prozessen von <code>pvedaemon</code>: Anmeldeereignisse erscheinen im Journal, werden aber nicht immer erkannt. Zeitweise betrifft dies auch <code>sshd</code>.",
"intro2": "ProxMenux erstellt zwei kleine systemd-Dienste, die die betreffenden Units mit <code>journalctl -f</code> verfolgen und jede Zeile an eine Datei anhängen. Fail2Ban liest diese Dateien mit dem zuverlässigen <code>backend = auto</code> (Dateimodus) :",
"headerService": "Dienst",
"headerSource": "Quelleneinheit",
"headerOutput": "Ausgabedatei",
"rows": [
{
"service": "proxmox-auth-logger.service",
"source": "pvedaemon.service",
"output": "/var/log/proxmox-auth.log"
},
{
"service": "ssh-auth-logger.service",
"source": "ssh.service",
"output": "/var/log/ssh-auth.log"
}
],
"outro": "Beide Dienste sind als <code>PartOf=fail2ban.service</code> deklariert, sodass sie mit Fail2Ban neu starten und damit stoppen. Modus 640 im Besitz von <code>root:adm</code> in den Protokolldateien. Das dritte Protokoll, das von <code>[proxmenux]</code> jail (<code>/var/log/proxmenux-auth.log</code>) verwendet wird, wird direkt von der App ProxMenux Monitor Flask geschrieben – dafür ist kein Logger-Dienst erforderlich."
},
"backend": {
"heading": "Firewall-Backend-Autoerkennung",
"intro": "Der Installer prüft den Host: Wenn <code>nft list ruleset</code> funktioniert, wählt er <code>nftables</code> als Sperraktion. Ansonsten fällt es auf <code>iptables-multiport</code> / <code>iptables-allports</code> zurück. Die Auswahl ist in <code>jail.local</code> geschrieben:",
"code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
},
"hardening": {
"heading": "SSH-Härtung: MaxAuthTries",
"intro": "Die Lynis-Prüfung <strong>SSH-7408</strong> empfiehlt <code>MaxAuthTries 3</code> in <code>sshd_config</code>. Die SSH-Jail verwendet <code>maxretry = 2</code> für Sperren nach wiederholten Fehlversuchen; MaxAuthTries begrenzt die Versuche innerhalb einer Verbindung. Diese SSH-Einstellung bietet zusätzliche Abwehr, auch bei wegen Wartung gestopptem Fail2Ban.",
"installerIntro": "Der Installer:",
"items": [
"Lesen Sie den aktuellen <code>MaxAuthTries</code>-Wert (oder standardmäßig 6, falls nicht vorhanden).",
"Speichert es in <code>/usr/local/share/proxmenux/sshd_maxauthtries_backup</code>.",
"Bearbeitet <code>sshd_config</code> direkt: ersetzt die vorhandene Zeile, entfernt das Kommentarzeichen oder fügt eine neue Zeile hinzu.",
"Lädt <code>sshd</code> neu, ohne den Dienst neu zu starten, damit bestehende Sitzungen aktiv bleiben."
],
"outro": "Bei der Deinstallation wird der gespeicherte Originalwert wiederhergestellt und <code>sshd</code> erneut geladen."
},
"manage": {
"heading": "Verwalten einer vorhandenen Installation",
"intro": "Wenn Fail2Ban beim Öffnen des Menüs bereits installiert ist, erkennt das Skript es und zeigt ein Verwaltungsmenü an, anstatt das Installationsprogramm erneut auszuführen:",
"headerAction": "Aktion",
"headerWhat": "Was es tut",
"rows": [
{
"action": "Neuinstallieren",
"what": "Führt den vollständigen Installer erneut aus und schreibt alle Jails mit den aktuellen ProxMenux-Vorgaben neu. Verwenden Sie dies, wenn ein Update die empfohlenen Werte ändert."
},
{
"action": "Entfernen",
"what": "Stoppt fail2ban und die beiden Logger-Dienste, löscht das apt-Paket, entfernt alle jail/Filterdateien, löscht das journald-Drop-In (stellt die Proxmox-Standardeinstellung wieder her) und stellt das ursprüngliche SSH wieder her. MaxAuthTries."
}
]
},
"verify": {
"heading": "Überprüfen Sie, ob es funktioniert",
"intro": "Nach der Installation nützliche Befehle vom Host:",
"code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"neverBansTitle": "Fail2Ban läuft, verbietet aber niemals etwas",
"neverBansBody": "Prüfen Sie, ob <code>tail -f /var/log/ssh-auth.log</code> nach einer SSH-Anmeldung mit falschem Passwort von einem anderen Rechner einen Eintrag erhält. Bleibt die Datei leer, prüfen Sie <code>systemctl status ssh-auth-logger.service</code>. Ist der Logger aktiv, zeigen Sie aktuelle SSH-Ereignisse mit <code>journalctl -u ssh.service -n 50 --no-pager -p info</code> an und prüfen, ob der journald-Zusatz die Stufe <em>info</em> erlaubt.",
"monitorEmptyTitle": "ProxMenux Monitor jail hat keine Einträge, auch nach fehlgeschlagenen Anmeldungen",
"monitorEmptyBody": "Der <code>[proxmenux]</code> jail liest <code>/var/log/proxmenux-auth.log</code>, der von der ProxMenux Monitor Flask-App geschrieben wurde – nicht von einem journald-Logger. Wenn Sie den Monitor nicht ausführen, bleibt die Datei leer und jail wird nie ausgelöst. Das wird erwartet; Die jail-Konfiguration ist harmlos. Wenn Sie den Monitor ausführen und das Protokoll leer ist, überprüfen Sie die Protokollierungskonfiguration Flask.",
"selfBanTitle": "Ich habe meinen eigenen Zugriff gesperrt",
"selfBanIntro": "Von einer Konsole / IPMI / iKVM (oder einer anderen Whitelist-IP):",
"selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
"aptFailTitle": "apt-get schlägt fehl: ''Unable to locate package fail2ban''",
"aptFailBody": "Dem Host fehlen die Debian-Repos (üblich bei Barebones, die Proxmox installiert). Der Installateur erkennt dies und schreibt <code>/etc/apt/sources.list.d/debian.sources</code> mit dem richtigen Codenamen (<code>bookworm</code> / <code>trixie</code>), bevor er es erneut versucht. Wenn es immer noch fehlschlägt, überprüfen Sie <code>/etc/os-release</code> für <code>VERSION_CODENAME</code> und bestätigen Sie, dass die Repo-URL erreichbar ist.",
"lockoutTitle": "SSH sperrt mich nach der Installation aus",
"lockoutBody": "Das Installationsprogramm setzt <code>MaxAuthTries=3</code>. Wenn Ihr Passwort-Manager / Agent mehrere Schlüssel wiederholt, können Sie diese bei einem einzigen Verbindungsversuch überschreiten. Begrenzen Sie die angebotenen Schlüssel: <code>ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host</code>. Oder erhöhen Sie <code>MaxAuthTries</code> vorübergehend in <code>sshd_config</code>, während Sie debuggen."
},
"files": {
"heading": "Dateien geschrieben",
"code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
},
"related": {
"heading": "Verwandte Themen",
"monitorLabel": "ProxMenux Monitor - Sicherheits-Tab",
"monitorTail": " — Installation über das Dashboard, aktueller Jail-Status, gesperrte IP-Adressen und Einstellung von Fehlversuchen und Sperrdauer je Jail im Browser.",
"lynisLabel": "Lynis",
"lynisTail": " — führen Sie vorher und nachher eine Sicherheitsprüfung aus, um die Erfüllung von SSH-7408 zu bestätigen.",
"securityLabel": "Sicherheitsübersicht",
"securityTail": " — zurück zur Abschnittsübersicht."
}
}
+70
View File
@@ -0,0 +1,70 @@
{
"meta": {
"title": "Proxmox-Sicherheit — Fail2Ban, Lynis-Härtungsprüfung | ProxMenux",
"description": "Zwei installierbare Sicherheitswerkzeuge für Proxmox VE: Fail2Ban (Einbruchsschutz für SSH, Proxmox-Weboberfläche und ProxMenux Monitor) und Lynis (Sicherheits- und Härtungsprüfung aus dem offiziellen GitHub-Repository).",
"ogTitle": "Proxmox-Sicherheit — Fail2Ban und Lynis-Härtungsprüfung",
"ogDescription": "Fail2Ban und Lynis für Proxmox VE: Einbruchsschutz und Härtungsprüfung, installiert und verwaltet durch ProxMenux.",
"twitterTitle": "Proxmox Sicherheit | ProxMenux",
"twitterDescription": "Fail2Ban und Lynis für Proxmox VE: Einbruchsschutz und Härtungsprüfung."
},
"header": {
"title": "Sicherheit",
"description": "Zwei ergänzende Sicherheitswerkzeuge für Proxmox VE: aktive Abwehr (Fail2Ban sperrt IP-Adressen, die SSH oder Weboberflächen angreifen) und Offline-Prüfung (Lynis sucht Härtungslücken und vergibt 0–100 Punkte). Beide haben ein eigenes Installations- und Verwaltungsmenü, das vorhandene Installationen vor jeder Aktion erkennt.",
"section": "Sicherheit"
},
"intro": {
"title": "Aktive Abwehr und Offline-Prüfung",
"body": "Sie beantworten unterschiedliche Fragen. <strong>Fail2Ban</strong> beantwortet <em>„Werden wir gerade angegriffen?“</em>, indem es Anmeldeprotokolle überwacht und angreifende IP-Adressen sperrt. <strong>Lynis</strong> beantwortet <em>„Wie gut ist dieser Host gehärtet?“</em> mit einer einmaligen Prüfung und konkreten Empfehlungen. Nutzen Sie beide: Lynis zeigt Verbesserungen auf, Fail2Ban reagiert auf laufende Angriffe."
},
"opening": {
"heading": "Öffnen des Menüs",
"body": "Wählen Sie im ProxMenux-Hauptmenü <strong>Sicherheit</strong>. Folgendes wird angezeigt :",
"imageAlt": "Sicherheitsmenü mit Fail2Ban und Lynis Optionen"
},
"pick": {
"heading": "Wählen Sie Ihr Werkzeug",
"body": "Die beiden Werkzeuge sind unabhängig: Installieren Sie eines, beide oder keines. Jede Karte unten führt zum Abschnitt mit der ausführlichen Erklärung."
},
"cards": {
"fail2ban": {
"title": "Fail2Ban",
"body": "Aktiver Einbruchsschutz. Überwacht Anmeldeprotokolle von SSH und Weboberflächen und sperrt IP-Adressen nach wiederholten Fehlversuchen.",
"bullets": [
"Drei jails: SSH, Proxmox UI (8006), ProxMenux Monitor (8008)",
"Korrigiert Proxmox-Standardeinstellungen von journald, die Anmeldeprotokolle blockieren",
"Erkennt nftables / iptables automatisch",
"SSH-Härtung: MaxAuthTries=3 (Empfehlung von Lynis)"
]
},
"lynis": {
"title": "Lynis",
"body": "Offline-Sicherheitsprüfer. Prüft den Host und zeigt eine Härtungsbewertung sowie konkrete Hinweise zur Behebung von Problemen.",
"bullets": [
"Aus dem offiziellen CISOfy-GitHub-Repository installiert (neueste Version)",
"Härtungsbewertung 0–100 und Liste mit Warnungen und Vorschlägen",
"Prüfung und Aktualisierung über das Menü",
"Nur lesend konzipiert: verändert das System nicht"
]
}
},
"workflowTip": {
"title": "Workflow, der beides nutzt",
"body": "Führen Sie zuerst Lynis aus, um Ausgangsbewertung und wichtigste Empfehlungen zu sehen. Setzen Sie gewünschte Korrekturen um. Installieren Sie dann Fail2Ban: Es setzt automatisch den SSH-Brute-Force-Schutz um und passt <code>MaxAuthTries</code> in <code>sshd_config</code> an die Prüfung SSH-7408 an. Prüfen Sie anschließend mit Lynis die Verbesserung."
},
"fail2banSection": {
"heading": "Fail2Ban",
"body": "ProxMenux installiert Fail2Ban mit einer speziell für Proxmox optimierten Konfiguration. Über den Standard SSH jail hinaus bietet es Schutz für das Proxmox-Web UI und das ProxMenux Monitor und umgeht zwei Proxmox-spezifische Macken: eine journald-Standardeinstellung, die Authentifizierungsereignisse verwirft, und die systemd-Backend-Problem, das verhindert, dass Fail2Ban bestimmte Journalquellen zuverlässig liest. Die Detailseite behandelt den vollständigen Installationsablauf, die drei jails, den journald-Fix, die SSH-Härtungsänderung und den Fehlerbehebungs-Cheatsheet.",
"optionTitle": "Fail2Ban — installieren und verwalten",
"optionDescription": "Drei vorkonfigurierte Jails (sshd aggressiv, Proxmox-Weboberfläche auf 8006, ProxMenux Monitor auf 8008 und Reverse Proxy), automatische nftables/iptables-Erkennung, journald-Korrektur und SSH-Härtung mit MaxAuthTries."
},
"lynisSection": {
"heading": "Lynis",
"body": "ProxMenux klont Lynis von <code>github.com/CISOfy/lynis</code> nach <code>/opt/lynis</code> und macht es als <code>/usr/local/bin/lynis</code> verfügbar. Das Debian-Paket wird bewusst vermieden, da es mehrere Hauptversionen hinter dem Originalprojekt liegt. Die Detailseite erklärt Installation, Prüfung, Aktualisierung, Deinstallation, Auswertung des Berichts und Umsetzung der Ergebnisse.",
"optionTitle": "Lynis — installieren, auditieren und verwalten",
"optionDescription": "Installiert das neueste Lynis aus dem offiziellen CISOfy GitHub-Repo (nicht das ältere Debian-Paket), führt Systemaudits mit Hardening-Score und Updates per Git Pull aus."
},
"componentStatus": {
"heading": "Komponentenstatus",
"body": "Beide Installateure registrieren ihren Status in <code>/usr/local/share/proxmenux/components_status.json</code> unter der Kategorie <code>security</code>. ProxMenux verwendet diese Datei, um zu entscheiden, ob die Installation oder das Menü bei nachfolgenden Durchläufen angezeigt werden soll, und die gleichen Daten speisen die Dashboards im ProxMenux Monitor, wenn vorhanden."
}
}
+170
View File
@@ -0,0 +1,170 @@
{
"meta": {
"title": "Lynis | ProxMenux-Dokumentation",
"description": "Installieren Sie die neueste Lynis-Version aus dem offiziellen CISOfy-GitHub-Repository, führen Sie eine Sicherheitsprüfung mit Härtungsbewertung 0–100 aus und aktualisieren Sie per git pull. Rein lesende Prüfung ohne Systemänderungen.",
"ogTitle": "Lynis | ProxMenux-Dokumentation",
"ogDescription": "Lynis-Sicherheitsprüfung auf Proxmox VE installieren und ausführen. Installation aus dem Original-GitHub-Repository, Prüfung und Aktualisierung."
},
"header": {
"title": "Lynis",
"description": "Klont die neueste Lynis-Version aus dem offiziellen CISOfy-GitHub-Repository, stellt sie als /usr/local/bin/lynis bereit und bietet Prüfung, Aktualisierung, Neuinstallation und Deinstallation im Menü. Der Auditor liest nur und meldet Ergebnisse, ohne das System zu ändern.",
"section": "Sicherheit"
},
"intro": {
"title": "Was das macht",
"body": "Installiert Lynis, den Open-Source-Sicherheitsprüfer von CISOfy, aus dessen GitHub-Repository nach <code>/opt/lynis</code> und erstellt einen Starter unter <code>/usr/local/bin/lynis</code> für den Aufruf über <code>PATH</code>. Eine vorhandene Installation öffnet stattdessen ein Verwaltungsmenü für Prüfung, Aktualisierung, Neuinstallation oder Entfernung."
},
"manageMenu": {
"heading": "Verwaltungsmenü (nach der Installation)",
"intro": "Nach der Installation öffnet jeder weitere Aufruf das Verwaltungsmenü. Dort können Sie eine Prüfung starten, per git pull aktualisieren, neu installieren oder deinstallieren.",
"imageAlt": "Lynis Management Menü mit Audit, Update, Neuinstallation und Entfernen von Optionen"
},
"whyUpstream": {
"heading": "Warum das Original-GitHub-Repository statt apt",
"intro": "Debian bietet Lynis über apt an, doch das Paket liegt meist mehrere Hauptversionen hinter dem Originalprojekt. Neue Prüfungen, Korrekturen für neue Angriffsvektoren und überarbeitete Empfehlungen erscheinen zuerst auf GitHub. Lynis ist ein eigenständiges Shell-Skript ohne Kompilierung und ohne weitere Installationsabhängigkeiten außer <code>git</code>; CISOfy empfiehlt daher das Klonen des Repositorys.",
"headerSource": "Quelle",
"headerPath": "Install path",
"headerUpdate": "Aktualisierungsmethode",
"headerFresh": "Aktualität der Version",
"rows": [
{
"sourceRich": "<strong>ProxMenux (dieses Skript)</strong>",
"path": "/opt/lynis/",
"update": "git pull (im Menü)",
"fresh": "Neueste Version des Originalprojekts"
},
{
"sourceRich": "<strong>Debian apt</strong>",
"path": "/usr/bin/lynis",
"update": "apt upgrade",
"fresh": "Oft Monate / Jahre zurück"
}
]
},
"install": {
"heading": "Wie die Installation funktioniert",
"node1Label": "github.com/CISOfy/lynis",
"node1Detail": "git clone\n(git zuerst installieren, falls nicht vorhanden)",
"node2Label": "/opt/lynis/",
"node2Detail": "Vollständiges Repo\neinschließlich ./lynis Skript",
"node3Label": "/usr/local/bin/lynis",
"node3Detail": "Umschlag:\ncd /opt/lynis && ./lynis $@",
"outro": "Der Wrapper ist obligatorisch - Lynis besteht darauf, aus seinem eigenen Verzeichnis ausgeführt zu werden, da er relative Pfade für Plugins und Profildaten lädt. Der Wrapper verbirgt dieses Detail, so dass <code>lynis audit system</code> von überall aus funktioniert."
},
"detection": {
"heading": "Detektionspfade",
"intro": "Bevor Sie das Menü anzeigen, überprüft das Skript drei Standorte, um zu entscheiden, ob Lynis bereits vorhanden ist:",
"items": [
"<code>/usr/local/bin/lynis</code> — Wrapper installiert von ProxMenux",
"<code>/opt/lynis/lynis</code> — direkter Pfad (falls der Wrapper entfernt wurde)",
"<code>/usr/bin/lynis</code> — apt-installierte Version, wenn der Benutzer es zuvor so installiert hat"
],
"outro": "Wird einer dieser Pfade gefunden, öffnet sich das Verwaltungsmenü. Das Skript deinstalliert <strong>kein</strong> über apt installiertes Lynis, sondern nur die selbst verwaltete Installation in <code>/opt/lynis</code> samt Starter."
},
"audit": {
"heading": "Durchführung eines Audits",
"intro": "Wählen Sie im Verwaltungsmenü <strong>Sicherheitsprüfung jetzt ausführen</strong>. Das entspricht folgendem Aufruf :",
"code": "lynis audit system --no-colors",
"outro": "Die Prüfung dauert je nach Hostgröße 30 Sekunden bis einige Minuten. Die Ausgabe erscheint direkt im Terminal, ohne Warteanimation. Lynis gliedert die Prüfungen nach Kategorien und kennzeichnet Tests mit <ok>[ OK ]</ok>, <warn>[ WARNING ]</warn> oder <sugg>[ SUGGESTION ]</sugg>. Die abschließende Zusammenfassung enthält die wichtigsten Zahlen :",
"summary": "================================================================================\n\n Lynis security scan details:\n\n Hardening index : 76 [############ ]\n Tests performed : 247\n Plugins enabled : 0\n\n Components:\n - Firewall [V]\n - Malware scanner [X]\n\n Lynis modules:\n - Compliance status [?]\n - Security audit [V]\n - Vulnerability scan [V]\n\n================================================================================"
},
"report": {
"heading": "Lesen Sie den Bericht",
"intro": "Die beiden wichtigen Abschnitte sind <strong>Warnings</strong> (Dinge, die Sie bald beheben sollten) und <strong>Suggestions</strong> (Empfehlungen zur Verbesserung der Härtung). Jedes Element trägt eine Kontroll-ID wie <code>SSH-7408</code> - nützlich bei der Suche nach den Lynis-Dokumenten für die Gründe und die Korrektur.",
"headerMarker": "Markierung",
"headerMeaning": "Bedeutung",
"headerAction": "Aktion",
"rows": [
{
"markerRich": "<strong>OK</strong>",
"meaning": "Test bestanden",
"action": "Nichts"
},
{
"markerRich": "<strong>WARNING</strong>",
"meaning": "Echtes Problem, Fix empfohlen",
"action": "Lesen Sie die Prüfungsbeschreibung und planen Sie eine Korrektur."
},
{
"markerRich": "<strong>SUGGESTION</strong>",
"meaning": "Härtungsverbesserung verfügbar",
"action": "Umsetzen, wenn es zu Ihrem Bedrohungsmodell passt"
}
],
"outro": "Der vollständige Bericht und die maschinenlesbaren Daten werden von Lynis selbst in <code>/var/log/lynis.log</code> und <code>/var/log/lynis-report.dat</code> geschrieben."
},
"pairFail2ban": {
"title": "Mit Fail2Ban kombinieren",
"body": "SSH-7408 (MaxAuthTries) ist eine der häufigsten Warnungen. Die Installation von <link>Fail2Ban</link> aus ProxMenux löscht es automatisch, da der Installer <code>MaxAuthTries=3</code> als Teil seines SSH-Härtungsschritts einstellt. Führen Sie Lynis danach erneut aus, um zu bestätigen, dass die Warnung verschwunden ist."
},
"update": {
"heading": "Lynis aktualisieren",
"body": "Im Verwaltungsmenü führt <strong>Lynis auf die neueste Version aktualisieren</strong> den Befehl <code>git pull --quiet</code> in <code>/opt/lynis</code> aus. Ist das Verzeichnis keine Git-Arbeitskopie, etwa nach manuellem Kopieren der Dateien, wird vollständig neu installiert."
},
"reinstall": {
"heading": "Reinstallieren / Deinstallieren",
"headerAction": "Aktion",
"headerWhat": "Was es tut",
"rows": [
{
"actionRich": "<strong>Neu installieren</strong>",
"whatRich": "Entfernt <code>/opt/lynis</code>, klont erneut von GitHub und erstellt den Starter neu. Für eine beschädigte lokale Arbeitskopie."
},
{
"actionRich": "<strong>Entfernen</strong>",
"whatRich": "Löscht <code>/opt/lynis</code> und <code>/usr/local/bin/lynis</code>. Protokolle bei <code>/var/log/lynis*</code> werden aufbewahrt (sie sind Audit-Historie). Ein apt-installiertes Lynis bei <code>/usr/bin/lynis</code> bleibt unberührt."
}
]
},
"cli": {
"heading": "Nützliche CLI Optionen",
"intro": "Einmal installiert, kann Lynis direkt von einer Shell aus aufgerufen werden, wobei zusätzliche Optionen im Menü nicht angezeigt werden:",
"code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"cloneTitle": "git clone schlägt bei der Installation fehl",
"cloneBody": "Der Host benötigt Netzwerkzugang und DNS, um <code>github.com</code> zu erreichen. Von einer Konsole: <code>curl -sI https://github.com</code> und <code>git ls-remote https://github.com/CISOfy/lynis.git</code> wird der tatsächliche Fehler (DNS, TLS, Proxy, Repo-URL) enthüllt. Wenn ein Proxy erforderlich ist, legen Sie <code>https_proxy</code> in der Umgebung fest, bevor Sie das Menü erneut ausführen.",
"notFoundTitle": "lynis: Befehl nach der Installation nicht gefunden",
"notFoundIntro": "Der Wrapper bei <code>/usr/local/bin/lynis</code> wurde entweder nicht erstellt oder entfernt. Schnellste Lösung: Neuinstallation aus dem Menü. Manuelle Fixierung:",
"notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
"sshTitle": "Die Prüfung zeigt \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
"sshIntro": "Der SSH-Daemon erlaubt zu viele Auth-Versuche pro Verbindung. Installieren Sie entweder <link>Fail2Ban</link> von ProxMenux (was <code>MaxAuthTries=3</code> automatisch einstellt) oder bearbeiten Sie <code>/etc/ssh/sshd_config</code> von Hand:",
"sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
"scoreTitle": "Score ging nach einem Proxmox-Upgrade zurück",
"scoreBody": "Führen Sie <code>lynis update info</code> zuerst aus - ein Lynis-Update hat möglicherweise neue Steuerelemente hinzugefügt, die bestehende Konfiguration kennzeichnen. Aktualisieren Sie Lynis aus dem Menü, überprüfen Sie es erneut und sprechen Sie die neuen Erkenntnisse an."
},
"files": {
"heading": "Dateien geschrieben",
"code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
},
"sample": {
"heading": "Beispielbericht",
"intro": "ProxMenux Monitor erstellt zu jedem Lynis-Durchlauf eine mehrseitige PDF-Datei im <link>Reiter Sicherheit</link>. Die erste Seite fasst Härtungsbewertung, Systeminformationen und Sicherheitslage zusammen. Die weiteren Seiten erläutern jede Warnung, ordnen Vorschläge nach Auswirkung und enthalten das bei der Prüfung verwendete Paketinventar.",
"imageAlt": "Erste Seite des Lynis Security Audit Report PDF – Zusammenfassung mit Hardening Index 71/100, Systeminformationsblock und Sicherheitsübersicht mit Firewall, Malware-Scanner und installierten Paketen",
"captionPrefix": "Erste Seite eines Beispielberichts. Die vollständige PDF-Datei (",
"captionLink": "Probe",
"captionSuffix": ") fährt mit detaillierten Warnungen, Vorschlägen und der Liste der installierten Pakete fort.",
"cli": "Auf der CLI-Seite befinden sich die gleichen Daten in <code>/var/log/lynis-report.dat</code> (maschinenlesbare Flat-Datei) und <code>/var/log/lynis.log</code> (das vom Menschen lesbare Run-Log). Die PDF-Datei wird auf Anfrage von ProxMenux Monitor generiert – die Ausführung von <code>lynis</code> aus der Befehlszeile erzeugt keine."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/monitor/dashboard/security",
"label": "ProxMenux Monitor - Sicherheits-Tab",
"tail": " — Prüfung ausführen, frühere Berichte ansehen und die PDF-Datei direkt aus dem Dashboard herunterladen."
},
{
"href": "/docs/security/fail2ban",
"label": "Fail2Ban",
"tailRich": "- implementiert den von Lynis empfohlenen Brute-Force-Schutz SSH."
},
{
"href": "/docs/security",
"label": "Sicherheitsübersicht",
"tail": " — zurück zur Abschnittsübersicht."
}
]
}
}
@@ -0,0 +1,169 @@
{
"meta": {
"title": "HTTPS für ProxMenux Monitor — Proxmox-Hostzertifikat oder eigene Pfade | ProxMenux",
"description": "Stellen Sie ProxMenux Monitor per HTTPS bereit, mit dem automatisch erkannten Proxmox-Hostzertifikat, einschließlich eines über Proxmox ACME installierten Let’s-Encrypt-Zertifikats, oder einem eigenen Zertifikat an beliebiger Stelle auf dem Datenträger.",
"ogTitle": "HTTPS für ProxMenux Monitor — Proxmox-Host oder benutzerdefiniertes Zertifikat",
"ogDescription": "Aktivieren Sie HTTPS am Port 8008 mit dem Proxmox-Hostzertifikat oder einem benutzerdefinierten .pem / .key-Paar."
},
"header": {
"title": "HTTPS für ProxMenux Monitor",
"description": "Aktivieren Sie HTTPS für Monitor auf Port 8008 mit dem automatisch erkannten Proxmox-Hostzertifikat oder einem eigenen Zertifikat auf dem Datenträger. Die Proxmox-Option bevorzugt das ACME-Zertifikat, falls vorhanden, und nutzt das von Proxmox verwaltete Let’s-Encrypt-Zertifikat ohne eigene Erneuerungsaufgabe.",
"section": "Sicherheit"
},
"intro": {
"title": "Was diese Seite abdeckt",
"body": "So wechseln Sie Monitor unter Einstellungen → Sicherheit von HTTP auf HTTPS, welche Dateien die Zertifikatsquellen verwenden, wie die Proxmox-Option mit Let’s Encrypt umgeht und wie Sie eigene Pfade für außerhalb von Proxmox verwaltete Zertifikate festlegen."
},
"wheresetting": {
"heading": "Wo Sie die Einstellung finden",
"body": "Öffnen Sie Monitor und gehen Sie zu <strong>Einstellungen → Sicherheit → HTTPS / SSL</strong>. Der Bereich zeigt HTTP oder HTTPS und bei noch deaktiviertem HTTPS die erkannten Zertifikatsquellen.",
"imageAlt": "Einstellungen → Sicherheit → HTTPS / SSL mit deaktiviertem HTTPS, erkanntem Proxmox-Zertifikat (Inhaber, Aussteller, Ablauf) und der Option für ein eigenes Zertifikat",
"caption": "Bereich Einstellungen → Sicherheit → HTTPS / SSL vor der Aktivierung. Monitor zeigt das von Proxmox verwendete Zertifikat und bietet es zur Auswahl mit einem Klick an."
},
"twoways": {
"heading": "Zwei Möglichkeiten, HTTPS zu aktivieren",
"proxmox": {
"title": "Das Proxmox-Zertifikat verwenden",
"summary": "Ein Klick: Monitor nutzt das Zertifikat, das Proxmox VE auf Port 8006 bereitstellt.",
"items": [
"Automatisch erkannt, keine Pfadeingabe erforderlich",
"Bevorzugt das ACME-Zertifikat, falls vorhanden; andernfalls das selbstsignierte Standardzertifikat",
"Proxmox erneuert; Monitor prüft und lädt das Zertifikat bei der nächsten neuen TLS-Verbindung"
]
},
"custom": {
"title": "Benutzerdefiniertes Zertifikat verwenden",
"summaryRich": "Richten Sie den Monitor auf ein <code>.pem</code> / <code>.key</code>-Paar überall auf der Festplatte.",
"items": [
"Nur absolute Pfade (der Monitor-Prozess muss beide lesen können)",
"Nützlich, wenn Zertifikate von <code>certbot</code>, <code>acme.sh</code> oder einer Wildcard stammen",
"Sie verwalten die Erneuerung: Starten Sie Monitor nach Dateiänderungen neu"
]
}
},
"proxmoxCert": {
"heading": "Proxmox-Zertifikat - was es tatsächlich zeigt",
"intro": "Proxmox VE führt zwei Zertifikatspaare in <code>/etc/pve/local/</code>:",
"table": {
"headers": {
"file": "Datei",
"origin": "Ursprung",
"when": "Wenn der Monitor es verwendet"
},
"rows": [
{
"fileRich": "<code>pveproxy-ssl.pem</code><br /><code>pveproxy-ssl.key</code>",
"originRich": "Benutzerdefiniertes Zertifikat, das über die Proxmox-Benutzeroberfläche hochgeladen wird - einschließlich des Let's Encrypt-Zertifikats, das unter <em>Datacenter → Node → Certificates → ACME</em> ausgestellt wurde.",
"when": "Bevorzugt, wenn beide Dateien existieren; Monitor nutzt das von Proxmox bereitgestellte Zertifikat."
},
{
"fileRich": "<code>pve-ssl.pem</code><br /><code>pve-ssl.key</code>",
"originRich": "Selbstsigniertes Zertifikat, das zum Zeitpunkt der Installation vom Proxmox PKI generiert wurde.",
"whenRich": "Fallback, wenn kein <code>pveproxy-ssl.pem</code> vorhanden ist."
}
]
},
"callout": {
"title": "Gleiche Priorität wie Proxmox selbst",
"bodyRich": "<code>pveproxy</code> nutzt dieselbe Auswahlregel. Mit der Proxmox-Option verwendet Monitor das Zertifikat der Proxmox-Weboberfläche auf Port 8006, ohne Kopieren oder getrennten Erneuerungsablauf."
}
},
"letsencrypt": {
"heading": "Erhalten eines Let's Encrypt Zertifikats über Proxmox ACME",
"intro": "Proxmox VE enthält einen eigenen ACME-Client. <em>„Order Certificate Now“</em> speichert das Ergebnis in <code>/etc/pve/local/pveproxy-ssl.pem</code>, das Monitor liest. Die folgenden fünf Schritte fassen die <extlink1>offizielle Proxmox-Anleitung</extlink1> in den benötigten Befehlen zusammen.",
"prereqs": {
"title": "Voraussetzungen",
"items": [
"Der Knoten hat einen echten DNS-Namen (nicht nur eine IP), der darauf zeigt.",
"<strong>Entweder</strong> Port 80 aus dem Internet erreichbar (HTTP-01-Prüfung, am einfachsten) <strong>oder</strong> ein DNS-Anbieter mit API-Zugangsdaten (DNS-01, funktioniert hinter NAT und unterstützt Wildcards).",
"Eine E-Mail-Adresse für das ACME-Konto."
]
},
"step1": {
"heading": "Schritt 1 — Registrieren Sie das ACME-Konto",
"introRich": "Ersetzen Sie die E-Mail durch Ihre. Der Kontoname <code>default</code> ist nur ein Label - Sie können eine beliebige Zeichenfolge verwenden.",
"code": "pvenode acme account register default you@example.com",
"afterRich": "Proxmox fordert Sie auf, die Nutzungsbedingungen von Let's Encrypt zu akzeptieren. Danach wird das Konto unter <code>/etc/pve/priv/acme/</code> fortgesetzt und die Registerkarte ACME in der GUI zeigt es an."
},
"step2": {
"heading": "Schritt 2 - Wählen Sie einen Herausforderungstyp",
"http01Rich": "<strong>HTTP-01</strong> ist das einfachste: es ist eingebaut, kein zusätzliches Plugin. Let's Encrypt verbindet sich mit <code>http://&lt;your-host&gt;/.well-known/acme-challenge/...</code> an Port 80, so dass Port 80 vom öffentlichen Internet zu Ihrem Knoten geöffnet sein muss - normalerweise ein Port vorwärts auf Ihrem Router.",
"dns01Rich": "<strong>DNS-01</strong> funktioniert ohne Port 80 (gut für Homelabs hinter CG-NAT) und ist die einzige Option für Wildcard-Zertifikate. Sie fügen ein DNS-Plugin einmal mit dem API-Token Ihres Providers hinzu. Cloudflare Beispiel:",
"code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
"outroRich": "Für andere Anbieter (Gandi, OVH, AWS Route 53 usw.) nutzen Sie <code>pvenode acme plugin add dns --help</code>. Proxmox enthält <extlink2>alle DNS-Plugins von acme.sh</extlink2>."
},
"step3": {
"heading": "Schritt 3 - Binden Sie die Domain an Ihren Knoten",
"http01Rich": "Für HTTP-01 (verwendet das eingebaute <code>standalone</code>-Plugin):",
"code1": "pvenode config set --acme domains=host.example.com,account=default",
"dns01": "Für DNS-01 mit dem Cloudflare-Plugin aus Schritt 2:",
"code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
"wildcardRich": "Wildcard? Fügen Sie <code>domain=*.example.com</code> auf einem separaten <code>--acmedomainN</code>-Eintrag hinzu. Wildcards erfordern DNS-01."
},
"step4": {
"heading": "Schritt 4 — Bestellen Sie das Zertifikat",
"code": "pvenode acme cert order",
"afterRich": "Der erste Lauf dauert normalerweise 30–60 Sekunden, während sich die Herausforderung ausbreitet. Beim Erfolg schreibt Proxmox <code>/etc/pve/local/pveproxy-ssl.pem</code> + <code>.key</code>, startet <code>pveproxy</code> neu und ein Erneuerungs-Cron wird automatisch geplant (Let's Encrypt Zertifikate sind gültig 90 Tage; Proxmox erneuert bei 60)."
},
"step5": {
"heading": "Schritt 5 — Überprüfung des Emittenten",
"code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
"afterRich": "Sollte einen Emittenten ab <code>O = Let's Encrypt</code> drucken. Wenn stattdessen <code>CN = Proxmox Virtual Environment</code> gelesen wird, ist die Bestellung fehlgeschlagen und die Datei ist immer noch das selbstsignierte PVE-Zertifikat - führen Sie <code>pvenode acme cert order --debug 1</code> erneut aus, um zu sehen, warum."
},
"gui": {
"title": "Bevorzugen Sie die GUI? Gleiche fünf Schritte",
"bodyRich": "<em>Datacenter → ACME</em> registriert das Konto; <em>Datacenter → ACME → Plugins</em> fügt das DNS-Plugin hinzu; <em>Node → Certificates → ACME</em> verknüpft die Domain; <em>Order Certificates Now</em> führt Schritt 4 aus. Die obigen CLI-Befehle eignen sich für Skripte und Systeme ohne grafische Oberfläche."
}
},
"switchToHttps": {
"heading": "Schalten Sie den Monitor auf HTTPS",
"bodyRich": "Sobald <code>/etc/pve/local/pveproxy-ssl.pem</code> von Let's Encrypt signiert ist, öffnen Sie <strong>Einstellungen → Sicherheit → HTTPS / SSL</strong>, prüfen als Aussteller <em>Let's Encrypt</em> statt der lokalen Proxmox-CA und wählen <strong>Proxmox-Zertifikat verwenden</strong>. Monitor startet neu und der nächste Aufruf nutzt HTTPS auf 8008 mit öffentlich vertrauenswürdiger Zertifikatskette. Spätere ACME-Erneuerungen werden bei der nächsten neuen TLS-Verbindung geprüft und ausgewählt, ohne regelmäßige Abfrage oder Dienstneustart zur Erneuerung. <strong>Zertifikat aktualisieren</strong> bleibt unter Sicherheit für Diagnose und Wiederherstellung verfügbar."
},
"custom": {
"heading": "Benutzerdefiniertes Zertifikat — wann es sinnvoll ist",
"intro": "Klicken Sie auf <strong>Benutzerdefiniertes Zertifikat verwenden</strong> und geben Sie zwei absolute Pfade ein :",
"items": [
"<strong>Zertifikat</strong>: vollständige Kette im PEM-Format (<code>.pem</code> oder <code>.crt</code>).",
"<strong>Privater Schlüssel</strong>: passender Schlüssel im PEM-Format (<code>.key</code>)."
],
"outro": "Beide Dateien werden beim Start vom Monitor-Prozess gelesen. Sie müssen für den Benutzer lesbar bleiben, unter dem die systemd-Unit läuft (standardmäßig root). Übliche Orte bei ACME-Verwaltung außerhalb von Proxmox:",
"code": "# certbot\n/etc/letsencrypt/live/<your-host>/fullchain.pem\n/etc/letsencrypt/live/<your-host>/privkey.pem\n\n# acme.sh\n~/.acme.sh/<your-host>_ecc/fullchain.cer\n~/.acme.sh/<your-host>_ecc/<your-host>.key",
"symlinkCallout": {
"title": "Symlink-Ziele vs. Dateien",
"bodyRich": "<code>certbot</code> speichert die eigentlichen Dateien in <code>/etc/letsencrypt/archive/</code> und der <code>live/</code>-Pfad ist ein Symlink. Richten Sie den Monitor auf den <code>live/</code>-Symlink, nicht auf die <code>archive/</code>-Datei - so schreibt jeder Erneuerungszyklus einfach das Symlink-Ziel um und der Monitor nimmt das neue Zertifikat beim nächsten Servicestart entgegen."
}
},
"afterHttps": {
"heading": "Nach Aktivierung von HTTPS",
"bodyRich": "Das Speichern der Änderung schreibt <code>/etc/proxmenux/ssl_config.json</code> und löst einen Neustart der <code>proxmenux-monitor</code> systemd Einheit aus. Die Browser-Registerkarte verliert ihre aktuelle Verbindung - laden Sie sie auf <code>https://&lt;host&gt;:8008/</code> neu. Die erste Ladung mit einem Let's Encrypt-Zertifikat sollte keine Warnung zeigen; mit dem selbstsignierten Proxmox-Zertifikat benötigt der Browser eine Ausnahme, die gleiche wie für Port 8006.",
"reverse": {
"heading": "Reverse Proxys und Webhooks",
"bodyRich": "Wenn der Monitor zu HTTPS wechselt, schalten auch die für Benachrichtigungen registrierten Proxmox VE-webhook-URLs automatisch von <code>http://</code> zu <code>https://</code> um. Bestehende webhook-Einträge werden beim nächsten Speichern oder erneuten Erkennen einer Benachrichtigungsregel neu geschrieben, so dass keine manuelle Bearbeitung der Proxmox-Benachrichtigungskonfiguration erforderlich ist."
}
},
"trustCa": {
"heading": "Der selbstsignierten Proxmox-CA vertrauen",
"intro1Rich": "Um das Proxmox-Standardzertifikat ohne ACME zu behalten, importieren Sie die Cluster-Stamm-CA in den Zertifikatsspeicher von Betriebssystem oder Browser. Monitor erkennt <code>/etc/pve/local/pve-ssl.pem</code> als Ersatzzertifikat. Der Client vertraut dadurch dem Aussteller; die URL muss weiterhin zu einem Namen im Zertifikat passen.",
"intro2Rich": "Die CA-Datei lebt bei <code>/etc/pve/pve-root-ca.pem</code> auf jedem Knoten. In einem Cluster befindet sich der Pfad auf dem gemeinsamen <code>pmxcfs</code>-Dateisystem, so dass alle Knoten die gleiche Wurzel teilen und ein einziger Import das gesamte Rechenzentrum abdeckt. Kopieren Sie es auf Ihre Maschine:",
"code": "scp root@<your-host>:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
"thenImport": "Importieren Sie die Datei anschließend auf dem Client:",
"items": [
"<strong>Linux (systemweit):</strong> Führen Sie <code>sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt</code> und anschließend <code>sudo update-ca-certificates</code> aus. Browser mit System-Zertifikatsspeicher (Chromium, Edge) erkennen die CA nach dem Neustart; Firefox nutzt seinen eigenen Speicher und benötigt den folgenden manuellen Import.",
"<strong>macOS:</strong> Doppelklicken Sie auf die <code>.pem</code>-Datei. Fügen Sie sie in der Schlüsselbundverwaltung zum Schlüsselbund <em>System</em> hinzu und wählen Sie <em>Vertrauen → Immer vertrauen</em>.",
"<strong>Windows:</strong> Rechtsklick auf die Datei → <em>Zertifikat installieren</em> → unter <em>Vertrauenswürdige Stammzertifizierungsstellen</em> ablegen.",
"<strong>Firefox (jedes Betriebssystem):</strong> <em>Einstellungen → Datenschutz und Sicherheit → Zertifikate → Zertifikate anzeigen → Zertifizierungsstellen → Importieren</em>; aktivieren Sie <em>Dieser CA vertrauen, um Websites zu identifizieren</em>."
],
"standalone": {
"title": "Standalone Knoten außerhalb eines Clusters",
"bodyRich": "Jeder nicht geclusterte Proxmox-Host hat seinen eigenen <code>pve-root-ca.pem</code>. Wenn Sie mehrere eigenständige Hosts verwalten, wiederholen Sie die Kopie / den Import für jeden oder verbinden Sie sie zu einem Cluster, so dass sie sich eine einzelne Wurzel teilen."
}
},
"disable": {
"heading": "Deaktivierung von HTTPS",
"bodyRich": "Wählen Sie im selben Bereich <strong>HTTPS deaktivieren</strong>. Monitor startet mit unverschlüsseltem HTTP neu, etwa wenn eine eigene Zertifikatsdatei unlesbar ist und der Dienst nicht startet. Es gibt keinen weiteren Deinstallationsschritt; Zertifikatsdateien bleiben unverändert.",
"stateCallout": {
"title": "Wo der Zustand gespeichert wird",
"bodyRich": "<code>/etc/proxmenux/ssl_config.json</code> speichert die aktiven Zertifikatpfade und die Quelle (<code>none</code>, <code>proxmox</code>, <code>custom</code>). Das Löschen der Datei entspricht dem Deaktivieren von HTTPS - beim nächsten Start fällt der Monitor auf HTTP zurück."
}
}
}
@@ -0,0 +1,113 @@
{
"meta": {
"title": "Veröffentlichungskanal ändern | ProxMenux-Dokumentation",
"description": "Wechseln Sie in einem Dialog zwischen den ProxMenux-Kanälen Stable (main) und Beta (develop). Bidirektional und idempotent; führt den offiziellen Installer des gewählten Kanals aus und normalisiert den Monitor-Dienst.",
"ogTitle": "Veröffentlichungskanal ändern | ProxMenux-Dokumentation",
"ogDescription": "Eine Einstellungsoption zum Wechsel zwischen Stable und Beta, ohne Installer manuell auszuführen."
},
"header": {
"title": "Veröffentlichungskanal ändern",
"description": "Eine gemeinsame Einstellungsoption wechselt ProxMenux zwischen Stable (Zweig main) und Beta (Zweig develop). Die frühere einseitige Option „Beta-Programm deaktivieren“ wurde durch einen bidirektionalen Dialog ersetzt, der beide Richtungen anbietet und den offiziellen Installer des gewählten Kanals ausführt.",
"section": "Einstellungen"
},
"intro": {
"title": "Was sich geändert hat",
"body": "Früher gab es zwei Abläufe: „Beta-Programm deaktivieren“, nur bei aktiver Beta sichtbar, und das manuelle erneute Ausführen des Beta-Installers zum Beitritt. Jetzt vereint der stets verfügbare Eintrag <strong>Veröffentlichungskanal ändern</strong> beide Abläufe, zeigt den aktuellen Kanal und ermöglicht den Wechsel in beide Richtungen."
},
"why": {
"heading": "Warum diese Option existiert",
"intro": "ProxMenux wird aus zwei Git-Zweigen bereitgestellt :",
"items": [
"<strong>Stable</strong>: der Zweig <code>main</code>, auf den das README verweist und den die meisten Betreiber bevorzugen. Seltener erscheinende Versionen mit Änderungen, die bereits die Beta-Validierung durchlaufen haben.",
"<strong>Beta</strong>: der Zweig <code>develop</code>. Neuere Funktionen und Monitor-Builds mit dem Versionskennzeichen der nächsten stabilen Version. Manche Funktionen sind noch fehlerhaft; mit der Teilnahme helfen Sie, sie vor der Veröffentlichung zu testen."
],
"outro": "Früher musste man die richtige Installer-URL kennen, aus dem README kopieren und bei Unstimmigkeiten <code>config.json</code> manuell bearbeiten. Die gemeinsame Option erledigt den gesamten Ablauf in einer geführten Aktion."
},
"dialog": {
"heading": "Der Dialog",
"intro": "Im Hauptmenü: <strong>Einstellungen → Veröffentlichungskanal ändern</strong>. Ein Menü mit zwei Einträgen erscheint :",
"options": [
"<code>stable</code> — Stable (Zweig main)",
"<code>beta</code> — Beta (Zweig develop)"
],
"behaviour": "Der aktuelle Kanal ist vorausgewählt und wird oben angezeigt. Wählen Sie denselben Kanal, erscheint „Dieser Veröffentlichungskanal ist bereits aktiv“; der Dialog ist idempotent. Ein anderer Kanal öffnet eine kanalspezifische Bestätigung :",
"directions": [
"<strong>Stable → Beta:</strong> warnt vor möglichen Fehlern oder unvollständigen Funktionen in Beta-Builds.",
"<strong>Beta → Stable: </strong> warnt davor, dass die Beta-Update-Prüfungen gestoppt werden und das stabile Installationsprogramm die Stable-Kanalkomponenten neu installiert."
]
},
"confirm": {
"heading": "Was passiert, wenn Sie bestätigen",
"items": [
"<strong>Lädt den offiziellen Installer herunter</strong>:<ul><li>Stable: <code>install_proxmenux.sh</code> aus <code>main</code></li><li>Beta: <code>install_proxmenux_beta.sh</code> aus <code>develop</code></li></ul>Vor dem nächsten Schritt wird geprüft, ob die Datei vorhanden ist, und sie wird ausführbar gemacht.",
"<strong>Führt den Installer vollständig aus</strong>, denselben, auf den das README verweist. Komponentenerkennung, Dateisicherungen, Installation von Abhängigkeiten und Spracherhaltung folgen dem offiziellen Installationsablauf des Zielkanals.",
"Beim Wechsel zu <strong>Stable</strong> entfernt das Menü verbleibende Beta-Metadaten aus <code>config.json</code>: <code>beta_program</code>, <code>beta_version</code>, <code>install_branch</code> und <code>update_available.beta*</code>. <code>proxmenux_monitor.status = beta_updated</code> wird auf <code>updated</code> gesetzt. Die übrig gebliebene Datei <code>beta_version.txt</code> und heruntergeladene Beta-Installer werden entfernt.",
"Beim Wechsel zu Stable wird die systemd-Unit von Monitor aus der Stable-Vorlage neu geschrieben: „Beta“ entfällt aus der Beschreibung und <code>ExecStart</code> zeigt wieder auf das Laufzeitverzeichnis. Eine neue Ausgabe von <code>systemctl status</code> zeigt so den aktuellen Kanal.",
"Lädt das Konfigurationsmenü neu. <em>Versionsinformationen anzeigen</em> zeigt anschließend den neuen Kanal."
]
},
"switching": {
"heading": "Hin- und Herschalten",
"intro": "Beide Richtungen durchlaufen das gleiche Installationsprogramm – es handelt sich <strong>nicht</strong> um Deinstallations- und Neuinstallationsabläufe in Sonderfällen. Jede Richtung führt einfach das eigene Installationsprogramm des Kanals aus, das idempotent und sicher für die erneute Ausführung einer vorhandenen Installation konzipiert ist. Praktische Konsequenzen:",
"items": [
"Ihre vorhandene Konfiguration, ProxMenux Monitor-Login (<code>auth.json</code>), Benachrichtigungskanäle, Registrierung nach der Installation, benutzerdefinierte Schwellenwerte - keine davon wird berührt. Der Channel Switch tauscht nur den Skriptbaum und den binären AppImage aus.",
"Ein Monitor, der vor dem Switch aktiv war, bleibt danach aktiv; einer, der deaktiviert wurde, bleibt deaktiviert.",
"ProxMenux Monitor <code>auth.json</code>, API-Token und das JWT-Geheimnis werden über Kanaländerungen hinweg bewahrt. Sitzungen werden nicht abgemeldet.",
"Sie können Kanäle so oft umdrehen, wie Sie möchten - der Dialog wird es jedes Mal akzeptieren und das Installationsprogramm erneut ausführen. Es ist kein Neustart von Proxmox erforderlich.",
"Der Kanalwechsel ersetzt den ProxMenux-Skriptbaum und kann daher nicht im Browser-Terminal von Monitor laufen: Die PTY würde während des Updates beendet und der Dialog unterbrochen. Dort erscheint stattdessen ein Informationsfenster mit dem offiziellen einzeiligen Installationsbefehl des Zielkanals. Führen Sie ihn per SSH oder in der Proxmox-Hostkonsole aus."
]
},
"feedback": {
"heading": "Melden von Problemen aus der Beta",
"intro": "Wenn sich etwas unerwartet verhält, während Sie sich auf dem Beta-Kanal befinden, schließt das Öffnen eines Problems mit genügend Kontext die Lücke zu einem stabilen Release. Der nützlichste Bericht enthält:",
"items": [
"Was du getan hast und was du erwartet hast.",
"Alle Fehlermeldungen auf dem Bildschirm angezeigt.",
"Die entsprechenden Monitor-Logs:"
],
"logsCommand": "journalctl -u proxmenux-monitor -n 50 --no-pager",
"versionLine": "Die aktuelle ProxMenux-Version (Einstellungen → <link>Versionsinformationen anzeigen</link>).",
"issueLine": "Öffnen Sie eine <ghlink>GitHub Issue</ghlink> mit diesen Informationen und wir kommen schneller zum Fix."
},
"manual": {
"heading": "Manuelles Äquivalent",
"intro": "Wenn Sie die Shell bevorzugen oder den Kanalwechsel per Skript steuern, sind dies die Befehle, die der Dialog ausführt :"
},
"unifiedCallout": {
"title": "Warum beide Richtungen jetzt eine Option sind",
"body": "Die frühere Option „Beta-Programm deaktivieren“ erschien nur nach einem Beta-Beitritt. Zum <em>Beitreten</em> musste man die Installer-URL anderswo suchen; zum <em>Verlassen</em> mitunter <code>beta_*</code>-Metadaten manuell bereinigen. <strong>Veröffentlichungskanal ändern</strong> erscheint immer, zeigt den aktuellen Kanal und behandelt beide Richtungen als ausführbaren, wiederholbaren und idempotenten Vorgang."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"downloadTitle": "\"Konnte den Installer nicht herunterladen\"",
"downloadBody": "Ausgehendes HTTPS zu <code>raw.githubusercontent.com</code> ist fehlgeschlagen. Prüfen Sie die Verbindung und DNS auf dem Host :",
"downloadCmd": "curl -fsSL -o /tmp/test https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh && head -1 /tmp/test",
"downloadOutro": "Wenn dies außerhalb von ProxMenux fehlschlägt, handelt es sich um ein Netzwerk- / Proxy-Problem auf dem Host.",
"errorsTitle": "\"Installer mit Fehlern beendet\"",
"errorsBody": "Der Installer hat einen Exitcode ungleich null zurückgegeben. Es gibt kein automatisches Zurücksetzen; einige Dateien oder Komponenten können bereits geändert worden sein. Lesen Sie die Ausgabe des Installers über der Fehlermeldung, bevor Sie Enter drücken, und prüfen Sie den aktuellen Zustand. Versuchen Sie es danach erneut über das Menü oder führen Sie den Installer manuell per SSH oder in der Hostkonsole aus.",
"configTitle": "\"Konfigurationsdatei konnte nicht aktualisiert werden\" nach dem Wechsel zu Stable",
"configBody": "Die Bereinigung von Beta-Metadaten nach der Installation ist fehlgeschlagen - in der Regel, weil <code>config.json</code> einen Syntaxfehler aus einer manuellen Bearbeitung aufweist. Validierung:",
"configCmd": "jq . /usr/local/share/proxmenux/config.json",
"configOutro": "Korrigieren Sie die Datei oder stellen Sie sie wieder her und führen Sie die Option erneut aus."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/settings/show-version-information",
"label": "Versionsinformationen anzeigen",
"tail": " — bestätigt, welcher Kanal jetzt aktiv ist."
},
{
"href": "/docs/settings/proxmenux-monitor",
"label": "ProxMenux Monitor",
"tail": "— der Monitordienst, der als Teil des Switches neu erstellt wird."
},
{
"href": "/docs/settings",
"label": "Einstellungen Übersicht",
"tail": "."
}
]
}
}
@@ -0,0 +1,108 @@
{
"meta": {
"title": "Sprache ändern | ProxMenux-Dokumentation",
"description": "Wählen Sie aus acht Sprachen für die ProxMenux-Oberfläche. Jede Installation enthält vorab erzeugte JSON-Übersetzungskataloge; auf dem Host sind weder ein Übersetzungsdienst noch eine Python-Umgebung nötig. Das Menü wird automatisch neu geladen.",
"ogTitle": "Sprache ändern | ProxMenux-Dokumentation",
"ogDescription": "Wählen Sie in den Einstellungen eine von acht ProxMenux-Sprachen. Bei jeder Installation verfügbar."
},
"header": {
"title": "Sprache ändern",
"description": "Wechseln Sie die ProxMenux-Oberfläche zwischen acht unterstützten Sprachen. Die Auswahl wird in config.json gespeichert und das Menü in der neuen Sprache neu gestartet. Jede Installation enthält die Übersetzungskataloge.",
"section": "Einstellungen"
},
"intro": {
"title": "Was das ist",
"body": "Ein Dialog listet die acht unterstützten Sprachen auf. ProxMenux speichert Ihre Auswahl in <code>config.json</code> unter <code>.language</code> und startet <code>config_menu.sh</code> erneut, damit sie sofort wirksam wird."
},
"warn": {
"title": "Bei jeder Installation verfügbar",
"body": "Sprache ändern wird in den Einstellungen immer angezeigt. Die Kataloge werden in <code>/usr/local/share/proxmenux/lang/</code> installiert <em>und</em> die gewählte Sprache wird in <code>config.json</code> gespeichert. Die frühere Python-Übersetzungsumgebung ist nicht erforderlich."
},
"supported": {
"heading": "Unterstützte Sprachen",
"headerCode": "Code",
"headerLang": "Sprache",
"headerNotes": "Notizen",
"rows": [
{
"code": "en",
"lang": "Englisch",
"notes": "Ausgangssprache — am genauesten"
},
{
"code": "es",
"lang": "Spanisch",
"notes": "Vorab erzeugter JSON-Katalog"
},
{
"code": "fr",
"lang": "Französisch",
"notes": "Vorab erzeugter JSON-Katalog"
},
{
"code": "de",
"lang": "Deutsch",
"notes": "Vorab erzeugter JSON-Katalog"
},
{
"code": "it",
"lang": "Italienisch",
"notes": "Vorab erzeugter JSON-Katalog"
},
{
"code": "pt",
"lang": "Portugiesisch",
"notes": "Vorab erzeugter JSON-Katalog"
},
{
"code": "sk",
"lang": "Slowakisch",
"notes": "Vorab erzeugter JSON-Katalog"
},
{
"code": "sv",
"lang": "Schwedisch",
"notes": "Vorab erzeugter JSON-Katalog"
}
]
},
"englishTip": {
"title": "Englisch ist am genauesten",
"body": "Nicht englische Texte stammen aus den mitgelieferten, vorab erzeugten JSON-Katalogen. Fehlende Übersetzungen fallen auf Englisch zurück; der Host ruft keinen Übersetzungsdienst auf. Bei zweifelhaften Übersetzungen bleibt Englisch die Referenz."
},
"underHood": {
"heading": "Wie es unter der Haube funktioniert",
"items": [
"Der Dialog listet acht Sprachcodes auf; wählen Sie einen aus.",
"Wenn <code>config.json</code> vorhanden ist: <code>jq --arg lang \"$new_language\" '.language = $lang''</code> aktualisiert das Feld.",
"Wenn <code>config.json</code> nicht existiert: Ein neuer wird mit dem Sprachcode in einem Einzelfeldobjekt erstellt.",
"Bestätigungsdialog: <em>\"Sprache geändert in [code]\"</em>.",
"<code>exec bash config_menu.sh</code> lädt das Einstellungsmenü mit der neuen aktiven Sprache neu."
]
},
"manual": {
"heading": "Manuelles Äquivalent"
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noOptionTitle": "Option erscheint nicht in Einstellungen",
"noOptionBody": "Sprache ändern ist in aktuellen Versionen immer verfügbar. Falls die Option fehlt, aktualisieren Sie ProxMenux mit dem offiziellen Installer und öffnen die Einstellungen erneut.",
"stillEnglishTitle": "Sprache geändert, aber UI zeigt immer noch Englisch",
"stillEnglishBody": "Das Menü startet nach der Änderung erneut. Wenn Sie eine neue Shell geöffnet und einen anderen ProxMenux-Einstiegspunkt gestartet haben, führen Sie <code>menu</code> erneut aus, um die neue Sprache zu übernehmen. Prüfen Sie dies mit <code>jq -r '.language' /usr/local/share/proxmenux/config.json</code>."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/settings/show-version-information",
"label": "Versionsinformationen anzeigen",
"tail": " — bestätigt Veröffentlichungskanal, Übersetzungsdateien und aktuelle Sprache."
},
{
"href": "/docs/settings",
"label": "Einstellungen Übersicht",
"tail": "."
}
]
}
}
+81
View File
@@ -0,0 +1,81 @@
{
"meta": {
"title": "ProxMenux-Einstellungen — Monitor aktivieren, Veröffentlichungskanal, Sprachen | ProxMenux",
"description": "ProxMenux-Einstellungen: Monitor-Dienst und Passwort-Rücksetzung, Stable/Beta-Kanal, acht Oberflächensprachen, Versionsdiagnose und Deinstallation. Monitor-Optionen erscheinen, wenn der Dienst installiert ist.",
"ogTitle": "ProxMenux-Einstellungen — Monitor aktivieren, Veröffentlichungskanal, Sprachen",
"ogDescription": "ProxMenux konfigurieren: Monitor-Dienst, Veröffentlichungskanal, Sprache, Versionsinformationen und Deinstallation.",
"twitterTitle": "ProxMenux Einstellungen",
"twitterDescription": "Monitor aktivieren, Veröffentlichungskanal wechseln, Sprachen, Versionsinformationen und Deinstallation."
},
"header": {
"title": "Einstellungen",
"description": "Konfigurieren Sie ProxMenux: Monitor-Dienst umschalten, Anmeldedaten zurücksetzen, in beide Richtungen zwischen Stable und Beta wechseln, eine von acht Sprachen wählen, Versionsdiagnose anzeigen und deinstallieren. Monitor-Aktionen setzen den installierten Dienst voraus; die Sprachauswahl ist immer verfügbar.",
"section": "Einstellungen"
},
"intro": {
"title": "Wofür dieses Menü ist",
"body": "Verwaltung von ProxMenux selbst: Monitor-Dienst, Verlassen des Beta-Kanals, Sprache, Versionsdiagnose und Deinstallation. Keine Option in diesem Menü verändert Ihre VMs, Container oder den Speicher."
},
"opening": {
"heading": "Öffnen des Menüs",
"body": "Drücken Sie im ProxMenux-Hauptmenü <kbd>s</kbd>. Monitor-Aktionen erscheinen, wenn der Dienst installiert ist; die übrigen Einstellungen sind immer verfügbar :",
"imageAlt": "ProxMenux-Einstellungsmenü mit bedingten Monitor-Aktionen"
},
"installTypes": {
"heading": "Eine Installation, alle Sprachen",
"intro": "Aktuelle Versionen enthalten bei jeder Installation statische JSON-Übersetzungskataloge. Ältere Versionen boten getrennte Modi mit Übersetzung und Normal an :",
"headerType": "Art der Installation",
"headerBundles": "Enthaltene Komponenten",
"headerMenu": "Angezeigte Menüoptionen",
"rows": [
{
"type": "Aktuelle Installation",
"bundles": "Statische JSON-Kataloge für sieben Sprachen plus integriertes Englisch; keine Python-Übersetzungsumgebung",
"menuRich": "<strong>Sprache ändern</strong> + Version anzeigen + Deinstallieren"
},
{
"type": "Frühere Modi mit Übersetzung / Normal",
"bundles": "Veraltete Trennung zwischen Übersetzungsumgebung und rein englischer Installation",
"menu": "Mit dem offiziellen Installer aktualisieren, um das aktuelle einheitliche Menü zu verwenden"
}
],
"detectionTitle": "Sprachauswahl ist immer verfügbar",
"detectionBody": "Das Menü prüft keine Übersetzungsumgebung mehr. Jede Installation enthält <code>/usr/local/share/proxmenux/lang/</code> und speichert die gewählte <code>language</code> in <code>config.json</code>."
},
"options": {
"heading": "Menüoptionen",
"intro": "Diese Werkzeuge verwalten ProxMenux selbst. <em>Bedingt</em> bedeutet, dass Monitor-Aktionen nur bei installiertem systemd-Dienst erscheinen. Veröffentlichungskanal, Sprache, Versionsdiagnose und Deinstallation sind immer verfügbar.",
"list": [
{
"icon": "Activity",
"href": "/docs/settings/proxmenux-monitor",
"title": "ProxMenux Monitor",
"description": "Aktivieren / deaktivieren Sie die proxmenux-monitor.service systemd-Einheit, überprüfen Sie ihren aktuellen Zustand und setzen Sie das Dashboard-Anmeldepasswort zurück, wenn es verloren gegangen ist. Web-Benutzeroberfläche verfügbar auf TCP 8008.",
"badge": "Bedingt"
},
{
"icon": "TestTube",
"href": "/docs/settings/beta-program",
"title": "Veröffentlichungskanal ändern",
"description": "Wechseln Sie in einem Dialog in beide Richtungen zwischen Stable (main) und Beta (develop). Führt den offiziellen Installer des gewählten Kanals aus; idempotent und immer sichtbar.",
"badge": "Immer verfügbar"
},
{
"icon": "Info",
"href": "/docs/settings/show-version-information",
"title": "Versionsinformationen anzeigen",
"description": "ProxMenux-Version, Veröffentlichungskanal, installierte Komponenten, Dateipfade, Übersetzungsdateien und aktuelle Sprache."
},
{
"icon": "Trash2",
"href": "/docs/settings/uninstall-proxmenux",
"title": "Deinstallieren Sie ProxMenux",
"description": "Entfernen Sie ProxMenux und (optional) seine Abhängigkeiten. Außerdem werden /root/.bashrc- und /etc/motd-Backups wiederhergestellt, die zum Zeitpunkt der Installation erstellt wurden."
}
]
},
"configTip": {
"title": "Speicherort der Konfiguration",
"bodyRich": "Die meisten von diesem Menü verwalteten Zustände werden in <code>/usr/local/share/proxmenux/config.json</code> gespeichert: <code>language</code>, <code>beta_program.status</code> und Installationskennzeichen je Komponente. Der Zustand des Monitor-Dienstes wird in systemd (<code>proxmenux-monitor.service</code>) verwaltet, nicht hier. Die Version wird aus <code>/usr/local/share/proxmenux/version.txt</code> gelesen."
}
}
@@ -0,0 +1,119 @@
{
"meta": {
"title": "ProxMenux Monitor | ProxMenux-Dokumentation",
"description": "Aktivieren oder deaktivieren Sie die proxmenux-monitor.service systemd-Einheit und überprüfen Sie ihren aktuellen Zustand. Der Monitor stellt eine Web-Benutzeroberfläche auf TCP 8008 für die visuelle Host-Überwachung zur Verfügung.",
"ogTitle": "ProxMenux Monitor | ProxMenux-Dokumentation",
"ogDescription": "Aktivieren oder deaktivieren Sie den systemd-Dienst proxmenux-monitor und prüfen Sie seinen Status in den Einstellungen."
},
"header": {
"title": "ProxMenux Monitor",
"description": "Zwei zusammenhängende Aktionen innerhalb des Einstellungsmenüs: Umschalten der proxmenux-monitor.service systemd-Einheit (Start / Stopp und Aktivieren / Deaktivieren mit einem Klick) und Anzeigen des aktuellen Detailstatus. Der Monitor stellt eine Web-Benutzeroberfläche auf TCP 8008 für die visuelle Host-Überwachung zur Verfügung.",
"section": "Einstellungen"
},
"intro": {
"title": "Was ist ProxMenux Monitor?",
"body": "ProxMenux Monitor ist ein integriertes Web-Dashboard, das Echtzeit-Sichtbarkeit in Ihre Proxmox-Infrastruktur bietet - zugänglich von jedem Browser in Ihrem Netzwerk, ohne ein Terminal zu benötigen."
},
"offers": {
"heading": "Was es bietet",
"items": [
"Echtzeitüberwachung von CPU, RAM, Festplattennutzung und Netzwerkverkehr.",
"Überblick über laufende VMs und LXC Container mit Statusindikatoren.",
"Login-Authentifizierung zum Schutz des Zugriffs.",
"Zwei-Faktor-Authentifizierung (2FA) mit TOTP-Unterstützung.",
"Reverse Proxy Unterstützung (Nginx / Traefik).",
"Entwickelt für die Arbeit auf Desktop- und mobilen Geräten."
]
},
"access": {
"heading": "Zugang",
"intro": "Nach der Installation ist das Dashboard verfügbar unter:",
"url": "http://<your-proxmox-ip>:8008",
"outro": "Der Monitor wird automatisch als Teil der Standard-ProxMenux-Installation installiert und läuft als systemd-Dienst (<code>proxmenux-monitor.service</code>), der beim Booten automatisch startet."
},
"warnConditional": {
"title": "Einstellungen Optionen nur sichtbar, wenn Monitor installiert ist",
"body": "Die beiden unten beschriebenen Menüeinträge erscheinen nur in den Einstellungen, wenn <code>proxmenux-monitor.service</code> bei systemd registriert ist. Wenn Sie sie nicht sehen, wurde der Monitor nicht installiert (er ist während der ProxMenux-Installation optional). Um es später hinzuzufügen, installieren Sie ProxMenux mit der neuesten Version neu und wählen Sie die Option Monitor aus."
},
"toggle": {
"heading": "Aktivieren/Deaktivieren",
"intro": "Der erste Menüeintrag ist ein einzelner Umschalter, der zwischen zwei Zuständen wechselt, je nachdem, ob der Dienst gerade ausgeführt wird:",
"headerState": "Aktueller Zustand",
"headerLabel": "Menü-Label abgebildet",
"headerAction": "Aktion nach Bestätigung",
"rows": [
{
"state": "aktiv",
"label": "Deaktivieren Sie den ProxMenux Monitor",
"action": "systemctl stop + disable"
},
{
"state": "inaktiv",
"label": "Aktivieren Sie den ProxMenux Monitor",
"action": "systemctl enable + start"
}
],
"outro": "Jede Umschaltung erfordert einen Ja/Nein-Dialog. Deaktivieren stoppt den Dienst <em>und</em> deaktiviert den Autostart; Aktivieren schaltet den Autostart ein <em>und</em> startet den Dienst sofort."
},
"status": {
"heading": "Status des Überwachungsdienstes anzeigen",
"intro": "Der zweite Menüeintrag liest nur Informationen. Er leert den Bildschirm, zeigt das ProxMenux-Logo und den Titel <em>„Überprüfung des Dienstes ProxMenux Monitor“</em> und meldet dann :",
"items": [
"<strong>Servicestatus: </strong> aktiv, inaktiv oder not_installed.",
"<strong>Web UI URL</strong> (nur wenn aktiv): <code>http://&lt;host_ip&gt;:8008</code> — abgeleitet von <code>hostname -I | awk '''{print $1}'''</code>.",
"<strong>Detaillierter systemd-Ausgang:</strong> <code>systemctl status proxmenux-monitor.service --no-pager -l</code> — zeigt aktuelle Protokollzeilen, ExecStart, MainPID usw."
]
},
"manual": {
"title": "Manuelle Äquivalente",
"intro": "Von jeder Shell:",
"code": "systemctl status proxmenux-monitor.service # detailed status\nsystemctl is-active proxmenux-monitor.service # one-word status\nsystemctl enable --now proxmenux-monitor.service # enable + start\nsystemctl disable --now proxmenux-monitor.service # stop + disable\njournalctl -u proxmenux-monitor.service -f # follow live logs"
},
"reset": {
"heading": "ProxMenux Monitor Passwort zurücksetzen",
"intro": "Wiederherstellungspfad für den Betreiber, der das Dashboard-Passwort (oder 2FA-Gerät) verloren hat. Die Option wird nur angezeigt, wenn der Monitor auf dem Host installiert ist. Auswählen:",
"items": [
"Bittet um Bestätigung mit einem Ja / Nein-Dialog - die Aktion ist destruktiv für die Anmeldeinformationen.",
"Sichert den vorhandenen <code>/root/.config/proxmenux-monitor/auth.json</code> auf <code>auth.json.bak-&lt;UTC timestamp&gt;</code> (Modus <code>0600</code>), so dass der vorherige Zustand manuell wiederhergestellt werden kann, wenn das Zurücksetzen ein Fehler war.",
"Stoppt den Dienst <code>proxmenux-monitor</code>, damit die Dateibearbeitung nicht gleichzeitig mit einer laufenden Anmeldung erfolgt.",
"Löscht die Identitätsfelder in <code>auth.json</code>: <code>enabled=false</code>, <code>configured=false</code>, leert <code>username</code>, <code>password_hash</code>, <code>totp_secret</code> und das Backup-Code-Array.",
"<strong>Behält</strong> <code>jwt_secret</code> sowie die registrierten <code>api_tokens</code> / <code>revoked_tokens</code> bei, sodass langlebige API-Token von Home Assistant oder anderen Skripten nach dem Zurücksetzen <em>weiterhin zur Authentifizierung funktionieren</em>.",
"Startet den Dienst neu. Der nächste Besuch bei <code>http://&lt;host&gt;:8008</code> zeigt den Erststart-Setup-Assistenten, sodass ein neues Admin-Konto erstellt werden kann."
],
"preservedTitle": "Was überlebt den Reset, was nicht",
"preservedBody": "<strong>Gelöscht:</strong> Benutzername, Passwort-Hash, TOTP-Geheimnis für 2FA und Wiederherstellungscodes. <strong>Beibehalten:</strong> <code>jwt_secret</code>, Metadaten von <code>api_tokens</code> und die Liste <code>revoked_tokens</code>. Um auch alle API-Token ungültig zu machen und vollständig neu zu beginnen, löschen Sie <code>auth.json</code> manuell statt dieser Menüoption. Beim nächsten Dienststart werden JWT-Geheimnis und alle weiteren Daten neu erzeugt.",
"trustTitle": "Physical-Host-Zugang ist der Trust-Anker",
"trustBody": "Dieser Reset-Pfad erfordert eine Root-Shell auf dem Host. Jeder, der den <code>menu</code>-Befehl als root ausführen kann, steuert bereits die Box, so dass die Passwortwiederherstellung keine Privilegeskalation ist - sie stimmt mit der Funktionsweise jedes anderen Admin-Tools auf Proxmox überein. Die logische Folge: Der Monitor-Login schützt nichts vor jemandem, den Sie bereits in die Proxmox-Shell eingelassen haben.",
"seeAlso": "Siehe auch <link>Monitor → Zugriff und Authentifizierung → Verlorenes Passwort wiederherstellen</link> für denselben Ablauf aus Sicht des Dashboards sowie die Hintergründe zu Passwort-Hashes und zur Erzeugung des JWT-Geheimnisses."
},
"files": {
"heading": "Beteiligte Dateien",
"code": "/etc/systemd/system/proxmenux-monitor.service # systemd unit\n/root/.config/proxmenux-monitor/ # runtime config dir\n/var/log/proxmenux-auth.log # Flask app auth log\n # (read by Fail2Ban [proxmenux] jail)"
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"missingTitle": "Beide Menüoptionen fehlen",
"missingBody": "Der Monitor ist nicht bei systemd registriert. Bestätigen Sie mit <code>systemctl list-unit-files | grep proxmenux-monitor</code> - wenn keine Ausgabe vorhanden ist, installieren Sie ProxMenux mit der neuesten Version erneut vom offiziellen Installer und wählen Sie während der Installation die Option Monitor aus.",
"unreachableTitle": "Service aktiviert, aber die URL ist nicht erreichbar",
"unreachableBody": "Die Einstellungsstatusausgabe gibt Ihnen die IP. Bestätigung:",
"unreachableCmd": "ss -tlnp | grep 8008 # is anything listening?\njournalctl -u proxmenux-monitor -n 100 --no-pager # recent errors\ncurl -sI http://localhost:8008 # local reachability",
"unreachableOutro": "Wenn localhost funktioniert, aber nicht extern, überprüfen Sie Ihre Host-Firewall (<code>pve-firewall</code> oder nftables) auf eingehende TCP 8008.",
"stopsTitle": "Aktiviert den Dienst, aber es stoppt sich ein paar Sekunden später",
"stopsBody": "Meist liegt ein Portkonflikt (ein anderer Prozess nutzt 8008) oder eine fehlgeschlagene Abhängigkeitsprüfung vor. Das Systemjournal zeigt die Ursache: <code>journalctl -u proxmenux-monitor.service -b</code>."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/security/fail2ban",
"label": "Fail2Ban",
"tailRich": "– der <code>[proxmenux]</code> jail schützt den Monitor auf TCP 8008."
},
{
"href": "/docs/settings",
"label": "Einstellungen Übersicht",
"tail": "."
}
]
}
}
@@ -0,0 +1,81 @@
{
"meta": {
"title": "Versionsinformationen anzeigen | ProxMenux-Dokumentation",
"description": "ProxMenux-Diagnose mit reinem Lesezugriff: Version, Veröffentlichungskanal, in config.json erfasste Komponenten, Dateipfade, Übersetzungskataloge und aktuelle Sprache.",
"ogTitle": "Versionsinformationen anzeigen | ProxMenux-Dokumentation",
"ogDescription": "Diagnoseausgabe zu ProxMenux-Version, Veröffentlichungskanal, Komponenten, Dateien und Sprache."
},
"header": {
"title": "Versionsinformationen anzeigen",
"description": "Diagnose mit reinem Lesezugriff. Liest version.txt, config.json und bekannte Dateipfade und zeigt ein scrollbares Textfeld mit Version, Veröffentlichungskanal, installierten Komponenten, vorhandenen Dateien, Übersetzungsdateien und aktueller Sprache an.",
"section": "Einstellungen"
},
"intro": {
"title": "Was das ist",
"body": "Eine Selbstdiagnose. Nützlich, wenn Sie ein Problem melden (Dialoginhalte in den Fehlerbericht einfügen) oder eine ordnungsgemäß abgeschlossene Installation bestätigen. Ändert nichts."
},
"reports": {
"heading": "Was sie berichtet",
"headerSection": "Abschnitt",
"headerSource": "Quelle",
"headerContent": "Inhalt",
"rows": [
{
"section": "Aktuelle Fassung",
"source": "version.txt",
"contentRich": "Einzeilige Versionsnummer; <code>Unknown</code> bei fehlender Datei"
},
{
"section": "Veröffentlichungskanal",
"source": "Beta-Programm-Status in config.json",
"content": "Stable (main) oder Beta (develop); Beta-Version, falls vorhanden"
},
{
"section": "Installierte Komponenten",
"source": "config.json",
"content": "Status je Komponente (✓ installiert / erstellt / aktualisiert, ✗ fehlt)"
},
{
"section": "ProxMenux Dateien",
"source": "Filesystemprüfungen",
"contentRich": "<code>menu</code>, <code>utils.sh</code>, <code>config.json</code>, <code>version.txt</code> Präsenz + Pfade"
},
{
"section": "Übersetzungsdateien",
"source": "/usr/local/share/proxmenux/lang/",
"content": "Vorhandensein des Verzeichnisses lang/, das jeder Installation beiliegt"
},
{
"section": "Aktuelle Sprache",
"source": "config.json",
"contentRich": "Sprachcode aus <code>.language</code>; standardmäßig <code>en</code>, wenn nicht gesetzt"
}
]
},
"sampleHeading": "Beispielausgabe",
"manualHeading": "Manuelle Äquivalente",
"troubleshoot": {
"heading": "Fehlerbehebung",
"unknownTitle": "Version zeigt \"Unknown\"",
"unknownBody": "<code>/usr/local/share/proxmenux/version.txt</code> fehlt oder ist nicht lesbar. Am häufigsten verursacht durch eine teilweise Installation. Neuinstallation aus der offiziellen ProxMenux-Quelle.",
"noConfigTitle": "Keine Installationsinformationen verfügbar",
"noConfigBody": "<code>config.json</code> fehlt. Ohne diese Datei kann das Skript keine Komponenten auflisten. Installieren Sie neu, um sie wiederherzustellen.",
"wrongStatusTitle": "Eine Komponente zeigt ✗, obwohl ich sie sicher installiert habe",
"wrongStatusBody": "Das bedeutet, dass <code>config.json</code> diese Komponente nicht als installiert erfasst. Möglicherweise registriert sich das Skript noch nicht selbst, oder eine manuelle Installation hat ProxMenux umgangen. Der Dialog gibt den Inhalt von <code>config.json</code> wieder, nicht den tatsächlichen Zustand auf dem Datenträger."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/settings/uninstall-proxmenux",
"label": "Deinstallieren Sie ProxMenux",
"tail": " — entfernt alle diese Dateien."
},
{
"href": "/docs/settings",
"label": "Übersicht der Einstellungen",
"tail": "."
}
]
}
}
@@ -0,0 +1,92 @@
{
"meta": {
"title": "ProxMenux deinstallieren | ProxMenux-Dokumentation",
"description": "Saubere ProxMenux-Deinstallation mit optionaler Entfernung von jq und dialog, Bereinigung alter Übersetzungsdateien und des Monitor-Dienstes sowie Wiederherstellung gesicherter Systemdateien.",
"ogTitle": "ProxMenux deinstallieren | ProxMenux-Dokumentation",
"ogDescription": "Entfernen Sie ProxMenux sauber von einem Proxmox-Host mit optionaler Abhängigkeitsbereinigung."
},
"header": {
"title": "Deinstallieren Sie ProxMenux",
"description": "Entfernt ProxMenux interaktiv vom Proxmox-Host: Bestätigung, optionale Entfernung von Abhängigkeiten, Bereinigung des ProxMenux-Monitor-Dienstes und Wiederherstellung der Sicherungen von /root/.bashrc und /etc/motd. Zeigt durchgehend einen Fortschrittsbalken an.",
"section": "Einstellungen"
},
"scopeWarn": {
"title": "Beeinflusst nur die ProxMenux-Installation - nicht Ihre VMs / CTs / Speicher",
"body": "Die Deinstallation entfernt die ProxMenux-Skripte, den Menüstarter, den optionalen Monitor-Dienst und die von ProxMenux bei der Installation angelegten Sicherungen von Systemdateien. <strong>VMs, Container, Speicher, Netzwerkkonfiguration, Fail2Ban, NVIDIA-Treiber und andere über ProxMenux installierte Komponenten bleiben unberührt.</strong> Sie bleiben in ihrem bisherigen Zustand."
},
"flow": {
"heading": "Ablauf der Deinstallation",
"items": [
"<strong>Bestätigungsdialog.</strong> Ja/nein: „Möchten Sie ProxMenux wirklich deinstallieren?“",
"<strong>Auswahlliste für Abhängigkeiten.</strong> Bietet jq und dialog an. Beide Kästchen sind standardmäßig aus; wählen Sie nur Abhängigkeiten aus, die keine andere Anwendung benötigt.",
"<strong>Die Entfernung zeigt einen Fortschrittsbalken.</strong> Entfernt eine gegebenenfalls verbliebene alte Übersetzungsumgebung, den Starter <code>menu</code>, den Verzeichnisbaum <code>/usr/local/share/proxmenux/</code>, den ProxMenux-Monitor-Dienst, falls vorhanden, und dessen in Proxmox VE registriertes Benachrichtigungsziel (<code>proxmenux-webhook</code> samt Matcher) sowie die ausgewählten Abhängigkeiten. Abschließend werden die Sicherungen der Systemdateien wiederhergestellt (siehe unten).",
"<strong>Abschlussdialog.</strong> Listet die entfernten Abhängigkeiten auf und beendet das Programm."
]
},
"deps": {
"heading": "Abhängigkeitsentfernung: Was angeboten wird",
"intro": "Die Liste bietet jq und dialog an. <strong>Kein Kästchen ist standardmäßig markiert</strong>: Andere Anwendungen können diese systemweiten Pakete verwenden, daher ist Beibehalten sicherer.",
"headerType": "Installation",
"headerOffered": "Zur Entfernung angeboten",
"rows": [
{
"type": "Aktuelle Versionen",
"offeredRich": "<code>dialog</code>, <code>jq</code>"
},
{
"type": "Ältere Installationen nach dem Update",
"offeredRich": "<code>dialog</code>, <code>jq</code>"
}
],
"warnTitle": "Systemweite Pakete - denken Sie zweimal",
"warnBody": "Die aktuelle Liste bietet <code>jq</code> und <code>dialog</code> an, nicht <code>python3</code>. Andere Werkzeuge können diese Systempakete benötigen. Beim Entfernen können auch abhängige Pakete oder ungenutzte Abhängigkeiten entfernt werden. Behalten Sie benötigte Pakete und prüfen Sie vorgeschlagene Entfernungen, bevor Sie apt manuell ausführen."
},
"removed": {
"heading": "Was entfernt wird",
"code": "/usr/local/bin/menu # the launcher\n/usr/local/share/proxmenux/ # everything: scripts, config, cache, version\n/opt/googletrans-env/ # leftover legacy translation environment\n/etc/systemd/system/proxmenux-monitor.service # Monitor service unit\n/root/.config/proxmenux-monitor/ # Monitor config dir\n # + dependencies you ticked in the checklist"
},
"restored": {
"heading": "Was wiederhergestellt wird",
"items": [
"Wenn <code>/root/.bashrc.bak</code> existiert → zurück in <code>/root/.bashrc</code> umbenannt (Ihr ursprünglicher Bashrc kehrt zurück).",
"Falls <code>/etc/motd.bak</code> existiert, wird die Datei wieder in <code>/etc/motd</code> umbenannt. Andernfalls entfernt sed die ProxMenux-Zeile (<em>“This system is optimised by: ProxMenux”</em>) aus der vorhandenen motd."
]
},
"othersCallout": {
"title": "Andere ProxMenux-installierte Komponenten bleiben",
"body": "Alles, was ProxMenux über andere Menüs installiert wird – Fail2Ban, Lynis, NVIDIA Treiber, Anpassungen nach der Installation – wird von diesem Deinstallationsprogramm <strong>nicht</strong> berührt. Jedes hat seinen eigenen Deinstallationsablauf in seinem jeweiligen Menü (oder Sie können es direkt mit apt entfernen). Sehen Sie sich zunächst <em>Versionsinformationen anzeigen</em> an, um zu sehen, was registriert ist."
},
"manual": {
"heading": "Manuelle Deinstallation",
"intro": "Wenn das Deinstallationsprogramm im Menü nicht ausgeführt werden kann (z. B. weil <code>dialog</code> bereits fehlt), ist dies die entsprechende manuelle Befehlsfolge:",
"code": "# 1. Stop and remove the Monitor service (if installed)\nsystemctl stop proxmenux-monitor.service 2>/dev/null\nsystemctl disable proxmenux-monitor.service 2>/dev/null\nrm -f /etc/systemd/system/proxmenux-monitor.service\nrm -rf /root/.config/proxmenux-monitor\nsystemctl daemon-reload\nsystemctl reset-failed 2>/dev/null\n\n# 2. Remove a leftover legacy translation environment\nrm -rf /opt/googletrans-env\n\n# 3. Remove ProxMenux files\nrm -f /usr/local/bin/menu\nrm -rf /usr/local/share/proxmenux\n\n# 4. Restore backups\n[ -f /root/.bashrc.bak ] && mv /root/.bashrc.bak /root/.bashrc\n[ -f /etc/motd.bak ] && mv /etc/motd.bak /etc/motd \\\n || sed -i '/This system is optimised by: ProxMenux/d' /etc/motd"
},
"reinstall": {
"heading": "Später erneut installieren",
"body": "Führen Sie den offiziellen ProxMenux-Installer erneut aus. Aktuelle Versionen verwenden einen einheitlichen Installationsweg mit allen acht Oberflächensprachen."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"hangTitle": "Deinstallation bleibt beim Entfernen einer alten Übersetzungsumgebung hängen",
"hangBody": "Aktuelle Versionen entfernen eine übrig gebliebene Umgebung mit <code>rm -rf /opt/googletrans-env</code>; sie führen kein <code>pip uninstall</code> aus. Falls dieser Schritt hängt, prüfen Sie ihn in einer anderen Shell und kontrollieren das Dateisystem des Hosts vor einem erneuten Versuch.",
"aptTitle": "apt warnt beim Entfernen von Abhängigkeiten vor weiterhin verwendeten Paketen",
"aptBody": "Ausgewählte Pakete werden als automatisch installiert markiert und an <code>apt-get -y --purge autoremove</code> übergeben. Das garantiert keinen Schutz abhängiger Dienste. Lassen Sie benötigte Abhängigkeiten unmarkiert und prüfen Sie vor einer manuellen Bereinigung die von apt vorgeschlagenen Entfernungen.",
"motdTitle": "MOTD zeigt noch die ProxMenux Linie nach der Deinstallation",
"motdBody": "Möglicherweise existierte keine <code>/etc/motd.bak</code> und sed hat die Zeile nicht gefunden (etwa weil sie geändert wurde). Bearbeiten Sie <code>/etc/motd</code> manuell und entfernen Sie verbliebene ProxMenux-Zeilen."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/settings/show-version-information",
"label": "Versionsinformationen anzeigen",
"tail": " — zeigt vor der Deinstallation, was entfernt würde."
},
{
"href": "/docs/settings",
"label": "Übersicht der Einstellungen",
"tail": "."
}
]
}
}
@@ -0,0 +1,123 @@
{
"meta": {
"title": "Host: Hinzufügen von iSCSI-Ziel als Proxmox-Speicher | ProxMenux Dokumentation",
"description": "Registrieren Sie ein iSCSI-Ziel als Proxmox-Speicher mit ProxMenux. Das Werkzeug installiert open-iscsi, erkennt Ziele am Portal per sendtargets, lässt ein Ziel auswählen und führt pvesm add iscsi aus. Es stellt rohe Blockgeräte für VM-Festplattenabbilder bereit.",
"ogTitle": "Host: Hinzufügen von iSCSI-Ziel als Proxmox-Speicher | ProxMenux Dokumentation",
"ogDescription": "Registrieren Sie ein iSCSI-Ziel als Proxmox-Speicher mit geführter Entdeckung. Verwendet pvesm add iscsi und bietet rohe Blockgeräte für VM Festplatten."
},
"header": {
"title": "Host: Hinzufügen von iSCSI-Ziel als Proxmox-Speicher",
"description": "Registrieren Sie ein iSCSI-Ziel (von einem SAN, TrueNAS / FreeNAS, Synology, einem Windows Server-Ziel, einem Array, das iSCSI spricht) als Proxmox-Speicher. Die exportierten LUNs erscheinen als Blockgeräte und können VM-Disk-Images mit nahezu lokaler Leistung über das Netzwerk hosten.",
"section": "Speicher und Freigaben · Host"
},
"intro": {
"title": "Was das macht",
"body": "ProxMenux wickelt <code>pvesm add iscsi</code> mit einem geführten Fluss ab: Es installiert <code>open-iscsi</code> bei Bedarf, fragt nach dem iSCSI-Portal (IP:port), führt <code>iscsiadm --mode discovery --type sendtargets</code> dagegen aus, lässt Sie einen Ziel-IQN auswählen und registriert den iSCSI-Speicher in Proxmox. Der <code>iscsid</code>-Dienst hält dann die iSCSI-Sitzung über Neustarts hinweg am Leben."
},
"vocab": {
"heading": "iSCSI Vokabular (schnelle Referenz)",
"headerTerm": "Begriff",
"headerMeaning": "Bedeutung",
"rows": [
{
"term": "Portal",
"meaningRich": "Der iSCSI-Service-Endpunkt auf dem Zielserver – eine IP (oder ein Hostname) sowie ein TCP-Port. Standard-Port ist <code>3260</code>; ProxMenux nimmt es an, wenn Sie keinen angeben."
},
{
"term": "Ziel",
"meaningRich": "Ein einzelner exportierter \"Server\" innerhalb des Portals, der durch seine IQN identifiziert wird (<em>iSCSI Qualified Name</em>). Ein Portal kann viele Ziele hosten."
},
{
"term": "IQN",
"meaningRich": "Canonical Form ist <code>iqn.YYYY-MM.reverse.domain:identifier</code>, zum Beispiel <code>iqn.2024-08.com.truenas:proxmox-pool</code>. Sowohl das Ziel als auch der Initiator haben ihren eigenen IQN."
},
{
"term": "LUN",
"meaningRich": "Ein Blockgerät innerhalb eines Ziels (Logical Unit Number). Ein einzelnes Ziel kann mehrere LUNs freilegen; jede LUN erscheint als eigene Festplatte in Proxmox und kann eine VM-Festplatte werden."
},
{
"term": "Initiator",
"meaningRich": "Der Client, der sich mit einem Ziel verbindet - in diesem Fall Ihr Proxmox-Host. Der Initiator hat seine eigene IQN in <code>/etc/iscsi/initiatorname.iscsi</code> gespeichert. Ziele akzeptieren in der Regel nur Sitzungen von vorautorisierten Initiator-IQNs."
}
]
},
"opening": {
"heading": "Öffnen des Tools",
"body": "Öffnen Sie im Hauptmenü von ProxMenux <strong>Storage &amp; Share Manager → iSCSI Target als Proxmox Storage</strong> hinzufügen. Sie sehen dieses sub-Menü mit vier Optionen:",
"imageAlt": "iSCSI Host Manager-Menü – Konnektivität hinzufügen / anzeigen / entfernen / testen"
},
"howRuns": {
"heading": "Wie das Skript läuft (Flow hinzufügen)",
"body": "Der Fluss hat zwei Phasen mit klarer Trennung zwischen \"Einrichten des Initiators, Auffinden von Zielen\" und \"tatsächliche Registrierung von Speicher in Proxmox\". Im Gegensatz zu NFS / Samba gibt es keine automatische Entdeckung im Subnetz - Sie müssen die Portaladresse kennen (iSCSI ist nicht sendefreundlich)."
},
"add": {
"heading": "Hinzufügen von iSCSI-Ziel als Proxmox-Speicher",
"items": [
"<strong>Portal eingeben</strong> — geben Sie die IP-Adresse oder den Hostnamen des iSCSI-Zielservers ein. Port <code>3260</code> wird angenommen, es sei denn, Sie geben <code>host:port</code> ein.",
"<strong>Zielerkennung</strong> — ProxMenux ruft <code>iscsiadm --mode discovery --type sendtargets --portal &lt;ip:port&gt;</code> auf. Der Server antwortet mit jedem IQN, den dieser Initiator sehen kann. Wenn die Entdeckung fehlschlägt, zeigt das Skript den genauen Fehler aus <code>iscsiadm</code> und listet die häufigsten Ursachen auf (falsche IP, Firewall, Initiator IQN nicht autorisiert).",
"<strong>Zielauswahl</strong> — einzelnes Ziel wird automatisch ausgewählt; mehrere Ziele zeigen ein Menü an.",
"<strong>Storage ID</strong> — Standard ist <code>iscsi-&lt;last IQN segment, 20 chars max&gt;</code>. Nur Buchstaben, Ziffern, <code>-</code> und <code>_</code>.",
"<strong>Inhaltstyp</strong> — im Gegensatz zu NFS/Samba ist der iSCSI-Inhalt <strong>fest auf <code>images</code></strong> eingestellt. iSCSI stellt rohe Blockgeräte bereit, kein Dateisystem; deshalb sind dort nur VM-Festplatten möglich."
],
"authTitle": "Autorisieren Sie den Proxmox-Initiator auf dem Target",
"authBody1": "Bevor der Add-Flow Ende-zu-Ende funktioniert, muss das iSCSI-Ziel Ihren Proxmox-Host kennen. Holen Sie sich Ihren Initiator IQN:",
"authBody2": "Fügen Sie dieses IQN zur Zugriffsliste des Ziels hinzu (TrueNAS: <em>Sharing → Block → Initiators Groups</em>; Synology: <em>SAN Manager → iSCSI → Target → Edit → Initiators</em>; usw.). Ist der Initiator nicht autorisiert, liefert die Erkennung mit <code>iscsiadm</code> eine leere Liste oder einen Authentifizierungsfehler."
},
"manual": {
"heading": "Manuelles Äquivalent",
"body": "Der gesamte Flow bildet diese Befehle ab:"
},
"view": {
"heading": "Ansicht konfigurierter iSCSI-Speicher",
"body": "Listet jeden iSCSI-Eintrag in Proxmox (<code>pvesm status | awk ''$2 == \"iscsi\"''</code>) mit Portal, Ziel-IQN, Inhaltstyp und Live-Status auf."
},
"remove": {
"heading": "iSCSI-Speicher entfernen",
"body": "Führt <code>pvesm remove &lt;storage-id&gt;</code> nach Bestätigung von Portal, Ziel und Inhalt aus. Nur die Proxmox-Registrierung wird entfernt - <strong>das iSCSI-Ziel selbst wird nicht berührt</strong> und bestehende Sitzungen auf der Kernelseite können bis zum nächsten Neustart verweilen.",
"warnTitle": "Zuerst vorhandene VM-Festplatten auf diesem iSCSI prüfen",
"warnBody": "Das Entfernen eines iSCSI-Speichers, während VMs noch Festplatten haben, lässt diese VMs auf einen verschwundenen Speicher zeigen. Proxmox markiert den Fehler, aber die LUN-Daten sind auf dem Ziel unberührt - Sie können den Speicher später erneut registrieren, um die Festplatten zurückzubekommen. Bewegen oder sichern Sie die VMs zuerst, um sicher zu sein."
},
"test": {
"heading": "iSCSI-Konnektivität testen",
"body": "Führt einen Diagnosedurchlauf aus: Prüft, ob <code>iscsiadm</code> installiert ist, druckt Ihren Initiator IQN aus, bestätigt, dass <code>iscsid</code> ausgeführt wird, pingt jedes registrierte Portal, prüft seinen Port und meldet <code>pvesm status</code> sowie, ob eine iSCSI-Sitzung derzeit aktiv ist (<code>iscsiadm --mode session</code>). Aktive Sitzung plus erreichbares Portal, aber \"inaktiv\" in Proxmox bedeutet normalerweise einen abgestandenen Zustand - versuchen Sie <code>pvesm set &lt;id&gt; --disable 0</code>."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"portalTitle": "\"Kann das Portal nicht erreichen\", aber die Server-IP antwortet an anderer Stelle",
"portalBody": "Ping scheiterte an der Portaladresse. Überprüfen Sie, ob Sie die <em>storage-Netzwerk</em>-Schnittstelle erreichen (iSCSI lebt oft in einem separaten VLAN / Subnetz aus dem Verwaltungsnetzwerk). Überprüfen Sie auch DNS, wenn Sie einen Hostnamen eingegeben haben.",
"discoverTitle": "\"iSCSI Discovery failed\" von iscsiadm",
"discoverIntro": "Das Skript zeigt den genauen Fehler. Die häufigsten Ursachen:",
"discoverItems": [
"Portal IP / Port falsch (Doppelprüfung, standardmäßig 3260).",
"iSCSI-Dienst läuft nicht auf dem Zielserver.",
"Firewall blockiert 3260 zwischen Proxmox und dem Ziel.",
"<strong>Die Initiator-IQN ist auf dem Ziel nicht autorisiert.</strong> Dies ist die häufigste Ursache bei Unternehmens-Arrays. Tragen Sie die Proxmox-IQN zuerst in die Initiator-ACL des Ziels ein."
],
"noTargetTitle": "Keine Ziele gefunden, aber Entdeckung erfolgreich",
"noTargetBody": "Der Server hat Ihren Initiator akzeptiert, setzt ihm aber kein Ziel aus. Überprüfen Sie die Authentifizierung / Zugriffskontrollen des Ziels - einige Arrays ermöglichen die Erkennung für alle IQNs, filtern jedoch, welche Ziele jedes IQN sehen kann.",
"noLunTitle": "LUNs erscheinen nicht in /dev/disk/by-path nach der Registrierung",
"noLunBody": "<code>pvesm add iscsi</code> war erfolgreich, aber der Kernel sieht keine Blockgeräte. Überprüfen Sie <code>iscsiadm --mode session</code> - wenn keine Sitzung aktiv ist, starten Sie eine manuell mit <code>iscsiadm --mode node --login</code>. Wenn eine Sitzung existiert, aber keine LUNs angezeigt werden, erzwingen Sie ein Rescannen: <code>iscsiadm --mode session --rescan</code>. Wenn immer noch nichts, hat das Ziel wahrscheinlich noch keine LUNs diesem IQN zugewiesen (Konfigurieren Sie die LUN-Zuordnung auf dem Ziel).",
"chapTitle": "CHAP-Authentifizierung",
"chapBody": "ProxMenux bietet im interaktiven Ablauf keine Felder für CHAP-Benutzername und -Passwort. Schlägt die Erkennung fehl, stoppt das Skript vor <code>pvesm add</code>; der Speicher wird nicht trotzdem registriert. Konfigurieren Sie die CHAP-Anforderungen des Ziels separat in <code>open-iscsi</code>, einschließlich der Erkennungsauthentifizierung, falls nötig, und versuchen Sie es erneut. Prüfen Sie die Konfiguration mit <code>iscsiadm</code> und aktive Sitzungen mit <code>iscsiadm --mode session</code>."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/storage-share/host-nfs",
"label": "NFS-Freigabe als Proxmox-Speicher",
"tail": "— Alternative auf Dateiebene. Einfacher einzurichten, flexibler (Backup / ISO / tmpl / Images), etwas langsamer für VM-Live-Disketten."
},
{
"href": "/docs/storage-share/host-samba",
"label": "Samba / CIFS als Proxmox-Speicher",
"tail": " — eine weitere Option auf Dateiebene; wegen der Sperrsemantik für Festplatten laufender VMs vermeiden."
},
{
"href": "/docs/storage-share/host-local-disk",
"label": "Lokale Festplatte als Proxmox-Speicher hinzufügen",
"tail": "- wenn die Festplatte lokal auf dem Proxmox-Host ist, nicht auf einer anderen Box über das Netzwerk."
}
]
}
}
@@ -0,0 +1,186 @@
{
"meta": {
"title": "Host: Lokale Festplatte als Proxmox-Speicher hinzufügen | ProxMenux Dokumentation",
"description": "Formatieren Sie einen lokalen SATA-, SAS- oder NVMe-Datenträger auf einem Proxmox-Host und registrieren Sie ihn als Verzeichnis- oder ZFS-Pool-Storage. Mit sicherer Datenträgerauswahl, Bestätigung vor destruktiven Schritten, UUID-basiertem fstab, ZFS-Pool-Erstellung und pvesm add dir / zfspool im Hintergrund.",
"ogTitle": "Host: Lokale Festplatte als Proxmox-Speicher hinzufügen | ProxMenux Dokumentation",
"ogDescription": "Formatieren Sie eine lokale Festplatte und registrieren Sie sie als Proxmox-Verzeichnis oder ZFS-Poolspeicher mit einem geführten, sicherheitsgefilterten Fluss."
},
"header": {
"title": "Host: Lokale Festplatte als Proxmox-Speicher hinzufügen",
"description": "Nehmen Sie eine physische Festplatte auf dem Proxmox-Host, formatieren Sie sie optional (ext4 / xfs / btrfs / zfs) und registrieren Sie sie als Proxmox-Speicher - entweder als Verzeichnis (pvesm add dir) oder als ZFS-Pool (pvesm add zfspool). ProxMenux filtert die Festplattenliste, so dass Sie die Systemfestplatte oder etwas in Gebrauch nicht auswählen können, und macht jeden destruktiven Schritt explizit, bevor Sie sie ausführen.",
"section": "Speicher und Freigaben · Host"
},
"intro": {
"title": "Was das macht",
"body": "Andere <em>Host</em>-Tools in diesem Abschnitt befassen sich mit <strong>Netzwerkspeicher</strong> (NFS / Samba / iSCSI). Dieser befasst sich mit <strong>lokalen</strong> Festplatten - Ersatzlaufwerke, die physisch an Ihren Proxmox-Host angeschlossen sind und die Sie für VM-Festplatten, Backups, ISOs oder Vorlagen verwenden möchten. ProxMenux bereitet die Festplatte (Partition + Format + Mount) vor und registriert sie in Proxmox, damit die Benutzeroberfläche Inhalte dort platzieren kann."
},
"destructive": {
"title": "Zerstörendes Werkzeug für den \"Format\"-Pfad",
"body": "Der Ablauf <em>Formatieren</em> <strong>zerstört die vorhandenen Partitionen und Daten auf dem ausgewählten Datenträger</strong>. ProxMenux zeigt eine Warnung, filtert verwendete Datenträger heraus und verlangt eine Bestätigung vor <code>wipefs</code> / <code>sgdisk</code> / <code>mkfs</code>. Dies ist kein sicheres Überschreiben jedes Bytes. Prüfen Sie den Gerätepfad vor der Bestätigung zweimal."
},
"compare": {
"heading": "Verzeichnis oder ZFS-Pool — was wählen?",
"headerDir": "Verzeichnis (ext4 / xfs / btrfs)",
"headerZfs": "ZFS-Pool",
"rows": [
{
"label": "Proxmox-Speichertyp",
"dirRich": "<code>dir</code>",
"zfsRich": "<code>zfspool</code>"
},
{
"label": "VM Plattenformat",
"dir": "qcow2-/raw-Datei in einem Dateisystem",
"zfs": "Nativer ZFS-Datensatz (zvol) pro Festplatte"
},
{
"label": "Momentaufnahmen",
"dir": "qcow2-Snapshots; btrfs-Snapshots bei fs=btrfs",
"zfs": "Native, Instant, Copy-on-Write"
},
{
"label": "Dynamische Speicherzuweisung",
"dir": "Ja (qcow2-Standard)",
"zfs": "Ja (ZFS Standard)"
},
{
"label": "RAM Bedürfnisse",
"dir": "niedrig",
"zfs": "Hoch — ZFS nutzt freien RAM als ARC-Cache"
},
{
"label": "Unterstützt Inhaltstypen",
"dir": "images, backup, iso, vztmpl, snippets, rootdir",
"zfs": "nur images und rootdir (Blockspeicher)"
},
{
"label": "Am besten für",
"dir": "Allzweck-Disk: Mix aus VM-Disks, Backups, ISOs",
"zfs": "Reine VM / LXC-Datenplatte mit Snapshot + Integritätsanforderungen"
}
]
},
"opening": {
"heading": "Öffnen des Tools",
"body": "Öffnen Sie im ProxMenux-Hauptmenü <strong>Storage &amp; Share Manager → Add Local Disk as Proxmox Storage</strong>. Das Untermenü enthält vier Optionen:",
"imageAlt": "Lokales Disk Manager-Menü – Hinzufügen / Anzeigen / Entfernen / Auflisten verfügbarer Festplatten"
},
"howRuns": {
"heading": "Wie das Skript läuft (Flow hinzufügen)",
"body": "Der Ablauf hat zwei Phasen mit einem Sicherheitsfilter mit drei Prüfungen. Phase 1 entdeckt sichere Festplatten, entscheidet, was mit der gewählten zu tun ist und sammelt Speicherparameter; Phase 2 erledigt die destruktive Arbeit. Bis zur endgültigen Bestätigung ist die Festplatte unberührt."
},
"format": {
"heading": "Leeren Datenträger formatieren",
"intro": "Der Pfad für eine neue Festplatte oder eine, deren Inhalt Ihnen egal ist.",
"items": [
"Wählen Sie die Festplatte (System / In-Use-Disks sind versteckt).",
"Wählen Sie \"Formatdiskette (ERASE alle Daten)\".",
"Wählen Sie das Dateisystem aus - siehe Tabelle oben für Kompromisse.",
"Storage ID (default <code>disk-&lt;device&gt;</code>), Mount-Pfad, Voreinstellung des Inhaltstyps.",
"Bestätigen Sie im <strong>FINAL CONFIRMATION — DATA WILL BE ERASED</strong> Dialog.",
"ProxMenux löscht die Partitionstabelle und erstellt eine Partition über den Datenträger. Es führt <code>mkfs.&lt;fs&gt;</code> oder <code>zpool create</code> aus und hängt das Ergebnis ein. Normale Dateisysteme erhalten einen UUID-Eintrag in <code>/etc/fstab</code> mit <code>defaults,nofail</code>; ZFS verwendet die Mount-Konfiguration des Pools. Ist <em>Als Proxmox-Speicher</em> markiert (bei ZFS immer), wird er anschließend mit <code>pvesm add dir</code> oder <code>pvesm add zfspool</code> registriert; andernfalls bleibt er nur ein Host-Mount."
],
"tipTitle": "Warum UUID + nofail in /etc/fstab",
"tipBody": "Das Skript schreibt <code>UUID=… /mnt/&lt;id&gt; &lt;fs&gt; defaults,nofail 0 2</code>. UUID überlebt die Geräteumordnung über Neustarts hinweg (so dass <code>/dev/sdc</code>, das <code>/dev/sdd</code> wird, den Boot nicht unterbricht). <code>nofail</code> bedeutet, dass, wenn die Festplatte jemals verschwindet (Hardwarefehler, Unplugged), Proxmox immer noch bootet - der Speicher wird nur als inaktiv angezeigt, bis die Festplatte zurückkommt."
},
"reuse": {
"heading": "Wiederverwendung eines vorhandenen Dateisystems",
"intro": "Der Pfad für eine Festplatte, auf der Sie die Daten behalten möchten - vielleicht haben Sie sie von einem anderen Proxmox-Host verschoben, oder die Festplatte verfügt bereits über Backups / ISOs, die Sie zugänglich halten möchten.",
"items": [
"Wählen Sie den Datenträger.",
"Wählen Sie \"Vorhandenes Dateisystem verwenden\".",
"Speicher-ID, Mount-Pfad und Inhaltstyp-Voreinstellung.",
"ProxMenux berührt die Daten <strong>nicht</strong>: Es erstellt den Mount-Punkt, mountet die Festplatte, fügt einen UUID-Eintrag zu <code>/etc/fstab</code> hinzu und registriert ihn als Proxmox-<code>dir</code>-Speicher."
],
"warnTitle": "Wiederverwendungspfad behandelt keine ZFS-Pools",
"warnBody": "Wenn die Festplatte bereits einen ZFS-Pool enthält, versucht der <em>reuse</em>-Pfad hier nur, ihn als reguläres Dateisystem zu montieren - was fehlschlägt. Um einen vorhandenen ZFS-Pool zu importieren, verwenden Sie <code>zpool import &lt;name&gt;</code> auf der Kommandozeile und registrieren Sie ihn dann manuell bei <code>pvesm add zfspool</code>."
},
"presets": {
"heading": "Inhaltstyp-Presets",
"intro": "ProxMenux bietet drei Voreinstellungen und eine eigene Eingabe. Die gewählte Inhaltsliste wird an <code>pvesm add … --content &lt;csv&gt;</code> übergeben:",
"headerPreset": "Voreinstellung",
"headerContent": "Inhaltsliste",
"headerUse": "Anwendungsfall",
"rows": [
{
"preset": "VM Speicherplatz",
"content": "images,backup",
"use": "Ein dedizierter VM-Festplattenspeicher, der auch Backups dieser VMs in der Nähe hält."
},
{
"preset": "Standard-NAS",
"content": "backup,iso,vztmpl",
"use": "Ein Archiv / Media Disk - Backups, ISOs und LXC Vorlagen. Keine live VM Festplatten hier."
},
{
"preset": "Alle Typen",
"content": "images,backup,iso,vztmpl,snippets",
"use": "Diese breite Voreinstellung aktiviert Images, Sicherungen, ISOs, LXC-Vorlagen und Snippets. Fügen Sie weitere unterstützte Typen wie rootdir bei Bedarf über Benutzerdefiniert hinzu."
},
{
"preset": "Benutzerdefiniert",
"content": "(freier Input)",
"useRich": "Geben Sie den genauen CSV selbst ein, z.B. <code>images</code> allein oder <code>rootdir,images</code>."
}
],
"zfsTitle": "ZFS Pool-Inhalte sind schmaler",
"zfsBody": "Bei <strong>zfs</strong> unterstützt ein <code>zfspool</code> nur <code>images</code> und <code>rootdir</code>, keine ISO- oder Sicherungsdateien. Geben Sie unter Benutzerdefiniert eine unterstützte Liste ein. Das Skript reicht sie unverändert weiter; unzulässige Typen können die Registrierung scheitern lassen. Prüfen Sie danach <code>pvesm status</code>."
},
"manual": {
"heading": "Manuelles Äquivalent",
"extIntro": "Format + Registrierung einer Festplatte als ext4-Verzeichnisspeicher:",
"zfsIntro": "Oder als ZFS Pool:"
},
"view": {
"heading": "Datenträgerspeicher anzeigen",
"body": "Listet alle plattengestützten Proxmox-Speicher auf (sowohl <code>dir</code> als auch <code>zfspool</code>, die vom Benutzer erstellt wurden – Systempools wie <code>rpool</code> sind ausgeblendet). Zeigt den Mount-Pfad / Pool-Namen, Inhaltstypen und Live-Status an."
},
"remove": {
"heading": "Disk Storage entfernen",
"body": "Hebt die Registrierung des Speichers bei Proxmox auf (<code>pvesm remove</code>) und bietet an, den passenden Eintrag in <code>/etc/fstab</code> zu bereinigen. Für ZFS pools zerstört das Skript <strong>nicht</strong> automatisch das pool – das ist ein separater <code>zpool destroy &lt;name&gt;</code>-Schritt, den Sie manuell ausführen, wenn Sie sicher sind.",
"warnTitle": "Daten und bestehende VM Abhängigkeiten",
"warnBody": "Das Entfernen des Speichers berührt nicht das Dateisystem oder den Pool - die Daten bleiben auf der Festplatte. Aber VMs / CTs, die diesen Speicher nach ID referenzieren, können nach dem Entfernen nicht starten. Verschieben Sie diese VM-Festplatten in einen anderen Speicher (oder nehmen Sie ein Backup), bevor Sie sie entfernen."
},
"list": {
"heading": "Liste der verfügbaren Datenträger",
"body": "Eine schreibgeschützte Diagnoseansicht: Druckt die Ausgabe von <code>lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,MODEL</code>, gefolgt von den <code>dir</code>/<code>zfspool</code>-Speichern, die Proxmox bereits kennt. Guter erster Stopp, wenn Sie das Tool öffnen und sehen möchten \"Was ist auf diesem Host?\", Bevor Sie etwas hinzufügen."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noDisksTitle": "\"Keine verfügbaren Festplatten gefunden\"",
"noDisksIntro": "Der Sicherheitsfilter hat alle Datenträger ausgeblendet. Häufige Gründe:",
"noDisksItems": [
"Nur die Root Disc ist vorhanden.",
"Jede andere Festplatte ist Teil eines aktiven ZFS / LVM / RAID-Arrays.",
"Jede andere Festplatte wird durch eine VM- oder LXC-Konfiguration (Durchgang) referenziert.",
"Die Festplatte befindet sich im schreibgeschützten Modus (ausfallende Hardware oder Schreibblocker)."
],
"noDisksOutro": "Verwenden Sie <em>List Available Disks</em> aus dem Menü, um die <code>lsblk</code>-Rohausgabe zu sehen und zu verstehen, was passiert.",
"mountedTitle": "Format fehlschlägt mit \"Device is mount\"",
"mountedBody": "Etwas hat die Festplatte automatisch gemountet (udisksd, ein Desktop-Manager, eine anhaltende systemd-Einheit). Unmount: <code>umount /dev/sdX?*</code> oder <code>systemctl stop &lt;whatever-mounts-it&gt;</code>, dann wiederholen. Der Sicherheitsfilter des Skripts sollte versteckte montierte Festplatten haben, so dass, wenn Sie diesen Fehler erreicht haben, die Mount zwischen dem angezeigten Menü und der Bestätigung stattgefunden hat.",
"zpoolTitle": "zpool create schlägt mit „invalid vdev specification“ fehl",
"zpoolBody": "Normalerweise bedeutet dies, dass die Festplatte immer noch veraltete GPT / LVM / ZFS-Signaturen aufweist, die <code>zpool</code> nicht ohne Erzwingen überschreiben möchte. Das Skript führt <code>wipefs</code> und <code>sgdisk --zap-all</code> vor dem Formatieren aus, aber eine sehr hartnäckige Festplatte kann immer noch ein veraltetes Label haben. Erzwingen Sie manuell eine Bereinigung: <code>zpool labelclear -f /dev/sdX</code> oder <code>dd if=/dev/zero of=/dev/sdX bs=1M count=10</code> und wiederholen Sie es.",
"inactiveTitle": "Storage wird nach dem Neustart als inaktiv angezeigt",
"inactiveBody": "Überprüfen Sie <code>findmnt &lt;mount-path&gt;</code> - wenn die Mount fehlt, ist etwas in <code>/etc/fstab</code> fehlgeschlagen. <code>dmesg | tail</code> zeigt normalerweise auf den Grund (UUID-Mismatch, Dateisystemkorruption, <code>nofail</code> ließ die Wiederholung fallen). Ein <code>mount -a</code> reaktiviert normalerweise den Speicher, sobald die Ursache behoben ist."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/disk-manager/format-disk",
"label": "Datenträgerverwaltung: Physischen Datenträger formatieren / löschen",
"tail": "Low-Level-Alternative, wenn Sie nur eine Festplatte vorbereiten möchten, ohne sie als Proxmox-Speicher zu registrieren."
},
{
"href": "/docs/storage-share/host-iscsi",
"label": "Hinzufügen von iSCSI-Ziel als Proxmox-Speicher",
"tail": " — Entsprechende Netzwerklösung, wenn sich das Blockgerät auf einem anderen Rechner befindet."
},
{
"href": "/docs/storage-share/host-local-shared",
"label": "Shared Directory auf Host hinzufügen",
"tail": "Bereiten Sie ein Verzeichnis für LXC-Bind-Mounts auf dem Host vor (registriert keinen Proxmox-Speicher)."
}
]
}
}
@@ -0,0 +1,103 @@
{
"meta": {
"title": "Host: Freigegebenes Verzeichnis auf dem Host hinzufügen | ProxMenux-Dokumentation",
"description": "Erstellen Sie ein Hostverzeichnis, das für LXC-Bind-Mounts bereit ist, mit Berechtigungen, die für privilegierte und unprivilegierte Container gleichzeitig funktionieren. Sticky Bit + World-Rwx + ACLs für die Standardvererbung.",
"ogTitle": "Host: Freigegebenes Verzeichnis auf dem Host hinzufügen | ProxMenux-Dokumentation",
"ogDescription": "Bereiten Sie ein Hostverzeichnis für LXC-Bind-Mounts vor, dessen Berechtigungen mit privilegierten und unprivilegierten CTs kompatibel sind."
},
"header": {
"title": "Host: Freigegebenes Verzeichnis hinzufügen",
"description": "Erstellen Sie ein Host-Verzeichnis, das so konzipiert ist, dass es in einen oder mehrere LXC-Container eingebunden wird. ProxMenux wendet eine Reihe von Berechtigungen an, die sowohl für privilegierte als auch für unprivilegierte CTs gleichzeitig funktionieren - keine verschobenen UID-Kopfschmerzen, keine pro-Container-Chowns - und registriert das Verzeichnis, damit der LXC Mount Manager es später abholen kann.",
"section": "Speicher und Freigaben · Host"
},
"intro": {
"title": "Was das ist (und nicht ist)",
"body": "Dieses Tool registriert <strong>nicht</strong> irgendetwas in Proxmox (kein <code>pvesm add</code> hier). Es bereitet lediglich ein Verzeichnis auf dem Host vor – standardmäßig <code>/mnt/shared</code> – mit Berechtigungen, die jeder LXC-Container lesen und schreiben kann, unabhängig davon, ob der CT privilegiert oder nicht privilegiert ist. Der übliche nächste Schritt besteht darin, es mit dem <mountLink>LXC-Mount-Manager</mountLink> in jedes CT einzubinden."
},
"why": {
"heading": "Warum ein dediziertes Tool dafür",
"intro": "Wenn Sie ein Hostverzeichnis in einen LXC-Container binden, hängen die Berechtigungen ab von:",
"items": [
"Ob der CT <strong>privilegiert</strong> ist (UID 0 im CT = UID 0 auf dem Host) oder <strong>unprivilegiert</strong> (UID 0 im CT = UID 100000 auf dem Host — alle UIDs sind um +100000 verschoben).",
"Der Besitz des Hostverzeichnisses (eine Datei im Besitz von UID 1000 auf dem Host erscheint als \"andere\" aus der Perspektive eines unprivilegierten CT, da kein CT-Benutzer UID 1000 zuordnet).",
"Ob mehrere CTs das gleiche Verzeichnis teilen (unterschiedliche CTs können unterschiedliche UID-Bereiche haben)."
],
"outro": "ProxMenux verwendet hier einen pragmatischen Ansatz: <strong>allen Zugriff gewähren</strong>, und zwar auf Dateisystemebene. Dazu kommen rwx-Rechte für alle, das Sticky-Bit und ACLs zur Vererbung der Rechte an neue Dateien. Jede zugeordnete UID kann lesen und schreiben; ein Abgleich von UIDs/GIDs ist nicht nötig."
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Das Skript hat kein Hauptmenü – es führt eine einzelne Aktion aus, <strong>Freigegebenes Verzeichnis erstellen</strong>. Phase 1 sammelt den Zielpfad; Phase 2 erstellt das Verzeichnis und wendet Berechtigungen an."
},
"bits": {
"heading": "Was jedes Berechtigungsbit tut",
"intro": "Die Nummer <strong>1777</strong> ist nicht willkürlich - es ist der gleiche Modus, den Linux für <code>/tmp</code> verwendet. Drei Eigenschaften kombiniert:",
"headerBit": "Bit",
"headerEffect": "Wirkung",
"headerWhy": "Warum es hier wichtig ist",
"rows": [
{
"bit": "1 (sticky bit)",
"effect": "Löschen und Umbenennen sind auf den Datei- oder Verzeichniseigentümer und ausreichend privilegierte Prozesse beschränkt.",
"why": "Hilft Benutzern mit unterschiedlichen zugeordneten UIDs, fremde Dateien vor Löschung zu schützen. CTs mit derselben zugeordneten UID oder privilegiertem Root-Zugriff sind dadurch nicht voneinander isoliert."
},
{
"bit": "777 (rwx-rwx-rwx)",
"effect": "Jeder kann lesen, schreiben und das Verzeichnis betreten.",
"why": "Unprivilegierte CT UIDs (100000+) erscheinen als \"andere\" vom Host, so dass world-rwx ihnen Zugriff gibt."
},
{
"bit": "ACLs (Standard)",
"effect": "Vererbt auf jeder neu erstellten Datei / Subdir.",
"why": "Neue Inhalte erben die Standard-ACLs, ohne das Skript erneut auszuführen. Anwendungen können weiterhin restriktive Modi anfordern oder Rechte später ändern."
}
],
"privTitle": "Privilegierte CTs sehen dasselbe, nur ohne die Verschiebung",
"privBody": "Für einen privilegierten CT ist UID 0 im CT UID 0 auf dem Host, so dass <code>root</code> im CT das Hostverzeichnis direkt lesen / schreiben kann. <code>1777</code> ist immer noch in Ordnung - es bedeutet nur, dass Nicht-Root-Benutzer im CT auch das Verzeichnis verwenden können. Die gleichen Berechtigungen decken beide Fälle ab."
},
"where": {
"heading": "Wo das freigegebene Verzeichnis liegen soll",
"intro": "Der Location Picker bietet vier Optionen:",
"opt1Title": "1. Erstellen Sie einen neuen Ordner in /mnt",
"opt1Body": "Die übliche Wahl. ProxMenux schlägt automatisch den ersten freien Namen vor (<code>shared</code>, <code>shared2</code>, <code>shared3</code>, ...). Sie bestätigen oder geben nur einen anderen Namen ein.",
"opt2Title": "2. Benutzerdefinierter Pfad",
"opt2Body": "Für Verzeichnisse außerhalb von <code>/mnt</code>. Jeder absolute Pfad funktioniert (z.B. <code>/srv/media</code>, <code>/data/family</code>). Das Skript verwendet die gleichen Berechtigungen.",
"opt3Title": "3. Bestehende Ordner in /mnt anzeigen",
"opt3Body": "Read-only Diagnose: listet jedes Verzeichnis unter <code>/mnt</code> mit seinen Berechtigungen, Eigentümer und verfügbaren Speicherplatz auf. Nützlich, bevor Sie eine neue erstellen, um Namenskollisionen zu vermeiden.",
"opt4Title": "4. Abbrechen",
"opt4Body": "Beendet den Vorgang, ohne etwas zu erstellen. Entspricht <kbd>Esc</kbd>.",
"tipTitle": "Wo lebt /mnt?",
"tipBody": "Standardmäßig befindet sich <code>/mnt</code> auf dem Proxmox-Root-Dateisystem. Wenn Sie das freigegebene Verzeichnis auf einer anderen Festplatte (einer Datenplatte, einem ZFS-Pool) haben möchten, mounten Sie diese Festplatte zuerst unter <code>/mnt/&lt;name&gt;</code> (Disk Manager oder <diskLink>Lokale Festplatte als Proxmox-Speicher hinzufügen</diskLink>) und erstellen Sie dann das freigegebene Verzeichnis als Unterordner darin - oder wählen Sie \"Benutzerdefinierten Pfad eingeben\" hier und zeigen Sie auf die eingehängte Festplatte."
},
"manual": {
"heading": "Manuelles Äquivalent",
"body": "Der gesamte Flow kann von Hand wiedergegeben werden:"
},
"next": {
"heading": "Nächster Schritt: Bind-Mount in Container",
"body": "Durch das Erstellen des Verzeichnisses wird es nur vorbereitet – noch wird es von keinem Container gesehen. Um es in einem oder mehreren LXCs sichtbar zu machen, verwenden Sie den Mount-Manager <mountLink>LXC</mountLink>, um <code>/mnt/&lt;name&gt;</code> in die CTs einzubinden. Da die Berechtigungen bereits geöffnet sind, bietet der Mount-Manager <strong>nicht</strong> an, sie zu ändern – das Verzeichnis kann unverändert verwendet werden."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"mkdirTitle": "\"Failed to create directory\"",
"mkdirBody": "Normalerweise ein Dateisystemproblem: <code>/mnt</code> befindet sich in einem schreibgeschützten Dateisystem, der Pfad enthält eine Komponente, die kein Verzeichnis ist (z. B. Sie haben <code>/etc/passwd/sub</code> eingegeben), oder die Festplatte ist voll. Überprüfen Sie mit <code>df -h /mnt</code> und <code>mount | grep /mnt</code>.",
"writeTitle": "Container kann trotz offener Berechtigungen nicht schreiben",
"writeBody": "Überprüfen Sie, ob der CT tatsächlich den Bind-Mount (<code>pct config &lt;ctid&gt; | grep ^mp</code>) verwendet. Führen Sie im CT <code>touch /mnt/data/test-$(date +%s)</code> aus – wenn dies mit verweigerter Berechtigung fehlschlägt, befindet sich das Mount möglicherweise auf einem Host-Dateisystem, das ACLs nicht berücksichtigt (einige ältere <code>ext3</code>- oder <code>vfat</code>-Mounts). Verschieben Sie das freigegebene Verzeichnis in ein ext4 / xfs / btrfs / zfs Backing.",
"aclTitle": "ACL Befehle leise nicht verfügbar",
"aclBody": "Bei einer minimalen Proxmox-Installation sind <code>setfacl</code> / <code>getfacl</code> möglicherweise nicht installiert. Das Skript fällt anmutig zurück (<code>command -v setfacl</code>-Check) und wendet nur POSIX-Berechtigungen an - was oft genug ist, aber neue Dateien werden das permissive Profil nicht automatisch erben. Installieren Sie <code>acl</code> mit <code>apt-get install -y acl</code> und führen Sie das Skript im Verzeichnis erneut aus."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/storage-share/lxc-mount-points",
"label": "LXC-Mount-Verwaltung",
"tail": "— der natürliche nächste Schritt: bind-mount dieses Verzeichnis in einen oder mehrere Container."
},
{
"href": "/docs/storage-share/host-local-disk",
"label": "Lokale Festplatte als Proxmox-Speicher hinzufügen",
"tailRich": "Wenn Sie das freigegebene Verzeichnis auf einer dedizierten Festplatte haben möchten, bereiten Sie die Festplatte zuerst vor, mounten Sie sie unter <code>/mnt</code> und erstellen Sie dann den freigegebenen Unterordner hier."
}
]
}
}
@@ -0,0 +1,174 @@
{
"meta": {
"title": "Host: NFS-Freigabe einhängen | ProxMenux-Dokumentation",
"description": "Montieren Sie einen externen NFS-Export auf dem Proxmox-Host - entweder als Proxmox-Speicher (pvesm add nfs), als einfacher fstab-Mount auf dem Host (NICHT sichtbar in Datacenter > Storage) oder beides. Die fstab-Methode ist ideal, um die Freigabe in LXC-Container zu binden, ohne sie als Proxmox-Speicher freizulegen.",
"ogTitle": "Host: NFS-Freigabe einhängen | ProxMenux-Dokumentation",
"ogDescription": "Montieren Sie einen externen NFS-Export auf dem Proxmox-Host über pvesm, fstab oder beides. fstab-Pfad ist ideal für LXC-Bind-Mounts."
},
"header": {
"title": "Host: NFS-Freigabe auf dem Host einhängen",
"description": "Montieren Sie einen externen NFS-Export (von einem NAS, einem anderen Server, einer Homelab-Freigabe ...) auf dem Proxmox-Host. Wählen Sie eine oder beide Methoden aus: Registrieren Sie sie als Proxmox-Speicher (sichtbar in Datacenter > Storage) und/oder fügen Sie einen einfachen Mount über /etc/fstab an einem von Ihnen gewählten Pfad hinzu (nützlich für das Binden der Freigabe in LXC-Container, ohne sie als Proxmox-Speicher freizulegen).",
"section": "Speicher und Freigaben · Host"
},
"intro": {
"title": "Was das macht",
"body": "ProxMenux bietet zwei Mount-Methoden für jeden NFS-Export an: <strong>(1) Proxmox-Speicher</strong> über <code>pvesm add nfs</code> - die Freigabe wird in Datacenter > Storage angezeigt und Proxmox verwaltet das Mount bei <code>/mnt/pve/&lt;id&gt;</code>; <strong>(2) Host-Fstab-Mount</strong> auf einem Weg, den Sie auswählen - persistent über <code>/etc/fstab</code>, NICHT sichtbar als Proxmox-Speicher, ideal für Bindemontage an LXC-Container (Proxmox UI bleibt sauber). Sie können eine Methode, die andere oder beides ausführen."
},
"opening": {
"heading": "Öffnen des Tools",
"body": "Öffnen Sie im Hauptmenü von ProxMenux <strong>Speicher &amp; Freigabe-Manager → NFS Freigabe auf Host bereitstellen</strong>. Sie sehen dieses sub-Menü mit vier Optionen:",
"imageAlt": "NFS-Host-Menü — Einhängen / Anzeigen / Entfernen / Verbindung testen"
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Der Ablauf hat zwei Phasen mit klarer Trennung zwischen \"Entdecken, Validieren und Auswählen\" und \"tatsächlich einhängen und Konfiguration schreiben\". Nachdem Sie einen Export ausgewählt haben, wählen Sie die Mount-Methode(n) über eine Checkliste aus; der Rest der Dialoge fragt nur nach Parametern für die von Ihnen ausgewählten Methoden. Bis zur endgültigen Bestätigung werden weder <code>/etc/pve/storage.cfg</code> noch <code>/etc/fstab</code> berührt."
},
"modes": {
"heading": "Mount-Methode wählen (eine oder beide Optionen)",
"intro": "Nach Auswahl und Validierung des Exports zeigt ProxMenux eine Checkliste mit den beiden Mount-Methoden an. Sie können entweder oder beide markieren. Wenn Sie auf OK drücken, ohne etwas zu markieren, erscheint der Dialog erneut, bis Sie mindestens eine Option auswählen oder auf Abbrechen drücken, um den Fluss zu verlassen.",
"imageAlt": "Mount Method Checkliste mit pvesm und fstab Optionen",
"headerMethod": "Methode",
"headerMount": "Mount-Pfad",
"headerUi": "Sichtbar in Datacenter > Storage",
"headerUseCase": "Typischer Anwendungsfall",
"rows": [
{
"method": "<strong>Als Proxmox-Speicher (pvesm)</strong>",
"mountRich": "<code>/mnt/pve/&lt;storage-id&gt;</code> (verwaltet von Proxmox)",
"ui": "Ja",
"useCase": "VM Disk-Images, Backups, ISOs, LXC-Vorlagen - alles, was in der Proxmox-Benutzeroberfläche angezeigt werden muss."
},
{
"method": "<strong>Nur Host-fstab</strong>",
"mountRich": "<code>/mnt/&lt;path&gt;</code> (Sie wählen den Weg)",
"ui": "Nein",
"useCaseRich": "Die Freigabe per Bind-Mount in einen oder mehrere LXCs einbinden, <em>ohne</em> sie als Proxmox-Speicher anzuzeigen. Hält die Datacenter-Oberfläche übersichtlich."
},
{
"method": "<strong>Beide</strong>",
"mount": "Beide Pfade oben (zwei Mount-Punkte desselben NFS-Exports)",
"ui": "Ja",
"useCase": "Oberflächenintegration und ein separater stabiler Host-Pfad mit offenen Berechtigungen für LXC-Bind-Mounts."
}
],
"bothTitle": "„Beide“ erstellt zwei unabhängige NFS-Mounts",
"bothBody": "Beide Methoden laufen getrennt: pvesm hängt unter <code>/mnt/pve/&lt;id&gt;</code> ein, fstab unter <code>/mnt/&lt;path&gt;</code>. So erhalten Sie einen Proxmox-Mount mit Standardoptionen und einen separaten Host-Mount für LXC-Bind-Mounts. Zwei Mount-Punkte garantieren keine zwei TCP-Verbindungen; der NFS-Client kann Transporte wiederverwenden."
},
"pvesmBranch": {
"heading": "Methode A — als Proxmox-Speicherung (pvesm)",
"intro": "Wenn <em>Als Proxmox-Speicher</em> markiert ist, führt ProxMenux den ursprünglichen pvesm-Flow aus:",
"items": [
"<strong>Storage ID</strong> – was Proxmox diesen Speicher nennen wird. Standardmäßig ist <code>nfs-&lt;server-ip-with-dashes&gt;</code>. Es werden nur Buchstaben, Ziffern, <code>-</code> und <code>_</code> akzeptiert.",
"<strong>Inhaltstypen</strong> — Proxmox verknüpft Inhaltskategorien mit Speichervolumen; wählen Sie aus, was dieser NFS enthalten darf:"
],
"headerType": "Inhaltsart",
"headerAllows": "Was es erlaubt",
"rows": [
{
"type": "import",
"allowsRich": "Datenträgerbildimporte (standardmäßig ausgewählt). Benötigt für <em>Import Disk Image zu VM</em>."
},
{
"type": "backup",
"allowsRich": "VM und CT Backup-Dateien (<code>vzdump</code>)."
},
{
"type": "iso",
"allows": "ISO-Abbildungen für die Installation."
},
{
"type": "vztmpl",
"allows": "LXC-Vorlagen."
},
{
"type": "images",
"allows": "VM-Disk-Images (dadurch wird der NFS in einen VM-Disk-Store verwandelt)."
},
{
"type": "rootdir",
"allows": "LXC Root-Dateisysteme (selten für NFS – lesen Sie den unten stehenden Hinweis)."
},
{
"type": "snippets",
"allows": "Hook-Scripts und Cloud-Init-Snippets."
}
],
"warnTitle": "images und rootdir auf NFS",
"warnBody": "Mit <code>images</code> kann Proxmox VM-Festplatten auf NFS speichern. Die Leistung hängt von Netzwerk, Server und Last ab; ein Ausfall kann davon abhängige E/A blockieren. Mit <code>rootdir</code> liegen LXC-Root-Dateisysteme auf NFS. Unprivilegierte Container können dort Einschränkungen bei UID-Zuordnung, Overlay und Eigentümern haben. Prüfen Sie dies vor der Ablage von <code>images</code> / <code>rootdir</code>; NFS eignet sich auch für <code>backup</code> / <code>iso</code> / <code>vztmpl</code>.",
"result": "Das Ergebnis ist <code>pvesm add nfs &lt;id&gt; --server &lt;srv&gt; --export &lt;path&gt; --content &lt;csv&gt;</code> und Proxmox Auto-Mounts bei <code>/mnt/pve/&lt;id&gt;</code>."
},
"fstabBranch": {
"heading": "Methode B — nur ein fstab-Mount auf dem Host",
"intro": "Wenn <em>Nur fstab-Mount auf dem Host</em> markiert ist, fragt ProxMenux nach einem host mount path und persistenten Optionen, dann mountet und schreibt den Eintrag in <code>/etc/fstab</code>:",
"items": [
"<strong>Mount-Pfad auf dem Host</strong> — standardmäßig <code>/mnt/&lt;export-basename&gt;</code>. Es muss ein absoluter Weg sein. Wenn dort bereits etwas montiert ist oder ein Fstab-Eintrag für den gleichen Pfad existiert, warnt Sie ProxMenux und bietet an, ihn zu ersetzen.",
"<strong>Mount-Optionen</strong> — <em>Lesen/Schreiben</em> (Standard: <code>rw,hard,nofail,_netdev,rsize=131072,wsize=131072,timeo=600,retrans=2</code>), <em>Nur Lesen</em>, <em>Benutzerdefiniert</em> (eigene Optionen eingeben)."
],
"appliesIntro": "Sobald Sie bestätigen, das Skript:",
"applies": [
"<code>mkdir -p</code> der Mount Path.",
"<code>mount -t nfs -o &lt;opts&gt; &lt;srv&gt;:&lt;export&gt; &lt;path&gt;</code>.",
"Schreibt einen einzeiligen Eintrag in <code>/etc/fstab</code>: <code>&lt;srv&gt;:&lt;export&gt; &lt;path&gt; nfs &lt;opts&gt; 0 0</code>.",
"Führt <code>systemctl daemon-reload</code> aus, so dass systemd den neuen Fstab-Eintrag abholt.",
"Versucht <code>chmod 1777</code> und <code>setfacl o::rwx</code> auf dem Mount-Punkt. Fehler werden still ignoriert; es gelingt nur, wenn der NFS-Server es erlaubt. Viele NAS-Exporte sind bereits für alle Benutzer beschreibbar."
],
"lxcTitle": "Den fstab-Mount aus einem LXC verwenden",
"lxcBody": "Das Skript zeigt einen <code>pct set</code>-Befehl für einen Bind-Mount, etwa <code>pct set &lt;ctid&gt; -mp0 /mnt/&lt;path&gt;,mp=/mnt/&lt;ct-path&gt;,shared=1,backup=0</code>. Alternativ erkennt der <mountLink>LXC Mount Manager</mountLink> fstab-Mounts. <strong>Im Container wird nichts geändert</strong>. Der Zugriff unprivilegierter CTs hängt von Serverrechten für ihre zugeordneten UIDs/GIDs ab. Das Skript versucht nur Berechtigungsänderungen vom Host aus; beschreibbare Exporte oder Herstellerstandards sind nicht garantiert. Bei Fehlern siehe Fehlerbehebung.",
"noUiTitle": "Der fstab-Mount ist KEIN Proxmox-Speicher",
"noUiBody": "Der fstab-Mount auf dem Host erscheint bewusst nicht in der Proxmox-Weboberfläche. Er fehlt unter <em>Datacenter > Storage</em>, lässt sich beim Erstellen einer VM oder eines CT nicht auswählen und kann nicht als Ziel eines Proxmox-Sicherungsauftrags dienen. Er ist lediglich ein Pfad im Dateisystem des Hosts. Wünschen Sie zusätzlich die Integration in die Oberfläche, wählen Sie <em>beide</em> Methoden aus."
},
"manual": {
"heading": "Manuelles Äquivalent",
"pvesmIntro": "Methode A (pvesm) bildet ab:",
"fstabIntro": "Methode B (Fstab) bildet ab:"
},
"view": {
"heading": "Ansicht konfigurierter NFS-Speicher",
"body": "Zeigt alle NFS-Einträge in Proxmox (<code>pvesm status | awk ''$2 == \"nfs\"''</code>) mit Server, Export, Inhaltstypen, Mount-Pfad und aktuellem Status. <strong>Hinweis:</strong> Diese Ansicht enthält nur über pvesm registrierte Storages. Reine fstab-Mounts werden nicht aufgeführt; prüfen Sie diese mit <code>findmnt -t nfs</code> oder <code>grep nfs /etc/fstab</code>."
},
"remove": {
"heading": "NFS-Speicher entfernen",
"body": "Führt <code>pvesm remove &lt;storage-id&gt;</code> nach einer Bestätigung aus, die den Server / Export / Inhalt anzeigt. Nur die Registrierung auf Proxmox-Seite wird entfernt — <strong>der entfernte NFS-Server selbst wird nie berührt</strong>, es werden keine Dateien gelöscht. Um ein fstab-only-Halter zu entfernen, bearbeiten Sie <code>/etc/fstab</code> von Hand und führen Sie <code>umount &lt;path&gt;</code> aus.",
"warnTitle": "Abhängigkeiten zuerst sichern",
"warnBody": "Wenn VMs, CTs oder Backup-Jobs immer noch auf diesen Speicher verweisen (nach ID), zeigt das Entfernen auf einen verschwundenen Speicher. Proxmox wird den Fehler markieren, aber nicht bereinigen. Verschieben oder löschen Sie diese Referenzen zuerst und entfernen Sie dann den Speicher."
},
"test": {
"heading": "NFS-Verbindung testen",
"body": "Führt einen Diagnosepass über jeden in Proxmox registrierten NFS-Speicher aus: Prüft, ob <code>showmount</code> verfügbar ist, ob <code>rpcbind</code> ausgeführt wird, pingt jeden Server, prüft den Port 2049, ruft <code>showmount -e</code> auf und meldet schließlich die eigene Ansicht von Proxmox (<code>pvesm status</code>). Gute erste Station, wenn ein Speicher als <em>inactive</em> in der Proxmox-Benutzeroberfläche angezeigt wird."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noServersTitle": "\"Keine NFS-Server im Netzwerk gefunden\"",
"noServersBody": "Auto-discover verwendet <code>nmap -p 2049 --open &lt;subnet&gt;/24</code>. Der Server reagiert möglicherweise nicht, wenn: er befindet sich in einem anderen VLAN / Subnetz, seine Firewall blockiert nmap Sonden (viele tun dies) oder der Port 2049 wird absichtlich auf dieser Schnittstelle geschlossen. Verwenden Sie stattdessen die Option <em>Manual</em> mit der IP oder dem Hostnamen des Servers.",
"portTitle": "„NFS-Port (2049) ist nicht erreichbar“",
"portBody": "Ping war erfolgreich, aber <code>nc -z -w 3 &lt;server&gt; 2049</code> scheiterte. Überprüfen Sie, ob der NFS-Dienst auf dem Server ausgeführt wird (<code>systemctl status nfs-server</code> auf Linux, Systemsteuerung → Dateidienste auf Synology, NFS-Plugin auf OMV / TrueNAS) und ob die Firewall 2049 vom Proxmox-Host ermöglicht.",
"showmountTitle": "\"Failed to connect\" von showmount",
"showmountBody": "Der Server lehnte die Exportlistenabfrage ab. Häufige Ursachen: Der Server erzwingt strenge Client-ACLs (Ihre Proxmox-IP steht nicht auf der erlaubten Liste), <code>rpcbind</code> läuft nicht auf dem Server oder der Server stellt nur NFSv4 mit deaktiviertem <code>showmount</code> bereit. Der Exportpfad kann weiterhin manuell hinzugefügt werden, wenn Sie ihn kennen.",
"inactiveTitle": "Storage zeigt als inaktiv in der Proxmox UI",
"inactiveBody": "Starten Sie zuerst <em>NFS-Verbindung testen</em>: Es prüft, ob der Server auf Ping antwortet, Port 2049 offen ist und die Exportliste (<code>showmount -e</code>) verfügbar ist. Bleibt der Speicher bei funktionierender Verbindung inaktiv, prüfen Sie <code>journalctl -u pvestatd</code> und Server-/Exportkonfiguration. Beheben Sie zuerst Verbindungs- oder Berechtigungsprobleme. <code>pvesm set &lt;id&gt; --disable 0</code> aktiviert einen deaktivierten Speicher und ist keine allgemeine NFS-Reparatur.",
"lxcNoWriteTitle": "fstab mount funktioniert, aber unprivilegierte LXC kann nicht durch ein bind-mount schreiben",
"lxcNoWriteBody": "NFS-Zugriff hängt von Eigentümern, ACLs und Squash-Einstellungen auf dem Server ab. CIFS-Optionen wie <code>uid=</code> und <code>file_mode=</code> gelten <strong>nicht</strong> für NFS. Bei der Standard-LXC-Zuordnung wird CT-root zu Host-UID 100000, nicht zu Remote-UID 0. Gewähren Sie der tatsächlich zugeordneten UID/GID oder anonymen Serveridentität Zugriff. <code>no_root_squash</code> betrifft nur Remote-UID 0 und löst Probleme mit UID 100000 nicht allgemein. Das Skript versucht <code>chmod 1777</code>, kann Serverrechte aber nicht umgehen.",
"fstabBootTitle": "fstab Mount wird nach dem Neustart nicht angezeigt",
"fstabBootBody": "Das Skript fügt <code>nofail,_netdev</code> hinzu, so dass ein fehlender Anteil beim Booten den Start nicht blockiert. Wenn das mount nie auftaucht: bestätigen, dass das netzwerk erreichbar ist (<code>ping &lt;server&gt;</code>), überprüfen sie <code>journalctl -u remote-fs.target</code> und überprüfen sie, ob der eintrag mit <code>mount -fav | grep nfs</code> gültig ist. <code>mount -a</code> nach dem Booten montiert alles, was derzeit fehlt."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/storage-share/host-samba",
"label": "Samba / CIFS als Proxmox-Speicher",
"tail": "— gleiches Flussmuster (Methode A pvesm + Methode B fstab) für SMB/CIFS-Freigaben."
},
{
"href": "/docs/storage-share/lxc-mount-points",
"label": "LXC-Mount-Verwaltung",
"tailRich": "— bind-mount den fstab-only Pfad <code>/mnt/&lt;path&gt;</code> in einen oder mehrere Container."
},
{
"href": "/docs/storage-share/lxc-nfs-client",
"label": "NFS-Client in LXC",
"tail": "— Alternative: NFS direkt aus einem privilegierten Container montieren (überspringt den Host)."
}
]
}
}
@@ -0,0 +1,172 @@
{
"meta": {
"title": "Host: Samba-Freigabe einhängen | ProxMenux-Dokumentation",
"description": "Montieren Sie eine externe Samba / CIFS-Freigabe auf dem Proxmox-Host - entweder als Proxmox-Speicher (pvesm add cifs), als einfacher fstab-Mount auf dem Host mit offenem uid / gid / file_mode (NICHT sichtbar in Datacenter > Storage) oder beides. Die fstab-Methode öffnet Berechtigungen, so dass eine unprivilegierte LXC-Bindung des Pfades ohne Änderungen im Container lesen / schreiben kann.",
"ogTitle": "Host: Samba-Freigabe einhängen | ProxMenux-Dokumentation",
"ogDescription": "Eine externe Samba-/CIFS-Freigabe auf dem Proxmox-Host über pvesm, fstab mit offenen Berechtigungen für LXC-Bind-Mounts oder beide Methoden einhängen."
},
"header": {
"title": "Host: Samba-Freigabe auf dem Host einhängen",
"description": "Montieren Sie eine externe Samba (SMB / CIFS)-Freigabe - von einem NAS, einer Windows-Box, einem TrueNAS SMB Export - auf dem Proxmox-Host. Wählen Sie eine oder beide Methoden: Registrieren Sie es als Proxmox-Speicher (sichtbar in Datacenter > Storage) und/oder fügen Sie einen einfachen Mount über /etc/fstab an einem von Ihnen gewählten Pfad mit offenem uid/gid/file_mode hinzu, so dass unprivilegierte LXCs ohne Änderungen im Container bind-mounten und schreiben können.",
"section": "Speicher und Freigaben · Host"
},
"intro": {
"title": "Was das macht",
"body": "ProxMenux bietet zwei Methoden für Samba-Freigaben: <strong>(1) Proxmox-Speicher</strong> über <code>pvesm add cifs</code>, sichtbar unter Datacenter > Storage und eingehängt unter <code>/mnt/pve/&lt;id&gt;</code>. Das Passwort liegt im Klartext in <code>/etc/pve/priv/storage/&lt;id&gt;.pw</code>, geschützt durch das nur für root zugängliche private Verzeichnis. Das ist Zugriffsschutz, keine Verschlüsselung. <strong>(2) fstab-Mount auf dem Host</strong> an einem gewählten Pfad, dauerhaft über <code>/etc/fstab</code> und mit <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code>, damit unprivilegierte LXCs über Bind-Mounts schreiben können. Die Zugangsdaten liegen in einer nur für root lesbaren Datei unter <code>/etc/samba/credentials/</code>, nie direkt in <code>fstab</code>. Beide Methoden sind einzeln oder gemeinsam nutzbar."
},
"opening": {
"heading": "Öffnen des Tools",
"body": "Öffnen Sie im Hauptmenü von ProxMenux <strong>Speicher &amp; Freigabe-Manager → Samba Freigabe auf Host bereitstellen</strong>. Sie sehen dieses sub-Menü mit vier Optionen:",
"imageAlt": "Samba-Host-Menü — Einhängen / Anzeigen / Entfernen / Verbindung testen"
},
"howRuns": {
"heading": "Wie das Skript läuft",
"body": "Der Ablauf hat zwei Phasen. Phase 1: Server entdecken, Anmeldeinformationen validieren, Share auswählen und dann die Mount-Methode(n) über eine Checkliste auswählen. Phase 2: Nur die von Ihnen markierten Methoden werden ausgeführt. Anmeldeinformationen werden im Voraus benötigt, weil <code>smbclient</code> sie benötigt, um Freigaben aufzulisten. Bis zur endgültigen Bestätigung werden weder <code>/etc/pve/storage.cfg</code> noch <code>/etc/fstab</code> berührt."
},
"modes": {
"heading": "Mount-Methode wählen (eine oder beide Optionen)",
"intro": "Nach Auswahl der Freigabe und Validierung der Anmeldeinformationen zeigt ProxMenux eine Checkliste mit den beiden Mount-Methoden an. Sie können entweder oder beide markieren. Wenn Sie auf OK drücken, ohne etwas zu markieren, erscheint der Dialog erneut, bis Sie mindestens eine Option auswählen oder auf Abbrechen drücken, um den Fluss zu verlassen.",
"headerMethod": "Methode",
"headerMount": "Mount-Pfad",
"headerUi": "Sichtbar in Datacenter > Storage",
"headerUseCase": "Typischer Anwendungsfall",
"rows": [
{
"method": "<strong>Als Proxmox-Speicher (pvesm)</strong>",
"mountRich": "<code>/mnt/pve/&lt;storage-id&gt;</code> (verwaltet von Proxmox)",
"ui": "Ja",
"useCase": "Backups, ISOs, LXC-Vorlagen - alles, was in der Proxmox-Benutzeroberfläche angezeigt werden muss. Live VM-Festplatten werden technisch unterstützt, aber von CIFS (Locking Semantics) abgeraten."
},
{
"method": "<strong>Nur Host-fstab</strong>",
"mountRich": "<code>/mnt/&lt;path&gt;</code> mit offenem uid/gid/file_mode",
"ui": "Nein",
"useCaseRich": "Die Freigabe per Bind-Mount in LXCs einbinden, <em>ohne</em> Proxmox-Speicher zu registrieren. Offene lokale Rechte erleichtern unprivilegierten CTs den Zugriff; Schreibzugriff muss der SMB-Server dem angemeldeten Benutzer trotzdem erlauben."
},
{
"method": "<strong>Beide</strong>",
"mount": "Beide Pfade oben (zwei Mount-Punkte desselben CIFS-Exports)",
"ui": "Ja",
"useCase": "Sie wollen UI-Integration UND einen stabilen hostseitigen Pfad mit offenen Berechtigungen für LXC-Bind-Mounts. Der pvesm-Mount verwendet Proxmox-Standards; der fstab-Mount wendet das offene uid/gid/file_mode separat an."
}
],
"bothTitle": "„Beide“ erstellt zwei CIFS-Mount-Punkte",
"bothBody": "pvesm hängt unter <code>/mnt/pve/&lt;id&gt;</code> mit Proxmox-Standardoptionen ein. fstab verwendet <code>/mnt/&lt;path&gt;</code> mit <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> für lokalen Zugriff über LXC-Bind-Mounts. Der SMB-Server erzwingt weiterhin die Rechte des Mount-Benutzers. Zwei Mount-Punkte garantieren keine zwei getrennten TCP-Verbindungen."
},
"pvesmBranch": {
"heading": "Methode A — als Proxmox-Speicherung (pvesm)",
"intro": "Wenn <em>Als Proxmox-Speicher</em> markiert ist, führt ProxMenux den ursprünglichen pvesm-Flow aus:",
"items": [
"<strong>Storage ID</strong> — Standard <code>cifs-&lt;server-ip-with-dashes&gt;</code>. Nur Buchstaben, Ziffern, <code>-</code> und <code>_</code>.",
"<strong>Inhaltstypen</strong> — diese ProxMenux-Auswahl bietet <strong>6</strong> Optionen. Gegenüber NFS fehlt <code>rootdir</code>. Das ist eine Entscheidung des Skripts und keine Aussage, dass jede Proxmox-CIFS-Version LXC-Root-Dateisysteme verbietet:"
],
"headerType": "Inhaltsart",
"headerAllows": "Was es erlaubt",
"rows": [
{
"type": "import",
"allows": "Datenträgerbildimporte (standardmäßig ausgewählt)."
},
{
"type": "backup",
"allowsRich": "VM und CT Backup-Dateien (<code>vzdump</code>)."
},
{
"type": "iso",
"allows": "ISO-Abbildungen für die Installation."
},
{
"type": "vztmpl",
"allows": "LXC-Vorlagen."
},
{
"type": "images",
"allowsRich": "VM-Festplatten in Betrieb — <strong>mit Warnung im Dialog</strong>, siehe unten."
},
{
"type": "snippets",
"allows": "Hook-Scripts und Cloud-Init-Snippets."
}
],
"warnTitle": "VM-Disks auf CIFS",
"warnBody": "Die Auswahl <code>images</code> löst eine ProxMenux-Warnung aus: CIFS/SMB kann Sperrprobleme bei VM-Festplattenoperationen verursachen. Das Skript empfiehlt NFS, lässt Sie aber fortfahren. Sicherungen und ISOs sind typische CIFS-Anwendungen. Prüfen Sie Sperren, Snapshots, Migration und Last vor der Verwendung für <code>images</code>.",
"credsTitle": "Wo pvesm Anmeldeinformationen speichert",
"credsBody": "Das Passwort steht nicht in <code>/etc/pve/storage.cfg</code>. Proxmox schreibt Klartext-Zugangsdaten in <code>/etc/pve/priv/storage/&lt;storage-id&gt;.pw</code>, im privaten Bereich des Cluster-Dateisystems, den nur <code>root</code> lesen kann (Modus <code>0600</code>); geschützt sind sie durch Zugriffsrechte, nicht durch Verschlüsselung. Nach einer Passwortänderung am Server verwenden Sie <code>pvesm set &lt;id&gt; --password &lt;new&gt;</code> oder entfernen und ergänzen den Speicher über ProxMenux erneut."
},
"fstabBranch": {
"heading": "Methode B — nur ein fstab-Mount auf dem Host",
"intro": "Wenn <em>Nur fstab-Mount auf dem Host</em> ausgewählt ist, fragt ProxMenux nach Host-Pfad und dauerhaften Optionen, erstellt im Benutzermodus eine nur für root lesbare Zugangsdaten-Datei, hängt die Freigabe ein und schreibt den Eintrag in <code>/etc/fstab</code>:",
"items": [
"<strong>Mount-Pfad auf dem Host</strong> — standardmäßig <code>/mnt/&lt;share-name&gt;</code>. Es muss ein absoluter Weg sein. Wenn dort bereits etwas montiert ist oder ein fstab-Eintrag vorhanden ist, bietet ProxMenux an, ihn zu ersetzen.",
"<strong>Mount-Optionen</strong> — <em>Lesen/Schreiben</em> (Standard: <code>rw,uid=0,gid=0,file_mode=0777,dir_mode=0777,iocharset=utf8,nofail,_netdev</code>), <em>Nur Lesen</em> (<code>file_mode=0555,dir_mode=0555</code>), <em>Benutzerdefiniert</em> (eigene Optionen eingeben). Das Skript empfiehlt offene uid/gid/file_mode für Schreibzugriffe über LXC-Bind-Mounts."
],
"credsTitle": "Anmeldedatendatei (Benutzermodus)",
"credsBody": "Wenn Sie sich mit einem Benutzernamen + Passwort authentifiziert haben, schreibt ProxMenux eine Root-Only-Anmeldedatendatei unter <code>/etc/samba/credentials/&lt;server&gt;_&lt;share&gt;.cred</code> (Modus <code>0600</code>) mit <code>username=</code> und <code>password=</code> Zeilen und verweist sie im fstab-Eintrag über die <code>credentials=</code>-Mount-Option. Klartext landet nie in <code>/etc/fstab</code>. Für den Gastmodus wird stattdessen die Option <code>guest</code> angehängt und es wird keine Anmeldedatei erstellt.",
"appliesIntro": "Sobald Sie bestätigen, das Skript:",
"applies": [
"<code>mkdir -p</code> der Mount Path.",
"<code>mount -t cifs -o &lt;opts&gt;,credentials=&lt;file&gt;</code> (oder <code>guest</code>) <code>//&lt;srv&gt;/&lt;share&gt; &lt;path&gt;</code>.",
"Schreibt einen einzeiligen Eintrag in <code>/etc/fstab</code>: <code>//&lt;srv&gt;/&lt;share&gt; &lt;path&gt; cifs &lt;opts&gt; 0 0</code>.",
"Führt <code>systemctl daemon-reload</code> aus, so dass systemd den neuen Fstab-Eintrag abholt."
],
"lxcTitle": "Verwendung des fstab-Mounts aus einem unprivilegierten LXC",
"lxcBody": "Die CIFS-Optionen <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> öffnen lokale Berechtigungsprüfungen für LXC-Bind-Mounts. Server-ACLs und ausgehandelte Unix-/POSIX-Semantik können den Zugriff weiterhin beeinflussen. <strong>Im Container wird nichts geändert</strong>: kein CT-<code>chown</code>, keine Gruppen oder Änderungen an <code>/etc/lxc</code>. Die <code>mp</code>-Zeile verwaltet Proxmox in der CT-Konfiguration. Verwenden Sie den angezeigten <code>pct set</code>-Befehl oder den <mountLink>LXC Mount Manager</mountLink>.",
"noUiTitle": "Der fstab-Mount ist KEIN Proxmox-Speicher",
"noUiBody": "Der fstab-Mount auf dem Host erscheint bewusst nicht in der Proxmox-Weboberfläche. Er fehlt unter <em>Datacenter > Storage</em>, lässt sich beim Erstellen einer VM oder eines CT nicht auswählen und kann nicht als Ziel eines Proxmox-Sicherungsauftrags dienen. Er ist lediglich ein Pfad im Dateisystem des Hosts. Wünschen Sie zusätzlich die Integration in die Oberfläche, wählen Sie <em>beide</em> Methoden aus."
},
"manual": {
"heading": "Manuelles Äquivalent",
"pvesmIntro": "Methode A (pvesm) bildet ab:",
"fstabUserIntro": "Methode B (fstab, user auth) — Anmeldedatendatei + Mount:",
"fstabGuestIntro": "Methode B (fstab, guest auth) — keine Anmeldedatendatei:"
},
"view": {
"heading": "CIFS-Speicher und Host-Mounts anzeigen",
"body": "Zeigt registrierte CIFS-Speicher (<code>pvesm status | awk ''$2 == \"cifs\"''</code>) mit Server, Freigabe, Inhalt, Benutzer oder <em>Gast</em>, Pfad und Status. Passwörter werden <strong>nie ausgegeben</strong>. <strong>Hinweis:</strong> Ein zweiter Abschnitt zeigt Host-fstab-Mounts mit Optionen, Zugangsdaten-Dateipfad und Aktivitätsstatus. Manuelle Prüfung mit <code>findmnt -t cifs</code> oder <code>grep cifs /etc/fstab</code>."
},
"remove": {
"heading": "CIFS-Speicher oder Host-Mount entfernen",
"body": "Die Auswahl enthält pvesm-Speicher und Host-fstab-Mounts. Für pvesm läuft <code>pvesm remove &lt;storage-id&gt;</code>; Proxmox entfernt zugehörige Zugangsdaten. Für fstab versucht das Skript <code>umount &lt;path&gt;</code>, entfernt den Eintrag aus <code>/etc/fstab</code> und Zugangsdaten unter <code>/etc/samba/credentials/</code> sowie nach Möglichkeit das leere Mount-Verzeichnis. Scheitert das Aushängen, sind manueller Unmount oder Neustart nötig. <strong>Der entfernte Samba-Server und seine Dateien bleiben unverändert</strong>.",
"warnTitle": "Abhängigkeiten zuerst sichern",
"warnBody": "VMs, CTs oder Backup-Jobs, die sich auf diesen Speicher nach ID beziehen, schlagen nach dem Entfernen fehl. Verschieben / löschen Sie diese Referenzen, bevor Sie den Speicher entfernen."
},
"test": {
"heading": "Samba Konnektivität testen",
"body": "Führt einen Diagnosepass über jeden in Proxmox registrierten CIFS-Speicher aus: Prüft, ob <code>smbclient</code> verfügbar ist, pingt jeden Server, prüft die Ports 445 und 139, versucht eine Gästeliste und meldet die eigene Ansicht von Proxmox (<code>pvesm status</code>). \"Erfordert Authentifizierung\" auf der Gästeliste bedeutet, dass Ihr Server nur Anteile authentifizierten Benutzern aussetzt - normal für die meisten NAS-Setups."
},
"troubleshoot": {
"heading": "Fehlerbehebung",
"noServersTitle": "\"Keine Samba-Server im Netzwerk gefunden\"",
"noServersBody": "Auto-discover verwendet <code>nmap -p 139,445</code>. Der Server kann sich in einem anderen Subnetz befinden, eine Firewall haben oder nur über den Hostnamen (mDNS / WINS) erreichbar sein. Verwenden Sie stattdessen die Option <em>Manual</em> mit IP oder Hostname.",
"noSharesTitle": "„Keine zugänglichen Freigaben gefunden“",
"noSharesBody": "<code>smbclient -L</code> gab nichts für diese Anmeldeinformationen zurück. Ursachen: Der Benutzer hat keine Berechtigung zum Auflisten von Shares (versuchen Sie es einmal mit Admin-Anmeldeinformationen oder geben Sie den Share-Namen manuell ein), der Server hat die Share-Sichtbarkeit deaktiviert oder die Anmeldeinformationen sind falsch. Mit dem Skript können Sie den Share-Namen in diesem Fall von Hand eingeben.",
"denyTitle": "Proxmox Mount scheitert mit NT_STATUS_ACCESS_DENIED",
"denyBody": "Die gespeicherten Anmeldeinformationen pvesm sind nicht mit dem Samba-Server synchronisiert (Passwort geändert, Konto deaktiviert, Domain / Arbeitsgruppenfehlanpassung). Wiedereingabe von Anmeldeinformationen mit <code>pvesm set &lt;id&gt; --username &lt;u&gt; --password &lt;p&gt;</code> oder Entfernen und erneutes Hinzufügen von ProxMenux. Wenn sich der Server in einer AD-Domäne befindet, fügen Sie <code>--domain &lt;DOMAIN&gt;</code> an den <code>pvesm set</code>-Aufruf an.",
"sleepTitle": "\"host is down\" oder der Speicherstatus wird nachts inaktiv",
"sleepBody": "Einige NAS-Appliances setzen SMB aggressiv schlafen. <code>pvestatd</code> sieht den Speicher dann als inaktiv, bis der erste Zugriff den NAS weckt. Wenn das kosmetisch ist, ist nichts kaputt. Wenn es zu Backup-Fehlern kommt, deaktivieren Sie die SMB Leerlauftrennung am NAS oder planen Sie Backups außerhalb des Schlaffensters.",
"lxcNoWriteTitle": "Unprivilegiertes LXC bind-mount kann nicht in den fstab Pfad schreiben",
"lxcNoWriteBody": "Prüfen Sie <code>findmnt /mnt/&lt;path&gt;</code> auf die vorgesehenen Optionen, etwa <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code>. Fehlende lokale Schreibrechte können zugeordnete LXC-UIDs blockieren. Wenden Sie das RW-Profil erneut an oder passen Sie eigene Optionen an. Prüfen Sie auch die Schreibrechte des SMB-Benutzers auf dem Server und ob Unix-/POSIX-Erweiterungen Servermodi liefern. Offene lokale Modi umgehen keine Server-ACLs.",
"fstabBootTitle": "fstab Mount wird nach dem Neustart nicht angezeigt",
"fstabBootBody": "Das Skript fügt <code>nofail,_netdev</code> hinzu, so dass ein fehlende Freigabe beim Booten den Start nicht blockiert. Wenn der Mount nie auftaucht: Bestätigen Sie, dass das Netzwerk erreichbar ist (<code>ping &lt;server&gt;</code>), überprüfen Sie <code>journalctl -u remote-fs.target</code>, überprüfen Sie, ob die Anmeldedatendatei noch vorhanden ist (<code>ls -l /etc/samba/credentials/</code>) und lesbar ist, und versuchen Sie <code>mount -a</code> manuell."
},
"related": {
"heading": "Verwandte Themen",
"items": [
{
"href": "/docs/storage-share/host-nfs",
"label": "NFS-Freigabe als Proxmox-Speicher",
"tail": "— Geschwisterseite mit dem gleichen Flussmuster (Methode A pvesm + Methode B fstab) und Side-by-Side-Trade-offs."
},
{
"href": "/docs/storage-share/lxc-mount-points",
"label": "LXC-Mount-Verwaltung",
"tailRich": "— bind-mount den fstab-only Pfad <code>/mnt/&lt;path&gt;</code> in einen oder mehrere Container."
},
{
"href": "/docs/storage-share/lxc-samba-client",
"label": "Samba-Client in LXC",
"tail": "— Alternative: Samba direkt aus einem privilegierten Container montieren (überspringt den Host)."
}
]
}
}
@@ -0,0 +1,135 @@
{
"meta": {
"title": "Proxmox NFS, Samba, iSCSI und LXC-Mounts — Speicher und Freigaben | ProxMenux",
"description": "Integrieren Sie externen und lokalen Speicher in Proxmox VE und teilen Sie Ordner zwischen dem Host und LXC-Containern. Fügen Sie NFS-Freigaben, Samba-Freigaben (CIFS) und iSCSI-Ziele als Proxmox-Speicher hinzu, richten Sie LXC-Bind-Mounts mit dem Mount Manager ein und betreiben Sie NFS-/Samba-Clients und -Server in Containern.",
"ogTitle": "Proxmox NFS, Samba, iSCSI und LXC-Mounts — Speicher und Freigaben",
"ogDescription": "Integrieren Sie externen / lokalen Speicher in Proxmox VE - NFS, Samba, iSCSI-Registrierung sowie LXC-Bind-Mounts und Netzwerkfreigabe.",
"twitterTitle": "Proxmox NFS, Samba, iSCSI | ProxMenux",
"twitterDescription": "Fügen Sie NFS / Samba / iSCSI als Proxmox-Speicher hinzu und teilen Sie Ordner zwischen Host und LXC."
},
"header": {
"title": "Speicher- und Freigabemanager",
"description": "Integrieren Sie externen oder lokalen Speicher in Proxmox VE und teilen Sie Ordner zwischen dem Host und LXC-Containern. Drei Werkzeuggruppen: Host-Speicherintegration (Speicher direkt in Proxmox registrieren), der LXC Mount Manager (Bind-Mounts mit pragmatischer Rechteverwaltung) und LXC-Netzwerkfreigaben (NFS-/Samba-Client- und -Server-Abläufe für bestimmte Anwendungsfälle).",
"section": "Speicher und Freigaben"
},
"intro": {
"title": "Wofür dieses Menü ist",
"body": "Der Disk Manager arbeitet auf der Ebene von <em>individuellen physischen Disks</em>. Der Storage &amp; Share Manager arbeitet eine Ebene höher – er <strong> registriert Speicherpools und Netzwerkfreigaben in Proxmox</strong> (damit die Benutzeroberfläche und der VM-Ersteller sie verwenden können) und <strong> richtet die Dateifreigabe zwischen dem Host und Ihren Containern</strong> ein."
},
"opening": {
"heading": "Öffnen des Menüs",
"body": "Wählen Sie im Hauptmenü von ProxMenux <strong>Storage &amp; Share Manager</strong>. Sie werden sehen:",
"imageAlt": "Storage & Share Manager Menü mit HOST und LXC Blöcken"
},
"groups": {
"heading": "Drei Werkzeuggruppen",
"intro": "Das Menü ist in drei Gruppen aufgeteilt. <strong>Host-Speicherintegration</strong> registriert externen oder lokalen Speicher direkt in Proxmox. Der <strong>LXC Mount Manager</strong> ist das Hauptwerkzeug zur Ordnerfreigabe für Container — ein pragmatischer Bind-Mount-Ablauf, der die UID-Zuordnung unprivilegierter CTs auf dem Host berücksichtigt. <strong>LXC-Netzwerkfreigaben</strong> decken vier zusätzliche Szenarien ab, in denen ein Container NFS-/Samba-Freigaben direkt <em>nutzen</em> oder <em>bereitstellen</em> muss.",
"hostTitle": "Host-Speicher",
"hostBody": "Registrieren Sie externe und lokale Speicherung in Proxmox über <code>pvesm add …</code>. Nach der Registrierung erscheint der Speicher in der Proxmox-Benutzeroberfläche und steht den VM- und CT-Erstellern zur Verfügung.",
"hostItems": [
"Externer NFS / Samba / iSCSI → Proxmox Speicher",
"Lokale Festplatte → Proxmox Verzeichnis oder ZFS Speicher",
"Lokales freigegebenes Verzeichnis (für Bind-Mounts in mehrere CTs)"
],
"lxcMountTitle": "LXC-Mount-Verwaltung",
"lxcMountBody": "Das primäre LXC-Sharing-Tool. Bindet Host-Verzeichnisse über <code>pct set -mpN</code> in Container ein und verarbeitet die Besonderheiten der Berechtigungen von unprivilegierten CTs, ohne eine Gruppe oder einen Benutzer im Container zu erstellen.",
"lxcMountItems": [
"Arbeitet mit privilegierten und unprivilegierten CTs",
"Bietet <code>o+rwx</code> für das Hostverzeichnis an, um unprivilegierte UIDs zu unterstützen",
"Behebt vorhandene CIFS / NFS Mounts bei Bedarf"
],
"lxcNetTitle": "LXC Netzwerkfreigabe",
"lxcNetBody": "Vier zusätzliche Abläufe, wenn ein Container NFS-/Samba-Freigaben direkt nutzen oder bereitstellen muss. Alle erfordern einen <strong>privilegierten</strong> Container.",
"lxcNetItems": [
"NFS-/Samba-<strong>Client</strong> (externe Freigaben nutzen)",
"NFS-/Samba-<strong>Server</strong> (CT-Ordner bereitstellen)"
]
},
"host": {
"heading": "Integration von Host-Speicher",
"intro": "Speicher in Proxmox registrieren. Jede Option ruft <code>pvesm add …</code> unter der Haube auf, so dass der Speicher in <strong>Datacenter → Storage</strong> angezeigt wird und den VM / CT-Erstellern zur Verfügung steht.",
"options": [
{
"href": "/docs/storage-share/host-nfs",
"icon": "Network",
"title": "NFS-Freigabe als Proxmox-Speicher hinzufügen",
"description": "Registrieren Sie einen externen NFS-Export als Proxmox-Speicher über pvesm add nfs. Proxmox übernimmt das mount - keine fstab-einträge erforderlich."
},
{
"href": "/docs/storage-share/host-samba",
"icon": "Share2",
"title": "Samba-Freigabe als Proxmox-Speicher hinzufügen",
"description": "Registrieren Sie eine externe Samba-/CIFS-Freigabe als Proxmox-Speicher über pvesm add cifs. Proxmox übernimmt das Einhängen und die Anmeldeinformationen."
},
{
"href": "/docs/storage-share/host-iscsi",
"icon": "Database",
"title": "Hinzufügen von iSCSI-Ziel als Proxmox-Speicher",
"description": "Verbinden Sie sich mit einem externen iSCSI-Ziel und registrieren Sie es als Proxmox-Speicher (Blockgerät) für VM-Disk-Images."
},
{
"href": "/docs/storage-share/host-local-disk",
"icon": "HardDrive",
"title": "Lokale Festplatte als Proxmox-Speicher hinzufügen",
"description": "Formatieren Sie eine lokale SATA / SAS / NVMe-Festplatte und registrieren Sie sie als Proxmox-Verzeichnis oder ZFS-Poolspeicher."
},
{
"href": "/docs/storage-share/host-local-shared",
"icon": "FolderOpen",
"title": "Freigegebenes Verzeichnis auf dem Host hinzufügen",
"description": "Erstellen Sie ein Host-Verzeichnis, das in mehrere CTs eingebunden werden soll. Kein Proxmox-Speicher - rein eine hostseitige Ressource für LXC-Bind-Mounts."
}
]
},
"lxcMount": {
"heading": "LXC-Mount-Verwaltung",
"intro": "Das primäre Tool zum Teilen von Ordnern zwischen dem Proxmox-Host und LXC-Containern. Es verwendet <code>pct set -mpN</code>, um ein Host-Verzeichnis in den Container zu binden, und behandelt die Besonderheiten der Berechtigungen von unprivilegierten CTs auf der Hostseite (es werden keine Gruppen oder Benutzer innerhalb des Containers erstellt).",
"card": {
"title": "LXC-Mountpoints (Host ↔ CT)",
"description": "Binden Sie ein beliebiges Hostverzeichnis mit pct set -mpN in einen LXC-Container ein. Dies funktioniert mit privilegierten und unprivilegierten CTs. Das Werkzeug bietet chmod o+rwx und ACLs für das Hostverzeichnis an und korrigiert bei Bedarf vorhandene CIFS- oder NFS-Mounts."
}
},
"lxcNet": {
"heading": "LXC Netzwerkfreigabe",
"intro": "Verwenden Sie diese Abläufe, wenn ein Container ein NFS-/Samba-Endpunkt <em>sein</em> muss — entweder eine externe Freigabe nutzen (Client) oder eigene Ordner bereitstellen (Server). Für die meisten Dateifreigaben (Bind-Mounts zwischen Host ↔ CT) ist der <mountLink>LXC Mount Manager</mountLink> einfacher und erfordert keine privilegierten Container.",
"options": [
{
"href": "/docs/storage-share/lxc-nfs-client",
"icon": "Download",
"title": "NFS-Client in LXC",
"description": "NFS-Freigaben innerhalb eines privilegierten LXC-Containers einhängen. Unterstützt automatische Erkennung, dauerhafte Einträge in /etc/fstab und sauberes Aushängen."
},
{
"href": "/docs/storage-share/lxc-samba-client",
"icon": "Download",
"title": "Samba-Client in LXC",
"description": "Samba-/CIFS-Freigaben innerhalb eines privilegierten LXC-Containers einhängen. Zugangsdaten werden geschützt gespeichert; automatische Erkennung ist verfügbar."
},
{
"href": "/docs/storage-share/lxc-nfs-server",
"icon": "Upload",
"title": "NFS Server in LXC",
"description": "Exportieren Sie Ordner über NFS aus einem privilegierten LXC-Container."
},
{
"href": "/docs/storage-share/lxc-samba-server",
"icon": "Upload",
"title": "Samba-Server in LXC",
"description": "Geben Sie Ordner über SMB / CIFS aus einem privilegierten LXC-Container frei."
}
]
},
"privReq": {
"title": "Privilegierte Containeranforderung",
"body": "Die vier obigen Abläufe für <strong>LXC-Netzwerkfreigaben</strong> erfordern einen <strong>privilegierten</strong> Container. Die Skripte prüfen diesen unterstützten Modus, bevor sie Dienste und Mount-Werkzeuge konfigurieren (<code>nfs-kernel-server</code>, <code>smbd</code>, <code>mount.nfs</code>, <code>mount.cifs</code>). Wenn Sie nur Dateien zwischen Host und unprivilegiertem CT teilen möchten, verwenden Sie den <mountLink>LXC Mount Manager</mountLink>: Er bindet die Verzeichnisse vom Host aus ein und passt dort die Rechte an, sodass der Container lesen und schreiben kann, ohne diese Dienste oder Werkzeuge in ihm einzurichten."
},
"unprivExplain": {
"title": "Wie ProxMenux unprivilegierte CT-Berechtigungen verarbeitet",
"body": "Unprivilegierte LXC-Container verschieben ihre UIDs auf dem Host um <strong>+100000</strong> (Container-UID 0 = Host-UID 100000, Container-UID 1000 = Host-UID 101000, …). Eine von einem Container-Benutzer erstellte Datei erscheint daher auf dem Host als <em>andere</em> — sie gehört keinem regulären Host-Benutzer oder keiner regulären Host-Gruppe. Der LXC Mount Manager löst dies pragmatisch: Statt UIDs/GIDs zwischen Host und CT abzugleichen, bietet er <code>chmod o+rwx</code> mit passenden ACLs für das Hostverzeichnis an, sodass jede zugeordnete UID lesen und schreiben kann. CIFS wird mit <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> neu eingehängt; bei NFS wird ein für alle beschreibbares Verzeichnis mit Sticky-Bit eingerichtet. Bei Root-Squashing weist das Werkzeug auf die nötige serverseitige Korrektur hin."
},
"scripts": {
"heading": "Involvierte Skripte",
"intro": "Jede einzelne Seite verlinkt auf das Skript, das seinen Fluss antreibt. Die folgende Datei ist ein gemeinsamer Helfer, der nicht als eigene Seite dokumentiert ist, sondern von mehreren LXC-Netzwerk-Sharing-Flows verwendet wird:",
"itemTail": "CT-Validierung, Einhängepunktauswahl, privilegierte Überprüfung und universelle Gruppeneinrichtungshelfer, die über die LXC-Client- / Serverflüsse hinweg geteilt werden."
}
}

Some files were not shown because too many files have changed in this diff Show More