P2Pool-Salvium Setup Guide

Decentralized mining for Salvium: no pool fees, no registration

Note: This guide assumes basic familiarity with using a terminal/command prompt and navigating your filesystem. If you're new to command-line tools, you may want to review those basics first.

Quick Navigation

How It Works

P2Pool mining involves three components running on your machine, each connecting to its respective network:

[Miner/XMRig] ----> [p2pool-salvium] <----> [salviumd] :3333 | | | | v v P2Pool Network Salvium Network (Sidechain) (Blockchain)
  • salviumd: syncs with the blockchain and communicates with p2pool-salvium via ZMQ and RPC.
  • p2pool-salvium: coordinates mining work and syncs with the decentralized P2Pool sidechain.
  • Miner: connects to p2pool-salvium's stratum server (port 3333) and does the actual mining.

Requirements

  • 50+ GB free disk space (for blockchain)
  • 4+ GB RAM recommended
  • Salvium wallet address (starts with SC1)
  • Stable internet connection
1
Download the Software

You'll need three pieces of software: the Salvium node (salviumd), p2pool-salvium, and a miner. XMRig is the standard choice.

Salvium Node

Download the latest Salvium release:

Salvium Releases
# Extract the archive tar -xvf salvium-linux-x64-*.tar.bz2 cd salvium-*

P2Pool-Salvium

Download the latest p2pool-salvium binary release:

P2Pool Releases

Linux builds are available for multiple architectures. Pick the one matching your hardware:

  • Linux x64 (glibc): standard dynamically linked build for x86_64 Intel and AMD on a modern distro using glibc, such as Debian, Ubuntu, or Fedora.
  • Linux x64 (static/musl): fully static musl build for x86_64 Intel and AMD. It is portable across distributions and works when your distro is missing runtime libraries, such as on Alpine, older systems, or minimal containers.
  • Linux aarch64: ARM systems running a 64 bit kernel, such as the Raspberry Pi 4, Raspberry Pi 5, and ARM servers.
  • Linux riscv64: RISC-V systems running a 64 bit kernel.
# Extract p2pool (substitute the archive name for your architecture) tar -xvf p2pool-salvium-linux-*.tar.gz
If the Linux x64 (glibc) binary complains about missing .so files or a too-old glibc, grab the Linux x64 (static/musl) variant instead. It has no external library requirements and runs on essentially any 64-bit x86 Linux.

XMRig

Download the latest XMRig miner for Linux:

XMRig Downloads

Keep XMRig in its own directory rather than mixing its files in with p2pool's:

mkdir -p ~/xmrig cd ~/xmrig tar -xvf /path/to/xmrig-*-linux-*.tar.gz --strip-components=1
2
Run the Salvium Node

For a robust setup, run salviumd as a dedicated system user managed by systemd. This keeps the node isolated, ensures it starts on boot, and restarts automatically if it crashes.

Create a Dedicated salvium User

Create a system user account for the daemon to run under:

sudo useradd -m -s /bin/bash salvium

Move (or extract) the salvium binaries into /home/salvium/salvium/ and ensure the user owns them:

