Proxmox VE on a dedicated server: installation, network, first VM in an hour
TL;DR
In this detailed guide, we will step-by-step configure Proxmox VE 9.x on a dedicated server, transforming it into a powerful virtualization platform. You will learn how to install Proxmox VE on Debian 13 "Trixie", set up a network bridge for virtual machines to access the internet, and create and launch your first virtual machine with Debian. The entire process will take about an hour, after which you will have a fully functional system for managing virtual servers, containers, and data storage.
- Installation of Proxmox VE 9.x on a clean dedicated server with Debian 13.
- Configuration of a network bridge (Linux Bridge) for seamless VM integration into your network.
- Creation and launch of the first virtual machine with the Debian operating system.
- Ensuring basic server security and recommendations for further maintenance.
- Minimum hardware requirements and selection of a suitable server.
- Troubleshooting common issues and answering questions about Proxmox VE.
What we are configuring and why
We will be configuring Proxmox Virtual Environment (VE) — a powerful, open-source platform for server virtualization, combining KVM (Kernel-based Virtual Machine) for full-fledged virtual machines and LXC (Linux Containers) for lightweight containers. Proxmox VE allows consolidating multiple servers onto a single physical machine, efficiently utilizing hardware resources and significantly simplifying infrastructure management.
Ultimately, the reader will get a fully operational virtualization platform on their own dedicated server. This means full control over resources, security, and configuration, the ability to run various operating systems (Linux, Windows, BSD) and applications in isolated environments, as well as flexibility in scaling and management.
Why is this needed? Proxmox VE is ideal for developers who need to quickly deploy test environments or GitLab instances; for SaaS solo founders wishing to host Mattermost or other team services; for gamers who want to set up a Minecraft server with the ability to create multiple worlds or game servers; for crypto enthusiasts managing multiple Bitcoin/Ethereum nodes; and for those who value privacy by setting up their own VPN servers (e.g., WireGuard). This is a way to get a flexible, scalable, and cost-effective infrastructure without being tied to a specific cloud provider.
There are alternatives, such as managed cloud services (AWS EC2, Google Compute Engine, Azure Virtual Machines) or other virtualization platforms (VMware ESXi, Hyper-V, oVirt). Cloud services are convenient but often more expensive in the long run, especially under high loads or with specific hardware requirements, and they do not provide full control over the "hardware". Other platforms can be proprietary or have a steeper learning curve. Proxmox VE, however, offers a balance between functionality, openness, and ease of management, making a self-hosted solution on a dedicated server an attractive choice for many tasks.
What VPS configuration is needed for this task
Proxmox VE is primarily intended for installation on dedicated servers, as it requires direct access to hardware virtualization (Intel VT-x/AMD-V) and network interfaces. Installing Proxmox VE on a regular VPS (which is itself a virtual machine) is only possible if the provider supports nested virtualization, which is not always available and can significantly reduce performance. Therefore, it is highly recommended to use a dedicated server for Proxmox VE.
Minimum requirements for Proxmox VE 9.x (as of 2026):
- CPU: 64-bit processor (Intel EMT64 or AMD64) with hardware virtualization support (Intel VT-x or AMD-V). Minimum 2 cores.
- RAM: 2 GB for the Proxmox VE system itself, plus additional memory for each virtual machine and container. 8 GB or more is recommended.
- Disk: SSD or NVMe drive with a capacity of 32 GB or more for Proxmox VE installation and core system files. Virtual machines will require significantly more space (minimum 250 GB, but 1-2 TB is better).
- Network: One Gigabit network interface. For production environments or high network loads, 2x1 Gbit/s or 10 Gbit/s is recommended.
Specific plan for the task (for Proxmox VE with multiple VMs):
For comfortable operation of Proxmox VE with 2-4 virtual machines (e.g., GitLab, Mattermost, Minecraft server), each consuming 2-4 GB RAM and 1-2 CPU cores, a more powerful dedicated server will be required:
- CPU: Intel Xeon E3-1505M v5 (4 cores/8 threads) or AMD Ryzen 7 5800X (8 cores/16 threads).
- RAM: 32 GB DDR4 ECC RAM.
- Disk: 2x 1 TB NVMe SSD in RAID1 for performance and fault tolerance, or 2x 2 TB HDD in RAID1 for large data volumes with an additional SSD for the Proxmox system and frequently used VMs.
- Network: 1 Gbit/s port with unlimited traffic.
To rent a suitable dedicated server with such characteristics, you can consider offers from providers specializing in dedicated servers. Make sure that the selected server provides full root access and the ability to install your own OS or a Debian template.
When a dedicated server is needed, not a VPS
A dedicated server is necessary for Proxmox VE in most cases, especially if you need full control over hardware, guaranteed performance, the ability to use hardware virtualization without limitations, and specific network configurations (e.g., multiple IP addresses, VLANs). A VPS might be sufficient for very light tasks or testing Proxmox VE, but only if the provider supports nested virtualization.
Location: what it affects
The choice of server location affects the latency (ping) to your users or other services. The closer the server is to your target audience, the faster the response will be. For European users, it is better to choose servers in Europe (Germany, Netherlands, France); for American users, in the USA; for Asian users, in Asia. Location can also affect data storage laws and service costs.
Server Preparation
Before installing Proxmox VE, you need to perform basic setup of a fresh dedicated server with Debian 13 "Trixie" installed (current version as of 2026). It is assumed that you have root access via SSH.
1. System Update and Installation of Basic Utilities
First, let's update the package list and the system itself, and install the necessary utilities.
# Обновление списка пакетов
sudo apt update
# Обновление всех установленных пакетов до последних версий
sudo apt upgrade -y
# Установка базовых утилит, если их нет (nano, curl, wget, htop, net-tools, sudo)
sudo apt install -y nano curl wget htop net-tools sudo
What the command does: Updates system packages and installs essential packages for convenient server operation.
2. Creating a New User with Sudo Privileges
It is not recommended to constantly work as the root user. Let's create a new user and add them to the sudo group.
# Замените 'youruser' на желаемое имя пользователя
sudo adduser youruser
# Добавление пользователя в группу sudo
sudo usermod -aG sudo youruser
What the command does: Creates a new user 'youruser' and grants them privileges to execute commands with sudo.
After this, exit the root session and log in as the new user.
# Выход из текущей SSH-сессии
exit
Now log in as youruser:
ssh youruser@your_server_ip
3. Setting up SSH Keys (Recommended)
To enhance security, it is recommended to use SSH keys instead of passwords. If you don't have them, generate them on your local machine:
# На вашей локальной машине
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Copy the public key to the server:
# На вашей локальной машине, замените 'youruser' и 'your_server_ip'
ssh-copy-id youruser@your_server_ip
After this, you can disable password authentication (in the file /etc/ssh/sshd_config):
# Откройте файл конфигурации SSH-сервера
sudo nano /etc/ssh/sshd_config
Find and modify the following lines (or add them if they are missing):
# Отключение аутентификации по паролю
PasswordAuthentication no
# Разрешение аутентификации по ключу
PubkeyAuthentication yes
# Отключение входа для root по SSH (рекомендуется)
PermitRootLogin no
What the command does: Disables password login and root user login, allowing only SSH key login for the created user, significantly enhancing security.
Restart the SSH server:
sudo systemctl restart sshd
4. Installing and Configuring Fail2Ban
Fail2Ban protects against brute-force attacks by blocking IP addresses from which numerous failed login attempts originate.
# Установка Fail2Ban
sudo apt install -y fail2ban
What the command does: Installs the Fail2Ban daemon.
Create a local configuration file so that your changes are not overwritten during updates:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
In the jail.local file, find the [sshd] section and ensure it is active (enabled = true):
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 3
bantime = 1h
What the command does: Copies the default configuration and activates SSH protection, blocking IP addresses for 1 hour after 3 failed login attempts.
Restart Fail2Ban:
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
5. Firewall Configuration (UFW)
UFW (Uncomplicated Firewall) is a simple interface for managing iptables. Let's configure it for basic protection.
# Установка UFW
sudo apt install -y ufw
# Разрешить SSH (по умолчанию порт 22, если вы его меняли, укажите новый)
sudo ufw allow ssh
# Разрешить HTTP и HTTPS (для веб-интерфейса Proxmox и будущих ВМ)
sudo ufw allow http
sudo ufw allow https
# Запретить все входящие соединения по умолчанию
sudo ufw default deny incoming
# Разрешить все исходящие соединения по умолчанию
sudo ufw default allow outgoing
# Включить UFW
sudo ufw enable
What the command does: Installs the UFW firewall, allows incoming connections only on SSH, HTTP, and HTTPS ports, denies all other incoming connections, and activates the firewall.
Check UFW status:
sudo ufw status verbose
Now the server is ready for Proxmox VE installation.
Software Installation — Step-by-Step
Installing Proxmox VE 9.x on Debian 13 "Trixie" involves adding the Proxmox repository, installing necessary packages, and configuring network components. Ensure that you have completed all server preparation steps from the previous section.
1. Configuring the hosts file
Proxmox VE requires a correctly configured hostname and its mapping to an IP address. Replace your_server_ip with your server's actual IP address and your_hostname.your_domain with your server's Fully Qualified Domain Name (FQDN).
# Check current hostname
hostname -f
# If hostname is not FQDN, edit /etc/hostname and /etc/hosts
sudo nano /etc/hostname
# The file should contain only the short name, for example:
# pvehost
sudo nano /etc/hosts
# Add or modify lines to look like this (replace with your data):
# 127.0.0.1 localhost
# 192.0.2.10 pvehost.yourdomain.com pvehost
# ::1 localhost ip6-localhost ip6-loopback
# ff02::1 ip6-allnodes
# ff02::2 ip6-allrouters
What the command does: Sets the Fully Qualified Domain Name for the server and maps it to an IP address in the hosts file, which is critical for Proxmox VE's correct operation.
2. Adding Proxmox VE Repositories
Let's add the Proxmox VE 9.x repository, which is based on Debian 13 "Trixie".
# Add GPG key for Proxmox repository
sudo wget https://enterprise.proxmox.com/debian/proxmox-release-key.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
# (Note: by 2026, there will likely be a new key for Trixie, but for now we use Bookworm as the base)
# Add Proxmox VE repository to sources.list.d
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve trixie pve-no-subscription" | sudo tee /etc/apt/sources.list.d/pve-install-repo.list
# (Note: by 2026, 'trixie' will be the stable Debian branch)
What the command does: Imports the Proxmox GPG key to verify package authenticity and adds the official Proxmox VE repository for Debian 13 "Trixie" to the APT sources list.
3. System Update and Proxmox VE Installation
Now, let's update the package list and install Proxmox VE.
# Update package list
sudo apt update
# Upgrade system considering the new Proxmox repository
sudo apt dist-upgrade -y
# Install Proxmox VE packages
sudo apt install -y proxmox-ve postfix open-iscsi chrony
What the command does: Updates all system packages, installs the Proxmox VE kernel, web interface, Postfix (for notifications), open-iscsi (for iSCSI storage), and Chrony (for time synchronization).
During the Postfix installation, it may prompt for configuration. Select "Internet Site" and specify your server's FQDN.
4. Removing the Unused Debian Kernel
Proxmox VE installs its own kernel, optimized for virtualization. The standard Debian kernel is no longer needed.
# Check installed kernels
dpkg -l | grep linux-image
# Remove standard Debian kernel (example, may vary)
# Replace '6.6.15-amd64' with the non-Proxmox kernel version
sudo apt remove -y linux-image-amd64 linux-headers-amd64
sudo apt autoremove -y
What the command does: Removes the standard Debian Linux kernel to avoid conflicts and free up space, as Proxmox uses its own kernel.
5. Configuring the Network Bridge (Linux Bridge)
This is the most important step for Proxmox network configuration. We will create a network bridge vmbr0 that will use your primary network interface (e.g., eth0 or enpXsX). All virtual machines will connect to this bridge, gaining access to the physical network.
First, identify the name of your primary network interface:
ip a
Typically, this is eth0 or something like enp1s0. Replace with your interface name, with your server's IP address, with the gateway IP address, and with the subnet mask.
sudo nano /etc/network/interfaces
Example content for the /etc/network/interfaces file. Comment out or remove everything related to your primary interface and add the following:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# Your primary network interface (replace with your own)
# This should be the physical interface that Proxmox will use as a "port" for the bridge.
# DO NOT ASSIGN AN IP ADDRESS TO IT! It should be "empty" (manual).
auto
iface inet manual
# Proxmox Bridge (vmbr0)
# All virtual machines will be connected to this bridge.
auto vmbr0
iface vmbr0 inet static
address /
gateway
bridge-ports
bridge-stp off
bridge-fd 0
What the command does: Configures the network interface to create a Linux bridge (vmbr0), which will use the physical network adapter to communicate with the outside world. Proxmox VE and all VMs will gain network access through this bridge.
After saving the file, reboot the server to apply network changes. This is critically important!
sudo reboot
6. Accessing the Proxmox VE Web Interface
After the server reboots, Proxmox VE will be accessible at:
https://:8006
Log in with the username root and the password you set for the root user during Debian installation. Your browser may display a warning about a self-signed certificate — this is normal, accept it.
At this point, Proxmox VE is installed and ready for creating virtual machines.