Salvium Node in Docker

A minimal Docker setup for running salviumd, with P2Pool mining built in

What it is

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.

  • Uses prebuilt Linux binaries from github.com/salvium/salvium and the static p2pool-salvium build, so build time is seconds.
  • Runtime base: debian:trixie-slim.
  • Container restarts automatically after host reboots (restart: unless-stopped), and if either daemon dies the pair restarts together.
  • All daemon tuning lives in a plain salvium.conf on the host.
  • One rebuild updates everything, node, p2pool, and deployment files.
View on GitLab ↗
Quick start
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
Ports at a glance
Port Purpose Default binding Public?
19080P2P0.0.0.0Yes
19081RPC (full)127.0.0.1No
19083ZMQ RPC127.0.0.1No
19084ZMQ pub127.0.0.1No
19089Restricted RPC (view only)0.0.0.0Yes
3333P2Pool stratum0.0.0.0Yes, strangers just mine to your wallet
38889P2Pool p2p0.0.0.0Yes

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.

Mining with P2Pool

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.

Full documentation lives in the GitLab repository README, covering configuration, capping disk size with XFS, updating, rollback, troubleshooting, and security details.