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.