sudo mkdir -p /home/salvium/salvium sudo cp salvium-*/* /home/salvium/salvium/ sudo mkdir -p /home/salvium/.salvium/logs sudo chown -R salvium:salvium /home/salvium

Create a salvium.conf

Create the config file at /home/salvium/.salvium/salvium.conf. Below is the configuration used on the WhiskyMine node, which you can use as a starting point:

data-dir=/home/salvium/.salvium log-file=/home/salvium/.salvium/logs/salvium.log log-level=0 max-log-file-size=10485760 max-concurrency=12 public-node=0 zmq-rpc-bind-ip=0.0.0.0 zmq-rpc-bind-port=19083 zmq-pub=tcp://0.0.0.0:19084 out-peers=128 in-peers=128 enforce-dns-checkpointing=1 prep-blocks-threads=8 fast-block-sync=0 show-time-stats=1 block-sync-size=0 check-updates=disabled enable-dns-blocklist=1 disable-dns-checkpoints=0 rpc-ssl=disabled restricted-rpc=0 disable-rpc-ban=1 no-igd=0 no-zmq=0 sync-pruned-blocks=0 prune-blockchain=no db-sync-mode=safe:sync p2p-bind-ip=0.0.0.0 p2p-bind-port=19080 pad-transactions=no rpc-bind-port=19081 rpc-bind-ip=0.0.0.0 confirm-external-bind=1 rpc-restricted-bind-ip=0.0.0.0 rpc-restricted-bind-port=19089 no-fluffy-blocks=1 rpc-max-connections-per-public-ip=4096 rpc-max-connections-per-private-ip=4096 rpc-max-connections=4096 max-connections-per-ip=4096 add-priority-node=seed01.salvium.io:19080 add-priority-node=seed02.salvium.io:19080 add-priority-node=seed03.salvium.io:19080
The zmq-pub entry is required for p2pool-salvium to receive block notifications. Adjust max-concurrency and prep-blocks-threads to match your CPU.

Create the systemd Unit File

Create /etc/systemd/system/salviumd.service with the following contents:

[Unit] Description=Salvium Node Daemon After=network-online.target [Service] ExecStart=/home/salvium/salvium/salviumd --detach --config-file=/home/salvium/.salvium/salvium.conf --pidfile /run/salvium/salviumd.pid ExecStartPost=/bin/sleep 1 PIDFile=/run/salvium/salviumd.pid Type=forking Restart=always RestartSec=30 User=salvium Group=salvium RuntimeDirectory=salvium StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target

Enable and Start the Service

sudo systemctl daemon-reload sudo systemctl enable --now salviumd sudo systemctl status salviumd

Watch the sync progress via the journal or the log file:

sudo journalctl -u salviumd -f # or sudo tail -f /home/salvium/.salvium/logs/salvium.log

Initial sync may take several hours. When complete, you'll see output like:

Height: 425000/425000 (100.0%) on mainnet, net hash 1.23 GH/s...
Tip: To speed up initial sync, you can download a blockchain export from the WhiskyMine homepage if you have the salvium-blockchain-import tool.
3
Set Up & Start P2Pool

We'll set up a dedicated ~/p2pool/ directory in your regular user account (not the salvium system user) and run p2pool inside a tmux session via a small control script so it survives terminal disconnects.

Install tmux

The run script below uses tmux to keep p2pool running across SSH disconnects:

sudo apt install tmux

Place the Binary

Create the working directory and drop the p2pool-salvium binary you extracted in Step 1 into it:

mkdir -p ~/p2pool cp /path/to/extracted/p2pool-salvium ~/p2pool/ chmod +x ~/p2pool/p2pool-salvium

Create a Run Script

Save the following as ~/run_p2pool.sh. It auto-launches itself inside a detached tmux session named p2pool, so you can disconnect from your shell (or SSH) without killing the process:

#!/bin/bash if [ -z "$TMUX" ]; then exec tmux new-session -d -s p2pool "$0" exit # Exit the current script after starting the new tmux session fi cd ~/p2pool/ ./p2pool-salvium \ --host 127.0.0.1 \ --rpc-port 19081 \ --zmq-port 19084 \ --wallet SC1YourAddressHere \ --stratum 0.0.0.0:3333 \ --loglevel 3 \ --p2p 0.0.0.0:38889 \ --inpeers 64 \ --outpeers 64

Replace SC1YourAddressHere with your actual Salvium wallet address, then make it executable and run it:

chmod +x ~/p2pool/run_p2pool.sh ~/p2pool/run_p2pool.sh
Never share your seed phrase or private keys. You only need your public wallet address for mining.

Attaching & Detaching with tmux

The script starts p2pool in a detached tmux session. To watch its output:

# Attach to the running p2pool session tmux attach -t p2pool # Detach (leaves p2pool running): press Ctrl-b then d # List running tmux sessions tmux ls # Kill the session (stops p2pool) tmux kill-session -t p2pool
Inside tmux, the prefix is Ctrl-b. So Ctrl-b then d detaches, Ctrl-b then [ enters scrollback mode (use arrow keys / PgUp / PgDn, press q to exit).

P2Pool will start syncing its own sidechain. When ready, you'll see:

SIDECHAIN LOADED - MINING IS NOW ENABLED
4
Connect Your Miner

Point your miner to p2pool's stratum server:

Pool: 127.0.0.1:3333 Username: YOUR_SALVIUM_ADDRESS Password: x

XMRig Example

cd ~/xmrig ./xmrig -o 127.0.0.1:3333 -u SC1YourAddressHere -p x --algo rx/0
5
Verify It's Working

Check the p2pool observer to see your miner:

P2Pool Observer

Look for:

  • Your address in the miners list
  • Shares being found
  • Estimated hashrate matching your miner
Payouts happen directly to your wallet when the pool finds a block. No minimum payout threshold!

Requirements

  • Windows 10 or later (64-bit)
  • 50+ GB free disk space (for blockchain)
  • 4+ GB RAM recommended
  • Salvium wallet address (starts with SC1)
  • Stable internet connection
1
Download the Software

Download Salvium, P2Pool, and XMRig for Windows. From the P2Pool releases page, grab the Windows x64 archive:

Salvium (Windows) P2Pool (Windows) XMRig (Windows)

Extract each ZIP file to its own folder. Salvium and p2pool can share a folder, but XMRig should stay in a separate folder of its own:

C:\Salvium\ ├── salviumd.exe ├── salvium-wallet-cli.exe ├── salvium-wallet-rpc.exe └── p2pool-salvium.exe C:\xmrig\ ├── xmrig.exe ├── WinRing0x64.sys └── config.json
WinRing0x64.sys ships inside the XMRig zip and must stay in the same folder as xmrig.exe. XMRig uses it to enable MSR tweaks and other privileged CPU access on Windows. config.json is only needed if you want to launch XMRig by clicking the executable in Windows Explorer. If you launch it from a Command Prompt with flags as shown later, you can ignore it.
[Screenshot: Extracted files in Windows Explorer]
2
Run the Salvium Node

Open Command Prompt (cmd) or PowerShell and navigate to your Salvium folder:

cd C:\Salvium salviumd.exe --zmq-pub tcp://127.0.0.1:19083 --disable-dns-checkpoints
Windows Firewall may prompt you to allow network access. Click "Allow" for private networks.

Wait for the blockchain to sync (may take several hours on first run):

[Screenshot: salviumd syncing in Command Prompt]
Tip: You can create a batch file (.bat) to start salviumd with the correct flags automatically.
3
Start P2Pool

Open a new Command Prompt window (keep salviumd running) and start p2pool:

cd C:\Salvium p2pool-salvium.exe --host 127.0.0.1 --loglevel 1 --wallet YOUR_SALVIUM_ADDRESS

Replace YOUR_SALVIUM_ADDRESS with your wallet address starting with SC1.

[Screenshot: p2pool running in Command Prompt]

Create a Batch File (Optional)

Create a file called start-p2pool.bat with:

@echo off cd C:\Salvium p2pool-salvium.exe --host 127.0.0.1 --loglevel 1 --wallet SC1YourAddressHere pause
4
Connect Your Miner

Configure your mining software to connect to p2pool:

Pool Address: 127.0.0.1:3333 Username: YOUR_SALVIUM_ADDRESS Password: x

XMRig on Windows

Edit your config.json or run from command line:

xmrig.exe -o 127.0.0.1:3333 -u SC1YourAddressHere -p x --algo rx/0
[Screenshot: XMRig mining on Windows]
5
Verify It's Working

Check the p2pool observer to confirm your miner is contributing:

P2Pool Observer

You should see:

  • Your wallet address in the miners list
  • Shares being submitted
  • Your hashrate displayed
Payouts go directly to your wallet when p2pool finds a block. No waiting, no minimums!
Performance Tips

Enable Huge Pages. This significantly improves RandomX mining performance.

  • Linux: Run sudo sysctl -w vm.nr_hugepages=1280 (or add to /etc/sysctl.conf for persistence)
  • Windows: Run XMRig as Administrator once to enable huge pages automatically

Use an SSD. The blockchain sync and node performance benefit greatly from SSD storage versus traditional hard drives.

Keep Software Updated. Check for updates to salviumd, p2pool-salvium, and your mining software periodically for performance improvements and bug fixes.

Troubleshooting

Common Issues

P2Pool can't connect to salviumd

  • Make sure salviumd is fully synced
  • Check that --zmq-pub tcp://127.0.0.1:19084 flag is set
  • Verify no firewall is blocking local connections

Miner shows 0 hashrate on observer

  • It takes a few minutes for stats to appear
  • Ensure your wallet address is correct
  • Check that shares are being accepted in p2pool output

No payouts received

  • P2Pool only pays when it finds a block
  • Check the observer for recent block finds
  • Your share of the payout depends on your contribution

P2Pool sidechain not syncing / stuck syncing

  • If you're behind NAT (router), you need to forward the P2Pool p2p port (default: 38889 TCP) to the machine running p2pool-salvium
  • Without port forwarding, other P2Pool nodes may not be able to connect to you, which can cause sync issues
  • Check your router's settings for "Port Forwarding" or "Virtual Server" options
  • You can verify the port is open using online port checking tools
  • Related flags:
    • --p2p-external-port: use if your router maps to a different external port than your local p2p port.
    • --no-upnp: disable automatic UPnP port forwarding.

Questions? Join the Salvium community on Discord