mirror of
https://github.com/aaddrick/claude-desktop-debian.git
synced 2026-05-17 08:36:35 +03:00
All .deb/.rpm binaries now flow through the Cloudflare Worker at pkg.claude-desktop-debian.dev (#493); gh-pages serves metadata only. The accumulated history was ~1.2 GB of blob objects that will never be served again — and won't re-accumulate post-Phase-4a, since the strip step in update-apt-repo / update-dnf-repo removes .deb and .rpm files from the local tree before commit. History before this reset preserved at tag gh-pages-archive-pre-449.
279 lines
10 KiB
HTML
279 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Claude Desktop APT Repository</title>
|
|
<style>
|
|
:root {
|
|
--bg: #1a1a2e;
|
|
--card: #16213e;
|
|
--accent: #e94560;
|
|
--text: #eaeaea;
|
|
--text-dim: #a0a0a0;
|
|
--code-bg: #0f0f1a;
|
|
--success: #4ade80;
|
|
}
|
|
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
|
|
background: var(--bg);
|
|
color: var(--text);
|
|
line-height: 1.6;
|
|
min-height: 100vh;
|
|
padding: 2rem;
|
|
}
|
|
.container {
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
}
|
|
h1 {
|
|
font-size: 2.5rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
.subtitle {
|
|
color: var(--text-dim);
|
|
margin-bottom: 2rem;
|
|
}
|
|
.card {
|
|
background: var(--card);
|
|
border-radius: 12px;
|
|
padding: 1.5rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
h2 {
|
|
color: var(--accent);
|
|
font-size: 1.2rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
.step {
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
.step:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
.step-label {
|
|
font-size: 0.85rem;
|
|
color: var(--text-dim);
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
.code-block {
|
|
background: var(--code-bg);
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
}
|
|
.code-header {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
padding: 0.5rem 0.75rem;
|
|
background: rgba(255,255,255,0.03);
|
|
border-bottom: 1px solid rgba(255,255,255,0.05);
|
|
}
|
|
pre {
|
|
background: transparent;
|
|
padding: 1rem;
|
|
overflow-x: auto;
|
|
font-size: 0.85rem;
|
|
line-height: 1.6;
|
|
margin: 0;
|
|
}
|
|
code {
|
|
font-family: 'SF Mono', Monaco, 'Courier New', monospace;
|
|
color: #dcdcaa;
|
|
}
|
|
.copy-btn {
|
|
background: transparent;
|
|
border: 1px solid var(--text-dim);
|
|
color: var(--text-dim);
|
|
padding: 0.3rem 0.6rem;
|
|
border-radius: 5px;
|
|
cursor: pointer;
|
|
font-size: 0.7rem;
|
|
transition: all 0.2s;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.3rem;
|
|
}
|
|
.copy-btn:hover {
|
|
border-color: var(--text);
|
|
color: var(--text);
|
|
background: rgba(255,255,255,0.05);
|
|
}
|
|
.copy-btn.copied {
|
|
border-color: var(--success);
|
|
color: var(--success);
|
|
}
|
|
.copy-btn svg {
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
a {
|
|
color: var(--accent);
|
|
text-decoration: none;
|
|
}
|
|
a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
.links {
|
|
display: flex;
|
|
gap: 1.5rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
.architectures {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
margin-top: 0.5rem;
|
|
}
|
|
.arch {
|
|
background: var(--code-bg);
|
|
padding: 0.25rem 0.75rem;
|
|
border-radius: 6px;
|
|
font-family: monospace;
|
|
font-size: 0.85rem;
|
|
}
|
|
.distro-link {
|
|
background: var(--code-bg);
|
|
padding: 0.75rem 1rem;
|
|
border-radius: 8px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
margin-top: 0.5rem;
|
|
}
|
|
footer {
|
|
margin-top: 3rem;
|
|
text-align: center;
|
|
color: var(--text-dim);
|
|
font-size: 0.9rem;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<h1>Claude Desktop APT Repository</h1>
|
|
<p class="subtitle">Unofficial Linux packages for Claude Desktop</p>
|
|
|
|
<div class="card">
|
|
<h2>Quick Install</h2>
|
|
|
|
<div class="step">
|
|
<div class="step-label">1. Add the GPG key</div>
|
|
<div class="code-block">
|
|
<div class="code-header">
|
|
<button class="copy-btn" onclick="copyCode(this)">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
|
|
</svg>
|
|
Copy
|
|
</button>
|
|
</div>
|
|
<pre><code>curl -fsSL https://aaddrick.github.io/claude-desktop-debian/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/claude-desktop.gpg</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="step">
|
|
<div class="step-label">2. Add the repository</div>
|
|
<div class="code-block">
|
|
<div class="code-header">
|
|
<button class="copy-btn" onclick="copyCode(this)">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
|
|
</svg>
|
|
Copy
|
|
</button>
|
|
</div>
|
|
<pre><code>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</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="step">
|
|
<div class="step-label">3. Install</div>
|
|
<div class="code-block">
|
|
<div class="code-header">
|
|
<button class="copy-btn" onclick="copyCode(this)">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
|
|
</svg>
|
|
Copy
|
|
</button>
|
|
</div>
|
|
<pre><code>sudo apt update && sudo apt install claude-desktop</code></pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>Supported Architectures</h2>
|
|
<div class="architectures">
|
|
<span class="arch">amd64</span>
|
|
<span class="arch">arm64</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>Updates</h2>
|
|
<p style="margin-bottom: 1rem;">Once installed, Claude Desktop updates automatically with your system:</p>
|
|
<div class="code-block">
|
|
<div class="code-header">
|
|
<button class="copy-btn" onclick="copyCode(this)">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
|
|
</svg>
|
|
Copy
|
|
</button>
|
|
</div>
|
|
<pre><code>sudo apt update && sudo apt upgrade</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>Other Distributions</h2>
|
|
<p>Using Fedora or RHEL?</p>
|
|
<a href="rpm/" class="distro-link">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z"/>
|
|
</svg>
|
|
DNF Repository (Fedora/RHEL)
|
|
</a>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>Links</h2>
|
|
<div class="links">
|
|
<a href="https://github.com/aaddrick/claude-desktop-debian">GitHub Repository</a>
|
|
<a href="https://github.com/aaddrick/claude-desktop-debian/releases">Releases</a>
|
|
<a href="https://github.com/aaddrick/claude-desktop-debian/issues">Report Issues</a>
|
|
<a href="KEY.gpg">GPG Public Key</a>
|
|
</div>
|
|
</div>
|
|
|
|
<footer>
|
|
<p>This is an unofficial project. Claude Desktop is a product of <a href="https://www.anthropic.com">Anthropic</a>.</p>
|
|
</footer>
|
|
</div>
|
|
|
|
<script>
|
|
function copyCode(button) {
|
|
const codeBlock = button.closest('.code-block').querySelector('code');
|
|
const text = codeBlock.textContent;
|
|
|
|
navigator.clipboard.writeText(text).then(() => {
|
|
const originalText = button.innerHTML;
|
|
button.innerHTML = `
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
|
|
</svg>
|
|
Copied!
|
|
`;
|
|
button.classList.add('copied');
|
|
|
|
setTimeout(() => {
|
|
button.innerHTML = originalText;
|
|
button.classList.remove('copied');
|
|
}, 2000);
|
|
});
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|