Saugus namų serverio pasiekiamumas: „Cloudflare Tunnel“ diegimo gidas (Terminalo kelias)

Saugus namų serverio pasiekiamumas: „Cloudflare Tunnel“ diegimo gidas (Terminalo kelias)

Pamirškite nesaugius portų atidarymus maršrutizatoriuje. Šiame gide parodysiu, kaip sukonfigūruoti „Cloudflare Tunnel“ ne per naršyklės „click-fest“, o taip, kaip tai daro sistemų administratoriai – per terminalą, su pilna kontrole ir „Infrastructure as Code“ požiūriu.

1 žingsnis: Autentifikacija ir tunelio inicijavimas

Pirmiausia, patikriname savo „cloudflared“ versiją ir susiejame serverį su „Cloudflare“ debesimi:

Bash

cloudflared tunnel login

Gavę leidimą, sukuriame tunelį. Pavadinome jį namu-serveris – tai unikalus identifikatorius, kuris vėliau susiejamas su tavo „Cloudflare“ paskyra:

Bash

cloudflared tunnel create namu-serveris

Svarbu: Pasitikriname tunelio sukūrimo sėkmę su cloudflared tunnel list ir pasižymime UUID.

2 žingsnis: Konfigūracija su „Pro“ požiūriu

Kad sistema būtų stabili, nekuriame jokių „nustatymų debesyje“ – visą logiką laikome serveryje, config.yml faile. Tai leidžia mums bet kada peržiūrėti, kokie srautai kur nukreipiami.

Bash

nano ~/.cloudflared/config.yml

Štai konfigūracija, kurią naudojame mes (įskaitant „Samba“ ar „Proxmox“ paslaugas, jei reikia):

YAML

tunnel: <TUNNEL_ID>
credentials-file: /root/.cloudflared/<TUNNEL_ID>.json

ingress:
  - hostname: blog.andriejus.work
    service: http://localhost:2368
  - hostname: kameros.andriejus.work
    service: http://localhost:8080
  # Klaidų valdymas: jei užklausa neatitinka host'o – grąžiname 404
  - service: http_status:404

3 žingsnis: Tinklo maršrutizavimas ir DNS „magija“

Kad tavo domenai veiktų be papildomų „Cloudflare“ skydelio nustatymų, DNS įrašus sukonfigūruojame komandine eilute. Tai užtikrina, kad DNS įrašai būtų tiesiogiai susieti su mūsų sukurtu tuneliu:

Bash

cloudflared tunnel route dns namu-serveris blog.andriejus.work
cloudflared tunnel route dns namu-serveris kameros.andriejus.work

4 žingsnis: Serviso integravimas ir „Auto-start“

Kad viskas veiktų kaip tikras serveris, mes ne tiesiog „paleidžiame“ programą, o integruojame ją į „systemd“. Tai reiškia, kad jei serveris persikrauna (po „Fujitsu“ atnaujinimų ar elektros dingimo), tunelis pakyla automatiškai:

Bash

cloudflared service install
systemctl enable cloudflared
systemctl start cloudflared

Kodėl šis būdas „pro“?

  1. Pilna kontrolė: Viskas aprašyta kode (config.yml). Jei serveris sugenda, visą infrastruktūrą atstatome per 5 minutes.
  2. Jokių atvirų portų: Nėra jokio rizikos faktoriaus maršrutizatoriuje. Tavo „Fujitsu“ serveris yra tarsi „nematomas“ iš išorės, kol neatidaromas saugus „tunelis“.
  3. Logų valdymas: Kadangi mes tunelį paleidžiame kaip serviso dalį, visus įvykius stebime per journalctl -u cloudflared, todėl bet kokią problemą matome iškart.

Dabar tavo paslaugos yra saugiai pasiekiamos iš bet kurio pasaulio taško. Tai ne tik patogu, tai – tvarkinga, saugu ir skirta tiems, kurie vertina švarią serverio architektūrą.