sync

Backup service to store encrypted wallet databases (experimental)
Log | Files | Refs | Submodules | README | LICENSE

README (3761B)


      1 About SYNC
      2 ----------
      3 
      4 
      5 Sync implements an HTTP server that allows clients to backup data.
      6 Envisioned use-cases are the creation of backups for Taler wallets and
      7 (GnuPG) key rings and other small but essential sensitive information.
      8 
      9 
     10 Accountability:
     11 ===============
     12 
     13 Client accounts are identified by a public key. For each client, at
     14 most one backup can be stored at any given point in time.  To create
     15 an account, the service may require payment using GNU Taler when the
     16 first upload is attempted.
     17 
     18 
     19 Availability:
     20 =============
     21 
     22 The Sync service may impose a limit on the maximum size of the backup
     23 that is supported.  The /terms API lists the specific terms of
     24 service, including the maximum size and the payment required for a
     25 year of backup service.
     26 
     27 
     28 Integrity:
     29 ==========
     30 
     31 All uploads must be signed with the respective private key of the
     32 account.  Clients must know their public key to download the latest
     33 backup.
     34 
     35 
     36 Confidentiality:
     37 ================
     38 
     39 Clients are responsible for confidentiality and key management.
     40 All data uploaded should be encrypted by the client first.
     41 For key management, please consider Anastasis.
     42 
     43 
     44 Consistency:
     45 ============
     46 
     47 Uploads that replace an existing backup must acknowledge the previous
     48 version by including the hash of the previous version in the backup
     49 request. This ensures that multiple clients working on the same
     50 account never accidentally overwrite data from another client.
     51 
     52 
     53 Usability:
     54 ==========
     55 
     56 Sync uses a simple REST-based API documented at
     57 https://docs.taler.net/.
     58 
     59 
     60 Operation:
     61 ==========
     62 
     63 Sync does at this time not include HTTPS support. While this could
     64 be trivially added, we expect Sync to be run behind a reverse proxy
     65 that terminates TLS.
     66 
     67 At this time, Sync only works with a Postgres database. Other database
     68 backends could easily be written in the future.
     69 
     70 
     71 Installation
     72 ============
     73 
     74 See INSTALL.md for generic installation instructions.  In addition, Sync
     75 requires the GNUnet, GNU Taler Exchange and GNU Taler Merchant libraries.
     76 If these are installed in a non-standard place, use the configure script
     77 options --with-gnunet=DIR, --with-exchange=DIR, and --with-merchant=DIR,
     78 respectively (or set PKG_CONFIG_PATH accordingly for Meson).
     79 
     80 The build system is Meson (via the 'configure' wrapper): use
     81 `./bootstrap` to fetch the documentation submodule, then
     82 `./configure --prefix=DIR` / `make` / `make install` as usual,
     83 or drive meson directly.
     84 
     85 The main daemon is `sync-httpd2`, an HTTP backend built on the new
     86 libmicrohttpd2 API.  It is configured via /etc/sync/sync.conf (or the
     87 prefix-relative data dir when built with --prefix; run `sync-config`
     88 to find the effective paths).  Use the `sync-dbconfig` script (and
     89 `sync-dbinit`) to set up the PostgreSQL database and the
     90 `sync-config` tool to inspect and modify the configuration.
     91 
     92 The following are likewise required:
     93 
     94   libmicrohttpd  (version 2.x, the MHD2 API)
     95   PostgreSQL
     96 
     97 Other non-essential dependencies are indicated by --with-FOO
     98 in the "./configure --help" output.
     99 
    100 
    101 Dependencies:
    102 =============
    103 
    104 Build tools for compiling Sync from source:
    105 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    106 
    107 - gcc or clang
    108 - meson >= 1.1.0
    109 - ninja
    110 - make
    111 - pkgconf or pkg-config
    112 - python3 (with jinja2 for generating the SQL procedures)
    113 - makeinfo (optional, for texinfo manuals)
    114 
    115 
    116 Direct dependencies
    117 ~~~~~~~~~~~~~~~~~~~
    118 
    119 These are the direct dependencies for running Sync:
    120 
    121 - GNU Taler exchange libraries >= 1.5.0
    122 - GNU Taler merchant libraries >= 1.5.0
    123 - GNUnet libraries >= 0.27.0
    124 - libmicrohttpd 2.x
    125 - PostgreSQL      >= 15.0
    126 - jansson, libgcrypt, zlib, libcurl
    127 
    128 
    129 License:
    130 ========
    131 
    132 Sync is released under the Affero GPL v3 or later.
    133 
    134 The primary source code is maintained at https://git.taler.net/sync.git
    135 by the GNU Taler team.
    136 See ChangeLog.