Selfhosted, security-focused paste store.
  • Python 79.4%
  • Nix 14.5%
  • HTML 3.2%
  • CSS 2%
  • Dockerfile 0.9%
Find a file
V. Zhdanov f3798524eb
All checks were successful
Build / build (push) Successful in 14m23s
fix: Rish Takigawa left contact info
2026-08-09 15:44:36 +03:00
.forgejo/workflows feat: add arm64 to docker build targets 2026-08-03 18:07:36 +03:00
.zed boilerplate 2026-07-31 17:45:33 +03:00
docs fix+feat: forbid empty pastes and add an option to filter crawler noise 2026-08-09 00:28:36 +03:00
src/chancery fix+feat: forbid empty pastes and add an option to filter crawler noise 2026-08-09 00:28:36 +03:00
tests fix+feat: forbid empty pastes and add an option to filter crawler noise 2026-08-09 00:28:36 +03:00
.dockerignore feat: Dockerfile 2026-08-02 18:20:32 +03:00
.envrc boilerplate 2026-07-31 17:45:33 +03:00
.gitignore Pretty much wrote the whole project overnight and forgot to commit T~T 2026-08-01 16:44:01 +03:00
CONTRIBUTORS.md fix: Rish Takigawa left contact info 2026-08-09 15:44:36 +03:00
Dockerfile feat: Dockerfile 2026-08-02 18:20:32 +03:00
flake.lock boilerplate 2026-07-31 17:45:33 +03:00
flake.nix fix+feat: forbid empty pastes and add an option to filter crawler noise 2026-08-09 00:28:36 +03:00
LICENSE boilerplate 2026-07-31 17:45:33 +03:00
pyproject.toml feat: switch from sqlcipher3-binary to sqlcipher3 2026-08-03 18:03:34 +03:00
README.md feat: Disclose mirrors and contributors 2026-08-09 15:40:43 +03:00
uv.lock feat: switch from sqlcipher3-binary to sqlcipher3 2026-08-03 18:03:34 +03:00

Chancery

Selfhosted, security-focused paste store. The project sacrifices some UX in favor of simplicity and security.
Example: there is no admin web panel and no frontend JS. Everything is server-rendered.

Built on FastAPI, Typer, Jinja2 and sqlcipher3. Built with uv, ruff and ty.

Source

The real repository is on Codeberg.

Github and personal Forgejo are automated mirrors of Codeberg.

Security features:

  • Mandatory DB encryption
  • Password-protected pastes (Content encrypted with XSalsa20-Poly1305 under a key derived via Argon2id)
  • One-time-read pastes (like 1ty.me)
  • TTL (pastes can be set to be deleted automatically after N seconds)
  • Configurably long cryptographically secure random IDs for pastes

Quickstart

Docker

See Running with Docker

NixOS

See NixOS options

Proxy

See Running behind a reverse proxy

Development | Building from source

With nix:

git clone https://codeberg.org/vladzodchey/chancery.git chancery && cd chancery
nix develop
chancery

Without nix:

git clone https://codeberg.org/vladzodchey/chancery.git chancery && cd chancery
uv venv && uv sync
chancery

AI

I used LLMs to help scout dependency documentation and usage examples. Chancery's code is hand-written and held up to the security standards I'm aware of. Non-slop PRs welcome.

Versions 0.2.0 and down

As about three or so people can know, this is not the first attempt at making Chancery. Not even the second. But the previous attempts were so unsuccessful I decided to do a full rewrite with a new repo.