frissítve: 2023. 08. 24.
Olvasási idő: 12 perc
Útmutató

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

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.


Frissítés, 2019. január 2.: ha production környezethez keresel útmutatót, itt megtalálod: Így használj VPS-t tárhelyként éles környezetben

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 200 dollárnyi kreditet. A felhasználására 2 hónapod van, de több Dropletre is felhasználhatod párhuzamosan, vagyis akár 20-at is felhúzhatsz a legkisebb dropletből, 2 hónapig ingyen üzemelnek.)

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 (ebben az útmutatóban Ubuntut futtató szervert használok), 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éshez valamilyen SSH kliensre lesz szükséged:

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

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

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.

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:

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:

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:

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, ugyanis egy rendszerfájlt szerkesztünk:

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:

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

Ha ezek után kijelentkezel (amit szigorúan csak akkor tégy meg, ha a jelszó nélküli bejelentkezés működött), visszajelentkezni már csak akkor tudsz, ha kézzel megadod a port számát is a parancsban, tehát:

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

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:

é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 az ú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.

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

Naplófájlok automatikus takarítása

Idővel felgyűlnek a naplófájlok az alaprendszeren, ezért érdemes beállítani egy automatikus takarítást ennek megelőzésére. Ehhez nyissuk meg a rendszer crontab-ját az alábbi paranccsal:

Majd adjuk hozzá az alábbi sort a fájl legvégéhez:

Ennek köszönhetően minden nap éjfélkor kitisztulnak a logok és csak az elmúlt 14 nap tartalma marad meg.

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.

Videó

Időközben készült egy videó is a teljes folyamatról: Buxbaum Barnával beszélgetünk, és az utolsó 45-50 percben meg is mutatom a teljes folyamatot.

Változások követése

Frissítések

2019. 01. 02.

Ha production környezethez keresel útmutatót, itt megtalálod: Így használj VPS-t tárhelyként éles környezetben.

2023. 05. 02.
A DigitalOcean ajánlói ajánlata frissült: már 200 dollárnyi kreditet kap az ajánlott, melyet 60 napja van felhasználni.