Raspberry PI - 5 🍑

Ok, dacă tot e un web server, să fie pe web, nu ? Necesită și un nume de domeniu. Deci trebuie mers la un registrar (de exemplu https://www.globehosting.com/), și cumpărat un domeniu disponibil (de exemplu www.gigel.net e luat din păcate, dar www.muculm.eu e disponibil).

Un reverse-proxy

Apoi, pentru a ne conecta domeniul la site-ul găzduit pe Raspberry PI, o variantă la îndemână este de folosire a unui reverse proxy. Cea mai convenabilă soluție în momentul de față pare să fie cea de la CloudFlare.

Se apelează de aici: https://dash.cloudflare.com/. Și există tutoriale mai detaliate, precum: https://pimylifeup.com/raspberry-pi-cloudflare-tunnel/.

De pe PI, se instalează cloudflared:

sudo apt install curl lsb-release
curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-archive-keyring.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee  /etc/apt/sources.list.d/cloudflared.list
sudo apt update
sudo apt install cloudflared

Apoi este necesară autentificarea de pe PI. Posibil să fie nevoie de deschiderea unui link web pe computerul principal.

cloudflared tunnel login

La minerit

Trebuie creat un tunel, instrucțiuni mai detaliate aici: (from https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/install-and-setup/tunnel-guide/local/ ).

cloudflared tunnel create MUCTUNNEL

Consola ne va informa:

Created tunnel MUCTUNNEL with id 12345678-abcd-1a2b-3c4d-13523423412x

cloudflared tunnel route dns MUCTUNNEL muculm.eu
cloudflared tunnel list

Test (opțional)

Se lansează tunelul pe portul pe care ascultă nginx:

cloudflared tunnel run --url localhost:8088 MUCTUNNEL

Acum dacă se deschide un url în browser (de oriunde) pe domeniul folosit (de ex: https://muculm.eu), ar trebui să se ajungă la site-ul găzduit pe Raspberry PI.

La final, se oprește tunelul.

CTRL + C

Mută configurarea într-un fișier

Configurarea ar trebui să fie într-un fișier yml, ca să putem executa un serviciu la fiecare pornire a Raspberry PI-ului (inclusiv când se ia curentul, sau se scoate accidental cablul de alimentare din priză pentru a pune aspiratorul).

cd /home/PIUSER/.cloudflared/
sudo touch config.yml
sudo nano config.yml

Conținutul fișierului de configurare config.yml ar trebui să semene cu

url: http://localhost:8088
tunnel: 12345678-abcd-1a2b-3c4d-13523423412x
credentials-file: /home/PIUSER/.cloudflared/12345678-abcd-1a2b-3c4d-13523423412x.json
ingress:
    - hostname: muculm.eu
      service: http://localhost:8088
    - service: http_status:404

Se poate folosi de probă comanda:

cloudflared tunnel --config /home/PIUSER/.cloudflared/config.yml run MUCTUNNEL

…Și deschide un url în browser către domeniul folosit.

CTRL + C

Configurează ca serviciu

Make it a service

sudo cp config.yml /etc/cloudflared/config.yml
sudo cloudflared service install
sudo systemctl start cloudflared
systemctl status cloudflared

Ce a vrut să spună autorul

Cu un reverse proxy, precum cloudflare se poate expune un site găzduit pe un Raspberry PI.

Written on August 8, 2023