GitHub Repo with RISC-V binary:

https://github.com/Johnnybyzhang/cloudflared-riscv/releases

curl -o cloudflared DOWNLOAD-LINK

Manual

Based on https://wiki.sipeed.com/hardware/en/kvm/NanoKVM/network/cloudflared.html

install -m 0755 ./cloudflared /usr/sbin/cloudflared
/usr/sbin/cloudflared --version
 
# create config dir
mkdir -p /etc/cloudflared
 
# configure file permissions for new files
umask 077
 
# using file avoids exposing the token in the process list
cat >/etc/cloudflared/config.yml <<'YAML'
no-autoupdate: true
token: YOUR_TUNNEL_TOKEN_HERE
YAML
chmod 600 /etc/cloudflared/config.yml
 
# test tunnel
cloudflared tunnel --config /etc/cloudflared/config.yml --no-autoupdate run
 

Setup Autostart using init.d

cat >/etc/init.d/S45cloudflared <<'SH'
#!/bin/sh
PATH=/usr/sbin:/usr/bin:/sbin:/bin
DAEMON="/usr/sbin/cloudflared"
CONF="/etc/cloudflared/config.yml"
LOG="/var/log/cloudflared.log"
PIDFILE="/var/run/cloudflared.pid"
 
start() {
    [ -x "$DAEMON" ] || { echo "cloudflared not found"; exit 1; }
    [ -f "$CONF" ]   || { echo "missing $CONF"; exit 1; }
    mkdir -p /var/run
    printf "Starting cloudflared: "
    # Keep cloudflared’s own logfile; silence console output
    "$DAEMON" tunnel --config "$CONF" --logfile "$LOG" --no-autoupdate run >/dev/null 2>&1 &
    echo $! >"$PIDFILE"
    echo "OK"
}
 
stop() {
    printf "Stopping cloudflared: "
    if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
        kill "$(cat "$PIDFILE")" 2>/dev/null || true
        sleep 2
        kill -0 "$(cat "$PIDFILE")" 2>/dev/null && kill -9 "$(cat "$PIDFILE")" 2>/dev/null || true
        rm -f "$PIDFILE"
        echo "OK"
    else
        killall cloudflared 2>/dev/null && echo "OK" || echo "not running"
    fi
}
 
status() {
    if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
        echo "cloudflared running (pid $(cat "$PIDFILE"))"
    else
        echo "cloudflared stopped"; exit 1
    fi
}
 
case "$1" in
  start) start ;;
  stop) stop ;;
  restart|reload) stop; start ;;
  status) status ;;
  *) echo "Usage: $0 {start|stop|restart|status}"; exit 1 ;;
 esac
exit 0
SH
chmod +x /etc/init.d/S45cloudflared

Start and verify:

/etc/init.d/S45cloudflared start
/etc/init.d/S45cloudflared status
tail -n 100 /var/log/cloudflared.log