/p2pool-compose

docker-compose setup of Monero's p2pool

Primary LanguageDockerfileGNU General Public License v3.0GPL-3.0

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
    • $ cp .env.example .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 Monero

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.