sync

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

README (3141B)


      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 for generic installation instructions.  In addition, Sync
     75 requires GNUnet, Taler Exchange, and Taler Merchant libraries.  If these
     76 are installed in a non-standard place, use the configure script options
     77 --with-gnunet=DIR, --with-exchange=DIR, and --with-merchant=DIR,
     78 respectively.
     79 
     80 The following are likewise required:
     81 
     82   libmicrohttpd --with-microhttpd=DIR
     83   PostgreSQL    --with-postgresql=PATH-TO-PG-CONFIG
     84 
     85 Other non-essential dependencies are indicated by --with-FOO
     86 in the "./configure --help" output.
     87 
     88 
     89 Dependencies:
     90 =============
     91 
     92 Build tools for compiling Sync from source:
     93 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     94 
     95 - gcc or clang
     96 - autoconf           >= 2.69        (building from git)
     97 - automake           >= 1.11.1      (building from git)
     98 - recutils           >= 1.0         (building from git)
     99 - libtool            >= 2.2
    100 - makeinfo           >= 4.8
    101 - make[*3]
    102 - pkgconf or pkg-config
    103 - sphinx
    104 - sphinx-rtd-theme
    105 - sphinx-multiversion
    106 
    107 
    108 Direct dependencies
    109 ~~~~~~~~~~~~~~~~~~~
    110 
    111 These are the direct dependencies for running Sync:
    112 
    113 - GNU Taler merchant >= 0.14.0
    114 - PostgreSQL         >= 15.0
    115 
    116 
    117 License:
    118 ========
    119 
    120 Sync is released under the Affero GPL v3 or later.
    121 
    122 The primary source code is maintained at https://git.taler.net/sync.git
    123 by the GNU Taler team.