mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-12-15 16:46:24 +00:00
Update web
This commit is contained in:
@@ -64,4 +64,4 @@ export default async function CodeOfConductPage() {
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -206,4 +206,4 @@ export default function FaqPage() {
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -84,7 +84,7 @@ export default function VirtualMachinesPage() {
|
||||
</div>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/vm-creation-menu.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/vm-creation-menu.png"
|
||||
alt="Virtual Machines Creation Menu"
|
||||
caption="Virtual Machines Creation Menu"
|
||||
/>
|
||||
|
||||
@@ -241,7 +241,7 @@ export default function Page() {
|
||||
<p>You can upload custom loaders from the local storage options:</p>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/add_loader.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/add_loader.png"
|
||||
alt="Add Custom Loader"
|
||||
caption="Add Custom Loader"
|
||||
/>
|
||||
@@ -345,7 +345,7 @@ export default function Page() {
|
||||
</p>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_0_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_0_1.png"
|
||||
alt="Arc Loader Web Interface"
|
||||
caption="Arc Loader Web Interface"
|
||||
/>
|
||||
@@ -355,7 +355,7 @@ export default function Page() {
|
||||
</p>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_1_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_1_1.png"
|
||||
alt="Arc Loader Terminal Interface"
|
||||
caption="Arc Loader Terminal Interface"
|
||||
/>
|
||||
@@ -372,7 +372,7 @@ export default function Page() {
|
||||
</p>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_0_2.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_0_2.png"
|
||||
alt="RR Command Example"
|
||||
caption="RR Loader Web Interface"
|
||||
/>
|
||||
@@ -382,7 +382,7 @@ export default function Page() {
|
||||
</p>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_1_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_1_1.png"
|
||||
alt="RR Loader Interface"
|
||||
caption="RR Loader Terminal Interface"
|
||||
/>
|
||||
@@ -399,7 +399,7 @@ export default function Page() {
|
||||
</p>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_0_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_0_1.png"
|
||||
alt="TinyCore Loader Interface"
|
||||
caption="TinyCore Loader Web Interface"
|
||||
/>
|
||||
@@ -410,7 +410,7 @@ export default function Page() {
|
||||
</p>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_1_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_1_1.png"
|
||||
alt="TinyCore Loader Interface"
|
||||
caption="TinyCore Loader Terminal Interface"
|
||||
/>
|
||||
@@ -433,7 +433,7 @@ export default function Page() {
|
||||
{activeLoader === "arc" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_2_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_2_1.png"
|
||||
alt="Arc Model Selection"
|
||||
caption="Arc Model Selection"
|
||||
/>
|
||||
@@ -443,7 +443,7 @@ export default function Page() {
|
||||
{activeLoader === "rr" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_2_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_2_1.png"
|
||||
alt="RR Model Selection"
|
||||
caption="RR Model Selection"
|
||||
/>
|
||||
@@ -453,7 +453,7 @@ export default function Page() {
|
||||
{activeLoader === "tinycore" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_2_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_2_1.png"
|
||||
alt="TinyCore Model Selection"
|
||||
caption="TinyCore Model Selection"
|
||||
/>
|
||||
@@ -476,12 +476,12 @@ export default function Page() {
|
||||
{activeLoader === "arc" && (
|
||||
<div className="flex flex-col space-y-16">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_3_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_3_1.png"
|
||||
alt="Arc Version Selection - Step 1"
|
||||
caption="Arc Version Selection - Step 1"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_3_2.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_3_2.png"
|
||||
alt="Arc Version Selection - Step 2"
|
||||
caption="Arc Version Selection - Step 2"
|
||||
/>
|
||||
@@ -491,17 +491,17 @@ export default function Page() {
|
||||
{activeLoader === "rr" && (
|
||||
<div className="flex flex-col space-y-16">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_3_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_1.png"
|
||||
alt="RR Version Selection - Step 1"
|
||||
caption="RR Version Selection - Step 1"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_3_2.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_2.png"
|
||||
alt="RR Version Selection - Step 2"
|
||||
caption="RR Version Selection - Step 2"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_3_3.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_3.png"
|
||||
alt="RR Version Selection - Step 3"
|
||||
caption="RR Version Selection - Step 3"
|
||||
/>
|
||||
@@ -511,12 +511,12 @@ export default function Page() {
|
||||
{activeLoader === "tinycore" && (
|
||||
<div className="flex flex-col space-y-16">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_3_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_3_1.png"
|
||||
alt="TinyCore Version Selection - Step 1"
|
||||
caption="TinyCore Version Selection - Step 1"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_3_2.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_3_2.png"
|
||||
alt="TinyCore Version Selection - Step 2"
|
||||
caption="TinyCore Version Selection - Step 2"
|
||||
/>
|
||||
@@ -541,7 +541,7 @@ export default function Page() {
|
||||
automatically reboot once the process is complete.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_4_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_1.png"
|
||||
alt="Arc Auto Configuration"
|
||||
caption="Arc Auto Configuration"
|
||||
/>
|
||||
@@ -550,22 +550,22 @@ export default function Page() {
|
||||
the loader:
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_4_2.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_2.png"
|
||||
alt="Arc Manual Configuration"
|
||||
caption="Arc Manual Configuration"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_4_3.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_3.png"
|
||||
alt="Arc SN/Mac Configuration"
|
||||
caption="Arc SN/Mac Configuration"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_4_4.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_4.png"
|
||||
alt="Arc Sata Portmap"
|
||||
caption="Arc Sata Portmap (use the recommended option)"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_4_5.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_5.png"
|
||||
alt="Arc Addons Selection"
|
||||
caption="Arc Addons Selection"
|
||||
/>
|
||||
@@ -575,17 +575,17 @@ export default function Page() {
|
||||
{activeLoader === "rr" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_4_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_1.png"
|
||||
alt="RR Addon Step 1"
|
||||
caption="RR Addon Step 1"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_4_2.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_2.png"
|
||||
alt="RR Addon Step 2"
|
||||
caption="RR Addon Step 2 - Press to add addons"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_4_3.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_3.png"
|
||||
alt="RR Addon Step 3"
|
||||
caption="RR Addon Step 3 - Select the one you want by clicking on it. If you want to add more, repeat the process from images 2.4.2 and 2.4.3"
|
||||
/>
|
||||
@@ -595,22 +595,22 @@ export default function Page() {
|
||||
{activeLoader === "tinycore" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_4_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_1.png"
|
||||
alt="TinyCore SN Configuration"
|
||||
caption="TinyCore SN Configuration"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_4_2.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_2.png"
|
||||
alt="TinyCore Random Option"
|
||||
caption="TinyCore Random Option - The random option is recommended"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_4_3.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_3.png"
|
||||
alt="TinyCore MAC Configuration"
|
||||
caption="TinyCore MAC Configuration"
|
||||
/>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_4_4.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_4.png"
|
||||
alt="TinyCore VM MAC"
|
||||
caption="TinyCore VM MAC - Choose to use your VM's MAC or a random one"
|
||||
/>
|
||||
@@ -634,7 +634,7 @@ export default function Page() {
|
||||
{activeLoader === "arc" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_5_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_5_1.png"
|
||||
alt="Arc Build Loader"
|
||||
caption="Arc Build Loader"
|
||||
/>
|
||||
@@ -644,7 +644,7 @@ export default function Page() {
|
||||
{activeLoader === "rr" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_5_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_5_1.png"
|
||||
alt="RR Build Loader"
|
||||
caption="RR Build Loader"
|
||||
/>
|
||||
@@ -654,7 +654,7 @@ export default function Page() {
|
||||
{activeLoader === "tinycore" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_5_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_5_1.png"
|
||||
alt="TinyCore Build Loader"
|
||||
caption="TinyCore Build Loader"
|
||||
/>
|
||||
@@ -677,7 +677,7 @@ export default function Page() {
|
||||
{activeLoader === "arc" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/arc_1_6_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_6_1.png"
|
||||
alt="Arc Boot Loader"
|
||||
caption="Arc Boot Loader"
|
||||
/>
|
||||
@@ -687,7 +687,7 @@ export default function Page() {
|
||||
{activeLoader === "rr" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/rr_2_6_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_6_1.png"
|
||||
alt="RR Boot Loader"
|
||||
caption="RR Boot Loader"
|
||||
/>
|
||||
@@ -697,7 +697,7 @@ export default function Page() {
|
||||
{activeLoader === "tinycore" && (
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/tinycore_3_6_1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_6_1.png"
|
||||
alt="TinyCore Boot Loader"
|
||||
caption="TinyCore Boot Loader"
|
||||
/>
|
||||
@@ -719,7 +719,7 @@ export default function Page() {
|
||||
<p className="mb-6">Follow the on-screen steps to complete the DSM installation.</p>
|
||||
<div className="flex flex-col space-y-8">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/install_DSM.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/install_DSM.png"
|
||||
alt="DSM Setup"
|
||||
caption="DSM Setup Screen"
|
||||
/>
|
||||
@@ -729,7 +729,7 @@ export default function Page() {
|
||||
is nearing completion.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/finish_install_DSM.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/synology/finish_install_DSM.png"
|
||||
alt="Installation Complete"
|
||||
caption="Installation Complete"
|
||||
/>
|
||||
@@ -833,3 +833,4 @@ function StepNumber({ number }: { number: number }) {
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ export default function LinuxVMContent() {
|
||||
</div>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/menu_linux.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/menu_linux.png"
|
||||
alt="Linux VM Menu"
|
||||
caption="Linux VM Creation Menu in ProxMenux"
|
||||
/>
|
||||
@@ -351,7 +351,7 @@ export default function LinuxVMContent() {
|
||||
|
||||
<div className="mt-4">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/distro_linux.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/distro_linux.png"
|
||||
alt="Linux Distribution Selection"
|
||||
caption="Linux Distribution Selection in ProxMenux"
|
||||
/>
|
||||
@@ -411,7 +411,7 @@ export default function LinuxVMContent() {
|
||||
|
||||
<div className="mt-4">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/local-store.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/local-store.png"
|
||||
alt="Local ISO Selection Menu"
|
||||
caption="Local ISO Selection Menu in ProxMenux"
|
||||
/>
|
||||
|
||||
@@ -164,7 +164,7 @@ export default function SystemNASPage() {
|
||||
</div>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/system-nas-menu.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/system-nas-menu.png"
|
||||
alt="System NAS Menu"
|
||||
caption="System NAS Menu"
|
||||
/>
|
||||
|
||||
@@ -468,7 +468,7 @@ export default function OtherNASSystemsPage() {
|
||||
<h4 className="font-medium mb-2">Shell Interface</h4>
|
||||
<div className="border rounded-md overflow-hidden">
|
||||
<Image
|
||||
src="/images/design-mode/truenas-scale-shell.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/truenas/truenas-scale-shell.png"
|
||||
alt="TrueNAS SCALE Shell Interface"
|
||||
width={600}
|
||||
height={400}
|
||||
@@ -480,7 +480,7 @@ export default function OtherNASSystemsPage() {
|
||||
<h4 className="font-medium mb-2">Web Interface</h4>
|
||||
<div className="border rounded-md overflow-hidden">
|
||||
<Image
|
||||
src="/images/design-mode/truenas-scale-web.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/truenas/truenas-scale-web.png"
|
||||
alt="TrueNAS SCALE Web Interface"
|
||||
width={600}
|
||||
height={400}
|
||||
@@ -510,7 +510,7 @@ export default function OtherNASSystemsPage() {
|
||||
<h4 className="font-medium mb-2">Shell Interface</h4>
|
||||
<div className="border rounded-md overflow-hidden">
|
||||
<Image
|
||||
src="/images/design-mode/truenas-core-shell.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/truenas/truenas-core-shell.png"
|
||||
alt="TrueNAS CORE Shell Interface"
|
||||
width={600}
|
||||
height={400}
|
||||
@@ -522,7 +522,7 @@ export default function OtherNASSystemsPage() {
|
||||
<h4 className="font-medium mb-2">Web Interface</h4>
|
||||
<div className="border rounded-md overflow-hidden">
|
||||
<Image
|
||||
src="/images/design-mode/truenas-core-web.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/truenas/truenas-core-web.png"
|
||||
alt="TrueNAS CORE Web Interface"
|
||||
width={600}
|
||||
height={400}
|
||||
@@ -552,7 +552,7 @@ export default function OtherNASSystemsPage() {
|
||||
<h4 className="font-medium mb-2">Shell Interface</h4>
|
||||
<div className="border rounded-md overflow-hidden">
|
||||
<Image
|
||||
src="/images/design-mode/openmediavault-shell.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/openmediavault/openmediavault-shell.png"
|
||||
alt="OpenMediaVault Shell Interface"
|
||||
width={600}
|
||||
height={400}
|
||||
@@ -564,7 +564,7 @@ export default function OtherNASSystemsPage() {
|
||||
<h4 className="font-medium mb-2">Web Interface</h4>
|
||||
<div className="border rounded-md overflow-hidden">
|
||||
<Image
|
||||
src="/images/design-mode/openmediavault-web.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/openmediavault/openmediavault-web.png"
|
||||
alt="OpenMediaVault Web Interface"
|
||||
width={600}
|
||||
height={400}
|
||||
@@ -594,7 +594,7 @@ export default function OtherNASSystemsPage() {
|
||||
<h4 className="font-medium mb-2">Shell Interface</h4>
|
||||
<div className="border rounded-md overflow-hidden">
|
||||
<Image
|
||||
src="/images/design-mode/rockstor-shell.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/rockstor/rockstor-shell.png"
|
||||
alt="Rockstor Shell Interface"
|
||||
width={600}
|
||||
height={400}
|
||||
@@ -606,7 +606,7 @@ export default function OtherNASSystemsPage() {
|
||||
<h4 className="font-medium mb-2">Web Interface</h4>
|
||||
<div className="border rounded-md overflow-hidden">
|
||||
<Image
|
||||
src="/images/design-mode/rockstor-web.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/rockstor/rockstor-web.png"
|
||||
alt="Rockstor Web Interface"
|
||||
width={600}
|
||||
height={400}
|
||||
|
||||
@@ -76,7 +76,7 @@ export default function WindowsVMPage() {
|
||||
</div>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/menu_windows.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/menu_windows.png"
|
||||
alt="Windows VM Menu"
|
||||
caption="Windows VM Creation Menu in ProxMenux"
|
||||
/>
|
||||
@@ -412,7 +412,7 @@ export default function WindowsVMPage() {
|
||||
|
||||
<div className="mt-4">
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/local-store-windows.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/local-store-windows.png"
|
||||
alt="Local ISO Selection Menu"
|
||||
caption="Local ISO Selection Menu in ProxMenux"
|
||||
/>
|
||||
@@ -492,7 +492,7 @@ export default function WindowsVMPage() {
|
||||
During Windows installation, if no disks are shown on the “Where do you want to install Windows?” screen, it means the required storage drivers for your selected disk interface (such as SCSI or VirtIO) are not available. You'll need to load them manually.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/virtio-step-1.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/windows/virtio-step-1.png"
|
||||
alt="Windows installation - No disks shown"
|
||||
caption="Windows installation screen with no disks available"
|
||||
/>
|
||||
@@ -505,7 +505,7 @@ export default function WindowsVMPage() {
|
||||
Click the “Load driver” button to browse the mounted VirtIO ISO. This will allow you to load the necessary storage drivers so Windows can detect the virtual disk.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/virtio-step-2.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/windows/virtio-step-2.png"
|
||||
alt="Windows installation - Load driver button"
|
||||
caption="Click 'Load driver' to browse for VirtIO drivers"
|
||||
/>
|
||||
@@ -519,7 +519,7 @@ export default function WindowsVMPage() {
|
||||
For example, the <code className="bg-gray-100 px-1 py-0.5 rounded">viostor</code> folder contains storage drivers, and you'll find subfolders organized by version (e.g., Windows 10, 11, Server).
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/virtio-step-3.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/windows/virtio-step-3.png"
|
||||
alt="Windows installation - Browse for driver"
|
||||
caption="Browse to the appropriate driver folder on the VirtIO ISO"
|
||||
/>
|
||||
@@ -532,7 +532,7 @@ export default function WindowsVMPage() {
|
||||
After selecting the folder, Windows will list the available drivers. Choose the appropriate one — usually “Red Hat VirtIO SCSI controller” — and click “Next” to proceed with the installation.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/virtio-step-4.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/windows/virtio-step-4.png"
|
||||
alt="Windows installation - Select driver"
|
||||
caption="Select the appropriate VirtIO driver for your disk interface"
|
||||
/>
|
||||
@@ -545,7 +545,7 @@ export default function WindowsVMPage() {
|
||||
<strong>Pro Tip:</strong> If you selected <strong>VirtIO</strong> as the network interface, Windows will not recognize it by default. To enable internet access during installation, load the VirtIO network driver from the ISO by browsing to the <code className="bg-gray-100 px-1 py-0.5 rounded">NetKVM</code> folder and selecting the correct subfolder for your Windows version.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/virtio-step-5.png"
|
||||
src="https://macrimi.github.io/ProxMenux/vm/windows/virtio-step-5.png"
|
||||
alt="Windows installation - Network drivers"
|
||||
caption="Select the appropriate VirtIO network driver to enable internet access"
|
||||
/>
|
||||
|
||||
@@ -31,7 +31,7 @@ export default function IGPUAccelerationLXC() {
|
||||
<Steps>
|
||||
<Steps.Step title="Select an LXC Container">
|
||||
<p>You will be presented with a list of your LXC containers to choose from.</p>
|
||||
<Image src="/images/design-mode/select-container.png" alt="Select LXC Container" width={800} height={400} className="rounded shadow-lg" />
|
||||
<Image src="https://macrimi.github.io/ProxMenux/igpu/select-container.png" alt="Select LXC Container" width={800} height={400} className="rounded shadow-lg" />
|
||||
</Steps.Step>
|
||||
<Steps.Step title="Modify Container Configuration">
|
||||
<p>The script applies the following changes to your container:</p>
|
||||
|
||||
@@ -97,7 +97,7 @@ export default function HelpAndInfoPage() {
|
||||
</div>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/help-info-menu.png"
|
||||
src="https://macrimi.github.io/ProxMenux/help/help-info-menu.png"
|
||||
alt="Help and Info Menu"
|
||||
caption="Help and Info Menu"
|
||||
/>
|
||||
|
||||
@@ -46,7 +46,7 @@ export default function InstallationPage() {
|
||||
<h2 className="text-xl font-semibold mt-6 mb-2">Installation Progress</h2>
|
||||
<p className="mb-2">The installation process will look like this:</p>
|
||||
<div className="w-full mb-4">
|
||||
<Image src="/images/design-mode/install.png" alt="ProxMenux Installation" width={800} height={400} className="rounded shadow-lg" />
|
||||
<Image src="https://macrimi.github.io/ProxMenux/install/install.png" alt="ProxMenux Installation" width={800} height={400} className="rounded shadow-lg" />
|
||||
</div>
|
||||
|
||||
<h2 className="text-xl font-semibold mt-6 mb-2">How to Use</h2>
|
||||
@@ -78,4 +78,4 @@ export default function InstallationPage() {
|
||||
</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ export default function IntroductionPage() {
|
||||
{/* Logo + Title Section */}
|
||||
<div className="flex items-start mb-6">
|
||||
<Image
|
||||
src="/images/design-mode/logo.png"
|
||||
src="https://macrimi.github.io/ProxMenux/logo.png"
|
||||
alt="ProxMenux Logo"
|
||||
width={80}
|
||||
height={80}
|
||||
|
||||
@@ -19,3 +19,4 @@ export default function DocsLayout({ children }: { children: React.ReactNode })
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ export default function BasicSettingsPage() {
|
||||
|
||||
<div className="mb-6">
|
||||
<img
|
||||
src="/images/design-mode/menu_utilities.png"
|
||||
src="https://macrimi.github.io/ProxMenux/basic/menu_utilities.png"
|
||||
alt="System Utilities Selection Menu"
|
||||
className="rounded shadow-lg border border-gray-200"
|
||||
/>
|
||||
@@ -83,7 +83,7 @@ export default function BasicSettingsPage() {
|
||||
<p className="mt-2">Example usage:</p>
|
||||
<code className="block bg-gray-100 p-2 rounded">dialog --title "Hello" --msgbox "Hello, World!" 10 20</code>
|
||||
<img
|
||||
src="/images/design-mode/dialog.png"
|
||||
src="https://macrimi.github.io/ProxMenux/basic/dialog.png"
|
||||
alt="Dialog Example"
|
||||
className="mt-2 rounded shadow-lg"
|
||||
/>
|
||||
@@ -103,7 +103,7 @@ export default function BasicSettingsPage() {
|
||||
<p className="mt-2">To start htop, simply type:</p>
|
||||
<code className="block bg-gray-100 p-2 rounded">htop</code>
|
||||
<img
|
||||
src="/images/design-mode/htop.png"
|
||||
src="https://macrimi.github.io/ProxMenux/basic/htop.png"
|
||||
alt="htop Example"
|
||||
className="mt-2 rounded shadow-lg"
|
||||
/>
|
||||
@@ -113,7 +113,7 @@ export default function BasicSettingsPage() {
|
||||
<p className="mt-2">To start btop, type:</p>
|
||||
<code className="block bg-gray-100 p-2 rounded">btop</code>
|
||||
<img
|
||||
src="/images/design-mode/btop.png"
|
||||
src="https://macrimi.github.io/ProxMenux/basic/btop.png"
|
||||
alt="btop Example"
|
||||
className="mt-2 rounded shadow-lg"
|
||||
/>
|
||||
@@ -123,7 +123,7 @@ export default function BasicSettingsPage() {
|
||||
<p className="mt-2">To start iftop (requires root):</p>
|
||||
<code className="block bg-gray-100 p-2 rounded">iftop</code>
|
||||
<img
|
||||
src="/images/design-mode/iftop.png"
|
||||
src="https://macrimi.github.io/ProxMenux/basic/iftop.png"
|
||||
alt="iftop Example"
|
||||
className="mt-2 rounded shadow-lg"
|
||||
/>
|
||||
@@ -133,7 +133,7 @@ export default function BasicSettingsPage() {
|
||||
<p className="mt-2">To start iotop (requires root):</p>
|
||||
<code className="block bg-gray-100 p-2 rounded">siotop</code>
|
||||
<img
|
||||
src="/images/design-mode/iotop.png"
|
||||
src="https://macrimi.github.io/ProxMenux/basic/iotop.png"
|
||||
alt="iotop Example"
|
||||
className="mt-2 rounded shadow-lg"
|
||||
/>
|
||||
@@ -155,7 +155,7 @@ export default function BasicSettingsPage() {
|
||||
<p className="mt-2">To start iptraf-ng:</p>
|
||||
<code className="block bg-gray-100 p-2 rounded">iptraf-ng</code>
|
||||
<img
|
||||
src="/images/design-mode/iptraf-ng.png"
|
||||
src="https://macrimi.github.io/ProxMenux/basic/iptraf-ng.png"
|
||||
alt="iptraf-ng Example"
|
||||
className="mt-2 rounded shadow-lg"
|
||||
/>
|
||||
@@ -212,7 +212,7 @@ export default function BasicSettingsPage() {
|
||||
</tbody>
|
||||
</table>
|
||||
<img
|
||||
src="/images/design-mode/tmux.png"
|
||||
src="https://macrimi.github.io/ProxMenux/basic/tmux.png"
|
||||
alt="tmux Example"
|
||||
className="mt-2 rounded shadow-lg"
|
||||
/>
|
||||
@@ -383,3 +383,4 @@ sudo apt-get install -y zfsutils-linux proxmox-backup-restore-image chrony
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -139,3 +139,4 @@ echo "DPkg::Post-Invoke { \\"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxl
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -95,3 +95,4 @@ fi
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -304,3 +304,4 @@ sudo sysctl -p /etc/sysctl.d/99-network-performance.conf
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -244,7 +244,7 @@ systemctl enable --now pve-ha-lrm pve-ha-crm corosync
|
||||
<div>
|
||||
<p className="font-semibold text-center">ProxMenux</p>
|
||||
<img
|
||||
src="/images/design-mode/proxmenux.png"
|
||||
src="https://macrimi.github.io/ProxMenux/fastfetch/proxmenux.png"
|
||||
alt="ProxMenux Logo"
|
||||
className="rounded shadow-lg"
|
||||
/>
|
||||
@@ -252,7 +252,7 @@ systemctl enable --now pve-ha-lrm pve-ha-crm corosync
|
||||
<div>
|
||||
<p className="font-semibold text-center">Proxmox</p>
|
||||
<img
|
||||
src="/images/design-mode/proxmox.png"
|
||||
src="https://macrimi.github.io/ProxMenux/fastfetch/proxmox.png"
|
||||
alt="Proxmox Logo"
|
||||
className="rounded shadow-lg"
|
||||
/>
|
||||
@@ -260,7 +260,7 @@ systemctl enable --now pve-ha-lrm pve-ha-crm corosync
|
||||
<div>
|
||||
<p className="font-semibold text-center">Helper-Scripts</p>
|
||||
<img
|
||||
src="/images/design-mode/helper-scripts.png"
|
||||
src="https://macrimi.github.io/ProxMenux/fastfetch/helper-scripts.png"
|
||||
alt="Helper-Scripts Logo"
|
||||
className="rounded shadow-lg"
|
||||
/>
|
||||
@@ -268,7 +268,7 @@ systemctl enable --now pve-ha-lrm pve-ha-crm corosync
|
||||
<div>
|
||||
<p className="font-semibold text-center">Home-Labs-Club</p>
|
||||
<img
|
||||
src="/images/design-mode/home-labs-club.png"
|
||||
src="https://macrimi.github.io/ProxMenux/fastfetch/home-labs-club.png"
|
||||
alt="Home-Labs-Club Logo"
|
||||
className="rounded shadow-lg"
|
||||
/>
|
||||
@@ -276,7 +276,7 @@ systemctl enable --now pve-ha-lrm pve-ha-crm corosync
|
||||
<div>
|
||||
<p className="font-semibold text-center">Proxmology</p>
|
||||
<img
|
||||
src="/images/design-mode/proxmology.png"
|
||||
src="https://macrimi.github.io/ProxMenux/fastfetch/proxmology.png"
|
||||
alt="Proxmology Logo"
|
||||
className="rounded shadow-lg"
|
||||
/>
|
||||
@@ -336,7 +336,7 @@ echo "clear && fastfetch" >> ~/.bashrc
|
||||
|
||||
<div className="mb-6 flex justify-center">
|
||||
<img
|
||||
src="/images/design-mode/figurine.png"
|
||||
src="https://macrimi.github.io/ProxMenux/figurine/figurine.png"
|
||||
alt="Figurine Example Output"
|
||||
className="rounded-md shadow-lg border border-gray-200"
|
||||
style={{ maxWidth: "100%" }}
|
||||
@@ -384,3 +384,4 @@ chmod +x "/etc/profile.d/figurine.sh"
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -139,3 +139,4 @@ export default function PerformanceSettingsPage() {
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -164,3 +164,4 @@ EOF
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -337,3 +337,4 @@ sudo systemctl restart systemd-journald
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -145,3 +145,4 @@ sudo systemctl start ksm
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,69 +1,163 @@
|
||||
import { Steps } from "@/components/ui/steps"
|
||||
import CopyableCode from "@/components/CopyableCode"
|
||||
import { HardDrive, ArrowRight } from "lucide-react"
|
||||
import { ImageWithCaption } from "@/components/ui/image-with-caption"
|
||||
import type { Metadata } from "next"
|
||||
|
||||
export const metadata = {
|
||||
title: "Disk Passthrough to a VM | ProxMenux Documentation",
|
||||
description: "Step-by-step guide to configure disk passthrough to a virtual machine in Proxmox VE using ProxMenux.",
|
||||
export const metadata: Metadata = {
|
||||
title: "Disk Passthrough to a CT | ProxMenux Documentation",
|
||||
description: "Step-by-step guide to configure disk passthrough to a container (CT) in Proxmox VE using ProxMenux.",
|
||||
openGraph: {
|
||||
title: "Disk Passthrough to a CT | ProxMenux Documentation",
|
||||
description: "Step-by-step guide to configure disk passthrough to a container (CT) in Proxmox VE using ProxMenux.",
|
||||
type: "article",
|
||||
url: "https://macrimi.github.io/ProxMenux/docs/disk-ct",
|
||||
images: [
|
||||
{
|
||||
url: "https://macrimi.github.io/ProxMenux/disk-ct/disk-selection.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Disk Passthrough to a CT",
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Disk Passthrough to a CT | ProxMenux Documentation",
|
||||
description: "Step-by-step guide to configure disk passthrough to a container (CT) in Proxmox VE using ProxMenux.",
|
||||
images: ["https://macrimi.github.io/ProxMenux/disk-ct/disk-selection.png"],
|
||||
},
|
||||
}
|
||||
|
||||
export default function DiskPassthroughVM() {
|
||||
export default function DiskPassthroughCT() {
|
||||
return (
|
||||
<div className="max-w-3xl mx-auto">
|
||||
<h1 className="text-3xl font-bold mb-6">Disk Passthrough to a VM</h1>
|
||||
|
||||
<div className="flex items-center mb-6">
|
||||
<HardDrive className="h-8 w-8 mr-2 text-blue-500" />
|
||||
<ArrowRight className="h-5 w-5 mr-2 text-gray-500" />
|
||||
<h1 className="text-3xl font-bold">
|
||||
Disk Passthrough to a <span className="text-blue-500">CT</span>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<p className="mb-4">
|
||||
This guide explains how to assign physical disks to virtual machines (VMs) in <strong>Proxmox VE</strong> using <strong>ProxMenux</strong>.
|
||||
Disk passthrough allows a VM to have direct access to a physical disk, providing improved performance and compatibility for certain applications.
|
||||
This guide explains how to assign a <strong>dedicated physical disk</strong> to a container (CT) in{" "}
|
||||
<strong>Proxmox VE</strong> using <strong>ProxMenux</strong>. Assigning a full disk to a container is useful
|
||||
when you need isolation, ease of access, or the ability to move the disk between systems, especially for
|
||||
services handling large volumes of data such as Samba, Nextcloud, or video surveillance software, among others.
|
||||
</p>
|
||||
|
||||
<h2 className="text-2xl font-semibold mt-8 mb-4">Overview</h2>
|
||||
<p className="mb-4">The script automates the following steps:</p>
|
||||
|
||||
<p className="mb-4">
|
||||
While it's more common to passthrough entire disks to virtual machines (VMs), there are scenarios where giving
|
||||
full disk access to an LXC container can be very useful.
|
||||
</p>
|
||||
|
||||
<ul className="list-disc pl-6 mb-4 space-y-1">
|
||||
<li>
|
||||
A user running a video surveillance system like <strong>Frigate</strong> or <strong>Agent DVR</strong> might
|
||||
want recordings saved on a dedicated disk, so they can easily transfer it to another system for review.
|
||||
</li>
|
||||
<li>
|
||||
A <strong>Nextcloud</strong> container might need full disk access to manage user files and take advantage of
|
||||
the entire disk capacity.
|
||||
</li>
|
||||
<li>
|
||||
A container may be used for downloads, storing files on a dedicated disk and sharing them over the local
|
||||
network.
|
||||
</li>
|
||||
<li>Another use case could be writing backups to an isolated disk.</li>
|
||||
</ul>
|
||||
|
||||
<p className="mb-6">
|
||||
As you can see, there are many different use cases where assigning a physical disk directly to a CT is the ideal
|
||||
solution.
|
||||
</p>
|
||||
|
||||
<h2 className="text-2xl font-semibold mt-8 mb-4">Description</h2>
|
||||
<ol className="list-decimal pl-6 space-y-2 mb-6">
|
||||
<li>Lists available physical disks on the Proxmox host, excluding the system disk.</li>
|
||||
<li>Displays a list of available virtual machines (VMs) for selection.</li>
|
||||
<li>Allows the user to select multiple disks to assign to a VM.</li>
|
||||
<li>Ensures selected disks are not already in use by another VM.</li>
|
||||
<li>Configures the selected disks for passthrough to the chosen VM.</li>
|
||||
<li>Lists physical disks on the Proxmox host, excluding the system disk and mounted system disks.</li>
|
||||
<li>Displays all existing LXC containers (CTs) for user selection.</li>
|
||||
<li>
|
||||
Allows the user to select <strong>one physical disk</strong> per execution.
|
||||
</li>
|
||||
<li>
|
||||
Formats the disk (with user confirmation) or reuses it, then assigns it as a mount point in the selected CT.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<h2 className="text-2xl font-semibold mt-8 mb-4">Implementation Steps</h2>
|
||||
|
||||
<h2 className="text-2xl font-semibold mt-8 mb-4">Step-by-Step Instructions</h2>
|
||||
<Steps>
|
||||
<Steps.Step title="Disk Selection">
|
||||
<img src="/images/design-mode/disk-selection.png" alt="Disk Selection Menu" className="mt-4 rounded shadow-lg" />
|
||||
<p>The script scans the system and displays a list of available physical disks, excluding the system disk.</p>
|
||||
<Steps.Step title="CT Selection">
|
||||
<ImageWithCaption
|
||||
src="https://macrimi.github.io/ProxMenux/disk/select-container.png"
|
||||
alt="Select CT"
|
||||
caption="CT Selection Menu."
|
||||
/>
|
||||
|
||||
<p>The user selects the destination LXC container (CT) to which the disk will be assigned.</p>
|
||||
</Steps.Step>
|
||||
<Steps.Step title="VM Selection">
|
||||
<p>The user selects the virtual machine (VM) to which the disk(s) will be assigned.</p>
|
||||
<Steps.Step title="Disk Detection">
|
||||
<ImageWithCaption
|
||||
src="https://macrimi.github.io/ProxMenux/disk/disk-selection-ct.png"
|
||||
alt="Disk Selection Menu"
|
||||
caption="Disk Selection Menu"
|
||||
/>
|
||||
<p>
|
||||
The script lists all physical disks, excluding those used by the system. It also displays metadata like ZFS,
|
||||
LVM, and RAID, and shows warnings if the disk is already in use.
|
||||
</p>
|
||||
</Steps.Step>
|
||||
<Steps.Step title="Disk Assignment">
|
||||
<img src="/images/design-mode/disk-assigment.png" alt="Disk Assigment Menu" className="mt-4 rounded shadow-lg" />
|
||||
<Steps.Step title="Disk Preparation">
|
||||
<p>The script performs the following actions:</p>
|
||||
<ul className="list-disc pl-6 space-y-1 mt-2">
|
||||
<li>Ensures the selected disk is not in use by another VM.</li>
|
||||
<li>Provides an interface choice (SATA, SCSI, VirtIO, or IDE).</li>
|
||||
<li>Automatically configures the disk passthrough and assigns it to the VM.</li>
|
||||
<li>Detects whether the disk has a supported filesystem (ext4, xfs, btrfs).</li>
|
||||
<li>Offers to format the disk if no valid filesystem is found.</li>
|
||||
<li>
|
||||
Prompts the user to define the mount point (e.g. <code>/mnt/disk_passthrough</code>).
|
||||
</li>
|
||||
</ul>
|
||||
</Steps.Step>
|
||||
<Steps.Step title="Confirmation & Finalization">
|
||||
<p>The script verifies the operation and confirms the successful disk passthrough.</p>
|
||||
<Steps.Step title="Assignment to CT">
|
||||
<ImageWithCaption
|
||||
src="https://macrimi.github.io/ProxMenux/disk/assignment-ct.png"
|
||||
alt="Assignment to CT"
|
||||
caption="Assignment to CT"
|
||||
/>
|
||||
<p>
|
||||
The selected disk is mounted inside the container at the specified path, and permissions are set
|
||||
automatically.
|
||||
</p>
|
||||
</Steps.Step>
|
||||
</Steps>
|
||||
|
||||
|
||||
<h2 className="text-2xl font-semibold mt-8 mb-4">Expected Results</h2>
|
||||
<ul className="list-disc pl-6 space-y-2 mb-6">
|
||||
<li>The selected physical disk(s) are successfully assigned to the specified VM.</li>
|
||||
<li>Users are provided with a confirmation of the disk assignment.</li>
|
||||
<li>The VM is configured to recognize the disk(s) upon startup.</li>
|
||||
<li>The selected disk is successfully mounted and accessible within the specified container.</li>
|
||||
<li>The script shows a summary of the operation, including any warnings or errors.</li>
|
||||
<li>The container can use the assigned storage immediately.</li>
|
||||
<ImageWithCaption
|
||||
src="https://macrimi.github.io/ProxMenux/disk/result-point.png"
|
||||
alt="Mount point created successfully"
|
||||
caption="Mount point created successfully"
|
||||
/>
|
||||
</ul>
|
||||
|
||||
<h2 className="text-2xl font-semibold mt-8 mb-4">Important Considerations</h2>
|
||||
<ul className="list-disc pl-6 space-y-2 mb-6">
|
||||
<li>Ensure the selected disk is not already in use by another VM.</li>
|
||||
<li>VMs must be powered off before adding disks to prevent data corruption.</li>
|
||||
<li>Using disk passthrough limits certain VM features, such as live migration.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<h2 className="text-2xl font-semibold mt-8 mb-4">Important Considerations</h2>
|
||||
<div className="bg-yellow-100 border-l-4 border-yellow-500 text-yellow-700 p-4 mb-4">
|
||||
<p className="font-semibold">Important:</p>
|
||||
<p>
|
||||
The container must be <strong>privileged</strong> to allow direct read/write access to the physical disk.
|
||||
</p>
|
||||
</div>
|
||||
<ul className="list-disc pl-6 space-y-2 mb-6">
|
||||
<li>
|
||||
Only <strong>one disk</strong> can be assigned per script execution.
|
||||
</li>
|
||||
<li>Avoid assigning the same disk to multiple VMs or CTs that may run at the same time, as this can lead to data corruption or file loss.</li>
|
||||
<li>
|
||||
Clean any RAID, ZFS, or LVM metadata <strong>manually</strong> before assigning the disk.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -29,14 +29,14 @@ export default function DiskPassthroughVM() {
|
||||
<h2 className="text-2xl font-semibold mt-8 mb-4">Implementation Steps</h2>
|
||||
<Steps>
|
||||
<Steps.Step title="Disk Selection">
|
||||
<img src="/images/design-mode/disk-selection.png" alt="Disk Selection Menu" className="mt-4 rounded shadow-lg" />
|
||||
<img src="https://macrimi.github.io/ProxMenux/disk/disk-selection.png" alt="Disk Selection Menu" className="mt-4 rounded shadow-lg" />
|
||||
<p>The script scans the system and displays a list of available physical disks, excluding the system disk.</p>
|
||||
</Steps.Step>
|
||||
<Steps.Step title="VM Selection">
|
||||
<p>The user selects the virtual machine (VM) to which the disk(s) will be assigned.</p>
|
||||
</Steps.Step>
|
||||
<Steps.Step title="Disk Assignment">
|
||||
<img src="/images/design-mode/disk-assigment.png" alt="Disk Assigment Menu" className="mt-4 rounded shadow-lg" />
|
||||
<img src="https://macrimi.github.io/ProxMenux/disk/disk-assigment.png" alt="Disk Assigment Menu" className="mt-4 rounded shadow-lg" />
|
||||
<p>The script performs the following actions:</p>
|
||||
<ul className="list-disc pl-6 space-y-1 mt-2">
|
||||
<li>Ensures the selected disk is not in use by another VM.</li>
|
||||
|
||||
@@ -76,7 +76,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
</div>
|
||||
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/uup-dump-iso-creator.png"
|
||||
src="https://macrimi.github.io/ProxMenux/utils/uup-dump-iso-creator.png"
|
||||
alt="UUP Dump ISO Creator"
|
||||
caption="UUP Dump ISO Creator in ProxMenux"
|
||||
/>
|
||||
@@ -240,7 +240,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
) and select the Windows version you want to download.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/step-1-select-version-windows.png"
|
||||
src="https://macrimi.github.io/ProxMenux/iso-creator/step-1-select-version-windows.png"
|
||||
alt="Select Windows Version"
|
||||
caption="UUP Dump main page for selecting Windows version"
|
||||
/>
|
||||
@@ -258,7 +258,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
Preview builds, or specific versions.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/step-2-select-version-windows.png"
|
||||
src="https://macrimi.github.io/ProxMenux/iso-creator/step-2-select-version-windows.png"
|
||||
alt="Select Specific Build"
|
||||
caption="Selection of the specific Windows build"
|
||||
/>
|
||||
@@ -275,7 +275,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
Choose the language for the Windows image. You can select any language available for that specific build.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/step-3-select-version-windows.png"
|
||||
src="https://macrimi.github.io/ProxMenux/iso-creator/step-3-select-version-windows.png"
|
||||
alt="Select Language"
|
||||
caption="Selection of the language for the Windows image"
|
||||
/>
|
||||
@@ -293,7 +293,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
(Home, Pro, Enterprise, etc.).
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/step-4-select-version-windows.png"
|
||||
src="https://macrimi.github.io/ProxMenux/iso-creator/step-4-select-version-windows.png"
|
||||
alt="Select Editions"
|
||||
caption="Selection of Windows editions to include"
|
||||
/>
|
||||
@@ -313,7 +313,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
<code className="bg-gray-100 px-1 py-0.5 rounded">edition</code>.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/step-5-select-version-windows.png"
|
||||
src="https://macrimi.github.io/ProxMenux/iso-creator/step-5-select-version-windows.png"
|
||||
alt="Get Download URL"
|
||||
caption="Final page with the URL containing the necessary parameters"
|
||||
/>
|
||||
@@ -341,7 +341,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
that the URL contains all the necessary parameters.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/add-url-iso-creator.png"
|
||||
src="https://macrimi.github.io/ProxMenux/iso-creator/add-url-iso-creator.png"
|
||||
alt="Paste UUP Dump URL"
|
||||
caption="Window for pasting the UUP Dump URL"
|
||||
/>
|
||||
@@ -356,7 +356,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
</h3>
|
||||
<p className="mb-4">Access the Utilities section in ProxMenux and select "UUP Dump ISO Creator".</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/start-uupdump-iso-creator.png"
|
||||
src="https://macrimi.github.io/ProxMenux/iso-creator/start-uupdump-iso-creator.png"
|
||||
alt="Start UUP Dump ISO Creator"
|
||||
caption="Starting the UUP Dump ISO Creator script in ProxMenux"
|
||||
/>
|
||||
@@ -374,7 +374,7 @@ export default function UUPDumpISOCreatorPage() {
|
||||
ISO image. The ISO will be immediately available for use in creating virtual machines in Proxmox.
|
||||
</p>
|
||||
<ImageWithCaption
|
||||
src="/images/design-mode/end-uupdump-iso-creator.png"
|
||||
src="https://macrimi.github.io/ProxMenux/iso-creator/end-uupdump-iso-creator.png"
|
||||
alt="Process Completion"
|
||||
caption="Successful completion message of the ISO creation process"
|
||||
/>
|
||||
|
||||
@@ -22,16 +22,16 @@ export const metadata = {
|
||||
address: false,
|
||||
telephone: false,
|
||||
},
|
||||
metadataBase: new URL(`https://proxmenux.com`),
|
||||
metadataBase: new URL(`https://macrimi.github.io/ProxMenux/`),
|
||||
openGraph: {
|
||||
title: "ProxMenux",
|
||||
description:
|
||||
"A menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks.",
|
||||
url: "https://proxmenux.com",
|
||||
url: "https://macrimi.github.io/ProxMenux/",
|
||||
siteName: "ProxMenux",
|
||||
images: [
|
||||
{
|
||||
url: "https://proxmenux.com/main.png",
|
||||
url: "https://macrimi.github.io/ProxMenux/main.png",
|
||||
width: 1363,
|
||||
height: 735,
|
||||
alt: "ProxMenux",
|
||||
@@ -45,14 +45,14 @@ export const metadata = {
|
||||
title: "ProxMenux",
|
||||
description:
|
||||
"A menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks.",
|
||||
images: ["https://proxmenux.com/main.png"],
|
||||
images: ["https://macrimi.github.io/ProxMenux/main.png"],
|
||||
},
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: "https://proxmenux.com/favicon.ico", sizes: "any" },
|
||||
{ url: "https://proxmenux.com/icon.svg", type: "image/svg+xml" },
|
||||
{ url: "https://macrimi.github.io/ProxMenux/favicon.ico", sizes: "any" },
|
||||
{ url: "https://macrimi.github.io/ProxMenux/icon.svg", type: "image/svg+xml" },
|
||||
],
|
||||
apple: [{ url: "https://proxmenux.com/apple-touch-icon.png", sizes: "180x180" } as const],
|
||||
apple: [{ url: "https://macrimi.github.io/ProxMenux/apple-touch-icon.png", sizes: "180x180" } as const],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import type { Metadata } from "next"
|
||||
import type { Metadata } from 'next'
|
||||
|
||||
const description =
|
||||
"A menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks."
|
||||
|
||||
|
||||
const description = "A menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks."
|
||||
|
||||
export const metadata: Metadata = {
|
||||
|
||||
title: "ProxMenux",
|
||||
description,
|
||||
generator: "Next.js",
|
||||
@@ -18,11 +20,11 @@ export const metadata: Metadata = {
|
||||
address: false,
|
||||
telephone: false,
|
||||
},
|
||||
metadataBase: new URL(`https://proxmenux.com`),
|
||||
metadataBase: new URL(`https://macrimi.github.io/ProxMenux/`),
|
||||
openGraph: {
|
||||
title: "ProxMenux",
|
||||
description,
|
||||
url: `https://proxmenux.com`,
|
||||
url: `https://macrimi.github.io/ProxMenux/`,
|
||||
siteName: "ProxMenux",
|
||||
images: [
|
||||
{
|
||||
@@ -47,4 +49,4 @@ export const metadata: Metadata = {
|
||||
],
|
||||
apple: [{ url: "https://raw.githubusercontent.com/MacRimi/ProxMenux/main/web/public//apple-touch-icon.png" }],
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -10,24 +10,25 @@ interface ChangelogEntry {
|
||||
title: string
|
||||
}
|
||||
|
||||
// Function to clean and format markdown content for RSS
|
||||
function formatContentForRSS(content: string): string {
|
||||
return (
|
||||
content
|
||||
// Convert ### headers to <h3> tags
|
||||
.replace(/^### (.+)$/gm, "<h3>$1</h3>")
|
||||
// Convert ** bold ** to <strong> tags
|
||||
.replace(/\*\*(.*?)\*\*/g, "<strong>$1</strong>")
|
||||
// Convert code blocks to <pre><code> tags
|
||||
// Convert ### headers to bold text
|
||||
.replace(/^### (.+)$/gm, "**$1**")
|
||||
// Convert ** bold ** to simple bold
|
||||
.replace(/\*\*(.*?)\*\*/g, "$1")
|
||||
// Clean code blocks - remove ``` and format nicely
|
||||
.replace(/```[\s\S]*?```/g, (match) => {
|
||||
const code = match.replace(/```/g, "").trim()
|
||||
return `<pre><code>${code}</code></pre>`
|
||||
return `\n${code}\n`
|
||||
})
|
||||
// Convert - bullet points to <ul><li> tags
|
||||
.replace(/^- (.+)$/gm, "<li>$1</li>")
|
||||
// Wrap consecutive <li> tags in <ul>
|
||||
.replace(/(<li>.*?<\/li>\s*)+/g, (match) => `<ul>${match}</ul>`)
|
||||
// Convert double newlines to <br><br> for paragraphs
|
||||
.replace(/\n\n/g, "<br><br>")
|
||||
// Convert - bullet points to •
|
||||
.replace(/^- /gm, "• ")
|
||||
// Clean up multiple newlines
|
||||
.replace(/\n{3,}/g, "\n\n")
|
||||
// Remove backslashes used for line breaks
|
||||
.replace(/\\\s*$/gm, "")
|
||||
// Clean up extra spaces
|
||||
.replace(/\s+/g, " ")
|
||||
.trim()
|
||||
@@ -74,7 +75,7 @@ async function parseChangelog(): Promise<ChangelogEntry[]> {
|
||||
currentEntry = {
|
||||
version,
|
||||
date,
|
||||
url: `https://proxmenux.com/changelog#${version}`,
|
||||
url: `https://macrimi.github.io/ProxMenux/changelog#${version}`,
|
||||
title: `ProxMenux ${version}`,
|
||||
}
|
||||
} else if (dateMatch) {
|
||||
@@ -82,7 +83,7 @@ async function parseChangelog(): Promise<ChangelogEntry[]> {
|
||||
currentEntry = {
|
||||
version: date,
|
||||
date,
|
||||
url: `https://proxmenux.com/changelog#${date}`,
|
||||
url: `https://macrimi.github.io/ProxMenux/changelog#${date}`,
|
||||
title: `ProxMenux Update ${date}`,
|
||||
}
|
||||
}
|
||||
@@ -114,13 +115,13 @@ async function parseChangelog(): Promise<ChangelogEntry[]> {
|
||||
|
||||
export async function GET() {
|
||||
const entries = await parseChangelog()
|
||||
const siteUrl = "https://proxmenux.com"
|
||||
const siteUrl = "https://macrimi.github.io/ProxMenux"
|
||||
|
||||
const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>ProxMenux Changelog</title>
|
||||
<description>Latest updates and changes in ProxMenux - An Interactive Menu for Proxmox VE Management</description>
|
||||
<description>Latest updates and changes in ProxMenux</description>
|
||||
<link>${siteUrl}/changelog</link>
|
||||
<atom:link href="${siteUrl}/rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<language>en-US</language>
|
||||
@@ -133,7 +134,7 @@ export async function GET() {
|
||||
(entry) => `
|
||||
<item>
|
||||
<title>${entry.title}</title>
|
||||
<description><![CDATA[${entry.content}]]></description>
|
||||
<description><![CDATA[${entry.content.length > 1000 ? entry.content.substring(0, 1000) + "..." : entry.content}]]></description>
|
||||
<link>${entry.url}</link>
|
||||
<guid isPermaLink="true">${entry.url}</guid>
|
||||
<pubDate>${new Date(entry.date).toUTCString()}</pubDate>
|
||||
|
||||
@@ -22,7 +22,7 @@ export default function Footer() {
|
||||
className="hover:opacity-90 transition-opacity flex items-center"
|
||||
>
|
||||
<Image
|
||||
src="/images/design-mode/kofi.png"
|
||||
src="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/images/kofi.png"
|
||||
alt="Support me on Ko-fi"
|
||||
width={140}
|
||||
height={40}
|
||||
@@ -68,3 +68,4 @@ export default function Footer() {
|
||||
</footer>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ export default function Footer() {
|
||||
className="hover:opacity-90 transition-opacity"
|
||||
>
|
||||
<Image
|
||||
src="/images/design-mode/kofi.png"
|
||||
src="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/images/kofi.png"
|
||||
alt="Support me on Ko-fi"
|
||||
width={140}
|
||||
height={40}
|
||||
|
||||
@@ -29,3 +29,4 @@ export default function Hero() {
|
||||
</section>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ export default function Hero() {
|
||||
<div className="flex items-center">
|
||||
<div className="w-40 h-40 lg:w-48 lg:h-48 xl:w-56 xl:h-56 relative">
|
||||
<Image
|
||||
src="/images/design-mode/logo.png"
|
||||
src="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/images/logo.png"
|
||||
alt="ProxMenux Logo"
|
||||
fill
|
||||
className="object-contain"
|
||||
@@ -68,3 +68,4 @@ export default function Hero() {
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -26,3 +26,4 @@ export default function MouseMoveEffect() {
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,13 @@ export default function Navbar() {
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="flex items-center justify-between h-16">
|
||||
<Link href="/" className="flex items-center space-x-2">
|
||||
<Image src="/images/design-mode/logo.png" alt="ProxMenux Logo" width={32} height={32} className="w-8 h-8" />
|
||||
<Image
|
||||
src="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/images/logo.png"
|
||||
alt="ProxMenux Logo"
|
||||
width={32}
|
||||
height={32}
|
||||
className="w-8 h-8"
|
||||
/>
|
||||
<span className="text-xl font-bold">ProxMenux</span>
|
||||
</Link>
|
||||
|
||||
@@ -40,7 +46,7 @@ export default function Navbar() {
|
||||
|
||||
{/* RSS Feed Link */}
|
||||
<Link
|
||||
href="https://proxmenux.com/rss.xml"
|
||||
href="https://macrimi.github.io/ProxMenux/rss.xml"
|
||||
className="flex items-center space-x-2 transition-colors hover:text-primary text-orange-600 hover:text-orange-700"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
@@ -75,7 +81,7 @@ export default function Navbar() {
|
||||
|
||||
{/* RSS Feed Link - Mobile */}
|
||||
<Link
|
||||
href="https://proxmenux.com/rss.xml"
|
||||
href="https://macrimi.github.io/ProxMenux/rss.xml"
|
||||
className="flex items-center space-x-2 py-2 transition-colors hover:text-primary text-orange-600 hover:text-orange-700"
|
||||
onClick={() => setIsMenuOpen(false)}
|
||||
target="_blank"
|
||||
|
||||
@@ -6,7 +6,7 @@ import { useState } from "react"
|
||||
|
||||
export default function RSSLink() {
|
||||
const [copied, setCopied] = useState(false)
|
||||
const rssUrl = "https://proxmenux.com/rss.xml"
|
||||
const rssUrl = "https://macrimi.github.io/ProxMenux/rss.xml"
|
||||
|
||||
const copyToClipboard = async () => {
|
||||
try {
|
||||
|
||||
@@ -26,3 +26,4 @@ export default function SupportProject() {
|
||||
</section>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -32,3 +32,4 @@ export default function Testimonials() {
|
||||
</section>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -23,4 +23,4 @@ export function ImageWithCaption({ src, alt, caption, width = 800, height = 450
|
||||
<figcaption className="text-center text-sm text-gray-600 mt-2">{caption}</figcaption>
|
||||
</figure>
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -32,3 +32,4 @@ const Steps: React.FC<StepsProps> & { Step: typeof Step } = ({ children }) => (
|
||||
Steps.Step = Step
|
||||
|
||||
export { Steps }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user