Install Cloudflared

Directly fetch the binary executable for cloudflared from the GitHub repository:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# requires cURL tool

sudo apk update && sudo apk add --no-cache curl

# download the latest executable for amd64 architecture

sudo curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 \
  -o /usr/bin/cloudflared

# grant executable permission

sudo chmod +x /usr/bin/cloudflared

# verify installation

cloudflared --version

Get Tunnel Token

Go to the Cloudflare Zero Trust console to create a new tunnel and copy the generated Token for backup:

get-token.webp

Configure OpenRC Daemon

Unlike most mainstream Linux distributions, Alpine utilizes OpenRC instead of Systemd to manage system services. We need to manually create a service script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Replace <Token> below with the actual value obtained

sudo tee /etc/init.d/cloudflared > /dev/null << 'EOF'

#!/sbin/openrc-run

name=$RC_SVCNAME
pidfile="/var/run/$name.pid"
command="/usr/bin/cloudflared"

# Run service, automatically update binaries monthly

command_args="--pidfile /var/run/$name.pid --autoupdate-freq 720h0m0s tunnel run --token <Token>"
command_background="yes"

output_log="/var/log/$name.log"
error_log="/var/log/$name.log"

depend() {
    need net
    after firewall
    use logger dns
}

EOF

Initialize log redirection output:

1
2
sudo touch /var/log/cloudflared.log
sudo chmod 666 /var/log/cloudflared.log

Grant executable permission to the service script and start it:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
sudo chmod +x /etc/init.d/cloudflared

# Add cloudflared to start automatically on boot

sudo rc-update add cloudflared default

# Start the service immediately

sudo rc-service cloudflared start

# Check service running status

sudo rc-service cloudflared status

Daily management commands:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# View real-time logs

tail -f /var/log/cloudflared.log

# Stop the service

sudo rc-service cloudflared stop

# Restart the service

sudo rc-service cloudflared restart