View Issue Details

IDProjectCategoryView StatusLast Update
0010802Talerdeployment and operationspublic2026-02-10 14:08
Reportervecirex Assigned Tovecirex  
PriorityhighSeveritytextReproducibilityalways
Status closedResolutionfixed 
Summary0010802: For TOPS/CHF (test and deployment): ToS missing [workaround could be confirmed to work]
DescriptionTicket 0010711, but for taler.hacktivism.ch and my.taler-ops.ch: I got instructions from fdold how to do this properly.

This should go like this; to /etc/taler-merchant/merchant-overrides.conf add this to the section shown:

[merchant]
TERMS_ETAG = merchant-tos-tops-v0
TERMS_DIR = ${TALER_DATA_HOME}terms/

Then, this:

$ taler-terms-generator -i /usr/share/taler-merchant/terms/merchant-tos-tops-v0.en.rst -o "$(taler-merchant-config -f -s merchant -o terms_dir)"
TagsNo tags attached.

Relationships

related to 0010711 closedsebasjm Taler Merchant Backoffice UI: Terms of service unavailable 
related to 0011015 resolvedChristian Grothoff Taler taler-terms-generator does not work without full exchange package 
related to 0010970 resolvedvecirex Taler Link to terms broken in Merchant BackOffice 

Activities

vecirex

2025-12-17 23:41

manager   ~0027093

Last edited: 2025-12-17 23:43

Meh, installing the taler-exchange as a whole just to get taler-exchange-config seems overkill, esp. in production env:

taler-merchant-httpd@bcead3ae4f5e:/usr/local/bin$ taler-terms-generator -i /usr/share/taler-merchant/terms/merchant-tos-tops-v0.en.rst -o "$(taler-merchant-config -f -s merchant -o terms_dir)"
/usr/bin/taler-terms-generator: line 29: taler-exchange-config: command not found

Must look into this after sleep, to avoid messing up setups now! :)

vecirex

2025-12-17 23:48

manager   ~0027094

Possible solution could be to get the tool from an installation where taler-exchange gets installed, getting it from there when needed.

vecirex

2025-12-18 20:30

manager   ~0027104

Last edited: 2025-12-18 20:39

Any objection to this, Florian?

I think the best solution would be to have taler-exchange-config as a separate package, mid-term / later.

For now, I suggest the following:

1. Install taler-exchange in, e.g., a minimal podman instance.
2. Make taler-exchange-config available for the outer or other containerized system only configured to run a taler-merchant, then run your command above to generate the ToS files; if libs are needed, those can of course be installed, but the whole taler-exchange is seriously overkill; also having custom compiles around... well, ehm, not in production perhaps?
3. If ToS change, upgrade the env having the taler-exchange package installed and thus taler-exchange-config available, repeat 2.

I will try this approach for taler.hacktivism.ch first, installing, e.g., taler-exchange to a podman instance, if you think that's fine / you don't oppose / ship another solution which is also good for a production env.

Florian Dold

2025-12-19 13:12

manager   ~0027133

That's going way over board, we just need to fix taler-terms-generator to not invoke taler-exchange-config anymore, it's just used for getting defaults for various switches in the first place.

vecirex

2025-12-20 10:46

manager   ~0027145

Last edited: 2025-12-20 10:48

It is, and CG went for doing that taler-exchange-config alone (with respective deps) can be installed as a dependency to taler-merchant in next upgrade, so that no further changes are needed.

On my side, I go for installing taler-exchange in a container and generate the ToS there; given I wanted to start taler-exchange testing for running event currencies (as done by Datenspuren 2024/2025) and regional currencies (as event currencies, but (more) permanent), this fits anyways.

CG suggested to copy the generated ToS files to test & prod envs, for now. Will do this.

vecirex

2025-12-20 10:46

manager   ~0027146

Assign back to me, solution found.

vecirex

2026-02-06 02:48

manager   ~0027623

Last edited: 2026-02-06 02:54

Tried in the supposed way on TOPS/CHF stage; it fails with the same error as on taler.hacktivism.ch in the past; seemingly exchange config is expected to exist, even if it's about ToS for merchant self-provisioning:

root@betel:/etc/taler-merchant# taler-terms-generator -i /usr/share/taler-merchant/terms/merchant-tos-tops-v0.en.rst -o "$(taler-merchant-config -f -s merchant -o terms_dir)"
2026-02-06T01:00:13.036778+0000 taler-exchange-config-71384 ERROR Configuration fails to specify option `TERMS_DIR' in section `EXCHANGE'!
root@betel:/etc/taler-merchant# su - taler-merchant-httpd -s /bin/bash
su: warning: cannot change directory to /var/lib/taler-merchant: No such file or directory
taler-merchant-httpd@betel:/etc/taler-merchant$ taler-terms-generator -i /usr/share/taler-merchant/terms/merchant-tos-tops-v0.en.rst -o "$(taler-merchant-config -f -s merchant -o terms_dir)"
2026-02-06T01:02:08.482910+0000 taler-exchange-config-71602 ERROR Configuration fails to specify option `TERMS_DIR' in section `EXCHANGE'!
taler-merchant-httpd@betel:/etc/taler-merchant$ taler-terms-generator -i /usr/share/taler-merchant/terms/merchant-tos-tops-v0.en.rst -o "$(taler-merchant-config -f -s merchant -o terms_dir)"^C
taler-merchant-httpd@betel:/etc/taler-merchant$

Changes documented in admin log, day log as well as in mytops-admin-log/.

