Cześć! W tym poradniku pokażę jak podzielić VPS KVM na mniejsze VPS'y (kontenery) z wirtualizacją LXC. Każdy kontener będzie miał przydzielone inne porty, więc wystarczy nam tylko jeden adres IP. Całością będziemy zarządzać przez darmowy panel ProxmoX który sami zainstalujemy 😄
1. Co będzie nam potrzebne?
- Dowolny VPS z aktualnej oferty LVL UP (oprócz KVM PL 1GB)
- Trochę czasu
2. Pobieranie obrazu ISO ProxmoX'a
Przechodzimy na oficjalną stronę ProxmoX'a oraz kilkamy zakładkę Downloads. W kategorii Download Proxmox software, datasheets and documentation Files klikamy przycisk Download w pierwszej pozycji.

Po chwili rozpocznie się pobieranie pliku ISO - ma ono około 600MB więc musimy chwilę poczekać :slight_smile:
3. Przesyłanie pliku .iso do panelu ProxmoX
Może to trochę dziwnie zabrzmi, ale musimy teraz przesłać pobrane ISO panelu ProxmoX do panelu ProxmoX gdzie możemy zarządzać serwerem VPS. Aby to zrobić, musimy się najpierw zalogować - w panelu klienta przechodzimy do zakładki z serwerem VPS oraz klikamy przycisk:

Po chwili zobaczymy dane logowania do panelu ProxmoX naszego serwera VPS. Przechodzimy pod podany adres. Dla ułatwienia wybieramy język polski z rozwijanej listy. Po zalogowaniu z lewej strony przeglądarki wybieramy ostatni element.

Obok zaznaczamy 
Teraz klikamy przycisk
w górnej części panelu oraz wybieramy i przesyłamy pobrany wcześniej obraz ISO. Ponownie musimy chwilę poczekać. Po poprawnym przesłaniu obrazu zobaczymy go na liście.

4. Instalacja panelu ProxmoX
Teraz klikamy na
i przechodzimy do zakładki
po czym dwukrotnie klikamy
. Teraz wybieramy przesłany obraz ISO:

Zatwierdzamy przyciskiem OK i przechodzimy do zakładki
. Teraz musimy działać szybko - z rozwijanej listy wybieramy Restart:

Odrazu po kliknięciu klikamy również na obszar gdzie widzimy konsolę serwera w celu ukatywnienia okna. Zanim napis ProxmoX zniknie musimy wcisnąć na naszej klawaiaturze przycisk ESC. Jeżeli zobaczysz napisy podobne do tych

to znaczy że się udało. Teraz już nie musimy się śpieszyć. Jeżeli jednak uruchamia się system operacyjny z dysku to oznacza to, że robisz coś nieprawidłowo lub zbyt wolno. Teraz zgodnie z widocznymi napisami chcemy uruchomić instalator ProxmoX'a z napędu DVD na ata1 a więc wciskamy na klawiaturze przycisk 3. Po chwili powinien być widoczny taki ekran:

Teraz zatwierdzamy pierwsza opcję wciskając przycisk enter. Po chwili instalator załaduje się. Prawdopodobnie zobaczysz taki komunikat:

Należy go zignorować wciskając przycisk OK. Teraz czytamy (:kappa:) i akceptujemy EULA przyciskiem
. Kolejny ekran dotyczy konfiguracji dysków - zostawiamy domyślne ustawienia i klikamy przycisk
. Upewnij się, że na dysku nie ma żadnych potrzebnych ci danych, ponieważ wszystko zostanie usunięte. W następnym kroku wpisujemy Poland w pierwszym polu tekstowym i ponownie klikamy przycisk
.

W kolejnym etapie dwukrotnie wpisujemy hasło którym chcemy się logować do panelu ProxmoX oraz nasz adres e-mail na który otrzymamy powiadomienie jeżeli któryś z kontenerów z jakiegoś powodu nie będzie działał prawidłowo. Klikamy przycisk
.
Teraz w polu Hostname wpisujemy nazwę hosta - może być to np. p1.example.com.

