From 4cfcc8efeb0a4c6cf6a4bfd90f73bc86108b34ac Mon Sep 17 00:00:00 2001 From: status404 Date: Wed, 19 Oct 2022 06:26:34 -0400 Subject: [PATCH] Dockerfile --- Docker/Dockerfile | 29 ++++++++++++++++++++++++ README.md | 47 +++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 11 +++++++++ electrum-appimage.service | 24 ++++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 Docker/Dockerfile create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 electrum-appimage.service diff --git a/Docker/Dockerfile b/Docker/Dockerfile new file mode 100644 index 0000000..3f20ceb --- /dev/null +++ b/Docker/Dockerfile @@ -0,0 +1,29 @@ +# syntax=docker/dockerfile:3 + +FROM alpine:3.15 + +#SHELL ["/bin/ash", "-ex", "-c"] + +ENV ELECTRUM_USER=api +ENV ELECTRUM_PASSWORD=changeme + +ENV HOME=/home/electrum +#ENV TESTNET=false + +EXPOSE 7000 + +RUN adduser -D -h $HOME electrum + +RUN apk --no-cache add electrum + +USER electrum +WORKDIR $HOME + +ENTRYPOINT test "$ELECTRUM_TESTNET" = 1 -o "$ELECTRUM_TESTNET" = true && FLAGS='--testnet' ;\ + electrum --offline $FLAGS setconfig rpcuser ${ELECTRUM_USER} ;\ + electrum --offline $FLAGS setconfig rpcpassword ${ELECTRUM_PASSWORD} ;\ + electrum --offline $FLAGS setconfig rpchost 0.0.0.0 ;\ + electrum --offline $FLAGS setconfig rpcport 7000 ;\ + #electrum --offline $FLAGS create ;\ + exec electrum $FLAGS daemon + diff --git a/README.md b/README.md new file mode 100644 index 0000000..a4c345f --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# Intro + +[Electrum client](https://electrum.org/) is light bitcoin wallet software operates through supernodes (Electrum server instances actually). + +Electrum client running as a daemon in docker container with JSON-RPC API enabled. + +# Usage + +Here are some example snippets to help you get started creating a container. + +## docker-compose + +```yaml +version: "3" +services: + electrum: + image: bitdeals/electrum + environment: + - ELECTRUM_TESTNET=0 + - ELECTRUM_API_USER= + - ELECTRUM_API_PASSWORD= + ports: + - 7000:7000 +``` + +## docker cli + +```sh +docker run -d \ + -e ELECTRUM_TESTNET=0 \ + -e ELECTRUM_API_USER=api \ + -e ELECTRUM_API_PASSWORD=changeme \ + -p 127.0.0.1:7000:7000 \ + bitdeals/electrum +``` + +# Parameters + +Container images are configured using parameters passed at runtime. + +|Parameter|Function| +|:--------|:-------| +|-p 7000|JSON-RPC API port TCP| +|-e ELECTRUM_TESTNET=|Set 1 to enable bitcoin testnet mode. Default: `0`| +|-e ELECTRUM_API_USER=|JSON-RPC API user. Default: `api`| +|-e ELECTRUM_API_PASSWORD=|JSON-RPC API password. Default: `changeme`| + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d693e08 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3.9' +services: + electrum: + image: bitdeals/electrum:4.1.5-alpine + environment: + - ELECTRUM_API_USER=electrum_api_user + - ELECTRUM_API_PASSWORD=electrum_api_password + - ELECTRUM_TESTNET=1 + ports: + - 7000:7000 + diff --git a/electrum-appimage.service b/electrum-appimage.service new file mode 100644 index 0000000..e94676b --- /dev/null +++ b/electrum-appimage.service @@ -0,0 +1,24 @@ +[Unit] +Description=Electrum appimage service +Documentation=https://electrum.readthedocs.io/en/latest/jsonrpc.html +ConditionPathExists=/home/electrum/electrum.AppImage +After=network.target +Wants=network.target + +[Service] +Type=simple +ExecStart=/home/electrum/electrum.AppImage daemon +#ExecStartPost=/home/electrum/electrum.AppImage --testnet daemon load_wallet -w /home/electrum/.electrum/testnet/wallets/default_wallet +WorkingDirectory=/home/electrum +Restart=always +RestartSec=10 + +SyslogIdentifier=electrum +User=electrum +Group=electrum +PrivateTmp=yes +ProtectSystem=full + +[Install] +WantedBy=multi-user.target +