Using another private container, I could only run this command generating the actual TOPS ToS for merchant self-provisioning when also installing the taler-exchange package next to the taler-merchant package... which we wanted to avoid for production.

I assign to you, Florian: can you please have a look? Thanks!

vecirex

2026-02-10 14:05

manager   ~0027666

Last edited: 2026-02-10 14:06

Issue with a work-around was addressed in 0011015. Tested on own test installation TOPS/CHF first, not only, but also because mytops-stage was already served.

Following command was run, as suggested:

root@1b0bd36dc346:~# TALER_EXCHANGE_TERMS_DIR=/tmp taler-terms-generator -i /usr/share/taler-merchant/terms/merchant-tos-tops-v0.en.rst -o "$(taler-merchant-config -f -s merchant -o terms_dir)"

Works like this, tried on own installation first; logs w/o warnings now and https://taler.hacktivism.ch/terms showing the terms.

taler-merchant-httpd@1b0bd36dc346:/usr/local/bin$ ./start_merchant.sh
Start taler-merchant components:
Show taler-merchant components running (check for httpd, webhook, kyccheck, depositcheck, exchangekeyupdate and reconciliation):
   2777 pts/0 S 0:00 su -p -s /bin/bash taler-merchant-httpd
   2782 pts/0 R+ 0:00 taler-merchant-httpd --log=info
   2783 pts/0 R+ 0:00 taler-merchant-webhook
   2784 pts/0 R+ 0:00 taler-merchant-kyccheck
   2785 pts/0 R+ 0:00 taler-merchant-wirewatch
   2786 pts/0 R+ 0:00 taler-merchant-depositcheck
   2787 pts/0 R+ 0:00 taler-merchant-exchangekeyupdate
   2788 pts/0 R+ 0:00 taler-merchant-reconciliation
   2790 pts/0 S+ 0:00 grep taler-merchant
taler-merchant-httpd@1b0bd36dc346:/usr/local/bin$ 2026-02-10T12:41:20.487310+0000 taler-merchant-httpd-2782 INFO Starting taler-merchant-httpd
2026-02-10T12:41:20.487983+0000 taler-merchant-httpd-2782 INFO Configuration fails to specify option `DEFAULT_REFUND_DELAY' in section `merchant'!
2026-02-10T12:41:20.488078+0000 taler-merchant-httpd-2782 INFO Configuration fails to specify option `DEFAULT_WIRE_TRANSFER_ROUNDING_INTERVAL' in section `merchant'!
2026-02-10T12:41:20.488163+0000 taler-merchant-httpd-2782 INFO Loading legal information from file `/var/lib/taler-merchant/terms//en/merchant-tos-tops-v0.md'
2026-02-10T12:41:20.488462+0000 taler-merchant-httpd-2782 INFO Loading legal information from file `/var/lib/taler-merchant/terms//en/merchant-tos-tops-v0.pdf'
2026-02-10T12:41:20.489013+0000 taler-merchant-httpd-2782 INFO Loading legal information from file `/var/lib/taler-merchant/terms//en/merchant-tos-tops-v0.html'
2026-02-10T12:41:20.489426+0000 taler-merchant-httpd-2782 INFO Loading legal information from file `/var/lib/taler-merchant/terms//en/merchant-tos-tops-v0.txt'
[...]

The package taler-terms-generator needs be installed, if not already done.

Issue History

Date Modified Username Field Change
2025-12-17 23:11 vecirex New Issue
2025-12-17 23:11 vecirex Status new => assigned
2025-12-17 23:11 vecirex Assigned To => vecirex
2025-12-17 23:12 vecirex Relationship added related to 0010711
2025-12-17 23:41 vecirex Note Added: 0027093
2025-12-17 23:43 vecirex Note Edited: 0027093
2025-12-17 23:48 vecirex Note Added: 0027094
2025-12-18 20:30 vecirex Note Added: 0027104
2025-12-18 20:36 vecirex Note Edited: 0027104
2025-12-18 20:36 vecirex Assigned To vecirex => Florian Dold
2025-12-18 20:37 vecirex Note Edited: 0027104
2025-12-18 20:39 vecirex Note Edited: 0027104
2025-12-19 13:12 Florian Dold Note Added: 0027133
2025-12-20 10:46 vecirex Note Added: 0027145
2025-12-20 10:46 vecirex Assigned To Florian Dold => vecirex
2025-12-20 10:46 vecirex Note Added: 0027146
2025-12-20 10:48 vecirex Note Edited: 0027145
2026-02-06 02:48 vecirex Note Added: 0027623
2026-02-06 02:49 vecirex Assigned To vecirex => Florian Dold
2026-02-06 02:49 vecirex Priority urgent => high
2026-02-06 02:54 vecirex Note Edited: 0027623
2026-02-10 13:47 vecirex Relationship added related to 0011015
2026-02-10 14:05 vecirex Note Added: 0027666
2026-02-10 14:06 vecirex Note Edited: 0027666
2026-02-10 14:07 vecirex Assigned To Florian Dold => vecirex
2026-02-10 14:07 vecirex Status assigned => closed
2026-02-10 14:07 vecirex Resolution open => fixed
2026-02-10 14:07 vecirex Summary For TOPS/CHF (test and deployment): ToS missing => For TOPS/CHF (test and deployment): ToS missing [work could be confirmed to work]
2026-02-10 14:07 vecirex Summary For TOPS/CHF (test and deployment): ToS missing [work could be confirmed to work] => For TOPS/CHF (test and deployment): ToS missing [workaround could be confirmed to work]
2026-02-10 14:08 vecirex Relationship added related to 0010970