bump elementsd to 23.2.4 and gosu to 1.17 (#107)

This commit is contained in:
wario_is_here 2025-06-27 14:08:29 +02:00 committed by GitHub
parent f10560cc99
commit fdf8652acf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 201 additions and 0 deletions

View File

@ -0,0 +1,73 @@
#!/bin/bash
set -e
if [[ "$1" == "elements-cli" || "$1" == "elements-tx" || "$1" == "elementsd" || "$1" == "test_elements" ]]; then
mkdir -p "$ELEMENTS_DATA"
CONFIG_PREFIX=""
CHAIN="$ELEMENTS_CHAIN"
NL=$'\n'
if [[ "$CHAIN" ]]; then
CONFIG_PREFIX="chain=$CHAIN\n[$CHAIN]"
elif [[ "${ELEMENTS_NETWORK}" == "regtest" ]]; then
CHAIN="${ELEMENTS_REGTEST_CHAIN:-regtest}"
elif [[ "${ELEMENTS_NETWORK}" == "testnet" ]]; then
CHAIN="${ELEMENTS_TESTNET_CHAIN:-testnet}"
elif [[ "${ELEMENTS_NETWORK}" == "mainnet" ]]; then
CHAIN="${ELEMENTS_MAINNET_CHAIN:-liquidv1}"
else
CHAIN=""
fi
if [[ "$CHAIN" ]]; then
CONFIG_PREFIX="chain=${CHAIN}${NL}[${CHAIN}]"
fi
if [[ "$ELEMENTS_WALLETDIR" ]] && [[ "$CHAIN" ]]; then
WALLETDIR="$ELEMENTS_WALLETDIR/${CHAIN}"
mkdir -p "$WALLETDIR"
[[ -f "${WALLETDIR}/db.log" ]] && mkdir -p "${WALLETDIR}/${CHAIN}/wallets" && mv "${WALLETDIR}/db.log" "${WALLETDIR}/${CHAIN}/wallets/db.log"
[[ -f "${WALLETDIR}/wallet.dat" ]] && mkdir -p "${WALLETDIR}/${CHAIN}/wallets" && mv "${WALLETDIR}/wallet.dat" "${WALLETDIR}/${CHAIN}/wallets/wallet.dat"
[[ -d "${WALLETDIR}/database" ]] && mkdir -p "${WALLETDIR}/${CHAIN}/wallets" && mv "${WALLETDIR}/database" "${WALLETDIR}/${CHAIN}/wallets/database"
chown -R elements:elements "$WALLETDIR"
CONFIG_PREFIX="${CONFIG_PREFIX}${NL}walletdir=${WALLETDIR}/${CHAIN}/wallets${NL}"
WALLETFILE="${WALLETDIR}/${CHAIN}/wallets/wallet.dat"
if ! [[ -f "${WALLETFILE}" ]]; then
echo "The wallet does not exists, creating it at ${WALLETDIR}..."
gosu elements elements-wallet "-datadir=${WALLETDIR}" "-wallet=" create
fi
fi
cat <<-EOF > "$ELEMENTS_DATA/elements.conf"
${CONFIG_PREFIX}
printtoconsole=1
rpcallowip=::/0
${ELEMENTS_EXTRA_ARGS}
EOF
chown elements:elements "$ELEMENTS_DATA/elements.conf"
if [[ "${ELEMENTS_TORCONTROL}" ]]; then
# Because elementsd only accept torcontrol= host as an ip only, we resolve it here and add to config
TOR_CONTROL_HOST=$(echo ${ELEMENTS_TORCONTROL} | cut -d ':' -f 1)
TOR_CONTROL_PORT=$(echo ${ELEMENTS_TORCONTROL} | cut -d ':' -f 2)
if [[ "$TOR_CONTROL_HOST" ]] && [[ "$TOR_CONTROL_PORT" ]]; then
TOR_IP=$(getent hosts $TOR_CONTROL_HOST | cut -d ' ' -f 1)
echo "torcontrol=$TOR_IP:$TOR_CONTROL_PORT" >> "$ELEMENTS_DATA/elements.conf"
echo "Added "torcontrol=$TOR_IP:$TOR_CONTROL_PORT" to $ELEMENTS_DATA/elements.conf"
else
echo "Invalid ELEMENTS_TORCONTROL"
fi
fi
# ensure correct ownership and linking of data directory
# we do not update group ownership here, in case users want to mount
# a host directory and still retain access to it
chown -R elements "$ELEMENTS_DATA"
ln -sfn "$ELEMENTS_DATA" /home/elements/.elements
chown -h elements:elements /home/elements/.elements
exec gosu elements "$@"
else
exec "$@"
fi

View File

@ -0,0 +1,40 @@
FROM debian:buster-slim as builder
RUN set -ex \
&& apt-get update \
&& apt-get install -qq --no-install-recommends ca-certificates dirmngr gosu wget
ENV ELEMENTS_VERSION 23.2.4
ENV ELEMENTS_URL https://github.com/ElementsProject/elements/releases/download/elements-23.2.4/elements-23.2.4-x86_64-linux-gnu.tar.gz
ENV ELEMENTS_SHA256 6e0c747ec4ba4e54eb3426e7219354b5ea150b393a4e2b8a536cab64a5d9c7a8
# install elements binaries
RUN set -ex \
&& cd /tmp \
&& wget -qO elements.tar.gz "$ELEMENTS_URL" \
&& echo "$ELEMENTS_SHA256 elements.tar.gz" | sha256sum -c - \
&& mkdir bin \
&& tar -xzvf elements.tar.gz -C /tmp/bin --strip-components=2 "elements-$ELEMENTS_VERSION/bin/elements-cli" "elements-$ELEMENTS_VERSION/bin/elementsd" "elements-$ELEMENTS_VERSION/bin/elements-wallet" \
&& cd bin \
&& wget -qO gosu "https://github.com/tianon/gosu/releases/download/1.17/gosu-amd64" \
&& echo "bbc4136d03ab138b1ad66fa4fc051bafc6cc7ffae632b069a53657279a450de3 gosu" | sha256sum -c -
FROM debian:buster-slim
COPY --from=builder "/tmp/bin" /usr/local/bin
RUN chmod +x /usr/local/bin/gosu && groupadd -r elements && useradd -r -m -g elements elements
# create data directory
ENV ELEMENTS_DATA /data
RUN mkdir "$ELEMENTS_DATA" \
&& chown -R elements:elements "$ELEMENTS_DATA" \
&& ln -sfn "$ELEMENTS_DATA" /home/elements/.elements \
&& chown -h elements:elements /home/elements/.elements
VOLUME /data
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["bash", "/entrypoint.sh"]
EXPOSE 8332 8333 18332 18333 18443 18444
CMD ["elementsd"]

View File

@ -0,0 +1,44 @@
# Use manifest image which support all architecture
FROM debian:buster-slim as builder
RUN set -ex \
&& apt-get update \
&& apt-get install -qq --no-install-recommends ca-certificates dirmngr gosu wget
ENV ELEMENTS_VERSION 23.2.4
ENV ELEMENTS_URL https://github.com/ElementsProject/elements/releases/download/elements-23.2.4/elements-23.2.4-arm-linux-gnueabihf.tar.gz
ENV ELEMENTS_SHA256 17108a12960d481b2fd505908ce038693844e34bc66e8d06d1369978e286018e
# install elements binaries
RUN set -ex \
&& cd /tmp \
&& wget -qO elements.tar.gz "$ELEMENTS_URL" \
&& echo "$ELEMENTS_SHA256 elements.tar.gz" | sha256sum -c - \
&& mkdir bin \
&& tar -xzvf elements.tar.gz -C /tmp/bin --strip-components=2 "elements-$ELEMENTS_VERSION/bin/elements-cli" "elements-$ELEMENTS_VERSION/bin/elementsd" "elements-$ELEMENTS_VERSION/bin/elements-wallet" \
&& cd bin \
&& wget -qO gosu "https://github.com/tianon/gosu/releases/download/1.17/gosu-armhf" \
&& echo "e5866286277ff2a2159fb9196fea13e0a59d3f1091ea46ddb985160b94b6841b gosu" | sha256sum -c -
# Making sure the builder build an arm image despite being x64
FROM arm32v7/debian:buster-slim
COPY --from=builder "/tmp/bin" /usr/local/bin
#EnableQEMU COPY qemu-arm-static /usr/bin
RUN chmod +x /usr/local/bin/gosu && groupadd -r elements && useradd -r -m -g elements elements
# create data directory
ENV ELEMENTS_DATA /data
RUN mkdir "$ELEMENTS_DATA" \
&& chown -R elements:elements "$ELEMENTS_DATA" \
&& ln -sfn "$ELEMENTS_DATA" /home/elements/.elements \
&& chown -h elements:elements /home/elements/.elements
VOLUME /data
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["bash", "/entrypoint.sh"]
EXPOSE 8332 8333 18332 18333 18443 18444
CMD ["elementsd"]

View File

@ -0,0 +1,44 @@
# Use manifest image which support all architecture
FROM debian:buster-slim as builder
RUN set -ex \
&& apt-get update \
&& apt-get install -qq --no-install-recommends ca-certificates dirmngr gosu wget
ENV ELEMENTS_VERSION 23.2.4
ENV ELEMENTS_URL https://github.com/ElementsProject/elements/releases/download/elements-23.2.4/elements-23.2.4-aarch64-linux-gnu.tar.gz
ENV ELEMENTS_SHA256 5c6f8219fd1baf4d4c2b05b6dd9ec71bb348754bd46aeb3faa7ba0ba69aff0e8
# install elements binaries
RUN set -ex \
&& cd /tmp \
&& wget -qO elements.tar.gz "$ELEMENTS_URL" \
&& echo "$ELEMENTS_SHA256 elements.tar.gz" | sha256sum -c - \
&& mkdir bin \
&& tar -xzvf elements.tar.gz -C /tmp/bin --strip-components=2 "elements-$ELEMENTS_VERSION/bin/elements-cli" "elements-$ELEMENTS_VERSION/bin/elementsd" "elements-$ELEMENTS_VERSION/bin/elements-wallet" \
&& cd bin \
&& wget -qO gosu "https://github.com/tianon/gosu/releases/download/1.17/gosu-arm64" \
&& echo "c3805a85d17f4454c23d7059bcb97e1ec1af272b90126e79ed002342de08389b gosu" | sha256sum -c -
# Making sure the builder build an arm image despite being x64
FROM arm64v8/debian:buster-slim
COPY --from=builder "/tmp/bin" /usr/local/bin
#EnableQEMU COPY qemu-aarch64-static /usr/bin
RUN chmod +x /usr/local/bin/gosu && groupadd -r elements && useradd -r -m -g elements elements
# create data directory
ENV ELEMENTS_DATA /data
RUN mkdir "$ELEMENTS_DATA" \
&& chown -R elements:elements "$ELEMENTS_DATA" \
&& ln -sfn "$ELEMENTS_DATA" /home/elements/.elements \
&& chown -h elements:elements /home/elements/.elements
VOLUME /data
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["bash", "/entrypoint.sh"]
EXPOSE 8332 8333 18332 18333 18443 18444
CMD ["elementsd"]