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_USER_PASSWORD=
|
||||||
LIBEUFIN_DEBIT_THRESHOLD=DEMOGELD:1000000
|
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
|
# Exchange offline account enablement
|
||||||
ENABLE_EXCHANGE_ACCOUNT=0
|
ENABLE_EXCHANGE_ACCOUNT=0
|
||||||
PAYTO_URI=payto://x-taler-bank/yourbank.domain.tld/demogeld?receiver-name=demogeld
|
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 EXCHANGE_REF=master
|
||||||
ARG MERCHANT_REF=master
|
ARG MERCHANT_REF=master
|
||||||
ARG LIBEUFIN_REF=master
|
ARG LIBEUFIN_REF=master
|
||||||
|
ARG SYNC_REF=master
|
||||||
# Optional tarball URLs (when set, git clone is skipped)
|
# Optional tarball URLs (when set, git clone is skipped)
|
||||||
ARG GNUNET_TARBALL_URL=
|
ARG GNUNET_TARBALL_URL=
|
||||||
ARG EXCHANGE_TARBALL_URL=
|
ARG EXCHANGE_TARBALL_URL=
|
||||||
ARG MERCHANT_TARBALL_URL=
|
ARG MERCHANT_TARBALL_URL=
|
||||||
ARG LIBEUFIN_TARBALL_URL=
|
ARG LIBEUFIN_TARBALL_URL=
|
||||||
|
ARG SYNC_TARBALL_URL=
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
build-essential git automake autoconf autopoint libtool pkg-config \
|
build-essential git automake autoconf autopoint libtool pkg-config \
|
||||||
|
|
@ -69,8 +71,8 @@ RUN set -e; \
|
||||||
# Exchange
|
# Exchange
|
||||||
EXCHANGE_DIR=""; \
|
EXCHANGE_DIR=""; \
|
||||||
EXCHANGE_TAR=0; \
|
EXCHANGE_TAR=0; \
|
||||||
if ls /vendor/exchange*.tar.gz >/dev/null 2>&1; then \
|
if ls /vendor/taler-exchange*.tar.gz /vendor/exchange*.tar.gz >/dev/null 2>&1; then \
|
||||||
LOCAL_TARBALL="$(ls /vendor/exchange*.tar.gz | head -1)"; \
|
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}"; \
|
echo "Using local Exchange tarball from ${LOCAL_TARBALL}"; \
|
||||||
mkdir -p /src && cd /src; \
|
mkdir -p /src && cd /src; \
|
||||||
cp "${LOCAL_TARBALL}" exchange.tar.gz; \
|
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; \
|
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
|
||||||
MERCHANT_DIR=""; MERCHANT_TAR=0; \
|
MERCHANT_DIR=""; MERCHANT_TAR=0; \
|
||||||
if ls /vendor/merchant*.tar.gz >/dev/null 2>&1; then \
|
if ls /vendor/taler-merchant*.tar.gz /vendor/merchant*.tar.gz >/dev/null 2>&1; then \
|
||||||
LOCAL_TARBALL="$(ls /vendor/merchant*.tar.gz | head -1)"; \
|
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}"; \
|
echo "Using local Merchant tarball from ${LOCAL_TARBALL}"; \
|
||||||
mkdir -p /src && cd /src; \
|
mkdir -p /src && cd /src; \
|
||||||
cp "${LOCAL_TARBALL}" merchant.tar.gz; \
|
cp "${LOCAL_TARBALL}" merchant.tar.gz; \
|
||||||
|
|
@ -181,6 +183,53 @@ RUN set -e; \
|
||||||
cd "${LIBEUFIN_DIR}" && ./bootstrap && \
|
cd "${LIBEUFIN_DIR}" && ./bootstrap && \
|
||||||
./configure --prefix=/usr && make -j$(nproc) && make install
|
./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
|
# Shared entrypoint for dbinit + service start
|
||||||
COPY entrypoints/with-dbinit.sh /usr/local/bin/with-dbinit.sh
|
COPY entrypoints/with-dbinit.sh /usr/local/bin/with-dbinit.sh
|
||||||
COPY scripts/enable-exchange-account.sh /usr/local/bin/enable-exchange-account.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:
|
ports:
|
||||||
- "8080:8080"
|
- "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:
|
caddy:
|
||||||
image: caddy:2
|
image: caddy:2
|
||||||
depends_on: [exchange, merchant, bank]
|
depends_on: [exchange, merchant, bank, sync]
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
- "443:443"
|
- "443:443"
|
||||||
|
|
@ -108,6 +126,7 @@ services:
|
||||||
BANK_HOST: ${BANK_HOST:-ob.antifa.ltd}
|
BANK_HOST: ${BANK_HOST:-ob.antifa.ltd}
|
||||||
EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd}
|
EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd}
|
||||||
MERCHANT_HOST: ${MERCHANT_HOST:-merchant.antifa.ltd}
|
MERCHANT_HOST: ${MERCHANT_HOST:-merchant.antifa.ltd}
|
||||||
|
SYNC_HOST: ${SYNC_HOST:-sync.domain.tld}
|
||||||
WORDPRESS_HOST: ${WORDPRESS_HOST:-wordpress.domain.tld}
|
WORDPRESS_HOST: ${WORDPRESS_HOST:-wordpress.domain.tld}
|
||||||
|
|
||||||
mariadb:
|
mariadb:
|
||||||
|
|
|
||||||
|
|
@ -23,12 +23,14 @@ GNUNET_VERSION="${GNUNET_VERSION:-0.21.2}"
|
||||||
EXCHANGE_VERSION="${EXCHANGE_VERSION:-1.0.0}"
|
EXCHANGE_VERSION="${EXCHANGE_VERSION:-1.0.0}"
|
||||||
MERCHANT_VERSION="${MERCHANT_VERSION:-1.1.3}"
|
MERCHANT_VERSION="${MERCHANT_VERSION:-1.1.3}"
|
||||||
LIBEUFIN_VERSION="${LIBEUFIN_VERSION:-1.2.0}"
|
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 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}"
|
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}"
|
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}"
|
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}"
|
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() {
|
fetch() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
|
|
@ -49,5 +51,6 @@ fetch "$GNUNET_URL"
|
||||||
fetch "$EXCHANGE_URL"
|
fetch "$EXCHANGE_URL"
|
||||||
fetch "$MERCHANT_URL"
|
fetch "$MERCHANT_URL"
|
||||||
fetch "$LIBEUFIN_URL"
|
fetch "$LIBEUFIN_URL"
|
||||||
|
fetch "$SYNC_URL"
|
||||||
|
|
||||||
echo "Done. Tarballs are in ${VENDOR_DIR}"
|
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