summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Sepulveda <javier.sepulveda@uv.es>2023-11-28 22:44:24 +0100
committerJavier Sepulveda <javier.sepulveda@uv.es>2023-11-28 22:44:44 +0100
commit0592e9cf42ffeb6f3d4b33642071cf44de712c00 (patch)
tree0dceb429b8ed7d9450231ba99cdcf08736c16d7c
parentda17f801f69320fa4cb7a133b01b299032abf85e (diff)
downloaddocs-0592e9cf42ffeb6f3d4b33642071cf44de712c00.tar.gz
docs-0592e9cf42ffeb6f3d4b33642071cf44de712c00.tar.bz2
docs-0592e9cf42ffeb6f3d4b33642071cf44de712c00.zip
Minor improvement and typo correction
-rw-r--r--libeufin/#regional-manual.rst#246
-rw-r--r--libeufin/regional-manual.rst11
2 files changed, 253 insertions, 4 deletions
diff --git a/libeufin/#regional-manual.rst# b/libeufin/#regional-manual.rst#
new file mode 100644
index 00000000..345c4403
--- /dev/null
+++ b/libeufin/#regional-manual.rst#
@@ -0,0 +1,246 @@
+.. target audience: operator
+
+Regional Currency Setup Manual
+##############################
+
+.. contents:: Table of Contents
+
+GNU Taler can be used to operate a regional currency. For this, LibEuFin Bank
+is setup to operate bank accounts in the regional currency that ultimately
+interact with the GNU Taler exchange. Optionally, LibEuFin Nexus be used to
+integrate with the traditional core banking system, and then the LibEuFin
+Conversion triggers help convert fiat currency to regional currency and vice
+versa. Conversion rates and limits can be applied when converting between
+the regional currency and the fiat currency.
+
+
+In this manual, we explain how to setup such a regional currency.
+
+
+Guided basic setup
+==================
+
+Prerequisites
+-------------
+
+For this manual, we assume that the system is deployed on a contemporary
+Debian GNU/Linux or Ubuntu LTS system using the binary packages provided.
+Furthermore, you should run the process on a system with one or more globally
+reachable IP address(es) *and* with various DNS names already pointing to
+these IPs.
+
+To further simplify the process, we suggest to use (or at least study) the
+automatic deployment scripts provided in the ``deployment.git`` Git repository
+in the ``netzbon/`` folder.
+
+
+Obtaining the scripts
+---------------------
+
+First, download the deployment scripts via Git:
+
+.. code-block:: console
+
+ $ git clone git://git.taler.net/deployment
+
+Guided Configuration
+--------------------
+
+Navigate into the *netzbon/* directory, and as **root** run:
+
+.. code-block:: console
+
+ # ./main.sh
+
+The script will start by asking you fundamental questions about the
+desired setup, in particular:
+
+ * The name of the regional currency. It must have 3 to 11 letters.
+ * The name of the regional currency bank. It will be shown to business
+ users when they interact with the system.
+ * Whether to use TLS. You should answer ``y`` in most cases.
+ * Whether to run taler-exchange-offline. Unless you need a high-security
+ setup and expect to run an offline key management process, say ``y``.
+ If you say ``n``, you will need to run ``taler-exchange-offline setup``
+ on your offline system and provide the master public key. Furthermore,
+ you should then study the exchange manual on
+ offline key management to finish the exchange setup process later.
+ * The admin password for the bank. Be absolutely sure to enter a very,
+ very long and high-entropy password, preferably generated by a tool
+ like "uuidgen".
+ * The DNS domain name of your setup (i.e: domain.tld). The installer will
+ create by itself all the needed subdomains for your domain name,
+ as (``bank.$DOMAIN``, ``exchange.$DOMAIN`` and ``backend.$DOMAIN``). But these
+ subdomain names, must have been added before to your DNS domain control panel , and furthermore, they must be pointing to the IP address of your server of the system on which you are running the installation (before you execute the installer)).
+
+The information you entered will be stored in a file called
+``config/user.conf``. Should you run the script in the future (for
+example, to upgrade the installation), you will not be asked these
+questions a second time.
+
+After answering all of the questions, the actual installation will
+start. The scripts will download and configure various packages,
+which may take some time. Grab a coffee.
+
+Connecting to a Fiat Bank
+=========================
+
+Some regional currencies are backed by assets in a fiat currency
+and allow users to convert fiat currency into the regional
+currency (``cash in``) and to convert regional currency into
+fiat currency (``cash out``). Restrictions, exchange rates and
+fees may apply to these conversions. This section explains how
+to setup LibEuFin Nexus to communicate with the fiat bank account
+that backs the regional currency.
+
+Prerequisites
+-------------
+
+You must have a bank account at a bank dealing in fiat currency that offers an
+online banking protocol supported by LibEuFin Nexus. As legacy transactions
+in that bank account would likely confuse the system, it is highly advised to
+use a fresh account with an empty transaction history.
+
+Today, the LibEuFin implementation supports EBICS 2.5 and 3.0 and has been
+tested with the GLS Bank (EUR) and the Postfinance (CHF). Please note that
+banks tend to have their own dialects of finance messages and thus other
+retail banks may or may not work. Contact us, if you need support for another
+bank or core banking protocol.
+
+EBICS setup
+-----------
+
+Follow the instructions from
+:ref:`EBICS subscriber setup <ebics-setup>` to
+configure the LibEuFin Nexus for access to your
+fiat bank account.
+
+Once you have accepted the bank keys, you should
+setup currency conversion before actually starting
+to import transactions.
+
+
+
+Enable regional currency conversion
+===================================
+
+Prerequisites
+-------------
+
+This step assumes that you already have a working regional currency bank
+and have successfully connected to a backing fiat bank account.
+
+Additionally, for each account that is allowed to convert regional currency
+into fiat, you must configure the (fiat) bank account number of the fiat
+currency with the respective account profile. Only the bank ``admin`` is
+allowed to set fiat bank account numbers.
+
+Furthermore, to achieve a reasonable security level, you must enable two
+factor authentication for "cash out" transactions. This requires you to
+configure an e-mail address or phone number for every account that supports
+"cash out" transactions --- and to setup your system for sending e-mails or
+SMS. This manual does not cover setting up e-mail. For SMS delivery, you will
+need to obtain credentials from an SMS provider and provide a script to send
+messages via such a provider.
+
+Configuration
+-------------
+
+You have to enable conversion and at least one TAN channel for cashout in the
+``/etc/libeufin/libeufin-bank.conf`` configuration file:
+
+.. code-block:: console
+
+ [libeufin-bank]
+ ALLOW_CONVERSION = yes
+
+ TAN_SMS = libeufin-tan-sms.sh
+ # And/Or
+ TAN_EMAIL = libeufin-tan-email.sh
+
+Afterwards, restart the bank:
+
+.. code-block:: console
+
+ # systemctl restart libeufin-bank
+
+
+Web-based Configuration
+-----------------------
+
+Now you should be able to setup conversion rates though the Web
+interface of the bank as the ``admin`` user.
+
+
+Conversion ON!
+--------------
+
+The last step is to enable the Nexus services to import incoming bank
+transactions (cash in) and to trigger outgoing bank transactions (cash out):
+
+.. code-block:: console
+
+ # systemd enable --now libeufin-nexus-ebics-fetch
+ # systemd enable --now libeufin-nexus-ebics-submit
+
+
+Going live!
+===========
+
+Exchange setup
+--------------
+
+First, you need to use the ``taler-exchange-offline`` tool to inform the
+exchange about the fiat bank account that can be used for cash in operations
+and also specify the URL for currency conversion. Additionally, you may also
+configure restrictions on the bank accounts that may originate the funds, for
+example to prevent international wire transfers that may expose you to
+additional compliance risks.
+
+Given the ``$IBAN`` of the fiat currency bank account and ``$NAME`` as
+the (URL-encoded) name of the exchange-account owner, the following
+``taler-exchange-offline`` invocation can be used to notify wallets about
+the possibility of currency conversion (cash in):
+
+.. code-block:: console
+
+ # taler-exchange-offline \
+ enable-account \
+ payto://iban/$IBAN?receiver-name=$NAME \
+ conversion-url "$CONVERSION_URL" \
+ upload
+
+Here, the ``$CONVERSION_URL`` must be set to the base URL of the conversion
+endpoint of the bank, which should be ``https://bank.$DOMAIN/conversion-info/``
+in our setup.
+
+
+Wallet setup
+------------
+
+Next, you need to add your regional currency exchange to the wallet. This can
+be done by scanning a QR code with a ``taler://add-exchange/exchange.$DOMAIN``
+URL or by manually entering the URL into the respective ``Add exchange``
+dialogue.
+
+With this, you should then be able to ``add`` funds in the regional currency
+to your exchange by starting the withdraw process in the wallet. After
+specifying the desired amount, the wallet should show you the details of the
+fiat wire transfer that must be made for the cash in to be completed. Once the
+money has arrived at the fiat bank account, Nexus will obtain the transaction
+data and the regional currency bank will create the corresponding amount in
+regional currency, crediting the GNU Taler exchange account. In turn, the
+exchange will issue the respective amount to your wallet.
+
+For testing, you should be able to *deposit* regional currency directly
+into a LibEuFin Bank account from the Taler wallet. Once the exchange
+has credited the reginal currency account, log into the bank account
+using the Web interface. Assuming the cash out rules are satisfied, you
+should then be able to start a cash out operation. This will trigger a
+transfer from your regional currency account to the regional currency
+master ``bank`` account which will effectively destroy the respective
+amount of regional currency. The conversion triggers will inform Nexus
+about the destruction and Nexus will then wire the corresponding amount
+in fiat to the associated fiat bank account.
+
+
diff --git a/libeufin/regional-manual.rst b/libeufin/regional-manual.rst
index d072b30a..548ce24a 100644
--- a/libeufin/regional-manual.rst
+++ b/libeufin/regional-manual.rst
@@ -68,10 +68,13 @@ desired setup, in particular:
* The admin password for the bank. Be absolutely sure to enter a very,
very long and high-entropy password, preferably generated by a tool
like "uuidgen".
- * The DNS domain name of your setup. Various sub-domains (specifically,
- ``bank.$DOMAIN``, ``exchange.$DOMAIN`` and ``backend.$DOMAIN`` must
- already exist and point to the public IP address of the system on which
- you are running the installation).
+ * The DNS domain name of your setup (i.e: domain.tld). The installer will
+ create by itself all the needed subdomains for your domain name,
+ as (``bank.$DOMAIN``, ``exchange.$DOMAIN`` and ``backend.$DOMAIN``).
+ But, these subdomain names, must have been added beforehand to your
+ DNS domain control panel , and they must be pointing to the
+ IP address of the system on which you are running the
+ installation (before you execute the installer)).
The information you entered will be stored in a file called
``config/user.conf``. Should you run the script in the future (for