Domowy serwer nie musi być drogą maszyną stojącą w szafie rackowej. Do nauki, hostowania własnych stron i uruchamiania niewielkich usług często wystarczy energooszczędny mini-PC albo nieużywany komputer. W tym poradniku zainstalujemy na nim Proxmox VE, utworzymy kontener z serwerem Nginx, a następnie udostępnimy stronę pod własną domeną za pośrednictwem Nginx Proxy Managera.
Trzeba jednak pamiętać, że domowy hosting nie zapewnia automatycznie niezawodności profesjonalnej serwerowni. Jego dostępność zależy między innymi od domowego łącza, zasilania i sprawności jednego fizycznego komputera. To znakomite środowisko do nauki i własnych projektów, ale przed uruchomieniem ważnej usługi warto zaplanować kopie zapasowe, monitoring i sposób odtworzenia systemu po awarii.
Czym jest Proxmox VE?
Proxmox Virtual Environment, w skrócie Proxmox VE, to platforma do wirtualizacji instalowana bezpośrednio na fizycznym komputerze. Zawiera system oparty na Debianie oraz panel webowy, z którego można zarządzać serwerem, siecią, pamięcią masową i dwoma rodzajami środowisk:
- maszynami wirtualnymi KVM, które mają własne jądro systemu i zapewniają mocniejszą izolację,
- kontenerami LXC, które współdzielą jądro hosta, dzięki czemu zużywają mniej zasobów, ale mogą uruchamiać wyłącznie systemy Linux.
W tym poradniku utworzymy lekki kontener LXC. Może on pełnić podobną funkcję jak kupiony u dostawcy VPS, lecz technicznie nie jest maszyną wirtualną. Rozróżnienie jest ważne, ponieważ w panelu Proxmoxa kontener tworzy się przyciskiem Create CT, natomiast pełną maszynę wirtualną - przyciskiem Create VM.
Na jednym hoście można uruchomić na przykład:
- strony i aplikacje internetowe,
- bazy danych,
- serwer VPN,
- prywatną chmurę plików,
- serwer Git,
- Home Assistanta,
- narzędzia do monitoringu.
Liczba i rodzaj usług zależą przede wszystkim od zasobów komputera. Warto rozdzielać niezależne aplikacje między osobne kontenery lub maszyny wirtualne. Ułatwia to ich aktualizowanie, zabezpieczanie i odtwarzanie z kopii zapasowej.
Jaki komputer wybrać do domowego serwera?
Na początek nie potrzebujesz specjalistycznego sprzętu serwerowego. Dobrze sprawdzi się:
- mini-PC z procesorem Intel lub AMD,
- Intel NUC albo podobny komputer typu SFF,
- komputer stacjonarny,
- laptop, o ile może bezpiecznie pracować przez całą dobę i ma sprawny układ chłodzenia.
Najprostszym wyborem jest komputer x86-64 obsługujący Intel VT-x lub AMD-V. Przed instalacją sprawdź, czy w UEFI/BIOS-ie włączono wirtualizację. W domowym serwerze lepiej korzystać z przewodowego Ethernetu niż z Wi-Fi - połączenie jest zwykle stabilniejsze, a jego konfiguracja w Proxmoxie prostsza.
Poniższa tabela przedstawia rozsądne konfiguracje startowe dla środowiska opisanego w tym poradniku. Nie są to sztywne wymagania Proxmoxa: potrzebne zasoby zależą od liczby i rodzaju uruchamianych usług.
| Element | Konfiguracja startowa | Wygodna konfiguracja domowa |
|---|---|---|
| Procesor | 64-bitowy CPU z Intel VT-x lub AMD-V | Energooszczędny CPU z co najmniej 4 rdzeniami |
| Pamięć RAM | 8 GB | 16 GB lub więcej |
| Dysk | SSD 128 GB | SSD 256 GB lub większy oraz osobny nośnik na kopie |
| Sieć | Ethernet 1 Gb/s | Ethernet 1 Gb/s lub szybszy |
Przy pracy przez całą dobę istotny jest pobór energii. Roczne zużycie można oszacować według wzoru:
moc w watach × 24 × 365 ÷ 1000. Komputer pobierający średnio 10 W zużyje około 88 kWh rocznie, a urządzenie pobierające
80 W - około 701 kWh. Przed wyborem starszego komputera warto więc zmierzyć jego rzeczywisty pobór watomierzem.
Znaczenie ma również stan dysku, możliwość automatycznego uruchomienia komputera po powrocie zasilania oraz dostęp do części zamiennych. Niewielki zasilacz UPS ochroni serwer przed krótkimi przerwami w dostawie prądu i pozwoli go poprawnie wyłączyć podczas dłuższej awarii.
Instalacja Proxmox VE
Proxmox VE najczęściej instaluje się bezpośrednio na dysku komputera. Nie trzeba wcześniej instalować Windowsa ani Ubuntu. Instalator wykorzysta wybrany dysk i usunie zapisane na nim dane, dlatego przed rozpoczęciem skopiuj wszystkie potrzebne pliki na inny nośnik.
Krok 1: pobranie obrazu ISO i przygotowanie pendrive’a
Pobierz aktualny obraz ISO z oficjalnej strony Proxmox VE. Następnie zapisz obraz na pendrivie za pomocą programu takiego jak Rufus. Samo skopiowanie pliku ISO na pamięć USB nie wystarczy - program musi utworzyć z niej nośnik startowy.
Krok 2: uruchomienie instalatora
Podłącz pendrive do komputera przeznaczonego na serwer i uruchom go z pamięci USB. W razie potrzeby zmień kolejność startową w UEFI/BIOS-ie albo skorzystaj z jednorazowego menu bootowania.
Instalator poprosi między innymi o:
- wybór docelowego dysku,
- kraj, strefę czasową i układ klawiatury,
- hasło administratora i adres e-mail,
- kartę sieciową,
- nazwę hosta,
- stały adres IP serwera, bramę i serwer DNS.
Nadaj hostowi adres spoza puli automatycznie przydzielanej przez DHCP albo zarezerwuj ten adres w routerze. Zapobiegnie to konfliktom adresów w sieci. Dane sieciowe zapisz również poza serwerem - przydadzą się, gdy panel przestanie być osiągalny.
Poniższe ilustracje pokazują kolejne etapy instalacji:
Krok 3: pierwsze uruchomienie panelu
Po zakończeniu instalacji komputer uruchomi się ponownie i wyświetli adres panelu administracyjnego, zwykle w postaci
https://adres-IP:8006.
Otwórz ten adres na innym komputerze w tej samej sieci i zaloguj się jako root, używając hasła ustawionego podczas
instalacji. Przeglądarka może ostrzec przed certyfikatem wystawionym samodzielnie przez serwer. W sieci lokalnej, przy
pierwszym logowaniu pod właściwy adres hosta, jest to oczekiwane zachowanie.
Po zalogowaniu zainstaluj dostępne aktualizacje i skonfiguruj uwierzytelnianie dwuskładnikowe. Panelu Proxmoxa na porcie 8006 nie należy przekierowywać bezpośrednio do internetu. Do zdalnej administracji bezpieczniej użyć VPN-u.
Uruchomienie kontenera LXC dla strony internetowej
Kontener otrzyma własny system plików, pamięć RAM, limit czasu procesora oraz adres IP w sieci lokalnej. Dla prostej strony będzie działał podobnie jak niewielki VPS, przy mniejszym zużyciu zasobów niż pełna maszyna wirtualna.
Krok 1: pobranie szablonu systemu
W drzewie zasobów po lewej stronie rozwiń swój host i wybierz magazyn local (pve). Przejdź do sekcji CT Templates, kliknij Templates, a następnie wybierz aktualny, wspierany szablon Debiana lub Ubuntu i kliknij Download.
Lista dostępnych wersji zmienia się z czasem, dlatego lepiej wybrać aktualne wydanie widoczne w panelu niż kierować się konkretnym numerem wersji z poradnika.
Krok 2: utworzenie kontenera
Kliknij Create CT w prawym górnym rogu panelu. W kreatorze:
- nadaj kontenerowi nazwę i unikalny identyfikator,
- pozostaw włączoną opcję Unprivileged container, jeśli usługa nie wymaga kontenera uprzywilejowanego,
- ustaw silne hasło użytkownika
root, a najlepiej dodaj również publiczny klucz SSH, - w sekcji Template wybierz pobrany szablon,
- w sekcjach Disk, CPU i Memory przydziel zasoby,
- w sekcji Network wybierz most
vmbr0i konfigurację IPv4 przez DHCP.
Dla prostej, statycznej strony można zacząć od jednego rdzenia, 1 GB RAM-u i kilku gigabajtów miejsca na dysku, a potem zwiększyć zasoby w razie potrzeby. Zmniejszanie wirtualnego dysku jest znacznie trudniejsze niż jego powiększanie, więc nie przydzielaj od razu całej dostępnej przestrzeni.
Po sprawdzeniu ustawień kliknij Finish, uruchom kontener i otwórz jego konsolę.
Krok 3: przypisanie stałego adresu IP
Kontener przeznaczony na serwer powinien otrzymywać zawsze ten sam adres IP. Zaloguj się do panelu routera i odszukaj ustawienia opisane jako DHCP Reservation, Static Lease lub podobnie. Powiąż wybrany adres IP z adresem MAC karty sieciowej kontenera.
Rezerwacja DHCP jest zwykle prostsza w utrzymaniu niż ręczne wpisanie statycznego adresu w systemie kontenera. Jeżeli kiedyś zmienisz podsieć, wszystkie rezerwacje pozostaną widoczne w jednym miejscu - w konfiguracji routera.
Krok 4: instalacja serwera Nginx
Otwórz konsolę kontenera w panelu Proxmoxa i zaloguj się jako root. Następnie odśwież listę pakietów i zainstaluj Nginx:
apt update && apt install -y nginx
Po instalacji wpisz w przeglądarce http://adres-IP-kontenera. Jeżeli konfiguracja sieci jest poprawna, zobaczysz
domyślną stronę Nginx.
Na tym etapie witryna jest dostępna tylko w sieci lokalnej. Nie konfiguruj jeszcze przekierowania portów do tego kontenera, jeśli zamierzasz używać Nginx Proxy Managera - publiczny ruch skierujemy właśnie do reverse proxy.
Jak udostępnić stronę w internecie?
Samo uruchomienie serwera w domu nie oznacza jeszcze, że będzie on osiągalny z internetu. Przed konfiguracją routera sprawdź cztery rzeczy:
- Publiczny adres IP. Adres WAN widoczny w panelu routera powinien być publiczny. Jeżeli operator stosuje CGNAT, zwykłe przekierowanie portów nie zadziała. Można wtedy zamówić publiczny adres u operatora albo skorzystać z tunelu pośredniczącego. Alternatywą jest publiczne IPv6, ale wymaga ono poprawnej konfiguracji DNS i zapory sieciowej.
- Adres zmienny lub stały. Jeśli publiczny adres IP okresowo się zmienia, skonfiguruj usługę dynamicznego DNS-u albo automatyczną aktualizację rekordu DNS u operatora domeny.
- Rekordy domeny. Rekord
Adomeny i potrzebnych subdomen powinien wskazywać publiczny adres IPv4 domowego łącza. Przy IPv6 używa się rekorduAAAA. - Porty przychodzące. Operator i router muszą zezwalać na ruch do portów 80 (HTTP) i 443 (HTTPS). Przy dwóch routerach połączonych szeregowo może być potrzebne przekierowanie na obu urządzeniach albo przełączenie jednego z nich w tryb bridge.
W routerze przekieruj porty TCP 80 i 443 na stały adres IP serwera reverse proxy. Nie używaj do tego opcji DMZ, ponieważ niepotrzebnie wystawiłaby na internet wszystkie porty wybranego urządzenia.
Kilka stron na jednym publicznym adresie IP
Załóżmy, że na serwerze działają trzy usługi dostępne pod adresami: moja-domena.pl, app.moja-domena.pl, cloud.moja-domena.pl.
Router nie może przekierować tego samego portu 443 jednocześnie do trzech kontenerów. Rozwiązuje to reverse proxy, które odbiera cały ruch HTTP i HTTPS, rozpoznaje nazwę domeny, a następnie przekazuje żądanie do właściwej usługi w sieci lokalnej.
Nginx Proxy Manager udostępnia panel graficzny do zarządzania takimi regułami i certyfikatami TLS Let’s Encrypt. Oficjalnie jest rozpowszechniany jako obraz Dockera. Najlepszą izolację zapewnia uruchomienie Dockera z Nginx Proxy Managerem w osobnej maszynie wirtualnej z Linuksem.
Prostszą drogą jest skorzystanie ze skryptu społeczności Proxmox, który tworzy i konfiguruje osobny kontener LXC. Nie jest to skrypt dostarczany ani wspierany przez twórców Proxmoxa czy Nginx Proxy Managera. Przed uruchomieniem zewnętrznego skryptu z uprawnieniami administratora przeczytaj jego kod, sprawdź źródło i upewnij się, że masz aktualną kopię zapasową.
Po zainstalowaniu Nginx Proxy Managera:
- przypisz jego maszynie lub kontenerowi stały adres IP,
- skieruj na ten adres przekierowania portów TCP 80 i 443,
- dodaj w DNS-ie rekordy domen i subdomen wskazujące publiczny adres IP,
- w sekcji Proxy Hosts utwórz wpis dla każdej domeny, podając lokalny adres IP i port docelowej usługi,
- zamów certyfikat Let’s Encrypt i po sprawdzeniu działania włącz wymuszanie HTTPS.
Panel administracyjny Nginx Proxy Managera nie powinien być publicznie dostępny. Pozostaw go w sieci lokalnej lub udostępnij wyłącznie przez VPN, a konto administratora zabezpiecz unikalnym, silnym hasłem.
Dalsze działania
Po uruchomieniu pierwszych usług warto dopracować kilka elementów, które zwiększą niezawodność i bezpieczeństwo całego środowiska:
- Skonfiguruj automatyczny start po awarii zasilania. W UEFI/BIOS-ie włącz funkcję uruchamiającą komputer po przywróceniu zasilania. W zależności od producenta może nazywać się między innymi Restore on AC/Power Loss, AC Back albo Power Recovery.
- Włącz automatyczne uruchamianie maszyn wirtualnych. W Proxmoxie ustaw opcję Start at boot dla kontenerów i maszyn wirtualnych, które powinny wystartować razem z hostem. W bardziej rozbudowanym środowisku określ również kolejność uruchamiania i opóźnienia - na przykład baza danych powinna być gotowa przed korzystającą z niej aplikacją.
- Ogranicz przekierowanie portów. Do Nginx Proxy Managera przekieruj tylko porty niezbędne do obsługi stron, zwykle TCP 80 i 443. Nie wystawiaj do internetu panelu Proxmoxa na porcie 8006, paneli administracyjnych aplikacji ani SSH, jeśli nie jest to konieczne. Do zdalnego zarządzania użyj VPN-u.
- Regularnie instaluj aktualizacje. Aktualizuj zarówno hosta Proxmox VE, jak i systemy oraz aplikacje działające w kontenerach i maszynach wirtualnych. Przed większą aktualizacją wykonaj kopię zapasową i sprawdź informacje o zmianach.
- Przechowuj kopie poza serwerem. Automatyczne backupy zapisuj na osobnym nośniku lub urządzeniu, na przykład NAS-ie. Kopia znajdująca się wyłącznie na tym samym dysku nie ochroni danych przed jego awarią. Okresowo wykonuj próbne odtworzenie wybranego kontenera lub maszyny