Compare commits
No commits in common. "main" and "gh-pages" have entirely different histories.
4 changed files with 172 additions and 13 deletions
0
.nojekyll
Normal file
0
.nojekyll
Normal file
20
README.md
20
README.md
|
|
@ -1,16 +1,10 @@
|
|||
# torrentclaw/mirrors
|
||||
# TorrentClaw mirrors (static)
|
||||
|
||||
Off-domain static copy of the [TorrentClaw](https://torrentclaw.com) mirror list.
|
||||
Auto-generated by `scripts/build-mirrors-static.ts`. Do not edit by hand —
|
||||
your changes will be overwritten on the next build.
|
||||
|
||||
The content of the `gh-pages` branch is **auto-generated** by a workflow in
|
||||
the (private) source repo. **Do not edit by hand** — your changes will be
|
||||
overwritten on the next publish.
|
||||
This page is published off-domain so it survives any single takedown:
|
||||
- https://torrentclaw.github.io/mirrors/
|
||||
- https://torrentclaw-mirrors.pages.dev/
|
||||
|
||||
Served at: <https://torrentclaw.github.io/mirrors/>.
|
||||
|
||||
## Why this repo exists
|
||||
|
||||
If `torrentclaw.com` is taken down, the in-app `/mirrors` page goes down
|
||||
with it. This repo lives on infrastructure independent from the rest of the
|
||||
stack (different cloud, different account, different CDN) so the mirror
|
||||
list survives any single takedown.
|
||||
Update with: `pnpm exec tsx scripts/build-mirrors-static.ts`.
|
||||
|
|
|
|||
129
index.html
Normal file
129
index.html
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>TorrentClaw mirrors</title>
|
||||
<meta name="description" content="Backup access to TorrentClaw via alternate domains and Tor (.onion). Static copy hosted off-domain so it survives takedowns.">
|
||||
<meta name="robots" content="index,follow">
|
||||
<link rel="canonical" href="https://torrentclaw.com/mirrors">
|
||||
<style>
|
||||
:root { color-scheme: dark light; }
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #0f172a;
|
||||
color: #e2e8f0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
line-height: 1.5;
|
||||
}
|
||||
main { max-width: 720px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
h1 { font-size: 1.75rem; margin: 0 0 .5rem; }
|
||||
h2 { font-size: 1.1rem; margin: 2rem 0 .75rem; }
|
||||
p { color: #94a3b8; margin: .5rem 0; }
|
||||
ul { list-style: none; padding: 0; margin: 0; }
|
||||
li {
|
||||
display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
|
||||
background: #1e293b; border: 1px solid #334155; border-radius: 6px;
|
||||
padding: .65rem .9rem; margin: .35rem 0;
|
||||
}
|
||||
li a { color: #38bdf8; text-decoration: none; word-break: break-all; flex: 1 1 auto; }
|
||||
li a:hover { text-decoration: underline; }
|
||||
.badge {
|
||||
display: inline-block; font-size: 10px; text-transform: uppercase;
|
||||
padding: 2px 8px; border-radius: 999px; background: #334155; color: #cbd5e1;
|
||||
letter-spacing: .04em;
|
||||
}
|
||||
.tor-badge { background: #6b21a8; color: #f3e8ff; }
|
||||
.muted { color: #64748b; font-size: 12px; word-break: break-all; }
|
||||
.footer { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #334155;
|
||||
font-size: 12px; color: #64748b; }
|
||||
.footer a { color: #94a3b8; }
|
||||
code { background: #1e293b; padding: 2px 6px; border-radius: 4px; font-size: 13px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<h1>TorrentClaw mirrors</h1>
|
||||
<p>This is a static copy of the official mirror list. It is hosted off the main domain so it survives any takedown of <code>torrentclaw.com</code>. Bookmark it.</p>
|
||||
|
||||
<h2>Clearnet mirrors</h2>
|
||||
<p>Regular HTTPS domains. Identical content; use whichever your ISP and DNS resolve correctly.</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://torrentclaw.com" class="clearnet">torrentclaw.com</a>
|
||||
<span class="badge">primary</span>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://torrentclaw.to" class="clearnet">torrentclaw.to</a>
|
||||
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion" class="tor">torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion</a>
|
||||
|
||||
<span class="badge tor-badge">Tor</span>
|
||||
</li></ul>
|
||||
|
||||
<h2>Out-of-band channels</h2>
|
||||
<p>If both clearnet and Tor are unreachable, check these for the latest mirror list.</p>
|
||||
<ul><li><span class="muted">None configured</span></li></ul>
|
||||
|
||||
<h2>Other off-domain copies</h2>
|
||||
<p>This page is itself published on multiple independent hosts. If you are reading this on one of them, save the others too.</p>
|
||||
<ul><li>
|
||||
<a href="https://torrentclaw.github.io/mirrors/" rel="noopener noreferrer">GitHub Pages</a>
|
||||
<span class="muted">https://torrentclaw.github.io/mirrors/</span>
|
||||
</li></ul>
|
||||
|
||||
<h2>For developers and agents</h2>
|
||||
<p>The same data is embedded below as JSON. unarr falls back to scraping this island when /api/v1/mirrors is unreachable.</p>
|
||||
<p><a href="mirrors.json">mirrors.json</a> — same payload, raw.</p>
|
||||
|
||||
<div class="footer">
|
||||
<p>Generated 2026-05-13T18:16:13.576Z · revision 2.</p>
|
||||
<p>Canonical site: <a href="https://torrentclaw.com">torrentclaw.com</a></p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script type="application/json" id="torrentclaw-mirrors">
|
||||
{
|
||||
"revision": 2,
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://torrentclaw.com",
|
||||
"label": "torrentclaw.com",
|
||||
"kind": "clearnet",
|
||||
"primary": true
|
||||
},
|
||||
{
|
||||
"url": "https://torrentclaw.to",
|
||||
"label": "torrentclaw.to",
|
||||
"kind": "clearnet",
|
||||
"primary": false
|
||||
},
|
||||
{
|
||||
"url": "http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
|
||||
"label": "torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
|
||||
"kind": "tor",
|
||||
"primary": false
|
||||
}
|
||||
],
|
||||
"tor": {
|
||||
"url": "http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
|
||||
"label": "torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion"
|
||||
},
|
||||
"channels": [],
|
||||
"staticFallbacks": [
|
||||
{
|
||||
"label": "GitHub Pages",
|
||||
"url": "https://torrentclaw.github.io/mirrors/",
|
||||
"description": "Static copy of the mirror list, hosted on GitHub Pages from the torrentclaw/mirrors repo (independent infrastructure)."
|
||||
}
|
||||
],
|
||||
"updatedAt": "2026-05-13T18:16:13.576Z"
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
36
mirrors.json
Normal file
36
mirrors.json
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"revision": 2,
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://torrentclaw.com",
|
||||
"label": "torrentclaw.com",
|
||||
"kind": "clearnet",
|
||||
"primary": true
|
||||
},
|
||||
{
|
||||
"url": "https://torrentclaw.to",
|
||||
"label": "torrentclaw.to",
|
||||
"kind": "clearnet",
|
||||
"primary": false
|
||||
},
|
||||
{
|
||||
"url": "http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
|
||||
"label": "torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
|
||||
"kind": "tor",
|
||||
"primary": false
|
||||
}
|
||||
],
|
||||
"tor": {
|
||||
"url": "http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
|
||||
"label": "torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion"
|
||||
},
|
||||
"channels": [],
|
||||
"staticFallbacks": [
|
||||
{
|
||||
"label": "GitHub Pages",
|
||||
"url": "https://torrentclaw.github.io/mirrors/",
|
||||
"description": "Static copy of the mirror list, hosted on GitHub Pages from the torrentclaw/mirrors repo (independent infrastructure)."
|
||||
}
|
||||
],
|
||||
"updatedAt": "2026-05-13T18:16:13.577Z"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue