mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-02 19:02:31 +00:00
Bring the web documentation in line with develop in every language
- English pages describe backups, the manifest, ROCm GPUs, OCI host directories and storage as develop does, and say user instead of operator - New paragraph on host directories mounted with everything the host has mounted inside them, and a new update rule for host directories - The Proxmox Backup Server section of the post-install page is translated into every language - Spanish and the other six languages follow the updated English
This commit is contained in:
@@ -19,9 +19,18 @@
|
||||
{
|
||||
"flow": {
|
||||
"nodes": [
|
||||
{ "label": "Host inventory", "detail": "/dev/dri/renderD128\nGID 993 · Intel" },
|
||||
{ "label": "ProxMenux", "detail": "vendor and\npermissions checked" },
|
||||
{ "label": "LXC", "detail": "same device\neffective GID" }
|
||||
{
|
||||
"label": "Host inventory",
|
||||
"detail": "/dev/dri/renderD128\nGID 993 · Intel"
|
||||
},
|
||||
{
|
||||
"label": "ProxMenux",
|
||||
"detail": "vendor and\npermissions checked"
|
||||
},
|
||||
{
|
||||
"label": "LXC",
|
||||
"detail": "same device\neffective GID"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -33,12 +42,32 @@
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": ["Source", "What is read", "What the installer does"],
|
||||
"headers": [
|
||||
"Source",
|
||||
"What is read",
|
||||
"What the installer does"
|
||||
],
|
||||
"rows": [
|
||||
["Docker Compose", "<code>devices</code>, <code>group_add</code>, <code>deploy.resources</code> and NVIDIA requests", "Each requirement becomes a device request shown for review"],
|
||||
["Catalog profile", "The GPU, Coral, OpenCL, USB or FUSE support the application actually has", "Only the options validated for that image are offered"],
|
||||
["Image metadata and documentation", "VA-API, Selkies, LinuxServer mods or the NVIDIA runtime", "The documented variables and preparation are added"],
|
||||
["User selection", "CPU only, Intel/AMD, OpenCL, NVIDIA or an optional device", "The selection is stored in the instance contract"]
|
||||
[
|
||||
"Docker Compose",
|
||||
"<code>devices</code>, <code>group_add</code>, <code>deploy.resources</code> and NVIDIA requests",
|
||||
"Each requirement becomes a device request shown for review"
|
||||
],
|
||||
[
|
||||
"Catalog profile",
|
||||
"The GPU, Coral, OpenCL, USB or FUSE support the application actually has",
|
||||
"Only the options validated for that image are offered"
|
||||
],
|
||||
[
|
||||
"Image metadata and documentation",
|
||||
"VA-API, Selkies, LinuxServer mods or the NVIDIA runtime",
|
||||
"The documented variables and preparation are added"
|
||||
],
|
||||
[
|
||||
"User selection",
|
||||
"CPU only, Intel/AMD, OpenCL, NVIDIA or an optional device",
|
||||
"The selection is stored in the instance contract"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -57,16 +86,52 @@
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": ["Type", "Identity", "Validation"],
|
||||
"headers": [
|
||||
"Type",
|
||||
"Identity",
|
||||
"Validation"
|
||||
],
|
||||
"rows": [
|
||||
["Intel/AMD DRM", "<code>/dev/dri/renderD*</code> and <code>/sys/class/drm/NODE/device/vendor</code>", "A character device with vendor <code>0x8086</code> (Intel) or <code>0x1002</code> (AMD)"],
|
||||
["AMD OpenCL", "The render node, plus <code>/dev/kfd</code> when the profile needs it", "Existence, type, vendor, permissions and declared compatibility"],
|
||||
["AMD ROCm", "The render node, <code>/dev/kfd</code> and the generation the compute driver reports in <code>/sys/class/kfd/kfd/topology/nodes/*/properties</code>", "A generation the ROCm image of the application carries kernels for, the RDNA2 GPUs it names and newer ones, is offered as it is. The other GPUs of those families, such as the Radeon 680M and 780M, are offered as experimental and are never the proposed option: ROCm does not support them officially, the application presents them as the generation of their family (<code>HSA_OVERRIDE_GFX_VERSION</code>) and the installer asks for confirmation before the larger image is downloaded. An older GPU, such as the integrated graphics of a Ryzen 5000U, is not offered and Immich keeps recognition on the CPU"],
|
||||
["NVIDIA", "<code>nvidia-smi</code> and <code>nvidia-container-cli</code>", "GPU, UUID, PCI bus, driver version, Toolkit, <code>/dev/nvidia*</code> nodes, binaries and libraries"],
|
||||
["Coral PCIe/M.2", "<code>/dev/apex_N</code> and its link in <code>/sys/dev/char/MAJOR:MINOR</code>", "Character node, major/minor, owner, GID and permissions"],
|
||||
["USB and serial", "<code>/dev/ttyUSB*</code>, <code>/dev/ttyACM*</code> or <code>/dev/bus/usb/BBB/DDD</code>", "Character node; for USB also vendor, product and serial when sysfs publishes them"],
|
||||
["KVM, TUN, FUSE, video and generic SCSI", "<code>/dev/kvm</code>, <code>/dev/net/tun</code>, <code>/dev/fuse</code>, <code>/dev/videoN</code> or <code>/dev/sgN</code>", "Supported path, node type and effective permissions"],
|
||||
["Optical drive", "<code>/dev/srN</code>", "A block device"]
|
||||
[
|
||||
"Intel/AMD DRM",
|
||||
"<code>/dev/dri/renderD*</code> and <code>/sys/class/drm/NODE/device/vendor</code>",
|
||||
"A character device with vendor <code>0x8086</code> (Intel) or <code>0x1002</code> (AMD)"
|
||||
],
|
||||
[
|
||||
"AMD OpenCL",
|
||||
"The render node, plus <code>/dev/kfd</code> when the profile needs it",
|
||||
"Existence, type, vendor, permissions and declared compatibility"
|
||||
],
|
||||
[
|
||||
"AMD ROCm",
|
||||
"The render node, <code>/dev/kfd</code> and the generation the compute driver reports in <code>/sys/class/kfd/kfd/topology/nodes/*/properties</code>",
|
||||
"A GPU of a generation the application's ROCm image supports (the RDNA2 GPUs it names, and newer ones) is offered as it is. Other GPUs of those families, such as the Radeon 680M and 780M, are offered as experimental and are never the proposed option. ROCm does not support them officially: the application presents them as the generation of their family (<code>HSA_OVERRIDE_GFX_VERSION</code>), and the installer asks for confirmation before downloading the larger image. An older GPU, such as the integrated graphics of a Ryzen 5000U, is not offered, and Immich keeps recognition on the CPU"
|
||||
],
|
||||
[
|
||||
"NVIDIA",
|
||||
"<code>nvidia-smi</code> and <code>nvidia-container-cli</code>",
|
||||
"GPU, UUID, PCI bus, driver version, Toolkit, <code>/dev/nvidia*</code> nodes, binaries and libraries"
|
||||
],
|
||||
[
|
||||
"Coral PCIe/M.2",
|
||||
"<code>/dev/apex_N</code> and its link in <code>/sys/dev/char/MAJOR:MINOR</code>",
|
||||
"Character node, major/minor, owner, GID and permissions"
|
||||
],
|
||||
[
|
||||
"USB and serial",
|
||||
"<code>/dev/ttyUSB*</code>, <code>/dev/ttyACM*</code> or <code>/dev/bus/usb/BBB/DDD</code>",
|
||||
"Character node; for USB also vendor, product and serial when sysfs publishes them"
|
||||
],
|
||||
[
|
||||
"KVM, TUN, FUSE, video and generic SCSI",
|
||||
"<code>/dev/kvm</code>, <code>/dev/net/tun</code>, <code>/dev/fuse</code>, <code>/dev/videoN</code> or <code>/dev/sgN</code>",
|
||||
"Supported path, node type and effective permissions"
|
||||
],
|
||||
[
|
||||
"Optical drive",
|
||||
"<code>/dev/srN</code>",
|
||||
"A block device"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -79,12 +144,30 @@
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{ "title": "The template offers its profiles", "body": "For example CPU only, Intel/AMD VA-API, AMD OpenCL, Intel OpenCL or NVIDIA. The options belong to the image, not to a common menu." },
|
||||
{ "title": "A profile is chosen", "body": "It defines the device nodes, environment, mods or runtime the application needs." },
|
||||
{ "title": "A path is proposed", "body": "For DRM, <code>/dev/dri/renderD128</code>, which can be changed on a host with several render nodes. For USB or serial, the concrete node is selected." },
|
||||
{ "title": "Validation", "body": "Existence, type, allowed vendor, permissions and GID are checked. A mismatch stops the operation." },
|
||||
{ "title": "The contract is written", "body": "Path, mode, GID, write access and profile are recorded for updates and recreations." },
|
||||
{ "title": "Attach and test", "body": "<code>pct set</code> adds the <code>devN</code> entry and access is then checked inside the LXC. LinuxServer images are also checked as user <code>abc</code>." }
|
||||
{
|
||||
"title": "The template offers its profiles",
|
||||
"body": "For example CPU only, Intel/AMD VA-API, AMD OpenCL, Intel OpenCL or NVIDIA. The options belong to the image, not to a common menu."
|
||||
},
|
||||
{
|
||||
"title": "A profile is chosen",
|
||||
"body": "It defines the device nodes, environment, mods or runtime the application needs."
|
||||
},
|
||||
{
|
||||
"title": "A path is proposed",
|
||||
"body": "For DRM, <code>/dev/dri/renderD128</code>, which can be changed on a host with several render nodes. For USB or serial, the concrete node is selected."
|
||||
},
|
||||
{
|
||||
"title": "Validation",
|
||||
"body": "Existence, type, allowed vendor, permissions and GID are checked. A mismatch stops the operation."
|
||||
},
|
||||
{
|
||||
"title": "The contract is written",
|
||||
"body": "Path, mode, GID, write access and profile are recorded for updates and recreations."
|
||||
},
|
||||
{
|
||||
"title": "Attach and test",
|
||||
"body": "<code>pct set</code> adds the <code>devN</code> entry and access is then checked inside the LXC. LinuxServer images are also checked as user <code>abc</code>."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -98,10 +181,22 @@
|
||||
{
|
||||
"codeGrid": {
|
||||
"items": [
|
||||
{ "title": "Intel/AMD VA-API", "code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=993,deny-write=0" },
|
||||
{ "title": "Coral PCIe/M.2", "code": "dev0: path=/dev/apex_0,mode=0660,gid=GID,deny-write=0" },
|
||||
{ "title": "A specific USB device", "code": "dev0: path=/dev/bus/usb/003/004,mode=0660,gid=GID,deny-write=0" },
|
||||
{ "title": "AMD OpenCL", "code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=GID,deny-write=0\ndev1: path=/dev/kfd,mode=0660,gid=GID,deny-write=0" }
|
||||
{
|
||||
"title": "Intel/AMD VA-API",
|
||||
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=993,deny-write=0"
|
||||
},
|
||||
{
|
||||
"title": "Coral PCIe/M.2",
|
||||
"code": "dev0: path=/dev/apex_0,mode=0660,gid=GID,deny-write=0"
|
||||
},
|
||||
{
|
||||
"title": "A specific USB device",
|
||||
"code": "dev0: path=/dev/bus/usb/003/004,mode=0660,gid=GID,deny-write=0"
|
||||
},
|
||||
{
|
||||
"title": "AMD OpenCL",
|
||||
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=GID,deny-write=0\ndev1: path=/dev/kfd,mode=0660,gid=GID,deny-write=0"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -116,13 +211,37 @@
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": ["Profile", "Translation", "Offered when"],
|
||||
"headers": [
|
||||
"Profile",
|
||||
"Translation",
|
||||
"Offered when"
|
||||
],
|
||||
"rows": [
|
||||
["Intel/AMD VA-API", "<code>/dev/dri</code> render node", "The application supports video acceleration"],
|
||||
["OpenCL", "Render node, <code>/dev/kfd</code> when needed and the official mod", "The image or profile documents it"],
|
||||
["NVIDIA", "Driver devices and libraries of the host", "The host has a working driver and the NVIDIA Container Toolkit"],
|
||||
["Coral", "<code>/dev/apex_0</code> or the USB bus", "The profile declares Coral support (Frigate)"],
|
||||
["USB, serial, FUSE", "A single device, a validated tree or an LXC feature", "The contract asks for it"]
|
||||
[
|
||||
"Intel/AMD VA-API",
|
||||
"<code>/dev/dri</code> render node",
|
||||
"The application supports video acceleration"
|
||||
],
|
||||
[
|
||||
"OpenCL",
|
||||
"Render node, <code>/dev/kfd</code> when needed and the official mod",
|
||||
"The image or profile documents it"
|
||||
],
|
||||
[
|
||||
"NVIDIA",
|
||||
"Driver devices and libraries of the host",
|
||||
"The host has a working driver and the NVIDIA Container Toolkit"
|
||||
],
|
||||
[
|
||||
"Coral",
|
||||
"<code>/dev/apex_0</code> or the USB bus",
|
||||
"The profile declares Coral support (Frigate)"
|
||||
],
|
||||
[
|
||||
"USB, serial, FUSE",
|
||||
"A single device, a validated tree or an LXC feature",
|
||||
"The contract asks for it"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -145,7 +264,9 @@
|
||||
"p": "These two commands on the host show whether the driver and the Toolkit are available:"
|
||||
},
|
||||
{
|
||||
"shell": { "code": "nvidia-smi -L\nnvidia-container-cli --version" }
|
||||
"shell": {
|
||||
"code": "nvidia-smi -L\nnvidia-container-cli --version"
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "On a host where the driver was installed by other means, the Toolkit is installed from the official stable repository:"
|
||||
@@ -159,7 +280,9 @@
|
||||
"p": "The inventory OCI manager Apps uses is the output of:"
|
||||
},
|
||||
{
|
||||
"shell": { "code": "nvidia-container-cli list --device all --libraries --binaries --firmwares --ipcs" }
|
||||
"shell": {
|
||||
"code": "nvidia-container-cli list --device all --libraries --binaries --firmwares --ipcs"
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
@@ -170,10 +293,26 @@
|
||||
{
|
||||
"cards": {
|
||||
"items": [
|
||||
{ "icon": "cpu", "title": "Inventory from the driver", "body": "<code>nvidia-container-cli</code> lists the device nodes, binaries, firmware and libraries of the installed driver." },
|
||||
{ "icon": "refresh", "title": "No fixed version", "body": "The template does not name library files. The profile is generated from the current host." },
|
||||
{ "icon": "shield", "title": "Read-only mounts", "body": "The host libraries are mounted read-only instead of being copied into the container." },
|
||||
{ "icon": "hardDrive", "title": "Driver changes", "body": "After a driver change the inventory is generated again before the affected LXCs start." }
|
||||
{
|
||||
"icon": "cpu",
|
||||
"title": "Inventory from the driver",
|
||||
"body": "<code>nvidia-container-cli</code> lists the device nodes, binaries, firmware and libraries of the installed driver."
|
||||
},
|
||||
{
|
||||
"icon": "refresh",
|
||||
"title": "No fixed version",
|
||||
"body": "The template does not name library files. The profile is generated from the current host."
|
||||
},
|
||||
{
|
||||
"icon": "shield",
|
||||
"title": "Read-only mounts",
|
||||
"body": "The host libraries are mounted read-only instead of being copied into the container."
|
||||
},
|
||||
{
|
||||
"icon": "hardDrive",
|
||||
"title": "Driver changes",
|
||||
"body": "After a driver change the inventory is generated again before the affected LXCs start."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -209,12 +348,32 @@
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": ["Request", "Translation", "Scope"],
|
||||
"headers": [
|
||||
"Request",
|
||||
"Translation",
|
||||
"Scope"
|
||||
],
|
||||
"rows": [
|
||||
["<code>/dev/dvb</code>, <code>/dev/snd</code> or <code>/dev/bus/usb</code>", "Each character node of the tree gets its own <code>devN</code> entry with the host mode and GID", "Only the requested tree, not the rest of <code>/dev</code>"],
|
||||
["<code>/dev/fuse</code>", "The node and, when the profile needs it, the <code>fuse=1</code> feature", "FUSE alone does not publish mounts to other LXCs"],
|
||||
["<code>/dev/net/tun</code>", "A <code>devN</code> entry at the same path inside the LXC", "The VPN or network configuration stays in the application"],
|
||||
["<code>/dev/kvm</code>", "A validated <code>devN</code> entry", "Offered only when the contract asks for it"]
|
||||
[
|
||||
"<code>/dev/dvb</code>, <code>/dev/snd</code> or <code>/dev/bus/usb</code>",
|
||||
"Each character node of the tree gets its own <code>devN</code> entry with the host mode and GID",
|
||||
"Only the requested tree, not the rest of <code>/dev</code>"
|
||||
],
|
||||
[
|
||||
"<code>/dev/fuse</code>",
|
||||
"The node and, when the profile needs it, the <code>fuse=1</code> feature",
|
||||
"FUSE alone does not publish mounts to other LXCs"
|
||||
],
|
||||
[
|
||||
"<code>/dev/net/tun</code>",
|
||||
"A <code>devN</code> entry at the same path inside the LXC",
|
||||
"The VPN or network configuration stays in the application"
|
||||
],
|
||||
[
|
||||
"<code>/dev/kvm</code>",
|
||||
"A validated <code>devN</code> entry",
|
||||
"Offered only when the contract asks for it"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
"The new image is verified layer by layer before the CT stops. A download that arrives damaged is fetched a second time; an image already cached that fails the check is downloaded again.",
|
||||
"Settings changed in Proxmox VE after the installation (memory, swap, cores, CPU limit, CPU priority, start with the node) are kept and carried into the new contract.",
|
||||
"The LAN interface that the Arr suite and multi-container applications add (<code>net1</code>) and the start order (<code>startup</code>) are given back to the new container as they are.",
|
||||
"A host directory is recognised by its path and by the filesystem it is on, not by the device name the host gives its disk, so a USB or network disk that comes back under another name is still the same directory. When its disk is not connected, the update stops before the CT is stopped and names the directory that is missing.",
|
||||
"Any other difference between the CT and its contract stops the update before the CT is stopped."
|
||||
]
|
||||
}
|
||||
|
||||
@@ -28,12 +28,30 @@
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{ "title": "Required paths", "body": "<code>/config</code>, <code>/data</code>, libraries, downloads and every volume the application declares are listed." },
|
||||
{ "title": "Location", "body": "Each path is placed on a disk of the container or on an existing host directory." },
|
||||
{ "title": "Storage and size", "body": "A container disk is created on a Proxmox VE storage with the size given. The default installation uses <code>local-lvm</code>; the advanced installation asks the storage of each path right before its size and proposes the one of the rootfs. It appears as <code>vm-VMID-disk-N</code> and is attached as <code>mpN</code>." },
|
||||
{ "title": "Host directory", "body": "A host directory is given by its path. A directory that does not exist is created, owned by the user the container maps." },
|
||||
{ "title": "Additional paths", "body": "More pairs of host path or volume and container path can be added before installing." },
|
||||
{ "title": "Summary", "body": "The complete mapping is shown before the CT is created and is stored in its instance contract." }
|
||||
{
|
||||
"title": "Required paths",
|
||||
"body": "<code>/config</code>, <code>/data</code>, libraries, downloads and every volume the application declares are listed."
|
||||
},
|
||||
{
|
||||
"title": "Location",
|
||||
"body": "Each path is placed on a disk of the container or on an existing host directory."
|
||||
},
|
||||
{
|
||||
"title": "Storage and size",
|
||||
"body": "A container disk is created on a Proxmox VE storage with the size given. The default installation asks once for the storage of the container and its data when the node has more than one; the advanced installation asks the storage of each path right before its size and proposes the one of the rootfs. It appears as <code>vm-VMID-disk-N</code> and is attached as <code>mpN</code>."
|
||||
},
|
||||
{
|
||||
"title": "Host directory",
|
||||
"body": "A host directory is given by its path. A directory that does not exist is created, owned by the user the container maps."
|
||||
},
|
||||
{
|
||||
"title": "Additional paths",
|
||||
"body": "More pairs of host path or volume and container path can be added before installing."
|
||||
},
|
||||
{
|
||||
"title": "Summary",
|
||||
"body": "The complete mapping is shown before the CT is created and is stored in its instance contract."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -45,20 +63,55 @@
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": ["Property", "Container disk", "Host directory"],
|
||||
"headers": [
|
||||
"Property",
|
||||
"Container disk",
|
||||
"Host directory"
|
||||
],
|
||||
"rows": [
|
||||
["In the configuration", "<code>mpN: STORAGE:vm-VMID-disk-N,mp=/config,backup=1,size=16G</code>", "<code>mpN: /mnt/oci-shared/media,mp=/data/media</code>"],
|
||||
["Container backup (vzdump)", "Included, with <code>backup=1</code>", "Not included"],
|
||||
["Size", "Fixed; grown with a resize of the mount point", "The free space of the host filesystem or dataset"],
|
||||
["Other containers", "Mounted only by its own container", "The same directory can be mounted in several containers"],
|
||||
["Snapshots and restore", "Managed by Proxmox VE together with the CT", "Managed on the host storage"],
|
||||
["Removing the application", "Deleted with the container", "Kept, with its content"],
|
||||
["Moving the CT to another node", "Moves with the CT", "The same path has to exist on the other node"]
|
||||
[
|
||||
"In the configuration",
|
||||
"<code>mpN: STORAGE:vm-VMID-disk-N,mp=/config,backup=1,size=16G</code>",
|
||||
"<code>mpN: /mnt/oci-shared/media,mp=/data/media</code>"
|
||||
],
|
||||
[
|
||||
"Container backup (vzdump)",
|
||||
"Included, with <code>backup=1</code>",
|
||||
"Not included"
|
||||
],
|
||||
[
|
||||
"Size",
|
||||
"Fixed; grown with a resize of the mount point",
|
||||
"The free space of the host filesystem or dataset"
|
||||
],
|
||||
[
|
||||
"Other containers",
|
||||
"Mounted only by its own container",
|
||||
"The same directory can be mounted in several containers"
|
||||
],
|
||||
[
|
||||
"Snapshots and restore",
|
||||
"Managed by Proxmox VE together with the CT",
|
||||
"Managed on the host storage"
|
||||
],
|
||||
[
|
||||
"Removing the application",
|
||||
"Deleted with the container",
|
||||
"Kept, with its content"
|
||||
],
|
||||
[
|
||||
"Moving the CT to another node",
|
||||
"Moves with the CT",
|
||||
"The same path has to exist on the other node"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "The rootfs is reserved for the binaries and the content of the image. An update or a recreation replaces it without touching either kind of mount point."
|
||||
},
|
||||
{
|
||||
"p": "A host directory is mounted with everything the host has mounted inside it. A directory such as <code>/mnt/pve</code> shows its network shares, disks and datasets in the container, and what the host mounts or unmounts there later appears or disappears without restarting the container. A directory added as read-only is read-only together with what is mounted inside it when the container starts. A filesystem the host mounts afterwards arrives with the permissions the host mounts it with, and becomes read-only as well when the container is restarted."
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -78,9 +131,18 @@
|
||||
{
|
||||
"flow": {
|
||||
"nodes": [
|
||||
{ "label": "Contract", "detail": "/config" },
|
||||
{ "label": "Location", "detail": "container disk\nor host directory" },
|
||||
{ "label": "LXC", "detail": "always /config\nfor the application" }
|
||||
{
|
||||
"label": "Contract",
|
||||
"detail": "/config"
|
||||
},
|
||||
{
|
||||
"label": "Location",
|
||||
"detail": "container disk\nor host directory"
|
||||
},
|
||||
{
|
||||
"label": "LXC",
|
||||
"detail": "always /config\nfor the application"
|
||||
}
|
||||
],
|
||||
"caption": "The application sees the path the image publishes; only where it is stored changes."
|
||||
}
|
||||
@@ -94,7 +156,10 @@
|
||||
{
|
||||
"mermaid": {
|
||||
"chartCode": "flowchart TB\n H[\"{{host}}<br/>/mnt/oci-shared/media\"]\n H --> Q[\"qBittorrent<br/>/data\"]\n H --> J[\"Jellyfin<br/>/data\"]\n H --> R[\"Radarr / Sonarr<br/>/data\"]\n Q -. \"{{config}}\" .-> QV[(\"/config mpN\")]\n J -. \"{{config}}\" .-> JV[(\"/config mpN\")]\n R -. \"{{config}}\" .-> RV[(\"/config mpN\")]",
|
||||
"labels": { "host": "Host directory", "config": "own configuration" }
|
||||
"labels": {
|
||||
"host": "Host directory",
|
||||
"config": "own configuration"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -110,10 +175,22 @@
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{ "title": "Container and remote", "body": "The VMID of the Rclone container, the exact name of the remote and, optionally, a path inside it." },
|
||||
{ "title": "Mount name and cache", "body": "The name of the mount and the VFS cache mode: <code>off</code>, <code>minimal</code>, <code>writes</code> or <code>full</code> (default)." },
|
||||
{ "title": "Published views", "body": "A common root, <code>/mnt/oci-shared</code> by default, holds a read/write view in <code>/mnt/oci-shared/remotes/NAME</code> and a read-only view in <code>/mnt/oci-shared/remotes-ro/NAME</code>." },
|
||||
{ "title": "Activation", "body": "After a confirmation, the CT is stopped, its start command and a Proxmox VE hookscript are set, and it is started again. The operation waits until both views are mounted on the host." }
|
||||
{
|
||||
"title": "Container and remote",
|
||||
"body": "The VMID of the Rclone container, the exact name of the remote and, optionally, a path inside it."
|
||||
},
|
||||
{
|
||||
"title": "Mount name and cache",
|
||||
"body": "The name of the mount and the VFS cache mode: <code>off</code>, <code>minimal</code>, <code>writes</code> or <code>full</code> (default)."
|
||||
},
|
||||
{
|
||||
"title": "Published views",
|
||||
"body": "A common root, <code>/mnt/oci-shared</code> by default, holds a read/write view in <code>/mnt/oci-shared/remotes/NAME</code> and a read-only view in <code>/mnt/oci-shared/remotes-ro/NAME</code>."
|
||||
},
|
||||
{
|
||||
"title": "Activation",
|
||||
"body": "After a confirmation, the CT is stopped, its start command and a Proxmox VE hookscript are set, and it is started again. The operation waits until both views are mounted on the host."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -133,17 +210,34 @@
|
||||
{
|
||||
"cards": {
|
||||
"items": [
|
||||
{ "icon": "network", "title": "Single application", "body": "Bridge and DHCP or a fixed CIDR address are chosen. The LXC has an address of its own and the summary shows the complete URLs of the services." },
|
||||
{ "icon": "waypoints", "title": "Multi-container application", "body": "A free subnet is found, a persistent private bridge is created and each member (application, database, cache) gets a fixed address on it." }
|
||||
{
|
||||
"icon": "network",
|
||||
"title": "Single application",
|
||||
"body": "Bridge and DHCP or a fixed CIDR address are chosen. The LXC has an address of its own and the summary shows the complete URLs of the services."
|
||||
},
|
||||
{
|
||||
"icon": "waypoints",
|
||||
"title": "Multi-container application",
|
||||
"body": "A free subnet is found, a persistent private bridge is created and each member (application, database, cache) gets a fixed address on it."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"flow": {
|
||||
"nodes": [
|
||||
{ "label": "LAN", "detail": "reachable address\nmain service only" },
|
||||
{ "label": "Main LXC", "detail": "web / API\nLAN + private network" },
|
||||
{ "label": "Private network", "detail": "PostgreSQL · Valkey · ML\nfixed addresses" }
|
||||
{
|
||||
"label": "LAN",
|
||||
"detail": "reachable address\nmain service only"
|
||||
},
|
||||
{
|
||||
"label": "Main LXC",
|
||||
"detail": "web / API\nLAN + private network"
|
||||
},
|
||||
{
|
||||
"label": "Private network",
|
||||
"detail": "PostgreSQL · Valkey · ML\nfixed addresses"
|
||||
}
|
||||
],
|
||||
"caption": "Dependencies talk over the private network and have no address on the LAN."
|
||||
}
|
||||
@@ -174,13 +268,37 @@
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": ["Element", "In the CT vzdump", "Where it is kept"],
|
||||
"headers": [
|
||||
"Element",
|
||||
"In the CT vzdump",
|
||||
"Where it is kept"
|
||||
],
|
||||
"rows": [
|
||||
["OCI rootfs", "Yes", "The CT backup; it can also be rebuilt from the image and the contract"],
|
||||
["Container disk with <code>backup=1</code>", "Yes", "The CT backup"],
|
||||
["Host directory", "No", "The backup of the host storage"],
|
||||
["Instance contract", "Yes, the copy carried inside the CT", "<code>/.proxmenux/oci-record.json</code> inside the CT; additional host and cluster copies are kept separately"],
|
||||
["Multi-container application", "Each member in its own backup", "The backups of every member, plus the stack contract and its bridge on the host"]
|
||||
[
|
||||
"OCI rootfs",
|
||||
"Yes",
|
||||
"The CT backup; it can also be rebuilt from the image and the contract"
|
||||
],
|
||||
[
|
||||
"Container disk with <code>backup=1</code>",
|
||||
"Yes",
|
||||
"The CT backup"
|
||||
],
|
||||
[
|
||||
"Host directory",
|
||||
"No",
|
||||
"The backup of the host storage"
|
||||
],
|
||||
[
|
||||
"Instance contract",
|
||||
"Yes, the copy carried inside the CT",
|
||||
"<code>/.proxmenux/oci-record.json</code> inside the CT; additional host and cluster copies are kept separately"
|
||||
],
|
||||
[
|
||||
"Multi-container application",
|
||||
"Each member in its own backup",
|
||||
"The backups of every member, plus the stack contract and its bridge on the host"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user