Introduction

Ask five people what CentOS Stream actually is and you'll probably get five different answers. Some will tell you it "killed CentOS." Others will call it a beta of RHEL you shouldn't touch. Neither one is quite right, and the confusion is understandable — Red Hat changed the project's role in late 2020, and a lot of the old advice floating around forums and old blog posts hasn't caught up.

Here's the short version: CentOS Stream is a real, supported Linux distribution that sits just upstream of Red Hat Enterprise Linux. It's not a leftover, and it's not abandoned. It's just a different kind of distro than Ubuntu, Debian, or even Rocky Linux — one that updates continuously instead of shipping as frozen point releases. That difference changes how you'd use it, and it's exactly what this guide walks through, alongside the actual mechanics of getting it running as a virtual machine on Proxmox VE.

By the end you'll have a working CentOS Stream VM with the QEMU Guest Agent installed, the extra repositories enabled that most people end up needing, and a clear sense of when Stream is the right call and when it isn't.

What You Will Learn

  • What CentOS Stream actually is, and how it's different from both the old CentOS and from Rocky Linux or AlmaLinux
  • Which ISO to grab and why it matters for a VM install
  • How to configure the Proxmox VM wizard with settings that make sense for this distro
  • How to get through the Anaconda installer without tripping over its defaults
  • How to enable the CRB and EPEL repositories, which you'll almost certainly need
  • How to install the QEMU Guest Agent so Proxmox can see the VM properly

What Is This Feature?

A virtual machine in Proxmox VE is a self-contained computer running inside your physical server. Proxmox uses KVM, the virtualization technology built into the Linux kernel, to give that VM its own virtual CPU, memory, disk, and network card — the guest operating system has no idea it isn't running on real hardware. That part is the same no matter which Linux distribution you install inside it.

CentOS Stream is where things get distro-specific. Until 2021, CentOS was a rebuild of Red Hat Enterprise Linux: Red Hat published RHEL's source, the CentOS project compiled it, and you got something functionally identical to RHEL for free. When Red Hat retired that model, CentOS Stream took its place — but it works differently. Instead of trailing RHEL, Stream sits just ahead of it. Package updates land in CentOS Stream first, get tested by the community and by Red Hat, and then flow downstream into the next RHEL minor release. It's a rolling, continuously updated distribution rather than a distro you install once and leave frozen at a specific point in time.

That's the piece that trips people up. Stream isn't "unstable" in the sense of crashing or being broken — it's stable software, tested and used in real environments. It's just never frozen the way RHEL, Rocky Linux, or AlmaLinux are. New package versions arrive on an ongoing basis instead of in big, versioned jumps.

Why Would You Use It?

The most common reason is wanting to know what's coming. If you run RHEL, Rocky, or AlmaLinux in production and want a heads-up on what the next point release will look like — new package versions, config changes, potential breakage — running CentOS Stream in a lab VM lets you see it early instead of getting surprised during a production update.

It's also a fit if you contribute to open-source projects that need to stay compatible with the RHEL ecosystem, or if you just want package versions a bit newer than what a frozen-release distro ships, without jumping all the way to Fedora's much faster pace.

What it's not great for is a "set it up once and never think about it again" home server. If that's your goal — a Plex box, a Nextcloud instance, a database you don't want to fuss with — Rocky Linux or AlmaLinux will serve you better. They give you the same RHEL-family tooling with a frozen, predictable release instead of a moving target.

CentOS Stream vs Rocky Linux vs RHEL

CentOS StreamRocky Linux / AlmaLinuxRHEL
Release modelRolling, continuousFrozen point releasesFrozen point releases
Position relative to RHELUpstream (ahead of it)Downstream rebuildThe source
CostFreeFreePaid subscription (free dev tier available)
Best forTesting, development, staying ahead of RHEL changesProduction servers, homelabs wanting stabilityCommercial production with support contracts

