All checks were successful
deploy-docs / build-and-deploy (push) Successful in 48s
83 lines
4.9 KiB
Markdown
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.
|