A minimal Docker setup for running salviumd, with P2Pool mining built in
A small, opinionated Docker setup that runs a Salvium full node from the official upstream binaries with sensible defaults. Pruned by default, runs as an unprivileged user, and p2pool-salvium is baked into the same container, one flag in .env turns mining on.
debian:trixie-slim.restart: unless-stopped), and if either daemon dies the pair restarts together.salvium.conf on the host.curl -fsSL https://gitlab.com/whiskyrelaxing-group/salvium-node-docker/-/raw/main/install.sh | sh -s -- --autorun
Add --p2pool --wallet SC1youraddress to start mining too. Re-run the same command any time to update. Prefer to see the files first? Clone instead:
git clone https://gitlab.com/whiskyrelaxing-group/salvium-node-docker.git
cd salvium-node-docker
cp .env.example .env
docker compose up -d --build
Initial sync of a pruned mainnet node takes a few hours. Verify it's responding with:
curl -s http://127.0.0.1:19089/get_height
| Port | Purpose | Default binding | Public? |
|---|---|---|---|
19080 | P2P | 0.0.0.0 | Yes |
19081 | RPC (full) | 127.0.0.1 | No |
19083 | ZMQ RPC | 127.0.0.1 | No |
19084 | ZMQ pub | 127.0.0.1 | No |
19089 | Restricted RPC (view only) | 0.0.0.0 | Yes |
3333 | P2Pool stratum | 0.0.0.0 | Yes, strangers just mine to your wallet |
38889 | P2Pool p2p | 0.0.0.0 | Yes |
Only the node internals stay on loopback, the full rpc and zmq sockets, which the built in P2Pool reaches inside the container. The P2Pool ports stay closed until mining is enabled. 19082 is intentionally left free for salvium-wallet-rpc, which runs as a separate process on a trusted machine.
P2Pool is built in, no second setup to run. Set two values in .env and rebuild:
P2POOL_ENABLED=1
WALLET_ADDRESS=SC1youraddress
docker compose up -d --build
p2pool-salvium starts inside the same container once the node rpc answers, wired over loopback, zmq forced on. Point miners at port 3333, LAN rigs use this host's address:
xmrig -o 127.0.0.1:3333 -u x
Raise MEM_LIMIT to 8g when mining, the RandomX dataset alone is close to 3g. Behind NAT everything works outbound with no setup, forward TCP 38889 on your router to also accept inbound P2Pool peers.