Prerequisites

  • A Proxmox VE 8.x or 9.x host with at least 20GB of free storage for the VM's disk
  • 2GB of RAM minimum to allocate to the VM (4GB is more comfortable if you'll run anything beyond a bare minimal install)
  • A downloaded CentOS Stream ISO — this guide uses the current Stream release, and either the netinstall boot.iso or the full dvd1.iso works
  • Access to the Proxmox web interface with permission to upload ISOs and create VMs
  • Basic familiarity with a Linux terminal — you'll spend time in the console during setup

On the ISO choice: boot.iso is a small netinstall image, often under 2GB, that pulls packages from the network during setup. It's the faster download but needs your VM to have internet access from the moment the installer starts. dvd1.iso bundles far more packages locally and is closer to 10GB — worth it if your Proxmox host's internet connection is slow or unreliable, but overkill for most homelab setups with a decent connection. Grab whichever fits your situation from the official CentOS Stream mirror pages.

Step-by-Step Tutorial

Step 1: Get the ISO onto Proxmox

In the Proxmox web UI, click your storage (usually local) in the left-hand tree, open the ISO Images tab, and click Upload to select the ISO from your computer. If your Proxmox host itself has a working internet connection, Download from URL is usually quicker — paste in the direct link to the ISO and let the host pull it directly instead of routing it through your browser first.

Step 2: Create the VM

Click Create VM in the top right. Proxmox walks you through several tabs:

  • General: give it a name like centos-stream and let Proxmox assign the VM ID automatically.
  • OS: select the storage holding your ISO, pick it from the list, set Type to Linux, and Version to the newest kernel option available in your Proxmox version — CentOS Stream ships a recent kernel and this setting only nudges a few defaults.
  • System: the q35 machine type and SeaBIOS are fine for most setups. Tick Qemu Agent here so Proxmox knows to expect it, even though it isn't installed inside the VM yet.
  • Disks: 20GB or more, using VirtIO SCSI single as the controller. VirtIO is a set of paravirtualized drivers — instead of Proxmox emulating a real physical disk controller for the guest to talk to, the guest OS uses a driver written specifically for virtualized hardware, which is noticeably faster. Enable Discard if your storage backend is SSD-based or thin-provisioned, so space freed inside the VM actually gets reclaimed on the host.
  • CPU: 2 cores is enough to get through setup comfortably. Set Type to host if this VM will only ever run on this physical machine — it passes through your CPU's full instruction set for better performance than the generic default.
  • Memory: 2048MB minimum, 4096MB if you're not counting every megabyte.
  • Network: leave the bridge on vmbr0 (or your LAN bridge) and set the model to VirtIO (paravirtualized) rather than the emulated Intel E1000 card.
  • Confirm: review the summary and click Finish.

Step 3: Run through Anaconda

Select the VM, hit Start, and open its Console. CentOS Stream uses Anaconda, the same installer as RHEL and Fedora. From the boot menu pick Install CentOS Stream.

On the main installation summary screen, you need to visit a handful of sections before Begin Installation lights up:

  1. Installation Destination: select the virtual disk, leave automatic partitioning on unless you have a specific layout planned, and click Done.
  2. Software Selection: choose Minimal Install for a typical server VM. It keeps the base system small — you'll add exactly what you need afterward with dnf.
  3. Network & Host Name: the network interface is off by default in the installer. Flip it on, and set a hostname now if you have one picked out.
  4. Root Password / User Creation: Anaconda actually encourages you to leave the root account locked and create a regular user with administrator privileges instead — check the box for that and you'll get sudo access without extra configuration later. Setting a root password directly works too, if you'd rather have it.

Click Begin Installation. A minimal install on 2 vCPUs usually finishes in five to eight minutes. When it's done, click Reboot System.

Step 4: Detach the ISO

Before or right after the reboot, go to the VM's Hardware tab, select the CD/DVD Drive, click Edit, and set it to Do not use any media. Skip this and the VM will often boot straight back into the installer instead of the disk you just set up.

Step 5: Enable CRB and EPEL

Log in with your user account. CentOS Stream ships with only its BaseOS and AppStream repositories enabled by default, and that's often too narrow — a lot of common packages, especially from EPEL (Extra Packages for Enterprise Linux), depend on packages that live in a repository called CRB (CodeReady Builder), which ships disabled out of the box. Enable it and add EPEL with:

dnf install -y epel-release
dnf config-manager --set-enabled crb

You don't strictly need this if you're only ever going to use packages from the base repos, but the moment you try to install something like htop from EPEL that pulls in a CRB dependency, skipping this step is exactly why it'll fail.

Step 6: Install the QEMU Guest Agent

The guest agent is a small service that lets Proxmox see the VM's real IP address, shut it down cleanly instead of a hard power-off, and take consistent snapshots. Install and enable it:

dnf install -y qemu-guest-agent
systemctl enable --now qemu-guest-agent

Check the VM's Summary tab in Proxmox a minute later — its IP address should appear where it previously showed nothing.

Step 7: Update Everything

Because Stream updates continuously, whatever's on the ISO is already a little behind by the time you install it. Bring it fully current with:

dnf distro-sync -y

Reboot afterward if a new kernel was pulled in. From here you've got a current, working CentOS Stream VM.

Commands Explained

  • dnf install -y epel-release — adds the EPEL repository configuration to the system; -y skips the confirmation prompt.
  • dnf config-manager --set-enabled crb — turns on the CodeReady Builder repository, which many EPEL packages need as a dependency source.
  • dnf install -y qemu-guest-agent — installs the agent Proxmox uses to communicate with the guest OS.
  • systemctl enable --now qemu-guest-agent — enables the service for every future boot and starts it immediately, without waiting for a reboot.
  • dnf distro-sync -y — brings every installed package fully in line with what's currently in the enabled repositories. On a rolling distro like Stream this catches version bumps that a plain dnf update sometimes leaves behind.
  • cat /etc/centos-release — a quick way to confirm exactly which Stream release and build you're running, useful when troubleshooting or comparing notes with someone else.

Common Errors

  • The VM reboots straight back into the installer. The CD/DVD drive is still pointed at the ISO. Set it to "Do not use any media" under Hardware and reset the VM.
  • "Nothing provides ... needed by ..." during an EPEL package install. Almost always a missing CRB repository. Run dnf config-manager --set-enabled crb and try again.
  • No IP address on the Summary tab. The guest agent isn't installed or isn't running. Check with systemctl status qemu-guest-agent from the console.
  • Shutdown from the Proxmox UI just force-powers the VM off. Same cause as above — without a running guest agent, Proxmox can't send a clean shutdown signal and falls back to a hard stop after its timeout.
  • The netinstall boot.iso hangs at the start of installation. That ISO needs network access immediately to fetch packages. Confirm the VM's network device is attached to a working bridge before you boot it, not just once you reach the Network screen in Anaconda.

Troubleshooting

If the installer can't find the disk at the Installation Destination screen, double check the Disks tab in the VM's hardware settings — this usually means the SCSI controller type got changed mid-setup rather than an actual hardware fault.

Network issues are worth isolating before you assume the VM is at fault. Run ip a on the Proxmox host to confirm the bridge is up, then check that the VM's network device in its Hardware tab is attached to that same bridge. Inside the VM, nmcli device status will tell you whether the interface actually has an address.

If a package refuses to install and the error mentions a repository you don't recognize, run dnf repolist to see exactly which repos are currently enabled. It's a faster way to spot a missing CRB or EPEL entry than guessing from the error text alone.

Best Practices

Take a snapshot right after the initial install, guest agent setup, and first dnf distro-sync are done. That gives you a clean point to roll back to before anything else changes on the system.

Because Stream updates more often than a frozen-release distro, get in the habit of running dnf distro-sync on a regular schedule rather than letting updates pile up for months. A VM that's badly out of date on a rolling distro has more ground to cover in one jump, which is when upgrades are more likely to hit friction.

Keep CentOS Stream out of anything you'd call production unless you have a specific reason to track upstream RHEL changes. For a server you want to leave alone for a year, Rocky Linux or AlmaLinux will save you the maintenance overhead.

If you plan on running more than one Stream VM, convert this one into a template after it's patched and configured — right-click the VM and choose Convert to template. Cloning from a template skips the ISO installer entirely on every VM after the first.

Frequently Asked Questions

Is CentOS Stream the same thing as the old CentOS?

No. The old CentOS was a rebuild of finished RHEL releases. Stream sits ahead of RHEL instead, receiving updates continuously rather than in frozen point releases.

Is CentOS Stream free?

Yes, it's free and open source with no subscription required, same as Rocky Linux and AlmaLinux.

Should I use CentOS Stream or Rocky Linux for a homelab server?

Rocky Linux, in most cases. Stream is the right pick when you specifically want to test against upcoming RHEL changes; otherwise Rocky's frozen releases mean less unexpected drift over time.

Do I always need to enable CRB?

Only if you install packages from EPEL that depend on it, which is common enough that most people end up enabling it anyway.

Can I deploy CentOS Stream with cloud-init instead of the ISO installer?

Yes — official cloud-init-ready images exist and let you build a Proxmox template without touching Anaconda at all, though that's a separate workflow from the manual install in this guide.

Conclusion

CentOS Stream isn't a trap or a downgrade — it's a different tool for a different job than Rocky Linux, AlmaLinux, or RHEL itself. Once you understand it's meant to be a moving target by design, the occasional package bump stops feeling like a surprise and starts feeling like the point.

For a Proxmox homelab, the honest use case is testing and staying ahead of what's coming to the RHEL family, not running the one server you never want to think about again. Set it up in a VM the way this guide walks through, keep it updated with dnf distro-sync, and it'll do exactly what it's meant to do.