Egy staging VPS alapbeállítása lépésről-lépésre előnézeti képe

Egy staging VPS alapbeállítása lépésről-lépésre

| Olvasási idő: 10 perc

Régóta kacérkodtam a gondolattal, hogy shared hosting helyett VPS-en hosztoljam a készített weboldalakat. Örömmel jelentem, hogy helyes és eredményes döntés volt, itt pedig összefoglalom, mit kell csinálnod, ha te is váltani szeretnél.

Melyik szolgáltatót válaszd?

Jelenleg két szolgáltató között ingázok - most éppen a DigitalOcean felé mozdulok, de az oldalaim többsége még Vultr-n fut, ami abból fakad, hogy sokáig a DigitalOcean árazása magasabb volt, de mostanra fordult a kocka: a DO-n valamennyivel jobb az ár/érték arány.

Mit kapunk a pénzünkért és mennyi az annyi?

Kezdjük az árakkal: a legolcsóbb droplet a DigitalOcean-nél havi 5 dollár (ez nagyjából évi 17 ezer Ft), míg a Vultr-nél 2.5 dollár (ha éppen van belőle, de akkor évi 8.500 Ft). Ez utóbbi már bőven versenyképes a hazai osztott tárhelyes árakkal szemben is, így ha megvan a technikai vénád vagy a megfelelő embered, mindenképpen érdemes komolyan fontolóra venni a kérdést - ha pedig fejlesztő vagy, akkor ennél nagyobb szívességet nem is tehetnél magadnak.

A VPS-ek teljesítménye össze sem hasonlítható az osztott tárhelyes megoldásokkal: míg osztott tárhelyen nagyjából 192 MB maximális memóriával kell beérjük, addig a Vultr legkisebb csomagjában 512, a DigitalOcean-ében pedig 1 GB RAM van, mindkettő esetben 1 virtuális processzorral.

A különféle csomagok között szabad az átjárás annyiban, hogy csak olyan csomagra válthatunk, amibe belefér a mostani csomagunk tárhelye. Tehát 25-ről 50-re válthatunk, de lefele nem. Fontos különbség a kettő szolgáltató között, hogy a Vultr-nél minden méretből egy variáció van, így ha bármelyik paraméterben is kinőttük az aktuális csomagot, magasabb (és drágább) csomagba kell lépnünk. Ezzel szemben a DigitalOcean-nél lehetőség van csak CPU és RAM szerint változtatni a droplet méretén, így szabadon kipróbálhatod a 3GB RAM + 1 vCPU, 1 GB RAM + 3 vCPU és a 2GB RAM + 2 vCPU kombinációkat plusz költség nélkül, sőt, magasabb csomagra is válthatsz ideiglenesen, mert a tárhely mérete nem változik. Így könnyedén tudsz plusz kapacitást tenni az oldalad mögé egy nagyobb roham esetén, majd ha az lecsengett, visszaállhatsz az eredeti kapacitásra - mindezt néhány kattintásból.

(Ha a DigitalOcean linkekre kattintva regisztrálsz, kapsz 10 dollárnyi kreditet, ami két hónapra elég a legkisebb csomaggal)

Hozzuk létre a szervert és lépjünk be

Egy új szerver létrehozása mindkettő esetben nagyon gyors, az admin felületek hasonlók - ízlés kérdése, hogy melyik tetszik jobban. Ha megvan a VPS telepítése, jelentkezz be a megkapott adatokkal (a DigitalOcean e-mailben küldi ki a kezdeti root jelszót, amit meg kell változtatnod az első bejelentkezéskor - a @ utáni rész a szervered IP-címe):

A bejelentkezés után valószínűleg már látni fogod, hogy van néhány frissítés, ezeket érdemes telepíteni, kezdjük tehát ezzel. Mivel root-ként jelentkeztünk be, ezért nincs szükségünk sudo-ra a parancs előtt (ha sudo-val kezdődik egy parancs, akkor rendszergazdaként adjuk ki az utasítást)

bash
apt update
apt dist-upgrade

Ez viszonylag gyorsan lemegy, ha végzett, indítsuk újra a szervert:

bash
sudo reboot

Adjunk hozzá nem-root felhasználót

Folyamatosan rendszergazdaként használni a VPS-t nagyon nem ajánlott, ezért hozzunk létre egy sima felhasználót, aki rendszergazda módba válthat. Létrehozzuk a felhasználónkat (a felhasználónév ebben az esetben a wbmngr). Kérdezni fog tőlünk a rendszer - ezekre válaszoljunk. A jelszó megadásánál nem látszódnak a karakterek - ez normális.

bash
adduser wbmngr

Ha ezzel megvagyunk, adjuk hozzá a felhasználót a sudoers csoporthoz: azok a felhasználók tartoznak ide, akiknek joguk van rendszergazda üzemmódba lépniük:

bash
usermod -aG sudo wbmngr

Ha ezzel megvagyunk, jelentkezzünk ki, majd vissza az új felhasználóval (itt már az előbb megadott jelszóra lesz szükséged, nem a roothoz tartozóra):

Belépés SSH kulccsal

Mivel mostanra már sokadszorra írtad be a jelszavadat, jogos, hogy egy kicsit kezd fárasztó lenni - változtassunk ezen és hozzunk létre SSH-kulcsot a felhasználónkhoz!

Az SSH kulcsot NE a szerveren generáld: oda csak a kulcs publikus felét töltsd fel. Az alábbi paranccsal egy kulcs generálódik az [email protected] e-mail címmel:

bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Kérdez néhányat a rendszer: hova tegye a kulcsunkat (/home/username/.ssh/vps_wbmngr) és hogy szeretnénk-e jelszót a kulcshoz (nem feltétlenül). A fentieket értelemszerűen cseréld le a saját e-mail címedre és felhasználónevedre. A kulcsokat érdemes a saját usered .ssh mappájában tárolni, de nem az alapértelmezetten felkínált (id_rsa) néven - így ha több lesz, meg fogod tudni különböztetni őket.

Ha megvagy a kulcs generálásával, töltsd fel a szerverre a felhasználódhoz:

bash
ssh-copy-id -i /home/username/.ssh/vps_wbmngr.pub [email protected]

A feltöltéshez kérni fogja a szerveren levő felhasználód jelszavát - miután megadtad, feltölti a szerverre a kulcsot, melyet a megjelenő Number of key(s) added: 1 szöveg nyugtáz. Ezután próbálj meg bejelentkezni a szerverre a jelszavad használata nélkül:

Ha minden jól ment, a szerver nem kért jelszót (hacsak nem állítottál be a kulcsodhoz, de akkor az ahhoz tartozót kérte a géped), csak simán bejelentkeztetett.

SSH biztonságos beállítása

A rendszer alapértelmezetten nem a legbiztonságosabb beállításokkal érkezik, ezért érdemes ezen változtatnunk. Ehhez - miután bejelentkeztünk a szerverre - az SSH daemon beállításait kell megváltoztatnunk, amihez root jogokra van szükségünk:

bash
nano /etc/ssh/sshd_config

A következő változtatásokat végezzük el:

  • letiltjuk a root belépését
  • áttesszük az SSH-t a megszokott 22-es portról egy másikra
  • kikapcsoljuk a jelszavas bejelentkezést

Csak akkor állj neki ennek a pontnak, ha gond nélkül be tudsz jelentkezni jelszó nélkül!

Keresd meg az alábbiakat. Ha esetleg #-el ki van kommentezve, töröld ki a sor elejéről a #-et. Figyelj arra, hogy pontosan csináld: ha valamilyen hibát vétesz, az SSH daemon nem fog elindulni, nem fogsz tudni belépni a szerverre, le kell lőnöd a szervert és kezdheted előlről az egészet.

  • Port 22: a 22-t írd át valamire, amire szeretnéd. Praktikus valahova 1000 és 65535 közé tenni, nem olyan portra, amit később használni fogunk (tehát a 80-as és a 443-as portot NE válaszd!). Legyen mondjuk 62222.
  • PermitRootLogin yes: a yes-t írd át no-ra, tehát PermitRootLogin no lesz
  • PasswordAuthentication yes és PermitEmptyPasswords yes sorok: mindkettő esetben írd át a yes-t no-ra, tehát:
PasswordAuthentication no
PermitEmptyPasswords no

Ha ezekkel megvagy, mentsd el a fájlt (Ctrl+O, enter), lépj ki (Ctrl+X), indítsd újra az SSH szolgáltatást:

bash
sudo service ssh restart

Ha ezek után kijelentkezel, visszajelentkezni már csak akkor tudsz, ha kézzel megadod a port számát is a parancsban, tehát:

bash
ssh [email protected] -p 62222

Fontos: ha létrehoztál tűzfal szabályt a droplet elkészítése során, akkor frissítsd az ott levő szabályokat, hogy a 22-es helyett a 62222-es port legyen nyitva - különben a bejelentkezési kérésed el sem jut a szerverig.

Könnyítsük meg egy kicsit az életünket: mentsük el ezeket a beállításokat a profilunkba, hogy a későbbiekben könnyedén tudjunk csatlakozni a szerverhez. Nyissuk meg a kedvenc szövegszerkesztőnkben a ~/.ssh/config fájl-t, és a végére illesszük be az alábbi részletet (nyilván a saját beállításainkkal):

bash
Host        yoda.webmenedzser.hu
            Hostname        188.166.22.129
            User            wbmngr
            Port            62222
            IdentityFile    ~/.ssh/vps_wbmngr

Ezzel gyakorlatilag beállítottunk egy alias-t az IP-címre, így azt nem kell megjegyeznünk, illetve a portot és a felhasználónevet is elmentettük. A későbbiekben elég ennyit írnunk terminálban:

bash
ssh yoda.webmenedzser.hu

és a fenti adatokat fogja használni a csatlakozáshoz. További előnye ennek, hogy ha van olyan program, ami a natív SSH-nkat használja, mint pl. a PhpStorm, akkor az is itteni beállításokat fogja használni. (Sőt: ha terminálban elkezded beírni a parancsot, és az y után TAB-ot nyomsz, ki is egészíti automatikusan - persze csak akkor, ha nincs másik, y-onnal kezdődő Host felvéve).

Fail2ban beállítása

Mivel nem gyakran csinálom, ezért ehhez nekem is mindig tutorial kell, így inkább linkelem azt, amit szoktam használni: ebből útmutatóból elég lehet az első néhány lépést megcsinálni (a findtime és a maxretry-ig). Itt jegyzem meg, hogy a DigitalOcean-nek kiváló útmutatói vannak, érdemes olvasgatni őket.

Itt érdemes újraindítani a szervert, hogy lássuk, sikerül-e visszajutnunk.

bash
sudo reboot

Frissítések automatikus telepítése

Érdemes beállítanunk a szerveren a frissítések automatikus telepítését is - így a karbantartásnak ez a része is automatizáltan tud működni. A helyzet hasonló a fentihez, így szintén csak a linket adom: Ubuntu szerver - automatikus frissítések

Gratulálok! Van egy működő, önjáró VPS-ed, ami ráadásul egész biztonságos is lett. Menjünk tovább a Docker beállítására.