Skip to content
@katoptra

Katoptra

Greek for mirrors. Bytes here are closer than they appear.

Katoptra

Greek for mirrors. Bytes here are closer than they appear.

Each repository is one mirror: an upstream, a bucket, and a pipeline that syncs the two on a schedule from GitHub Actions. The mirrors are served from Cloudflare R2 and listed with live status at mirrors.ijosh.com.

Mirror Upstream Cadence Repository
ctan.ijosh.com CTAN, all of it hourly ctan
tlnet.ijosh.com CTAN systems/texlive/tlnet, what tlmgr installs from daily tlnet

More are on the way.

Why this exists

  • I built these for myself. They live here so the pipelines are namespaced and share one toolbox.
  • Open source in the sense that you can fork and run it. Or just use these published mirrors like I do.

How a mirror runs

  • list the upstream, diff it against the state the last run left behind, then publish the delta and checkpoint the state.
  • verify data and signatures whenever upstream provides them.
  • Works in batches, sized for a GitHub Actions runner.
  • Pings a healthcheck after each run if you give it one.
  • Keeps its state and checkpoints in R2 or any S3-compatible bucket. Cloudflare is the default for its versatility and free egress.
  • I preferentially use 1Password for secrets, but GitHub secrets work too.

Want your own?

  • Fork a mirror.
  • Set three vars in its Taskfile: SOURCE (the upstream rsync URL), BUCKET (your bucket name) and HOST (the domain in front of it).
  • Point the workflow at your vault, or your repository secret.
  • A full CTAN mirror costs under two dollars a month.

Contributing

  • Pull requests are welcome. CONTRIBUTING has the ground rules.
  • Found a way to serve altered bytes? SECURITY explains how to report it privately.

MIT licensed. Built by Josh Vaughen.

Popular repositories Loading

  1. ctan ctan Public

    CTAN mirror deployed on Cloudflare R2, served from ctan.ijosh.com

    Dockerfile

  2. tlnet tlnet Public

    TeX Live tlnet mirror deployed on Cloudflare R2, served from ctan.ijosh.com

    HTML

  3. site site Public

    Landing page for mirrors.ijosh.com — the index of software mirrors run at ijosh.com

    CSS

  4. dropbox dropbox Public

    Nightly Dropbox to Proton Drive mirror from GitHub Actions

    Python

  5. .github .github Public

    Organization profile and the community defaults every katoptra repository inherits

  6. lib lib Public

    The toolbox every katoptra mirror includes: verbs, images, workflows

    Dockerfile

Repositories

Showing 6 of 6 repositories

Top languages

Loading…

Most used topics

Loading…