Running a Local Dashboard through Cloudflare Tunnels
Summary of tasks
- Make a
netdata-web
HTTP tunnel on the parent node, so the web interface can be viewed publicly - Make a
netdata-tcp
tcp tunnel on the parent node, so it can receive tcp streams from child nodes - Provide access to the
netdata-tcp
tunnel on the child nodes, so you can send the tcp stream to the parent node - Make sure the parent node uses port
19999
for both web and tcp streams - Make sure that the child nodes have
mode = none
in the[web]
section of thenetdata.conf
file, anddestination = tcp:127.0.0.1:19999
in the[stream]
section of thestream.conf
file
Detailed instructions with commands and service files
Install the
cloudflared
package on all your Netdata nodes, follow the repository instructions hereLogin to cloudflare with
sudo cloudflared login
on all your Netdata nodes
Parent node: public web interface and receiving stats from Child nodes
- Create the HTTP tunnel
sudo cloudflared tunnel create netdata-web
- Start routing traffic
sudo cloudflared tunnel route dns netdata-web netdata-web.my.domain
- Create a service by making a file called
/etc/systemd/system/cf-tun-netdata-web.service
and input:
[Unit]
Description=cloudflare tunnel netdata-web
After=network-online.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run --url http://localhost:19999 netdata-web
Restart=on-failure
TimeoutStartSec=0
RestartSec=5s
[Install]
WantedBy=multi-user.target
- Create the TCP tunnel
sudo cloudflared tunnel create netdata-tcp
- Start routing traffic
sudo cloudflared tunnel route dns netdata-tcp netdata-tcp.my.domain
- Create a service by making a file called
/etc/systemd/system/cf-tun-netdata-tcp.service
and input:
[Unit]
Description=cloudflare tunnel netdata-tcp
After=network-online.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run --url tcp://localhost:19999 netdata-tcp
Restart=on-failure
TimeoutStartSec=0
RestartSec=5s
[Install]
WantedBy=multi-user.target
Child nodes: send stats to the Parent node
- Create a service by making a file called
/etc/systemd/system/cf-acs-netdata-tcp.service
and input:
[Unit]
Description=cloudflare access netdata-tcp
After=network-online.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/cloudflared --no-autoupdate access tcp --url localhost:19999 --tunnel-host netdata-tcp.my.domain
Restart=on-failure
TimeoutStartSec=0
RestartSec=5s
[Install]
WantedBy=multi-user.target
You can edit the configuration file using the edit-config
script from the Netdata config directory.
- Edit
netdata.conf
and input:
[web]
mode = none
- Edit
stream.conf
and input:
[stream]
destination = tcp:127.0.0.1:19999
Restart the Agents, and you are done!
You should now be able to have a Local Dashboard that gets its metrics from Child instances, running through Cloudflare tunnels.
Note
You can find the origin of this page in this discussion in our Discord server.
We thought it was going to be helpful to all users, so we included it in our docs.
Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.