Tworzenie kontenerów LXC na VPS KVM

KMatuszak | 2019-09-09 11:26:56 UTC | #1

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 :smile:

## 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.

image|359x137

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:

image|110x49

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.

image|206x123

Obok zaznaczamy image|101x34

Teraz klikamy przycisk image|67x31 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.

image|168x71

4. Instalacja panelu ProxmoX

Teraz klikamy na image|139x28 i przechodzimy do zakładki image|79x35 po czym dwukrotnie klikamy image|205x35. Teraz wybieramy przesłany obraz ISO:

image|313x253

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

image|134x87

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

image|690x169

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:

image|559x332

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

image|390x145

Należy go zignorować wciskając przycisk OK. Teraz czytamy () i akceptujemy EULA przyciskiem image|93x47. Kolejny ekran dotyczy konfiguracji dysków - zostawiamy domyślne ustawienia i klikamy przycisk image|80x48. 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 image|80x48.

image|330x137

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 image|80x48.

Teraz w polu Hostname wpisujemy nazwę hosta - może być to np. p1.example.com.

image|464x238

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

image|409x123

Teraz klikamy image|89x45 i czekamy aż serwer uruchomi się ponownie. Tym razem nie musimy nic wciskać.

Po ponownym uruchomieniu powinniśmy zobaczyć taki ekran:

image|688x179

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:

image|671x433

Klikamy przycisk image|138x54 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 image|85x34.

image|418x216

Zobaczysz taki komunikat:

image|627x147

Jest to tylko zachęta do kupna lepszej wersji - kliknij przycisk image|88x32

Jak widać panel wygląda identycznie tak jak ten od zarządzania serwerem VPS:

image|690x347

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 0

Należ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 MASQUERADE

Ostatecznie 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 MASQUERADE

Teraz 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 image|138x29. Teraz u góry klikamy przycisk image|80x36. Wybieramy interesujący nas system operacyjny z listy:

image|618x418

Ja wybiorę Debiana 8. Klikamy przycisk image|85x33 i czekamy aż szablon pobierze się. Gdy zobaczysz image|122x54 możesz zamknąć okno przyciskiem image|28x28. Szablon jest już pobrany. Możesz pobrać ich więcej, ale nam na potrzeby poradnika wystarczy tylko Debian 8 :wink:.

7. Tworzenie kontenerów LXC

Po prawej stronie w górnej części panelu klikamy przycisk image|98x32. Teraz wpisujemy nazwę naszego kontenera oraz dwukrotnie wpisujemy hasło którym chcemy logować się do konta root. Klikamy przycisk image|71x36.

image|690x241

Teraz wybieramy jeden z pobranych wcześniej szablonów i znów klikamy przycisk image|68x31

image|377x158

Wybieramy rozmiar dysku dla naszego kontenera - nam wystarczy 5GB, klikamy przycisk image|68x31

image|379x175

Wybieramy ilość rdzeni dla naszego kontenera i klikamy przycisk image|68x31

image|370x123

Wybieramy ilość ramu oraz swapu dla naszego kontenera i klikamy przycisk image|68x31

image|433x165

Uwaga! Pamiętaj aby zostawić przynajmniej 512MB ramu dla hosta!

W kolejnym kroku zmieniamy Bridge na vmbr2

image|363x119

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 :smile:

image|236x36

W polu Gateway (IPv4) wpisujemy 192.168.100.1

image|224x36

Resztę ustawień zostawiamy domyślnie i klikamy przycisk image|68x31

image|603x169

W kolejnym kroku nic nie wpisujemy - klikamy przycisk image|68x31

image|679x500

Teraz widzimy podsumowanie informacji o naszym kontenerze - jeżeli wszystko się zgadza to zaznaczamy checkboxa image|147x29 i klikamy przycisk image|68x32

Widzimy napis image|107x51 czyli wszystko poszło OK :smile:
Zamykamy okienko klikając przycisk image|32x28

Teraz w zakładce image|134x34 sprawdzamy czy nasz kontener działa

image|429x33

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

image|247x72
Wybieramy Yes i potwierdzamy enterem

image|434x66
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 nat
iptables -A POSTROUTING -s 192.168.100.0/24 -o vmbr0 -j SNAT --to-source X -t nat

W 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 nat

X1 = 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 nat

Ta komenda przekieruje serwer SSH z portu 22 na port 44 :smile:

Po ustawieniu wszystkiego zapisujemy reguły tak aby nie zresetowały się po restarcie:

iptables-save > /etc/iptables/rules.v4

9. Automatyczne uruchamianie kontenerów po restarcie hosta

Przechodzimy do zakładki image|81x36 i klikamy dwukrotnie na image|162x38. Zaznaczamy ptaszka i klikamy przycisk image|86x34

image|316x152

Klikamy dwukrotnie na image|149x34. 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.

image|337x210

10. Podsumowanie

Dziękuję @liamdj23 za pożyczenie serwera VPS do napisania poradnika :heart:
Miłego korzystania z kontenerów! :smile:
Użyte strony:
- https://www.hungred.com/how-to/setup-lxc-nat-proxmox/

|84x126Poradnik miesiąca: styczeń 2019


DBanaszewski | 2019-01-21 18:29:31 UTC | #2

Poradnik bardzo fajny, sam musiałem kiedyś chodzić po stronach i czytać jak to skleić, a teraz już wiem gdzie trzeba się udać :slight_smile:


SystemZ | 2019-01-21 18:29:35 UTC | #3

Bardzo dokładny poradnik, brawo :slight_smile:
Proxcepcja jak najbardziej zadziała.

O ile pamiętam da się zainstalować Proxmoxa korzystając z repo i instalując paczki na już zainstalowanym Debianie pomijając kroki związane z instalacją systemu z .iso


bopke | 2019-01-21 18:34:27 UTC | #4

Kawał dobrej roboty, brawo! =)

Już za miesiąc nowość w ofercie LVLUP - LXC GAME PRO


dominixz | 2019-01-21 18:48:36 UTC | #5

Poradnik przejrzyście napisany i w zrozumiały sposób. Na pewno mi się przyda :slight_smile:


liamdj23 | 2019-01-21 18:50:19 UTC | #6

Opłacało się VPSa pożyczyć, gratuluję świetnego poradnika! :heart:


Kevin94 | 2019-01-23 06:45:42 UTC | #7

zainstalowałem na debian 9 stretch z https://pve.proxmox.com/wiki/InstallProxmoxVEonDebian_Stretch

tylko w /etc/network/interfaces
mam

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto eth0
iface eth0 inet dhcp

Podpowiedział byś mi jak to uzupełnić ? xd bo moja niewiedza nie pozwala mi na skonfigurowanie tego :p


liamdj23 | 2019-01-22 23:04:10 UTC | #8

Musisz uzupełnić danymi z poradnika zgodnie z tym co masz napisane w panelu lvlup


Kevin94 | 2019-01-22 23:23:43 UTC | #9

[quote=”KMatuszak, post:1, topic:9819”]
address xxx.xxx.xxx.xxx netmask 255.255.255.255 gateway 51.68.154.254
[/quote]

wpisać to tak jak podałeś ? 
address xxx.xxx.xxx.xxx
netmask 255.255.255.255
gateway 51.68.154.254

KMatuszak | 2019-01-22 23:26:35 UTC | #10

Pamiętaj aby wszędzie zastąpić xxx.xxx.xxx.xxx adresem swojego serwera VPS oraz wpisać prawidłowy gateway


Kevin94 | 2019-01-23 14:23:24 UTC | #11

ok czyli w moim przypadku gateway to będzie
10.156.0.1

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.156.0.1      0.0.0.0         UG    0      0        0 eth0
10.156.0.1      0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 vmbr2

a w polu addres to ip zewnętrzne kvm ? czy wewnętrzne ? czy co xd
przepraszam że tak dopytuję ale pusty jestem w tym…


liamdj23 | 2019-01-23 13:27:05 UTC | #12

w polu address wpisz IP przez które łączysz się z VPS np. przez SSH


KMatuszak | 2019-01-23 14:35:00 UTC | #13

Nie sądzę aby taki był gateway, masz go w panelu tam gdzie konfiguracja sieci w czterech ostatnich linijkach


SystemZ | 2019-01-24 12:47:40 UTC | #14

Trochę źle doradzacie.
Jeśli ktoś ma ustawione DHCP to jest najlepsza konfiguracja bo jest odporna na przenoszenie węzłami, gdyż wtedy brama może ulec zmianie.

Wystarczy ustawić dhcp na bridge i będzie ok, w przeciwnym razie przy ewentualnych pracach technicznych odetnie neta od VPS.

Sugerowałbym zmodyfikować poradnik aby uwzględniał DHCP, mniej roboty i mniej awaryjne.


SP24 | 2019-01-25 06:47:28 UTC | #15

A jeśli mam vpsa od DigitalOcean i na nim chcę zrobić kilka kontenerów, to ten poradnik też będzie odpowiedni?


KMatuszak | 2019-01-25 11:03:36 UTC | #16

VPS musi mieć wirtualizację KVM oraz system Debian 9


DoreK | 2019-01-25 11:16:57 UTC | #17

[quote=”KMatuszak, post:16, topic:9819”]
oraz system Debian 9
[/quote]

to na ubuntu nie da się? ;] ;]


KMatuszak | 2019-01-25 11:53:37 UTC | #18

Z tego co mi wiadomo to nie.


