Add sync service and fix tarball detection for taler-exchange/merchant
This commit is contained in:
parent
9543a56982
commit
2121a7763a
5 changed files with 97 additions and 5 deletions
10
.env.example
10
.env.example
|
|
@ -25,6 +25,16 @@ LIBEUFIN_USER=demogeld
|
|||
LIBEUFIN_USER_PASSWORD=
|
||||
LIBEUFIN_DEBIT_THRESHOLD=DEMOGELD:1000000
|
||||
|
||||
# Sync service
|
||||
TALER_SYNC_DB=talersync
|
||||
TALER_SYNC_DB_USER=talersync
|
||||
TALER_SYNC_DB_PASSWORD=talersync
|
||||
SYNC_BASE_URL=https://sync.domain.tld/
|
||||
SYNC_HOST=sync.domain.tld
|
||||
SYNC_PORT=8087
|
||||
SYNC_TARBALL_URL=
|
||||
SYNC_REF=master
|
||||
|
||||
# Exchange offline account enablement
|
||||
ENABLE_EXCHANGE_ACCOUNT=0
|
||||
PAYTO_URI=payto://x-taler-bank/yourbank.domain.tld/demogeld?receiver-name=demogeld
|
||||
|
|
|
|||
57
Dockerfile
57
Dockerfile
|
|
@ -7,11 +7,13 @@ ARG GNUNET_REF=v0.26.1
|
|||
ARG EXCHANGE_REF=master
|
||||
ARG MERCHANT_REF=master
|
||||
ARG LIBEUFIN_REF=master
|
||||
ARG SYNC_REF=master
|
||||
# Optional tarball URLs (when set, git clone is skipped)
|
||||
ARG GNUNET_TARBALL_URL=
|
||||
ARG EXCHANGE_TARBALL_URL=
|
||||
ARG MERCHANT_TARBALL_URL=
|
||||
ARG LIBEUFIN_TARBALL_URL=
|
||||
ARG SYNC_TARBALL_URL=
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
build-essential git automake autoconf autopoint libtool pkg-config \
|
||||
|
|
@ -69,8 +71,8 @@ RUN set -e; \
|
|||
# Exchange
|
||||
EXCHANGE_DIR=""; \
|
||||
EXCHANGE_TAR=0; \
|
||||
if ls /vendor/exchange*.tar.gz >/dev/null 2>&1; then \
|
||||
LOCAL_TARBALL="$(ls /vendor/exchange*.tar.gz | head -1)"; \
|
||||
if ls /vendor/taler-exchange*.tar.gz /vendor/exchange*.tar.gz >/dev/null 2>&1; then \
|
||||
LOCAL_TARBALL="$(ls /vendor/taler-exchange*.tar.gz /vendor/exchange*.tar.gz 2>/dev/null | head -1)"; \
|
||||
echo "Using local Exchange tarball from ${LOCAL_TARBALL}"; \
|
||||
mkdir -p /src && cd /src; \
|
||||
cp "${LOCAL_TARBALL}" exchange.tar.gz; \
|
||||
|
|
@ -114,8 +116,8 @@ RUN set -e; \
|
|||
cd "${EXCHANGE_DIR}" && env GNUNET_PREFIX=/usr GIT_CONFIG_NOSYSTEM=1 GIT_DIR= GIT_WORK_TREE=. ./configure --prefix=/usr && make -j$(nproc) && make install; \
|
||||
# Merchant
|
||||
MERCHANT_DIR=""; MERCHANT_TAR=0; \
|
||||
if ls /vendor/merchant*.tar.gz >/dev/null 2>&1; then \
|
||||
LOCAL_TARBALL="$(ls /vendor/merchant*.tar.gz | head -1)"; \
|
||||
if ls /vendor/taler-merchant*.tar.gz /vendor/merchant*.tar.gz >/dev/null 2>&1; then \
|
||||
LOCAL_TARBALL="$(ls /vendor/taler-merchant*.tar.gz /vendor/merchant*.tar.gz 2>/dev/null | head -1)"; \
|
||||
echo "Using local Merchant tarball from ${LOCAL_TARBALL}"; \
|
||||
mkdir -p /src && cd /src; \
|
||||
cp "${LOCAL_TARBALL}" merchant.tar.gz; \
|
||||
|
|
@ -181,6 +183,53 @@ RUN set -e; \
|
|||
cd "${LIBEUFIN_DIR}" && ./bootstrap && \
|
||||
./configure --prefix=/usr && make -j$(nproc) && make install
|
||||
|
||||
# Taler Sync (optional wallet backup service)
|
||||
RUN set -e; \
|
||||
SYNC_DIR=""; SYNC_TAR=0; \
|
||||
if ls /vendor/sync*.tar.gz >/dev/null 2>&1; then \
|
||||
LOCAL_TARBALL="$(ls /vendor/sync*.tar.gz | head -1)"; \
|
||||
echo "Using local Sync tarball from ${LOCAL_TARBALL}"; \
|
||||
mkdir -p /src && cd /src; \
|
||||
cp "${LOCAL_TARBALL}" sync.tar.gz; \
|
||||
tar xzf sync.tar.gz; \
|
||||
SYNC_DIR="$(ls -d sync-* | head -1)"; \
|
||||
SYNC_TAR=1; \
|
||||
elif [ -n "${SYNC_TARBALL_URL}" ]; then \
|
||||
echo "Fetching Sync tarball ${SYNC_TARBALL_URL}"; \
|
||||
mkdir -p /src && cd /src; \
|
||||
curl -L "${SYNC_TARBALL_URL}" -o sync.tar.gz; \
|
||||
tar xzf sync.tar.gz; \
|
||||
SYNC_DIR="$(ls -d sync-* | head -1)"; \
|
||||
SYNC_TAR=1; \
|
||||
else \
|
||||
git clone --depth 1 --branch "${SYNC_REF}" https://git.taler.net/sync.git /src/sync; \
|
||||
SYNC_DIR="/src/sync"; \
|
||||
fi; \
|
||||
if [ "${SYNC_TAR}" = "1" ]; then \
|
||||
if [ -f "${SYNC_DIR}/configure" ]; then \
|
||||
echo "Using existing configure for Sync tarball"; \
|
||||
else \
|
||||
set +e; \
|
||||
(cd "${SYNC_DIR}" && autoreconf -fi); \
|
||||
rc=$?; \
|
||||
set -e; \
|
||||
if [ $rc -ne 0 ]; then \
|
||||
echo "Autoreconf failed for Sync tarball; falling back to git clone ${SYNC_REF}"; \
|
||||
rm -rf "${SYNC_DIR}"; \
|
||||
git clone --depth 1 --branch "${SYNC_REF}" https://git.taler.net/sync.git /src/sync; \
|
||||
SYNC_DIR="/src/sync"; \
|
||||
cd "${SYNC_DIR}" && env GNUNET_PREFIX=/usr ./bootstrap; \
|
||||
fi; \
|
||||
fi; \
|
||||
else \
|
||||
if [ ! -f "${SYNC_DIR}/configure" ]; then \
|
||||
cd "${SYNC_DIR}" && env GNUNET_PREFIX=/usr ./bootstrap; \
|
||||
else \
|
||||
echo "Skipping bootstrap for Sync (configure present)"; \
|
||||
fi; \
|
||||
fi; \
|
||||
cd "${SYNC_DIR}" && env GNUNET_PREFIX=/usr GIT_CONFIG_NOSYSTEM=1 GIT_DIR= GIT_WORK_TREE=. ./configure --prefix=/usr && make -j$(nproc) && make install
|
||||
|
||||
# Shared entrypoint for dbinit + service start
|
||||
COPY entrypoints/with-dbinit.sh /usr/local/bin/with-dbinit.sh
|
||||
COPY scripts/enable-exchange-account.sh /usr/local/bin/enable-exchange-account.sh
|
||||
|
|
|
|||
21
compose.yml
21
compose.yml
|
|
@ -93,9 +93,27 @@ services:
|
|||
ports:
|
||||
- "8080:8080"
|
||||
|
||||
sync:
|
||||
image: taler-stack:build
|
||||
entrypoint: ["/usr/local/bin/with-dbinit.sh"]
|
||||
command: ["taler-sync-httpd", "-c", "/etc/taler-sync/taler-sync.conf"]
|
||||
environment:
|
||||
DB_NAME: ${TALER_SYNC_DB:-talersync}
|
||||
INIT_CMD: taler-sync-dbinit -c /etc/taler-sync/taler-sync.conf
|
||||
PGHOST: ${POSTGRES_HOST:-postgres}
|
||||
PGUSER: ${POSTGRES_ADMIN_USER:-postgres}
|
||||
PGPASSWORD: ${POSTGRES_PASSWORD:-taler}
|
||||
SYNC_BASE_URL: ${SYNC_BASE_URL:-https://sync.domain.tld/}
|
||||
SYNC_HOST: ${SYNC_HOST:-sync.domain.tld}
|
||||
depends_on: [postgres]
|
||||
volumes:
|
||||
- ./sync/conf:/etc/taler-sync
|
||||
ports:
|
||||
- "8087:8087"
|
||||
|
||||
caddy:
|
||||
image: caddy:2
|
||||
depends_on: [exchange, merchant, bank]
|
||||
depends_on: [exchange, merchant, bank, sync]
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
|
|
@ -108,6 +126,7 @@ services:
|
|||
BANK_HOST: ${BANK_HOST:-ob.antifa.ltd}
|
||||
EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd}
|
||||
MERCHANT_HOST: ${MERCHANT_HOST:-merchant.antifa.ltd}
|
||||
SYNC_HOST: ${SYNC_HOST:-sync.domain.tld}
|
||||
WORDPRESS_HOST: ${WORDPRESS_HOST:-wordpress.domain.tld}
|
||||
|
||||
mariadb:
|
||||
|
|
|
|||
|
|
@ -23,12 +23,14 @@ GNUNET_VERSION="${GNUNET_VERSION:-0.21.2}"
|
|||
EXCHANGE_VERSION="${EXCHANGE_VERSION:-1.0.0}"
|
||||
MERCHANT_VERSION="${MERCHANT_VERSION:-1.1.3}"
|
||||
LIBEUFIN_VERSION="${LIBEUFIN_VERSION:-1.2.0}"
|
||||
SYNC_VERSION="${SYNC_VERSION:-1.1.0}"
|
||||
|
||||
# GNUnet tarball is hosted under the GNUnet mirror, Taler components under the Taler mirror.
|
||||
GNUNET_URL="${GNUNET_TARBALL_URL:-https://ftp.gnu.org/gnu/gnunet/gnunet-${GNUNET_VERSION}.tar.gz}"
|
||||
EXCHANGE_URL="${EXCHANGE_TARBALL_URL:-https://ftp.fau.de/gnu/taler/taler-exchange-${EXCHANGE_VERSION}.tar.gz}"
|
||||
MERCHANT_URL="${MERCHANT_TARBALL_URL:-https://ftp.fau.de/gnu/taler/taler-merchant-${MERCHANT_VERSION}.tar.gz}"
|
||||
LIBEUFIN_URL="${LIBEUFIN_TARBALL_URL:-https://ftp.fau.de/gnu/taler/libeufin-${LIBEUFIN_VERSION}.tar.gz}"
|
||||
SYNC_URL="${SYNC_TARBALL_URL:-https://ftp.fau.de/gnu/taler/sync-${SYNC_VERSION}.tar.gz}"
|
||||
|
||||
fetch() {
|
||||
local url="$1"
|
||||
|
|
@ -49,5 +51,6 @@ fetch "$GNUNET_URL"
|
|||
fetch "$EXCHANGE_URL"
|
||||
fetch "$MERCHANT_URL"
|
||||
fetch "$LIBEUFIN_URL"
|
||||
fetch "$SYNC_URL"
|
||||
|
||||
echo "Done. Tarballs are in ${VENDOR_DIR}"
|
||||
|
|
|
|||
11
sync/conf/taler-sync.conf
Normal file
11
sync/conf/taler-sync.conf
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
[sync]
|
||||
# Public URL where the sync service is reachable
|
||||
BASE_URL = https://sync.domain.tld/
|
||||
SERVE = tcp
|
||||
PORT = 8087
|
||||
BIND_TO = 0.0.0.0
|
||||
DB = postgres
|
||||
|
||||
[syncdb-postgres]
|
||||
# Adjust credentials/host in .env and ensure they match this URL
|
||||
CONFIG = postgres://talersync:talersync@postgres:5432/talersync
|
||||
Loading…
Add table
Add a link
Reference in a new issue