Sign inSign up

robinvonmises/fulcrum

By robinvonmises

•Updated 3 months ago

Image
0

87

robinvonmises/fulcrum repository overview

⁠Bitcoin Core Docker Image

⁠Dockerfile

# 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"]

⁠Run with Docker

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

⁠Docker Compose Example

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"

⁠IMPORTANT

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

Tag summary

Content type

Image

Digest

sha256:837206741…

Size

42.7 MB

Last updated

3 months ago

docker pull robinvonmises/fulcrum