{"id":1914,"date":"2025-08-31T22:32:41","date_gmt":"2025-09-01T05:32:41","guid":{"rendered":"https:\/\/catbradley.io\/?p=1914"},"modified":"2025-08-31T22:32:41","modified_gmt":"2025-09-01T05:32:41","slug":"installing-proxmox-on-a-raspberry-pi-to-run-virtual-machines-on-it","status":"publish","type":"post","link":"https:\/\/catbradley.io\/?p=1914","title":{"rendered":"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/09\/install-proxmox-on-raspberrypi.png\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" \/><\/p>\n<p>The other day, a friend and I were talking about virtualization, spinning up virtual machines (VMs), containerization, and all that fun tech stuff. <\/p>\n<p>He casually said, <em>\u201cYou know, even a Raspberry Pi can run a VM these days.\u201d<\/em> I laughed, thinking he was joking. <\/p>\n<p>A Raspberry Pi? Running a virtual machine? Come on. But he wasn\u2019t kidding. <\/p>\n<p>Later that week, I stumbled across a discussion about <a href=\"https:\/\/www.proxmox.com\/en\/\">Proxmox<\/a> and how it supports ARM-based devices like the Raspberry Pi (not officially \ud83d\ude09). <\/p>\n<p>I\u2019m a naturally curious person, and once I read that Proxmox now can be installed on an ARM device, I couldn\u2019t resist. I grabbed my Raspberry Pi 5, rolled up my sleeves, and decided to give it a shot.<\/p>\n<p>If you\u2019ve never heard of <strong>Proxmox<\/strong>, let me introduce you.<\/p>\n<h2>What is Proxmox, again?<\/h2>\n<p>In case you didn&#8217;t know, <a href=\"https:\/\/www.proxmox.com\/en\/\" rel=\"noreferrer\">Proxmox Virtual Environment (VE)<\/a> is a powerful, open-source platform designed for virtualization. It allows you to manage virtual machines and containers through an intuitive web interface. <\/p>\n<p>Think of it as the command center for running multiple operating systems on a single device, with added features like software-defined storage, network configuration, and clustering.<\/p>\n<p>However, before you get too excited, let\u2019s be real: <strong>the Pi is a capable little workhorse, but it\u2019s no match for high-performance processors or dedicated server hardware<\/strong>. <\/p>\n<p>It has its limits, and while it\u2019s fun to tinker with, expecting it to handle heavy virtual machine workloads is asking too much. That said, for lightweight tasks and experimentation, it\u2019s more than up for the challenge!<\/p>\n<p>Now, let me take you through the steps I followed to get Proxmox up and running on my Raspberry Pi.<\/p>\n<h2>What you&#8217;ll need to install Proxmox on Raspberry Pi<\/h2>\n<p>Here\u2019s your checklist:<\/p>\n<ul>\n<li><strong>Raspberry Pi 4 or 5<\/strong> (8GB RAM recommended)<\/li>\n<li><strong>MicroSD card<\/strong> (class 10 or better for faster read\/write speeds)<\/li>\n<li><strong>64-bit Raspberry Pi OS Lite (Bookworm)<\/strong><\/li>\n<li><strong>Power supply and Ethernet cable<\/strong> (or Wi-Fi, but wired is preferred)<\/li>\n<\/ul>\n<h3>Step 1: Start with a clean slate<\/h3>\n<p>First things first, make sure you\u2019re using a fresh installation of <a href=\"https:\/\/downloads.raspberrypi.com\/raspios_lite_arm64\/images\/raspios_lite_arm64-2024-11-19\/2024-11-19-raspios-bookworm-arm64-lite.img.xz\" rel=\"noreferrer\"><strong>Raspberry Pi OS Lite (64-bit, Bookworm)<\/strong><\/a>. <\/p>\n<p>During my testing, I found that using an older or cluttered setup led to unexpected errors, especially when dealing with package dependencies. A clean OS makes everything smoother.<\/p>\n<p>If you haven\u2019t done so already, download the Bookworm image from the Raspberry Pi website and flash it onto your SD card using a tool like <a href=\"https:\/\/www.raspberrypi.com\/software\/\" rel=\"noreferrer\">Raspberry Pi Imager<\/a>.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/rpi-imager.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"735\" height=\"539\" \/><\/figure>\n<h3>Step 2: Update and upgrade your Pi<\/h3>\n<p>Once your Raspberry Pi is booted and connected, log in via SSH or directly on the terminal. Run these commands to update your system:<\/p>\n<pre><code class=\"language-bash\">sudo apt update &amp;&amp; sudo apt upgrade -y<\/code><\/pre>\n<p>This step ensures your Pi is up to date with the latest security patches and fixes.<\/p>\n<p>We\u2019ll use <code>curl<\/code> to grab the GPG key for the Proxmox repository later, so let\u2019s ensure it\u2019s installed. <\/p>\n<p>If it\u2019s missing, you can install it with this command:<\/p>\n<pre><code class=\"language-bash\">sudo apt install curl<\/code><\/pre>\n<h3>Step 3: Set a static IP address<\/h3>\n<p>Now, here\u2019s a crucial part. Proxmox expects a stable network connection, and having a dynamic IP (which can change after a reboot) will break the setup. <\/p>\n<p>Trust me, I learned this the hard way when my web interface refused to load after a restart.<\/p>\n<p>The easiest way is to set up a <strong>DHCP reservation<\/strong> in your router. <\/p>\n<p>But if you don\u2019t have access to your router, you can configure the static IP directly on your Pi. Edit the <code>dhcpcd.conf<\/code> file:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/dhcpcd.conf\n<\/code><\/pre>\n<p>Add the following lines at the end (replace the placeholders with your details):<\/p>\n<pre><code class=\"language-bash\">interface [INTERFACE]\nstatic ip_address=[STATIC IP ADDRESS YOU WANT]\/24\nstatic routers=[ROUTER IP]\nstatic domain_name_servers=[DNS IP]\n<\/code><\/pre>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/setting-static-ip-using-dhcpcd-file-1.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"910\" height=\"509\" \/><\/figure>\n<p>Save and reboot with:<\/p>\n<pre><code class=\"language-bash\">sudo reboot now<\/code><\/pre>\n<p>After the reboot, verify your static IP with:<\/p>\n<pre><code class=\"language-bash\">hostname -I<\/code><\/pre>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/checking-static-ip-of-pi.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"910\" height=\"509\" \/><\/figure>\n<h3>Step 4: Modifying the hosts file <\/h3>\n<p>With your static IP set, we need to make Proxmox aware of it by updating the hosts file. This ensures your Pi\u2019s hostname maps correctly to its IP address.<\/p>\n<p>Open the hosts file for editing:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/hosts\n<\/code><\/pre>\n<p>You\u2019ll see a line like this:<\/p>\n<pre><code class=\"language-bash\">127.0.1.1    raspberrypi<\/code><\/pre>\n<p>Replace <code>127.0.1.1<\/code> with your Pi\u2019s static IP. For example:<\/p>\n<pre><code class=\"language-bash\">192.168.1.9    raspberrypi<\/code><\/pre>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/editing-hosts-file.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"826\" height=\"601\" \/><\/figure>\n<h3>Step 5: Setting up the root user<\/h3>\n<p>Proxmox requires the <code>root<\/code> user for its web interface. By default, Raspberry Pi OS doesn\u2019t have a password set for the root user, so let\u2019s create one:<\/p>\n<pre><code class=\"language-bash\">sudo passwd root\n<\/code><\/pre>\n<p>Enter a strong password when prompted. You\u2019ll need this later to log in to Proxmox.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/root-user-password-setup.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1066\" height=\"440\" \/><\/figure>\n<h3>Step 6: Add the GPG key<\/h3>\n<p>Proxmox for ARM isn\u2019t officially supported, but a third-party repository makes it possible. First, we need to add its GPG key to authenticate the packages:<\/p>\n<pre><code class=\"language-bash\">curl -L https:\/\/mirrors.apqa.cn\/proxmox\/debian\/pveport.gpg | sudo tee \/usr\/share\/keyrings\/pveport.gpg &gt;\/dev\/null\n<\/code><\/pre>\n<p>This step ensures that the packages we\u2019re about to install are legitimate.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/add-gpg-key.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1138\" height=\"532\" \/><\/figure>\n<h3>Step 7: Add the repository<\/h3>\n<p>Now, let\u2019s add the Proxmox repository to the package manager\u2019s sources list:<\/p>\n<pre><code class=\"language-bash\">echo \"deb [arch=arm64 signed-by=\/usr\/share\/keyrings\/pveport.gpg] https:\/\/mirrors.apqa.cn\/proxmox\/debian\/pve bookworm port\" | sudo tee \/etc\/apt\/sources.list.d\/pveport.list\n<\/code><\/pre>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/add-proxmox-repo.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1138\" height=\"532\" \/><\/figure>\n<h3>Step 8: Update the package list<\/h3>\n<p>Whenever you add a new repository, you need to refresh the package list so your system knows about the new software:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\n<\/code><\/pre>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/update-repo-after-adding-repo.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1066\" height=\"555\" \/><\/figure>\n<h3>Step 9: Install Proxmox<\/h3>\n<p>Finally, install Proxmox and its required packages:<\/p>\n<pre><code class=\"language-bash\">sudo apt install proxmox-ve postfix open-iscsi ifupdown2 pve-edk2-firmware-aarch64\n<\/code><\/pre>\n<ul>\n<li><strong><code>proxmox-ve<\/code><\/strong>: This is the main Proxmox Virtual Environment package that sets up the Proxmox server, including the tools and user interface for managing virtual machines and containers.<\/li>\n<li><strong><code>postfix<\/code><\/strong>: A mail server used by Proxmox to send email notifications, such as alerts or updates about your virtual environment. You can configure it as &#8220;Local only&#8221; if you&#8217;re unsure or don&#8217;t need external email functionality.<\/li>\n<li><strong><code>open-iscsi<\/code><\/strong>: Provides iSCSI (Internet Small Computer Systems Interface) support, enabling Proxmox to connect to and manage remote storage over a network.<\/li>\n<li><strong><code>ifupdown2<\/code><\/strong>: A network management tool that Proxmox relies on for configuring and managing network interfaces, especially for virtual machine bridge setups.<\/li>\n<li><strong><code>pve-edk2-firmware-aarch64<\/code><\/strong>: This is the ARM64 firmware package for Proxmox, enabling the virtualization of ARM-based systems, which is essential for running Proxmox on Raspberry Pi.<\/li>\n<\/ul>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/apt-install-proxmox-and-dependencies.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"958\" height=\"739\" \/><\/figure>\n<p>During installation, select \u201c<strong>Local only<\/strong>\u201d when configuring Postfix, <\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/postfix-local-mail-config-1.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"958\" height=\"739\" \/><\/figure>\n<p>and use the default mail name if unsure.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/postfix-mail-name-1.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"958\" height=\"739\" \/><\/figure>\n<h3>Step 10: Accessing the proxmox web interface<\/h3>\n<p>After installation, access the Proxmox web interface in your browser:<\/p>\n<pre><code class=\"language-bash\">https:\/\/&lt;IPADDRESS&gt;:8006\n<\/code><\/pre>\n<p>Since Proxmox uses a self-signed SSL certificate, you\u2019ll likely encounter a warning about the site\u2019s security. <\/p>\n<p>Don\u2019t worry, this is expected. Simply proceed by clicking through the warning, and you\u2019ll land on the Proxmox login page.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/proxmox-ssl-warning.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1412\" height=\"859\" \/><\/figure>\n<p>Log in using <code>root<\/code> as the username and the password you set earlier.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/proxmox-login.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1980\" height=\"956\" \/><\/figure>\n<p>After logging in for the first time, Proxmox will greet you with a notification about an invalid subscription. <\/p>\n<p>This is because the free version of Proxmox doesn\u2019t come with a commercial subscription. Just click <strong>OK<\/strong> to dismiss the message.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/proxmox-invalid-sub-prompt.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1980\" height=\"1012\" \/><\/figure>\n<p>You\u2019ve officially made it into Proxmox VE! The dashboard gives you an overview of your server\u2019s health, including CPU usage, memory, and storage stats. <\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/proxmox-main-menu.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1980\" height=\"1013\" \/><\/figure>\n<p>Now, you\u2019re ready to create your first virtual machine (VM). To do this, click the <strong>Create VM<\/strong> button in the top-right corner of the interface. <\/p>\n<p>The intuitive wizard will guide you through the process of spinning up a new virtual machine.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2024\/12\/create-vm-wizard.png\" class=\"kg-image\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" loading=\"lazy\" width=\"1980\" height=\"1140\" \/><\/figure>\n<p>While setting up a VM is outside the scope of this article, we\u2019d be happy to cover it in a follow-up. If you&#8217;d like a detailed guide on creating and managing VMs in Proxmox, let us know in the comments below!<\/p>\n<h2>Conclusion<\/h2>\n<p>And that\u2019s it! Seeing Proxmox running on a Raspberry Pi is nothing short of amazing. It\u2019s a testament to how far computing power has come, enabling a tiny device like the Pi to host and manage virtual environments.<\/p>\n<p>That said, there\u2019s still plenty more to explore. What else can this little powerhouse do with Proxmox installed? I\u2019ll be diving deeper into its capabilities and perhaps share some along the way. Meanwhile, here&#8217;s a good place to <a href=\"https:\/\/linuxhandbook.com\/courses\/proxmox\/\">start learning Proxmox<\/a>.<\/p>\n<figure class=\"kg-card kg-bookmark-card\"><a class=\"kg-bookmark-container\" href=\"https:\/\/linuxhandbook.com\/courses\/proxmox\/\">\n<div class=\"kg-bookmark-content\">\n<div class=\"kg-bookmark-title\">Use Proxmox for Virtual Machines<\/div>\n<div class=\"kg-bookmark-description\">A mini-course that covers everything from installing and upgrading Proxmox to using it for creating and managing VMs.<\/div>\n<div class=\"kg-bookmark-metadata\"><img decoding=\"async\" class=\"kg-bookmark-icon\" src=\"https:\/\/itsfoss.com\/content\/images\/icon\/Linux-Handbook-New-Logo-5.png\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" \/><span class=\"kg-bookmark-author\">Linux Handbook<\/span><span class=\"kg-bookmark-publisher\">Doron Beit-Halahmi<\/span><\/div>\n<\/div>\n<div class=\"kg-bookmark-thumbnail\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/thumbnail\/proxmox-course.webp\" alt=\"Installing Proxmox on a Raspberry Pi to run Virtual Machines on it\" \/><\/div>\n<p><\/p><\/a><\/figure>\n<p>If you have any doubts, questions, or find yourself stuck during the installation process, don\u2019t hesitate to ask in the comments. I\u2019d love to help you out!<\/p>","protected":false},"excerpt":{"rendered":"<p>The other day, a friend and I were talking about virtualization, spinning up virtual machines (VMs), containerization, and all that fun tech stuff. He casually said, \u201cYou know, even a&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1914","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rss"],"_links":{"self":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts\/1914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1914"}],"version-history":[{"count":0,"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts\/1914\/revisions"}],"wp:attachment":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}