- Rust 92.4%
- Nix 7.3%
- HTML 0.2%
|
|
||
|---|---|---|
| .cargo | ||
| .github | ||
| attic | ||
| book | ||
| client | ||
| flake | ||
| integration-tests | ||
| nixos | ||
| server | ||
| token | ||
| .editorconfig | ||
| .envrc | ||
| .gitattributes | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| crane.nix | ||
| default.nix | ||
| flake-compat.nix | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
| renovate.json | ||
| shell.nix | ||
Celler
Celler is a self-hostable Nix Binary Cache server backed by an S3-compatible storage provider. It has support for global deduplication and garbage collection.
Relationship to Attic
Celler is a fork of Attic. We love Attic for its design, clear code and ease-of-use, but found it lacking for production setups. The current delta to between Celler and Attic is:
- ✅ Updated all dependencies.
- ✅ Remove C++ bindings to
libnixstore. - ✅ Simplified Nix and CI setup
- ✅ Use pure Rust code to talk to the Nix daemon.
We are also interested in the following features and will work on them as time permits.
- Prometheus Metrics for requests, duration of requests, NAR file size, chunk size, etc.
- Request logging
- Integration into Single-Sign On via OpenID Connect.
We are also open to contributions. In case you want to contribute a major feature, please involve us in the design!
Try it out (15 minutes)
Let's spin up Celler in just 15 minutes. And yes, it works on macOS too!
Goals
- Multi-Tenancy: Create a private cache for yourself, and one for friends and co-workers. Tenants are mutually untrusting and cannot pollute the views of other caches.
- Global Deduplication: Individual caches (tenants) are simply restricted views of the content-addressed NAR Store and Chunk Store. When paths are uploaded, a mapping is created to grant the local cache access to the global NAR.
- Managed Signing: Signing is done on-the-fly by the server when store paths are fetched. The user pushing store paths does not have access to the signing key.
- Scalabilty: Celler can be easily replicated. It's designed to be deployed to serverless platforms like fly.io but also works nicely in a single-machine setup.
- Garbage Collection: Unused store paths can be garbage-collected in an LRU manner.
Licensing
Celler is available under the Apache License, Version 2.0.
See LICENSE for details.
By contributing to the project, you agree to license your work under the aforementioned license.
Contact
Chat with us on Matrix: #ctrl-os:cyberus-technology.de
For commercial support, reach out to Cyberus Technology.