> For the complete documentation index, see [llms.txt](https://wiki.skylix.pl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.skylix.pl/vps/stawianie-maszyn/proxmox.md).

# Proxmox

Jak zainstalować Proxmox VE na serwerze VPS z Debianem, skonfigurować sieć NAT, utworzyć pierwszą maszynę wirtualną i zabezpieczyć panel.

## Instalacja Proxmox VE na VPS

Ten poradnik pokazuje, jak zainstalować Proxmox VE na serwerze VPS z systemem Debian, skonfigurować sieć NAT dla maszyn wirtualnych, utworzyć pierwszą maszynę i podstawowo zabezpieczyć panel zarządzania.

{% hint style="warning" %}
Proxmox na VPS wymaga **zagnieżdżonej wirtualizacji (nested virtualization / KVM)**. Bez niej zadziałają tylko kontenery LXC, a maszyny wirtualne KVM nie wystartują. Przed instalacją upewnij się, że Twój VPS ją obsługuje (sprawdzenie w kroku 1).
{% endhint %}

### Wymagania

* VPS z włączoną wirtualizacją zagnieżdżoną
* Minimum 4 vCPU, 8 GB RAM i 60 GB dysku (im więcej zasobów, tym lepiej)
* Czysty system **Debian 13 (Trixie)** dla Proxmox VE 9 lub Debian 12 (Bookworm) dla Proxmox VE 8
* Dostęp root przez SSH
* Dostęp do konsoli VNC/KVM w panelu dostawcy VPS (na wypadek błędu w konfiguracji sieci)
* Jeden publiczny adres IPv4

### Metody instalacji

Są dwie drogi instalacji Proxmox na VPS:

1. **Przez Debiana** (opisana w krokach 1-7): działa u każdego dostawcy, który oferuje Debiana i KVM.
2. **Z obrazu ISO**: prostsza, ale wymaga, aby dostawca pozwalał podmontować własny obraz. Opis znajdziesz na końcu poradnika, w sekcji "Instalacja z obrazu ISO".

***

### 1. Sprawdzenie wirtualizacji

```bash
egrep -c '(vmx|svm)' /proc/cpuinfo
ls /dev/kvm
```

Jeśli pierwsza komenda zwraca `0` albo plik `/dev/kvm` nie istnieje, VPS nie obsługuje KVM. Skontaktuj się z dostawcą lub wybierz inną ofertę.

### 2. Przygotowanie systemu

Zaktualizuj system i ustaw nazwę hosta jako FQDN:

```bash
apt update && apt full-upgrade -y
hostnamectl set-hostname pve.twojadomena.pl
```

W pliku `/etc/hosts` nazwa hosta **musi** wskazywać na publiczny adres IP serwera, a nie na `127.0.1.1`:

```
127.0.0.1       localhost
203.0.113.10    pve.twojadomena.pl pve
```

Sprawdź konfigurację:

```bash
hostname --ip-address
```

Polecenie powinno wyświetlić publiczny adres IP serwera.

### 3. Dodanie repozytorium Proxmox

Poniższe komendy dotyczą Debiana 13 i Proxmox VE 9. Dla Debiana 12 zamień `trixie` na `bookworm` (oraz w nazwie pliku klucza).

```bash
wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg \
  -O /usr/share/keyrings/proxmox-archive-keyring.gpg

cat > /etc/apt/sources.list.d/pve-install-repo.sources << 'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

apt update && apt full-upgrade -y
```

{% hint style="info" %}
Repozytorium `pve-no-subscription` jest darmowe i nadaje się do małych wdrożeń. Aktualne kroki oraz sumy kontrolne klucza znajdziesz w oficjalnej instrukcji Proxmox: *Install Proxmox VE on Debian*.
{% endhint %}

### 4. Instalacja kernela Proxmox

```bash
apt install proxmox-default-kernel -y
reboot
```

Po restarcie połącz się ponownie przez SSH i sprawdź kernel:

```bash
uname -r
```

Nazwa kernela powinna zawierać `-pve`.

### 5. Instalacja Proxmox VE

```bash
apt install proxmox-ve postfix open-iscsi chrony -y
```

Przy konfiguracji Postfixa wybierz opcję **Local only**. Następnie usuń niepotrzebne pakiety i zaktualizuj GRUB:

```bash
apt remove os-prober -y
```

Usuń domyślny kernel Debiana (wybierz komendę dla swojej wersji):

```bash
# Debian 13 (Proxmox VE 9):
apt remove linux-image-amd64 'linux-image-6.12*' -y

# Debian 12 (Proxmox VE 8):
apt remove linux-image-amd64 'linux-image-6.1*' -y
```

```bash
update-grub
```

### 6. Konfiguracja sieci (NAT)

Większość VPS-ów ma jeden adres IP, a dostawcy często ograniczają ruch do jednego adresu MAC. Zwykły most (bridge) z publicznym IP dla maszyn wirtualnych **nie zadziała**. Najprostsze rozwiązanie to sieć wewnętrzna z NAT.

{% hint style="danger" %}
Błąd w `/etc/network/interfaces` może odciąć Cię od serwera. Zrób kopię pliku i miej pod ręką konsolę VNC w panelu dostawcy.
{% endhint %}

#### 6.1 Cloud-init i netplan

Niektóre obrazy VPS używają cloud-init lub netplan, które mogą nadpisać `/etc/network/interfaces` po restarcie. Wyłącz zarządzanie siecią przez cloud-init:

```bash
mkdir -p /etc/cloud/cloud.cfg.d
echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
```

Upewnij się też, że w `/etc/netplan/` nie ma aktywnych plików konfigurujących ten sam interfejs.

#### 6.2 Konfiguracja interfejsów

Zrób kopię zapasową:

```bash
cp /etc/network/interfaces /etc/network/interfaces.bak
```

Przykładowa konfiguracja (dostosuj nazwę interfejsu `ens3`, adres IP i bramę do swojego VPS-a):

```
auto lo
iface lo inet loopback

auto ens3
iface ens3 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1

auto vmbr0
iface vmbr0 inet static
    address 10.10.10.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up   iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o ens3 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s 10.10.10.0/24 -o ens3 -j MASQUERADE
```

Nazwę interfejsu sprawdzisz poleceniem `ip -br a`. Jeśli Twój VPS dostaje adres przez DHCP, zostaw dotychczasową konfigurację interfejsu `ens3` (z `iface ens3 inet dhcp`) i dodaj tylko sekcję `vmbr0`.

Włącz routing na stałe:

```bash
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-ip-forward.conf
sysctl --system
```

Zastosuj zmiany:

```bash
ifreload -a
```

#### 6.3 Dostęp do usług z zewnątrz (port forwarding)

Maszyny w sieci `10.10.10.0/24` nie są widoczne z internetu. Aby udostępnić usługę, na przykład SSH maszyny `10.10.10.100` pod portem 2222, dodaj do sekcji `vmbr0`:

```
post-up   iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 2222 -j DNAT --to 10.10.10.100:22
post-down iptables -t nat -D PREROUTING -i ens3 -p tcp --dport 2222 -j DNAT --to 10.10.10.100:22
```

Po zmianie wykonaj `ifreload -a`. Jeśli masz dodatkowe adresy IP od dostawcy, sprawdź w jego dokumentacji, czy wymagają osobnych adresów MAC i jak je skonfigurować.

### 7. Pierwsze logowanie

Panel jest dostępny pod adresem:

```
https://ADRES-IP-SERWERA:8006
```

Przeglądarka pokaże ostrzeżenie o certyfikacie. To normalne, ponieważ Proxmox używa certyfikatu samopodpisanego. Zaloguj się jako `root` i wybierz `Linux PAM standard authentication`. Hasło roota ustawisz poleceniem `passwd`.

### 8. Storage i wgrywanie obrazów ISO

Po instalacji na Debianie masz domyślnie tylko storage `local` (katalog `/var/lib/vz`). Nie ma `local-lvm`, który znasz z instalacji z ISO.

Aby wgrać obraz ISO:

1. Wejdź w **Datacenter → (Twój węzeł) → local → ISO Images**.
2. Kliknij **Upload** lub **Download from URL** i wklej adres obrazu.

Dyski maszyn wirtualnych trafiają na `local` jako pliki (format `qcow2`). Jeśli dodałeś osobny dysk do VPS-a, możesz skonfigurować na nim LVM-thin lub ZFS w **Datacenter → Storage**.

### 9. Pierwsza maszyna wirtualna

1. Kliknij **Create VM** w prawym górnym rogu.
2. **General:** nadaj nazwę i identyfikator VM.
3. **OS:** wybierz wgrany obraz ISO.
4. **System:** zostaw domyślne ustawienia i zaznacz **Qemu Agent**.
5. **Disks:** ustaw rozmiar dysku, jako storage wybierz `local`.
6. **CPU / Memory:** ustaw zasoby. Typ procesora `host` daje najlepszą wydajność.
7. **Network:** wybierz most `vmbr0`, model `VirtIO`.
8. Zakończ kreator, uruchom maszynę, otwórz konsolę i zainstaluj system.

Po instalacji systemu w maszynie zainstaluj agenta, np. na Debianie/Ubuntu: `apt install qemu-guest-agent`.

### 10. Sieć w maszynie wirtualnej

Maszyny w sieci `10.10.10.0/24` nie dostają adresu automatycznie. Ustaw go ręcznie w systemie gościa:

| Parametr | Wartość                                             |
| -------- | --------------------------------------------------- |
| Adres IP | `10.10.10.100` (kolejne maszyny: `.101`, `.102`...) |
| Maska    | `255.255.255.0` (`/24`)                             |
| Brama    | `10.10.10.1`                                        |
| DNS      | `1.1.1.1` lub `9.9.9.9`                             |

#### Automatyczne adresy (DHCP, opcjonalnie)

Jeśli chcesz, aby maszyny dostawały adresy automatycznie, zainstaluj na hoście serwer DHCP:

```bash
apt install dnsmasq -y
```

Utwórz plik `/etc/dnsmasq.d/vmbr0.conf`:

```
interface=vmbr0
bind-interfaces
dhcp-range=10.10.10.100,10.10.10.200,12h
dhcp-option=3,10.10.10.1
dhcp-option=6,1.1.1.1,9.9.9.9
```

Uruchom usługę:

```bash
systemctl enable --now dnsmasq
```

### 11. Zabezpieczenie serwera

Panel Proxmox wystawiony do internetu jest stałym celem botów. Wykonaj przynajmniej poniższe kroki:

1. **Włącz 2FA:** Datacenter → Permissions → Two Factor (TOTP lub WebAuthn).
2. **Nie używaj roota na co dzień:** utwórz osobnego użytkownika z odpowiednią rolą.
3. **Ogranicz dostęp do portu 8006:** najlepiej udostępnij panel tylko przez VPN (WireGuard lub Tailscale) i zablokuj port z zewnątrz.
4. **Zabezpiecz SSH:** wyłącz logowanie hasłem (`PasswordAuthentication no` w `/etc/ssh/sshd_config`) i używaj kluczy.
5. **Zainstaluj Fail2ban:** blokuje próby brute force (`apt install fail2ban`).
6. **Włącz firewall Proxmox** (zobacz ostrzeżenie poniżej).
7. **Aktualizuj system:** regularnie wykonuj `apt update && apt full-upgrade`.

{% hint style="danger" %}
Włączenie firewalla Proxmox (Datacenter → Firewall → Options → Firewall: Yes) **bez wcześniejszego dodania reguł** zablokuje dostęp do SSH i panelu. Najpierw dodaj reguły przychodzące (Direction: IN, Action: ACCEPT) dla portów `22/tcp` i `8006/tcp` (najlepiej tylko z Twojego adresu IP lub z VPN), dopiero potem włącz firewall.
{% endhint %}

### 12. Certyfikat SSL dla panelu (opcjonalnie)

Zamiast certyfikatu samopodpisanego możesz użyć Let's Encrypt:

1. Wejdź w **Datacenter → ACME**, dodaj konto i wybierz **Let's Encrypt V2**.
2. W **(Twój węzeł) → System → Certificates** dodaj domenę (np. `pve.twojadomena.pl`).
3. Kliknij **Order Certificates Now**.

Wymaga to rekordu DNS wskazującego na serwer oraz otwartego portu 80 do weryfikacji.

### 13. Komunikat o braku subskrypcji

W wersji bez subskrypcji Proxmox wyświetla przy logowaniu okno z informacją o braku licencji. Jest ono informacyjne i nie wpływa na działanie systemu. Jeśli potrzebujesz repozytorium enterprise i wsparcia, możesz wykupić subskrypcję na stronie Proxmox.

***

### Instalacja z obrazu ISO (alternatywa)

Jeśli dostawca VPS pozwala podmontować własny obraz ISO, możesz pominąć kroki 2-5 i zainstalować Proxmox standardowym instalatorem:

1. Pobierz obraz z oficjalnej strony Proxmox i podmontuj go w panelu dostawcy.
2. Uruchom VPS z ISO i przejdź przez graficzny instalator.
3. W instalatorze ustaw adres IP, bramę i DNS zgodnie z danymi od dostawcy.
4. Po instalacji przejdź do kroku 6 (sieć NAT).

Ta metoda jest prostsza, ale wymaga wsparcia dostawcy. Sprawdź, czy ma opcję własnego ISO oraz czy obsługuje boot zgodny z wymaganiami Proxmox (UEFI lub BIOS). W tym wariancie storage `local-lvm` będzie dostępny od razu.

***

### Najczęstsze problemy

| Objaw                                 | Możliwa przyczyna                                       | Rozwiązanie                                                                                  |
| ------------------------------------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| Maszyna KVM nie startuje              | Brak nested virtualization                              | Poproś dostawcę o włączenie KVM                                                              |
| Brak internetu w VM                   | Brak NAT, wyłączony `ip_forward` lub zły DNS/brama w VM | Sprawdź regułę MASQUERADE, `sysctl net.ipv4.ip_forward` oraz ustawienia sieci w VM (krok 10) |
| Panel nie otwiera się na porcie 8006  | Firewall lub nieuruchomiona usługa                      | `systemctl status pveproxy`, sprawdź reguły firewalla                                        |
| Utrata dostępu po zmianie sieci       | Błąd w `interfaces`                                     | Przywróć kopię `.bak` przez konsolę VNC                                                      |
| Sieć znika po restarcie               | Cloud-init/netplan nadpisuje konfigurację               | Wykonaj krok 6.1                                                                             |
| Utrata dostępu po włączeniu firewalla | Brak reguł dla portów 22 i 8006                         | Wyłącz firewall z konsoli VNC (`pve-firewall stop`) i dodaj reguły                           |
| Błąd `hostname lookup failed`         | Zły wpis w `/etc/hosts`                                 | Popraw wpis zgodnie z krokiem 2                                                              |
| Brak `local-lvm`                      | Instalacja przez Debiana                                | To normalne, używaj storage `local` (krok 8)                                                 |

### Potrzebujesz pomocy?

Jeśli coś nie działa, napisz do nas na Discordzie lub skontaktuj się z pomocą techniczną.
