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.