Tasuta hosting oma blogile

Tasuta hosting oma blogile
Photo by Kenny Eliason / Unsplash

Inspiratsiooni sain sellest videost: https://youtu.be/dnE7c0ELEH8?si=CEVADMp9r9DwDM9J

Network chuck räägib kuidas ta oma blogi käivitanud jne, tahtsin algul samasugust lahendust käima tõmmata. Mureks oli see et algusest peale tundus tema lahendus liiga keeruline, ning ei tahtnud just seda mudeli kasutama millest tema räägib.

Mul on juba oma "flow" olemas. Ma enda jaoks realiseerin projekte veidike teistmoodi, st kasutan neid lahendusi mida ma enam vähem tunnen.

Samuti uurisin mis opensource blogiplatvormid on tänapäeval üldse saadavad on, mõtlesin algul et panen Wordpressi dockeri konteineri tööle, kuid hiljem leidsin veelgi parema lahenduse mille nimi on Ghost. Ametlik Ghosti veebileht: https://ghost.org

Miks Ghost? Olen eelnevalt natuke näppinud Wordpressi ja see tundus feature packed lahendusena, mis ei ole halb. Minu arvates aga Wordpressis on liiga palju asju admin liidesesse kokku koondatud. Vaatasin paar reviewed eelnevalt mainitud Ghost'i kohta ja see tundus palju lihtsama lahendusena, kõik vajalikud asjad olemas selleks et saaks pidada oma blogi, üleliigseid featuure pole. OK, otsus blogi platvormi osas sai tehtud.

Peas oli plaan selline (kõik muud teenused mida ma kasutan toimivad juba praegu umbes samamoodi, va see et need olemasolevad teenused ei ole tervele maailmale avatud):

  1. Teen oma proxmoxis LXC konteineri (kasutan konteineri Alpine linux image'iga)
  2. Paigaldan konteinerisse Docker Engine'i, docker compose'i ja Docker standalone Edge agent'i et ma saaks keskselt hallata selles LXC konteineris jooksvad asju mis on seotud Dockeriga.
  3. Paigaldan Ghost dockeri konteineri Proxmox LXC kontenerisse. Ehk konteinerid konteineri sees 😆
  4. Teen pordisuunamise Pfsense'is et saaks väljaspoolt minu võrku sisse port 443 kaudu Nginx Proxy Manager konteinerisse, teisisõnu - serveerin blogi konteineri frontendi läbi nginx proxy manageri. Panen blogile LetsEncrypt serti Nginx Proxy Manageri abiga.
  5. Ostan .ee lõpulist domeeni
  6. Nimeserveri haldajaks panen Cloudflare'i ja A kirjeks panen oma müüri public IP'd, aktiveerin DNSSec'i zone's siis kui nimeserveri haldajaks saab määratud Cloudflare
  7. Teen niimoodi et Cloudflare peidaks mu päris public IP'd, selleks kasutan Cloudflare proxy featuuri.
  8. Kuna ma ei oma staatilist IP'd, siis müüris teen DDNS setupi vastu Cloudflare'i

Päris pikk plaan... Asusin seda mõtet teostama.

  • Proxmox'is sai tehtud LXC konteiner.

Kes ei tea mis on Proxmoxi LXC, siis GPT kirjeldab seda niimoodi: LXC konteiner Proxmoxis on kergekaaluline virtualiseerimise lahendus, mis jagab host-süsteemi kerneli, võimaldades luua eraldi isoleeritud keskkondi. Erinevalt virtuaalmasinast ei vaja LXC konteiner oma kerneli ega täielikku operatsioonisüsteemi, mistõttu on see ressursisäästlikum ja kiirem. Konteiner sai kohe pandud DMZ võrku. Network menüüs annab kohe toksida sisse DMZ võrgu parameetrid. Containeri image on nn Alpine linux, mis on optimeeritud selleks et jooksutada Docker konteinereid.

  • Järgmine samm, paigaldasin konteinerisse docker engine'i ja docker compose'i.

GPT järgi Docker Compose'i roll on selline: Docker Compose on tööriist, mis võimaldab hallata ja käivitada mitut konteinerit korraga, kasutades lihtsat YAML-formaadis konfiguratsioonifaili. See on eriti kasulik komplekssete rakenduste puhul, kus erinevad komponendid (nt andmebaas, rakendusserver) töötavad eraldi konteinerites.

Igasse LXC konteinerisse paigaldan samuti nn Docker Edge Agenti, et saaks Portaineri keskkonnast keskselt hallata kõik konteinerid mis mul üldse Proxmox hostis käima pandud.

Nii kui Edge Agent sai paigaldatud, siis edaspidi, saan toimetada oma portaineri keskkonnast.

  • Edasi siis valisin Ghost template'i portaineri keskkonnas ja installisin selle ära.

Kui see template sai installitud, siis lõpptulemus on selline

Kontrollsin üle DMZ ip'ga Ghosti frontend avaneb mu sisevõrgust. Nii saab liikuda edasi ja teha Ghosti kättesaadavaks väljaspoolt mu võrku.

  • Selleks vaja teha pordisuunamist pfSense müüris et väljaspoolt saaks mu VM VLANi Nginx Proxy Managerisse 443 pordiga sisse.
  • Edasi siis domeeni ost Zone.eu's. 10 EUR, umbes nii palju see maksis

Muutsin zone's nii palju et lülitasin välja DNSSECi selleks et nimeserverihaldajat muuta ja panin nimeserveri haldajaks Cloudflare'i

Siis DNSSEC tagasi peale, et oleks safe.

  • Järgmine samm - ddns setup kuna mu kodus pole staatilist IP'd. pfSensiga seda on lihtne saavutada. Oluline aspekt, security mõistes, panin nii pfSensis kui ka Cloudflare's linnuke peale et Cloudflare proxy oleks aktiivne, selleks et mite näidata oma päris Public IP'd maailmale.

Edasi siis tegin A kirjet Cloudflare's, testisin et DDNS service ja proxymine toimib.

Pingides vastab cloudflare'i public IP, mitte minu kodus olev pfSense
  • Super, nüüd saab nginx Proxy manageris teha setup'i et saaks väljaspoolt ligi ja oleks LetsEncrypt sert küljes:
IP lahtrisse läks Ghost’i LXC konteineri IP mis on DMZis

NGINXist tellitud uus Letsencrypt SSL sert domeenile openblog.ee ja määratud sellele proxy hostile.

Peale seda setupi blogi on kättesaadav internetist ja saab toimetada, soovitud tulemus saavutatud.

Kirjutan, täpsemini müürireeglitest, DMZ vlani reeglid tehtud selliselt:

Esimene reegel kus lubatud ligipääs portaineri hostisse, kuid seda kasutan ainult siis kui vaja konteineri hallata. Kui portaineris toimetusi tehtud siis panen reegli kinni, teisisõnu DMZ VLAN seadistatud nii et TRUSTED segmentidega suhtlus on kinni ja lubatud ligipääs ainult väljapoole. Võrgust kus istub nginx proxy manager ligipääs DMZi lubatud, NGINX saab vabalt Ghost LXC ja dockeriga suhelda, kuid mitte vastupidi.

Niimoodi sai see väike blogikene ehitatud ja asi toimib. Edasised plaanid on sellised et panen ilmselt Watchtoweri nimelise teenuse tööle mis hakkab automaatselt Ghost konteineri uuendama nii kui Ghosti DockerHubis on uuendusi saadaval.