176 lines
6.5 KiB
TypeScript
Raw Normal View History

2025-05-17 18:32:45 +02:00
import type React from "react"
import type { Metadata } from "next"
import Link from "next/link"
import Image from "next/image"
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
import { ArrowRight, Server, ComputerIcon as Windows, LaptopIcon as Linux, HardDrive, Monitor } from "lucide-react"
export const metadata: Metadata = {
title: "ProxMenux Documentation: Virtual Machines",
description:
"Comprehensive guide for creating and configuring virtual machines on Proxmox VE using ProxMenux, with dedicated sections for NAS, Windows, and Linux systems.",
openGraph: {
title: "ProxMenux Documentation: Virtual Machines",
description:
"Comprehensive guide for creating and configuring virtual machines on Proxmox VE using ProxMenux, with dedicated sections for NAS, Windows, and Linux systems.",
type: "article",
url: "https://macrimi.github.io/ProxMenux/docs/virtual-machines",
images: [
{
url: "https://macrimi.github.io/ProxMenux/vm/vm-creation-menu.png",
width: 1200,
height: 630,
alt: "ProxMenux Virtual Machines Menu",
},
],
},
twitter: {
card: "summary_large_image",
title: "ProxMenux Documentation: Virtual Machines",
description:
"Comprehensive guide for creating and configuring virtual machines on Proxmox VE using ProxMenux, with dedicated sections for NAS, Windows, and Linux systems.",
images: ["https://macrimi.github.io/ProxMenux/vm/vm-creation-menu.png"],
},
}
interface ImageWithCaptionProps {
src: string
alt: string
caption: string
}
function ImageWithCaption({ src, alt, caption }: ImageWithCaptionProps) {
return (
<div className="flex flex-col items-center w-full max-w-[768px] mx-auto my-4">
<div className="w-full rounded-md overflow-hidden border border-gray-200">
<Image
src={src || "/placeholder.svg"}
alt={alt}
width={768}
height={0}
style={{ height: "auto" }}
className="object-contain w-full"
sizes="(max-width: 768px) 100vw, 768px"
/>
</div>
<span className="mt-2 text-sm text-gray-600">{caption}</span>
</div>
)
}
export default function VirtualMachinesPage() {
return (
<div className="container mx-auto py-10 px-4 bg-white text-black">
<div className="mb-10">
<div className="flex items-center gap-3 mb-6">
<Server className="h-8 w-8 mr-2 text-blue-500" />
<h1 className="text-3xl font-bold text-black">Virtual Machines Menu</h1>
</div>
<div className="space-y-4 mt-6">
<p className="text-lg text-black">
ProxMenux provides an automated system for creating and configuring virtual machines on Proxmox VE through
an interactive menu interface. Select one of the categories below to explore the available VM creation
options.
</p>
<p className="text-black">
Each category contains specialized scripts and configurations designed to simplify the process of creating
virtual machines for different operating systems and use cases. This eliminates the need to remember complex
command syntax or manually configure VMs when deploying new systems.
</p>
</div>
</div>
<ImageWithCaption
src="https://macrimi.github.io/ProxMenux/vm/vm-creation-menu.png"
alt="Virtual Machines Creation Menu"
caption="Virtual Machines Creation Menu"
/>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-6 mt-10">
<VMCard
title="System NAS"
description="Create and configure NAS virtual machines including Synology DSM, TrueNAS, and other storage systems"
icon={<HardDrive className="h-8 w-8 text-blue-500" />}
href="/docs/create-vm/system-nas"
/>
<VMCard
title="System Windows"
description="Deploy Windows virtual machines with optimized configurations for Windows"
icon={<Windows className="h-8 w-8 text-blue-500" />}
href="/docs/create-vm/system-windows"
/>
<VMCard
title="System Linux"
description="Create Linux virtual machines with configurations for popular distributions like Ubuntu, Debian, and CentOS"
icon={<Linux className="h-8 w-8 text-blue-500" />}
href="/docs/create-vm/system-linux"
/>
<VMCard
title="Other Linux Systems"
description="Deploy specialized Linux distributions and configurations for specific use cases"
icon={<Server className="h-8 w-8 text-blue-500" />}
2025-05-18 18:12:23 +02:00
href="/docs/create-vm/system-linux#other-linux-systems"
2025-05-17 18:32:45 +02:00
/>
2025-05-18 18:12:23 +02:00
2025-05-17 18:32:45 +02:00
<VMCard
title="System macOS"
description="Easily install macOS on Proxmox VE with just a few steps! This guide provides the simplest and most effective way to set up macOS on Proxmox, whether you're using AMD or Intel hardware. This is an external script; for more information, visit the project's page."
icon={<Monitor className="h-8 w-8 text-blue-500" />}
href="https://osx-proxmox.com"
externalLink
/>
</div>
</div>
)
}
interface VMCardProps {
title: string
description: string
icon: React.ReactNode
href: string
externalLink?: boolean
}
function VMCard({ title, description, icon, href, externalLink = false }: VMCardProps) {
return (
<Card className="transition-all duration-300 hover:shadow-md hover:border-blue-300 bg-white text-black border-2 border-gray-200">
<CardHeader>
<div className="flex items-center gap-3">
{icon}
<CardTitle className="text-xl text-black">{title}</CardTitle>
</div>
</CardHeader>
<CardContent>
<CardDescription className="text-base text-gray-600">{description}</CardDescription>
</CardContent>
<CardFooter>
{externalLink ? (
<a
href={href}
target="_blank"
rel="noopener noreferrer"
className="flex items-center text-blue-500 hover:text-blue-700 transition-colors"
>
View details <ArrowRight className="ml-2 h-4 w-4" />
</a>
) : (
<Link
href={href}
className="flex items-center text-blue-500 hover:text-blue-700 transition-colors"
>
View details <ArrowRight className="ml-2 h-4 w-4" />
</Link>
)}
</CardFooter>
</Card>
)
}