selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Condensation logo

Self-host Condensation

Open-source distributed data system with conflict-free sync

BetaOpen SourceApache-2.0
Updated3 years ago
Setup difficultyModerate
Stars
442
Install with Linux

What is Condensation?

Condensation is a general-purpose distributed data system aimed at developers who want applications where users keep ownership of their data. It organises data locally into flexible documents, turns each document into an immutable chain of hashed objects, and merges copies with a join-semilattice merge function, so synchronization never produces conflicts and only recent changes cross the network. Encryption and signing happen inside the application, which means whatever backend you point it at - a directory store, a PHP HTTP store on files or MySQL/MariaDB, a small FTP server or a public cloud - only ever sees ciphertext. You can run your own store by installing the downloadable PHP store scripts (store.php plus an admin.php) behind a web server, by starting an HTTP store server with the cds command-line tools, or by using the folder store, which needs no store server at all. Client libraries are listed for Perl (command line), JavaScript (web) and Java for Android, the last of which is not published yet; the README says the Java implementation is stable but still being packaged, the website calls itself work in progress, and the repository was last pushed in 2022, so treat it as an experimental foundation rather than a turnkey service.

Should you self-host Condensation?

Condensation scores 40/100 on selfhost.directory (how scoring works) and ranks #35 of 38 in Databases. It has 442 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. It is Apache-2.0-licensed.

Its closest alternative on selfhost.directory is Redis (86/100, 77 142 stars). It scores higher overall, so compare the two before you pick. See Condensation vs Redis side by side.

Features

  • Conflict-free synchronization
  • Data integrity via hashing and digital signatures
  • Distributed architecture without central server
  • End-to-end encryption
  • Federated deployments
  • HTTP/REST store API
  • Incremental synchronization (only changes transferred)
  • Lock-free transactions
  • Passwordless key-based identity
  • Peer-to-peer synchronization (offline-first)
  • Pluggable storage backends (folder, HTTP, FTP, cloud)
  • Versioning
  • Zero Configuration

Condensation README

How to install Condensation

Install Condensation with Linux

any PHP-enabled web server

Copy the scripts into onto your web server, and configure the store folder in configuration.inc.php.

HTTP store variant that keeps accounts and objects on the file system; the package contains store.php and an admin.php admin interface that must not be publicly accessible.

How to configure Condensation

  • configuration.inc.phpPHP file where the PHP store packages are configured: the store folder for the file-system variant, the database connection for the MySQL/MariaDB variant.

    PHP file where the PHP store packages are configured: the store folder for the file-system variant, the database connection for the MySQL/MariaDB variant.

  • PATH_INFOOptional server variable giving the sub path; if it is not available the sub path is derived from the request URI.

    Optional server variable giving the sub path; if it is not available the sub path is derived from the request URI.

  • REQUEST_METHODServer variable the store/admin PHP scripts read: the HTTP request method, in uppercase letters (e.g. GET).

    Server variable the store/admin PHP scripts read: the HTTP request method, in uppercase letters (e.g. GET).

  • REQUEST_URIServer variable the store/admin PHP scripts read: the full path, e.g. /path/to/admin.php/accounts/

    Server variable the store/admin PHP scripts read: the full path, e.g. /path/to/admin.php/accounts/

More in Distributed Systems

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…