SystemZ | 2019-01-25 13:56:18 UTC | #19

[quote=”DoreK, post:17, topic:9819”]
to na ubuntu nie da się? ;] ;]
[/quote]

Da się ale bez Proxmoxa.
Proxmox jest oparty o Debiana.
Na Ubuntu polecam LXD czyli w zasadzie LXC na sterydach.
Proxmox z tego co się orientuje nawet część fixów do LXC bierze właśnie z Ubuntu LXD.


kubus | 2019-02-07 14:32:00 UTC | #20

Zainstalowałem według poradnika, nic nie ruszałem dalej ani stawiania LXC i wchodzę w Disks > LVM i widzę, że jest zajęte już 88 procent i jest wolne 3GB. To ma tak być?(mam 25GB dysku)


liamdj23 | 2019-02-07 14:53:52 UTC | #21

Sprawdzasz w panelu proxmox lvlup czy w zainstalowanym na vps?


kubus | 2019-02-07 14:54:20 UTC | #22

oczywiście, że na zainstalowanym na VPS.


liamdj23 | 2019-02-07 14:58:46 UTC | #23

Powinieneś mieć dwa dyski: local i local-lvm, pokaż zrzut ekranu


kubus | 2019-02-07 15:01:23 UTC | #24

Posiadam te dwa.
image|125x72


liamdj23 | 2019-02-07 15:10:51 UTC | #25

Według tego zrzutu ekranu masz zajęte mniej niż

[quote=”kubus, post:20, topic:9819”]
88 procent
[/quote]

Czyli wszystko jest okej :thinking:


KMatuszak | 2019-04-19 14:53:20 UTC | #26

Jak zainstalować certyfikat SSL:
https://forum.lvlup.pro/t/zabezpieczanie-panelu-proxmox-darmowym-certyfikatem-ssl/10735?u=nosacz


Damian28w | 2019-04-20 13:31:53 UTC | #27

Witam,

Da radę by każdy z tych VPS “ów miał swoje indywidualne IP ?

Bo np na innym hostingu jest mozliwość wykupienia sobie adresu IP i sewrera KVM za dość fajne pieniadze stąd moje pytanko :)


Timo | 2019-04-20 13:39:33 UTC | #28

Tak, można przydzielić własne IP do każdego kontenera.
Musisz jedynie wykupić te adresy dla swojego pakietu i możesz podłączać.

Aby dokupić adresy IP na lvlup, napisz ticket ;)


Damian28w | 2019-04-20 13:57:03 UTC | #29

A orientujesz się może czy cena za te IP jest miesieczna czy tak jak na innym hostingu jednorazowa ?


eSuu | 2019-04-20 14:17:28 UTC | #30

Jest to koszt 10zł/msc za sztukę.


KMatuszak | 2019-12-08 15:48:09 UTC | #31

Jeśli nie chcesz się bawić w sklejanie komend do przydzielania portów to możesz skorzystać z tego narzędzia: https://iptables.liamdj23.ovh/ :slight_smile:


KMatuszak | 2019-07-30 15:13:50 UTC | #32

Przetestowałem poradnik na najnowszym Proxmox’ie 6.0 bazującym na Debianie 10, nic się nie zmieniło w konfiguracji :slight_smile:


KMatuszak | 2019-12-08 15:44:23 UTC | #33

[quote=”KMatuszak, post:31, topic:9819”]
Jeśli nie chcesz się bawić w sklejanie komend do przydzielania portów to możesz skorzystać z tego narzędzia: https://iptables.liamxdev.ovh
[/quote]

Nie mogę edytować tamtego posta więc napiszę w nowym, @liamdj23 zmienił domenę i teraz link jest taki: https://iptables.liamdj23.ovh/ :slightlysmilingface:


bopke | 2019-12-08 15:48:20 UTC | #34

Wyedytowałem żeby był aktualny link =)


anon85678085 | 2019-12-21 18:18:21 UTC | #35

Polecam, skorzystałem działa na ProXmox 6. :ok_hand:


Jellly | 2020-02-04 19:44:12 UTC | #36

Da się jakoś przy pomocy iptables z góry przydzielić zakres portów? Średnio mi się widzi wpisywać tak regułkę 20 razy.


Timo | 2020-02-04 19:56:01 UTC | #37

Zakres możesz podać bodajże po dwukropku, na przykład 8080:8084.


Mespi | 2020-07-26 04:17:54 UTC | #38

Przeniesione do https://forum.lvlup.pro/t/bledy-podczas-laczenia-sie-z-kontenerem-lxc-poprzez-ssh/15518


Mespi | 2020-07-26 04:17:36 UTC | #39

Przeniesione do https://forum.lvlup.pro/t/bledy-podczas-laczenia-sie-z-kontenerem-lxc-poprzez-ssh/15518