Gondoltam írok erről, hogy másnak is megkönnyítsem az életét.
Gépek
0. gép: Host OS: Kubuntu 22.04 LTS (192.168.122.1)
Hogy legyen DE-m is, amivel jobb monitorozni. Használom a virt-manager-t is, mind lokálban, mind távoli kliensről ssh-n keresztül. Hogy legyen-e X a szerveren témáról, tervezek később írni egy bejegyzést.
Vendég gépek:
1. VPS: Ubuntu Server 22.04 LTS (192.168.122.2)
Név és szolgáltatás: company1_vps LAMP 1.
2. VPS: Ubuntu Server 22.04 LTS (192.168.122.3)
Név és szolgáltatás: company2_vps LAMP 2.
3. VPS: Ubuntu Server 22.04 LTS (192.168.122.4)
Név és szolgáltatás: mail_vps Mail Server
VPS környezet kialakítsa
Mivel van (K)DE a gépen, így az alábbi parancs függőségként hozza magával a szükséges komplett alrendszert:
sudo apt install virt-manager
A virt-manager egy grafikus felület kvm/qemu-hoz.
Mail beállítások
0. gépen
/etc/nginx/nginx.conf
stream
{
server
{
listen 25;
proxy_pass 192.168.122.2:25;
}
server
{
listen 465;
proxy_pass 192.168.122.2:465;
}
}
Az ssmtp feltelepít, majd az alábbi értékeket kell beállítani az /etc/ssmtp/ssmtp.conf-ban:
mailhub=192.168.122.2
hostname=hostserver
rewriteDomain=domain.tld
UseTLS=Yes
UseSTARTTLS=Yes
AuthUser=oregon
AuthPass=oregon_password
AuthMethod=LOGIN
Fontos! A mail szerver a host esetén követelje meg az authentikációt. Ő felé ne legyél openrelay, mivel az nginx proxy-n keresztül érkező kéréseknél, a mail szerver már azt látja, hogy a kérés a host lokális ip-jéről jön, így az egész világ felé openrelay lennél.
Az ssmtp nem használja az /etc/aliases állományt, így neki kell megadni közvetlenül ezt az /etc/ssmtp/revaliases fájban:
root:oregon@domain.tld:192.168.122.2
postmaster:oregon@domain.tld:192.168.122.2
Fontos! Ha az /etc/aliases vagy /etc/ssmtp/revaliases fájlokban nincs meg az a rendszer/szolgáltatás user akinek levelet szánják, akkor a mailszerver eldobja. Ilyen lehet a jelenlegi config mellett pl, egy service usere.
Ezzel még a levélküldés erről a gépről nem fog menni, mert jelen pillanatban két gép is azt gondolja magáról, hogy ő a mail.domain.hu . Az egyik maga a host és a mások a hoston belüli VPS mail szerver. Megoldás, hogy a host gépen az /etc/hosts fájlt szerkesztjük:
192.168.122.2 mail_vps mail.domain.tld
Innentől ő már tudja, hogy nem ő a mail.domain.tld, míg a világ nála fogja keresni és az nginx tovább fogja irányítani a belső VPS-re a kéréseket.
1-2. gépen sima postfix telepítés egyetlen érték szerkesztése az /etc/postfix/main.cf -ben
relayhost = [192.168.122.2]:25
3. gép (mailserver) lényegi beállítása az alaptelepítéshez képest az /etc/postfix/main.cf -ben:
mynetworks = 127.0.0.0/8 KULSO_HOST_IP1 KULSO_HOST_IP2 192.168.122.3 192.168.122.4 [::ffff:127.0.0.0]/104 [::1]/128
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks
Ez a minimális beállítás kell ahhoz, hogy autentikáció nélkül tudjanak küldeni levelet a mailservernek és majd később relay-ként kifelé is mynetworks-ben megadott ip címek.
Ekkor még nagyon messze vagyunk a mailszerver felkonfigurálásától. Nemrégiben muszashi kolléga csinált a csatornájára erről egy videó sorozatot, én pont ugyanezeket a szolgáltatásokat / alkalmazásokat használom, így a videóit meleg szívvel tudom ajánlani:
Webszerver beállítások
Az alábbi leírást követtem: link
Nálam is a hoston nginx van, míg a VPS-eken Apache. Annyival kiegészíteném, hogy alapvetően elég, ha az nginx a http és https forgalmat egy belső http felé tereli. De! a wordpress ezt rühelli, mert az url-eket felülírja. Így miatta érdemes (muszáj!) a belső gépeket is https-en futtatni, valamint az nginx-et is mint reverse proxy-t odairányítani.
SSH & Rsync
A host szerveren felvettem az /etc/hosts alá neveket (érdemes a mail szerveren is ezt megtenni)
192.168.122.1 hostserver
192.168.122.2 mail_vps
192.168.122.3 company1_vps
192.168.122.4 company2_vps
Minden szerveren fent van az ssh publikus kulcsom, a csatlakozás így történik távolról:
ssh doman.tld #(csak didaktikus okból raktam ide)
ssh -J domain.tld mail_vps #(csatlakozás direktbe a mail_vps szerverhez, a -J jump)
...
ssh -J domain.tld company2_vps #(csatlakozás direktbe a company2_vps szerverhez, a -J jump)
Céges backup szerver így éri el a host alatt belső hálón lévő VPS szerver könyvtárait:
rsync -avzhP \
--delete \
--delete-after \
-e "ssh -A oregon@domain.tld ssh" \
oregon@company1_vps:/home/oregon/MENTENI_KIVANT_KONYVTAR \
/home/oregon/MENTES/
Az ssh -A garantálja, hogy a kulcsom tovább legyen passzolva.
Látható a példában egy belső névre hivatkozom, amit majd a host fog feloldani, mivel korábban beleraktuk az /etc/hosts állományban ezt a bejegyzést.
Az rsync -e kapcsolója teszi lehetővé a köztes parancsok futtatását, ami esetünkben:
-e "ssh -A oregon@domain.tld ssh"
Itt látható ssh-val kezdődik és fejeződik be, ezzel helyettesíti ki a fenti:
ssh -J domain.tld company1_vps
Távoli adminisztráció, életjelek figyelése:
Egyik legkényelmesebb módja a virt-manager használata. Minden másra automatizmusok és ssh.