Monero p2pool docker-compose
This is an easy to setup installation of Monero's p2pool, a decentralized pool for Monero mining.
Requirements
- docker / podman
- docker-compose
- Huge pages setup and mounted under /dev/hugepages or similar
$ sudo sysctl vm.nr_hugepages=3072
- You can add
vm.nr_hugepages=3072
to /etc/sysctl.conf so it persists reboots.
- Check that you have /dev/hugepages (or other) as a
hugetlbfs
mount
- At least 48 GiB of free space for pruned Monero and p2pool chain data.
- monero runs in pruned mode, but that's still about 38-39 GiB at the time of writing.
- p2pool uses 500 MiB at this point in time, could use more.
- x86_64 or AArch64 system (probably works on others, untested)
- About 4 GiB of RAM. Haven't tested below this, but should help during sync. A bit more works better.
How to
- Clone / download this repository
$ git clone https://github.com/WeebDataHoarder/p2pool-compose && cd p2pool-compose
- Copy .env.example to .env
- Change .env values to fit your needs. This is the main configuration.
- You don't need to change everything, but at least, you SHOULD change
P2POOL_WALLET_ADDRESS
.
- You should probably create a wallet for this. This address is exposed to p2pool peers (although later pruned)
- You can override further by using
docker-compose.override.yml
.
- Build and start the services via docker-compose
$ docker-compose up -d --build
(this will take a while to compile)
- Monero syncing will also start. This can take a few days.
- You can bring everything down via
$ docker-compose down
- View logs via
docker logs
- By default
master
branch of p2pool is used.
- To update (new version, or new p2pool version)
git pull && docker-compose build --no-cache p2pool && docker-compose up -d --build
Notes and other comments
- monerod has higher connection defaults and several presets to have quicker and larger reach when receiving and broadcasting new blocks.
- monerod has a custom patch applied for the special RPC and ZMQ methods p2pool requires. After PR#7891 is merged, this patch won't be necessary.
- p2pool stratum port is by default 3333. You can change this on .env, and can also point xmrig-proxy or similar to this port.
- p2pool will wait until monerod is running and fully synchronized before starting.
- You can attach to p2pool console via
$ docker attach p2pool-compose_p2pool_1
. Detach via Ctrl+p, Ctrl+q
- Everything restarts by default
- If you have other questions, feel free to reach DataHoarder over IRC
#monero-pow @ irc.libera.chat
TODO
- logrotate for p2pool
- However, you can set this up yourself directly pointing to file
/var/lib/docker/volumes/p2pool-compose_p2pool/_data/p2pool.log
Contribution
There is no dev fee. p2pool has no infrastructure. Send donations if you like, or don't.
Donate hashrate to the P2Pool Seed Node we run, at stratum server p2pool-seed.northeurope.cloudapp.azure.com:3333
Think about donating to p2pool's original author as well.