Resztę ustawień zostawiamy domyślnie - powinny one zostać wykryte automatycznie dzięki serwerowi DHCP. Teraz klikamy przycisk
i czekamy aż instalacja zakończy się. Powinno to zająć mniej niż 5 minut :slight_smile:. Po zakończeniu instalacji zobaczymy

Teraz klikamy
i czekamy aż serwer uruchomi się ponownie. Tym razem nie musimy nic wciskać.
Po ponownym uruchomieniu powinniśmy zobaczyć taki ekran:

5. Konfiguracja ProxmoX'a
Wchodzimy w przeglądarce pod adres https://xxx.xxx.xxx.xxx:8006 zastępując xxx.xxx.xxx.xxx adresem IP naszego VPS'a.
Uwaga! Koniecznie trzeba użyć protokołu https ponieważ ProxmoX wymusza jego użycie.
Pewnie zobaczysz taki komunikat:

Klikamy przycisk
oraz napis Otwórz stronę xxx.xxx.xxx.xxx (niebezpieczną)
Teraz na ekranie logowania wprowadź nazwę użytkownika root, podane przy instalacji hasło oraz wybierz język polski. Pozostaw domyślnie wybraną autoryzację Linux. Kliknij przycisk
.

Zobaczysz taki komunikat:

Jest to tylko zachęta do kupna lepszej wersji - kliknij przycisk 
Jak widać panel wygląda identycznie tak jak ten od zarządzania serwerem VPS:

Zanim zaczniemy tworzyć kontenery LXC, musimy edytować jeszcze plik /etc/network/interfaces na serwerze gdzie zainstalowany jest panel ProxmoX. Łączymy się z SFTP używając programu np. WinSCP używając adresu IP serwera VPS, nazwy użytkownika root oraz hasła podanego przy instalacji. Otwórz wspomniany wyżej plik przy użyciu programu np. Notepad++.
Aktualnie plik powinien wyglądać podobnie do tego:
auto lo
iface lo inet loopback
iface ens18 inet manual
auto vmbr0
iface vmbr0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.255
gateway 51.68.154.254
bridge_ports ens18
bridge_stp off
bridge_fd 0Należy na jego końcu dokleić poniższy tekst:
auto vmbr2
iface vmbr2 inet static
address 192.168.100.1
netmask 255.255.255.0
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 '192.168.100.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADEOstatecznie plik powinien wyglądać tak:
auto lo
iface lo inet loopback
iface ens18 inet manual
auto vmbr0
iface vmbr0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.255
gateway 51.68.154.254
bridge_ports ens18
bridge_stp off
bridge_fd 0
auto vmbr2
iface vmbr2 inet static
address 192.168.100.1
netmask 255.255.255.0
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 '192.168.100.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADETeraz zapisujemy plik i łączymy się z SSH tymi samymi danymi co do SFTP. Wpisujemy komendę reboot i czekamy aż panel uruchomi się ponownie. Przechodzimy ponownie pod adres panelu i logujemy się.
6. Pobieranie szablonów LXC
Musimy teraz pobrać szablony systemów operacyjnych. Po lewej stronie wybieramy
. Teraz u góry klikamy przycisk
. Wybieramy interesujący nas system operacyjny z listy:

Ja wybiorę Debiana 8. Klikamy przycisk
i czekamy aż szablon pobierze się. Gdy zobaczysz
możesz zamknąć okno przyciskiem
. Szablon jest już pobrany. Możesz pobrać ich więcej, ale nam na potrzeby poradnika wystarczy tylko Debian 8 😉.
7. Tworzenie kontenerów LXC
Po prawej stronie w górnej części panelu klikamy przycisk
. Teraz wpisujemy nazwę naszego kontenera oraz dwukrotnie wpisujemy hasło którym chcemy logować się do konta root. Klikamy przycisk
.

