taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 6177e079abc5f73466bc2ac7d4151640d9c981ea
parent 1f63718499ff7ca1acc860e01d4652f36b2eead5
Author: Antoine A <>
Date:   Wed, 29 Jul 2026 17:05:00 +0200

add taler-wise manual

Diffstat:
Mtaler-exchange-manual.rst | 4+++-
Ataler-wise-manual.rst | 310+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 313 insertions(+), 1 deletion(-)

diff --git a/taler-exchange-manual.rst b/taler-exchange-manual.rst @@ -176,7 +176,9 @@ components: implements a wire adapter towards the Magnet Bank API. (4) **taler-cyclos** component implements a wire adapter towards the Cyclos API. - (5) To use GNU Taler with blockchains, the **Depolymerization** + (5) **taler-wise** component + implements a wire adapter towards the Wise API. + (6) To use GNU Taler with blockchains, the **Depolymerization** component provides a wire gateway API that runs on top of blockchains like Bitcoin and Ethereum. diff --git a/taler-wise-manual.rst b/taler-wise-manual.rst @@ -0,0 +1,309 @@ +.. + This file is part of GNU TALER. + Copyright (C) 2026 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU Affero General Public License as published by the Free Software + Foundation; either version 3.0, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + + @author Antoine d'Aligny + @author Christian Grothoff + + +Wise Adapter Setup Manual +########################### + +taler-wise is a Wise Taler adapter. It allows running a GNU Taler exchange +on top of a core banking system provided by Wise, which is commonly +used for regional currencies. taler-wise implements the +taler-wire-gateway API, which is alternatively provided by the +:ref:`libeufin-bank <libeufin-bank>` (stand-alone), +:ref:`libeufin-nexus <libeufin-nexus>` (EBICS integration) or the +:ref:`Deploymerizer <depolymerization>` (for Bitcoin and Ethereum). + +.. image:: images/taler-wise.png + +To use the adapter, you must setup an account for the GNU Taler exchange +in Wise and configure the adapter with the respective +credentials. Furthermore, you must point the GNU Taler exchange to the +taler-wise adapter as its taler-wire-gateway (and again provide the +necessary credentials). + +Afterwards, taler-wise will inform your GNU Taler exchange about +transfers to the GNU Taler exchange account, +allowing users to withdraw digital cash by sending money. + +This manual targets system administrators who want to install and +operate a Wise GNU Taler adapter. + +.. warning:: + + This adapter is read-only. It cannot perform transfer or bounce malformed transactions. + + +.. contents:: Table of Contents + :depth: 1 + :local: + +Installation +============ + +Installing on Debian +-------------------- + +.. include:: frags/installing-debian.rst + +To install the adapter, you can now simply run: + +.. code-block:: shell-session + + # apt install taler-wise + +Installing on Ubuntu +-------------------- + +.. include:: frags/installing-ubuntu.rst + +To install the adapter, you can now simply run: + +.. code-block:: shell-session + + # apt install taler-wise + +Building from source +-------------------- + +Cyclos Adapter belongs to the Taler Rust project, and can be downloaded via Git: + +.. code-block:: console + + $ git clone git://git.taler.net/taler-rust + $ cd taler-rust + +You will need the latest version of the rust stable toolchain and a C toolchain: + +.. code-block:: console + + $ sudo apt install rustup build-essential + $ rustup toolchain install stable + +Then from top-level run: + +.. code-block:: console + + $ ./bootstrap + +To install the adapter as a Debian/Ubuntu package with an automated secure setup and systemd services: + +.. code-block:: console + + $ sudo apt install debhelper + $ make deb + $ sudo dpkg -i ../taler-wise*.deb + +If the previous steps succeeded, the ``taler-wise`` command should be found in the $PATH. + +Services, users, groups and file system hierarchy +------------------------------------------------- + +The *taler-wise* package will create several system users +to compartmentalize different parts of the system: + +* ``taler-wise-httpd``: runs the HTTP daemon with the API logic. +* ``taler-wise-worker``: runs the worker daemon interacting with the Wise API. +* ``postgres``: runs the PostgreSQL database (from *postgresql* package). + +The adapter setup uses the following system groups: + +* ``taler-wise-db``: group for all adapter users with direct database access, specifically taler-wise-httpd and taler-wise-worker. + +The package will deploy systemd service files in +``/usr/lib/systemd/system/`` for the various components: + +* ``taler-wise-httpd.service``: adapter REST API. +* ``taler-wise-httpd.socket``: systemd socket activation for the HTTP daemon. +* ``taler-wise-worker.service``: worker daemon interacting with the Wise API. +* ``taler-wise.target``: main target for the adapter to be operational. + +The deployment creates the following key locations in the system: + +* ``/etc/taler-wise/``: configuration files. +* ``/run/taler-wise/``: contains the UNIX domain sockets for inter-process communication (IPC). + +Configuration Fundamentals +========================== + +This chapter provides fundamental details about the adapter configuration. + +The configuration for all adapter components uses a single configuration file +as entry point: ``/etc/taler-cyclos/taler-wise.conf``. + +System defaults are automatically loaded from files in +``/usr/share/taler-wise/config.d``. +These default files should never be modified. + +The default configuration ``taler-wise.conf`` configuration file +also includes all configuration files in ``/etc/taler-wise/conf.d``. +The settings from files in +``conf.d`` are only relevant to particular components of an adapter, while +``taler-wise.conf`` contains settings that affect all adapter components. + + +The directory ``/etc/taler-wise/secrets`` contains configuration file snippets with +values that should only be readable to certain users. They are included with the ``@inline-secret@`` +directive and should end with ``.secret.conf``. + +To view the entire configuration annotated with the source of each configuration option, you +can use the ``taler-wise config`` helper: + + +.. code-block:: shell-session + + # taler-wise config dump --diagnostics + +Basic Setup +=========== + +Database setup +-------------- + +The configuration file must include a connection string that tells the adapter how it should connect to the database. The default +is: + +.. code-block:: ini + :caption: /etc/taler-wise/secrets/wise-db.secret.conf + + [wisedb-postgres] + config = postgres:///taler-wise + +If the database is run on a different host, please follow the instructions +from the PostgreSQL manual for configuring remote access. + +Assuming the configuration is correct, the following +command initializes (or upgrades) the database schema using: +You can then use a script to automate a secure database setup: + +.. code-block:: console + + # taler-wise-dbconfig + +Worker setup +------------ + +You will need a Wise account to sync. +Update the configuration files: + +.. code-block:: ini + :caption: /etc/taler-wise/secrets/wise-worker.secret.conf + + [wise-worker] + TOKEN = 4e6a7a34-8f20-4376-912f-8c679b6b4fda + +And then run the setup process: + +.. code-block:: console + + $ sudo -u taler-wise-worker taler-wise -c /etc/taler-wise/taler-wise.conf setup + +The setup process should fail and provide you with the information needed to fill in the required Wise profile information: + +.. code-block:: ini + :caption: /etc/taler-wise/taler-wise.conf + + [wise] + NAME = John Smith S.A. + +.. code-block:: ini + :caption: /etc/taler-wise/conf.d/wise-worker.conf + + [wise-worker] + PROFILE_ID = 77620708 + +The setup process should fail and provide you with the information needed to fill the Wise balances information: + +.. code-block:: ini + :caption: /etc/taler-wise/conf.d/wise-worker.conf + [wise-balance-eur] + ID = 139524631 + CURRENCY = EUR + PAYTO_TYPE = iban + IBAN = GB82WEST12345698765432 + BIC = TRWIBEB1XXX + +And finally run the setup process again: + +.. code-block:: console + + $ sudo -u taler-wise-worker taler-wise -c /etc/taler-wise/taler-wise.conf setup + +This time, you should not see any errors; if you do, you should modify the configuration until it works. + +Wire Gateway setup +------------------ + +Update the configuration files: + +.. code-block:: ini + :caption: /etc/taler-wise/conf.d/wise-httpd.conf + + [wise-httpd-wire-gateway-api] + ENABLED = YES + +.. code-block:: ini + :caption: /etc/taler-wise/secrets/wise-httpd.secret.conf + + [wise-httpd-wire-gateway-api] + AUTH_METHOD = bearer + TOKEN = $SECRET_TOKEN + +Check the server is correctly configured: + +.. code-block:: console + + $ sudo -u taler-wise-httpd taler-wise -c /etc/taler-wise/taler-wise.conf serve --check + +Deployment +========== + +This chapter describes how to deploy the adapter once the basic installation +and configuration are completed. + +Reverse Proxy Setup +------------------- + +By default, the ``taler-wise-httpd`` service listens for HTTP connections +on a UNIX domain socket. To make the service publicly available, a reverse +proxy such as nginx should be used. We strongly recommend to configure nginx +to use TLS. + +The ``taler-wise`` package ships with a sample configuration that can be +enabled in nginx: + +.. code-block:: shell-session + + # vim /etc/nginx/sites-available/taler-wise + < ... customize configuration ... > + # ln -s /etc/nginx/sites-available/taler-wise /etc/nginx/sites-enabled/taler-wise + # systemctl reload nginx + +With this last step, we are finally ready to launch the +main adapter process. + +Launching the adapter +--------------------- + +.. code-block:: console + + # systemctl enable --now taler-wise.target + +Use adapter APIS +---------------- + +The adapter expose the :ref:`Adapter API <adapter-api>` for each configured balance prefixes by ``/balances/{BALANCE_ID}/``. +\ No newline at end of file