Dlaczego warto zainstalować ręcznie Proxmox 7 na Debian 11
Możemy oczywiście zainstalować Proxmox 7 bezpośrednio z gotowego obraz ISO nagranego na pendrive ale najważniejszą zaletą instalacji czystego Debiana 11 przed Proxmox VE jest swobodny podział dysku na dowolny układ partycji w wybranym systemie plików np. EXT3/EXt4 a nie narzuconym LVM. Pod spodem Proxmox 7 jest przecież dokładnie Debian 11 z dodatkowymi repozytoriami i zainstalowanym oprogramowaniem do wirtualizacji Qemu/KVM.
Przygotowanie obrazu systemu Debian 11 na pendrive
Pobieramy obraz systemu Debian 11 debian-live-11.7.0-amd64-standard.iso ~ 1,2 GB z https://cdimage.debian.org/cdimage/release/current-live/amd64/iso-hybrid/ i nagrywamy przy użyciu programu Rufus na naszego pendrive => 2 GB.
Instalacja Debian 11 na Intel NUC NUC10i7FNK
Przed rozpoczęciem instalacji dobrze jest ustawić zalecane ustawienia BIOS-u szczególnie opcję Legacy Boot. Uruchamiamy Intel NUC, wciskamy F10 i botujemy system z pendrive. W tym przypadku ponieważ głównym i jedynym dyskiem wewnętrznym czyli najszybszym będzie WD Blue SN 570 NVMe o pojemności 2 TB dobrze jest utworzyć na nim 2 osobne partycje EXT4:
– 16 GB na system, konfigurację i dodatkowe programy z punktem montowania /. Po instalacji Proxmox VE wykorzystane jest ok 4,3 GB z 16 GB.
– 2 TB na maszyny wirtualne oraz logi z punktem montowania /var . W katalogu /var/lib/vz są przechowywane pliki maszyn wirtualnych.
Wybieramy z dodatkowego oprogramowania tylko SSH Server ora standard system utilities.
Instalacja Proxmox 7 na Debian 11
Instalację Proxmox VE na Debian 11 opisuje również szczegółowo strona producenta Proxmox Install Proxmox VE on Debian 11 Bullseye – Proxmox VE. Poniżej jest dokładny zapis tego w jaki sposób ja zainstalowałem i przygotowałem do działania Proxmox VE na swoim serwerze.
Instalacja i konfiguracja OpenSSH Server
# gdyby pominięto podczas instalacji z pendrive apt-get install openssh-server systemctl status sshd # jeśli to nasz serwer, dostępny tylko z wewnętrz i mamy nad nim pełną kontrolę to # warto dla ułatwienia włączyć bezpośrednio logowania root-a nano /etc/ssh/sshd_config PermitRootLogin yes systemctl restart sshd
Ustawienie nazwy hosta oraz statycznego adresu ip Debian 11
Moja domowa sieć jest prywatną adresacją w klasie C o notacji 192.168.8.0/24. W tym przypadku Debian 11 ma dostępną tylko 1 fizyczną kartę sieciową przypiętą do 1 interfejsu sieciowego Linux o nazwie eno1 i statycznie ustawionym adresie 192.168.8.20. Na potrzeby wszystkich usług wewnątrz sieci tam gdzie to tylko możliwe stosuje się komunikację po protokole https i certyfikat Letsencrypt generowany dla domeny netapps.ovh. Serwer DNS na routerze Mikrotik (192.168.8.1) ma statyczne wpisy wskazujące lokalne adresy ip na nazwy hostów w domenie *.netapps.ovh np. 192.168.8.20 – pve.netapps.ovh
nano /etc/hosts 127.0.0.1 localhost #127.0.1.1 pve 192.168.8.20 pve.netapps.ovh pve # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters # to polecenie powinno zwrócić adres ip serwera hostname --ip-address 192.168.8.20
Ustawiamy statyczny adres ip potrzebny do instalacji Proxmox VE
# edytujemy konfigurację sieci nano /etc/network/interfaces # 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 # The primary network interface #allow-hotplug eno1 #iface eno1 inet dhcp auto eno1 iface eno1 inet static address 192.168.8.20 netmask 255.255.255.0 gateway 192.168.8.1 dns-domain netapps.ovh dns-nameservers 192.168.8.1 # po zapisaniu zmian w /etc/network/interfaces usuwamy rm -rf /etc/network/interfaces.d/setup # restartujemy usługę sieci systemctl restart networking
Dodanie repozytorium Proxmox VE i instalacja pve-kernel 6.2 oraz Proxmox VE
# dodanie repozytoriów proxmox ve echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg apt update && apt full-upgrade # instalacja najnowszego kernela 6.x apt install pve-kernel-6.2 systemctl reboot # instalacja pakietów Proxmox VE apt install proxmox-ve postfix open-iscsi reboot # posprzątanie systemu po instalacji apt remove linux-image-amd64 'linux-image-5.10*' update-grub apt remove os-prober
Dodanie / wyłączenia swapa w systemie Debian 11
W zależności od ilości pamięci fizycznej możemy ustawić wymagany rozmiar swap-a. Red Hat zaleca wielkość swapa na ok 20 % rozmiaru pamięci fizycznej, co w moim przypadku dla 64GB RAM oznacza 12 GB swapa.
# sprawdzamy obecne ustawienia swapa sudo swapon --show sudo swapoff /swap.img rm -rf /swap.img sudo fallocate -l 12G /var/swap mkswap -f /var/swap chmod 0600 /var/swap sudo swapon /var/swap # dodajemy wpis do montowania swap przy starcie systemu nano /etc/fstab /var/swap none swap sw 0 0
Jeśli jednak mamy dużo pamięci fizycznej RAM i chcemy zwiększyć żywotność dysku SSD to warto wyłączyć swapa w systemie i/ lub zmniejszyć parametr swappiness
# sprawdzenie obecnego ustawienia przerzucania nieżywanych obszarów RAM do swapa cat /proc/sys/vm/swappiness sysctl -w vm.swappiness=0 nano /etc/sysctl.conf vm.swappiness=0 sudo swapoff /var/swap rm -rf /var/swap
Ustawienie strefy czasowej i włączenie automatycznej synchronizacji czasu ze źródłem w internecie
# ustawienie strefy czasowej timedatectl set-timezone Europe/Warsaw # instalacja chrony apt install chrony systemctl start chrony systemctl enable chrony # sprawdzenie czy chrony się aktualizuje chronyc sources -v chronyc tracking
Utworzenie podstawowego bridge vmbr0 dla Proxmox VE
Bridge w Proxmox VE ma wiele zastosowań np. tworzenie VLAN-ów czyli separacja ruchu pomiędzy maszynami wirtualnymi a pozostałymi elementami sieci. Dlatego zalecane jest korzystanie z bridge zamiast bezpośrednio z interfejsów sieciowych np. eno1. Domyślnie Proxmox 7 instaluje vmbr0 podczas gdy po instalacji na Debianie 11 należy utworzyć go ręcznie.
nano /etc/network/interfaces
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT read its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
#auto eno1
#iface eno1 inet static
# address 192.168.8.20/24
# gateway 192.168.8.1
# dns-domain netapps.ovh
# dns-nameservers 192.168.8.1
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.8.20/24
gateway 192.168.8.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
# restart usłygi sieciowej po zmianach w /etc/network/interfaces
systemctl restart networking
Instalacja tuned-adm
tune-adm to narzędzie wiersza poleceń, które umożliwia przełączanie między profilami Tuned w celu poprawy wydajności w wielu określonych przypadkach użycia. Udostępnia również polecenie podrzędne tune-adm, które ocenia system i wyświetla zalecany profil dostrajania. Więcej informacji o tym ciekawym narzędziu można znaleźć na stronie A.5. tuned-adm Red Hat Enterprise Linux 7 | Red Hat Customer Portal
# instalacja pakietów tuned apt install tuned tuned-utils tuned-utils-systemtap # ustawienie profilu dla wirtualizacji tuned-adm profile virtual-host # sprawdzenie jaki profil jest aktywny tuned-adm active Current active profile: virtual-host
Włączenie ksmtuned
Scalanie tej samej strony jądra (KSM), używane przez hipernadzorcę KVM, umożliwia gościom KVM współdzielenie identycznych stron pamięci. Te udostępnione strony to zwykle wspólne biblioteki lub inne identyczne, często używane dane. KSM pozwala na większą gęstość gości identycznych lub podobnych systemów operacyjnych gościa, unikając powielania pamięci.
Koncepcja pamięci współdzielonej jest powszechna w nowoczesnych systemach operacyjnych. Na przykład, kiedy program jest uruchamiany po raz pierwszy, dzieli całą swoją pamięć z programem nadrzędnym. Kiedy program potomny lub rodzic próbuje zmodyfikować tę pamięć, jądro przydziela nowy region pamięci, kopiuje oryginalną zawartość i pozwala programowi zmodyfikować ten nowy region. Jest to znane jako kopiowanie przy zapisie. KSM to funkcja Linuksa, która wykorzystuje tę koncepcję w odwrotnej kolejności. KSM umożliwia jądru zbadanie dwóch lub więcej już uruchomionych programów i porównanie ich pamięci. Jeśli jakiekolwiek regiony pamięci lub strony są identyczne, KSM redukuje wiele identycznych stron pamięci do jednej strony. Ta strona jest następnie oznaczana jako kopia przy zapisie. Jeśli zawartość strony zostanie zmodyfikowana przez maszynę wirtualną gościa, dla tego gościa zostanie utworzona nowa strona. Jest to przydatne w przypadku wirtualizacji z KVM. Po uruchomieniu maszyny wirtualnej gościa dziedziczy ona tylko pamięć z procesu hosta qemu-kvm. Po uruchomieniu gościa zawartość obrazu systemu operacyjnego gościa może być udostępniana, gdy goście korzystają z tego samego systemu operacyjnego lub aplikacji. KSM pozwala KVM zażądać udostępnienia tych identycznych regionów pamięci gościa. KSM zapewnia zwiększoną szybkość i wykorzystanie pamięci. W KSM wspólne dane procesowe są przechowywane w pamięci podręcznej lub w pamięci głównej. Zmniejsza to braki w pamięci podręcznej dla gości KVM, co może poprawić wydajność niektórych aplikacji i systemów operacyjnych. Po drugie, współdzielenie pamięci zmniejsza ogólne wykorzystanie pamięci przez gości, co pozwala na większe zagęszczenie i lepsze wykorzystanie zasobów. Poniższe ustawienie ksmtuned zakłada że przy użyciu ponad 32 GB czyli 50 % z 64 GB RAM ksmtuned zacznie współdzielić identyczne strony pamięci.
apt install ksmtuned ystemctl enable ksmtuned systemctl start ksmtuned nano /etc/ksmtuned.conf # Configuration file for ksmtuned. # How long ksmtuned should sleep between tuning adjustments KSM_MONITOR_INTERVAL=60 # Millisecond sleep between ksm scans for 16Gb server. # Smaller servers sleep more, bigger sleep less. KSM_SLEEP_MSEC=100 #KSM_SLEEP_MSEC=10 # KSM_NPAGES_BOOST - is added to the `npages` value, when `free memory` is less than `thres`. KSM_NPAGES_BOOST=300 # KSM_NPAGES_DECAY - is the value given is subtracted to the `npages` value, when `free memory` is greater than `thres`. KSM_NPAGES_DECAY=-50 # KSM_NPAGES_MIN - is the lower limit for the `npages` value. KSM_NPAGES_MIN=64 # KSM_NPAGES_MAX - is the upper limit for the `npages` value. KSM_NPAGES_MAX=1250 # KSM_THRES_COEF - is the RAM percentage to be calculated in parameter `thres`. # if (free_memory < (KSM_THRES_COEF*total/100)) # 64 GB physical RAM = 12,8 GB (20 %) start KSM KSM_THRES_COEF=50 # KSM_THRES_CONST - If this is a low memory system, and the `thres` value is less than `KSM_THRES_CONST`, then reset `thres` value to `KSM_THRES_CONST` value. KSM_THRES_CONST=2048 # uncomment the following to enable ksmtuned debug information LOGFILE=/var/log/ksmtuned DEBUG=1 # restart usługi ksmtuned po zmianach w /etc/ksmtuned.conf systemctl restart ksmtuned
Dodanie repozytorium no-subscription i aktualizacja systemu
# usunięcie niepotrzebnych repo rm -rf /etc/apt/sources.list.d/pve-enterprise.list rm -rf /etc/apt/sources.list.d/pve-install-repo.list nano /etc/apt/sources.list deb http://ftp.debian.org/debian bullseye main contrib deb http://ftp.debian.org/debian bullseye-updates main contrib deb http://security.debian.org/debian-security bullseye-security main contrib deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription # aktualizacja systemu apt update && apt upgrade
Wyłączenie monitu no subscription w Proxmox VE 7
cd /usr/share/javascript/proxmox-widget-toolkit
cp proxmoxlib.js proxmoxlib.js.bak
nano proxmoxlib.js
# ctrl + w "No Valid Subscription"
# zmienić to
Ext.Msg.show({
title: gettext('No valid subscription'),
Modify it to look like this:
# na to
void({
title: gettext('No valid subscription'),
# zapisać zmiany i ponownie uruchomić przeglądarkę
systemctl restart pveproxy.service
Proxmox VE Helper Scripts
Dwie powyższe operacje oraz wiele innych możemy wykonać automatycznie przy pomocy gotowego skryptu: post-pve-install.sh pochodzącego z GitHub – tteck/Proxmox: Proxmox VE Helper Scripts
# na praktycznie wszystkie pytania odpowiadamy twierdząco bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pve-install.sh)"
Dostęp do konsoli Proxmox VE
# jeśli nie mamy skonfugurowanego lokalnego DNS-a wskazującego na adres ip PVE https://192.168.8.20:8006/ # jeśli mamy skonfigurowany lokalny DNS wskazujący lokalny adres ip PVE na nazwę domenową np. https://pve.netapps.ovh:8006/
Następne kroki w konfiguracji Proxmox VE
- Let’s Encrypt wildcard dystrybucja certyfikatu SSL w sieci wewnętrznej – IT Admin (vblog.ovh)
- Proxmox VE – powiadamianie emailowe przez Postfix na zewnętrzny serwer poczty
- Proxmox VE – backup maszyn wirtualnych – IT Admin (vblog.ovh)
- Proxmox VE – przydatne polecenia z linii komend – IT Admin (vblog.ovh)
- Proxmox VE – zarządzanie kontenerami LXC – IT Admin (vblog.ovh)







