Files
docs-public/projects/proxmox/index.md
wompmacho ae769ca484
All checks were successful
deploy-docs / build-and-deploy (push) Successful in 48s
update proxmox notes, remove pros / cons and personalize a bit
2026-04-11 22:30:35 +00:00

83 lines
4.9 KiB
Markdown

---
title: Proxmox
description: Bare-metal Hypervisor Virtualization Platform
showHero: false
author: wompmacho
date: '2026-04-11'
lastmod: '2026-04-11'
tags: ['virtualization', 'self-hosted', 'linux', 'kvm', 'lxc']
---
## What is Proxmox?
Proxmox Virtual Environment (VE) is a powerful, open-source Bare-metal Hypervisor / virtualization management platform. It integrates two virtualization technologies—Kernel-based Virtual Machine (KVM) for virtual machines and Linux Containers (LXC) for lightweight container-based virtualization—into a single, easy-to-manage solution with a web-based interface.
> [!NOTE] I actually set this up a while ago, just now getting around to document things. I have run a few itterations of proxmox, the current is my main compute note in my setup hosting most of my docker containers, game-servers, dns resolver / sink etc.
---
## When choosing CPU...
Currently I am running `Proxmox > Ubuntu VM > code-server` for a nice CitC (client in the cloud) like interface I can use to access my projects / documentation and code from anywhere. Had some issues when I wanted to integrate gemini code assistant extension into my code-server instance.
*Turns out*: in version v2.56 they switched over to a more moderen cpu instruction set / in order to optimize for moderen ai-assisted workflows. Older default cpu architextures (*like the one used by my ubuntu vm at the time*) are missing some newer instruction sets that are required for the extension to run.
> [!NOTE] I struggled with this for a few weeks until I finally looked a bit deeper / aided by gemini `xD`
This is generally only a problem when you are creating a vm for the first time, so when making a vm; consider its uses and if it would make sense to not use the default options like I did. Luckily; they are interchangable on proxmox vms and do not require any sort of reinstalation like you would on a normal OS.
### Code Assist on a VM
The "The Gemini Code Assist server crashed 5 times" error can occur when using code-server or VS Code. This crash, identified by the SIGILL (Illegal Instruction) signal, is usually due to a hardware mismatch.
#### The Problem
This is caused by a modern Instructions set on "Generic" Hardware. Starting with version 2.56, the Gemini Code Assist server binary needs the `AVX` (Advanced Vector Extensions) instruction set. Proxmox often sets a VM's CPU type to kvm64. This hides these instructions for compatibility. When the extension tries to run an AVX command on a CPU that doesn't "have" it, the process crashes.
#### The Solution
- Step 1: Diagnosing the CPU:
A command can check for the required instruction flags. In the Ubuntu terminal, run:
```sh
lscpu | grep -i 'avx\|aes\|pclmul'
```
The Result: If the output shows aes, but avx and pclmul are missing, the virtual processor is too "basic".
- Step 2: The Immediate Fix (Downgrade)
To fix this, roll back to a version before these requirements were enforced:
1. Go to the Extensions tab in VS Code.
2. Click the gear icon for Gemini Code Assist and select "Install Another Version...".
3. Choose v2.55.x or earlier.
4. Important: Uncheck "Auto Update" to prevent it from breaking again.
- Step 3: The Long-Term Fix (Proxmox CPU Passthrough)
The best fix is to expose the physical CPU's features to the VM. No reinstallation is required.
How to change to "Host" Processor in Proxmox:
1. Shut down the Ubuntu VM.
2. Log into your Proxmox Web UI.
3. Select the VM > Hardware > Processors.
4. Double-click Type and change it from Default (kvm64) to host.
5. Restart the VM.
### Why use "Host"?
Setting the type to host passes the physical CPU's features—including AVX—directly to your Ubuntu instance. This fixes the Gemini crash and can improve performance.
- In host mode, the VM executes code directly on the physical hardware.
- This results in lower CPU latency and better performance in high-demand applications like databases, compilation (GCC/Clang), and web servers.
- Modern software often needs specific "shortcuts" in modern CPUs.
- AVX/AVX2/AVX-512: These are important for math-heavy tasks and AI.
- AES-NI: Speeds up encryption, which makes SSH, VPNs, and HTTPS faster.
- PCLMULQDQ: Speeds up data integrity checks and modern security protocols.
- The Linux scheduler can more intelligently place tasks on the right cores.
- The VM can sometimes access hardware-level performance counters, which is vital if you are doing any low-level debugging or performance profiling.
- If you want to run Docker with specialized isolation or even run a VM inside a VM (Nested Virtualization), host mode is usually the most stable way to pass through the necessary "VMX" (Intel) or "SVM" (AMD) flags.
- Modern CPUs have hardware-level protections (like Execute Disable Bit or SMEP/SMAP) that protect against memory injection attacks. Generic CPU models often disable these to ensure the VM can boot on any old server; host mode enables them fully.