# syntax=docker/dockerfile:1
# VERSION nur hier ändern (oder "latest" lassen für Auto-Erkennung der neuesten Release)
ARG VERSION=latest
# ---------- Stage 1: Version auflösen, Download, verify, extract ----------
FROM debian:bookworm-slim AS builder
ARG VERSION
RUN apt-get update && apt-get install -y --no-install-recommends \
wget \
curl \
gnupg \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /tmp/fulcrum-build
# Falls VERSION=latest: neueste Release-Version von GitHub abfragen.
# Ausgabe erscheint im Build-Log (mit `docker build --progress=plain` sichtbar).
RUN set -eux; \
if [ "$VERSION" = "latest" ]; then \
RESOLVED_VERSION=$(curl -s https://api.github.com/repos/cculianu/Fulcrum/releases/latest \
| grep '"tag_name"' | sed -E 's/.*"v([^"]+)".*/\1/'); \
else \
RESOLVED_VERSION="$VERSION"; \
fi; \
echo "=============================================="; \
echo " Building Fulcrum version: ${RESOLVED_VERSION}"; \
echo "=============================================="; \
echo "${RESOLVED_VERSION}" > /tmp/fulcrum-build/VERSION
RUN set -eux; \
VERSION=$(cat /tmp/fulcrum-build/VERSION); \
wget -4 --timeout=20 --tries=3 -q https://github.com/cculianu/Fulcrum/releases/download/v${VERSION}/Fulcrum-${VERSION}-x86_64-linux.tar.gz \
&& wget -4 --timeout=20 --tries=3 -q https://github.com/cculianu/Fulcrum/releases/download/v${VERSION}/Fulcrum-${VERSION}-shasums.txt \
&& wget -4 --timeout=20 --tries=3 -q https://github.com/cculianu/Fulcrum/releases/download/v${VERSION}/Fulcrum-${VERSION}-shasums.txt.asc
# Signing-Key importieren und Signatur der Shasums-Datei prüfen
RUN curl -s https://raw.githubusercontent.com/Electron-Cash/keys-n-hashes/master/pubkeys/calinkey.txt \
| gpg --import \
&& VERSION=$(cat /tmp/fulcrum-build/VERSION) \
&& gpg --verify Fulcrum-${VERSION}-shasums.txt.asc Fulcrum-${VERSION}-shasums.txt
# Checksum des Binary-Archivs gegen die verifizierte Shasums-Datei prüfen
RUN set -eux; \
VERSION=$(cat /tmp/fulcrum-build/VERSION); \
grep 'x86_64-linux.tar.gz' Fulcrum-${VERSION}-shasums.txt | sha256sum --check
RUN set -eux; \
VERSION=$(cat /tmp/fulcrum-build/VERSION); \
tar -xzf Fulcrum-${VERSION}-x86_64-linux.tar.gz; \
install -m 0755 -o root -g root -t /usr/local/bin \
Fulcrum-${VERSION}-x86_64-linux/Fulcrum
# ---------- Stage 2: Schlankes Runtime-Image ----------
FROM debian:bookworm-slim
# Fulcrum-Release-Binary ist gegen OpenSSL dynamisch gelinkt,
# daher wird libssl zur Laufzeit benötigt (nicht die -dev-Variante, die war nur zum Kompilieren)
RUN apt-get update && apt-get install -y --no-install-recommends \
libssl3 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& groupadd --gid 999 fulcrum \
&& useradd --system --uid 999 --gid 999 --create-home --home-dir /home/fulcrum --shell /usr/sbin/nologin fulcrum
COPY --from=builder /usr/local/bin/Fulcrum /usr/local/bin/Fulcrum
COPY --from=builder /tmp/fulcrum-build/VERSION /usr/local/share/fulcrum-version
RUN mkdir -p /fulcrum && chown -R fulcrum:fulcrum /fulcrum /home/fulcrum
USER fulcrum
WORKDIR /home/fulcrum
VOLUME ["/fulcrum"]
EXPOSE 50001 50002
ENTRYPOINT ["Fulcrum"]
CMD ["/fulcrum/fulcrum.conf"]
Start Fulcrum in a container:
docker run -d \
--name bitcoin-fulcrum \
--restart unless-stopped \
-v /data/bitcoin/fulcrum:/fulcrum \
-p 50001:50001 \
-p 50002:50002 \
robinvonmises/fulcrum:latest
Run Fulcrum with Docker Compose:
services:
fulcrum:
container_name: bitcoin-fulcrum
image: robinvonmises/fulcrum:latest
volumes:
- /data/bitcoin/fulcrum:/fulcrum
restart: unless-stopped
ports:
- "50001:50001"
- "50002:50002"
If you plan to use SSL enryption via port 50002, remember to create key.pem and cert.pem in within your fulcrum data folder:
openssl req -newkey rsa:2048 -sha256 -nodes -x509 -days 3650 -subj "/O=Fulcrum" -keyout key.pem -out cert.pem
Content type
Image
Digest
sha256:837206741…
Size
42.7 MB
Last updated
3 months ago
docker pull robinvonmises/fulcrum