Skip to content

Instantly share code, notes, and snippets.

@danielraffel
Last active January 13, 2024 03:55
Show Gist options
  • Save danielraffel/c1ede062cae5a863ec388aef61ae5eb9 to your computer and use it in GitHub Desktop.
Save danielraffel/c1ede062cae5a863ec388aef61ae5eb9 to your computer and use it in GitHub Desktop.
Cloudflare Tunnel setup for Teslamate and Grafana
#!/bin/bash
# Add cloudflare gpg key
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared jammy main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
# install cloudflared
sudo apt-get update && sudo apt-get install cloudflared
sudo cloudflared tunnel login
sudo cloudflared tunnel create teslamate-yourDomain-com # Configure the name for your tunnel using your domain
sudo cloudflared tunnel route ip add YOUR_SERVER_IP/32 teslamate-yourDomain-com # Configure YOUR_SERVER_IP
sudo cloudflared tunnel route dns teslamate-yourDomain-com teslamate.yourDomain.com # Configure your tunnel teslamate-yourDomain-com and your domain teslamate.yourDomain.com
sudo cloudflared tunnel route dns teslamate-yourDomain-com grafana.yourDomain.com # Assiming hosting on same domain use your tunnel teslamate-yourDomain-com and configure grafana domain grafana.yourDomain.com
tunnel_id=$(sudo cloudflared tunnel info teslamate-yourDomain-com | grep -oP 'Your tunnel \K([a-z0-9-]+)') # Replace teslamate-yourDomain-com with your tunnel info
# Create config file
mkdir /etc/cloudflared
echo "tunnel: teslamate-yourDomain-com" > /etc/cloudflared/config.yml # Replace teslamate-yourDomain-com with your tunnel info
echo "credentials-file: /root/.cloudflared/$tunnel_id.json" >> /etc/cloudflared/config.yml
echo "protocol: quic" >> /etc/cloudflared/config.yml
echo "logfile: /var/log/cloudflared.log" >> /etc/cloudflared/config.yml
echo "loglevel: debug" >> /etc/cloudflared/config.yml
echo "transport-loglevel: info" >> /etc/cloudflared/config.yml
echo "ingress:" >> /etc/cloudflared/config.yml
echo " - hostname: teslamate.yourDomain.com" >> /etc/cloudflared/config.yml # Configure your teslamate domain aka teslamate.yourDomain.com
echo " service: http://localhost:4000" >> /etc/cloudflared/config.yml
echo " - hostname: grafana.yourDomain.com" >> /etc/cloudflared/config.yml # Configure your grafana domain aka grafana.yourDomain.com
echo " service: http://localhost:3000" >> /etc/cloudflared/config.yml
echo " - service: http_status:404" >> /etc/cloudflared/config.yml
cloudflared service install
systemctl start cloudflared
systemctl status cloudflared
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment