Cloudflare Tunnel
Ngrok is a service which gives you random url whenever you start a new tunnel. Clodflare tunnel is a free service that you can use as ngrok alternative.
You can create a temporary tunnel with random url
cloudflared tunnel --url http://localhost:3000
and it will be available under .trycloudflare.com like https://request-composer-pools-requirements.trycloudflare.com
For long living tunnels which uses the same url you should use https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/local/
cloudflared tunnel login
# when you authorize it will create ~/.cloudflared/cert.pem
# list all tunnels created on web
cloudflared tunnel list
# create tunnel and config.json file
cloudflared tunnel create mytunnel
# Tunnel credentials written to /home/dule/.cloudflared/asd....asd.json
cat > ~/.cloudflared/config.yaml << 'HERE_DOC'
url: http://localhost:8000
tunnel: mytunnel
credentials-file: ~/.cloudflared/asd....asd.json
HERE_DOC
# create DNS CNAME record to route to tunnel
cloudflared tunnel route dns mytunnel mytunnel.trk.in.rs
# start the tunnel
cloudflared tunnel run mytunnel
# check tunnel status
cloudflared tunnel info mytunnel
If you install as a service than you need to stop that service
systemctl status cloudflared