add electrum wallet daemon with container entrypoint
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
/deploy/certbot/www
|
||||
|
||||
/monero-wallet-rpc/wallet
|
||||
/electrum-daemon/wallet
|
||||
|
||||
/backend/node_modules
|
||||
/backend/dist
|
||||
|
||||
@@ -54,6 +54,10 @@ Edit `.env.prod`. Mandatory configuration:
|
||||
| `MONERO_WALLET_RPC_USERNAME` | strong random username |
|
||||
| `MONERO_WALLET_RPC_PASSWORD` | strong random password |
|
||||
| `MONERO_WALLET_PASSWORD` | strong wallet password |
|
||||
| `ELECTRUM_NETWORK` | `mainnet` |
|
||||
| `ELECTRUM_SERVER` | Electrum peer as `host:port:s` (SSL) or `host:port:t` (TCP), e.g. `electrum.blockstream.info:50002:s` |
|
||||
| `ELECTRUM_WALLET_PASSWORD` | strong wallet password |
|
||||
| `ELECTRUM_DAEMON_RPC_PASSWORD` | strong random password |
|
||||
| `VITE_API_BASE_URL` | `/api` |
|
||||
| `VITE_SHOP_FIAT_CURRENCY` | same as `SHOP_FIAT_CURRENCY` |
|
||||
|
||||
|
||||
@@ -53,6 +53,28 @@ services:
|
||||
retries: 10
|
||||
start_period: 300s
|
||||
|
||||
electrum-daemon:
|
||||
build:
|
||||
context: ./electrum-daemon
|
||||
args:
|
||||
ELECTRUM_VERSION: ${ELECTRUM_VERSION}
|
||||
container_name: ${COMPOSE_PROJECT_NAME}_electrum_daemon
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.dev
|
||||
volumes:
|
||||
- ${ELECTRUM_WALLET_DIR}:/electrum/wallet
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
'CMD-SHELL',
|
||||
'curl -sf -u "$$ELECTRUM_DAEMON_RPC_USER:$$ELECTRUM_DAEMON_RPC_PASSWORD" -H ''Content-Type: application/json'' -d ''{"jsonrpc":"2.0","id":"health","method":"version","params":[]}'' http://127.0.0.1:$$ELECTRUM_DAEMON_PORT/'
|
||||
]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 90s
|
||||
|
||||
simplex-cli:
|
||||
build:
|
||||
context: ./simplex-cli
|
||||
@@ -83,6 +105,8 @@ services:
|
||||
condition: service_healthy
|
||||
monero-wallet-rpc:
|
||||
condition: service_healthy
|
||||
electrum-daemon:
|
||||
condition: service_healthy
|
||||
simplex-cli:
|
||||
condition: service_healthy
|
||||
env_file:
|
||||
|
||||
@@ -50,6 +50,28 @@ services:
|
||||
retries: 10
|
||||
start_period: 300s
|
||||
|
||||
electrum-daemon:
|
||||
build:
|
||||
context: ./electrum-daemon
|
||||
args:
|
||||
ELECTRUM_VERSION: ${ELECTRUM_VERSION}
|
||||
container_name: ${COMPOSE_PROJECT_NAME}_electrum_daemon
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.prod
|
||||
volumes:
|
||||
- ${ELECTRUM_WALLET_DIR}:/electrum/wallet
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
'CMD-SHELL',
|
||||
'curl -sf -u "$$ELECTRUM_DAEMON_RPC_USER:$$ELECTRUM_DAEMON_RPC_PASSWORD" -H ''Content-Type: application/json'' -d ''{"jsonrpc":"2.0","id":"health","method":"version","params":[]}'' http://127.0.0.1:$$ELECTRUM_DAEMON_PORT/'
|
||||
]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 90s
|
||||
|
||||
simplex-cli:
|
||||
build:
|
||||
context: ./simplex-cli
|
||||
@@ -80,6 +102,8 @@ services:
|
||||
condition: service_healthy
|
||||
monero-wallet-rpc:
|
||||
condition: service_healthy
|
||||
electrum-daemon:
|
||||
condition: service_healthy
|
||||
simplex-cli:
|
||||
condition: service_healthy
|
||||
env_file:
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
ARG ELECTRUM_VERSION
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
ca-certificates curl libsecp256k1-1 python3 python3-cryptography \
|
||||
&& curl -fsSL "https://download.electrum.org/${ELECTRUM_VERSION}/Electrum-${ELECTRUM_VERSION}.tar.gz" \
|
||||
| tar -xz -C /opt \
|
||||
&& chmod +x "/opt/Electrum-${ELECTRUM_VERSION}/run_electrum" \
|
||||
&& ln -s "/opt/Electrum-${ELECTRUM_VERSION}/run_electrum" /usr/local/bin/electrum \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --chmod=755 docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
NETWORK_FLAG="--${ELECTRUM_NETWORK}"
|
||||
WALLET_PATH="/electrum/wallet/${ELECTRUM_WALLET_NAME}"
|
||||
DATA_DIR="/electrum/data"
|
||||
|
||||
run_electrum() { electrum "${NETWORK_FLAG}" --dir "${DATA_DIR}" "$@"; }
|
||||
run_electrum_offline() { electrum --offline "${NETWORK_FLAG}" --dir "${DATA_DIR}" "$@"; }
|
||||
|
||||
mkdir -p /electrum/wallet "${DATA_DIR}"
|
||||
chmod 700 /electrum/wallet
|
||||
|
||||
if [[ ! -f "${WALLET_PATH}" ]]; then
|
||||
echo "Creating ${ELECTRUM_NETWORK} wallet at ${WALLET_PATH}..."
|
||||
|
||||
run_electrum_offline create -w "${WALLET_PATH}" --password "${ELECTRUM_WALLET_PASSWORD}"
|
||||
chmod 600 "${WALLET_PATH}" 2>/dev/null || true
|
||||
|
||||
echo "Wallet created at ${WALLET_PATH}"
|
||||
fi
|
||||
|
||||
run_electrum_offline setconfig rpcuser "${ELECTRUM_DAEMON_RPC_USER}"
|
||||
run_electrum_offline setconfig rpcpassword "${ELECTRUM_DAEMON_RPC_PASSWORD}"
|
||||
run_electrum_offline setconfig rpchost 0.0.0.0
|
||||
run_electrum_offline setconfig rpcport "${ELECTRUM_DAEMON_PORT}"
|
||||
run_electrum_offline setconfig server "${ELECTRUM_SERVER}"
|
||||
|
||||
trap 'run_electrum daemon stop || true; exit 0' SIGTERM SIGINT
|
||||
|
||||
run_electrum daemon -d
|
||||
run_electrum load_wallet -w "${WALLET_PATH}" --password "${ELECTRUM_WALLET_PASSWORD}"
|
||||
|
||||
sleep infinity
|
||||
Reference in New Issue
Block a user