# reedb **Repository Path**: mirrors_saces/reedb ## Basic Information - **Project Name**: reedb - **Description**: :lock: Secure local file database to protect user data - **Primary Language**: Unknown - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Reedb ===== :lock: Spicy ruby database that puts security first. Maybe storage containers might be a better word. Reedb allows you to store sensitive user information in so called vaults in encrypted form. Vaults store information on a file-by-file basis and are easy to sync across different systems as they are just folders with a fancy name. Made for native application development. Using LibGCrypt in the background, can be used via C++ & Ruby bindings or via an HTTP(s) server on `localhost` to use any language and framework you want. Proudly powering [Reepass] - (and others). Installation ------------ Reedb can be installed on a variety of ways. As it is primarilty written in Ruby it can easily be installed via Rubygems. The latest stable version is always uploaded to www.rubygems.org. `gem install reedb` To get unstable/ development versions either use the `--pre` parameter for gem or clone this repo's develop branch. `git clone -b develop https://github.com/tr-lonelyrobot/reedb.git` End-user packages as well as binary installers are provided. Check out the wiki [here] to get instructions on how to install. Please note that Reedb is both distributed as packages for different Linux distributions and self contained archives (with a Ruby interpreter and all the dependencies in it). For the latter version there is an updater that can be found (TODO: Create updater :) ) Usage ----- At it's core Reedb provides a simple interface to store information (text, bytestreams, etc) on the filesystem in encrypted form. With that in mind it is possible to use Reedb as both a library and a daemon. As a library there is a Ruby interface and C/C++ bindings in the planning/ making and you are thus restricted to the use of either one of those languages. When developing in a different language Reedb can run on a user system as a daemon that runs a very minimal HTTPs server and provides a RESTful API to exchange information with your application. To find out how to use Reedb in either of those ways, please check the [wiki] for details. FAQ --- Here are some questions that we get asked frequently. --- **Q: How does Reedb work?** A: Reedb takes information (usually json), encrypts it and writes it to a file in a vault. At it's core, that's it. In addition to that it also provides interfaces to get the data back ( which is sometimes non-optional ) and do data integrety checking as well as data versioning and merge conflict resolution (the way git does just a *lot* simpler) --- **Q: What kind of database is Reedb?** A: Reedb is a file-based database that is addressed by a UUID by applications but can be found under a name and path on the filesystem. (Vaults are folder that have a .reevault suffix). This way it makes integration into other services easy and convenient. --- **Q: What encryption does Reedb use?** A: Primarily Reedb uses the 256-bit version of Rijndael but can easily be setup to use other ciphers (e.g. Twofish or Serpent). The encryption is handled by the GCrypt library which provides the backend to the GnuPG. Asymmetric encryption (RSA) is in the planning stage. Integrety checking and file control is done with SHA-256 hashes and filenames are salted 192-bit Tiger hashes. When using Reedb via the HTTP interface HTTPs keys and certificates are generated by the 'server'. --- **Q: Shouldn't it be camel-case?** A: No. Reedb is written without camel case. Because the combination of the letters 'd' and 'b' looks too awesome. 'db' => Reedb. End of discussion. --- **Q: I want to contribute to Reedb** A. Great. Check out the wiki first to really understand what Reedb does, maybe poke around the issue tracker for ideas of what is currently still missing. Fork this repo, implement and then create a merge-request. So far all of them have been accepted :) [Reepass]: https://github.com/tr-lonelyrobot/reepass [here]: https://github.com/tr-lonelyrobot/reedb/wiki/binaries [wiki]: https://github.com/tr-lonelyrobot/reedb/wiki