From e03ec1dad2c46ef615f1a0fc9492e55da76b2961 Mon Sep 17 00:00:00 2001 From: techiejd <62455039+techiejd@users.noreply.github.com> Date: Sat, 11 Jul 2026 11:08:11 +0700 Subject: [PATCH] Add Arbitrum (ARBETH) deployment support --- README.md | 2 +- compose/arbeth.Dockerfile | 48 ++++++++++++++++++++++++ dev-setup.sh | 1 + generator/constants.py | 1 + generator/demo/index.html | 6 +++ generator/docker-components/arbitrum.yml | 24 ++++++++++++ generator/docker-components/backend.yml | 1 + generator/docker-components/worker.yml | 1 + helpers.sh | 1 + setup.sh | 3 ++ 10 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 compose/arbeth.Dockerfile create mode 100644 generator/docker-components/arbitrum.yml diff --git a/README.md b/README.md index 608a0f0..fde567a 100644 --- a/README.md +++ b/README.md @@ -139,7 +139,7 @@ export BITCART_STORE_API_URL=https://api.bitcart.ai export BITCART_REVERSEPROXY=none # cryptocurrency settings # we enable all currencies we support on the demo to test that they work -export BITCART_CRYPTOS=btc,bch,ltc,xrg,eth,bnb,matic,trx,grs,xmr +export BITCART_CRYPTOS=btc,bch,ltc,xrg,eth,bnb,matic,arbeth,trx,grs,xmr # lightning network for supported coins export BTC_LIGHTNING=true export LTC_LIGHTNING=true diff --git a/compose/arbeth.Dockerfile b/compose/arbeth.Dockerfile new file mode 100644 index 0000000..3820b7d --- /dev/null +++ b/compose/arbeth.Dockerfile @@ -0,0 +1,48 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "generate-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM python:3.12-alpine AS base +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ + +ENV ELECTRUM_USER=electrum +ENV ELECTRUM_HOME=/home/$ELECTRUM_USER +ENV ELECTRUM_DIRECTORY=${ELECTRUM_HOME}/.bitcart-arbeth +ENV IN_DOCKER=1 +ENV UV_COMPILE_BYTECODE=1 +ENV UV_NO_CACHE=1 +ENV UV_NO_SYNC=1 +ENV ARBETH_HOST=0.0.0.0 +LABEL org.bitcart.image=arbeth-daemon + +FROM base AS compile-image + +COPY bitcart $ELECTRUM_HOME/site + +RUN apk add git gcc python3-dev musl-dev automake autoconf libtool file git make libffi-dev && \ + cd $ELECTRUM_HOME/site && \ + uv sync --frozen --no-dev --group arbeth --group otel && \ + uv run opentelemetry-bootstrap -a requirements | uv pip install --requirement - + +FROM base AS build-image + +RUN adduser -D $ELECTRUM_USER && \ + mkdir -p /data/ && \ + ln -sf /data/ $ELECTRUM_DIRECTORY && \ + chown ${ELECTRUM_USER} $ELECTRUM_DIRECTORY && \ + mkdir -p $ELECTRUM_HOME/site && \ + chown ${ELECTRUM_USER} $ELECTRUM_HOME/site && \ + apk add --no-cache libsecp256k1-dev git && \ + apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/main jemalloc + +COPY --from=compile-image --chown=electrum $ELECTRUM_HOME/site/.venv $ELECTRUM_HOME/.venv +COPY --from=compile-image --chown=electrum $ELECTRUM_HOME/site $ELECTRUM_HOME/site + +ENV PYTHONUNBUFFERED=1 PYTHONMALLOC=malloc LD_PRELOAD=libjemalloc.so.2 MALLOC_CONF=background_thread:true,max_background_threads:1,metadata_thp:auto,dirty_decay_ms:80000,muzzy_decay_ms:80000 +ENV PATH="$ELECTRUM_HOME/.venv/bin:$PATH" +USER $ELECTRUM_USER +WORKDIR $ELECTRUM_HOME/site + +CMD ["just","daemon", "arbeth"] diff --git a/dev-setup.sh b/dev-setup.sh index 9715a6e..5dd7b43 100755 --- a/dev-setup.sh +++ b/dev-setup.sh @@ -19,6 +19,7 @@ XRG_HOST=ergon ETH_HOST=ethereum BNB_HOST=binancecoin MATIC_HOST=polygon +ARBETH_HOST=arbitrum TRX_HOST=tron GRS_HOST=groestlcoin XMR_HOST=monero diff --git a/generator/constants.py b/generator/constants.py index 3d44515..557d13b 100644 --- a/generator/constants.py +++ b/generator/constants.py @@ -24,6 +24,7 @@ "trx": {"component": "tron"}, "grs": {"component": "groestlcoin"}, "xmr": {"component": "monero"}, + "arbeth": {"component": "arbitrum"}, } TOR_CRYPTOS = {"btc": CRYPTOS["btc"]} # cryptos to enable tor proxy for CRYPTO_COMPONENTS = [CRYPTOS[i]["component"] for i in CRYPTOS] diff --git a/generator/demo/index.html b/generator/demo/index.html index b24b76a..f6e4c61 100644 --- a/generator/demo/index.html +++ b/generator/demo/index.html @@ -385,6 +385,12 @@