Post

Clouldflare Tunnel with Raspberry Pi

Clouldflare Tunnel with Raspberry Pi

Install NodeJS Server in Raspberry Pi

Check this tutorial: https://fleetstack.io/blog/cloudflare-tunnel-raspberry-pi-setup

1
2
sudo apt update
sudo apt install nodejs npm -y

Create app.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello from Raspberry Pi');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Run our application

1
node app.js

Setting Up Cloudflare Tunnel on Raspberry Pi

In this guide, we will walk through the steps to set up Cloudflare Tunnel on a Raspberry Pi. This is particularly useful for creating a secure and private web server without opening ports on your router or main network.


Prerequisites:

  • A Raspberry Pi (any model should work)
  • An active Cloudflare account with a domain name pointing to your Raspberry Pi
  • The Cloudflare Tunnel client installed on your Raspberry Pi

Step 1: Install the Cloudflare Tunnel Client

1
sudo apt update && sudo apt upgrade -y
1
sudo apt install -y curl
1
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm.deb sudo dpkg -i cloudflared-linux-arm.deb
1
cloudflared tunnel login
1
cloudflared tunnel create your-tunnel-name

Replace your-tunnel-name with a name of your choice.

1
cloudflared tunnel route dns raspberrypitunnel raspberry.wanttedbot.com
1
cloudflared tunnel run --url localhost:3000 your-tunnel-name

cloudflared tunnel run –url localhost:3000 raspberrypitunnel

1
sudo nano ~/.cloudflared/config.yml
1
2
3
4
5
6
7
tunnel: raspberrypitunnel
credentials-file: /home/pi/.cloudflared/fxe956cx8-a2x4-47e3-bx46-xxxxxxxxx.json

ingress:
 - hosname: raspberry.wantedbot.com
   service: http://localhost:3000
 - service: http_status:404
1
sudo cloudflared --config ~/.cloudflared/config.yml service install
1
sudo systemctl enable cloudflared --now

Ensure that the cloudflared tunnel starts automatically on reboot.

start the command when reboot

We can modifiy the local file.

1
sudo nano /etc/rc.local

make the file excutable

1
sudo chmode +x /etc/rc.local
1
2
3
4
5
6
7
8
#!/bin/sh -e
#
# rc.local
#

node /home/fengyi/web/app.js &
date >> /home/fengyi/logs/boot-log.txt
exit 0

Then sudo reboot to see if it works!

1
sudo reboot
This post is licensed under CC BY 4.0 by the author.