Skip to content

Commit 2ab5714

Browse files
committed
Improve cloudflared installation: remove old repos, add GitHub fallback
1 parent 0e99ae7 commit 2ab5714

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

install.sh

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,38 @@ ensure_cloudflared_if_requested() {
151151

152152
echo "Installing cloudflared for Cloudflare Tunnel support..."
153153
if ! command -v cloudflared >/dev/null 2>&1; then
154+
# Remove any old/conflicting Cloudflare repository sources
155+
rm -f /etc/apt/sources.list.d/cloudflare*.list 2>/dev/null || true
156+
154157
# Add Cloudflare's Debian repository (updated 2025)
155158
mkdir -p --mode=0755 /usr/share/keyrings
156159
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null || true
157160
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main" | tee /etc/apt/sources.list.d/cloudflared.list || true
158-
apt-get update
159-
apt-get install -y cloudflared || warn "cloudflared installation failed; tunnel features will be unavailable"
161+
162+
# Attempt apt installation first
163+
if apt-get update 2>&1 | grep -q "pkg.cloudflare.com.*404"; then
164+
echo "warn: Cloudflare repository unreachable; attempting binary download from GitHub..."
165+
# Fallback: download binary directly from GitHub releases
166+
ARCH=$(dpkg --print-architecture)
167+
case "$ARCH" in
168+
amd64) CLOUDFLARED_ARCH="amd64" ;;
169+
arm64) CLOUDFLARED_ARCH="arm64" ;;
170+
armhf) CLOUDFLARED_ARCH="arm" ;;
171+
*) warn "Unsupported architecture: $ARCH"; return 1 ;;
172+
esac
173+
LATEST_URL="https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-${CLOUDFLARED_ARCH}"
174+
TMP_CLOUDFLARED="/tmp/cloudflared"
175+
if curl -fsSL "$LATEST_URL" -o "$TMP_CLOUDFLARED"; then
176+
chmod +x "$TMP_CLOUDFLARED"
177+
mv "$TMP_CLOUDFLARED" /usr/local/bin/cloudflared
178+
echo "cloudflared installed via GitHub release"
179+
else
180+
warn "Failed to download cloudflared from GitHub"
181+
return 1
182+
fi
183+
else
184+
apt-get install -y cloudflared || warn "cloudflared installation failed; tunnel features will be unavailable"
185+
fi
160186
else
161187
echo "cloudflared already installed"
162188
fi

0 commit comments

Comments
 (0)