Mirrors
The site may be blocked in Russia. So the same signed release of the site sits at several addresses with different hosts. The list of mirrors is part of every release and is updated with it.
Addresses
- https://russialedger.com/Main address · Vercel · since 9 Oct 2026
- https://russialedger-mirror.github.io/Mirror · GitHub Pages · since 12 Oct 2026
How to check a copy
Every release of the site is signed. release.json lists every file of the release with its checksum (sha256), and release.json.minisig is the signature of that list. Anyone can check a copy with the minisign program and the public key below: if a single file was changed, the check fails.
Public key
RWRvGOpGgdZw4fGudqOt1aLEPZdd0IxZL7jdScxLzJ4G5YnWJqAmq0Jc
minisign -Vm release.json -P RWRvGOpGgdZw4fGudqOt1aLEPZdd0IxZL7jdScxLzJ4G5YnWJqAmq0Jc
If the site does not open
- Open any mirror in the list above: it has the same pages and the same data.
- A saved page works offline; it can be passed on, and its authenticity checked against the signature.
- The site keeps no data about readers: no accounts, no cookies, no third-party scripts.
How to run a mirror
Anyone can run a mirror. The mirror program downloads the signed release of the site, checks the signature and every file, and publishes the copy only if everything matches: a mirror cannot change the site. It needs no password or key from the editors, and it sends nothing to them.
We do not ask anyone in Russia to run a mirror.
- pull.mjs — the mirror program: Node.js, no extra packages
- mirror.yml — a ready mirror on GitHub Pages, with the key and the addresses filled in
On GitHub Pages: free, no server of your own
- Create a public repository on GitHub.
- Put pull.mjs at the repository's root and mirror.yml in the folder .github/workflows/.
- In the repository's Settings → Pages, set Source to “GitHub Actions”.
- Open Actions → Mirror → Run workflow. From then on the mirror updates itself every hour, at https://<name>.github.io/<repository>/.
On your own server or static host
Every hour, run the program into a new folder and swap it for the published one only if the program ended without an error (exit code 0); code 3 means the copy is already current. Serve the folder as plain files.
node pull.mjs --key "RWRvGOpGgdZw4fGudqOt1aLEPZdd0IxZL7jdScxLzJ4G5YnWJqAmq0Jc" --out site.new --from https://russialedger.com/ --from https://russialedger-mirror.github.io/
A Tor address
The same folder, served by a web server on the local address, and two lines in Tor's settings (torrc). The mirror's address will be in the file hostname in the HiddenServiceDir folder.
HiddenServiceDir /var/lib/tor/mirror/ HiddenServicePort 80 127.0.0.1:8080
A mirror works without being on the list above. The editors add to it the addresses they check every hour.
To have a mirror added to the list above, write to the editors: myeel@pm.me
The editors see the sender's address: write from an address that does not reveal who you are.