Teraz wybieramy jeden z pobranych wcześniej szablonów i znów klikamy przycisk 

Wybieramy rozmiar dysku dla naszego kontenera - nam wystarczy 5GB, klikamy przycisk 

Wybieramy ilość rdzeni dla naszego kontenera i klikamy przycisk 

Wybieramy ilość ramu oraz swapu dla naszego kontenera i klikamy przycisk 

Uwaga! Pamiętaj aby zostawić przynajmniej 512MB ramu dla hosta!
W kolejnym kroku zmieniamy Bridge na vmbr2

W polu IPv4/CIDR wpisujemy 192.168.100.x/24 gdzie x to liczba 3 lub większa - każdy kontener musi mieć inną liczbę, zapamiętaj ją ponieważ będzie potrzeba do przydzielania portów 😄

W polu Gateway (IPv4) wpisujemy 192.168.100.1

Resztę ustawień zostawiamy domyślnie i klikamy przycisk 

W kolejnym kroku nic nie wpisujemy - klikamy przycisk 

Teraz widzimy podsumowanie informacji o naszym kontenerze - jeżeli wszystko się zgadza to zaznaczamy checkboxa
i klikamy przycisk 
Widzimy napis
czyli wszystko poszło OK 😄
Zamykamy okienko klikając przycisk 
Teraz w zakładce
sprawdzamy czy nasz kontener działa

Jeżeli widzisz napis running to jest uruchomiony :slight_smile:
8. Przydzielanie portów
Teraz ponownie logujemy się na SSH hosta używając danych logowania do panelu
Aktualizujemy repozytoria:
apt-get update(Jeżeli zobaczysz w konsoli takie napisy: E: Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/stretch/pve-enterprise/binary-amd64/Packages 401 Unauthorized to możesz je zignorować)
Instalujemy narzędzie pozwalające zachować reguły iptables nawet po restarcie serwera:
apt-get -y install iptables-persistent
Wybieramy Yes i potwierdzamy enterem
Wybieramy No i potweirdzamy enterem
Dodajemy reguły umożliwiające komunikację z kontenerami:
iptables -A POSTROUTING -s 192.168.100.0/24 -o vmbr0 -j MASQUERADE -t natiptables -A POSTROUTING -s 192.168.100.0/24 -o vmbr0 -j SNAT --to-source X -t natW drugiej komendzie należy wpisać adres IP serwera VPS w miejsciu X
Komenda umożliwiająca przydzielenie portu:
iptables -A PREROUTING -i vmbr0 -p X1 -m X2 --dport X3 -j DNAT --to-destination 192.168.100.X4:X5 -t natX1 = udp lub tcp małymi literami X2 = to samo co X1 X3 = port który chcemy przydzielić X4 = liczba podana przy konfiguracji sieci podczas tworzenia kontenera X5 = port który chcemy przekierować
Przykład:
iptables -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 44 -j DNAT --to-destination 192.168.100.3:22 -t natTa komenda przekieruje serwer SSH z portu 22 na port 44 😄
Po ustawieniu wszystkiego zapisujemy reguły tak aby nie zresetowały się po restarcie:
iptables-save > /etc/iptables/rules.v49. Automatyczne uruchamianie kontenerów po restarcie hosta
Przechodzimy do zakładki
i klikamy dwukrotnie na
. Zaznaczamy ptaszka i klikamy przycisk 

Klikamy dwukrotnie na
. W polu Start/Shutdown order wpisujemy jako który w kolejności ma uruchomić się kontener. Pole Startup delay przy pierwszym kontenerze zostawiamy puste, ale przy następnych zawsze wpisujemy liczbę o 15 większą, czyli przy drugim będzie to 15 a przy trzecim 30. Pole Shutdown timeout zawsze zostawiamy puste.

10. Podsumowanie
Dziękuję @liamdj23 za pożyczenie serwera VPS do napisania poradnika ❤️ Miłego korzystania z kontenerów! 😄 Użyte strony:
Poradnik miesiąca: styczeń 2019