Bitcoin Core v28 + electrs v0.10.9 on Windows via Docker
A local signet stack for use with Sparrow Wallet – ideal for teaching and testing without relying on third-party Electrum servers.
This setup gives you a complete Bitcoin testing environment running on your own machine. The signet network uses fake Bitcoin with no real-world value, making it perfect for classroom demonstrations, wallet testing, and practicing Bitcoin workflows without risk.
This setup runs Bitcoin Core and electrs in Docker containers. Sparrow Wallet connects to your local node on port 60601.
Disk space required: ~30 GB
Sync time: 15–30 minutes
Open PowerShell, create the project folder, and navigate into it:
mkdir ~/signet-stack
cd ~/signet-stack
Create a file named docker-compose.yml with the following content:
services:
bitcoind:
image: bitcoin/bitcoin:28
container_name: signet-bitcoind
restart: unless-stopped
volumes:
- bitcoin_data:/home/bitcoin/.bitcoin
command:
- -signet
- -server=1
- -rpcallowip=0.0.0.0/0
- -rpcbind=0.0.0.0
- -txindex=1
- -zmqpubrawblock=tcp://0.0.0.0:28332
- -zmqpubrawtx=tcp://0.0.0.0:28333
ports:
- "38332:38332"
- "38333:38333"
- "28332:28332"
- "28333:28333"
electrs:
build:
context: .
dockerfile: Dockerfile.electrs
container_name: signet-electrs
restart: unless-stopped
user: "0"
depends_on:
- bitcoind
command:
- --network=signet
- --daemon-rpc-addr=bitcoind:38332
- --daemon-p2p-addr=bitcoind:38333
- --electrum-rpc-addr=0.0.0.0:60601
- --db-dir=/data
- --log-filters=INFO
- --cookie-file=/bitcoin/signet/.cookie
volumes:
- bitcoin_data:/bitcoin
- electrs_data:/data
ports:
- "60601:60601"
volumes:
bitcoin_data:
electrs_data:
In the same ~/signet-stack folder, create a file named Dockerfile.electrs with the following content:
FROM rust:1.85-slim AS builder
RUN apt-get update && apt-get install -y clang cmake libclang-dev
RUN cargo install electrs --version 0.10.9
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y libssl3 ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/cargo/bin/electrs /usr/local/bin/electrs
ENTRYPOINT ["electrs"]
From ~/signet-stack, run:
docker compose up -d --build
The first run will take 3–5 minutes as it compiles electrs from Rust source. Subsequent starts are instant.
Watch Bitcoin Core sync the signet chain:
docker logs -f signet-bitcoind
You will see Synchronizing blockheaders followed by UpdateTip messages. Sync is complete when you see progress=1.000000.
The signet chain is ~310,000 blocks and syncs in roughly 15–30 minutes.
Check quickly at any time with:
docker logs signet-bitcoind --tail 5
Once Bitcoin Core is synced, watch electrs index the chain:
docker logs -f signet-electrs
Indexing is complete when you see finished full compaction. This typically takes a few minutes after Bitcoin Core reaches tip.
In Sparrow Wallet running in signet mode (launch with -n signet flag, or switch network via Tools → Restart In → Signet):
127.0.0.160601You should see a successful connection with the server banner:
Welcome to electrs 0.10.9 (Electrum Rust Server)!
After initial setup, the signet stack containers are configured to auto-start whenever Docker Desktop launches (due to the restart: unless-stopped policy).
Simplest method:
Alternative methods:
Use the Docker Desktop GUI to start/stop individual containers, or use command-line from ~/signet-stack:
Start the stack:
docker compose up -d
Stop the stack:
docker compose down
Note: The Bitcoin Core chain data and electrs index are stored in Docker named volumes and persist between restarts. You won't need to resync from scratch – the node will catch up on blocks mined while it was offline (usually takes 1-2 minutes).
To test transactions, you'll need signet coins from a faucet. These coins have no real-world value and are only for testing.
Get a receive address from Sparrow:
Request coins from the faucet:
Visit bitcoinsignetfaucet.com, paste your address, and request coins.
Note: The faucet has rate limits. If your request doesn't go through, check the faucet status or try again later.
If the faucet is temporarily unavailable, search for "bitcoin signet faucet" to find alternative services.
Want guided tutorials alongside your signet node? Padawan Wallet is a mobile Bitcoin learning app built for education.
What you can practice:
Padawan runs on signet and includes 9 built-in tutorials. It automatically gives you signet coins when you first start the app, making it perfect for classroom demonstrations.
electrs fails with "cookie file not found"
Bitcoin Core may still be starting up. Wait 30 seconds and check docker logs signet-bitcoind --tail 5 to confirm it is running.
Sparrow shows "Connection timed out"
Confirm the stack is running with docker ps and that both signet-bitcoind and signet-electrs show as Up.
docker compose not found
Make sure Docker Desktop is running – look for the whale icon in the system tray.