mirror of
https://github.com/aaddrick/claude-desktop-debian.git
synced 2026-05-17 08:36:35 +03:00
docs: point install instructions at pkg.claude-desktop-debian.dev (#510)
Phase 4a-APT cutover (#493, #503) moves binary distribution behind a Cloudflare Worker at pkg.claude-desktop-debian.dev. The Worker serves repo metadata directly and 302-redirects .deb/.rpm requests to GitHub Release assets, which makes the >100 MB .deb push cap irrelevant. GitHub Pages auto-301s legacy aaddrick.github.io/claude-desktop-debian URLs to pkg.claude-desktop-debian.dev, but the redirect uses http:// (Pages has no cert for pkg.<domain> — DNS points at Cloudflare, so Pages can never pass domain verification). apt refuses that scheme downgrade as a security policy, so existing users' sources.list silently breaks on the next `apt update`. DNF accepts the downgrade and keeps working. Changes: - README.md: install snippets (APT + DNF) now point at pkg.claude-desktop-debian.dev directly. New users never touch the Pages redirect chain. - README.md: add a "Migrating from the old aaddrick.github.io URL" section with sed one-liners for existing users + a short background paragraph explaining why the change was needed. - .github/workflows/ci.yml: release-notes install snippets (APT + DNF, both branches) and the generated claude-desktop.repo file's baseurl and gpgkey all point at pkg.<domain>. Smoke-test chain walkers deliberately keep starting at github.io (they test the full 3-hop Pages→Worker→Releases chain for clients that do follow the downgrade, like curl-without-L and dnf). Refs #493, #503
This commit is contained in:
22
.github/workflows/ci.yml
vendored
22
.github/workflows/ci.yml
vendored
@@ -282,8 +282,8 @@ jobs:
|
||||
echo ""
|
||||
echo '```bash'
|
||||
echo "# First time? Add the repo:"
|
||||
echo "curl -fsSL https://aaddrick.github.io/claude-desktop-debian/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/claude-desktop.gpg"
|
||||
echo 'echo "deb [signed-by=/usr/share/keyrings/claude-desktop.gpg arch=amd64,arm64] https://aaddrick.github.io/claude-desktop-debian stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list'
|
||||
echo "curl -fsSL https://pkg.claude-desktop-debian.dev/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/claude-desktop.gpg"
|
||||
echo 'echo "deb [signed-by=/usr/share/keyrings/claude-desktop.gpg arch=amd64,arm64] https://pkg.claude-desktop-debian.dev stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list'
|
||||
echo ""
|
||||
echo "# Install or update:"
|
||||
echo "sudo apt update && sudo apt install claude-desktop"
|
||||
@@ -293,7 +293,7 @@ jobs:
|
||||
echo ""
|
||||
echo '```bash'
|
||||
echo "# First time? Add the repo:"
|
||||
echo "sudo curl -fsSL https://aaddrick.github.io/claude-desktop-debian/rpm/claude-desktop.repo -o /etc/yum.repos.d/claude-desktop.repo"
|
||||
echo "sudo curl -fsSL https://pkg.claude-desktop-debian.dev/rpm/claude-desktop.repo -o /etc/yum.repos.d/claude-desktop.repo"
|
||||
echo ""
|
||||
echo "# Install or update:"
|
||||
echo "sudo dnf install claude-desktop"
|
||||
@@ -340,8 +340,8 @@ jobs:
|
||||
echo ""
|
||||
echo '```bash'
|
||||
echo "# First time? Add the repo:"
|
||||
echo "curl -fsSL https://aaddrick.github.io/claude-desktop-debian/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/claude-desktop.gpg"
|
||||
echo 'echo "deb [signed-by=/usr/share/keyrings/claude-desktop.gpg arch=amd64,arm64] https://aaddrick.github.io/claude-desktop-debian stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list'
|
||||
echo "curl -fsSL https://pkg.claude-desktop-debian.dev/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/claude-desktop.gpg"
|
||||
echo 'echo "deb [signed-by=/usr/share/keyrings/claude-desktop.gpg arch=amd64,arm64] https://pkg.claude-desktop-debian.dev stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list'
|
||||
echo ""
|
||||
echo "# Install or update:"
|
||||
echo "sudo apt update && sudo apt install claude-desktop"
|
||||
@@ -351,7 +351,7 @@ jobs:
|
||||
echo ""
|
||||
echo '```bash'
|
||||
echo "# First time? Add the repo:"
|
||||
echo "sudo curl -fsSL https://aaddrick.github.io/claude-desktop-debian/rpm/claude-desktop.repo -o /etc/yum.repos.d/claude-desktop.repo"
|
||||
echo "sudo curl -fsSL https://pkg.claude-desktop-debian.dev/rpm/claude-desktop.repo -o /etc/yum.repos.d/claude-desktop.repo"
|
||||
echo ""
|
||||
echo "# Install or update:"
|
||||
echo "sudo dnf install claude-desktop"
|
||||
@@ -518,6 +518,10 @@ jobs:
|
||||
repoVer="${TAG#v}"; repoVer="${repoVer%+claude*}"
|
||||
claudeVer="${TAG#*+claude}"
|
||||
deb_name="claude-desktop_${claudeVer}-${repoVer}_amd64.deb"
|
||||
# Intentionally starts at the github.io URL: the smoke test
|
||||
# walks the full Pages-301 → Worker-302 → Releases chain to
|
||||
# confirm the legacy redirect path still works for clients
|
||||
# that follow HTTPS→HTTP downgrades (DNF, curl without -L).
|
||||
deb_url="https://aaddrick.github.io/claude-desktop-debian/pool/main/c/claude-desktop/${deb_name}"
|
||||
|
||||
# Wait for propagation
|
||||
@@ -660,11 +664,11 @@ jobs:
|
||||
printf '%s\n' \
|
||||
'[claude-desktop]' \
|
||||
'name=Claude Desktop for Fedora/RHEL' \
|
||||
'baseurl=https://aaddrick.github.io/claude-desktop-debian/rpm/$basearch' \
|
||||
'baseurl=https://pkg.claude-desktop-debian.dev/rpm/$basearch' \
|
||||
'enabled=1' \
|
||||
'gpgcheck=1' \
|
||||
'repo_gpgcheck=1' \
|
||||
'gpgkey=https://aaddrick.github.io/claude-desktop-debian/KEY.gpg' \
|
||||
'gpgkey=https://pkg.claude-desktop-debian.dev/KEY.gpg' \
|
||||
> rpm/claude-desktop.repo
|
||||
|
||||
- name: Re-upload signed RPMs to GitHub Release
|
||||
@@ -734,6 +738,8 @@ jobs:
|
||||
repoVer="${TAG#v}"; repoVer="${repoVer%+claude*}"
|
||||
claudeVer="${TAG#*+claude}"
|
||||
rpm_name="claude-desktop-${claudeVer}-${repoVer}-1.x86_64.rpm"
|
||||
# Intentionally starts at the github.io URL — see APT smoke
|
||||
# test comment above for why.
|
||||
rpm_url="https://aaddrick.github.io/claude-desktop-debian/rpm/x86_64/${rpm_name}"
|
||||
|
||||
deadline=$((SECONDS + 300))
|
||||
|
||||
23
README.md
23
README.md
@@ -50,10 +50,10 @@ Add the repository for automatic updates via `apt`:
|
||||
|
||||
```bash
|
||||
# Add the GPG key
|
||||
curl -fsSL https://aaddrick.github.io/claude-desktop-debian/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/claude-desktop.gpg
|
||||
curl -fsSL https://pkg.claude-desktop-debian.dev/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/claude-desktop.gpg
|
||||
|
||||
# Add the repository
|
||||
echo "deb [signed-by=/usr/share/keyrings/claude-desktop.gpg arch=amd64,arm64] https://aaddrick.github.io/claude-desktop-debian stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list
|
||||
echo "deb [signed-by=/usr/share/keyrings/claude-desktop.gpg arch=amd64,arm64] https://pkg.claude-desktop-debian.dev stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list
|
||||
|
||||
# Update and install
|
||||
sudo apt update
|
||||
@@ -68,7 +68,7 @@ Add the repository for automatic updates via `dnf`:
|
||||
|
||||
```bash
|
||||
# Add the repository
|
||||
sudo curl -fsSL https://aaddrick.github.io/claude-desktop-debian/rpm/claude-desktop.repo -o /etc/yum.repos.d/claude-desktop.repo
|
||||
sudo curl -fsSL https://pkg.claude-desktop-debian.dev/rpm/claude-desktop.repo -o /etc/yum.repos.d/claude-desktop.repo
|
||||
|
||||
# Install
|
||||
sudo dnf install claude-desktop
|
||||
@@ -76,6 +76,23 @@ sudo dnf install claude-desktop
|
||||
|
||||
Future updates will be installed automatically with your regular system updates (`sudo dnf upgrade`).
|
||||
|
||||
#### Migrating from the old `aaddrick.github.io` URL
|
||||
|
||||
If you installed claude-desktop before April 2026, your repo config points at `https://aaddrick.github.io/claude-desktop-debian`. That URL now auto-redirects to `pkg.claude-desktop-debian.dev` — DNF follows the redirect transparently, but **apt refuses it as a security downgrade**, so `apt update` fails. Update your sources list to the new URL:
|
||||
|
||||
```bash
|
||||
# APT (Debian/Ubuntu)
|
||||
sudo sed -i 's|https://aaddrick\.github\.io/claude-desktop-debian|https://pkg.claude-desktop-debian.dev|g' \
|
||||
/etc/apt/sources.list.d/claude-desktop.list
|
||||
sudo apt update
|
||||
|
||||
# DNF (Fedora/RHEL) — optional refresh; the old URL still works but pointing directly at the new host is cleaner
|
||||
sudo curl -fsSL https://pkg.claude-desktop-debian.dev/rpm/claude-desktop.repo \
|
||||
-o /etc/yum.repos.d/claude-desktop.repo
|
||||
```
|
||||
|
||||
Background: binaries for recent releases are no longer committed to the `gh-pages` branch — `.deb` files grew past GitHub's 100 MB per-file cap (#493). The new URL is fronted by a small Cloudflare Worker that serves the existing metadata directly and 302-redirects package downloads to the corresponding GitHub Release asset. Bandwidth and package bytes still come from GitHub; the Worker just handles the routing.
|
||||
|
||||
### Using AUR (Arch Linux)
|
||||
|
||||
The [`claude-desktop-appimage`](https://aur.archlinux.org/packages/claude-desktop-appimage) package is available on the AUR and is automatically updated with each release.
|
||||
|
||||
Reference in New Issue
Block a user