mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-04 20:02:07 +00:00
Merge branch 'develop' of https://github.com/MacRimi/ProxMenux into develop
This commit is contained in:
@@ -58,7 +58,6 @@ export default async function CreatingBackupsPage({
|
||||
matrix: { rows: MatrixRow[] }
|
||||
commonPipeline: { steps: StepRow[] }
|
||||
included: {
|
||||
globalItems: string[]
|
||||
rootItems: string[]
|
||||
proxmenuxItems: string[]
|
||||
notInProfileItems: string[]
|
||||
@@ -71,7 +70,6 @@ export default async function CreatingBackupsPage({
|
||||
const entryRows = cb.entryPoints.rows
|
||||
const matrixRows = cb.matrix.rows
|
||||
const pipelineSteps = cb.commonPipeline.steps
|
||||
const globalItems = cb.included.globalItems
|
||||
const rootItems = cb.included.rootItems
|
||||
const proxmenuxItems = cb.included.proxmenuxItems
|
||||
const notInProfileItems = cb.included.notInProfileItems
|
||||
@@ -285,19 +283,6 @@ export default async function CreatingBackupsPage({
|
||||
{t.rich("included.intro", { code })}
|
||||
</p>
|
||||
|
||||
<h3 className="text-lg font-semibold mt-6 mb-3 text-gray-900">
|
||||
{t.rich("included.globalTitle", { code })}
|
||||
</h3>
|
||||
|
||||
<ul className="mb-6 space-y-1">
|
||||
{globalItems.map((_, idx) => (
|
||||
<li key={idx} className="text-gray-800 leading-relaxed pl-1">
|
||||
<span className="text-gray-400 mr-2">•</span>
|
||||
{t.rich(`included.globalItems.${idx}`, { code })}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
||||
<h3 className="text-lg font-semibold mt-6 mb-3 text-gray-900">
|
||||
{t.rich("included.rootTitle", { code })}
|
||||
</h3>
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"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>."
|
||||
"path": "menu → Host Backup & Restore → Backup host configuration",
|
||||
"detail": "Dialogbasierter Flow, SSH-freundlich. Der Hauptmenüeintrag öffnet Host Config Backup / Restore; Backup host configuration führt zu den sechs Optionen. Verwendet <code>backup_menu</code> in <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (Weboberfläche)",
|
||||
@@ -83,7 +83,7 @@
|
||||
"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.",
|
||||
"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 wählt das Ziel und die Verschlüsselungsoptionen aus 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.",
|
||||
@@ -124,14 +124,7 @@
|
||||
},
|
||||
"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."
|
||||
],
|
||||
"intro": "Jeder Pfad im aufgelösten Profil (Standard + persistente Extras + Custom-Mode-Auswahl) wird mit <code>rsync -aAXH --numeric-ids</code> kopiert. Es gibt keine globale Ausschlussliste; einige Verzeichnisse tragen pfadspezifische Ausschlüsse.",
|
||||
"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": [
|
||||
@@ -160,16 +153,16 @@
|
||||
"<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."
|
||||
"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. 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/selected_paths.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, und Pfade, deren Kopieren fehlschlägt, in <code>metadata/failed_paths.txt</code>."
|
||||
},
|
||||
"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"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "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."
|
||||
"body": "Bevor das Backend etwas an das Ziel schreibt, gibt ProxMenux im Terminal eine Zusammenfassung mit dem Ziel, der Backup-ID oder dem Archivnamen, dem Verschlüsselungsstatus und der Liste der zu kopierenden Pfade aus. An dieser Stelle gibt es keinen Bestätigungs- oder Abbruchschritt; das Kopieren beginnt unmittelbar danach. Wenn das Backup fehlschlägt oder unterbrochen wird, wird das Staging-Verzeichnis 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",
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
},
|
||||
"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:",
|
||||
"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 Archivziele → Lokales Backup-Ziel verwalten</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."
|
||||
"<strong>Benutzerdefinierten Pfad verwenden.</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>Ein USB-Laufwerk verwenden.</strong> Öffnet das USB-Untermenü (unten), das Wechselgeräte erkennt und ein Gerät montieren oder formatieren kann."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
"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."
|
||||
"action": "Ein Dateisystem ist vorhanden, aber nicht montiert. Bei Bestätigung führt ProxMenux <code>hb_mount_usb_partition</code> aus: erstellt <code>/mnt/proxmenux-backup-LABEL</code> (UUID oder Gerätename, wenn kein Label vorhanden ist), mountet die Partition und speichert den Einhängepunkt als lokales Ziel."
|
||||
},
|
||||
{
|
||||
"state": "leer",
|
||||
@@ -63,7 +63,7 @@
|
||||
},
|
||||
"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.",
|
||||
"intro": "Jedes erfolgreiche lokale Backup erzeugt eine Begleitdatei: <code>hostcfg-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."
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"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."
|
||||
"content": "Hinzugefügt unter <em>Backup-Ziele konfigurieren → Proxmox Backup Server (PBS) Ziele → + Neuen PBS manuell hinzufügen</em>. Fragt nach einem 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 abgefragt - 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ü",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"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/…"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "Die Rootfs Nutzlast",
|
||||
@@ -176,7 +176,7 @@
|
||||
"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."
|
||||
"action": "<code>_rs_prepare_pending_restore</code> bereitet riskante Pfade unter <code>/var/lib/proxmenux/restore-pending/<restore_id>/</code> (verlinkt als <code>current</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",
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"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.",
|
||||
"cliDetail": "Menü →\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."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"management": {
|
||||
"heading": "Aufträge verwalten",
|
||||
"intro": "Das Scheduler-Menü (Scripts TUI) und die Registerkarte Monitor Backups zeigen die gleichen Aktionen bei jedem Job.",
|
||||
"intro": "Das Scheduler-Menü im Scripts TUI (Backup scheduler and retention) bietet Run now, Enable / Disable und Delete sowie eine Liste der Jobs mit ihrem letzten Ausführungsstatus. Edit und View log sind nur in der Registerkarte Monitor Backups verfügbar.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Jetzt ausführen",
|
||||
@@ -112,7 +112,7 @@
|
||||
"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",
|
||||
"action": "Bearbeiten (nur Monitor)",
|
||||
"detail": "Öffnet Ziel, Zeitplan, Profil und Aufbewahrungsaufforderungen neu und schreibt die Jobdateien neu. Bewahrt die Job ID auf."
|
||||
},
|
||||
{
|
||||
@@ -120,7 +120,7 @@
|
||||
"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",
|
||||
"action": "Protokoll anzeigen (nur Monitor)",
|
||||
"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."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
},
|
||||
"package": {
|
||||
"heading": "Was im Paket landet",
|
||||
"intro": "Für eine OVA / OVF namens <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
"intro": "Für eine OVA / OVF namens <code>myvm-100-20260426_183015</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-20260426_183015.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-20260426_183015.mf # SHA1 manifest\nmyvm-100-20260426_183015-disk1.vmdk\nmyvm-100-20260426_183015-disk2.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-20260426_183015-ovf/\n├── myvm-100-20260426_183015.ovf\n├── myvm-100-20260426_183015.mf\n├── myvm-100-20260426_183015-disk1.vmdk\n└── myvm-100-20260426_183015-disk2.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "Was exportiert wird",
|
||||
@@ -90,7 +90,7 @@
|
||||
"manifest": {
|
||||
"heading": "SHA1-Manifest",
|
||||
"intro": "Jedes Paket enthält eine <code>.mf</code>-Datei mit SHA1-Hashes des OVF-Deskriptors und jedes VMDK:",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"code": "SHA1(myvm-100-20260426_183015.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-20260426_183015-disk1.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-20260426_183015-disk2.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "In der OVF-Spezifikation ist das Manifest optional; viele Importprogramme ignorieren es. Es hilft jedoch zu prüfen, ob das Paket unbeschädigt übertragen wurde. Prüfen Sie es manuell mit <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"body": "Halten Sie den Host in gutem Zustand: mit CLI-Werkzeugen, regelmäßigen Aktualisierungen und dem Versionsupgrade, wenn es ansteht.",
|
||||
"bullets": [
|
||||
"Installationsprogramm für Systemwerkzeuge (25 CLI-Werkzeuge)",
|
||||
"Proxmox-Systemaktualisierung (apt + dist-upgrade)",
|
||||
"Proxmox-Systemaktualisierung (apt + full-upgrade)",
|
||||
"Versionsupgrade PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
@@ -58,11 +58,11 @@
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "ISO-Erstellung",
|
||||
"body": "Erstellen Sie direkt auf dem Proxmox-Host eine neue, aktuelle Windows-Installations-ISO. Das Skript automatisiert den gesamten UUP-Dump-Ablauf: Installation der Abhängigkeiten (aria2c, cabextract, wimlib-imagex, …), paralleler Download der Aktualisierungsdateien mit aria2 und Umwandlung in eine bootfähige ISO. Diese wird unter <code>/var/lib/vz/template/iso</code> gespeichert und kann einer VM zugewiesen werden.",
|
||||
"body": "Erstellen Sie direkt auf dem Proxmox-Host eine neue, aktuelle Windows-Installations-ISO. Das Skript automatisiert den gesamten UUP-Dump-Ablauf: Installation der Abhängigkeiten (aria2c, cabextract, wimlib-imagex, …), paralleler Download der Aktualisierungsdateien mit aria2 und Umwandlung in eine bootfähige ISO. Diese wird im erkannten Proxmox-ISO-Speicher gespeichert (Ausweichziel <code>/var/lib/vz/template/iso</code>) und kann einer VM zugewiesen werden.",
|
||||
"options": [
|
||||
{
|
||||
"title": "UUP-Dump-ISO-Erstellung",
|
||||
"description": "Erstellen Sie eine aktuelle Windows-Installations-ISO über einen Freigabelink von UUP Dump. Abhängigkeiten, Download und Umwandlung werden vollständig automatisch abgewickelt. Die fertige ISO wird unter /var/lib/vz/template/iso für die VM-Erstellung gespeichert.",
|
||||
"description": "Erstellen Sie eine aktuelle Windows-Installations-ISO über einen Freigabelink von UUP Dump. Abhängigkeiten, Download und Umwandlung werden vollständig automatisch abgewickelt. Die fertige ISO wird im erkannten Proxmox-ISO-Speicher für die VM-Erstellung gespeichert.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Proxmox-Systemupdate",
|
||||
"description": "Repository-Prüfung + apt update + apt dist-upgrade mit Rückfrage vor dem Neustart. Erkennt die PVE-Hauptversion (8 oder 9), behält die konfigurierten Repositories bei und fragt nach, bevor ein Host ohne Abonnement auf das no-subscription-Repository umgestellt wird. Anschließend wird autoremove ausgeführt.",
|
||||
"description": "Repository-Prüfung + apt update + apt full-upgrade mit Rückfrage vor dem Neustart. Erkennt die PVE-Hauptversion (8 oder 9), behält die konfigurierten Repositories bei und fragt nach, bevor ein Host ohne Abonnement auf das no-subscription-Repository umgestellt wird. Anschließend wird autoremove ausgeführt.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"body": "Das Enterprise-Repository ist aktiviert, aber der Host hat kein aktives Abonnement. Das Arbeitsskript bietet vor <code>apt-get update</code> die Umstellung auf no-subscription an. Wurde sie abgelehnt, starten Sie die Aktualisierung erneut und stimmen Sie zu. Alternativ deaktivieren Sie Enterprise unter <em>Node → Updates → Repositories</em> und aktivieren no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade bleibt bei \"Configuring grub-pc\" hängen",
|
||||
"title": "full-upgrade bleibt bei \"Configuring grub-pc\" hängen",
|
||||
"body": "Falls eine interaktive GRUB-Abfrage erscheint, fragt sie nach den Geräten für den Bootloader. <code>--force-confold</code> gilt für Entscheidungen zu Konfigurationsdateien, nicht für diese Geräteauswahl. Wählen Sie mit <kbd>Tab</kbd> + <kbd>Space</kbd> die passenden Startfestplatten und dann OK. Die Auswahl lässt sich vorher mit <code>dpkg-reconfigure grub-pc</code> konfigurieren."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Proxmox-Systemupdate",
|
||||
"tailRich": "— für den eigentlichen <code>apt dist-upgrade</code> auf dem Host."
|
||||
"tailRich": " — für den eigentlichen <code>apt full-upgrade</code> auf dem Host."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"items": [
|
||||
"<strong>Geprüfte Sicherungen</strong> aller VMs und CTs (PBS, vzdump, ZFS-Snapshots — auch die Wiederherstellung prüfen).",
|
||||
"<strong>Konsolen- / IPMI- / iKVM-Zugang</strong> zum Host, falls SSH während des Upgrades ausfällt.",
|
||||
"Der Host ist bereits auf PVE 8.4.x auf dem neuesten Stand (das Skript erzwingt dies).",
|
||||
"Der Host befindet sich auf dem neuesten PVE-8-Patchstand. Das Skript aktualisiert zuerst PVE 8; es prüft nicht auf eine bestimmte Version 8.4.x.",
|
||||
"Ceph (falls vorhanden) auf der Version 19.x Squid.",
|
||||
"Mindestens <strong>5 GB freier Speicher</strong> im Root-Dateisystem."
|
||||
"Mindestens <strong>5 GB freier Speicher</strong> im Root-Dateisystem, wie es der Proxmox-Leitfaden empfiehlt. Das Skript selbst prüft nur 1 GB in /var/cache/apt/archives."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
@@ -63,13 +63,13 @@
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Warum das Web-Terminal blockiert ist",
|
||||
"body": "Alle drei Upgrade-Modi erkennen <code>termproxy</code> / <code>vncshell</code> in der Kette übergeordneter Prozesse und verweigern den Start. Das Proxmox-Webterminal wird von <code>pveproxy</code> bereitgestellt, einem Dienst, der beim Upgrade aktualisiert wird. Sobald <code>pveproxy</code> neu startet, endet die Terminalsitzung und damit auch das darin laufende Upgrade-Skript. Der Host kann unvollständig aktualisiert zurückbleiben.",
|
||||
"body": "Die Modi Automatisch und Interaktiv erkennen <code>termproxy</code> / <code>vncshell</code> in der Kette übergeordneter Prozesse und verweigern den Start, es sei denn, die Sitzung läuft über SSH oder <code>PVE_ALLOW_WEBTERM=1</code> ist gesetzt. Die Vorabprüfung und die manuelle Anleitung ändern nichts und laufen überall. Das Proxmox-Webterminal wird von <code>pveproxy</code> bereitgestellt, einem Dienst, der beim Upgrade aktualisiert wird. Sobald <code>pveproxy</code> neu startet, endet die Terminalsitzung und damit auch das darin laufende Upgrade-Skript. Der Host kann unvollständig aktualisiert zurückbleiben, ohne gute Möglichkeit zur Fortsetzung.",
|
||||
"warningTitle": "SSH oder eine physische / IPMI- / iKVM-Konsole verwenden",
|
||||
"warningBody": "SSH ist die übliche Wahl. Starten Sie die Sitzung in <code>tmux</code> oder <code>screen</code>, damit das Upgrade kurze Netzunterbrechungen übersteht. Erkennt das Skript eine einfache SSH-Shell, zeigt es zu Beginn einen Hinweis auf tmux/screen an."
|
||||
"warningBody": "SSH ist die übliche Wahl. Starten Sie die Sitzung in <code>tmux</code> oder <code>screen</code>, damit das Upgrade kurze Netzunterbrechungen übersteht. Der Bestätigungsdialog des Upgrades erinnert Sie daran, es von der Konsole oder per SSH in tmux/screen auszuführen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Automatischer / unbeaufsichtigter Modus",
|
||||
"intro": "Rückfragen zu Paketen und Konfigurationsdateien verwenden die Standardwerte aus der folgenden Tabelle, und ein 401 vom Enterprise-Repository wechselt ohne Rückfrage zu no-subscription. Die Upgrade-Bestätigung, die Zusammenfassung des PVE-8-Updates, Reparaturen der Vorabprüfung und die Neustart-Rückfrage werden weiterhin angezeigt.",
|
||||
"intro": "Rückfragen zu Paketen und Konfigurationsdateien verwenden die Standardwerte aus der folgenden Tabelle. Die Upgrade-Bestätigung, die Zusammenfassung des PVE-8-Updates, Reparaturen der Vorabprüfung und die Neustart-Rückfrage werden weiterhin angezeigt.",
|
||||
"behaviourHeading": "Besonderheiten des automatischen Modus",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Einstellung",
|
||||
@@ -94,8 +94,8 @@
|
||||
]
|
||||
},
|
||||
"flowHeading": "Ablauf im automatischen Modus",
|
||||
"flowIntro": "Sechs aufeinanderfolgende Phasen. Phase 2 aktualisiert die PVE-8-Pakete, Phase 3 schreibt die Repository-Konfiguration für PVE 9. Ein Fehler hält den Ablauf an, macht diese Änderungen aber nicht rückgängig; schlägt das PVE-8-Update fehl oder wird es abgebrochen, bleiben die Repositories unverändert. Phase 5 führt <code>dist-upgrade</code> auf PVE 9 aus.",
|
||||
"flowDiagram": "1. PRÜFUNGEN\ntermproxy / vncshell blockieren; Upgrade bestätigen; PVE 9 ablehnen.\n\n2. PVE 8 VORBEREITEN\nscripts/global/update-pve8.sh\nPVE-8-Pakete aktualisieren; Abbruch, wenn das Update fehlschlägt oder abgebrochen wird.\npve8to9 --full (kann Reparaturen anbieten).\nSpeicher und Verbindung prüfen; Ceph 19.x Squid auf hyperkonvergenten Knoten.\n\n3. REPOSITORIES UMSTELLEN\nBookworm → Trixie; deb822-Dateien .sources schreiben.\nAlte .list-Dateien auskommentieren; apt-get update.\n\n4. PVE-9-KANDIDAT PRÜFEN\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nAbbruch, wenn der Kandidat nicht 9.x ist oder proxmox-ve entfernt würde.\n\n5. UPGRADE\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nOhne Subskription: pve-enterprise.sources deaktivieren.\nProtokoll: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. PRÜFEN UND NEU STARTEN\nEFI: apt install grub-efi-amd64\npve8to9 --full; Ergebnis und Neustart-Rückfrage prüfen.",
|
||||
"flowIntro": "Sechs aufeinanderfolgende Phasen. Phase 2 stellt die PVE-8-Repositories auf no-subscription um (Enterprise- und Ceph-Listen deaktiviert, <code>/etc/apt/sources.list</code> neu geschrieben), bevor sie die Update-Zusammenfassung anzeigt, und aktualisiert dann die Pakete; Phase 3 schreibt die Repository-Konfiguration für PVE 9. Ein Fehler hält den Ablauf an, macht diese Änderungen aber nicht rückgängig; schlägt das PVE-8-Update fehl oder wird es abgebrochen, startet die PVE-9-Migration nicht, die Änderungen an den PVE-8-Repositories bleiben aber bestehen. Phase 5 führt <code>dist-upgrade</code> auf PVE 9 aus.",
|
||||
"flowDiagram": "1. PRÜFUNGEN\ntermproxy / vncshell blockieren; Upgrade bestätigen; PVE 9 ablehnen.\n\n2. PVE 8 VORBEREITEN\nscripts/global/update-pve8.sh\nPVE-8-Repositories auf no-subscription umstellen und sources.list neu schreiben;\nPVE-8-Pakete aktualisieren; Abbruch, wenn das Update fehlschlägt oder abgebrochen wird.\npve8to9 --full (kann Reparaturen anbieten).\nSpeicher und Verbindung prüfen; Ceph 19.x Squid auf hyperkonvergenten Knoten.\n\n3. REPOSITORIES UMSTELLEN\nBookworm → Trixie; deb822-Dateien .sources schreiben.\nAlte .list-Dateien auskommentieren; apt-get update.\n\n4. PVE-9-KANDIDAT PRÜFEN\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nAbbruch, wenn der Kandidat nicht 9.x ist oder proxmox-ve entfernt würde.\n\n5. UPGRADE\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nOhne Subskription: pve-enterprise.sources deaktivieren.\nProtokoll: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. PRÜFEN UND NEU STARTEN\nEFI: apt install grub-efi-amd64\npve8to9 --full; Ergebnis und Neustart-Rückfrage prüfen.",
|
||||
"preflightHeading": "Vor dem Upgrade: diese Punkte werden geprüft",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Prüfung",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Manuelles Upgrade-Verfahren",
|
||||
"intro": "Dies zeigt die Menüoption <strong>Manuelle Upgrade-Anleitung</strong>: die <wikilink>offizielle Proxmox-Anleitung für das Upgrade von 8 auf 9</wikilink>, in vier Phasen gegliedert. Das Skript <em>zeigt</em> die Befehle; Sie führen sie selbst in einer separaten Root-Shell aus. Volle Einsicht in jeden Schritt.",
|
||||
"intro": "Dies folgt der Anzeige der Menüoption <strong>Manuelle Upgrade-Anleitung</strong>, basierend auf der <wikilink>offiziellen Proxmox-Anleitung für das Upgrade von 8 auf 9</wikilink> und in vier Phasen gegliedert. Die dpkg-Antworttabelle ergänzt die Hinweise des Wikis zu sshd_config und chrony.conf, die das Menü als einfaches Y anzeigt. Das Skript <em>zeigt</em> die Befehle; Sie führen sie selbst in einer separaten Root-Shell aus. Keine Automatisierung, volle Einsicht in jeden Schritt.",
|
||||
"rootCalloutTitle": "Alle Befehle brauchen root",
|
||||
"rootCalloutBody": "Verwenden Sie eine Root-Shell, auch für Umleitungen und Here-Dokumente. Bei <code>sudo</code> muss der gesamte Befehl mit Root-Rechten ausgeführt werden.",
|
||||
"phase1Heading": "Phase 1 — Vorbereitung",
|
||||
@@ -230,7 +230,7 @@
|
||||
"clusterCeph": {
|
||||
"heading": "Cluster & Ceph",
|
||||
"clusterCalloutTitle": "Cluster: Upgrade-Knoten nacheinander",
|
||||
"clusterCalloutBody": "Erkannt über <code>pvecm status</code>. <strong>Nicht</strong> mehrere Knoten gleichzeitig aktualisieren. Gäste zuerst verschieben, den Knoten aktualisieren, neu starten und die Cluster-Mitgliedschaft prüfen. Erst dann fortfahren. Während des Upgrades funktioniert Live-Migration von älteren zu neueren PVE-Versionen; die Gegenrichtung wird grundsätzlich nicht unterstützt. HA-Gruppen werden automatisch in HA-Regeln umgewandelt, sobald alle Knoten PVE 9 verwenden.",
|
||||
"clusterCalloutBody": "<strong>Nicht</strong> mehrere Knoten gleichzeitig aktualisieren. Gäste zuerst verschieben, den Knoten aktualisieren, neu starten und die Cluster-Mitgliedschaft prüfen. Erst dann fortfahren. Während des Upgrades funktioniert Live-Migration von älteren zu neueren PVE-Versionen; die Gegenrichtung wird grundsätzlich nicht unterstützt. HA-Gruppen werden automatisch in HA-Regeln umgewandelt, sobald alle Knoten PVE 9 verwenden.",
|
||||
"cephCalloutTitle": "Ceph: ZUERST Ceph, danach Proxmox aktualisieren",
|
||||
"cephCalloutBody": "Ceph muss vor dem Proxmox-Upgrade bereits 19.x Squid verwenden. Folgen Sie der offiziellen Reihenfolge Quincy 17 → Reef 18 → Squid 19: Pakete aktualisieren und Ceph-Daemons schrittweise in der dokumentierten Reihenfolge neu starten. Vor dem Upgrade jedes Proxmox-Knotens <code>ceph --version</code> prüfen. Vollständiges Verfahren: <cephlink>Wiki zum Upgrade von Ceph Reef auf Squid</cephlink>."
|
||||
},
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
"files": {
|
||||
"heading": "Beteiligte Dateien",
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
},
|
||||
"references": {
|
||||
"heading": "Offizielle Quellen",
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"rows": [
|
||||
{
|
||||
"entry": "ProxMenux Scripts (TUI)",
|
||||
"path": "menu → Utilities → Host Config Backup",
|
||||
"detail": "Dialog-based flow, SSH-friendly. The main menu presents the six options directly. Uses <code>backup_menu</code> in <code>backup_host.sh</code>."
|
||||
"path": "menu → Host Backup & Restore → Backup host configuration",
|
||||
"detail": "Dialog-based flow, SSH-friendly. The main menu entry opens Host Config Backup / Restore; Backup host configuration leads to the six options. Uses <code>backup_menu</code> in <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (Web UI)",
|
||||
@@ -83,7 +83,7 @@
|
||||
"profiles": {
|
||||
"heading": "Default vs Custom profile",
|
||||
"defaultTitle": "Default profile",
|
||||
"defaultBody": "The default profile is the curated list from <code>hb_default_profile_paths</code> (documented in <em>How it works</em> under <em>Path categories</em>) plus every entry in the persistent extras file <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. The user confirms the destination and encryption options and the backup proceeds without further path selection.",
|
||||
"defaultBody": "The default profile is the curated list from <code>hb_default_profile_paths</code> (documented in <em>How it works</em> under <em>Path categories</em>) plus every entry in the persistent extras file <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. The user picks the destination and encryption options and the backup proceeds without further path selection.",
|
||||
"customTitle": "Custom profile",
|
||||
"customBody": "The custom profile opens a checklist showing every path in the default profile (unchecked) and every persistent extra (pre-checked, prefixed with <code>[+]</code>). The user ticks the set for this run and can press <em>Add custom path</em> to append a new absolute path. Any path added inline is persisted to <code>backup-extra-paths.txt</code> so future backups pick it up automatically without re-adding it. Removing a persistent extra unticks it for this run but does not delete it from the file — deletion is a separate <em>Manage custom paths</em> action outside the backup flow.",
|
||||
"customPickerAlt": "Custom profile checklist showing the default-profile paths (unchecked) and persistent extras (pre-checked with a [+] prefix), plus buttons to add a new path or confirm the selection.",
|
||||
@@ -124,14 +124,7 @@
|
||||
},
|
||||
"included": {
|
||||
"heading": "What goes in and what stays out",
|
||||
"intro": "Every path in the resolved profile (default + persistent extras + custom-mode selection) is copied with <code>rsync -aAXH --numeric-ids</code>. A shared exclusion list applies to every path, and two directories carry additional path-specific exclusions.",
|
||||
"globalTitle": "Global exclusions (applied to every path)",
|
||||
"globalItems": [
|
||||
"<code>images/</code> — image dumps.",
|
||||
"<code>dump/</code> — vzdump outputs.",
|
||||
"<code>tmp/</code> — temporary files.",
|
||||
"<code>*.log</code> — log files."
|
||||
],
|
||||
"intro": "Every path in the resolved profile (default + persistent extras + custom-mode selection) is copied with <code>rsync -aAXH --numeric-ids</code>. There is no global exclusion list; a few directories carry path-specific exclusions.",
|
||||
"rootTitle": "<code>/root/</code> exclusions",
|
||||
"rootBody": "<code>/root/</code> is part of the default profile so user scripts and config land in the archive. Volatile subpaths are dropped:",
|
||||
"rootItems": [
|
||||
@@ -160,16 +153,16 @@
|
||||
"<strong><code>/home/USER</code></strong> — not in the default profile. Add it as a custom path when a system carries user home directories that must survive a restore."
|
||||
],
|
||||
"customPathsTitle": "How custom paths are handled",
|
||||
"customPathsBody": "A custom path added inline in Custom mode or persisted in <code>backup-extra-paths.txt</code> goes through the same <code>rsync</code> pipeline as default-profile paths. Global exclusions apply. If the custom path happens to be under <code>/root/</code> or <code>/usr/local/share/proxmenux/</code>, the path-specific exclusions above still apply. Every archived path — default or custom — is recorded in <code>metadata/paths_archived.txt</code>. Paths that do not exist on the source are recorded in <code>metadata/missing_paths.txt</code> without stopping the backup."
|
||||
"customPathsBody": "A custom path added inline in Custom mode or persisted in <code>backup-extra-paths.txt</code> goes through the same <code>rsync</code> pipeline as default-profile paths. If the custom path happens to be under <code>/root/</code> or <code>/usr/local/share/proxmenux/</code>, the path-specific exclusions above still apply. Every archived path — default or custom — is recorded in <code>metadata/selected_paths.txt</code>. Paths that do not exist on the source are recorded in <code>metadata/missing_paths.txt</code> without stopping the backup, and paths that fail to copy in <code>metadata/failed_paths.txt</code>."
|
||||
},
|
||||
"archiveStructure": {
|
||||
"heading": "Archive structure",
|
||||
"intro": "The staging directory produced by every backend follows the same layout regardless of destination. The tarball, PBS <code>.pxar</code> or Borg archive stores this tree verbatim.",
|
||||
"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"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "Confirmation summary",
|
||||
"body": "Before the backend writes anything to the destination, ProxMenux shows a summary dialog with the destination, backup ID or archive name, encryption state, and the list of paths being copied. Cancelling here aborts the backup cleanly — the staging directory is removed by the <code>trap</code> hook set on the backend function and no partial data reaches the destination."
|
||||
"body": "Before the backend writes anything to the destination, ProxMenux prints a summary in the terminal with the destination, backup ID or archive name, encryption state, and the list of paths being copied. There is no confirm or cancel step at this point; the copy starts right after. If the backup fails or is interrupted, the staging directory is removed by the <code>trap</code> hook set on the backend function and no partial data reaches the destination."
|
||||
},
|
||||
"writing": {
|
||||
"heading": "Writing to the destination",
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
},
|
||||
"targetConfig": {
|
||||
"heading": "Configuring the target directory",
|
||||
"intro": "The local destination is a <strong>single persisted target directory</strong> — not a list. ProxMenux stores the user's choice at <code>/usr/local/share/proxmenux/local-target.conf</code> and reads it on every backup. When no target has been configured, the default <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> is used (the same directory Proxmox uses for its own <code>vzdump</code> outputs). The target is configured from <em>Configure backup destinations → Local destinations</em>:",
|
||||
"intro": "The local destination is a <strong>single persisted target directory</strong> — not a list. ProxMenux stores the user's choice at <code>/usr/local/share/proxmenux/local-target.conf</code> and reads it on every backup. When no target has been configured, the default <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> is used (the same directory Proxmox uses for its own <code>vzdump</code> outputs). The target is configured from <em>Configure backup destinations → Local archive targets → Manage local backup target</em>:",
|
||||
"options": [
|
||||
"<strong>Use default (<code>/var/lib/vz/dump</code>).</strong> The Proxmox local storage. Present on every Proxmox install; the archive sits next to vzdump outputs and is picked up by the Monitor's Backups tab automatically.",
|
||||
"<strong>Enter a custom path.</strong> Any absolute filesystem path can be used: an NFS mount, an SMB share mounted via <code>fstab</code>, a dedicated ZFS dataset, a second internal disk. ProxMenux validates that the path exists and is a directory before persisting it.",
|
||||
"<strong>Pick a USB drive.</strong> Opens the USB submenu (below), which detects removable devices and offers to mount or format one."
|
||||
"<strong>Use a custom path.</strong> Any absolute filesystem path can be used: an NFS mount, an SMB share mounted via <code>fstab</code>, a dedicated ZFS dataset, a second internal disk. ProxMenux validates that the path exists and is a directory before persisting it.",
|
||||
"<strong>Use a USB disk.</strong> Opens the USB submenu (below), which detects removable devices and offers to mount or format one."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
"state": "unmounted",
|
||||
"shown": "Size · label · [fstype] · (not mounted — will be mounted)",
|
||||
"action": "A filesystem is present but not mounted. On confirmation, ProxMenux runs <code>hb_mount_usb_partition</code>: creates <code>/mnt/backup-LABEL</code> (or a UUID-based path if there is no label), mounts the partition and persists the mount point as the local target."
|
||||
"action": "A filesystem is present but not mounted. On confirmation, ProxMenux runs <code>hb_mount_usb_partition</code>: creates <code>/mnt/proxmenux-backup-LABEL</code> (UUID or device name if there is no label), mounts the partition and persists the mount point as the local target."
|
||||
},
|
||||
{
|
||||
"state": "empty",
|
||||
@@ -63,7 +63,7 @@
|
||||
},
|
||||
"sidecar": {
|
||||
"heading": "The sidecar JSON",
|
||||
"intro": "Every successful local backup produces a companion file: <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, written next to the archive by <code>hb_write_archive_sidecar</code>. This small JSON file lets the ProxMenux Monitor identify the archive as a ProxMenux host backup even if it is later moved, renamed or archived elsewhere.",
|
||||
"intro": "Every successful local backup produces a companion file: <code>hostcfg-HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, written next to the archive by <code>hb_write_archive_sidecar</code>. This small JSON file lets the ProxMenux Monitor identify the archive as a ProxMenux host backup even if it is later moved, renamed or archived elsewhere.",
|
||||
"contentTitle": "Sidecar contents",
|
||||
"contentBody": "The sidecar stores the schema version, whether the backup came from an interactive run or a scheduled job (<code>kind</code>), the job ID for scheduled runs, the profile mode used (<code>default</code> or <code>custom</code>), the source hostname, the original archive basename, an ISO-8601 creation timestamp and the archive size in bytes.",
|
||||
"whyBody": "The Monitor's Backups tab scans configured local directories for <code>*.proxmenux.json</code> sidecars — not for <code>*.tar.zst</code> files — because a <code>.tar.zst</code> without a sidecar might not be a ProxMenux backup at all. The scan is fast (JSON files are tiny) and the pairing is stable across renames of the archive as long as the sidecar is renamed to match."
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"source": "ProxMenux manual config",
|
||||
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
|
||||
"content": "Added from <em>Configure backup destinations → PBS destinations → Add PBS</em>. Prompts for a name, username (<code>root@pam</code> or <code>user@pbs!token</code>), host or IP, datastore and password. The password re-prompts on empty input — an empty save would otherwise persist silently and every subsequent backup would fail with an opaque authentication error. This path is used when the target PBS is not registered as Proxmox storage."
|
||||
"content": "Added from <em>Configure backup destinations → Proxmox Backup Server (PBS) destinations → + Add new PBS manually</em>. Prompts for a name, username (<code>root@pam</code> or <code>user@pbs!token</code>), host or IP, datastore and password. The password re-prompts on empty input — an empty save would otherwise persist silently and every subsequent backup would fail with an opaque authentication error. This path is used when the target PBS is not registered as Proxmox storage."
|
||||
}
|
||||
],
|
||||
"menuTitle": "Selection menu",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"heading": "Archive layout",
|
||||
"intro": "Every archive follows the same tree layout regardless of destination. The <code>metadata/</code> subdirectory holds the structured payloads; the <code>rootfs/</code> subdirectory holds the filesystem copy.",
|
||||
"treeCaption": "The staging directory laid out during a backup. Every destination receives the same tree (adapted to its native format: tar for local, PBS chunks for PBS, borg segments for 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/…"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "The rootfs payload",
|
||||
@@ -176,7 +176,7 @@
|
||||
"stage": "3",
|
||||
"name": "Pending prepare",
|
||||
"reads": "rootfs/ (reboot + dangerous paths)",
|
||||
"action": "<code>_rs_prepare_pending_restore</code> stages risky paths under <code>/var/lib/proxmenux/pending-restore/</code>, writes <code>plan.env</code>, <code>apply-on-boot.list</code> and <code>rs-skip-paths.txt</code>, and enables <code>proxmenux-restore-onboot.service</code> to fire on the next boot."
|
||||
"action": "<code>_rs_prepare_pending_restore</code> stages risky paths under <code>/var/lib/proxmenux/restore-pending/<restore_id>/</code> (linked as <code>current</code>), writes <code>plan.env</code>, <code>apply-on-boot.list</code> and <code>rs-skip-paths.txt</code>, and enables <code>proxmenux-restore-onboot.service</code> to fire on the next boot."
|
||||
},
|
||||
{
|
||||
"stage": "3b",
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"heading": "Two interfaces, one backend",
|
||||
"intro": "Every step of the backup and restore workflow is available from two entry points. Both call the same shell library, produce identical archives, and read the same job registry.",
|
||||
"cliLabel": "ProxMenux Scripts (TUI)",
|
||||
"cliDetail": "menu → Utilities →\nHost Backup / Restore\n\nDialog-based flow,\nSSH-friendly, scriptable\nfor unattended use.",
|
||||
"cliDetail": "menu →\nHost Backup & Restore\n\nDialog-based flow,\nSSH-friendly, scriptable\nfor unattended use.",
|
||||
"webLabel": "ProxMenux Monitor (Web UI)",
|
||||
"webDetail": "Backups tab in the\nMonitor's Web interface.\n\nOne-click restore, live\nlog tail, integrated with\nnotifications and the\nrollback delta viewer."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"management": {
|
||||
"heading": "Managing jobs",
|
||||
"intro": "The scheduler menu (Scripts TUI) and the Monitor Backups tab expose the same actions on any job.",
|
||||
"intro": "The scheduler menu in the Scripts TUI (Backup scheduler and retention) offers Run now, Enable / Disable and Delete, plus a list of jobs with their last run status. Edit and View log are only available in the Monitor Backups tab.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Run now",
|
||||
@@ -112,7 +112,7 @@
|
||||
"detail": "New mode: <code>systemctl enable/disable --now</code> the timer. Attach mode: flips the <code>ENABLED</code> flag in the job env — the hook script honours it on the next PVE fire."
|
||||
},
|
||||
{
|
||||
"action": "Edit",
|
||||
"action": "Edit (Monitor only)",
|
||||
"detail": "Reopens the destination, schedule, profile and retention prompts and rewrites the job files. Preserves the job ID."
|
||||
},
|
||||
{
|
||||
@@ -120,7 +120,7 @@
|
||||
"detail": "Removes the job env, paths file, systemd timer + service (New mode), and disables the hook binding (Attach mode). Does not touch archives already on the destination."
|
||||
},
|
||||
{
|
||||
"action": "View log",
|
||||
"action": "View log (Monitor only)",
|
||||
"detail": "Streams <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code> — one log file per run. The runner also emits a compact status line to journald under the systemd service."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
},
|
||||
"package": {
|
||||
"heading": "What ends up in the package",
|
||||
"intro": "For an OVA / OVF named <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
"intro": "For an OVA / OVF named <code>myvm-100-20260426_183015</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-20260426_183015.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-20260426_183015.mf # SHA1 manifest\nmyvm-100-20260426_183015-disk1.vmdk\nmyvm-100-20260426_183015-disk2.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-20260426_183015-ovf/\n├── myvm-100-20260426_183015.ovf\n├── myvm-100-20260426_183015.mf\n├── myvm-100-20260426_183015-disk1.vmdk\n└── myvm-100-20260426_183015-disk2.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "What gets exported",
|
||||
@@ -90,7 +90,7 @@
|
||||
"manifest": {
|
||||
"heading": "SHA1 manifest",
|
||||
"intro": "Every package includes a <code>.mf</code> file with SHA1 hashes of the OVF descriptor and each VMDK:",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"code": "SHA1(myvm-100-20260426_183015.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-20260426_183015-disk1.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-20260426_183015-disk2.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "Optional in the OVF spec — many readers ignore it — but useful for verifying the package made it across intact. Verify manually with <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"body": "Keep the host healthy: CLI tooling, regular updates, and the major-version upgrade when it's time.",
|
||||
"bullets": [
|
||||
"System Utilities Installer (25 CLI tools)",
|
||||
"Proxmox System Update (apt + dist-upgrade)",
|
||||
"Proxmox System Update (apt + full-upgrade)",
|
||||
"PVE 8 → PVE 9 major upgrade"
|
||||
]
|
||||
},
|
||||
@@ -58,11 +58,11 @@
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "ISO creation",
|
||||
"body": "Build a fresh, up-to-date Windows installation ISO directly on the Proxmox host. The script automates the whole UUP Dump flow: dependency install (aria2c, cabextract, wimlib-imagex, …), parallelised download of the update files via aria2, and conversion into a single bootable ISO that lands in <code>/var/lib/vz/template/iso</code> ready to attach to a VM.",
|
||||
"body": "Build a fresh, up-to-date Windows installation ISO directly on the Proxmox host. The script automates the whole UUP Dump flow: dependency install (aria2c, cabextract, wimlib-imagex, …), parallelised download of the update files via aria2, and conversion into a single bootable ISO saved to the detected Proxmox ISO storage (fallback <code>/var/lib/vz/template/iso</code>), ready to attach to a VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "UUP Dump ISO Creator",
|
||||
"description": "Build an up-to-date Windows installation ISO from a UUP Dump shared link. Dependencies, download and conversion fully automated; the resulting ISO lands in /var/lib/vz/template/iso ready for VM creation.",
|
||||
"description": "Build an up-to-date Windows installation ISO from a UUP Dump shared link. Dependencies, download and conversion fully automated; the resulting ISO is saved to the detected Proxmox ISO storage, ready for VM creation.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Proxmox System Update",
|
||||
"description": "Repository check + apt update + apt dist-upgrade with reboot prompt. Detects the PVE major version (8 or 9), keeps the configured repositories and asks before switching a host without subscription to no-subscription, then runs autoremove.",
|
||||
"description": "Repository check + apt update + apt full-upgrade with reboot prompt. Detects the PVE major version (8 or 9), keeps the configured repositories and asks before switching a host without subscription to no-subscription, then runs autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"body": "The Enterprise repository is enabled and the host has no active subscription. The worker offers the switch to no-subscription before <code>apt-get update</code>; when it was declined, run the update again and accept it, or disable the Enterprise source in <em>Node → Updates → Repositories</em> and enable the no-subscription one."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade hangs at \"Configuring grub-pc\"",
|
||||
"title": "full-upgrade hangs at \"Configuring grub-pc\"",
|
||||
"body": "If an interactive GRUB prompt is visible, it asks which devices should receive the boot loader. The <code>--force-confold</code> option applies to configuration-file decisions, not to this device selection. Use <kbd>Tab</kbd> + <kbd>Space</kbd> to select the appropriate boot disks, then OK. You can configure this selection beforehand with <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Proxmox System Update",
|
||||
"tailRich": " — for the actual <code>apt dist-upgrade</code> on the host."
|
||||
"tailRich": " — for the actual <code>apt full-upgrade</code> on the host."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"items": [
|
||||
"<strong>Verified backups</strong> of every VM and CT (PBS, vzdump, ZFS snapshots — and verify they restore).",
|
||||
"<strong>Console / IPMI / iKVM access</strong> to the host for when SSH drops mid-upgrade.",
|
||||
"The host already up-to-date on PVE 8.4.x (the script enforces this).",
|
||||
"The host on the latest PVE 8 patch level. The script updates PVE 8 first; it does not check for a specific 8.4.x version.",
|
||||
"Ceph (if present) on version 19.x Squid.",
|
||||
"At least <strong>5 GB free</strong> on the root filesystem."
|
||||
"At least <strong>5 GB free</strong> on the root filesystem, as the Proxmox guide recommends. The script itself only checks for 1 GB in /var/cache/apt/archives."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
@@ -63,13 +63,13 @@
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Why the web terminal is blocked",
|
||||
"body": "All three upgrade modes detect <code>termproxy</code> / <code>vncshell</code> in the parent process chain and refuse to run. Reason: the Proxmox web terminal is served by <code>pveproxy</code>, which is one of the services that gets upgraded mid-flow. As soon as <code>pveproxy</code> restarts, your terminal session dies — and so does the upgrade script that was running inside it. The host is left half-upgraded, no good way to resume.",
|
||||
"body": "The Automatic and Interactive modes detect <code>termproxy</code> / <code>vncshell</code> in the parent process chain and refuse to run, unless the session comes over SSH or <code>PVE_ALLOW_WEBTERM=1</code> is set. The pre-check and the manual guide change nothing and run anywhere. Reason: the Proxmox web terminal is served by <code>pveproxy</code>, which is one of the services that gets upgraded mid-flow. As soon as <code>pveproxy</code> restarts, your terminal session dies — and so does the upgrade script that was running inside it. The host is left half-upgraded, no good way to resume.",
|
||||
"warningTitle": "Use SSH or physical / IPMI / iKVM console",
|
||||
"warningBody": "SSH is the most common choice. Open it inside <code>tmux</code> or <code>screen</code> so the upgrade survives a brief network blip. The very first thing the script does is print the tmux/screen reminder if it detects you're in a plain SSH shell."
|
||||
"warningBody": "SSH is the most common choice. Open it inside <code>tmux</code> or <code>screen</code> so the upgrade survives a brief network blip. The upgrade confirmation dialog reminds you to run it from the console or from SSH inside tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Automatic / Unattended mode",
|
||||
"intro": "Package and configuration-file prompts use the defaults in the table below, and a 401 from the enterprise repository switches to no-subscription without asking. The upgrade confirmation, the PVE 8 update summary, any pre-check repairs and the reboot prompt are still shown.",
|
||||
"intro": "Package and configuration-file prompts use the defaults in the table below. The upgrade confirmation, the PVE 8 update summary, any pre-check repairs and the reboot prompt are still shown.",
|
||||
"behaviourHeading": "Auto-mode-specific behaviour",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Setting",
|
||||
@@ -94,8 +94,8 @@
|
||||
]
|
||||
},
|
||||
"flowHeading": "Auto-mode flow",
|
||||
"flowIntro": "Six sequential phases. Phase 2 updates the PVE 8 packages and phase 3 writes the PVE 9 repository configuration. A failure stops the flow without rolling those changes back; if the PVE 8 update fails or is cancelled, the repositories are left unchanged. Phase 5 runs the PVE 9 <code>dist-upgrade</code>.",
|
||||
"flowDiagram": "1. CHECKS\nBlock termproxy / vncshell; confirm the upgrade; reject PVE 9.\n\n2. PREPARE PVE 8\nscripts/global/update-pve8.sh\nUpdate PVE 8 packages; stop if the update fails or is cancelled.\npve8to9 --full (may offer repairs).\nCheck space and connectivity; Ceph 19.x Squid on hyper-converged nodes.\n\n3. MIGRATE REPOSITORIES\nBookworm → Trixie; write deb822 .sources files.\nComment legacy .list files; apt-get update.\n\n4. VALIDATE THE PVE 9 CANDIDATE\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nStop if the candidate is not 9.x or proxmox-ve would be removed.\n\n5. UPGRADE\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nNo subscription: disable pve-enterprise.sources.\nLog: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VERIFY AND REBOOT\nEFI: apt install grub-efi-amd64\npve8to9 --full; review results and the reboot prompt.",
|
||||
"flowIntro": "Six sequential phases. Phase 2 switches the PVE 8 repositories to no-subscription (enterprise and Ceph lists disabled, <code>/etc/apt/sources.list</code> rewritten) before it shows the update summary, then updates the packages; phase 3 writes the PVE 9 repository configuration. A failure stops the flow without rolling those changes back; if the PVE 8 update fails or is cancelled, the PVE 9 migration does not start, but the PVE 8 repository changes stay. Phase 5 runs the PVE 9 <code>dist-upgrade</code>.",
|
||||
"flowDiagram": "1. CHECKS\nBlock termproxy / vncshell; confirm the upgrade; reject PVE 9.\n\n2. PREPARE PVE 8\nscripts/global/update-pve8.sh\nSwitch PVE 8 repositories to no-subscription and rewrite sources.list;\nupdate PVE 8 packages; stop if the update fails or is cancelled.\npve8to9 --full (may offer repairs).\nCheck space and connectivity; Ceph 19.x Squid on hyper-converged nodes.\n\n3. MIGRATE REPOSITORIES\nBookworm → Trixie; write deb822 .sources files.\nComment legacy .list files; apt-get update.\n\n4. VALIDATE THE PVE 9 CANDIDATE\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nStop if the candidate is not 9.x or proxmox-ve would be removed.\n\n5. UPGRADE\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nNo subscription: disable pve-enterprise.sources.\nLog: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VERIFY AND REBOOT\nEFI: apt install grub-efi-amd64\npve8to9 --full; review results and the reboot prompt.",
|
||||
"preflightHeading": "Pre-flight: what gets checked",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Check",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Manual upgrade procedure",
|
||||
"intro": "This is what the <strong>Manual upgrade guide</strong> menu option displays — a faithful mirror of <wikilink>the official Proxmox 8-to-9 upgrade wiki</wikilink> organised in 4 phases. The script <em>shows</em> these commands; you type them yourself in a separate root shell. No automation — full visibility.",
|
||||
"intro": "This follows what the <strong>Manual upgrade guide</strong> menu option displays, based on <wikilink>the official Proxmox 8-to-9 upgrade wiki</wikilink> and organised in 4 phases. The dpkg answer table adds the wiki's caveats for sshd_config and chrony.conf, which the menu shows as a plain Y. The script <em>shows</em> these commands; you type them yourself in a separate root shell. No automation — full visibility.",
|
||||
"rootCalloutTitle": "All commands need root",
|
||||
"rootCalloutBody": "Use a root shell for these commands, including redirections and here-documents. If you use <code>sudo</code>, ensure the entire command runs with root privileges.",
|
||||
"phase1Heading": "Phase 1 — Preparation",
|
||||
@@ -230,7 +230,7 @@
|
||||
"clusterCeph": {
|
||||
"heading": "Cluster & Ceph",
|
||||
"clusterCalloutTitle": "Cluster: upgrade nodes one at a time",
|
||||
"clusterCalloutBody": "Detected via <code>pvecm status</code>. <strong>Do not</strong> upgrade more than one node at a time. Move guests off the node, upgrade, reboot and verify cluster membership before proceeding. During the upgrade, live migration from an older PVE version to a newer one works; the reverse direction is generally unsupported. HA groups migrate automatically to HA rules once all nodes run PVE 9.",
|
||||
"clusterCalloutBody": "<strong>Do not</strong> upgrade more than one node at a time. Move guests off the node, upgrade, reboot and verify cluster membership before proceeding. During the upgrade, live migration from an older PVE version to a newer one works; the reverse direction is generally unsupported. HA groups migrate automatically to HA rules once all nodes run PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: upgrade Ceph FIRST, then Proxmox",
|
||||
"cephCalloutBody": "Ceph must already run 19.x Squid before upgrading Proxmox. Follow the official sequence: Quincy 17 → Reef 18 → Squid 19, updating packages and restarting Ceph daemons in the documented rolling order. Verify <code>ceph --version</code> before upgrading each Proxmox node. Follow the full procedure: <cephlink>Ceph Reef to Squid upgrade wiki</cephlink>."
|
||||
},
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
"files": {
|
||||
"heading": "Files involved",
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
},
|
||||
"references": {
|
||||
"heading": "Official references",
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"rows": [
|
||||
{
|
||||
"entry": "ProxMenux Scripts (TUI)",
|
||||
"path": "menu → Utilities → Host Config Backup",
|
||||
"detail": "Flujo basado en diálogos, amigable por SSH. El menú principal presenta las seis opciones directamente. Usa <code>backup_menu</code> en <code>backup_host.sh</code>."
|
||||
"path": "menu → Host Backup & Restore → Backup host configuration",
|
||||
"detail": "Flujo basado en diálogos, amigable por SSH. La entrada del menú principal abre Host Config Backup / Restore; Backup host configuration lleva a las seis opciones. Usa <code>backup_menu</code> en <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (UI Web)",
|
||||
@@ -83,7 +83,7 @@
|
||||
"profiles": {
|
||||
"heading": "Perfil Default vs Custom",
|
||||
"defaultTitle": "Perfil Default",
|
||||
"defaultBody": "El perfil por defecto es la lista curada de <code>hb_default_profile_paths</code> (documentada en <em>Cómo funciona</em> bajo <em>Categorías de rutas</em>) más cada entrada del fichero de extras persistentes <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. El usuario confirma el destino y las opciones de cifrado y el backup continúa sin más selección de rutas.",
|
||||
"defaultBody": "El perfil por defecto es la lista curada de <code>hb_default_profile_paths</code> (documentada en <em>Cómo funciona</em> bajo <em>Categorías de rutas</em>) más cada entrada del fichero de extras persistentes <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. El usuario elige el destino y las opciones de cifrado y el backup continúa sin más selección de rutas.",
|
||||
"customTitle": "Perfil Custom",
|
||||
"customBody": "El perfil Custom abre un checklist mostrando cada ruta del perfil por defecto (sin marcar) y cada extra persistente (premarcado, prefijado con <code>[+]</code>). El usuario marca el conjunto para esa ejecución y puede pulsar <em>Add custom path</em> para añadir una nueva ruta absoluta. Cualquier ruta añadida en línea se persiste en <code>backup-extra-paths.txt</code> para que futuros backups la recojan automáticamente sin volver a añadirla. Quitar la marca a un extra persistente lo desmarca para esa ejecución pero no lo elimina del fichero — la eliminación es una acción <em>Manage custom paths</em> separada, fuera del flujo de backup.",
|
||||
"customPickerAlt": "Checklist del perfil Custom mostrando las rutas del perfil por defecto (sin marcar) y los extras persistentes (premarcados con prefijo [+]), más botones para añadir una ruta nueva o confirmar la selección.",
|
||||
@@ -124,14 +124,7 @@
|
||||
},
|
||||
"included": {
|
||||
"heading": "Qué entra y qué se excluye",
|
||||
"intro": "Cada ruta del perfil resuelto (default + extras persistentes + selección en modo Custom) se copia con <code>rsync -aAXH --numeric-ids</code>. Una lista de exclusiones compartida aplica a cada ruta, y dos directorios llevan exclusiones específicas adicionales.",
|
||||
"globalTitle": "Exclusiones globales (aplican a cada ruta)",
|
||||
"globalItems": [
|
||||
"<code>images/</code> — dumps de imágenes.",
|
||||
"<code>dump/</code> — salidas de vzdump.",
|
||||
"<code>tmp/</code> — ficheros temporales.",
|
||||
"<code>*.log</code> — ficheros de log."
|
||||
],
|
||||
"intro": "Cada ruta del perfil resuelto (default + extras persistentes + selección en modo Custom) se copia con <code>rsync -aAXH --numeric-ids</code>. No hay una lista de exclusiones global; unos pocos directorios llevan exclusiones específicas.",
|
||||
"rootTitle": "Exclusiones de <code>/root/</code>",
|
||||
"rootBody": "<code>/root/</code> forma parte del perfil por defecto para que los scripts y config del usuario entren en el archivo. Se descartan los subpaths volátiles:",
|
||||
"rootItems": [
|
||||
@@ -160,16 +153,16 @@
|
||||
"<strong><code>/home/USER</code></strong> — no está en el perfil por defecto. Añadirlo como ruta custom cuando un sistema tenga directorios home de usuario que deban sobrevivir a una restauración."
|
||||
],
|
||||
"customPathsTitle": "Cómo se tratan las rutas custom",
|
||||
"customPathsBody": "Una ruta custom añadida en línea en modo Custom o persistida en <code>backup-extra-paths.txt</code> pasa por el mismo pipeline de <code>rsync</code> que las rutas del perfil por defecto. Se aplican las exclusiones globales. Si la ruta custom está bajo <code>/root/</code> o <code>/usr/local/share/proxmenux/</code>, siguen aplicando las exclusiones específicas de arriba. Cada ruta archivada — default o custom — queda registrada en <code>metadata/paths_archived.txt</code>. Las rutas que no existen en el origen se registran en <code>metadata/missing_paths.txt</code> sin detener el backup."
|
||||
"customPathsBody": "Una ruta custom añadida en línea en modo Custom o persistida en <code>backup-extra-paths.txt</code> pasa por el mismo pipeline de <code>rsync</code> que las rutas del perfil por defecto. Si la ruta custom está bajo <code>/root/</code> o <code>/usr/local/share/proxmenux/</code>, siguen aplicando las exclusiones específicas de arriba. Cada ruta archivada — default o custom — queda registrada en <code>metadata/selected_paths.txt</code>. Las rutas que no existen en el origen se registran en <code>metadata/missing_paths.txt</code> sin detener el backup, y las que fallan al copiarse en <code>metadata/failed_paths.txt</code>."
|
||||
},
|
||||
"archiveStructure": {
|
||||
"heading": "Estructura del archivo",
|
||||
"intro": "El directorio de staging que produce cada backend sigue el mismo layout con independencia del destino. El tarball, el <code>.pxar</code> de PBS o el archivo Borg almacenan este árbol verbatim.",
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # estado estructurado del host (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # salida de apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, versión del kernel, método pmxcfs\n│ ├── paths_archived.txt # lista exacta de rutas que llegaron a rootfs/\n│ └── missing_paths.txt # rutas del perfil ausentes en el origen\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root sin subpaths volátiles\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (sólo estado)\n └── var/ # /var/lib/pve-cluster (config.db vía sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # estado estructurado del host (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # salida de apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, versión del kernel, método pmxcfs\n│ ├── selected_paths.txt # lista exacta de rutas que llegaron a rootfs/\n│ └── missing_paths.txt # rutas del perfil ausentes en el origen\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root sin subpaths volátiles\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (sólo estado)\n └── var/ # /var/lib/pve-cluster (config.db vía sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "Resumen de confirmación",
|
||||
"body": "Antes de que el backend escriba nada en el destino, ProxMenux muestra un diálogo resumen con el destino, el backup ID o nombre del archivo, el estado del cifrado y la lista de rutas que se copian. Cancelar aquí aborta el backup limpiamente — el directorio de staging se elimina por el hook <code>trap</code> definido en la función backend y ningún dato parcial llega al destino."
|
||||
"body": "Antes de que el backend escriba nada en el destino, ProxMenux imprime en la terminal un resumen con el destino, el backup ID o nombre del archivo, el estado del cifrado y la lista de rutas que se copian. En este punto no hay paso de confirmar o cancelar; la copia empieza justo después. Si el backup falla o se interrumpe, el directorio de staging se elimina por el hook <code>trap</code> definido en la función backend y ningún dato parcial llega al destino."
|
||||
},
|
||||
"writing": {
|
||||
"heading": "Escritura en el destino",
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
},
|
||||
"targetConfig": {
|
||||
"heading": "Configurar el directorio de destino",
|
||||
"intro": "El destino local es un <strong>único directorio de destino persistido</strong> — no una lista. ProxMenux guarda la elección del usuario en <code>/usr/local/share/proxmenux/local-target.conf</code> y la lee en cada backup. Cuando no hay ningún destino configurado, se usa el valor por defecto <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> (el mismo directorio que Proxmox utiliza para las salidas de <code>vzdump</code>). El destino se configura desde <em>Configure backup destinations → Local destinations</em>:",
|
||||
"intro": "El destino local es un <strong>único directorio de destino persistido</strong> — no una lista. ProxMenux guarda la elección del usuario en <code>/usr/local/share/proxmenux/local-target.conf</code> y la lee en cada backup. Cuando no hay ningún destino configurado, se usa el valor por defecto <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> (el mismo directorio que Proxmox utiliza para las salidas de <code>vzdump</code>). El destino se configura desde <em>Configure backup destinations → Local archive targets → Manage local backup target</em>:",
|
||||
"options": [
|
||||
"<strong>Usar el valor por defecto (<code>/var/lib/vz/dump</code>).</strong> El almacenamiento local de Proxmox. Está presente en cualquier instalación de Proxmox; el archivo queda junto a las salidas de vzdump y lo detecta automáticamente la pestaña Backups del Monitor.",
|
||||
"<strong>Introducir una ruta personalizada.</strong> Cualquier ruta absoluta del sistema de ficheros vale: un montaje NFS, un share SMB montado por <code>fstab</code>, un dataset ZFS dedicado, un segundo disco interno. ProxMenux valida que la ruta existe y es un directorio antes de persistirla.",
|
||||
"<strong>Elegir una unidad USB.</strong> Abre el submenú USB (más abajo), que detecta los dispositivos extraíbles y ofrece montar o formatear uno."
|
||||
"<strong>Usar una ruta personalizada.</strong> Cualquier ruta absoluta del sistema de ficheros vale: un montaje NFS, un share SMB montado por <code>fstab</code>, un dataset ZFS dedicado, un segundo disco interno. ProxMenux valida que la ruta existe y es un directorio antes de persistirla.",
|
||||
"<strong>Usar un disco USB.</strong> Abre el submenú USB (más abajo), que detecta los dispositivos extraíbles y ofrece montar o formatear uno."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
"state": "unmounted",
|
||||
"shown": "Tamaño · label · [fstype] · (no montada — se montará)",
|
||||
"action": "Hay un filesystem pero no está montado. Al confirmar, ProxMenux ejecuta <code>hb_mount_usb_partition</code>: crea <code>/mnt/backup-LABEL</code> (o una ruta basada en UUID si no hay label), monta la partición y persiste el punto de montaje como destino local."
|
||||
"action": "Hay un filesystem pero no está montado. Al confirmar, ProxMenux ejecuta <code>hb_mount_usb_partition</code>: crea <code>/mnt/proxmenux-backup-LABEL</code> (UUID o nombre del dispositivo si no hay label), monta la partición y persiste el punto de montaje como destino local."
|
||||
},
|
||||
{
|
||||
"state": "empty",
|
||||
@@ -63,7 +63,7 @@
|
||||
},
|
||||
"sidecar": {
|
||||
"heading": "El sidecar JSON",
|
||||
"intro": "Cada backup local con éxito produce un fichero compañero: <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, escrito junto al archivo por <code>hb_write_archive_sidecar</code>. Este pequeño fichero JSON permite al Monitor de ProxMenux identificar el archivo como un backup de host de ProxMenux incluso si posteriormente se mueve, renombra o archiva en otro lugar.",
|
||||
"intro": "Cada backup local con éxito produce un fichero compañero: <code>hostcfg-HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, escrito junto al archivo por <code>hb_write_archive_sidecar</code>. Este pequeño fichero JSON permite al Monitor de ProxMenux identificar el archivo como un backup de host de ProxMenux incluso si posteriormente se mueve, renombra o archiva en otro lugar.",
|
||||
"contentTitle": "Contenido del sidecar",
|
||||
"contentBody": "El sidecar almacena la versión de schema, si el backup viene de una ejecución interactiva o de un trabajo programado (<code>kind</code>), el ID de trabajo para las ejecuciones programadas, el modo de perfil usado (<code>default</code> o <code>custom</code>), el hostname del origen, el basename original del archivo, un timestamp de creación en ISO-8601 y el tamaño del archivo en bytes.",
|
||||
"whyBody": "La pestaña Backups del Monitor escanea los directorios locales configurados buscando sidecars <code>*.proxmenux.json</code> — no ficheros <code>*.tar.zst</code> — porque un <code>.tar.zst</code> sin sidecar podría no ser un backup de ProxMenux en absoluto. El escaneo es rápido (los JSON son diminutos) y el emparejamiento es estable frente a renombrados del archivo mientras el sidecar se renombre en paralelo."
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"source": "Configuración manual de ProxMenux",
|
||||
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
|
||||
"content": "Se añade desde <em>Configure backup destinations → PBS destinations → Add PBS</em>. Pregunta por un nombre, usuario (<code>root@pam</code> o <code>user@pbs!token</code>), host o IP, datastore y contraseña. La contraseña se re-pregunta ante entrada vacía — un guardado vacío persistiría silenciosamente y cada backup posterior fallaría con un error de autenticación opaco. Este camino se usa cuando el PBS objetivo no está registrado como storage de Proxmox."
|
||||
"content": "Se añade desde <em>Configure backup destinations → Proxmox Backup Server (PBS) destinations → + Add new PBS manually</em>. Pregunta por un nombre, usuario (<code>root@pam</code> o <code>user@pbs!token</code>), host o IP, datastore y contraseña. La contraseña se re-pregunta ante entrada vacía — un guardado vacío persistiría silenciosamente y cada backup posterior fallaría con un error de autenticación opaco. Este camino se usa cuando el PBS objetivo no está registrado como storage de Proxmox."
|
||||
}
|
||||
],
|
||||
"menuTitle": "Menú de selección",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"heading": "Layout del archivo",
|
||||
"intro": "Cada archivo respeta el mismo layout con independencia del destino. El subdirectorio <code>metadata/</code> contiene los bloques estructurados; el subdirectorio <code>rootfs/</code> contiene el backup del sistema de ficheros.",
|
||||
"treeCaption": "El directorio de staging generado durante un backup. Todos los destinos reciben el mismo árbol (adaptado a su formato nativo: tar para local, chunks PBS para PBS, segmentos borg para Borg).",
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # estado estructurado del host\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # identidad de la ejecución + versión del kernel + método pmxcfs\n│ ├── paths_archived.txt # lista exacta de rutas que llegaron a rootfs/\n│ └── missing_paths.txt # rutas del perfil ausentes en el origen\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (con subdirs volátiles excluidos)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db vía sqlite3 .backup), /var/spool/cron/…"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # estado estructurado del host\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # identidad de la ejecución + versión del kernel + método pmxcfs\n│ ├── selected_paths.txt # lista exacta de rutas que llegaron a rootfs/\n│ └── missing_paths.txt # rutas del perfil ausentes en el origen\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (con subdirs volátiles excluidos)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db vía sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "El bloque rootfs",
|
||||
@@ -176,7 +176,7 @@
|
||||
"stage": "3",
|
||||
"name": "Preparación de pending",
|
||||
"reads": "rootfs/ (rutas reboot + dangerous)",
|
||||
"action": "<code>_rs_prepare_pending_restore</code> deja las rutas de riesgo preparadas bajo <code>/var/lib/proxmenux/pending-restore/</code>, escribe <code>plan.env</code>, <code>apply-on-boot.list</code> y <code>rs-skip-paths.txt</code>, y habilita <code>proxmenux-restore-onboot.service</code> para que dispare en el siguiente arranque."
|
||||
"action": "<code>_rs_prepare_pending_restore</code> deja las rutas de riesgo preparadas bajo <code>/var/lib/proxmenux/restore-pending/<restore_id>/</code> (enlazado como <code>current</code>), escribe <code>plan.env</code>, <code>apply-on-boot.list</code> y <code>rs-skip-paths.txt</code>, y habilita <code>proxmenux-restore-onboot.service</code> para que dispare en el siguiente arranque."
|
||||
},
|
||||
{
|
||||
"stage": "3b",
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"heading": "Dos interfaces, un único backend",
|
||||
"intro": "Cada paso del flujo de backup y restauración está disponible desde dos puntos de entrada. Ambos invocan la misma librería de shell, producen archivos idénticos y leen el mismo registro de trabajos.",
|
||||
"cliLabel": "ProxMenux Scripts (TUI)",
|
||||
"cliDetail": "menu → Utilities →\nHost Backup / Restore\n\nFlujo basado en diálogos,\namigable por SSH, admite\nejecución desatendida\ndesde scripts.",
|
||||
"cliDetail": "menu →\nHost Backup & Restore\n\nFlujo basado en diálogos,\namigable por SSH, admite\nejecución desatendida\ndesde scripts.",
|
||||
"webLabel": "ProxMenux Monitor (Web UI)",
|
||||
"webDetail": "Pestaña Backups en la\ninterfaz Web del Monitor.\n\nRestauración con un clic,\nlog en vivo, integrado con\nlas notificaciones y con\nel visor de rollback."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"management": {
|
||||
"heading": "Gestión de trabajos",
|
||||
"intro": "El menú del scheduler (TUI de Scripts) y la pestaña Backups del Monitor exponen las mismas acciones sobre cualquier trabajo.",
|
||||
"intro": "El menú del scheduler en la TUI de Scripts (Backup scheduler and retention) ofrece Run now, Enable / Disable y Delete, además de una lista de trabajos con el estado de su última ejecución. Edit y View log solo están disponibles en la pestaña Backups del Monitor.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Run now",
|
||||
@@ -112,7 +112,7 @@
|
||||
"detail": "Modo Nuevo: <code>systemctl enable/disable --now</code> sobre el timer. Modo adjunto: cambia el flag <code>ENABLED</code> en el env del trabajo — el script-hook lo respeta en el siguiente disparo de PVE."
|
||||
},
|
||||
{
|
||||
"action": "Edit",
|
||||
"action": "Edit (solo en Monitor)",
|
||||
"detail": "Reabre los prompts de destino, horario, perfil y retención y reescribe los ficheros del trabajo. Preserva el ID del trabajo."
|
||||
},
|
||||
{
|
||||
@@ -120,7 +120,7 @@
|
||||
"detail": "Elimina el env del trabajo, el fichero de rutas, el timer + service systemd (modo Nuevo) y desactiva el binding del hook (modo adjunto). No toca los archivos ya presentes en el destino."
|
||||
},
|
||||
{
|
||||
"action": "View log",
|
||||
"action": "View log (solo en Monitor)",
|
||||
"detail": "Muestra en streaming <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code> — un fichero de log por ejecución. El runner también emite una línea de estado compacta a journald bajo el service systemd."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
},
|
||||
"package": {
|
||||
"heading": "Qué acaba en el paquete",
|
||||
"intro": "Para un OVA / OVF llamado <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
"intro": "Para un OVA / OVF llamado <code>myvm-100-20260426_183015</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-20260426_183015.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-20260426_183015.mf # SHA1 manifest\nmyvm-100-20260426_183015-disk1.vmdk\nmyvm-100-20260426_183015-disk2.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-20260426_183015-ovf/\n├── myvm-100-20260426_183015.ovf\n├── myvm-100-20260426_183015.mf\n├── myvm-100-20260426_183015-disk1.vmdk\n└── myvm-100-20260426_183015-disk2.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "Qué se exporta",
|
||||
@@ -90,7 +90,7 @@
|
||||
"manifest": {
|
||||
"heading": "Manifiesto SHA1",
|
||||
"intro": "Todo paquete incluye un archivo <code>.mf</code> con hashes SHA1 del descriptor OVF y de cada VMDK:",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"code": "SHA1(myvm-100-20260426_183015.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-20260426_183015-disk1.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-20260426_183015-disk2.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "Opcional en la especificación OVF — muchos lectores lo ignoran — pero útil para verificar que el paquete llegó intacto. Verifica manualmente con <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"body": "Mantén el host sano: herramientas CLI, actualizaciones periódicas y el salto de versión mayor cuando toca.",
|
||||
"bullets": [
|
||||
"Instalador de utilidades del sistema (25 herramientas CLI)",
|
||||
"Actualización del sistema Proxmox (apt + dist-upgrade)",
|
||||
"Actualización del sistema Proxmox (apt + full-upgrade)",
|
||||
"Salto de versión mayor PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
@@ -58,11 +58,11 @@
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Creación de ISOs",
|
||||
"body": "Crea una ISO de instalación de Windows actualizada directamente en el host Proxmox. El script automatiza todo el flujo de UUP Dump: instalación de dependencias (aria2c, cabextract, wimlib-imagex, …), descarga paralelizada de los archivos de actualización vía aria2 y conversión en una única ISO arrancable que aterriza en <code>/var/lib/vz/template/iso</code> lista para asociar a una VM.",
|
||||
"body": "Crea una ISO de instalación de Windows actualizada directamente en el host Proxmox. El script automatiza todo el flujo de UUP Dump: instalación de dependencias (aria2c, cabextract, wimlib-imagex, …), descarga paralelizada de los archivos de actualización vía aria2 y conversión en una única ISO arrancable guardada en el almacenamiento ISO de Proxmox detectado (alternativa <code>/var/lib/vz/template/iso</code>), lista para asociar a una VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Creador de ISO UUP Dump",
|
||||
"description": "Crea una ISO de instalación de Windows actualizada desde un enlace compartido de UUP Dump. Dependencias, descarga y conversión totalmente automatizadas; la ISO resultante aterriza en /var/lib/vz/template/iso lista para crear una VM.",
|
||||
"description": "Crea una ISO de instalación de Windows actualizada desde un enlace compartido de UUP Dump. Dependencias, descarga y conversión totalmente automatizadas; la ISO resultante se guarda en el almacenamiento ISO de Proxmox detectado, lista para crear una VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Actualización del sistema Proxmox",
|
||||
"description": "Comprobación de repositorios + apt update + apt dist-upgrade, con confirmación antes de reiniciar. Detecta la versión mayor de PVE (8 o 9), conserva los repositorios configurados y solicita confirmación antes de cambiar al repositorio no-subscription un host sin suscripción; después ejecuta autoremove.",
|
||||
"description": "Comprobación de repositorios + apt update + apt full-upgrade, con confirmación antes de reiniciar. Detecta la versión mayor de PVE (8 o 9), conserva los repositorios configurados y solicita confirmación antes de cambiar al repositorio no-subscription un host sin suscripción; después ejecuta autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"body": "El repositorio Enterprise está habilitado y el host no tiene suscripción activa. El worker ofrece el cambio a sin suscripción antes de <code>apt-get update</code>; si se rechazó, ejecuta de nuevo la actualización y acéptalo, o deshabilita la fuente Enterprise en <em>Nodo → Actualizaciones → Repositorios</em> y habilita la de sin suscripción."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade se queda colgado en \"Configuring grub-pc\"",
|
||||
"title": "full-upgrade se queda colgado en \"Configuring grub-pc\"",
|
||||
"body": "Si aparece una pregunta interactiva de GRUB, solicita los dispositivos donde instalar el cargador de arranque. La opción <code>--force-confold</code> se aplica a decisiones sobre archivos de configuración, no a esta selección de dispositivos. Usa <kbd>Tab</kbd> + <kbd>Space</kbd> para seleccionar los discos de arranque adecuados y después OK. Puedes configurar esta selección de antemano con <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Actualización del sistema Proxmox",
|
||||
"tailRich": " — para el <code>apt dist-upgrade</code> real en el host."
|
||||
"tailRich": " — para el <code>apt full-upgrade</code> real en el host."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"items": [
|
||||
"<strong>Backups verificados</strong> de cada VM y CT (PBS, vzdump, snapshots ZFS — y verifica que se restauran).",
|
||||
"<strong>Acceso por consola / IPMI / iKVM</strong> al host para cuando SSH se caiga a mitad del upgrade.",
|
||||
"El host ya actualizado en PVE 8.4.x (el script lo fuerza).",
|
||||
"El host en el último nivel de parche de PVE 8. El script actualiza primero PVE 8; no comprueba una versión 8.4.x concreta.",
|
||||
"Ceph (si está presente) en versión 19.x Squid.",
|
||||
"Al menos <strong>5 GB libres</strong> en el sistema de archivos raíz."
|
||||
"Al menos <strong>5 GB libres</strong> en el sistema de archivos raíz, como recomienda la guía de Proxmox. El propio script solo comprueba 1 GB en /var/cache/apt/archives."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
@@ -63,13 +63,13 @@
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Por qué se bloquea el terminal web",
|
||||
"body": "Los tres modos de upgrade detectan <code>termproxy</code> / <code>vncshell</code> en la cadena de procesos padre y se niegan a ejecutarse. Razón: el terminal web de Proxmox lo sirve <code>pveproxy</code>, que es uno de los servicios que se actualiza a mitad del flujo. En cuanto <code>pveproxy</code> reinicia, tu sesión de terminal muere — y con ella el script de upgrade que se estaba ejecutando dentro. El host se queda medio actualizado, sin una buena forma de reanudar.",
|
||||
"body": "Los modos Automático e Interactivo detectan <code>termproxy</code> / <code>vncshell</code> en la cadena de procesos padre y se niegan a ejecutarse, salvo que la sesión llegue por SSH o esté definida <code>PVE_ALLOW_WEBTERM=1</code>. La comprobación previa y la guía manual no cambian nada y se ejecutan en cualquier lugar. Razón: el terminal web de Proxmox lo sirve <code>pveproxy</code>, que es uno de los servicios que se actualiza a mitad del flujo. En cuanto <code>pveproxy</code> reinicia, tu sesión de terminal muere — y con ella el script de upgrade que se estaba ejecutando dentro. El host se queda medio actualizado, sin una buena forma de reanudar.",
|
||||
"warningTitle": "Usa SSH o consola física / IPMI / iKVM",
|
||||
"warningBody": "SSH es la elección más común. Ábrelo dentro de <code>tmux</code> o <code>screen</code> para que el upgrade sobreviva a un parpadeo breve de red. Lo primerísimo que hace el script es imprimir el recordatorio de tmux/screen si detecta que estás en un shell SSH pelado."
|
||||
"warningBody": "SSH es la elección más común. Ábrelo dentro de <code>tmux</code> o <code>screen</code> para que el upgrade sobreviva a un parpadeo breve de red. El diálogo de confirmación de la actualización te recuerda ejecutarla desde la consola o desde SSH dentro de tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Modo Automático / Desatendido",
|
||||
"intro": "Las preguntas de paquetes y archivos de configuración usan los valores predeterminados de la tabla siguiente, y un 401 del repositorio Enterprise cambia a no-subscription sin preguntar. La confirmación de la actualización, el resumen de la actualización de PVE 8, las reparaciones de la comprobación previa y la pregunta de reinicio se siguen mostrando.",
|
||||
"intro": "Las preguntas de paquetes y archivos de configuración usan los valores predeterminados de la tabla siguiente. La confirmación de la actualización, el resumen de la actualización de PVE 8, las reparaciones de la comprobación previa y la pregunta de reinicio se siguen mostrando.",
|
||||
"behaviourHeading": "Comportamiento específico del modo automático",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Ajuste",
|
||||
@@ -94,8 +94,8 @@
|
||||
]
|
||||
},
|
||||
"flowHeading": "Flujo del modo automático",
|
||||
"flowIntro": "Seis fases consecutivas. La fase 2 actualiza los paquetes de PVE 8 y la fase 3 escribe la configuración de repositorios de PVE 9. Un fallo detiene el proceso sin revertir esos cambios; si la actualización de PVE 8 falla o se cancela, los repositorios no se modifican. La fase 5 ejecuta <code>dist-upgrade</code> para PVE 9.",
|
||||
"flowDiagram": "1. COMPROBACIONES\nBloquea termproxy / vncshell; confirma la actualización; rechaza PVE 9.\n\n2. PREPARAR PVE 8\nscripts/global/update-pve8.sh\nActualiza los paquetes de PVE 8; se detiene si la actualización falla o se cancela.\npve8to9 --full (puede ofrecer reparaciones).\nComprueba espacio y conectividad; Ceph 19.x Squid en nodos hiperconvergentes.\n\n3. MIGRAR REPOSITORIOS\nBookworm → Trixie; escribe archivos deb822 .sources.\nComenta los archivos .list antiguos; apt-get update.\n\n4. VALIDAR EL CANDIDATO DE PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nSe detiene si el candidato no es 9.x o se eliminaría proxmox-ve.\n\n5. ACTUALIZAR\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSin suscripción: desactiva pve-enterprise.sources.\nRegistro: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VERIFICAR Y REINICIAR\nEFI: apt install grub-efi-amd64\npve8to9 --full; revisa el resultado y la pregunta de reinicio.",
|
||||
"flowIntro": "Seis fases consecutivas. La fase 2 cambia los repositorios de PVE 8 a no-subscription (listas enterprise y Ceph desactivadas, <code>/etc/apt/sources.list</code> reescrito) antes de mostrar el resumen de la actualización y después actualiza los paquetes; la fase 3 escribe la configuración de repositorios de PVE 9. Un fallo detiene el proceso sin revertir esos cambios; si la actualización de PVE 8 falla o se cancela, la migración a PVE 9 no empieza, pero los cambios en los repositorios de PVE 8 permanecen. La fase 5 ejecuta <code>dist-upgrade</code> para PVE 9.",
|
||||
"flowDiagram": "1. COMPROBACIONES\nBloquea termproxy / vncshell; confirma la actualización; rechaza PVE 9.\n\n2. PREPARAR PVE 8\nscripts/global/update-pve8.sh\nCambia los repositorios de PVE 8 a no-subscription y reescribe sources.list;\nactualiza los paquetes de PVE 8; se detiene si la actualización falla o se cancela.\npve8to9 --full (puede ofrecer reparaciones).\nComprueba espacio y conectividad; Ceph 19.x Squid en nodos hiperconvergentes.\n\n3. MIGRAR REPOSITORIOS\nBookworm → Trixie; escribe archivos deb822 .sources.\nComenta los archivos .list antiguos; apt-get update.\n\n4. VALIDAR EL CANDIDATO DE PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nSe detiene si el candidato no es 9.x o se eliminaría proxmox-ve.\n\n5. ACTUALIZAR\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSin suscripción: desactiva pve-enterprise.sources.\nRegistro: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VERIFICAR Y REINICIAR\nEFI: apt install grub-efi-amd64\npve8to9 --full; revisa el resultado y la pregunta de reinicio.",
|
||||
"preflightHeading": "Comprobaciones previas: qué se chequea",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Chequeo",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Procedimiento manual de upgrade",
|
||||
"intro": "Esto es lo que muestra la opción de menú <strong>Guía manual de upgrade</strong> — un espejo fiel del <wikilink>wiki oficial de upgrade Proxmox 8 a 9</wikilink> organizado en 4 fases. El script <em>muestra</em> estos comandos; tú los tecleas en un shell root aparte. Sin automatización — visibilidad total.",
|
||||
"intro": "Esto sigue lo que muestra la opción de menú <strong>Guía manual de upgrade</strong>, basada en <wikilink>el wiki oficial de upgrade Proxmox 8 a 9</wikilink> y organizada en 4 fases. La tabla de respuestas de dpkg añade las salvedades del wiki para sshd_config y chrony.conf, que el menú muestra como una simple Y. El script <em>muestra</em> estos comandos; tú los tecleas en un shell root aparte. Sin automatización — visibilidad total.",
|
||||
"rootCalloutTitle": "Todos los comandos necesitan root",
|
||||
"rootCalloutBody": "Usa una sesión de shell como root para estos comandos, incluidas las redirecciones y los documentos here-document. Si utilizas <code>sudo</code>, asegúrate de ejecutar el comando completo con privilegios de root.",
|
||||
"phase1Heading": "Fase 1 — Preparación",
|
||||
@@ -230,7 +230,7 @@
|
||||
"clusterCeph": {
|
||||
"heading": "Clúster y Ceph",
|
||||
"clusterCalloutTitle": "Clúster: actualiza los nodos uno a uno",
|
||||
"clusterCalloutBody": "Se detecta mediante <code>pvecm status</code>. <strong>No</strong> actualices más de un nodo a la vez. Mueve sus máquinas, actualízalo, reinícialo y verifica su pertenencia al clúster antes de continuar. Durante la actualización funciona la migración en vivo desde versiones anteriores de PVE a posteriores; la dirección inversa generalmente no es compatible. Los grupos de HA se convierten automáticamente en reglas de HA cuando todos los nodos ejecutan PVE 9.",
|
||||
"clusterCalloutBody": "<strong>No</strong> actualices más de un nodo a la vez. Mueve sus máquinas, actualízalo, reinícialo y verifica su pertenencia al clúster antes de continuar. Durante la actualización funciona la migración en vivo desde versiones anteriores de PVE a posteriores; la dirección inversa generalmente no es compatible. Los grupos de HA se convierten automáticamente en reglas de HA cuando todos los nodos ejecutan PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: actualiza Ceph PRIMERO, después Proxmox",
|
||||
"cephCalloutBody": "Ceph debe ejecutar ya 19.x Squid antes de actualizar Proxmox. Sigue la secuencia oficial: Quincy 17 → Reef 18 → Squid 19, actualizando paquetes y reiniciando los demonios de Ceph de forma escalonada en el orden documentado. Comprueba <code>ceph --version</code> antes de actualizar cada nodo Proxmox. Sigue el procedimiento completo: <cephlink>guía de actualización de Ceph Reef a Squid</cephlink>."
|
||||
},
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
"files": {
|
||||
"heading": "Archivos implicados",
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
},
|
||||
"references": {
|
||||
"heading": "Referencias oficiales",
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"rows": [
|
||||
{
|
||||
"entry": "ProxMenux Scripts (TUI)",
|
||||
"path": "menu → Utilities → Host Config Backup",
|
||||
"detail": "Processus fondé sur des boîtes de dialogue, adapté à SSH. Le menu principal présente directement les six options. Utilise <code>backup_menu</code> dans <code>backup_host.sh</code>."
|
||||
"path": "menu → Host Backup & Restore → Backup host configuration",
|
||||
"detail": "Processus fondé sur des boîtes de dialogue, adapté à SSH. L’entrée du menu principal ouvre Host Config Backup / Restore ; Backup host configuration mène aux six options. Utilise <code>backup_menu</code> dans <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (interface utilisateur Web)",
|
||||
@@ -83,7 +83,7 @@
|
||||
"profiles": {
|
||||
"heading": "Profil par défaut vs personnalisé",
|
||||
"defaultTitle": "Profil par défaut",
|
||||
"defaultBody": "Le profil par défaut est la liste prédéfinie de <code>hb_default_profile_paths</code> (documentée dans <em>Comment ça marche</em> sous <em>Catégories de chemins</em>) plus chaque entrée dans le fichier supplémentaire persistant <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. L'utilisateur confirme les options de destination et de chiffrement et la sauvegarde se déroule sans autre sélection de chemin.",
|
||||
"defaultBody": "Le profil par défaut est la liste prédéfinie de <code>hb_default_profile_paths</code> (documentée dans <em>Comment ça marche</em> sous <em>Catégories de chemins</em>) plus chaque entrée dans le fichier supplémentaire persistant <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. L’utilisateur choisit les options de destination et de chiffrement et la sauvegarde se déroule sans autre sélection de chemin.",
|
||||
"customTitle": "Profil personnalisé",
|
||||
"customBody": "Le profil personnalisé ouvre une liste à cocher avec tous les chemins du profil par défaut (décochés) et tous les ajouts persistants (précochés, avec le préfixe <code>[+]</code>). L’utilisateur coche les chemins pour cette exécution et peut cliquer sur <em>Ajouter un chemin personnalisé</em> pour ajouter un chemin absolu. Tout chemin ainsi ajouté est enregistré dans <code>backup-extra-paths.txt</code> afin que les sauvegardes suivantes l’incluent automatiquement. Décocher un ajout persistant l’exclut de cette exécution sans le supprimer du fichier — la suppression se fait séparément par <em>Gérer les chemins personnalisés</em>, en dehors du processus de sauvegarde.",
|
||||
"customPickerAlt": "Liste de contrôle de profil personnalisé montrant les chemins de profil par défaut (non coché) et les extras persistants (pré coché avec un préfixe [+]), ainsi que des boutons pour ajouter un nouveau chemin ou confirmer la sélection.",
|
||||
@@ -124,14 +124,7 @@
|
||||
},
|
||||
"included": {
|
||||
"heading": "Ce qui entre et ce qui reste en dehors",
|
||||
"intro": "Chaque chemin dans le profil résolu (par défaut + suppléments persistants + sélection en mode personnalisé) est copié avec <code>rsync -aAXH --numeric-ids</code>. Une liste d'exclusion partagée s'applique à chaque chemin, et deux répertoires comportent d'autres exclusions spécifiques au chemin.",
|
||||
"globalTitle": "Les exclusions globales (appliquées à chaque voie)",
|
||||
"globalItems": [
|
||||
"<code>images/</code> — images de disque exportées.",
|
||||
"<code>dump/</code> — sorties vzdump.",
|
||||
"<code>tmp/</code> — fichiers temporaires.",
|
||||
"<code>*.log</code> — fichiers journaux."
|
||||
],
|
||||
"intro": "Chaque chemin dans le profil résolu (par défaut + suppléments persistants + sélection en mode personnalisé) est copié avec <code>rsync -aAXH --numeric-ids</code>. Il n’y a pas de liste d’exclusion globale ; quelques répertoires comportent des exclusions spécifiques au chemin.",
|
||||
"rootTitle": "Exclusions de <code>/root/</code>",
|
||||
"rootBody": "<code>/root/</code> fait partie du profil par défaut, de sorte que les scripts utilisateur et la configuration se trouvent dans l'archive. Les sous-chemins volatils sont abandonnés:",
|
||||
"rootItems": [
|
||||
@@ -160,16 +153,16 @@
|
||||
"<strong><code>/home/USER</code></strong> — pas dans le profil par défaut. Ajoutez-le comme un chemin personnalisé lorsqu'un système transporte des répertoires d'utilisateur qui doivent survivre à une restauration."
|
||||
],
|
||||
"customPathsTitle": "Comment les chemins personnalisés sont gérés",
|
||||
"customPathsBody": "Un chemin personnalisé ajouté en ligne en mode personnalisé ou maintenu dans <code>backup-extra-paths.txt</code> passe par le même pipeline <code>rsync</code> que les chemins de profil par défaut. Les exclusions globales s'appliquent. Si le chemin personnalisé se trouve sous <code>/root/</code> ou <code>/usr/local/share/proxmenux/</code>, les exclusions spécifiques au chemin ci-dessus s'appliquent toujours. Chaque chemin archivé — par défaut ou personnalisé — est enregistré dans <code>metadata/paths_archived.txt</code>. Les chemins qui n'existent pas sur la source sont enregistrés dans <code>metadata/missing_paths.txt</code> sans arrêter la sauvegarde."
|
||||
"customPathsBody": "Un chemin personnalisé ajouté en ligne en mode personnalisé ou maintenu dans <code>backup-extra-paths.txt</code> passe par le même pipeline <code>rsync</code> que les chemins de profil par défaut. Si le chemin personnalisé se trouve sous <code>/root/</code> ou <code>/usr/local/share/proxmenux/</code>, les exclusions spécifiques au chemin ci-dessus s’appliquent toujours. Chaque chemin archivé — par défaut ou personnalisé — est enregistré dans <code>metadata/selected_paths.txt</code>. Les chemins qui n’existent pas sur la source sont enregistrés dans <code>metadata/missing_paths.txt</code> sans arrêter la sauvegarde, et les chemins dont la copie échoue dans <code>metadata/failed_paths.txt</code>."
|
||||
},
|
||||
"archiveStructure": {
|
||||
"heading": "Structure des archives",
|
||||
"intro": "Le répertoire de préparation temporaire produit par chaque moteur suit la même disposition quelle que soit la destination. L'archive tarball, PBS <code>.pxar</code> ou Borg stocke cet arbre dans son intégralité.",
|
||||
"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"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "Résumé de la confirmation",
|
||||
"body": "Avant que le moteur n'écrive quoi que ce soit à la destination, ProxMenux affiche une boîte de dialogue de résumé avec la destination, l’identifiant de sauvegarde ou le nom de l’archive, l'état de chiffrement et la liste des chemins copiés. Annuler ici avorte la sauvegarde proprement — le répertoire temporaire est supprimé par le gestionnaire <code>trap</code> défini dans la fonction backend et aucune donnée partielle n'arrive à destination."
|
||||
"body": "Avant que le moteur n’écrive quoi que ce soit à la destination, ProxMenux affiche dans le terminal un résumé avec la destination, l’identifiant de sauvegarde ou le nom de l’archive, l’état de chiffrement et la liste des chemins copiés. Il n’y a ni étape de confirmation ni d’annulation à ce stade ; la copie démarre juste après. Si la sauvegarde échoue ou est interrompue, le répertoire temporaire est supprimé par le gestionnaire <code>trap</code> défini dans la fonction backend et aucune donnée partielle n’arrive à destination."
|
||||
},
|
||||
"writing": {
|
||||
"heading": "Écrire à la destination",
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
},
|
||||
"targetConfig": {
|
||||
"heading": "Configuration du répertoire cible",
|
||||
"intro": "La destination locale est un <strong>unique répertoire cible enregistré durablement</strong> — pas une liste. ProxMenux stocke le choix de l'opérateur chez <code>/usr/local/share/proxmenux/local-target.conf</code> et le lit sur chaque sauvegarde. Lorsqu'aucune cible n'a été configurée, le <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> par défaut est utilisé (le même répertoire que Proxmox utilise pour ses propres sorties <code>vzdump</code>). La cible est configurée à partir de <em>Configurer les destinations de sauvegarde → Destinations locales</em>:",
|
||||
"intro": "La destination locale est un <strong>unique répertoire cible enregistré durablement</strong> — pas une liste. ProxMenux stocke le choix de l’opérateur chez <code>/usr/local/share/proxmenux/local-target.conf</code> et le lit sur chaque sauvegarde. Lorsqu’aucune cible n’a été configurée, le <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> par défaut est utilisé (le même répertoire que Proxmox utilise pour ses propres sorties <code>vzdump</code>). La cible est configurée à partir de <em>Configurer les destinations de sauvegarde → Local archive targets → Manage local backup target</em>:",
|
||||
"options": [
|
||||
"<strong>Utilisez par défaut (<code>/var/lib/vz/dump</code>).</strong> Le stockage local Proxmox. Présent sur chaque install Proxmox ; l'archive se trouve à côté des sorties vzdump et est captée automatiquement par l'onglet Sauvegardes du moniteur.",
|
||||
"<strong>Entrez un chemin personnalisé.</strong> Tout chemin absolu du système de fichiers peut être utilisé : un montage NFS, un partage SMB monté via <code>fstab</code>, un jeu de données ZFS dédié, un deuxième disque interne. ProxMenux valide que le chemin existe et est un répertoire avant de l’enregistrer.",
|
||||
"<strong>Choisissez un lecteur USB.</strong> Ouvre le sous-menu USB (ci-dessous), qui détecte les appareils amovibles et propose de monter ou de formater un périphérique."
|
||||
"<strong>Utilisez un chemin personnalisé.</strong> Tout chemin absolu du système de fichiers peut être utilisé : un montage NFS, un partage SMB monté via <code>fstab</code>, un jeu de données ZFS dédié, un deuxième disque interne. ProxMenux valide que le chemin existe et est un répertoire avant de l’enregistrer.",
|
||||
"<strong>Utilisez un disque USB.</strong> Ouvre le sous-menu USB (ci-dessous), qui détecte les appareils amovibles et propose de monter ou de formater un périphérique."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
"state": "non monté",
|
||||
"shown": "Taille · étiquette · [fstype] · (non monté — sera monté)",
|
||||
"action": "Un système de fichiers est présent mais n'est pas monté. Lors de la confirmation, ProxMenux exécute <code>hb_mount_usb_partition</code> : crée <code>/mnt/backup-LABEL</code> (ou un chemin basé sur UUID s'il n'y a pas d'étiquette), monte la partition et persiste le point de montage comme cible locale."
|
||||
"action": "Un système de fichiers est présent mais n’est pas monté. Lors de la confirmation, ProxMenux exécute <code>hb_mount_usb_partition</code> : crée <code>/mnt/proxmenux-backup-LABEL</code> (UUID ou nom du périphérique s’il n’y a pas d’étiquette), monte la partition et persiste le point de montage comme cible locale."
|
||||
},
|
||||
{
|
||||
"state": "vide",
|
||||
@@ -63,7 +63,7 @@
|
||||
},
|
||||
"sidecar": {
|
||||
"heading": "Le sidecar JSON",
|
||||
"intro": "Chaque sauvegarde locale réussie produit un fichier compagnon : <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, écrit à côté de l'archive par <code>hb_write_archive_sidecar</code>. Ce petit fichier JSON permet au ProxMenux Monitor d'identifier l'archive comme une sauvegarde d'hôte ProxMenux même s'il est déplacé, rebaptisé ou archivé ailleurs.",
|
||||
"intro": "Chaque sauvegarde locale réussie produit un fichier compagnon : <code>hostcfg-HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, écrit à côté de l’archive par <code>hb_write_archive_sidecar</code>. Ce petit fichier JSON permet au ProxMenux Monitor d’identifier l’archive comme une sauvegarde d’hôte ProxMenux même s’il est déplacé, rebaptisé ou archivé ailleurs.",
|
||||
"contentTitle": "Contenu du sidecar",
|
||||
"contentBody": "Le sidecar stocke la version du schéma, que la sauvegarde soit issue d'une opération interactive ou d'un travail programmé (<code>kind</code>), l'ID de travail pour les opérations programmées, le mode de profil utilisé (<code>default</code> ou <code>custom</code>), le nom d'hôte source, le nom de base d'archive original, un horodatage de création ISO-8601 et la taille des archives en octets.",
|
||||
"whyBody": "L'onglet Sauvegardes du moniteur scanne les répertoires locaux configurés pour les sidecars <code>*.proxmenux.json</code> — pas pour les fichiers <code>*.tar.zst</code> — parce qu'un <code>.tar.zst</code> sans sidecar pourrait ne pas être une sauvegarde ProxMenux du tout. Le scan est rapide (les fichiers JSON sont minuscules) et l'appariement est stable à travers les renoms de l'archive aussi longtemps que le sidecar est renommé pour correspondre."
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"source": "Configuration manuelle ProxMenux",
|
||||
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
|
||||
"content": "Ajouté de <em>Configurer les destinations de sauvegarde → PBS destinations → Ajouter PBS</em>. Prompts pour un nom, nom d'utilisateur (<code>root@pam</code> ou <code>user@pbs!token</code>), hôte ou IP, datastore et mot de passe. Le mot de passe reprend sur l'entrée vide — une sauvegarde vide persisterait silencieusement et chaque sauvegarde ultérieure échouerait avec une erreur d'authentification opaque. Ce chemin est utilisé lorsque la cible PBS n'est pas enregistrée comme stockage Proxmox."
|
||||
"content": "Ajouté depuis <em>Configurer les destinations de sauvegarde → Proxmox Backup Server (PBS) destinations → + Add new PBS manually</em>. Prompts pour un nom, nom d’utilisateur (<code>root@pam</code> ou <code>user@pbs!token</code>), hôte ou IP, datastore et mot de passe. Le mot de passe est redemandé si l’entrée est vide — une sauvegarde vide persisterait silencieusement et chaque sauvegarde ultérieure échouerait avec une erreur d’authentification opaque. Ce chemin est utilisé lorsque la cible PBS n’est pas enregistrée comme stockage Proxmox."
|
||||
}
|
||||
],
|
||||
"menuTitle": "Menu de sélection",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"heading": "Mise en page des archives",
|
||||
"intro": "Chaque archive suit la même disposition de l'arbre, quelle que soit la destination. Le sous-répertoire <code>metadata/</code> détient les charges utiles structurées; le sous-répertoire <code>rootfs/</code> détient la copie du système de fichiers.",
|
||||
"treeCaption": "Le répertoire de mise en scène a été établi lors d'une sauvegarde. Chaque destination reçoit le même arbre (adapté à son format natif: tar pour local, PBS morceaux pour PBS, segments borg pour 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/…"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "La partie rootfs",
|
||||
@@ -176,7 +176,7 @@
|
||||
"stage": "3",
|
||||
"name": "En attente de préparation",
|
||||
"reads": "rootfs/ (redémarrage + chemins dangereux)",
|
||||
"action": "<code>_rs_prepare_pending_restore</code> prépare les chemins à risque dans <code>/var/lib/proxmenux/pending-restore/</code>, écrit <code>plan.env</code>, <code>apply-on-boot.list</code> et <code>rs-skip-paths.txt</code>, puis active <code>proxmenux-restore-onboot.service</code> pour le prochain démarrage."
|
||||
"action": "<code>_rs_prepare_pending_restore</code> prépare les chemins à risque dans <code>/var/lib/proxmenux/restore-pending/<restore_id>/</code> (lié en tant que <code>current</code>), écrit <code>plan.env</code>, <code>apply-on-boot.list</code> et <code>rs-skip-paths.txt</code>, puis active <code>proxmenux-restore-onboot.service</code> pour le prochain démarrage."
|
||||
},
|
||||
{
|
||||
"stage": "3b",
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"heading": "Deux interfaces, un backend",
|
||||
"intro": "Chaque étape du workflow de sauvegarde et de restauration est disponible à partir de deux points d'entrée. Les deux appellent la même bibliothèque shell, produisent des archives identiques et lisent le même registre de tâches.",
|
||||
"cliLabel": "ProxMenux Scripts (TUI)",
|
||||
"cliDetail": "menu → Utilitaires →\nSauvegarde / Restauration de l'hôte\n\nFlux basé sur le dialogue,\nCompatible avec SSH, scriptable\npour une utilisation sans surveillance.",
|
||||
"cliDetail": "menu →\nSauvegarde et restauration de l’hôte\n\nFlux basé sur le dialogue,\nCompatible avec SSH, scriptable\npour une utilisation sans surveillance.",
|
||||
"webLabel": "ProxMenux Monitor (Web UI)",
|
||||
"webDetail": "Onglet Sauvegardes dans\nl’interface web de Monitor.\n\nRestauration en un clic, suivi\ndes journaux en direct, intégré\naux notifications et à la vue\ndes différences de retour arrière."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"management": {
|
||||
"heading": "Gestion des tâches",
|
||||
"intro": "Le menu planificateur (Scripts TUI) et l'onglet Sauvegardes Monitor exposent les mêmes actions sur n'importe quel travail.",
|
||||
"intro": "Le menu planificateur du Scripts TUI (Backup scheduler and retention) propose Run now, Enable / Disable et Delete, ainsi qu’une liste des travaux avec l’état de leur dernière exécution. Edit et View log ne sont disponibles que dans l’onglet Sauvegardes de Monitor.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Exécuter maintenant",
|
||||
@@ -112,7 +112,7 @@
|
||||
"detail": "Nouveau mode : <code>systemctl enable/disable --now</code> la minuterie. Attache le mode : retourne le drapeau <code>ENABLED</code> dans le travail env — le script hook l'honore au prochain déclenchement PVE."
|
||||
},
|
||||
{
|
||||
"action": "Modifier",
|
||||
"action": "Modifier (Monitor uniquement)",
|
||||
"detail": "Rouvre les champs de destination, calendrier, profil et rétention et réécrit les fichiers de la tâche. Conserve son identifiant."
|
||||
},
|
||||
{
|
||||
@@ -120,7 +120,7 @@
|
||||
"detail": "Supprime le fichier env, la liste des chemins et le minuteur et service systemd (nouvelle tâche), et désactive l’association au hook (mode d’association). Les archives déjà présentes à destination restent intactes."
|
||||
},
|
||||
{
|
||||
"action": "Voir le journal",
|
||||
"action": "Voir le journal (Monitor uniquement)",
|
||||
"detail": "Affiche en continu <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code> : un fichier journal par exécution. Le programme d'exécution émet également une ligne d'état compacte à journald sous le service systemd."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
},
|
||||
"package": {
|
||||
"heading": "Ce qui finit dans le paquet",
|
||||
"intro": "Pour une OVA / OVF nommée <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
"intro": "Pour une OVA / OVF nommée <code>myvm-100-20260426_183015</code> :",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-20260426_183015.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-20260426_183015.mf # SHA1 manifest\nmyvm-100-20260426_183015-disk1.vmdk\nmyvm-100-20260426_183015-disk2.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-20260426_183015-ovf/\n├── myvm-100-20260426_183015.ovf\n├── myvm-100-20260426_183015.mf\n├── myvm-100-20260426_183015-disk1.vmdk\n└── myvm-100-20260426_183015-disk2.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "Ce qui est exporté",
|
||||
@@ -90,7 +90,7 @@
|
||||
"manifest": {
|
||||
"heading": "Manifeste SHA1",
|
||||
"intro": "Chaque paquet contient un fichier <code>.mf</code> avec les empreintes SHA1 du descripteur OVF et de chaque VMDK :",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"code": "SHA1(myvm-100-20260426_183015.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-20260426_183015-disk1.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-20260426_183015-disk2.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "Facultatif dans la spécification OVF et ignoré par de nombreux outils, le manifeste permet toutefois de vérifier que le paquet a été transféré intact. Vérifiez-le manuellement avec <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"body": "Maintenez l’hôte en bon état : outils CLI, mises à jour régulières et passage à la version majeure suivante le moment venu.",
|
||||
"bullets": [
|
||||
"Installateur d’utilitaires système (25 outils CLI)",
|
||||
"Mise à jour du système Proxmox (apt + dist-upgrade)",
|
||||
"Mise à jour du système Proxmox (apt + full-upgrade)",
|
||||
"PVE 8 → PVE 9 mise à jour majeure"
|
||||
]
|
||||
},
|
||||
@@ -58,11 +58,11 @@
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Création ISO",
|
||||
"body": "Créez une nouvelle ISO d’installation de Windows à jour directement sur l’hôte Proxmox. Le script automatise tout le processus UUP Dump : installation des dépendances (aria2c, cabextract, wimlib-imagex, …), téléchargement parallèle des fichiers de mise à jour avec aria2 et conversion en une ISO amorçable. Elle est enregistrée dans <code>/var/lib/vz/template/iso</code>, prête à être associée à une VM.",
|
||||
"body": "Créez une nouvelle ISO d’installation de Windows à jour directement sur l’hôte Proxmox. Le script automatise tout le processus UUP Dump : installation des dépendances (aria2c, cabextract, wimlib-imagex, …), téléchargement parallèle des fichiers de mise à jour avec aria2 et conversion en une ISO amorçable. Elle est enregistrée dans le stockage ISO Proxmox détecté (repli : <code>/var/lib/vz/template/iso</code>), prête à être associée à une VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Créateur d’ISO UUP Dump",
|
||||
"description": "Créez une ISO d’installation de Windows à jour depuis un lien partagé UUP Dump. Les dépendances, le téléchargement et la conversion sont entièrement automatisés ; l’ISO obtenue est enregistrée dans /var/lib/vz/template/iso, prête pour la création d’une VM.",
|
||||
"description": "Créez une ISO d’installation de Windows à jour depuis un lien partagé UUP Dump. Les dépendances, le téléchargement et la conversion sont entièrement automatisés ; l’ISO obtenue est enregistrée dans le stockage ISO Proxmox détecté, prête pour la création d’une VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Mise à jour du système Proxmox",
|
||||
"description": "Vérification des dépôts + apt update + apt dist-upgrade, avec confirmation avant le redémarrage. Détecte la version majeure de PVE (8 ou 9), conserve les dépôts configurés et demande confirmation avant de faire passer un hôte sans abonnement au dépôt no-subscription, puis exécute autoremove.",
|
||||
"description": "Vérification des dépôts + apt update + apt full-upgrade, avec confirmation avant le redémarrage. Détecte la version majeure de PVE (8 ou 9), conserve les dépôts configurés et demande confirmation avant de faire passer un hôte sans abonnement au dépôt no-subscription, puis exécute autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"body": "Le dépôt Enterprise est activé sans abonnement actif. Avant <code>apt-get update</code>, le script propose le passage à no-subscription. Si vous avez refusé, relancez la mise à jour et acceptez, ou désactivez Enterprise dans <em>Node → Updates → Repositories</em> et activez no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade reste bloqué sur \"Configuring grub-pc\"",
|
||||
"title": "full-upgrade reste bloqué sur \"Configuring grub-pc\"",
|
||||
"body": "Si une question interactive GRUB est visible, elle demande les appareils où installer le chargeur de démarrage. L’option <code>--force-confold</code> concerne les fichiers de configuration, pas ce choix d’appareils. Sélectionnez les disques de démarrage appropriés avec <kbd>Tab</kbd> + <kbd>Space</kbd>, puis OK. Vous pouvez configurer ce choix à l’avance avec <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Mise à jour du système Proxmox",
|
||||
"tailRich": "— pour le <code>apt dist-upgrade</code> réel sur l'hôte."
|
||||
"tailRich": " — pour le <code>apt full-upgrade</code> réel sur l’hôte."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"items": [
|
||||
"<strong>Sauvegardes vérifiées</strong> de chaque VM et CT (PBS, vzdump, instantanés ZFS — vérifiez aussi leur restauration).",
|
||||
"<strong>Accès console / IPMI / iKVM</strong> à l’hôte en cas de coupure SSH pendant la mise à niveau.",
|
||||
"L'hôte déjà mis à jour sur PVE 8.4.x (le script l'applique).",
|
||||
"L’hôte au dernier niveau de correctifs PVE 8. Le script met d’abord à jour PVE 8 ; il ne vérifie pas une version 8.4.x précise.",
|
||||
"Ceph (le cas échéant) sur la version 19.x Squid.",
|
||||
"Au moins <strong>5 Go libres</strong> sur le système de fichiers racine."
|
||||
"Au moins <strong>5 Go libres</strong> sur le système de fichiers racine, comme le recommande le guide Proxmox. Le script lui-même ne vérifie que 1 Go dans /var/cache/apt/archives."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
@@ -63,13 +63,13 @@
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Pourquoi le terminal web est bloqué",
|
||||
"body": "Les trois modes détectent <code>termproxy</code> / <code>vncshell</code> dans la chaîne des processus parents et refusent de démarrer. Le terminal web dépend de <code>pveproxy</code>, un service mis à jour pendant l’opération. Au redémarrage de <code>pveproxy</code>, la session se ferme, ainsi que le script lancé dedans. L’hôte peut rester partiellement mis à niveau.",
|
||||
"body": "Les modes Automatique et Interactif détectent <code>termproxy</code> / <code>vncshell</code> dans la chaîne des processus parents et refusent de démarrer, sauf si la session passe par SSH ou si <code>PVE_ALLOW_WEBTERM=1</code> est défini. Le contrôle préalable et le guide manuel ne changent rien et s’exécutent partout. Le terminal web dépend de <code>pveproxy</code>, un service mis à jour pendant l’opération. Au redémarrage de <code>pveproxy</code>, la session se ferme, ainsi que le script lancé dedans. L’hôte peut rester partiellement mis à niveau.",
|
||||
"warningTitle": "Utilisez SSH ou une console physique / IPMI / iKVM",
|
||||
"warningBody": "SSH est le choix habituel. Lancez-le dans <code>tmux</code> ou <code>screen</code> pour résister aux brèves coupures réseau. Si le script détecte un simple shell SSH, il affiche d’abord un rappel concernant tmux/screen."
|
||||
"warningBody": "SSH est le choix habituel. Lancez-le dans <code>tmux</code> ou <code>screen</code> pour résister aux brèves coupures réseau. La boîte de dialogue de confirmation de la mise à niveau rappelle de l’exécuter depuis la console ou depuis SSH dans tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Mode automatique / sans surveillance",
|
||||
"intro": "Les questions sur les paquets et les fichiers de configuration utilisent les valeurs par défaut du tableau ci-dessous, et un 401 du dépôt Enterprise bascule vers no-subscription sans demander. La confirmation de la mise à niveau, le résumé de la mise à jour PVE 8, les réparations du contrôle préalable et la demande de redémarrage restent affichés.",
|
||||
"intro": "Les questions sur les paquets et les fichiers de configuration utilisent les valeurs par défaut du tableau ci-dessous. La confirmation de la mise à niveau, le résumé de la mise à jour PVE 8, les réparations du contrôle préalable et la demande de redémarrage restent affichés.",
|
||||
"behaviourHeading": "Comportement propre au mode automatique",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Réglage",
|
||||
@@ -94,8 +94,8 @@
|
||||
]
|
||||
},
|
||||
"flowHeading": "Déroulement du mode automatique",
|
||||
"flowIntro": "Six phases successives. La phase 2 met à jour les paquets PVE 8 et la phase 3 écrit la configuration des dépôts PVE 9. Un échec arrête le déroulement sans annuler ces modifications ; si la mise à jour PVE 8 échoue ou est annulée, les dépôts restent inchangés. La phase 5 lance <code>dist-upgrade</code> vers PVE 9.",
|
||||
"flowDiagram": "1. CONTRÔLES\nBloque termproxy / vncshell ; confirme la mise à niveau ; refuse PVE 9.\n\n2. PRÉPARER PVE 8\nscripts/global/update-pve8.sh\nMet à jour les paquets PVE 8 ; arrêt si la mise à jour échoue ou est annulée.\npve8to9 --full (peut proposer des réparations).\nVérifie espace et connectivité ; Ceph 19.x Squid sur les nœuds hyperconvergés.\n\n3. MIGRER LES DÉPÔTS\nBookworm → Trixie ; écrit les fichiers deb822 .sources.\nCommente les anciens fichiers .list ; apt-get update.\n\n4. VALIDER LE CANDIDAT PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nArrêt si le candidat n’est pas 9.x ou si proxmox-ve serait supprimé.\n\n5. METTRE À NIVEAU\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSans abonnement : désactive pve-enterprise.sources.\nJournal : /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VÉRIFIER ET REDÉMARRER\nEFI : apt install grub-efi-amd64\npve8to9 --full ; examiner le résultat et la demande de redémarrage.",
|
||||
"flowIntro": "Six phases successives. La phase 2 bascule les dépôts PVE 8 vers no-subscription (listes Enterprise et Ceph désactivées, <code>/etc/apt/sources.list</code> réécrit) avant d’afficher le résumé de la mise à jour, puis met à jour les paquets ; la phase 3 écrit la configuration des dépôts PVE 9. Un échec arrête le déroulement sans annuler ces modifications ; si la mise à jour PVE 8 échoue ou est annulée, la migration vers PVE 9 ne démarre pas, mais les modifications des dépôts PVE 8 restent. La phase 5 lance <code>dist-upgrade</code> vers PVE 9.",
|
||||
"flowDiagram": "1. CONTRÔLES\nBloque termproxy / vncshell ; confirme la mise à niveau ; refuse PVE 9.\n\n2. PRÉPARER PVE 8\nscripts/global/update-pve8.sh\nBascule les dépôts PVE 8 vers no-subscription et réécrit sources.list ;\nmet à jour les paquets PVE 8 ; arrêt si la mise à jour échoue ou est annulée.\npve8to9 --full (peut proposer des réparations).\nVérifie espace et connectivité ; Ceph 19.x Squid sur les nœuds hyperconvergés.\n\n3. MIGRER LES DÉPÔTS\nBookworm → Trixie ; écrit les fichiers deb822 .sources.\nCommente les anciens fichiers .list ; apt-get update.\n\n4. VALIDER LE CANDIDAT PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nArrêt si le candidat n’est pas 9.x ou si proxmox-ve serait supprimé.\n\n5. METTRE À NIVEAU\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSans abonnement : désactive pve-enterprise.sources.\nJournal : /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VÉRIFIER ET REDÉMARRER\nEFI : apt install grub-efi-amd64\npve8to9 --full ; examiner le résultat et la demande de redémarrage.",
|
||||
"preflightHeading": "Contrôles avant la mise à niveau",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Vérifier",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Procédure de mise à niveau manuelle",
|
||||
"intro": "Voici ce qu’affiche l’option <strong>Guide de mise à niveau manuelle</strong> : le <wikilink>wiki officiel Proxmox de passage de 8 à 9</wikilink>, organisé en quatre phases. Le script <em>affiche</em> les commandes ; vous les exécutez dans un autre shell root. Chaque étape reste visible.",
|
||||
"intro": "Voici ce qu’affiche l’option <strong>Guide de mise à niveau manuelle</strong> : le <wikilink>wiki officiel Proxmox de passage de 8 à 9</wikilink>, organisé en quatre phases. Le tableau des réponses dpkg ajoute les réserves du wiki pour sshd_config et chrony.conf, que le menu affiche comme un simple Y. Le script <em>affiche</em> les commandes ; vous les exécutez dans un autre shell root. Aucune automatisation, chaque étape reste visible.",
|
||||
"rootCalloutTitle": "Toutes les commandes ont besoin de root",
|
||||
"rootCalloutBody": "Utilisez un shell root pour ces commandes, y compris les redirections et les documents here-document. Avec <code>sudo</code>, assurez-vous que la commande entière bénéficie des privilèges root.",
|
||||
"phase1Heading": "Phase 1 — Préparation",
|
||||
@@ -230,7 +230,7 @@
|
||||
"clusterCeph": {
|
||||
"heading": "Cluster & Ceph",
|
||||
"clusterCalloutTitle": "Cluster: mise à niveau des nœuds un à la fois",
|
||||
"clusterCalloutBody": "Détecté par <code>pvecm status</code>. <strong>Ne mettez pas</strong> plusieurs nœuds à niveau simultanément. Déplacez les invités, mettez le nœud à niveau, redémarrez et vérifiez son appartenance au cluster avant de continuer. Pendant l’opération, la migration à chaud d’une ancienne version de PVE vers une plus récente fonctionne ; le sens inverse n’est généralement pas pris en charge. Les groupes HA deviennent automatiquement des règles HA lorsque tous les nœuds utilisent PVE 9.",
|
||||
"clusterCalloutBody": "<strong>Ne mettez pas</strong> plusieurs nœuds à niveau simultanément. Déplacez les invités, mettez le nœud à niveau, redémarrez et vérifiez son appartenance au cluster avant de continuer. Pendant l’opération, la migration à chaud d’une ancienne version de PVE vers une plus récente fonctionne ; le sens inverse n’est généralement pas pris en charge. Les groupes HA deviennent automatiquement des règles HA lorsque tous les nœuds utilisent PVE 9.",
|
||||
"cephCalloutTitle": "Ceph : mettre Ceph à niveau D’ABORD, puis Proxmox",
|
||||
"cephCalloutBody": "Ceph doit déjà utiliser 19.x Squid avant la mise à niveau Proxmox. Suivez l’ordre officiel Quincy 17 → Reef 18 → Squid 19, avec mise à jour des paquets et redémarrages échelonnés des démons Ceph dans l’ordre documenté. Vérifiez <code>ceph --version</code> avant chaque nœud Proxmox. Procédure complète : <cephlink>wiki de passage de Ceph Reef à Squid</cephlink>."
|
||||
},
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
"files": {
|
||||
"heading": "Fichiers concernés",
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
},
|
||||
"references": {
|
||||
"heading": "Références officielles",
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"rows": [
|
||||
{
|
||||
"entry": "ProxMenux Scripts (TUI)",
|
||||
"path": "menu → Utilities → Host Config Backup",
|
||||
"detail": "Flusso basato sul dialogo, SSH-friendly. Il menu principale presenta le sei opzioni direttamente. Utilizza <code>backup_menu</code> in <code>backup_host.sh</code>."
|
||||
"path": "menu → Host Backup & Restore → Backup host configuration",
|
||||
"detail": "Flusso basato sul dialogo, SSH-friendly. La voce del menu principale apre Host Config Backup / Restore; Backup host configuration porta alle sei opzioni. Utilizza <code>backup_menu</code> in <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (interfaccia web)",
|
||||
@@ -83,7 +83,7 @@
|
||||
"profiles": {
|
||||
"heading": "Profilo predefinito e personalizzato",
|
||||
"defaultTitle": "Profilo predefinito",
|
||||
"defaultBody": "Il profilo predefinito è l'elenco curato da <code>hb_default_profile_paths</code> (documentato in <em>Come funziona</em> sotto <em>Categorie di percorsi</em>) più ogni voce nel file extra persistente <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. L'utente conferma le opzioni di destinazione e crittografia e il backup procede senza ulteriori selezioni dei percorsi.",
|
||||
"defaultBody": "Il profilo predefinito è l'elenco curato da <code>hb_default_profile_paths</code> (documentato in <em>Come funziona</em> sotto <em>Categorie di percorsi</em>) più ogni voce nel file extra persistente <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. L'utente sceglie le opzioni di destinazione e crittografia e il backup procede senza ulteriori selezioni dei percorsi.",
|
||||
"customTitle": "Profilo personalizzato",
|
||||
"customBody": "Il profilo personalizzato apre un elenco con tutti i percorsi del profilo predefinito (non selezionati) e tutti gli extra persistenti (già selezionati, con il prefisso <code>[+]</code>). L’utente seleziona i percorsi per questa esecuzione e può premere <em>Aggiungi percorso personalizzato</em> per aggiungere un nuovo percorso assoluto. I percorsi aggiunti vengono salvati in <code>backup-extra-paths.txt</code>, così i backup futuri li includono automaticamente senza doverli aggiungere di nuovo. Deselezionare un extra persistente lo esclude da questa esecuzione ma non lo elimina dal file — l’eliminazione avviene con l’azione separata <em>Gestisci percorsi personalizzati</em>, al di fuori del flusso di backup.",
|
||||
"customPickerAlt": "Elenco di controllo del profilo personalizzato che mostra i percorsi di predefinito (non selezionati) e gli extra persistenti (già selezionati con un prefisso [+]), più pulsanti per aggiungere un nuovo percorso o confermare la selezione.",
|
||||
@@ -124,14 +124,7 @@
|
||||
},
|
||||
"included": {
|
||||
"heading": "Cosa entra e cosa rimane fuori",
|
||||
"intro": "Ogni percorso nel profilo risolto (predefinito + extra persistenti + selezione personalizzata) viene copiato con <code>rsync -aAXH --numeric-ids</code>. Un elenco di esclusione condiviso si applica a ogni percorso, e due directory portano ulteriori esclusioni specifiche del percorso.",
|
||||
"globalTitle": "Esclusioni globali (applicate ad ogni percorso)",
|
||||
"globalItems": [
|
||||
"<code>images/</code> — dump immagine.",
|
||||
"<code>dump/</code> — output di vzdump.",
|
||||
"<code>tmp/</code> — file temporanei.",
|
||||
"<code>*.log</code> — file di registro."
|
||||
],
|
||||
"intro": "Ogni percorso nel profilo risolto (predefinito + extra persistenti + selezione personalizzata) viene copiato con <code>rsync -aAXH --numeric-ids</code>. Non esiste un elenco di esclusione globale; alcune directory hanno esclusioni specifiche del percorso.",
|
||||
"rootTitle": "<code>/root/</code> esclusioni",
|
||||
"rootBody": "<code>/root/</code> fa parte del profilo predefinito per includere nell’archivio gli script e la configurazione dell’utente. Sono esclusi i sottopercorsi volatili:",
|
||||
"rootItems": [
|
||||
@@ -160,16 +153,16 @@
|
||||
"<strong><code>/home/USER</code></strong> — non nel profilo predefinito. Aggiungilo come un percorso personalizzato quando un sistema porta directory home degli utenti che devono sopravvivere a un ripristino."
|
||||
],
|
||||
"customPathsTitle": "Come vengono gestiti i percorsi personalizzati",
|
||||
"customPathsBody": "Un percorso personalizzato aggiunto in linea in modalità personalizzata o persistito in <code>backup-extra-paths.txt</code> passa attraverso la stessa pipeline <code>rsync</code> come percorsi di default-profile. Si applicano esclusioni globali. Se il percorso personalizzato avviene sotto <code>/root/</code> o <code>/usr/local/share/proxmenux/</code>, si applicano ancora le esclusioni specifiche del percorso. Ogni percorso archiviato — predefinito o personalizzato — viene registrato in <code>metadata/paths_archived.txt</code>. I percorsi che non esistono sulla sorgente sono registrati in <code>metadata/missing_paths.txt</code> senza interrompere il backup."
|
||||
"customPathsBody": "Un percorso personalizzato aggiunto in linea in modalità personalizzata o persistito in <code>backup-extra-paths.txt</code> passa attraverso la stessa pipeline <code>rsync</code> come percorsi di default-profile. Se il percorso personalizzato avviene sotto <code>/root/</code> o <code>/usr/local/share/proxmenux/</code>, si applicano ancora le esclusioni specifiche del percorso. Ogni percorso archiviato — predefinito o personalizzato — viene registrato in <code>metadata/selected_paths.txt</code>. I percorsi che non esistono sulla sorgente sono registrati in <code>metadata/missing_paths.txt</code> senza interrompere il backup, e i percorsi la cui copia fallisce in <code>metadata/failed_paths.txt</code>."
|
||||
},
|
||||
"archiveStructure": {
|
||||
"heading": "Struttura dell'archivio",
|
||||
"intro": "La directory di staging prodotta da ogni backend segue lo stesso layout indipendentemente dalla destinazione. Il tarball, PBS <code>.pxar</code> o Borg archivio memorizza questo albero verbatim.",
|
||||
"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"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "Riepilogo conferma",
|
||||
"body": "Prima che il backend scriva qualcosa alla destinazione, ProxMenux mostra una finestra di dialogo sommaria con la destinazione, l'ID di backup o il nome dell'archivio, lo stato di crittografia e l'elenco dei percorsi da copiare. Cancellando qui interrompe il backup in modo pulito — la directory di staging viene rimossa dal gancio <code>trap</code> impostato sulla funzione backend e nessun dato parziale raggiunge la destinazione."
|
||||
"body": "Prima che il backend scriva qualcosa alla destinazione, ProxMenux stampa nel terminale un riepilogo con la destinazione, l'ID di backup o il nome dell'archivio, lo stato di crittografia e l'elenco dei percorsi da copiare. In questo punto non c'è alcun passaggio di conferma o annullamento; la copia inizia subito dopo. Se il backup fallisce o viene interrotto, la directory di staging viene rimossa dal gancio <code>trap</code> impostato sulla funzione backend e nessun dato parziale raggiunge la destinazione."
|
||||
},
|
||||
"writing": {
|
||||
"heading": "Scrivere alla destinazione",
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
},
|
||||
"targetConfig": {
|
||||
"heading": "Configurazione della directory target",
|
||||
"intro": "La destinazione locale è una <strong>unica directory di destinazione salvata in modo persistente</strong> — non un elenco. ProxMenux memorizza la scelta dell'operatore su <code>/usr/local/share/proxmenux/local-target.conf</code> e la legge su ogni backup. Quando non è stato configurato alcun obiettivo, viene utilizzato il <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> predefinito (la stessa directory Proxmox utilizza per le proprie uscite <code>vzdump</code>). L'obiettivo è configurato da <em>Configura destinazioni di backup → Destinazioni locali</em>:",
|
||||
"intro": "La destinazione locale è una <strong>unica directory di destinazione salvata in modo persistente</strong> — non un elenco. ProxMenux memorizza la scelta dell'operatore su <code>/usr/local/share/proxmenux/local-target.conf</code> e la legge su ogni backup. Quando non è stato configurato alcun obiettivo, viene utilizzato il <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> predefinito (la stessa directory Proxmox utilizza per le proprie uscite <code>vzdump</code>). L'obiettivo è configurato da <em>Configura destinazioni di backup → Destinazioni archivio locali → Gestisci destinazione di backup locale</em>:",
|
||||
"options": [
|
||||
"<strong>Utilizzo predefinito (<code>/var/lib/vz/dump</code>).</strong> Lo storage locale Proxmox. Presente su ogni installazione Proxmox; l'archivio si trova accanto alle uscite vzdump e viene ritirato dalla scheda Monitor Backups automaticamente.",
|
||||
"<strong>Inserisci un percorso personalizzato.</strong> Puoi usare qualsiasi percorso assoluto del filesystem: un montaggio NFS, una condivisione SMB montata tramite <code>fstab</code>, un dataset ZFS dedicato o un secondo disco interno. Prima di salvarlo, ProxMenux verifica che il percorso esista e sia una directory.",
|
||||
"<strong>Scegli un’unità USB.</strong> Apre il sottomenu USB (sotto), che rileva dispositivi rimovibili e offre di montare o formattarne uno."
|
||||
"<strong>Usa un percorso personalizzato.</strong> Puoi usare qualsiasi percorso assoluto del filesystem: un montaggio NFS, una condivisione SMB montata tramite <code>fstab</code>, un dataset ZFS dedicato o un secondo disco interno. Prima di salvarlo, ProxMenux verifica che il percorso esista e sia una directory.",
|
||||
"<strong>Usa un disco USB.</strong> Apre il sottomenu USB (sotto), che rileva dispositivi rimovibili e offre di montare o formattarne uno."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
"state": "non montato",
|
||||
"shown": "Dimensione · etichetta · [fstype] · (non montato — sarà montato)",
|
||||
"action": "Un filesystem è presente ma non montato. A conferma, ProxMenux gestisce <code>hb_mount_usb_partition</code>: crea <code>/mnt/backup-LABEL</code> (o un percorso basato su UUID se non c'è etichetta), monta la partizione e persiste il punto di montaggio come obiettivo locale."
|
||||
"action": "Un filesystem è presente ma non montato. A conferma, ProxMenux gestisce <code>hb_mount_usb_partition</code>: crea <code>/mnt/proxmenux-backup-LABEL</code> (UUID o nome del dispositivo se non c'è etichetta), monta la partizione e persiste il punto di montaggio come obiettivo locale."
|
||||
},
|
||||
{
|
||||
"state": "vuoto",
|
||||
@@ -63,7 +63,7 @@
|
||||
},
|
||||
"sidecar": {
|
||||
"heading": "Il sidecar JSON",
|
||||
"intro": "Ogni backup locale di successo produce un file compagno: <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, scritto accanto all'archivio da <code>hb_write_archive_sidecar</code>. Questo piccolo file JSON consente a ProxMenux Monitor di identificare l'archivio come ProxMenux backup host anche se in seguito viene spostato, rinominato o archiviato altrove.",
|
||||
"intro": "Ogni backup locale di successo produce un file compagno: <code>hostcfg-HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, scritto accanto all'archivio da <code>hb_write_archive_sidecar</code>. Questo piccolo file JSON consente a ProxMenux Monitor di identificare l'archivio come ProxMenux backup host anche se in seguito viene spostato, rinominato o archiviato altrove.",
|
||||
"contentTitle": "Contenuto del sidecar",
|
||||
"contentBody": "Il sidecar memorizza la versione schema, se il backup proveniva da un run interattivo o da un lavoro programmato (<code>kind</code>), l'ID di lavoro per le esecuzioni pianificate, la modalità profilo utilizzata (<code>default</code> o <code>custom</code>), il nome host sorgente, il nome base originale dell'archivio, un timestamp di creazione ISO-8601 e la dimensione dell'archivio in byte.",
|
||||
"whyBody": "La scheda Backups di Monitor cerca i file ausiliari <code>*.proxmenux.json</code> nelle directory locali configurate, non i file <code>*.tar.zst</code>, perché un <code>.tar.zst</code> senza file ausiliario potrebbe non essere un backup ProxMenux. La scansione è veloce (i file JSON sono piccoli) e l’associazione resta valida quando l’archivio viene rinominato, purché anche il file ausiliario venga rinominato di conseguenza."
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"source": "Configurazione manuale ProxMenux",
|
||||
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
|
||||
"content": "Aggiunto da <em>Configure destinazioni di backup → PBS destinazioni → Aggiungi PBS</em>. Prompts per un nome, nome utente (<code>root@pam</code> o <code>user@pbs!token</code>), host o IP, datastore e password. I re-prompt password su input vuoto — un salvataggio vuoto altrimenti persisterebbe silenziosamente e ogni backup successivo fallirebbe con un errore di autenticazione opaco. Questo percorso viene utilizzato quando il target PBS non è registrato come storage Proxmox."
|
||||
"content": "Aggiunto da <em>Configure destinazioni di backup → Destinazioni Proxmox Backup Server (PBS) → + Aggiungi nuovo PBS manualmente</em>. Prompts per un nome, nome utente (<code>root@pam</code> o <code>user@pbs!token</code>), host o IP, datastore e password. I re-prompt password su input vuoto — un salvataggio vuoto altrimenti persisterebbe silenziosamente e ogni backup successivo fallirebbe con un errore di autenticazione opaco. Questo percorso viene utilizzato quando il target PBS non è registrato come storage Proxmox."
|
||||
}
|
||||
],
|
||||
"menuTitle": "Menu di selezione",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"heading": "Disposizione dell'archivio",
|
||||
"intro": "Ogni archivio segue lo stesso layout albero indipendentemente dalla destinazione. La sottodirectory <code>metadata/</code> contiene i dati strutturati; la sottodirectory <code>rootfs/</code> contiene la copia del filesystem.",
|
||||
"treeCaption": "La directory di preparazione creata durante il backup. Tutte le destinazioni ricevono lo stesso albero nel proprio formato nativo: tar per i backup locali, blocchi PBS per PBS e segmenti Borg per 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/…"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "La parte rootfs",
|
||||
@@ -176,7 +176,7 @@
|
||||
"stage": "3",
|
||||
"name": "Preparazione delle modifiche differite",
|
||||
"reads": "rootfs/ (riavvio + percorsi pericolosi)",
|
||||
"action": "<code>_rs_prepare_pending_restore</code> prepara i percorsi rischiosi in <code>/var/lib/proxmenux/pending-restore/</code>, scrive <code>plan.env</code>, <code>apply-on-boot.list</code> e <code>rs-skip-paths.txt</code> e abilita <code>proxmenux-restore-onboot.service</code> per il prossimo avvio."
|
||||
"action": "<code>_rs_prepare_pending_restore</code> prepara i percorsi rischiosi in <code>/var/lib/proxmenux/restore-pending/<restore_id>/</code> (collegata come <code>current</code>), scrive <code>plan.env</code>, <code>apply-on-boot.list</code> e <code>rs-skip-paths.txt</code> e abilita <code>proxmenux-restore-onboot.service</code> per il prossimo avvio."
|
||||
},
|
||||
{
|
||||
"stage": "3b",
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"heading": "Due interfacce, un backend",
|
||||
"intro": "Ogni fase del flusso di lavoro di backup e ripristino è disponibile da due punti di ingresso. Entrambi chiamano la stessa libreria di shell, producono archivi identici e leggono lo stesso registro dei lavori.",
|
||||
"cliLabel": "ProxMenux Scripts (TUI)",
|
||||
"cliDetail": "menu → Utilità →\nBackup/Ripristino dell'host\n\nFlusso basato su dialoghi,\nSSH-friendly, scriptabile\nper uso non presidiato.",
|
||||
"cliDetail": "menu →\nBackup/Ripristino dell'host\n\nFlusso basato su dialoghi,\nSSH-friendly, scriptabile\nper uso non presidiato.",
|
||||
"webLabel": "ProxMenux Monitor (Web UI)",
|
||||
"webDetail": "Scheda Backups\nnell’interfaccia web di Monitor.\n\nRipristino con un clic, log\nin tempo reale, integrazione con\nle notifiche e il visualizzatore\ndelle differenze di rollback."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"management": {
|
||||
"heading": "Gestione dei lavori",
|
||||
"intro": "Il menu scheduler (Script TUI) e la scheda Monitor Backups espongono le stesse azioni su qualsiasi lavoro.",
|
||||
"intro": "Il menu scheduler nella TUI degli script (Backup scheduler and retention) offre Run now, Enable / Disable e Delete, oltre a un elenco dei lavori con lo stato dell'ultima esecuzione. Modifica e Visualizza log sono disponibili solo nella scheda Monitor Backups.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Esegui ora",
|
||||
@@ -112,7 +112,7 @@
|
||||
"detail": "Nuova modalità: <code>systemctl enable/disable --now</code> il timer. Modalità di aggancio: cambia il flag <code>ENABLED</code> nel job env — lo script gancio lo onora alla prossima esecuzione PVE."
|
||||
},
|
||||
{
|
||||
"action": "Modifica",
|
||||
"action": "Modifica (solo Monitor)",
|
||||
"detail": "Riapre le richieste di destinazione, pianificazione, profilo e ritenzione e riscrive i file di lavoro. Conserva l'ID del lavoro."
|
||||
},
|
||||
{
|
||||
@@ -120,7 +120,7 @@
|
||||
"detail": "Rimuove il job env, il file dei percorsi, il timer + servizio systemd (Nuova modalità), e disabilita il binding del gancio (Modalità allegato). Non tocca archivi già sulla destinazione."
|
||||
},
|
||||
{
|
||||
"action": "Visualizza log",
|
||||
"action": "Visualizza log (solo Monitor)",
|
||||
"detail": "Mostra in tempo reale <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code>: un file di registro per esecuzione. Lo script di esecuzione emette anche una riga di stato compatta a journald sotto il servizio systemd."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
},
|
||||
"package": {
|
||||
"heading": "Cosa finisce nel pacchetto",
|
||||
"intro": "Per un OVA / OVF chiamato <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
"intro": "Per un OVA / OVF chiamato <code>myvm-100-20260426_183015</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-20260426_183015.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-20260426_183015.mf # SHA1 manifest\nmyvm-100-20260426_183015-disk1.vmdk\nmyvm-100-20260426_183015-disk2.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-20260426_183015-ovf/\n├── myvm-100-20260426_183015.ovf\n├── myvm-100-20260426_183015.mf\n├── myvm-100-20260426_183015-disk1.vmdk\n└── myvm-100-20260426_183015-disk2.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "Cosa viene esportato",
|
||||
@@ -90,7 +90,7 @@
|
||||
"manifest": {
|
||||
"heading": "Manifesto SHA1",
|
||||
"intro": "Ogni pacchetto include un file <code>.mf</code> con gli hash SHA1 del descrittore OVF e di ogni VMDK:",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"code": "SHA1(myvm-100-20260426_183015.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-20260426_183015-disk1.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-20260426_183015-disk2.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "È facoltativo nella specifica OVF e molti programmi lo ignorano, ma serve a verificare che il pacchetto sia stato trasferito integro. Verificalo manualmente con <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"body": "Mantieni l’host in buone condizioni con strumenti CLI, aggiornamenti regolari e il passaggio di versione principale quando necessario.",
|
||||
"bullets": [
|
||||
"Installatore di utilità di sistema (25 strumenti CLI)",
|
||||
"Aggiornamento del sistema Proxmox (apt + dist-upgrade)",
|
||||
"Aggiornamento del sistema Proxmox (apt + full-upgrade)",
|
||||
"Passaggio di versione principale PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
@@ -58,11 +58,11 @@
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Creazione ISO",
|
||||
"body": "Crea una nuova ISO di installazione di Windows aggiornata direttamente sull’host Proxmox. Lo script automatizza l’intero processo UUP Dump: installazione delle dipendenze (aria2c, cabextract, wimlib-imagex, …), download parallelo dei file di aggiornamento tramite aria2 e conversione in una singola ISO avviabile. La ISO viene salvata in <code>/var/lib/vz/template/iso</code>, pronta da collegare a una VM.",
|
||||
"body": "Crea una nuova ISO di installazione di Windows aggiornata direttamente sull’host Proxmox. Lo script automatizza l’intero processo UUP Dump: installazione delle dipendenze (aria2c, cabextract, wimlib-imagex, …), download parallelo dei file di aggiornamento tramite aria2 e conversione in una singola ISO avviabile. La ISO viene salvata nello storage ISO di Proxmox rilevato (alternativa <code>/var/lib/vz/template/iso</code>), pronta da collegare a una VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Creatore di ISO UUP Dump",
|
||||
"description": "Crea una ISO di installazione di Windows aggiornata da un link condiviso di UUP Dump. Dipendenze, download e conversione sono completamente automatizzati; la ISO risultante viene salvata in /var/lib/vz/template/iso, pronta per creare una VM.",
|
||||
"description": "Crea una ISO di installazione di Windows aggiornata da un link condiviso di UUP Dump. Dipendenze, download e conversione sono completamente automatizzati; la ISO risultante viene salvata nello storage ISO di Proxmox rilevato, pronta per creare una VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Aggiornamento sistema Proxmox",
|
||||
"description": "Controllo dei repository + apt update + apt dist-upgrade, con conferma prima del riavvio. Rileva la versione principale di PVE (8 o 9), mantiene i repository configurati e chiede conferma prima di passare un host senza abbonamento al repository no-subscription, quindi esegue autoremove.",
|
||||
"description": "Controllo dei repository + apt update + apt full-upgrade, con conferma prima del riavvio. Rileva la versione principale di PVE (8 o 9), mantiene i repository configurati e chiede conferma prima di passare un host senza abbonamento al repository no-subscription, quindi esegue autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"body": "Il repository Enterprise è abilitato, ma l’host non ha un abbonamento attivo. Prima di <code>apt-get update</code>, lo script propone il passaggio a no-subscription. Se hai rifiutato, ripeti l’aggiornamento e accetta, oppure disabilita Enterprise in <em>Node → Updates → Repositories</em> e abilita no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade si blocca su \"Configuring grub-pc\"",
|
||||
"title": "full-upgrade si blocca su \"Configuring grub-pc\"",
|
||||
"body": "Se compare una richiesta interattiva di GRUB, chiede i dispositivi su cui installare il boot loader. L’opzione <code>--force-confold</code> riguarda i file di configurazione, non questa selezione. Usa <kbd>Tab</kbd> + <kbd>Space</kbd> per scegliere i dischi di avvio appropriati, poi OK. Puoi configurare la scelta in anticipo con <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Aggiornamento sistema Proxmox",
|
||||
"tailRich": "— per il <code>apt dist-upgrade</code> effettivo sull'host."
|
||||
"tailRich": "— per il <code>apt full-upgrade</code> effettivo sull'host."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"items": [
|
||||
"<strong>Backup verificati</strong> di ogni VM e CT (PBS, vzdump, snapshot ZFS — verificare anche il ripristino).",
|
||||
"<strong>Accesso console / IPMI / iKVM</strong> all’host in caso di interruzione SSH durante l’aggiornamento.",
|
||||
"L'host è già aggiornato su PVE 8.4.x (lo script applica questo).",
|
||||
"L'host sull'ultimo livello di patch di PVE 8. Lo script aggiorna prima PVE 8; non verifica una versione specifica 8.4.x.",
|
||||
"Ceph (se presente) sulla versione 19.x Squid.",
|
||||
"Almeno <strong>5 GB liberi</strong> nel filesystem root."
|
||||
"Almeno <strong>5 GB liberi</strong> nel filesystem root, come raccomanda la guida Proxmox. Lo script stesso controlla solo 1 GB in /var/cache/apt/archives."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
@@ -63,13 +63,13 @@
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Perché il terminale web è bloccato",
|
||||
"body": "Le tre modalità rilevano <code>termproxy</code> / <code>vncshell</code> nella catena dei processi padre e rifiutano l’avvio. Il terminale web dipende da <code>pveproxy</code>, servizio aggiornato durante l’operazione. Al riavvio di <code>pveproxy</code> termina la sessione e lo script al suo interno. L’host può rimanere aggiornato solo in parte.",
|
||||
"body": "Le modalità Automatic e Interactive rilevano <code>termproxy</code> / <code>vncshell</code> nella catena dei processi padre e rifiutano l’avvio, a meno che la sessione arrivi via SSH o sia impostato <code>PVE_ALLOW_WEBTERM=1</code>. Il controllo preliminare e la guida manuale non cambiano nulla e funzionano ovunque. Il terminale web dipende da <code>pveproxy</code>, servizio aggiornato durante l’operazione. Al riavvio di <code>pveproxy</code> termina la sessione e lo script al suo interno. L’host può rimanere aggiornato solo in parte.",
|
||||
"warningTitle": "Usa SSH o una console fisica / IPMI / iKVM",
|
||||
"warningBody": "SSH è la scelta più comune. Avvialo dentro <code>tmux</code> o <code>screen</code> per resistere a brevi interruzioni di rete. Se rileva una normale shell SSH, lo script mostra subito un promemoria su tmux/screen."
|
||||
"warningBody": "SSH è la scelta più comune. Avvialo dentro <code>tmux</code> o <code>screen</code> per resistere a brevi interruzioni di rete. La finestra di conferma dell’aggiornamento ti ricorda di eseguirlo dalla console o da SSH dentro tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Modalità automatica / Senza intervento",
|
||||
"intro": "Le domande su pacchetti e file di configurazione usano i valori predefiniti della tabella seguente, e un 401 dal repository Enterprise passa a no-subscription senza chiedere. La conferma dell’aggiornamento, il riepilogo dell’aggiornamento di PVE 8, le riparazioni dei controlli e la richiesta di riavvio vengono comunque mostrati.",
|
||||
"intro": "Le domande su pacchetti e file di configurazione usano i valori predefiniti della tabella seguente. La conferma dell’aggiornamento, il riepilogo dell’aggiornamento di PVE 8, le riparazioni dei controlli e la richiesta di riavvio vengono comunque mostrati.",
|
||||
"behaviourHeading": "Comportamento specifico della modalità automatica",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Impostazione",
|
||||
@@ -94,8 +94,8 @@
|
||||
]
|
||||
},
|
||||
"flowHeading": "Percorso della modalità automatica",
|
||||
"flowIntro": "Sei fasi consecutive. La fase 2 aggiorna i pacchetti PVE 8 e la fase 3 scrive la configurazione dei repository di PVE 9. Un errore interrompe il percorso senza annullare quelle modifiche; se l’aggiornamento di PVE 8 non riesce o viene annullato, i repository restano invariati. La fase 5 esegue <code>dist-upgrade</code> a PVE 9.",
|
||||
"flowDiagram": "1. CONTROLLI\nBlocca termproxy / vncshell; conferma l’aggiornamento; rifiuta PVE 9.\n\n2. PREPARARE PVE 8\nscripts/global/update-pve8.sh\nAggiorna i pacchetti PVE 8; si ferma se l’aggiornamento non riesce o viene annullato.\npve8to9 --full (può proporre riparazioni).\nControlla spazio e connettività; Ceph 19.x Squid sui nodi iperconvergenti.\n\n3. MIGRARE I REPOSITORY\nBookworm → Trixie; scrive file deb822 .sources.\nCommenta i vecchi file .list; apt-get update.\n\n4. VERIFICARE IL CANDIDATO PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nSi ferma se il candidato non è 9.x o se proxmox-ve verrebbe rimosso.\n\n5. AGGIORNARE\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSenza abbonamento: disattiva pve-enterprise.sources.\nRegistro: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VERIFICARE E RIAVVIARE\nEFI: apt install grub-efi-amd64\npve8to9 --full; esaminare risultati e richiesta di riavvio.",
|
||||
"flowIntro": "Sei fasi consecutive. La fase 2 passa i repository di PVE 8 a no-subscription (elenchi Enterprise e Ceph disabilitati, <code>/etc/apt/sources.list</code> riscritto) prima di mostrare il riepilogo dell’aggiornamento, poi aggiorna i pacchetti; la fase 3 scrive la configurazione dei repository di PVE 9. Un errore interrompe il percorso senza annullare quelle modifiche; se l’aggiornamento di PVE 8 non riesce o viene annullato, la migrazione a PVE 9 non parte, ma le modifiche ai repository di PVE 8 restano. La fase 5 esegue <code>dist-upgrade</code> a PVE 9.",
|
||||
"flowDiagram": "1. CONTROLLI\nBlocca termproxy / vncshell; conferma l’aggiornamento; rifiuta PVE 9.\n\n2. PREPARARE PVE 8\nscripts/global/update-pve8.sh\nPassa i repository di PVE 8 a no-subscription e riscrive sources.list;\naggiorna i pacchetti PVE 8; si ferma se l’aggiornamento non riesce o viene annullato.\npve8to9 --full (può proporre riparazioni).\nControlla spazio e connettività; Ceph 19.x Squid sui nodi iperconvergenti.\n\n3. MIGRARE I REPOSITORY\nBookworm → Trixie; scrive file deb822 .sources.\nCommenta i vecchi file .list; apt-get update.\n\n4. VERIFICARE IL CANDIDATO PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nSi ferma se il candidato non è 9.x o se proxmox-ve verrebbe rimosso.\n\n5. AGGIORNARE\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSenza abbonamento: disattiva pve-enterprise.sources.\nRegistro: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VERIFICARE E RIAVVIARE\nEFI: apt install grub-efi-amd64\npve8to9 --full; esaminare risultati e richiesta di riavvio.",
|
||||
"preflightHeading": "Controlli prima dell’aggiornamento",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Controllo",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Procedura di aggiornamento manuale",
|
||||
"intro": "Questo è ciò che mostra l’opzione <strong>Guida all’aggiornamento manuale</strong>: il <wikilink>wiki ufficiale Proxmox per il passaggio da 8 a 9</wikilink>, diviso in quattro fasi. Lo script <em>mostra</em> i comandi; li esegui personalmente in una shell root separata. Ogni passaggio è visibile.",
|
||||
"intro": "Questo segue ciò che mostra l’opzione di menu <strong>Guida all’aggiornamento manuale</strong>, basata sul <wikilink>wiki ufficiale Proxmox per il passaggio da 8 a 9</wikilink> e organizzata in quattro fasi. La tabella delle risposte dpkg aggiunge le avvertenze del wiki per sshd_config e chrony.conf, che il menu mostra come un semplice Y. Lo script <em>mostra</em> i comandi; li esegui personalmente in una shell root separata. Nessuna automazione: piena visibilità.",
|
||||
"rootCalloutTitle": "Tutti i comandi hanno bisogno di root",
|
||||
"rootCalloutBody": "Usa una shell root per questi comandi, incluse redirezioni e here-document. Con <code>sudo</code>, assicurati che l’intero comando venga eseguito con privilegi root.",
|
||||
"phase1Heading": "Fase 1 — Preparazione",
|
||||
@@ -230,7 +230,7 @@
|
||||
"clusterCeph": {
|
||||
"heading": "Cluster e Ceph",
|
||||
"clusterCalloutTitle": "Cluster: aggiornare i nodi uno alla volta",
|
||||
"clusterCalloutBody": "Rilevato con <code>pvecm status</code>. <strong>Non</strong> aggiornare più nodi contemporaneamente. Sposta gli ospiti, aggiorna il nodo, riavvia e verifica l’appartenenza al cluster prima di proseguire. Durante l’aggiornamento funziona la migrazione live da versioni PVE precedenti a successive; la direzione inversa generalmente non è supportata. I gruppi HA diventano automaticamente regole HA quando tutti i nodi usano PVE 9.",
|
||||
"clusterCalloutBody": "<strong>Non</strong> aggiornare più di un nodo alla volta. Sposta gli ospiti fuori dal nodo, aggiorna, riavvia e verifica l’appartenenza al cluster prima di proseguire. Durante l’aggiornamento funziona la migrazione live da versioni PVE precedenti a successive; la direzione inversa generalmente non è supportata. I gruppi HA diventano automaticamente regole HA quando tutti i nodi usano PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: aggiornare PRIMA Ceph, poi Proxmox",
|
||||
"cephCalloutBody": "Ceph deve già usare 19.x Squid prima dell’aggiornamento Proxmox. Segui l’ordine ufficiale Quincy 17 → Reef 18 → Squid 19, aggiornando pacchetti e riavviando progressivamente i demoni Ceph nell’ordine documentato. Verifica <code>ceph --version</code> prima di ogni nodo Proxmox. Procedura completa: <cephlink>wiki per il passaggio da Ceph Reef a Squid</cephlink>."
|
||||
},
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
},
|
||||
"references": {
|
||||
"heading": "Riferimenti ufficiali",
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"rows": [
|
||||
{
|
||||
"entry": "ProxMenux Scripts (TUI)",
|
||||
"path": "menu → Utilities → Host Config Backup",
|
||||
"detail": "Fluxo baseado em diálogo, SSH-friendly. O menu principal apresenta as seis opções diretamente. Utiliza <code>backup_menu</code> em <code>backup_host.sh</code>."
|
||||
"path": "menu → Host Backup & Restore → Backup host configuration",
|
||||
"detail": "Fluxo baseado em diálogo, SSH-friendly. A entrada do menu principal abre Host Config Backup / Restore; Backup host configuration leva às seis opções. Utiliza <code>backup_menu</code> em <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (UI Web)",
|
||||
@@ -83,7 +83,7 @@
|
||||
"profiles": {
|
||||
"heading": "Perfil padrão vs personalizado",
|
||||
"defaultTitle": "Perfil padrão",
|
||||
"defaultBody": "O perfil padrão é a lista com curadoria de <code>hb_default_profile_paths</code> (documentada em <em>Como funciona</em> sob <em>Categorias de caminho</em>) além de cada entrada no arquivo de extras persistente <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. O usuário confirma as opções de destino e criptografia e o backup prossegue sem mais seleção de caminho.",
|
||||
"defaultBody": "O perfil padrão é a lista curada de <code>hb_default_profile_paths</code> (documentada em <em>How it works</em>, em <em>Path categories</em>) mais cada entrada do arquivo persistente de extras <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. O usuário escolhe o destino e as opções de criptografia e o backup prossegue sem mais seleção de caminhos.",
|
||||
"customTitle": "Perfil personalizado",
|
||||
"customBody": "O perfil personalizado abre uma lista com todos os caminhos do perfil padrão (desmarcados) e todos os extras persistentes (pré-marcados, com o prefixo <code>[+]</code>). O usuário marca os caminhos para esta execução e pode pressionar <em>Adicionar caminho personalizado</em> para incluir um novo caminho absoluto. Todo caminho adicionado durante esse processo é salvo em <code>backup-extra-paths.txt</code>, para que os próximos backups o incluam automaticamente. Desmarcar um extra persistente o exclui apenas desta execução, sem removê-lo do arquivo — a remoção é feita pela ação separada <em>Gerenciar caminhos personalizados</em>, fora do fluxo de backup.",
|
||||
"customPickerAlt": "Lista de verificação de perfil personalizada que mostra os caminhos de perfil padrão (desmarcados) e extras persistentes (pré-marcados com um prefixo [+]), além de botões para adicionar um novo caminho ou confirmar a seleção.",
|
||||
@@ -124,14 +124,7 @@
|
||||
},
|
||||
"included": {
|
||||
"heading": "O que entra e o que fica fora",
|
||||
"intro": "Cada caminho no perfil resolvido (padrão + extras persistentes + seleção de modo personalizado) é copiado com <code>rsync -aAXH --numeric-ids</code>. Uma lista de exclusão compartilhada aplica-se a cada caminho, e dois diretórios carregam exclusões adicionais específicas do caminho.",
|
||||
"globalTitle": "Exclusões globais (aplicadas a cada caminho)",
|
||||
"globalItems": [
|
||||
"<code>images/</code> — dumps de imagens.",
|
||||
"<code>dump/</code> — saídas vzdump.",
|
||||
"<code>tmp/</code> — ficheiros temporários.",
|
||||
"<code>*.log</code> — ficheiros de registo."
|
||||
],
|
||||
"intro": "Cada caminho no perfil resolvido (padrão + extras persistentes + seleção de modo personalizado) é copiado com <code>rsync -aAXH --numeric-ids</code>. Não há lista de exclusão global; alguns diretórios têm exclusões específicas do caminho.",
|
||||
"rootTitle": "Exclusões <code>/root/</code>",
|
||||
"rootBody": "<code>/root/</code> faz parte do perfil padrão para incluir os scripts e a configuração do usuário no arquivo. Os subcaminhos voláteis são excluídos:",
|
||||
"rootItems": [
|
||||
@@ -160,16 +153,16 @@
|
||||
"<strong><code>/home/USER</code></strong> — não no perfil padrão. Adicione-o como um caminho personalizado quando um sistema carrega diretórios domésticos do usuário que devem sobreviver a uma restauração."
|
||||
],
|
||||
"customPathsTitle": "Como os caminhos personalizados são tratados",
|
||||
"customPathsBody": "Um caminho personalizado adicionado inline em modo Personalizado ou persistido em <code>backup-extra-paths.txt</code> passa pelo mesmo pipeline <code>rsync</code> como caminhos de perfil padrão. Exclusões globais aplicam-se. Se o caminho personalizado estiver sob <code>/root/</code> ou <code>/usr/local/share/proxmenux/</code>, as exclusões específicas do caminho acima ainda se aplicam. Cada caminho arquivado — padrão ou personalizado — é gravado em <code>metadata/paths_archived.txt</code>. Caminhos que não existem na fonte são gravados em <code>metadata/missing_paths.txt</code> sem parar o backup."
|
||||
"customPathsBody": "Um caminho personalizado adicionado inline em modo Personalizado ou persistido em <code>backup-extra-paths.txt</code> passa pelo mesmo pipeline <code>rsync</code> dos caminhos de perfil padrão. Se o caminho personalizado estiver sob <code>/root/</code> ou <code>/usr/local/share/proxmenux/</code>, as exclusões específicas do caminho acima ainda se aplicam. Cada caminho arquivado — padrão ou personalizado — é gravado em <code>metadata/selected_paths.txt</code>. Caminhos que não existem na fonte são gravados em <code>metadata/missing_paths.txt</code> sem parar o backup, e os caminhos cuja cópia falha são gravados em <code>metadata/failed_paths.txt</code>."
|
||||
},
|
||||
"archiveStructure": {
|
||||
"heading": "Estrutura do arquivo",
|
||||
"intro": "O diretório de preparação temporária produzido por cada infraestrutura segue o mesmo layout, independentemente do destino. O tarball, PBS <code>.pxar</code> ou arquivo Borg armazena esta árvore sem alterações.",
|
||||
"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"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "Resumo da confirmação",
|
||||
"body": "Antes da infra- estrutura escrever qualquer coisa para o destino, o ProxMenux mostra uma janela sumária com o nome do destino, ID de backup ou arquivo, estado de criptografia e a lista de caminhos copiados. Cancelar aqui aborta o backup de forma limpa — o diretório de preparação temporária é removido pelo gancho <code>trap</code> definido na função de infraestrutura e nenhum dado parcial atinge o destino."
|
||||
"body": "Antes de a infraestrutura escrever qualquer coisa no destino, o ProxMenux imprime no terminal um resumo com o destino, o ID de backup ou nome do arquivo, o estado de criptografia e a lista de caminhos copiados. Neste ponto não há etapa de confirmar ou cancelar; a cópia começa logo em seguida. Se o backup falhar ou for interrompido, o diretório de preparação temporária é removido pelo gancho <code>trap</code> definido na função de infraestrutura e nenhum dado parcial atinge o destino."
|
||||
},
|
||||
"writing": {
|
||||
"heading": "Gravando para o destino",
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
},
|
||||
"targetConfig": {
|
||||
"heading": "Configurando o diretório alvo",
|
||||
"intro": "O destino local é um <strong>único diretório de destino salvo de forma persistente</strong> — não uma lista. ProxMenux armazena a escolha do operador em <code>/usr/local/share/proxmenux/local-target.conf</code> e lê essa escolha em cada backup. Quando nenhum alvo foi configurado, o <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> padrão é usado (o mesmo diretório que o Proxmox usa para suas próprias saídas <code>vzdump</code>). O alvo está configurado a partir de <em>Configure destinos de backup → Destinos locais</em>:",
|
||||
"intro": "O destino local é um <strong>único diretório de destino salvo de forma persistente</strong> — não uma lista. ProxMenux armazena a escolha do operador em <code>/usr/local/share/proxmenux/local-target.conf</code> e lê essa escolha em cada backup. Quando nenhum alvo foi configurado, o <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> padrão é usado (o mesmo diretório que o Proxmox usa para suas próprias saídas <code>vzdump</code>). O alvo é configurado a partir de <em>Configure backup destinations → Local archive targets → Manage local backup target</em>:",
|
||||
"options": [
|
||||
"<strong>Use o padrão (<code>/var/lib/vz/dump</code>).</strong> O armazenamento local Proxmox. Presente em cada instalação do Proxmox; o arquivo fica ao lado das saídas vzdump e é captado automaticamente pela aba Backups do Monitor.",
|
||||
"<strong>Insira um caminho personalizado.</strong> Qualquer caminho absoluto do sistema de arquivos pode ser usado: uma montagem NFS, uma partilha SMB montada via <code>fstab</code>, um conjunto de dados dedicado ZFS, um segundo disco interno. ProxMenux valida que o caminho existe e é um diretório antes de persisti-lo.",
|
||||
"<strong>Escolha uma unidade USB.</strong> Abre o submenu USB (abaixo), que detecta dispositivos removíveis e oferece para montar ou formatar um."
|
||||
"<strong>Use um caminho personalizado.</strong> Qualquer caminho absoluto do sistema de arquivos pode ser usado: uma montagem NFS, uma partilha SMB montada via <code>fstab</code>, um conjunto de dados dedicado ZFS, um segundo disco interno. ProxMenux valida que o caminho existe e é um diretório antes de persisti-lo.",
|
||||
"<strong>Use um disco USB.</strong> Abre o submenu USB (abaixo), que detecta dispositivos removíveis e oferece para montar ou formatar um."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
"state": "desmontado",
|
||||
"shown": "Tamanho · etiqueta · [fstype] · (não montado — será montado)",
|
||||
"action": "Um sistema de ficheiros está presente mas não está montado. Na confirmação, o ProxMenux executa o <code>hb_mount_usb_partition</code>: cria o <code>/mnt/backup-LABEL</code> (ou um caminho baseado em UUID, se não houver rótulo), monta a partição e persiste o ponto de montagem como alvo local."
|
||||
"action": "Um sistema de ficheiros está presente mas não está montado. Na confirmação, o ProxMenux executa o <code>hb_mount_usb_partition</code>: cria o <code>/mnt/proxmenux-backup-LABEL</code> (UUID ou nome do dispositivo, se não houver rótulo), monta a partição e persiste o ponto de montagem como alvo local."
|
||||
},
|
||||
{
|
||||
"state": "vazia",
|
||||
@@ -63,7 +63,7 @@
|
||||
},
|
||||
"sidecar": {
|
||||
"heading": "O arquivo auxiliar JSON",
|
||||
"intro": "Cada backup local bem sucedido produz um arquivo companheiro: <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, escrito ao lado do arquivo por <code>hb_write_archive_sidecar</code>. Este pequeno arquivo JSON permite que o ProxMenux Monitor identifique o arquivo como um backup de host ProxMenux mesmo que mais tarde seja movido, renomeado ou arquivado em outro lugar.",
|
||||
"intro": "Cada backup local bem sucedido produz um arquivo companheiro: <code>hostcfg-HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, escrito ao lado do arquivo por <code>hb_write_archive_sidecar</code>. Este pequeno arquivo JSON permite que o ProxMenux Monitor identifique o arquivo como um backup de host ProxMenux mesmo que mais tarde seja movido, renomeado ou arquivado em outro lugar.",
|
||||
"contentTitle": "Conteúdo do sidecar",
|
||||
"contentBody": "O sidecar armazena a versão do esquema, se o backup veio de uma execução interativa ou de uma tarefa agendada (<code>kind</code>), o ID do trabalho para as execuções agendadas, o modo de perfil usado (<code>default</code> ou <code>custom</code>), o nome de máquina de origem, o nome de base do arquivo original, um timestamp de criação ISO-8601 e o tamanho do arquivo em bytes.",
|
||||
"whyBody": "A aba Backups do Monitor procura arquivos auxiliares <code>*.proxmenux.json</code> nos diretórios locais configurados, e não arquivos <code>*.tar.zst</code>, pois um <code>.tar.zst</code> sem arquivo auxiliar pode não ser um backup ProxMenux. A busca é rápida (os arquivos JSON são pequenos) e a associação permanece válida após renomear o arquivo, desde que o auxiliar seja renomeado de forma correspondente."
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"source": "Configuração manual do ProxMenux",
|
||||
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
|
||||
"content": "Adicionado de <em>Configure destinos de backup → destinos de PBS → Adicione PBS</em>. Pede um nome, nome de usuário (<code>root@pam</code> ou <code>user@pbs!token</code>), host ou IP, datastore e senha. A senha re-prompts na entrada vazia — uma gravação vazia persistiria silenciosamente e cada backup subsequente falharia com um erro de autenticação opaco. Este caminho é usado quando o PBS alvo não é registrado como armazenamento Proxmox."
|
||||
"content": "Adicionado de <em>Configure backup destinations → Proxmox Backup Server (PBS) destinations → + Add new PBS manually</em>. Pede um nome, nome de usuário (<code>root@pam</code> ou <code>user@pbs!token</code>), host ou IP, datastore e senha. A senha re-prompts na entrada vazia — uma gravação vazia persistiria silenciosamente e cada backup subsequente falharia com um erro de autenticação opaco. Este caminho é usado quando o PBS alvo não é registrado como armazenamento Proxmox."
|
||||
}
|
||||
],
|
||||
"menuTitle": "Menu de seleção",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"heading": "Disposição do arquivo",
|
||||
"intro": "Cada arquivo segue o mesmo layout de árvore, independentemente do destino. O subdiretório <code>metadata/</code> contém as cargas estruturadas; o subdiretório <code>rootfs/</code> contém a cópia do sistema de arquivos.",
|
||||
"treeCaption": "O diretório de preparação criado durante o backup. Todos os destinos recebem a mesma árvore no formato nativo: tar para backups locais, blocos PBS para PBS e segmentos Borg para 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/…"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "A carga útil do rootfs",
|
||||
@@ -176,7 +176,7 @@
|
||||
"stage": "3",
|
||||
"name": "Preparações pendentes",
|
||||
"reads": "rootfs/ (reboot + caminhos perigosos)",
|
||||
"action": "<code>_rs_prepare_pending_restore</code> prepara os caminhos de risco em <code>/var/lib/proxmenux/pending-restore/</code>, grava <code>plan.env</code>, <code>apply-on-boot.list</code> e <code>rs-skip-paths.txt</code> e ativa <code>proxmenux-restore-onboot.service</code> para a próxima inicialização."
|
||||
"action": "<code>_rs_prepare_pending_restore</code> prepara os caminhos de risco em <code>/var/lib/proxmenux/restore-pending/<restore_id>/</code> (vinculado como <code>current</code>), grava <code>plan.env</code>, <code>apply-on-boot.list</code> e <code>rs-skip-paths.txt</code> e ativa <code>proxmenux-restore-onboot.service</code> para a próxima inicialização."
|
||||
},
|
||||
{
|
||||
"stage": "3b",
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"heading": "Duas interfaces, um back-end",
|
||||
"intro": "Cada etapa do fluxo de trabalho de backup e restauração está disponível em dois pontos de entrada. Ambos chamam a mesma biblioteca shell, produzem arquivos idênticos e leem o mesmo registro de tarefas.",
|
||||
"cliLabel": "ProxMenux Scripts (TUI)",
|
||||
"cliDetail": "menu → Utilitários →\nBackup/restauração de host\n\nFluxo baseado em diálogo,\nSSH amigável, programável\npara uso não supervisionado.",
|
||||
"cliDetail": "menu →\nBackup/restauração de host\n\nFluxo baseado em diálogo,\nSSH amigável, programável\npara uso não supervisionado.",
|
||||
"webLabel": "ProxMenux Monitor (Web UI)",
|
||||
"webDetail": "Aba Backups na\ninterface web do Monitor.\n\nRestauração com um clique,\nacompanhamento dos logs ao vivo,\nintegração com notificações e o\nvisualizador de diferenças da reversão."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"management": {
|
||||
"heading": "Gestão de tarefas",
|
||||
"intro": "O menu de agendamento (Scripts TUI) e a aba Monitor Backups expõem as mesmas ações em qualquer trabalho.",
|
||||
"intro": "O menu de agendamento no Scripts TUI (Backup scheduler and retention) oferece Run now, Enable / Disable e Delete, além de uma lista de trabalhos com o estado da última execução. Edit e View log só estão disponíveis na aba Monitor Backups.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Executar agora",
|
||||
@@ -112,7 +112,7 @@
|
||||
"detail": "Novo modo: <code>systemctl enable/disable --now</code> o temporizador. Modo Anexar: altera o sinalizador <code>ENABLED</code> no env de trabalho — o script gancho honra-o na próxima execução PVE."
|
||||
},
|
||||
{
|
||||
"action": "Editar",
|
||||
"action": "Editar (apenas no Monitor)",
|
||||
"detail": "Abre novamente o destino, agenda, perfil e avisos de retenção e reescreve os arquivos de trabalho. Preserva a identificação do trabalho."
|
||||
},
|
||||
{
|
||||
@@ -120,7 +120,7 @@
|
||||
"detail": "Remove o env do trabalho, o arquivo de caminhos, o temporizador e o serviço systemd (modo novo) e desativa a associação ao hook (modo de anexação). Não altera os arquivos já existentes no destino."
|
||||
},
|
||||
{
|
||||
"action": "Ver registo",
|
||||
"action": "Ver registo (apenas no Monitor)",
|
||||
"detail": "Mostra em tempo real <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code> — um arquivo de log por execução. O executor também emite uma linha de status compacta para journald no serviço systemd."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
},
|
||||
"package": {
|
||||
"heading": "O que acaba no pacote",
|
||||
"intro": "Para um OVA/OVF denominado <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
"intro": "Para um OVA/OVF denominado <code>myvm-100-20260426_183015</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-20260426_183015.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-20260426_183015.mf # SHA1 manifest\nmyvm-100-20260426_183015-disk1.vmdk\nmyvm-100-20260426_183015-disk2.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-20260426_183015-ovf/\n├── myvm-100-20260426_183015.ovf\n├── myvm-100-20260426_183015.mf\n├── myvm-100-20260426_183015-disk1.vmdk\n└── myvm-100-20260426_183015-disk2.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "O que é exportado",
|
||||
@@ -90,7 +90,7 @@
|
||||
"manifest": {
|
||||
"heading": "Manifesto SHA1",
|
||||
"intro": "Cada pacote inclui um ficheiro <code>.mf</code> com os hashes SHA1 do descritor OVF e de cada VMDK:",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"code": "SHA1(myvm-100-20260426_183015.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-20260426_183015-disk1.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-20260426_183015-disk2.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "É opcional na especificação OVF e muitos programas ignoram-no, mas permite verificar se o pacote foi transferido intacto. Verifique manualmente com <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"body": "Mantenha o host saudável: ferramentas CLI, atualizações regulares e atualização de versão principal quando chegar a hora.",
|
||||
"bullets": [
|
||||
"Instalador de utilitários de sistema (25 ferramentas CLI)",
|
||||
"Atualização do Sistema Proxmox (apt + dist-upgrade)",
|
||||
"Atualização do Sistema Proxmox (apt + full-upgrade)",
|
||||
"Atualização de versão principal PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
@@ -58,11 +58,11 @@
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Criação ISO",
|
||||
"body": "Crie uma nova ISO de instalação do Windows atualizada diretamente no host Proxmox. O script automatiza todo o processo UUP Dump: instalação de dependências (aria2c, cabextract, wimlib-imagex, …), transferência paralela dos ficheiros de atualização com aria2 e conversão numa única ISO de arranque. A ISO é guardada em <code>/var/lib/vz/template/iso</code>, pronta para associar a uma VM.",
|
||||
"body": "Crie uma nova ISO de instalação do Windows atualizada diretamente no host Proxmox. O script automatiza todo o processo UUP Dump: instalação de dependências (aria2c, cabextract, wimlib-imagex, …), transferência paralela dos ficheiros de atualização com aria2 e conversão numa única ISO de arranque. A ISO é guardada no armazenamento ISO do Proxmox detetado (alternativa <code>/var/lib/vz/template/iso</code>), pronta para associar a uma VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Criador de ISO do UUP Dump",
|
||||
"description": "Crie uma ISO de instalação do Windows atualizada a partir de um link partilhado do UUP Dump. As dependências, a transferência e a conversão são totalmente automatizadas; a ISO resultante é guardada em /var/lib/vz/template/iso, pronta para criar uma VM.",
|
||||
"description": "Crie uma ISO de instalação do Windows atualizada a partir de um link partilhado do UUP Dump. As dependências, a transferência e a conversão são totalmente automatizadas; a ISO resultante é guardada no armazenamento ISO do Proxmox detetado, pronta para criar uma VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Atualização do sistema Proxmox",
|
||||
"description": "Verificação dos repositórios + apt update + apt dist-upgrade, com confirmação antes de reiniciar. Deteta a versão principal do PVE (8 ou 9), mantém os repositórios configurados e pede confirmação antes de mudar um host sem subscrição para o repositório no-subscription; depois executa autoremove.",
|
||||
"description": "Verificação dos repositórios + apt update + apt full-upgrade, com confirmação antes de reiniciar. Deteta a versão principal do PVE (8 ou 9), mantém os repositórios configurados e pede confirmação antes de mudar um host sem subscrição para o repositório no-subscription; depois executa autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"body": "O repositório Enterprise está ativo, mas o host não tem subscrição ativa. Antes de <code>apt-get update</code>, o script propõe passar a no-subscription. Se recusou, repita a atualização e aceite, ou desative Enterprise em <em>Node → Updates → Repositories</em> e ative no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade trava em \"Configuring grub-pc\"",
|
||||
"title": "full-upgrade trava em \"Configuring grub-pc\"",
|
||||
"body": "Se aparecer uma pergunta interativa do GRUB, pede os dispositivos onde instalar o gestor de arranque. A opção <code>--force-confold</code> aplica-se aos ficheiros de configuração, não à escolha dos dispositivos. Use <kbd>Tab</kbd> + <kbd>Space</kbd> para selecionar os discos de arranque adequados e depois OK. Pode configurar esta escolha antes com <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Atualização do sistema Proxmox",
|
||||
"tailRich": " — para o <code>apt dist-upgrade</code> efectivo no hospedeiro."
|
||||
"tailRich": " — para o <code>apt full-upgrade</code> efectivo no hospedeiro."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"items": [
|
||||
"<strong>Cópias de segurança verificadas</strong> de cada VM e CT (PBS, vzdump, snapshots ZFS — verifique também o restauro).",
|
||||
"<strong>Acesso por consola / IPMI / iKVM</strong> ao anfitrião caso a ligação SSH seja interrompida.",
|
||||
"O host já está atualizado em PVE 8.4.x (o script obriga isso).",
|
||||
"O host no nível de patch mais recente do PVE 8. O script atualiza primeiro o PVE 8; não verifica uma versão 8.4.x específica.",
|
||||
"Ceph (se presente) na versão 19.x Squid.",
|
||||
"Pelo menos <strong>5 GB livres</strong> no sistema de ficheiros raiz."
|
||||
"Pelo menos <strong>5 GB livres</strong> no sistema de ficheiros raiz, como recomenda o guia do Proxmox. O próprio script só verifica 1 GB em /var/cache/apt/archives."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
@@ -63,13 +63,13 @@
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Por que o terminal web está bloqueado",
|
||||
"body": "Os três modos detetam <code>termproxy</code> / <code>vncshell</code> na cadeia de processos ascendentes e recusam iniciar. O terminal web depende de <code>pveproxy</code>, um serviço atualizado durante o processo. Quando <code>pveproxy</code> reinicia, a sessão termina e o script que nela decorre também. O anfitrião pode ficar parcialmente atualizado.",
|
||||
"body": "Os modos Automático e Interativo detetam <code>termproxy</code> / <code>vncshell</code> na cadeia de processos ascendentes e recusam iniciar, a menos que a sessão venha por SSH ou que <code>PVE_ALLOW_WEBTERM=1</code> esteja definido. A verificação prévia e o guia manual não alteram nada e funcionam em qualquer lado. O terminal web depende de <code>pveproxy</code>, um serviço atualizado durante o processo. Quando <code>pveproxy</code> reinicia, a sessão termina e o script que nela decorre também. O anfitrião pode ficar parcialmente atualizado, sem boa forma de retomar.",
|
||||
"warningTitle": "Utilize SSH ou uma consola física / IPMI / iKVM",
|
||||
"warningBody": "SSH é a opção habitual. Inicie a sessão dentro de <code>tmux</code> ou <code>screen</code> para resistir a breves interrupções de rede. Se detetar uma shell SSH simples, o script apresenta primeiro um lembrete sobre tmux/screen."
|
||||
"warningBody": "SSH é a opção habitual. Inicie a sessão dentro de <code>tmux</code> ou <code>screen</code> para resistir a breves interrupções de rede. A janela de confirmação da atualização lembra-o de executá-la a partir da consola ou de SSH dentro de tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Modo automático / sem vigilância",
|
||||
"intro": "As perguntas sobre pacotes e ficheiros de configuração usam os valores predefinidos da tabela seguinte, e um 401 do repositório Enterprise muda para no-subscription sem perguntar. A confirmação da atualização, o resumo da atualização do PVE 8, as reparações das verificações e a pergunta de reinício continuam a ser apresentados.",
|
||||
"intro": "As perguntas sobre pacotes e ficheiros de configuração usam os valores predefinidos da tabela seguinte. A confirmação da atualização, o resumo da atualização do PVE 8, as reparações das verificações e a pergunta de reinício continuam a ser apresentados.",
|
||||
"behaviourHeading": "Comportamento específico do modo automático",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Configuração",
|
||||
@@ -94,8 +94,8 @@
|
||||
]
|
||||
},
|
||||
"flowHeading": "Processo do modo automático",
|
||||
"flowIntro": "Seis fases consecutivas. A fase 2 atualiza os pacotes PVE 8 e a fase 3 escreve a configuração dos repositórios do PVE 9. Uma falha interrompe o processo sem reverter essas alterações; se a atualização do PVE 8 falhar ou for cancelada, os repositórios ficam inalterados. A fase 5 executa <code>dist-upgrade</code> para PVE 9.",
|
||||
"flowDiagram": "1. VERIFICAÇÕES\nBloqueia termproxy / vncshell; confirma a atualização; rejeita PVE 9.\n\n2. PREPARAR PVE 8\nscripts/global/update-pve8.sh\nAtualiza os pacotes PVE 8; para se a atualização falhar ou for cancelada.\npve8to9 --full (pode propor reparações).\nVerifica espaço e conectividade; Ceph 19.x Squid em nós hiperconvergentes.\n\n3. MIGRAR REPOSITÓRIOS\nBookworm → Trixie; escreve ficheiros deb822 .sources.\nComenta os ficheiros .list antigos; apt-get update.\n\n4. VALIDAR O CANDIDATO PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nPara se o candidato não for 9.x ou se proxmox-ve fosse removido.\n\n5. ATUALIZAR\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSem subscrição: desativa pve-enterprise.sources.\nRegisto: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VERIFICAR E REINICIAR\nEFI: apt install grub-efi-amd64\npve8to9 --full; examine os resultados e a pergunta de reinício.",
|
||||
"flowIntro": "Seis fases consecutivas. A fase 2 muda os repositórios do PVE 8 para no-subscription (listas Enterprise e Ceph desativadas, <code>/etc/apt/sources.list</code> reescrito) antes de mostrar o resumo da atualização e depois atualiza os pacotes; a fase 3 escreve a configuração dos repositórios do PVE 9. Uma falha interrompe o processo sem reverter essas alterações; se a atualização do PVE 8 falhar ou for cancelada, a migração para o PVE 9 não começa, mas as alterações nos repositórios do PVE 8 permanecem. A fase 5 executa <code>dist-upgrade</code> para PVE 9.",
|
||||
"flowDiagram": "1. VERIFICAÇÕES\nBloqueia termproxy / vncshell; confirma a atualização; rejeita PVE 9.\n\n2. PREPARAR PVE 8\nscripts/global/update-pve8.sh\nMuda os repositórios PVE 8 para no-subscription e reescreve sources.list;\natualiza os pacotes PVE 8; para se a atualização falhar ou for cancelada.\npve8to9 --full (pode propor reparações).\nVerifica espaço e conectividade; Ceph 19.x Squid em nós hiperconvergentes.\n\n3. MIGRAR REPOSITÓRIOS\nBookworm → Trixie; escreve ficheiros deb822 .sources.\nComenta os ficheiros .list antigos; apt-get update.\n\n4. VALIDAR O CANDIDATO PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nPara se o candidato não for 9.x ou se proxmox-ve fosse removido.\n\n5. ATUALIZAR\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSem subscrição: desativa pve-enterprise.sources.\nRegisto: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. VERIFICAR E REINICIAR\nEFI: apt install grub-efi-amd64\npve8to9 --full; examine os resultados e a pergunta de reinício.",
|
||||
"preflightHeading": "Verificações antes da atualização",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Verificar",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Procedimento de actualização manual",
|
||||
"intro": "É isto que mostra a opção <strong>Guia de atualização manual</strong>: o <wikilink>wiki oficial Proxmox para passar de 8 para 9</wikilink>, organizado em quatro fases. O script <em>mostra</em> os comandos; executa-os pessoalmente numa shell root separada. Cada passo é visível.",
|
||||
"intro": "Isto segue o que mostra a opção de menu <strong>Guia de atualização manual</strong>, com base no <wikilink>wiki oficial Proxmox para passar de 8 para 9</wikilink> e organizado em quatro fases. A tabela de respostas do dpkg acrescenta as ressalvas do wiki para sshd_config e chrony.conf, que o menu mostra como um simples Y. O script <em>mostra</em> os comandos; executa-os pessoalmente numa shell root separada. Sem automação, cada passo é visível.",
|
||||
"rootCalloutTitle": "Todos os comandos precisam de root",
|
||||
"rootCalloutBody": "Utilize uma shell root para estes comandos, incluindo redirecionamentos e documentos here-document. Com <code>sudo</code>, garanta que todo o comando é executado com privilégios root.",
|
||||
"phase1Heading": "Fase 1 — Preparação",
|
||||
@@ -230,7 +230,7 @@
|
||||
"clusterCeph": {
|
||||
"heading": "Cluster e Ceph",
|
||||
"clusterCalloutTitle": "Cluster: atualizar um nó de cada vez",
|
||||
"clusterCalloutBody": "Detetado por <code>pvecm status</code>. <strong>Não</strong> atualize vários nós ao mesmo tempo. Mova os convidados, atualize o nó, reinicie e confirme a participação no cluster antes de continuar. Durante a atualização, funciona a migração em direto de versões PVE anteriores para posteriores; o sentido inverso geralmente não é suportado. Os grupos HA são convertidos automaticamente em regras HA quando todos os nós utilizam PVE 9.",
|
||||
"clusterCalloutBody": "<strong>Não</strong> atualize vários nós ao mesmo tempo. Mova os convidados, atualize o nó, reinicie e confirme a participação no cluster antes de continuar. Durante a atualização, funciona a migração em direto de versões PVE anteriores para posteriores; o sentido inverso geralmente não é suportado. Os grupos HA são convertidos automaticamente em regras HA quando todos os nós utilizam PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: atualizar Ceph PRIMEIRO, depois Proxmox",
|
||||
"cephCalloutBody": "O Ceph já deve estar em 19.x Squid antes de atualizar o Proxmox. Siga a sequência oficial Quincy 17 → Reef 18 → Squid 19, atualizando pacotes e reiniciando os daemons Ceph de forma gradual pela ordem documentada. Confirme <code>ceph --version</code> antes de cada nó Proxmox. Procedimento completo: <cephlink>wiki de atualização de Ceph Reef para Squid</cephlink>."
|
||||
},
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
"files": {
|
||||
"heading": "Ficheiros envolvidos",
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
},
|
||||
"references": {
|
||||
"heading": "Referências oficiais",
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"rows": [
|
||||
{
|
||||
"entry": "ProxMenux Scripts (TUI)",
|
||||
"path": "menu → Utilities → Host Config Backup",
|
||||
"detail": "Dialógový tok, SSH-priateľský. Hlavné menu predstavuje šesť možností priamo. Používa <code>backup_menu</code> v <code>backup_host.sh</code>."
|
||||
"path": "menu → Host Backup & Restore → Backup host configuration",
|
||||
"detail": "Dialógový tok, SSH-priateľský. Položka hlavného menu otvára Host Config Backup / Restore; Backup host configuration vedie k šiestim možnostiam. Používa <code>backup_menu</code> v <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (webové rozhranie)",
|
||||
@@ -83,7 +83,7 @@
|
||||
"profiles": {
|
||||
"heading": "Štandardný vs vlastný profil",
|
||||
"defaultTitle": "Predvolený profil",
|
||||
"defaultBody": "Predvolený profil je pripravený zoznam z <code>hb_default_profile_paths</code> (opísaný v časti <em>Ako to funguje</em> pod nadpisom <em>Kategórie ciest</em>) spolu so všetkými položkami zo súboru trvalých doplnkov <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. Používateľ potvrdí cieľ a možnosti šifrovania a záloha pokračuje bez ďalšieho výberu ciest.",
|
||||
"defaultBody": "Predvolený profil je pripravený zoznam z <code>hb_default_profile_paths</code> (opísaný v časti <em>Ako to funguje</em> pod nadpisom <em>Kategórie ciest</em>) spolu so všetkými položkami zo súboru trvalých doplnkov <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. Používateľ vyberie cieľ a možnosti šifrovania a záloha pokračuje bez ďalšieho výberu ciest.",
|
||||
"customTitle": "Vlastný profil",
|
||||
"customBody": "Vlastný profil otvorí zoznam so všetkými cestami predvoleného profilu (nezaškrtnuté) a všetkými trvalými doplnkami (vopred zaškrtnuté, s predponou <code>[+]</code>). Používateľ zaškrtne cesty pre toto spustenie a cez <em>Pridať vlastnú cestu</em> môže doplniť novú absolútnu cestu. Takto pridaná cesta sa uloží do <code>backup-extra-paths.txt</code>, aby ju budúce zálohy zahrnuli automaticky bez opätovného pridávania. Odškrtnutie trvalého doplnku ho vynechá len pri tomto spustení, ale neodstráni ho zo súboru — na odstránenie slúži samostatná akcia <em>Spravovať vlastné cesty</em> mimo postupu zálohovania.",
|
||||
"customPickerAlt": "Vlastný kontrolný zoznam profilu zobrazujúci predvolené cesty profilu (nezaškrtnuté) a trvalé doplnky (vopred zaškrtnuté s predponou [+]) plus tlačidlá na pridanie novej cesty alebo potvrdenie výberu.",
|
||||
@@ -124,14 +124,7 @@
|
||||
},
|
||||
"included": {
|
||||
"heading": "Čo ide dnu a čo zostane vonku",
|
||||
"intro": "Každá cesta v určenom profile (predvolené + trvalé doplnky + výber vo vlastnom režime) je skopírovaná s <code>rsync -aAXH --numeric-ids</code>. Spoločný zoznam vylúčení sa vzťahuje na každú cestu a dva adresáre majú dodatočné výnimky špecifické pre jednotlivé trasy.",
|
||||
"globalTitle": "Globálne vylúčenia (uplatnené na každú cestu)",
|
||||
"globalItems": [
|
||||
"<code>images/</code> — výpisy obrazov.",
|
||||
"<code>dump/</code> — výstupy vzdump.",
|
||||
"<code>tmp/</code> - dočasné súbory.",
|
||||
"<code>*.log</code> — súbory záznamov."
|
||||
],
|
||||
"intro": "Každá cesta v určenom profile (predvolené + trvalé doplnky + výber vo vlastnom režime) je skopírovaná s <code>rsync -aAXH --numeric-ids</code>. Neexistuje globálny zoznam vylúčení; niekoľko adresárov má vylúčenia špecifické pre danú cestu.",
|
||||
"rootTitle": "Výnimky <code>/root/</code>",
|
||||
"rootBody": "<code>/root/</code> je súčasťou predvoleného profilu, aby sa do archívu zahrnuli používateľské skripty a konfigurácia. Dočasné podcesty sa vynechajú:",
|
||||
"rootItems": [
|
||||
@@ -160,16 +153,16 @@
|
||||
"<strong><code>/home/USER</code></strong> Nie v štandardnom profile. Pridať ako vlastnú cestu, keď systém nesie užívateľské domovské adresáre, ktoré musia prežiť obnovenie."
|
||||
],
|
||||
"customPathsTitle": "Ako sa spracúvajú vlastné cesty",
|
||||
"customPathsBody": "Vlastná cesta pridaná priamo vo vlastnom režime alebo uložená v <code>backup-extra-paths.txt</code> prechádza rovnakým postupom <code>rsync</code> ako cesty predvoleného profilu. Platia globálne vylúčenia. Ak sa vlastná cesta nachádza pod <code>/root/</code> alebo <code>/usr/local/share/proxmenux/</code>, naďalej platia aj uvedené vylúčenia pre konkrétnu cestu. Každá archivovaná cesta — predvolená aj vlastná — sa zaznamená v <code>metadata/paths_archived.txt</code>. Cesty, ktoré v zdroji neexistujú, sa zapíšu do <code>metadata/missing_paths.txt</code> bez zastavenia zálohy."
|
||||
"customPathsBody": "Vlastná cesta pridaná priamo vo vlastnom režime alebo uložená v <code>backup-extra-paths.txt</code> prechádza rovnakým postupom <code>rsync</code> ako cesty predvoleného profilu. Ak sa vlastná cesta nachádza pod <code>/root/</code> alebo <code>/usr/local/share/proxmenux/</code>, naďalej platia aj uvedené vylúčenia pre konkrétnu cestu. Každá archivovaná cesta — predvolená aj vlastná — sa zaznamená v <code>metadata/selected_paths.txt</code>. Cesty, ktoré v zdroji neexistujú, sa zapíšu do <code>metadata/missing_paths.txt</code> bez zastavenia zálohy a cesty, ktoré sa nepodarilo skopírovať, do <code>metadata/failed_paths.txt</code>."
|
||||
},
|
||||
"archiveStructure": {
|
||||
"heading": "Štruktúra archívu",
|
||||
"intro": "Dočasný prípravný adresár vytvorený každým backendom má rovnaké usporiadanie bez ohľadu na miesto určenia. Archív tarball, PBS <code>.pxar</code> alebo Borg uchováva tento strom doslovne.",
|
||||
"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"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "Zhrnutie potvrdenia",
|
||||
"body": "Pred zápisom akýchkoľvek údajov do cieľa ProxMenux zobrazí súhrnný dialóg s cieľom, ID zálohy alebo názvom archívu, stavom šifrovania a zoznamom kopírovaných ciest. Zrušenie v tomto bode zálohovanie bezpečne ukončí — obslužný mechanizmus <code>trap</code> nastavený vo funkcii backendu odstráni dočasný prípravný adresár a do cieľa sa nedostanú žiadne čiastočné údaje."
|
||||
"body": "Pred zápisom akýchkoľvek údajov do cieľa ProxMenux vypíše v termináli súhrn s cieľom, ID zálohy alebo názvom archívu, stavom šifrovania a zoznamom kopírovaných ciest. V tomto bode nie je krok potvrdenia ani zrušenia; kopírovanie sa začne hneď potom. Ak záloha zlyhá alebo sa preruší, obslužný mechanizmus <code>trap</code> nastavený vo funkcii backendu odstráni dočasný prípravný adresár a do cieľa sa nedostanú žiadne čiastočné údaje."
|
||||
},
|
||||
"writing": {
|
||||
"heading": "Písanie na miesto určenia",
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
},
|
||||
"targetConfig": {
|
||||
"heading": "Nastavenie cieľového adresára",
|
||||
"intro": "Miestny cieľ je <strong>jeden trvalý cieľový adresár</strong> — nie zoznam. ProxMenux ukladá voľbu operátora na <code>/usr/local/share/proxmenux/local-target.conf</code> a číta ju pri každej zálohe. Ak nie je nakonfigurovaný žiadny cieľ, použije sa predvolený <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> (rovnaký adresár, ktorý Proxmox používa pre svoje vlastné výstupy <code>vzdump</code>). Cieľ sa konfiguruje z <em>Konfigurovať ciele zálohovania → Lokálne ciele</em>:",
|
||||
"intro": "Miestny cieľ je <strong>jeden trvalý cieľový adresár</strong> — nie zoznam. ProxMenux ukladá voľbu operátora na <code>/usr/local/share/proxmenux/local-target.conf</code> a číta ju pri každej zálohe. Ak nie je nakonfigurovaný žiadny cieľ, použije sa predvolený <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> (rovnaký adresár, ktorý Proxmox používa pre svoje vlastné výstupy <code>vzdump</code>). Cieľ sa konfiguruje z <em>Konfigurovať ciele zálohovania → Lokálne archívne ciele → Spravovať lokálny cieľ zálohy</em>:",
|
||||
"options": [
|
||||
"<strong>Použiť predvolené (<code>/var/lib/vz/dump</code>).</strong> Lokálne úložisko Proxmox. Prítomný pri každej inštalácii Proxmox; archív sa nachádza vedľa výstupov vzdump a automaticky ho preberá karta Zálohy monitora.",
|
||||
"<strong>Zadajte vlastnú cestu.</strong> Môžete použiť akúkoľvek absolútnu cestu súborového systému: pripojenie NFS, zdieľanie SMB pripojené cez <code>fstab</code>, vyhradený súbor údajov ZFS, druhý interný disk. ProxMenux overí, že cesta existuje a je adresárom, pred jej uložením.",
|
||||
"<strong>Vyberte jednotku USB.</strong> Otvorí podponuku USB (nižšie), ktorá detekuje vymeniteľné zariadenia a ponúka pripojenie alebo formátovanie."
|
||||
"<strong>Použite vlastnú cestu.</strong> Môžete použiť akúkoľvek absolútnu cestu súborového systému: pripojenie NFS, zdieľanie SMB pripojené cez <code>fstab</code>, vyhradený súbor údajov ZFS, druhý interný disk. ProxMenux overí, že cesta existuje a je adresárom, pred jej uložením.",
|
||||
"<strong>Použite disk USB.</strong> Otvorí podponuku USB (nižšie), ktorá detekuje vymeniteľné zariadenia a ponúka pripojenie alebo formátovanie."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
"state": "odmontované",
|
||||
"shown": "Veľkosť · menovka · [fstype] · (nepripojený — bude pripojený)",
|
||||
"action": "Súborový systém je prítomný, ale nie je namontovaný. Po potvrdení, ProxMenux spustí <code>hb_mount_usb_partition</code>: vytvorí <code>/mnt/backup-LABEL</code> (alebo cestu založenú na UUID, ak nie je označenie), pripojí partíciu a uloží bod pripojenia ako miestny cieľ."
|
||||
"action": "Súborový systém je prítomný, ale nie je namontovaný. Po potvrdení, ProxMenux spustí <code>hb_mount_usb_partition</code>: vytvorí <code>/mnt/proxmenux-backup-LABEL</code> (UUID alebo názov zariadenia, ak nie je označenie), pripojí partíciu a uloží bod pripojenia ako miestny cieľ."
|
||||
},
|
||||
{
|
||||
"state": "prázdny",
|
||||
@@ -63,7 +63,7 @@
|
||||
},
|
||||
"sidecar": {
|
||||
"heading": "Sprievodný súbor JSON",
|
||||
"intro": "Každá úspešná lokálna záloha produkuje sesterský súbor: <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, zapísaný vedľa archívu funkciou <code>hb_write_archive_sidecar</code>. Tento malý súbor JSON umožňuje ProxMenux Monitor identifikovať archív ako zálohu ProxMenux hostiteľa, aj keď je neskôr presunutý, premenovaný alebo archivovaný inde.",
|
||||
"intro": "Každá úspešná lokálna záloha produkuje sesterský súbor: <code>hostcfg-HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, zapísaný vedľa archívu funkciou <code>hb_write_archive_sidecar</code>. Tento malý súbor JSON umožňuje ProxMenux Monitor identifikovať archív ako zálohu ProxMenux hostiteľa, aj keď je neskôr presunutý, premenovaný alebo archivovaný inde.",
|
||||
"contentTitle": "Obsah sprievodného súboru",
|
||||
"contentBody": "Sprievodný súbor obsahuje verziu schémy, údaj o tom, či záloha vznikla interaktívne alebo plánovanou úlohou (<code>kind</code>), ID úlohy pri plánovaných spusteniach, použitý režim profilu (<code>default</code> alebo <code>custom</code>), názov zdrojového hostiteľa, pôvodný názov súboru archívu, časovú pečiatku vytvorenia ISO-8601 a veľkosť archívu v bajtoch.",
|
||||
"whyBody": "Karta Backups v Monitore prehľadáva nakonfigurované lokálne adresáre a hľadá sprievodné súbory <code>*.proxmenux.json</code>, nie súbory <code>*.tar.zst</code>, pretože <code>.tar.zst</code> bez sprievodného súboru nemusí byť zálohou ProxMenux. Hľadanie je rýchle (súbory JSON sú malé) a párovanie zostane platné aj po premenovaní archívu, ak sa zodpovedajúco premenuje aj sprievodný súbor."
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"source": "ProxMenux manuálna konfigurácia",
|
||||
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
|
||||
"content": "Pridáva sa cez <em>Nastaviť ciele záloh → Ciele PBS → Pridať PBS</em>. Zadáva sa názov, používateľské meno (<code>root@pam</code> alebo <code>user@pbs!token</code>), hostiteľ alebo IP adresa, dátové úložisko a heslo. Pri prázdnom hesle sa výzva zopakuje: inak by sa prázdna hodnota potichu uložila a každá ďalšia záloha by zlyhala s nejasnou chybou overenia. Táto možnosť slúži pre PBS, ktorý nie je zaregistrovaný ako úložisko Proxmoxu."
|
||||
"content": "Pridáva sa cez <em>Nastaviť ciele záloh → Ciele Proxmox Backup Server (PBS) → + Pridať nový PBS ručne</em>. Zadáva sa názov, používateľské meno (<code>root@pam</code> alebo <code>user@pbs!token</code>), hostiteľ alebo IP adresa, dátové úložisko a heslo. Pri prázdnom hesle sa výzva zopakuje: inak by sa prázdna hodnota potichu uložila a každá ďalšia záloha by zlyhala s nejasnou chybou overenia. Táto možnosť slúži pre PBS, ktorý nie je zaregistrovaný ako úložisko Proxmoxu."
|
||||
}
|
||||
],
|
||||
"menuTitle": "Výberové menu",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"heading": "Rozloženie archívu",
|
||||
"intro": "Každý archív sleduje rovnaké rozloženie stromov bez ohľadu na cieľ. Podadresár <code>metadata/</code> má štruktúrované užitočné zaťaženie; podadresár <code>rootfs/</code> má kópiu súborového systému.",
|
||||
"treeCaption": "Prípravný adresár vytvorený pri zálohe. Každý cieľ dostane rovnaký strom vo svojom formáte: tar pri lokálnom cieli, bloky PBS pri PBS a segmenty Borg pri Borgu.",
|
||||
"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/…"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "Časť rootfs",
|
||||
@@ -176,7 +176,7 @@
|
||||
"stage": "3",
|
||||
"name": "Príprava odložených zmien",
|
||||
"reads": "rootfs/ (reboot + nebezpečné cesty)",
|
||||
"action": "<code>_rs_prepare_pending_restore</code> pripraví rizikové cesty v <code>/var/lib/proxmenux/pending-restore/</code>, zapíše <code>plan.env</code>, <code>apply-on-boot.list</code> a <code>rs-skip-paths.txt</code> a povolí spustenie <code>proxmenux-restore-onboot.service</code> pri ďalšom štarte."
|
||||
"action": "<code>_rs_prepare_pending_restore</code> pripraví rizikové cesty v <code>/var/lib/proxmenux/restore-pending/<restore_id>/</code> (prepojené ako <code>current</code>), zapíše <code>plan.env</code>, <code>apply-on-boot.list</code> a <code>rs-skip-paths.txt</code> a povolí spustenie <code>proxmenux-restore-onboot.service</code> pri ďalšom štarte."
|
||||
},
|
||||
{
|
||||
"stage": "3b",
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"heading": "Dve rozhrania, jeden backend",
|
||||
"intro": "Každý krok pracovného postupu zálohovania a obnovy je dostupný z dvoch vstupných bodov. Oba volajú rovnakú knižnicu shellu, vytvárajú identické archívy a čítajú rovnaký register úloh.",
|
||||
"cliLabel": "ProxMenux Scripts (TUI)",
|
||||
"cliDetail": "menu → Nástroje →\nZálohovanie / obnovenie hostiteľa\n\nDialógový tok,\nSSH priateľský, skriptovateľný\nna použitie bez dozoru.",
|
||||
"cliDetail": "menu →\nHost Backup & Restore\n\nDialógový tok,\nSSH priateľský, skriptovateľný\nna použitie bez dozoru.",
|
||||
"webLabel": "ProxMenux Monitor (Web UI)",
|
||||
"webDetail": "Karta Backups vo\nwebovom rozhraní Monitor.\n\nObnova jedným kliknutím,\npriebežný výpis záznamov,\nprepojenie s upozorneniami\na zobrazením rozdielov rollbacku."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"management": {
|
||||
"heading": "Správa úloh",
|
||||
"intro": "Menu rozvrhu (Scripts TUI) a záložka Monitor Backup odhaľujú rovnaké akcie na akejkoľvek práci.",
|
||||
"intro": "Menu plánovača v Scripts TUI (Backup scheduler and retention) ponúka Run now, Enable / Disable a Delete, plus zoznam úloh so stavom posledného spustenia. Edit a View log sú dostupné iba na záložke Monitor Backups.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Spustiť teraz",
|
||||
@@ -112,7 +112,7 @@
|
||||
"detail": "Nový režim: časovač sa ovláda cez <code>systemctl enable/disable --now</code>. Režim pripojenia: zmení príznak <code>ENABLED</code> v súbore env úlohy — hook ho zohľadní pri ďalšom spustení PVE."
|
||||
},
|
||||
{
|
||||
"action": "Upraviť",
|
||||
"action": "Upraviť (iba Monitor)",
|
||||
"detail": "Znovu otvorí destináciu, rozvrh, profil a retenčný postup a prepíše pracovné súbory. Zachováva ID práce."
|
||||
},
|
||||
{
|
||||
@@ -120,7 +120,7 @@
|
||||
"detail": "Odstráni súbor env úlohy, súbor ciest, časovač a službu systemd (nový režim) a vypne pripojenie k hooku (režim pripojenia). Existujúce archívy v cieli nemení."
|
||||
},
|
||||
{
|
||||
"action": "Zobraziť záznam",
|
||||
"action": "Zobraziť záznam (iba Monitor)",
|
||||
"detail": "Priebežne zobrazuje <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code> — jeden protokolový súbor na beh. Spúšťací skript tiež vydáva kompaktný stavový riadok na journald pod systemd služby."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
},
|
||||
"package": {
|
||||
"heading": "Čo balík obsahuje",
|
||||
"intro": "Pre OVA / OVF s názvom <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
"intro": "Pre OVA / OVF s názvom <code>myvm-100-20260426_183015</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-20260426_183015.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-20260426_183015.mf # SHA1 manifest\nmyvm-100-20260426_183015-disk1.vmdk\nmyvm-100-20260426_183015-disk2.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-20260426_183015-ovf/\n├── myvm-100-20260426_183015.ovf\n├── myvm-100-20260426_183015.mf\n├── myvm-100-20260426_183015-disk1.vmdk\n└── myvm-100-20260426_183015-disk2.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "Čo sa exportuje",
|
||||
@@ -90,7 +90,7 @@
|
||||
"manifest": {
|
||||
"heading": "Manifest SHA1",
|
||||
"intro": "Každý balík obsahuje súbor <code>.mf</code> s hashmi SHA1 deskriptora OVF a každého súboru VMDK:",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"code": "SHA1(myvm-100-20260426_183015.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-20260426_183015-disk1.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-20260426_183015-disk2.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "V špecifikácii OVF je manifest voliteľný a mnohé programy ho ignorujú. Pomáha však overiť, či sa balík preniesol neporušený. Overte ho ručne pomocou <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"body": "Udržiavajte hostiteľa v dobrom stave pomocou nástrojov CLI, pravidelných aktualizácií a prechodu na novú hlavnú verziu, keď príde čas.",
|
||||
"bullets": [
|
||||
"Inštalátor systémových nástrojov (25 nástrojov CLI)",
|
||||
"Aktualizácia systému Proxmox (apt + dist-upgrade)",
|
||||
"Aktualizácia systému Proxmox (apt + full-upgrade)",
|
||||
"Prechod z PVE 8 na PVE 9"
|
||||
]
|
||||
},
|
||||
@@ -58,11 +58,11 @@
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Tvorba ISO",
|
||||
"body": "Vytvorte nový, aktuálny inštalačný obraz ISO systému Windows priamo na hostiteľovi Proxmox. Skript automatizuje celý postup UUP Dump: inštaláciu závislostí (aria2c, cabextract, wimlib-imagex, …), paralelné sťahovanie aktualizačných súborov cez aria2 a konverziu na jeden zavádzací obraz ISO. Ten sa uloží do <code>/var/lib/vz/template/iso</code> a je pripravený na pripojenie k VM.",
|
||||
"body": "Vytvorte nový, aktuálny inštalačný obraz ISO systému Windows priamo na hostiteľovi Proxmox. Skript automatizuje celý postup UUP Dump: inštaláciu závislostí (aria2c, cabextract, wimlib-imagex, …), paralelné sťahovanie aktualizačných súborov cez aria2 a konverziu na jeden zavádzací obraz ISO. Ten sa uloží do zisteného úložiska ISO Proxmoxu (záložne <code>/var/lib/vz/template/iso</code>) a je pripravený na pripojenie k VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Tvorba ISO cez UUP Dump",
|
||||
"description": "Vytvorte aktuálny inštalačný obraz ISO systému Windows zo zdieľaného odkazu UUP Dump. Závislosti, sťahovanie aj konverzia sú plne automatizované. Výsledný obraz ISO sa uloží do /var/lib/vz/template/iso a je pripravený na vytvorenie VM.",
|
||||
"description": "Vytvorte aktuálny inštalačný obraz ISO systému Windows zo zdieľaného odkazu UUP Dump. Závislosti, sťahovanie aj konverzia sú plne automatizované. Výsledný obraz ISO sa uloží do zisteného úložiska ISO Proxmoxu a je pripravený na vytvorenie VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Aktualizácia systému Proxmox",
|
||||
"description": "Kontrola repozitárov + apt update + apt dist-upgrade s potvrdením pred reštartom. Rozpozná hlavnú verziu PVE (8 alebo 9), zachová nakonfigurované repozitáre a pred prepnutím hostiteľa bez predplatného na repozitár no-subscription požiada o potvrdenie. Potom spustí autoremove.",
|
||||
"description": "Kontrola repozitárov + apt update + apt full-upgrade s potvrdením pred reštartom. Rozpozná hlavnú verziu PVE (8 alebo 9), zachová nakonfigurované repozitáre a pred prepnutím hostiteľa bez predplatného na repozitár no-subscription požiada o potvrdenie. Potom spustí autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"body": "Repozitár Enterprise je zapnutý, ale hostiteľ nemá aktívne predplatné. Pred <code>apt-get update</code> skript ponúkne prechod na no-subscription. Ak ste ho odmietli, spustite aktualizáciu znova a potvrďte ho, alebo vypnite Enterprise v <em>Node → Updates → Repositories</em> a zapnite no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade sa zastaví pri \"Configuring grub-pc\"",
|
||||
"title": "full-upgrade sa zastaví pri \"Configuring grub-pc\"",
|
||||
"body": "Ak sa zobrazuje interaktívna otázka GRUB, žiada zariadenia na inštaláciu zavádzača. Voľba <code>--force-confold</code> platí pre konfiguračné súbory, nie pre tento výber zariadení. Pomocou <kbd>Tab</kbd> + <kbd>Space</kbd> vyberte príslušné zavádzacie disky a potom OK. Výber možno nastaviť vopred pomocou <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Aktualizácia systému Proxmox",
|
||||
"tailRich": " — pre samotný <code>apt dist-upgrade</code> na hostiteľovi."
|
||||
"tailRich": " — pre samotný <code>apt full-upgrade</code> na hostiteľovi."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"items": [
|
||||
"<strong>Overené zálohy</strong> všetkých VM a CT (PBS, vzdump, snímky ZFS — overte aj obnovu).",
|
||||
"<strong>Prístup cez konzolu / IPMI / iKVM</strong> k hostiteľovi pre prípad výpadku SSH.",
|
||||
"Hostiteľ už používa aktuálnu PVE 8.4.x (skript to vynucuje).",
|
||||
"Hostiteľ s najnovšou úrovňou záplat PVE 8. Skript najprv aktualizuje PVE 8; nekontroluje konkrétnu verziu 8.4.x.",
|
||||
"Ceph (ak je k dispozícii) vo verzii 19.x Squid.",
|
||||
"Aspoň <strong>5 GB voľného miesta</strong> v koreňovom súborovom systéme."
|
||||
"Aspoň <strong>5 GB voľného miesta</strong> v koreňovom súborovom systéme, ako odporúča sprievodca Proxmoxu. Samotný skript kontroluje iba 1 GB v /var/cache/apt/archives."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
@@ -63,13 +63,13 @@
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Prečo je webový terminál zablokovaný?",
|
||||
"body": "Všetky tri režimy zistia <code>termproxy</code> / <code>vncshell</code> v reťazci rodičovských procesov a odmietnu spustenie. Webový terminál závisí od služby <code>pveproxy</code>, ktorá sa počas aktualizácie mení. Po reštarte <code>pveproxy</code> sa ukončí terminál aj skript v ňom. Hostiteľ môže zostať aktualizovaný iba čiastočne.",
|
||||
"body": "Automatický a interaktívny režim zistia <code>termproxy</code> / <code>vncshell</code> v reťazci rodičovských procesov a odmietnu spustenie, ak relácia nepochádza cez SSH alebo nie je nastavené <code>PVE_ALLOW_WEBTERM=1</code>. Predbežná kontrola a ručný návod nič nemenia a bežia kdekoľvek. Webový terminál závisí od služby <code>pveproxy</code>, ktorá sa počas aktualizácie mení. Po reštarte <code>pveproxy</code> sa ukončí terminál aj skript v ňom. Hostiteľ môže zostať aktualizovaný iba čiastočne a niet dobrého spôsobu, ako pokračovať.",
|
||||
"warningTitle": "Použite SSH alebo fyzickú konzolu / IPMI / iKVM",
|
||||
"warningBody": "Najčastejšou voľbou je SSH. Spustite ho v <code>tmux</code> alebo <code>screen</code>, aby krátky výpadok siete neprerušil aktualizáciu. Pri bežnom SSH shelli skript najprv zobrazí pripomienku tmux/screen."
|
||||
"warningBody": "Najčastejšou voľbou je SSH. Spustite ho v <code>tmux</code> alebo <code>screen</code>, aby krátky výpadok siete neprerušil aktualizáciu. Dialóg potvrdenia aktualizácie pripomína, že ju treba spustiť z konzoly alebo cez SSH v tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Automatický režim / Bezobslužne",
|
||||
"intro": "Otázky k balíkom a konfiguračným súborom používajú predvolené hodnoty z nasledujúcej tabuľky a odpoveď 401 z repozitára Enterprise prepne na no-subscription bez opýtania. Potvrdenie aktualizácie, súhrn aktualizácie PVE 8, opravy z predbežnej kontroly a otázka na reštart sa naďalej zobrazujú.",
|
||||
"intro": "Otázky k balíkom a konfiguračným súborom používajú predvolené hodnoty z nasledujúcej tabuľky. Potvrdenie aktualizácie, súhrn aktualizácie PVE 8, opravy z predbežnej kontroly a otázka na reštart sa naďalej zobrazujú.",
|
||||
"behaviourHeading": "Správanie automatického režimu",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Nastavenie",
|
||||
@@ -94,8 +94,8 @@
|
||||
]
|
||||
},
|
||||
"flowHeading": "Postup automatického režimu",
|
||||
"flowIntro": "Šesť po sebe idúcich fáz. Fáza 2 aktualizuje balíky PVE 8 a fáza 3 zapíše konfiguráciu repozitárov PVE 9. Chyba postup zastaví, tieto zmeny však nevráti; ak aktualizácia PVE 8 zlyhá alebo sa zruší, repozitáre zostanú nezmenené. Fáza 5 vykoná <code>dist-upgrade</code> na PVE 9.",
|
||||
"flowDiagram": "1. KONTROLY\nBlokuje termproxy / vncshell; potvrdí aktualizáciu; odmietne PVE 9.\n\n2. PRÍPRAVA PVE 8\nscripts/global/update-pve8.sh\nAktualizuje balíky PVE 8; zastaví sa, ak aktualizácia zlyhá alebo sa zruší.\npve8to9 --full (môže ponúknuť opravy).\nOverí miesto a pripojenie; Ceph 19.x Squid na hyperkonvergovaných uzloch.\n\n3. MIGRÁCIA REPOZITÁROV\nBookworm → Trixie; zapíše súbory deb822 .sources.\nZakomentuje staré súbory .list; apt-get update.\n\n4. OVERENIE KANDIDÁTA PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nZastaví sa, ak kandidát nie je 9.x alebo by sa odstránil proxmox-ve.\n\n5. AKTUALIZÁCIA\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nBez predplatného: vypne pve-enterprise.sources.\nProtokol: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. OVERENIE A REŠTART\nEFI: apt install grub-efi-amd64\npve8to9 --full; skontrolujte výsledok a otázku na reštart.",
|
||||
"flowIntro": "Šesť po sebe idúcich fáz. Fáza 2 prepne repozitáre PVE 8 na no-subscription (zoznamy Enterprise a Ceph vypnuté, <code>/etc/apt/sources.list</code> prepísaný) ešte pred zobrazením súhrnu aktualizácie a potom aktualizuje balíky; fáza 3 zapíše konfiguráciu repozitárov PVE 9. Chyba postup zastaví, tieto zmeny však nevráti; ak aktualizácia PVE 8 zlyhá alebo sa zruší, migrácia na PVE 9 sa nezačne, ale zmeny repozitárov PVE 8 zostanú. Fáza 5 vykoná <code>dist-upgrade</code> na PVE 9.",
|
||||
"flowDiagram": "1. KONTROLY\nBlokuje termproxy / vncshell; potvrdí aktualizáciu; odmietne PVE 9.\n\n2. PRÍPRAVA PVE 8\nscripts/global/update-pve8.sh\nPrepne repozitáre PVE 8 na no-subscription a prepíše sources.list;\naktualizuje balíky PVE 8; zastaví sa, ak aktualizácia zlyhá alebo sa zruší.\npve8to9 --full (môže ponúknuť opravy).\nOverí miesto a pripojenie; Ceph 19.x Squid na hyperkonvergovaných uzloch.\n\n3. MIGRÁCIA REPOZITÁROV\nBookworm → Trixie; zapíše súbory deb822 .sources.\nZakomentuje staré súbory .list; apt-get update.\n\n4. OVERENIE KANDIDÁTA PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nZastaví sa, ak kandidát nie je 9.x alebo by sa odstránil proxmox-ve.\n\n5. AKTUALIZÁCIA\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nBez predplatného: vypne pve-enterprise.sources.\nProtokol: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. OVERENIE A REŠTART\nEFI: apt install grub-efi-amd64\npve8to9 --full; skontrolujte výsledok a otázku na reštart.",
|
||||
"preflightHeading": "Kontroly pred aktualizáciou",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Kontrola",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Postup manuálnej aktualizácie",
|
||||
"intro": "Toto zobrazí možnosť <strong>Ručný návod na aktualizáciu</strong>: <wikilink>oficiálny wiki návod Proxmoxu z 8 na 9</wikilink>, rozdelený do štyroch fáz. Skript príkazy <em>zobrazí</em>; vykonáte ich sami v samostatnom shelli používateľa root. Každý krok máte pod kontrolou.",
|
||||
"intro": "Toto zobrazí možnosť <strong>Ručný návod na aktualizáciu</strong>, vychádzajúca z <wikilink>oficiálneho wiki návodu Proxmoxu z 8 na 9</wikilink> a rozdelená do štyroch fáz. Tabuľka odpovedí dpkg dopĺňa upozornenia wiki k sshd_config a chrony.conf, ktoré menu zobrazuje ako obyčajné Y. Skript príkazy <em>zobrazí</em>; vykonáte ich sami v samostatnom shelli používateľa root. Žiadna automatizácia, každý krok máte pod kontrolou.",
|
||||
"rootCalloutTitle": "Všetky príkazy vyžadujú root",
|
||||
"rootCalloutBody": "Použite shell používateľa root aj pre presmerovania a dokumenty here-document. Pri <code>sudo</code> zabezpečte, aby sa s oprávneniami root vykonal celý príkaz.",
|
||||
"phase1Heading": "Fáza 1 — Príprava",
|
||||
@@ -230,7 +230,7 @@
|
||||
"clusterCeph": {
|
||||
"heading": "Klaster a Ceph",
|
||||
"clusterCalloutTitle": "Klaster: aktualizujte uzly po jednom",
|
||||
"clusterCalloutBody": "Zistené cez <code>pvecm status</code>. <strong>Neaktualizujte</strong> viac uzlov naraz. Presuňte hostí, aktualizujte uzol, reštartujte a overte členstvo v klastri. Až potom pokračujte. Počas aktualizácie funguje živá migrácia zo staršej verzie PVE na novšiu; opačný smer spravidla nie je podporovaný. Skupiny HA sa automaticky prevedú na pravidlá HA, keď všetky uzly používajú PVE 9.",
|
||||
"clusterCalloutBody": "<strong>Neaktualizujte</strong> viac uzlov naraz. Presuňte hostí z uzla, aktualizujte, reštartujte a overte členstvo v klastri. Až potom pokračujte. Počas aktualizácie funguje živá migrácia zo staršej verzie PVE na novšiu; opačný smer spravidla nie je podporovaný. Skupiny HA sa automaticky prevedú na pravidlá HA, keď všetky uzly používajú PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: NAJPRV inovujte Ceph, potom Proxmox",
|
||||
"cephCalloutBody": "Ceph musí pred aktualizáciou Proxmoxu už používať 19.x Squid. Postupujte v oficiálnom poradí Quincy 17 → Reef 18 → Squid 19: aktualizujte balíky a postupne reštartujte démony Ceph podľa návodu. Pred každým uzlom Proxmoxu overte <code>ceph --version</code>. Celý postup: <cephlink>wiki aktualizácie Ceph Reef na Squid</cephlink>."
|
||||
},
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
"files": {
|
||||
"heading": "Príslušné súbory",
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
},
|
||||
"references": {
|
||||
"heading": "Oficiálne zdroje",
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"rows": [
|
||||
{
|
||||
"entry": "ProxMenux Scripts (TUI)",
|
||||
"path": "menu → Utilities → Host Config Backup",
|
||||
"detail": "Dialogbaserat flöde, SSH-vänligt. Huvudmenyn presenterar de sex alternativen direkt. Använder <code>backup_menu</code> i <code>backup_host.sh</code>."
|
||||
"path": "menu → Host Backup & Restore → Backup host configuration",
|
||||
"detail": "Dialogbaserat flöde, SSH-vänligt. Huvudmenyposten öppnar Host Config Backup / Restore; Backup host configuration leder till de sex alternativen. Använder <code>backup_menu</code> i <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (Webb UI)",
|
||||
@@ -83,7 +83,7 @@
|
||||
"profiles": {
|
||||
"heading": "Standard vs anpassad profil",
|
||||
"defaultTitle": "Standardprofil",
|
||||
"defaultBody": "Standardprofilen är den kurerade listan från <code>hb_default_profile_paths</code> (dokumenterad i <em>Hur det fungerar</em> under <em>Sökvägskategorier</em>) plus varje post i den filen med beständiga tillägg <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. Användaren bekräftar destinationen och krypteringsalternativen och backupen fortsätter utan ytterligare sökvägsval.",
|
||||
"defaultBody": "Standardprofilen är den kurerade listan från <code>hb_default_profile_paths</code> (dokumenterad i <em>Hur det fungerar</em> under <em>Sökvägskategorier</em>) plus varje post i den filen med beständiga tillägg <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. Användaren väljer destination och krypteringsalternativ och backupen fortsätter utan ytterligare sökvägsval.",
|
||||
"customTitle": "Anpassad profil",
|
||||
"customBody": "Den anpassade profilen öppnar en checklista med alla sökvägar i standardprofilen (omarkerade) och alla beständiga tillägg (förmarkerade, med prefixet <code>[+]</code>). Användaren markerar sökvägarna för denna körning och kan trycka på <em>Lägg till anpassad sökväg</em> för att lägga till en ny absolut sökväg. Sökvägar som läggs till här sparas i <code>backup-extra-paths.txt</code> så att framtida säkerhetskopior tar med dem automatiskt. Att avmarkera ett beständigt tillägg utesluter det från denna körning men tar inte bort det ur filen — borttagning görs separat via <em>Hantera anpassade sökvägar</em>, utanför säkerhetskopieringsflödet.",
|
||||
"customPickerAlt": "Checklista för anpassad profil med standardprofilens sökvägar (omarkerade) och beständiga tillägg (förmarkerade med prefixet [+]), samt knappar för att lägga till en sökväg eller bekräfta valet.",
|
||||
@@ -124,14 +124,7 @@
|
||||
},
|
||||
"included": {
|
||||
"heading": "Vad går in och vad stannar ut",
|
||||
"intro": "Varje sökväg i den fastställda profilen (standard + beständiga tillägg + val i anpassat läge) kopieras med <code>rsync -aAXH --numeric-ids</code>. En delad uteslutningslista gäller för varje sökväg, och två kataloger har ytterligare sökvägsspecifika uteslutningar.",
|
||||
"globalTitle": "Globala uteslutningar (tillämpas varje väg)",
|
||||
"globalItems": [
|
||||
"<code>images/</code> - bilddumpar.",
|
||||
"<code>dump/</code> — utdata från vzdump.",
|
||||
"<code>tmp/</code> - tillfälliga filer.",
|
||||
"<code>*.log</code> loggfiler."
|
||||
],
|
||||
"intro": "Varje sökväg i den fastställda profilen (standard + beständiga tillägg + val i anpassat läge) kopieras med <code>rsync -aAXH --numeric-ids</code>. Det finns ingen global uteslutningslista; några kataloger har sökvägsspecifika uteslutningar.",
|
||||
"rootTitle": "<code>/root/</code>-uteslutningar",
|
||||
"rootBody": "<code>/root/</code> ingår i standardprofilen så att användarens skript och konfiguration sparas i arkivet. Flyktiga undersökvägar utesluts:",
|
||||
"rootItems": [
|
||||
@@ -160,16 +153,16 @@
|
||||
"<strong><code>/home/USER</code></strong> - inte i standardprofilen. Lägg till det som en anpassad väg när ett system bär hemkataloger som måste överleva en återställning."
|
||||
],
|
||||
"customPathsTitle": "Hur anpassade vägar hanteras",
|
||||
"customPathsBody": "En anpassad väg som läggs till i anpassat läge eller kvarstår i <code>backup-extra-paths.txt</code> går igenom samma <code>rsync</code>-pipeline som standardprofilvägar. Globala uteslutningar gäller. Om den anpassade vägen råkar vara under <code>/root/</code> eller <code>/usr/local/share/proxmenux/</code> gäller fortfarande de vägspecifika uteslutningarna ovan. Varje arkiverad väg - standard eller anpassad - registreras i <code>metadata/paths_archived.txt</code>. Sökvägar som inte finns på källan registreras i <code>metadata/missing_paths.txt</code> utan att stoppa backupen."
|
||||
"customPathsBody": "En anpassad väg som läggs till i anpassat läge eller kvarstår i <code>backup-extra-paths.txt</code> går igenom samma <code>rsync</code>-pipeline som standardprofilvägar. Om den anpassade vägen råkar vara under <code>/root/</code> eller <code>/usr/local/share/proxmenux/</code> gäller fortfarande de vägspecifika uteslutningarna ovan. Varje arkiverad väg - standard eller anpassad - registreras i <code>metadata/selected_paths.txt</code>. Sökvägar som inte finns på källan registreras i <code>metadata/missing_paths.txt</code> utan att stoppa backupen, och sökvägar som inte kan kopieras registreras i <code>metadata/failed_paths.txt</code>."
|
||||
},
|
||||
"archiveStructure": {
|
||||
"heading": "Arkivstruktur",
|
||||
"intro": "Den tillfälliga katalog som varje backend skapar har samma struktur oavsett destination. Tar-arkivet, PBS-arkivet <code>.pxar</code> eller Borg-arkivet lagrar detta träd oförändrat.",
|
||||
"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"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "Sammanfattning för bekräftelse",
|
||||
"body": "Innan backend skriver något till destinationen visar ProxMenux en sammanfattande dialog med destinationen, backup-ID eller arkivnamn, krypteringstillstånd och listan över vägar som kopieras. Avbokning här avbryter backupen rent - staging katalogen tas bort av <code>trap</code> kroken på backend funktionen och ingen partiell data når destinationen."
|
||||
"body": "Innan backend skriver något till destinationen skriver ProxMenux ut en sammanfattning i terminalen med destinationen, backup-ID eller arkivnamn, krypteringstillstånd och listan över vägar som kopieras. Det finns inget bekräftelse- eller avbrytssteg här; kopieringen startar direkt efter. Om backupen misslyckas eller avbryts tas staging katalogen bort av <code>trap</code> kroken på backend funktionen och ingen partiell data når destinationen."
|
||||
},
|
||||
"writing": {
|
||||
"heading": "Skriva till destinationen",
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
},
|
||||
"targetConfig": {
|
||||
"heading": "Konfigurera målkatalogen",
|
||||
"intro": "Det lokala målet är en <strong>enda sparad målkatalog</strong> — inte en lista. ProxMenux sparar användarens val i <code>/usr/local/share/proxmenux/local-target.conf</code> och läser det vid varje säkerhetskopiering. Om inget mål har konfigurerats används standardvärdet <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> (samma katalog som Proxmox använder för sina egna <code>vzdump</code>-utdata). Målet konfigureras via <em>Konfigurera säkerhetskopieringsmål → Lokala mål</em>:",
|
||||
"intro": "Det lokala målet är en <strong>enda sparad målkatalog</strong> — inte en lista. ProxMenux sparar användarens val i <code>/usr/local/share/proxmenux/local-target.conf</code> och läser det vid varje säkerhetskopiering. Om inget mål har konfigurerats används standardvärdet <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> (samma katalog som Proxmox använder för sina egna <code>vzdump</code>-utdata). Målet konfigureras via <em>Konfigurera säkerhetskopieringsmål → Lokala arkivmål → Hantera lokalt säkerhetskopieringsmål</em>:",
|
||||
"options": [
|
||||
"<strong>Använd standard (<code>/var/lib/vz/dump</code>).</strong> Proxmox lokal lagring. Finns på varje Proxmox-installation; arkivet sitter bredvid vzdump-utdata och hämtas av fliken Monitor's Backups automatiskt.",
|
||||
"<strong>Ange en anpassad sökväg.</strong> Alla absoluta filsystemsökvägar kan användas: en NFS-montering, en SMB-delning monterad via <code>fstab</code>, ett särskilt ZFS-dataset eller en andra intern disk. ProxMenux kontrollerar att sökvägen finns och är en katalog innan valet sparas.",
|
||||
"<strong>Välj en USB-enhet.</strong> Öppnar USB-undermenyn (nedan), som upptäcker flyttbara enheter och erbjuder sig att montera eller formatera en."
|
||||
"<strong>Använd en anpassad sökväg.</strong> Alla absoluta filsystemsökvägar kan användas: en NFS-montering, en SMB-delning monterad via <code>fstab</code>, ett särskilt ZFS-dataset eller en andra intern disk. ProxMenux kontrollerar att sökvägen finns och är en katalog innan valet sparas.",
|
||||
"<strong>Använd en USB-disk.</strong> Öppnar USB-undermenyn (nedan), som upptäcker flyttbara enheter och erbjuder sig att montera eller formatera en."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
"state": "ej monterad",
|
||||
"shown": "Storlek · etikett · [fstype] · (ej monterad — kommer att monteras)",
|
||||
"action": "Ett filsystem är närvarande men inte monterat. På bekräftelse kör ProxMenux <code>hb_mount_usb_partition</code>: skapar <code>/mnt/backup-LABEL</code> (eller en UUID-baserad väg om det inte finns någon etikett), monterar partitionen och sparar monteringspunkten som det lokala målet."
|
||||
"action": "Ett filsystem är närvarande men inte monterat. På bekräftelse kör ProxMenux <code>hb_mount_usb_partition</code>: skapar <code>/mnt/proxmenux-backup-LABEL</code> (UUID eller enhetsnamn om det inte finns någon etikett), monterar partitionen och sparar monteringspunkten som det lokala målet."
|
||||
},
|
||||
{
|
||||
"state": "tom",
|
||||
@@ -63,7 +63,7 @@
|
||||
},
|
||||
"sidecar": {
|
||||
"heading": "JSON-sidofilen",
|
||||
"intro": "Varje framgångsrik lokal backup producerar en följeslagare fil: <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, skriven bredvid arkivet av <code>hb_write_archive_sidecar</code>. Denna lilla JSON-fil låter ProxMenux Monitor identifiera arkivet som en ProxMenux-värdbackup även om det senare flyttas, bytas namn eller arkiveras någon annanstans.",
|
||||
"intro": "Varje framgångsrik lokal backup producerar en följeslagare fil: <code>hostcfg-HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, skriven bredvid arkivet av <code>hb_write_archive_sidecar</code>. Denna lilla JSON-fil låter ProxMenux Monitor identifiera arkivet som en ProxMenux-värdbackup även om det senare flyttas, bytas namn eller arkiveras någon annanstans.",
|
||||
"contentTitle": "Sidofilens innehåll",
|
||||
"contentBody": "Sidofilen lagrar schemaversionen, om säkerhetskopian kom från en interaktiv körning eller ett schemalagt jobb (<code>kind</code>), jobb-ID för schemalagda körningar, det profilläge som används (<code>default</code> eller <code>custom</code>), källvärdnamnet, den ursprungliga arkivbasnamnet, en tidsstämpel för skapandet i ISO-8601-format och arkivstorleken i byte.",
|
||||
"whyBody": "Monitors Backups-flik söker igenom konfigurerade lokala kataloger efter <code>*.proxmenux.json</code>-sidofiler, inte efter <code>*.tar.zst</code>-filer, eftersom en <code>.tar.zst</code> utan sidofil kanske inte är en ProxMenux-säkerhetskopia. Sökningen är snabb (JSON-filer är små) och kopplingen fungerar även efter namnbyte om sidofilen får ett motsvarande nytt namn."
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"source": "ProxMenux manuell konfig",
|
||||
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
|
||||
"content": "Läggs till via <em>Konfigurera säkerhetskopieringsmål → PBS-mål → Lägg till PBS</em>. Du anger namn, användarnamn (<code>root@pam</code> eller <code>user@pbs!token</code>), värd eller IP-adress, datalager och lösenord. Om lösenordet lämnas tomt visas frågan igen; annars skulle en tom uppgift sparas utan varning och alla senare säkerhetskopior misslyckas med ett otydligt autentiseringsfel. Detta används när PBS-målet inte är registrerat som Proxmox-lagring."
|
||||
"content": "Läggs till via <em>Konfigurera säkerhetskopieringsmål → Proxmox Backup Server (PBS)-mål → + Lägg till ny PBS manuellt</em>. Du anger namn, användarnamn (<code>root@pam</code> eller <code>user@pbs!token</code>), värd eller IP-adress, datalager och lösenord. Om lösenordet lämnas tomt visas frågan igen; annars skulle en tom uppgift sparas utan varning och alla senare säkerhetskopior misslyckas med ett otydligt autentiseringsfel. Detta används när PBS-målet inte är registrerat som Proxmox-lagring."
|
||||
}
|
||||
],
|
||||
"menuTitle": "Urvalsmenyn",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"heading": "Arkivlayout",
|
||||
"intro": "Varje arkiv följer samma trädlayout oavsett destination. <code>metadata/</code> underkatalog håller de strukturerade nyttolasterna; <code>rootfs/</code> underkatalog håller filsystemet kopiera.",
|
||||
"treeCaption": "Förberedelsekatalogen som skapas vid säkerhetskopiering. Alla mål får samma träd i sitt eget format: tar för lokala mål, PBS-block för PBS och Borg-segment för 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/…"
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── selected_paths.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "Innehållet i rootfs",
|
||||
@@ -176,7 +176,7 @@
|
||||
"stage": "3",
|
||||
"name": "Förbered uppskjutna ändringar",
|
||||
"reads": "rootfs/ (omstart + farliga vägar)",
|
||||
"action": "<code>_rs_prepare_pending_restore</code> förbereder riskfyllda sökvägar under <code>/var/lib/proxmenux/pending-restore/</code>, skriver <code>plan.env</code>, <code>apply-on-boot.list</code> och <code>rs-skip-paths.txt</code> och aktiverar <code>proxmenux-restore-onboot.service</code> för nästa start."
|
||||
"action": "<code>_rs_prepare_pending_restore</code> förbereder riskfyllda sökvägar under <code>/var/lib/proxmenux/restore-pending/<restore_id>/</code> (länkad som <code>current</code>), skriver <code>plan.env</code>, <code>apply-on-boot.list</code> och <code>rs-skip-paths.txt</code> och aktiverar <code>proxmenux-restore-onboot.service</code> för nästa start."
|
||||
},
|
||||
{
|
||||
"stage": "3b",
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"heading": "Två gränssnitt, en backend",
|
||||
"intro": "Varje steg i arbetsflödet för säkerhetskopiering och återställning är tillgängligt från två ingångspunkter. Båda anropar samma skalbibliotek, producerar identiska arkiv och läser samma jobbregister.",
|
||||
"cliLabel": "ProxMenux Scripts (TUI)",
|
||||
"cliDetail": "meny → Verktyg →\nVärdsäkerhetskopiering/återställning\n\nDialogbaserat flöde,\nSSH-vänlig, skriptbar\nför obevakad användning.",
|
||||
"cliDetail": "meny →\nVärdsäkerhetskopiering & återställning\n\nDialogbaserat flöde,\nSSH-vänlig, skriptbar\nför obevakad användning.",
|
||||
"webLabel": "ProxMenux Monitor (Webb UI)",
|
||||
"webDetail": "Backups-fliken i\nMonitors webbgränssnitt.\n\nÅterställning med ett klick,\nlöpande loggvisning, integrerat\nmed aviseringar och visning\nav skillnader vid återställning."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"management": {
|
||||
"heading": "Hantera jobb",
|
||||
"intro": "Schemaläggarmenyn (Scripts TUI) och fliken Monitor Backups avslöjar samma åtgärder på något jobb.",
|
||||
"intro": "Schemaläggarmenyn i Scripts TUI (Backup scheduler och retention) erbjuder Run now, Enable / Disable och Delete, samt en lista över jobb med status för senaste körning. Edit och View log finns bara på fliken Monitor Backups.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Kör nu",
|
||||
@@ -112,7 +112,7 @@
|
||||
"detail": "Nytt läge: <code>systemctl enable/disable --now</code> timern. Bifoga läge: vänder <code>ENABLED</code> flaggan i jobbenv - krokskriptet respekterar den vid nästa PVE-körning."
|
||||
},
|
||||
{
|
||||
"action": "Redigera",
|
||||
"action": "Redigera (endast Monitor)",
|
||||
"detail": "Öppnar åter dialogerna för destination, schema, profil och bevarande och skriver om jobbfilerna. Jobb-ID:t behålls."
|
||||
},
|
||||
{
|
||||
@@ -120,7 +120,7 @@
|
||||
"detail": "Tar bort jobbets env-fil, sökvägsfilen och systemd-timern med tjänsten (nytt läge) samt inaktiverar hookkopplingen (kopplingsläge). Arkiv som redan finns på destinationen påverkas inte."
|
||||
},
|
||||
{
|
||||
"action": "Visa logg",
|
||||
"action": "Visa logg (endast Monitor)",
|
||||
"detail": "Strömmar <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code> — en loggfil per körning. Körningsskriptet sänder också ut en kompakt statusrad till journald under tjänsten systemd."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
},
|
||||
"package": {
|
||||
"heading": "Vad som hamnar i paketet",
|
||||
"intro": "För en OVA / OVF som heter <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
"intro": "För en OVA / OVF som heter <code>myvm-100-20260426_183015</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-20260426_183015.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-20260426_183015.mf # SHA1 manifest\nmyvm-100-20260426_183015-disk1.vmdk\nmyvm-100-20260426_183015-disk2.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-20260426_183015-ovf/\n├── myvm-100-20260426_183015.ovf\n├── myvm-100-20260426_183015.mf\n├── myvm-100-20260426_183015-disk1.vmdk\n└── myvm-100-20260426_183015-disk2.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "Vad blir exporterat",
|
||||
@@ -90,7 +90,7 @@
|
||||
"manifest": {
|
||||
"heading": "SHA1-manifest",
|
||||
"intro": "Varje paket innehåller en <code>.mf</code>-fil med SHA1-hashar för OVF-beskrivningsfilen och varje VMDK:",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"code": "SHA1(myvm-100-20260426_183015.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-20260426_183015-disk1.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-20260426_183015-disk2.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "Manifestet är valfritt i OVF-specifikationen och många program ignorerar det, men det kan användas för att kontrollera att paketet överfördes oskadat. Verifiera manuellt med <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"body": "Håll värden frisk: CLI-verktyg, regelbundna uppdateringar och storversionsuppgraderingen när det är dags.",
|
||||
"bullets": [
|
||||
"Installationsprogram för systemverktyg (25 CLI-verktyg)",
|
||||
"Proxmox systemuppdatering (apt + dist-upgrade)",
|
||||
"Proxmox systemuppdatering (apt + full-upgrade)",
|
||||
"Uppgradering av huvudversion PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
@@ -58,11 +58,11 @@
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Skapa ISO-filer",
|
||||
"body": "Skapa en ny och aktuell Windows-installations-ISO direkt på Proxmox-värden. Skriptet automatiserar hela UUP Dump-flödet: installation av beroenden (aria2c, cabextract, wimlib-imagex, …), parallell nedladdning av uppdateringsfiler med aria2 och konvertering till en enda startbar ISO. Den sparas i <code>/var/lib/vz/template/iso</code> och är redo att anslutas till en VM.",
|
||||
"body": "Skapa en ny och aktuell Windows-installations-ISO direkt på Proxmox-värden. Skriptet automatiserar hela UUP Dump-flödet: installation av beroenden (aria2c, cabextract, wimlib-imagex, …), parallell nedladdning av uppdateringsfiler med aria2 och konvertering till en enda startbar ISO. Den sparas i den identifierade Proxmox ISO-lagringen (reserv: <code>/var/lib/vz/template/iso</code>) och är redo att anslutas till en VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "UUP Dump ISO-skapare",
|
||||
"description": "Skapa en aktuell Windows-installations-ISO från en delad UUP Dump-länk. Beroenden, nedladdning och konvertering hanteras helt automatiskt. Den färdiga ISO-filen sparas i /var/lib/vz/template/iso, redo för att skapa en VM.",
|
||||
"description": "Skapa en aktuell Windows-installations-ISO från en delad UUP Dump-länk. Beroenden, nedladdning och konvertering hanteras helt automatiskt. Den färdiga ISO-filen sparas i den identifierade Proxmox ISO-lagringen, redo för att skapa en VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Proxmox systemuppdatering",
|
||||
"description": "Kontroll av paketförråd + apt update + apt dist-upgrade med bekräftelse före omstart. Identifierar PVE-huvudversionen (8 eller 9), behåller konfigurerade paketförråd och frågar innan en värd utan abonnemang byter till no-subscription-förrådet. Därefter körs autoremove.",
|
||||
"description": "Kontroll av paketförråd + apt update + apt full-upgrade med bekräftelse före omstart. Identifierar PVE-huvudversionen (8 eller 9), behåller konfigurerade paketförråd och frågar innan en värd utan abonnemang byter till no-subscription-förrådet. Därefter körs autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
"body": "Enterprise-förrådet är aktiverat utan ett aktivt abonnemang. Före <code>apt-get update</code> erbjuder arbetsskriptet ett byte till no-subscription. Om du avböjde kan du köra uppdateringen igen och acceptera, eller inaktivera Enterprise i <em>Node → Updates → Repositories</em> och aktivera no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade fastnar vid \"Configuring grub-pc\"",
|
||||
"title": "full-upgrade fastnar vid \"Configuring grub-pc\"",
|
||||
"body": "Om en interaktiv GRUB-fråga visas frågar den vilka enheter som ska få starthanteraren. Alternativet <code>--force-confold</code> gäller konfigurationsfiler, inte det här enhetsvalet. Välj lämpliga startdiskar med <kbd>Tab</kbd> + <kbd>Space</kbd> och sedan OK. Du kan konfigurera valet i förväg med <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Proxmox systemuppdatering",
|
||||
"tailRich": " — för den faktiska <code>apt dist-upgrade</code> på värden."
|
||||
"tailRich": " — för den faktiska <code>apt full-upgrade</code> på värden."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"items": [
|
||||
"<strong>Verifierade säkerhetskopior</strong> av varje VM och CT (PBS, vzdump, ZFS-ögonblicksbilder — kontrollera även att de går att återställa).",
|
||||
"<strong>Åtkomst via konsol / IPMI / iKVM</strong> till värden om SSH kopplas ned under uppgraderingen.",
|
||||
"Värden ska redan vara uppdaterad till aktuell PVE 8.4.x, vilket skriptet kontrollerar.",
|
||||
"Värden ska redan vara på den senaste PVE 8-patchnivån. Skriptet uppdaterar först PVE 8; det kontrollerar inte någon specifik 8.4.x-version.",
|
||||
"Ceph (om den finns) på version 19.x Squid.",
|
||||
"Minst <strong>5 GB ledigt</strong> i rotfilsystemet."
|
||||
"Minst <strong>5 GB ledigt</strong> i rotfilsystemet, som Proxmox-guiden rekommenderar. Skriptet själv kontrollerar bara 1 GB i /var/cache/apt/archives."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
@@ -63,13 +63,13 @@
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Varför webbterminalen blockeras",
|
||||
"body": "Alla tre lägen upptäcker <code>termproxy</code> / <code>vncshell</code> i kedjan av överordnade processer och vägrar starta. Webbterminalen beror på <code>pveproxy</code>, en tjänst som uppdateras under förloppet. När <code>pveproxy</code> startas om avslutas terminalsessionen och skriptet i den. Värden kan då bli endast delvis uppgraderad.",
|
||||
"body": "Lägena Automatic och Interactive upptäcker <code>termproxy</code> / <code>vncshell</code> i kedjan av överordnade processer och vägrar starta, om inte sessionen kommer via SSH eller <code>PVE_ALLOW_WEBTERM=1</code> är satt. Förkontrollen och den manuella guiden ändrar ingenting och kan köras var som helst. Webbterminalen beror på <code>pveproxy</code>, en tjänst som uppdateras under förloppet. När <code>pveproxy</code> startas om avslutas terminalsessionen och skriptet i den. Värden kan då bli endast delvis uppgraderad.",
|
||||
"warningTitle": "Använd SSH eller fysisk konsol / IPMI / iKVM",
|
||||
"warningBody": "SSH är det vanligaste valet. Kör det i <code>tmux</code> eller <code>screen</code> så att uppgraderingen klarar korta nätavbrott. Om skriptet upptäcker ett vanligt SSH-skal visas först en påminnelse om tmux/screen."
|
||||
"warningBody": "SSH är det vanligaste valet. Kör det i <code>tmux</code> eller <code>screen</code> så att uppgraderingen klarar korta nätavbrott. Bekräftelsedialogen för uppgraderingen påminner dig om att köra den från konsolen eller från SSH i tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Automatiskt läge / Utan tillsyn",
|
||||
"intro": "Frågor om paket och konfigurationsfiler använder standardvärdena i tabellen nedan, och ett 401 från Enterprise-källan byter till no-subscription utan att fråga. Bekräftelsen av uppgraderingen, sammanfattningen av PVE 8-uppdateringen, reparationer från förkontrollen och frågan om omstart visas fortfarande.",
|
||||
"intro": "Frågor om paket och konfigurationsfiler använder standardvärdena i tabellen nedan. Bekräftelsen av uppgraderingen, sammanfattningen av PVE 8-uppdateringen, reparationer från förkontrollen och frågan om omstart visas fortfarande.",
|
||||
"behaviourHeading": "Beteende i automatiskt läge",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Inställning",
|
||||
@@ -94,8 +94,8 @@
|
||||
]
|
||||
},
|
||||
"flowHeading": "Förlopp i automatiskt läge",
|
||||
"flowIntro": "Sex faser i följd. Fas 2 uppdaterar PVE 8-paketen och fas 3 skriver konfigurationen för PVE 9-paketkällorna. Ett fel stoppar förloppet men återställer inte ändringarna; om PVE 8-uppdateringen misslyckas eller avbryts lämnas paketkällorna orörda. Fas 5 kör <code>dist-upgrade</code> till PVE 9.",
|
||||
"flowDiagram": "1. KONTROLLER\nBlockera termproxy / vncshell; bekräfta uppgraderingen; avvisa PVE 9.\n\n2. FÖRBERED PVE 8\nscripts/global/update-pve8.sh\nUppdatera PVE 8-paket; stoppa om uppdateringen misslyckas eller avbryts.\npve8to9 --full (kan erbjuda reparationer).\nKontrollera utrymme och anslutning; Ceph 19.x Squid på hyperkonvergerade noder.\n\n3. ÄNDRA PAKETKÄLLOR\nBookworm → Trixie; skriv deb822-filer .sources.\nKommentera bort gamla .list-filer; apt-get update.\n\n4. KONTROLLERA PVE 9-KANDIDATEN\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nStoppa om kandidaten inte är 9.x eller om proxmox-ve skulle tas bort.\n\n5. UPPGRADERA\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nUtan prenumeration: inaktivera pve-enterprise.sources.\nLogg: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. KONTROLLERA OCH STARTA OM\nEFI: apt install grub-efi-amd64\npve8to9 --full; granska resultatet och frågan om omstart.",
|
||||
"flowIntro": "Sex faser i följd. Fas 2 byter PVE 8-paketkällorna till no-subscription (Enterprise- och Ceph-listorna inaktiveras, <code>/etc/apt/sources.list</code> skrivs om) innan sammanfattningen av uppdateringen visas och uppdaterar sedan paketen; fas 3 skriver konfigurationen för PVE 9-paketkällorna. Ett fel stoppar förloppet men återställer inte ändringarna; om PVE 8-uppdateringen misslyckas eller avbryts startar inte PVE 9-migreringen, men ändringarna i PVE 8-paketkällorna finns kvar. Fas 5 kör <code>dist-upgrade</code> till PVE 9.",
|
||||
"flowDiagram": "1. KONTROLLER\nBlockera termproxy / vncshell; bekräfta uppgraderingen; avvisa PVE 9.\n\n2. FÖRBERED PVE 8\nscripts/global/update-pve8.sh\nByt PVE 8-paketkällor till no-subscription och skriv om sources.list;\nuppdatera PVE 8-paket; stoppa om uppdateringen misslyckas eller avbryts.\npve8to9 --full (kan erbjuda reparationer).\nKontrollera utrymme och anslutning; Ceph 19.x Squid på hyperkonvergerade noder.\n\n3. ÄNDRA PAKETKÄLLOR\nBookworm → Trixie; skriv deb822-filer .sources.\nKommentera bort gamla .list-filer; apt-get update.\n\n4. KONTROLLERA PVE 9-KANDIDATEN\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nStoppa om kandidaten inte är 9.x eller om proxmox-ve skulle tas bort.\n\n5. UPPGRADERA\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nUtan prenumeration: inaktivera pve-enterprise.sources.\nLogg: /var/log/pve8-a-pve9-<timestamp>.log\n\n6. KONTROLLERA OCH STARTA OM\nEFI: apt install grub-efi-amd64\npve8to9 --full; granska resultatet och frågan om omstart.",
|
||||
"preflightHeading": "Förkontroll: vad som kontrolleras",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Kontroll",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Manuellt uppgraderingsförfarande",
|
||||
"intro": "Detta visar menyalternativet <strong>Manuell uppgraderingsguide</strong>: <wikilink>Proxmox officiella wiki för uppgradering från 8 till 9</wikilink>, uppdelad i fyra faser. Skriptet <em>visar</em> kommandona; du kör dem själv i ett separat root-skal. Varje steg är synligt.",
|
||||
"intro": "Detta följer menyalternativet <strong>Manuell uppgraderingsguide</strong>, baserat på <wikilink>Proxmox officiella wiki för uppgradering från 8 till 9</wikilink> och uppdelat i fyra faser. Tabellen med dpkg-svar lägger till wikins förbehåll för sshd_config och chrony.conf, som menyn visar som ett vanligt Y. Skriptet <em>visar</em> kommandona; du kör dem själv i ett separat root-skal. Ingen automatisering, full insyn.",
|
||||
"rootCalloutTitle": "Alla kommandon kräver root",
|
||||
"rootCalloutBody": "Använd ett root-skal för kommandona, även för omdirigeringar och here-dokument. Med <code>sudo</code> måste hela kommandot köras med root-behörighet.",
|
||||
"phase1Heading": "Fas 1 - Förberedelse",
|
||||
@@ -230,7 +230,7 @@
|
||||
"clusterCeph": {
|
||||
"heading": "Kluster och Ceph",
|
||||
"clusterCalloutTitle": "Cluster: uppgradera noder en i taget",
|
||||
"clusterCalloutBody": "Identifieras med <code>pvecm status</code>. <strong>Uppgradera inte</strong> flera noder samtidigt. Flytta gästerna, uppgradera noden, starta om och verifiera klustermedlemskapet innan du fortsätter. Under uppgraderingen fungerar livemigrering från äldre till nyare PVE-versioner; motsatt riktning stöds normalt inte. HA-grupper omvandlas automatiskt till HA-regler när alla noder kör PVE 9.",
|
||||
"clusterCalloutBody": "<strong>Uppgradera inte</strong> flera noder samtidigt. Flytta gästerna, uppgradera noden, starta om och verifiera klustermedlemskapet innan du fortsätter. Under uppgraderingen fungerar livemigrering från äldre till nyare PVE-versioner; motsatt riktning stöds normalt inte. HA-grupper omvandlas automatiskt till HA-regler när alla noder kör PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: uppgradera Ceph FÖRST, sedan Proxmox",
|
||||
"cephCalloutBody": "Ceph måste redan köra 19.x Squid före Proxmox-uppgraderingen. Följ den officiella ordningen Quincy 17 → Reef 18 → Squid 19: uppdatera paket och starta om Ceph-demoner stegvis i dokumenterad ordning. Kontrollera <code>ceph --version</code> före varje Proxmox-nod. Fullständigt förfarande: <cephlink>wikin för uppgradering av Ceph Reef till Squid</cephlink>."
|
||||
},
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
"files": {
|
||||
"heading": "Filer involverade",
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-<timestamp>.log # full upgrade log"
|
||||
},
|
||||
"references": {
|
||||
"heading": "Officiella referenser",
|
||||
|
||||
Reference in New Issue
Block a user