Tasuta hosting oma blogile
Inspiratsiooni sain sellest videost: https://youtu.be/dnE7c0ELEH8?si=CEVADMp9r9DwDM9J
Network Chuck räägib seal, kuidas ta oma blogi käivitas jne. Alguses tahtsin sarnase lahenduse ka ise püsti panna, kuid üsna kiiresti tekkis tunne, et tema lahendus on minu jaoks liiga keeruline. Samuti ei tahtnud ma päris seda mudelit kasutada, millest tema räägib.
Mul on juba oma “flow” olemas – realiseerin projekte veidi teistmoodi ja kasutan pigem lahendusi, mida ma vähemalt enam-vähem tunnen.
Hakkasin uurima, millised open source blogiplatvormid tänapäeval üldse saadaval on. Esialgu oli plaan panna tööle WordPress Dockeri konteineris, kuid üsna kiiresti leidsin minu jaoks parema lahenduse nimega Ghost.
Ametlik veebileht: https://ghost.org/
Miks Ghost?
Olen varasemalt WordPressi natuke näppinud ja see on kahtlemata väga võimekas (feature-packed) lahendus. See pole halb, kuid minu arvates on WordPressi admin-liideses liiga palju asju kokku kuhjatud. Vaatasin mõned Ghosti ülevaated ning see tundus oluliselt lihtsam: kõik vajalik blogi pidamiseks on olemas, üleliigseid featuure pole.
Otsus blogiplatvormi osas sai tehtud.
Esialgne plaan
Kõik muud teenused, mida ma juba kasutan, töötavad üsna sarnase loogika järgi (vahe on vaid selles, et need pole tervele maailmale avatud).
Plaan oli järgmine:
- Teen Proxmoxis LXC konteineri (kasutan Alpine Linuxi image’it)
- Paigaldan konteinerisse Docker Engine’i, Docker Compose’i ja Docker Standalone Edge Agendi, et saaksin keskselt hallata selles LXC-s jooksvaid Dockeri asju
- Paigaldan Ghosti Dockeri konteineri Proxmoxi LXC konteinerisse – ehk konteinerid konteineri sees 😆
- Teen pfSense’is pordisuunamise, et väljastpoolt saaks port 443 kaudu Nginx Proxy Manageri konteinerisse
- Serveerin blogi frontendi läbi Nginx Proxy Manageri ja hangin LetsEncrypti sertifikaadi
- Ostan .ee domeeni
- Panen nimeserveri haldajaks Cloudflare’i ja A-kirjeks oma tulemüüri public IP
- Aktiveerin DNSSEC-i Cloudflare’is
- Kuna mul pole staatilist IP-d, seadistan pfSense’is DDNS-i Cloudflare’i vastu
Plaan tuli päris pikk… ja asusin seda ellu viima.
Teostus
1. Proxmoxi LXC konteiner
Proxmoxis sai loodud LXC konteiner, mille panin kohe DMZ võrku. Network menüüs saab DMZ võrgu parameetrid mugavalt ära määrata. Konteineri image’iks valisin Alpine Linuxi, mis sobib hästi Dockeri konteinerite jooksutamiseks.
Kui keegi ei tea, mis on Proxmoxi LXC, siis lühidalt:
LXC konteiner Proxmoxis on kergekaaluline virtualiseerimislahendus, mis jagab host-süsteemi kerneli ja võimaldab luua isoleeritud keskkondi. Erinevalt virtuaalmasinast ei vaja LXC oma kerneli ega täisoperatsioonisüsteemi, mistõttu on see ressursisäästlikum ja kiirem.

2. Docker ja haldus
Järgmise sammuna paigaldasin konteinerisse:
- Docker Engine’i
- Docker Compose’i
Docker Compose võimaldab hallata mitut konteinerit korraga YAML-konfiguratsiooni abil, mis on eriti kasulik rakenduste puhul, kus erinevad komponendid töötavad eraldi konteinerites.
Igasse LXC konteinerisse paigaldan ka Docker Edge Agendi, et saaksin Portaineri kaudu kõiki oma Proxmoxi hostis jooksvaid konteinereid keskselt hallata.
Pärast Edge Agendi paigaldust saab kogu edasine haldus toimuda Portaineri keskkonnast.
3. Ghosti paigaldus
Portaineris valisin Ghosti template’i ja installisin selle.
Pärast paigaldust kontrollisin, et Ghosti frontend avaneb DMZ IP kaudu minu sisevõrgust. Kui see töötas, sain liikuda edasi ja teha blogi kättesaadavaks ka väljastpoolt võrku.


4. Pordisuunamine ja domeen
pfSense’is tegin pordisuunamise, et väljastpoolt saaks 443 pordi kaudu VM VLANis asuvasse Nginx Proxy Managerisse.

Domeeni ostsin Zone.eu-st – hind oli umbes 10 eurot aastas.
Zone’is:
- lülitasin ajutiselt DNSSEC-i välja,
- muutsin nimeserveri haldajaks Cloudflare’i,
- seejärel lülitasin DNSSEC-i uuesti sisse.


5. DDNS ja Cloudflare
Kuna mul pole staatilist IP-d, seadistasin pfSense’is DDNS-i Cloudflare’i vastu.
Cloudflare’is tegin A-kirje ja testisin DDNSi toimist

6. Nginx Proxy Manager ja SSL
Nginx Proxy Manageris:
- suunasin proxy IP-aadressiks Ghosti LXC konteineri IP (DMZ-is)
- tellisin LetsEncrypti SSL-sertifikaadi domeenile openblog.ee
- sidusin sertifikaadi vastava proxy hostiga


Pärast seda oli blogi internetist kättesaadav ning kõik toimis ootuspäraselt.
- DMZ VLANi reeglid tehtud selliselt:
- Ligipääs Portaineri hostile on lubatud ainult vajaduse korral; pärast haldustöid panen reegli kinni
- DMZ VLAN ei suhtle TRUSTED segmentidega
- NGINX saab Ghosti LXC ja Dockeri konteineritega suhelda, kuid mitte vastupidi

Niimoodi sai see väike blogi püsti pandud ja asi töötab.