My xmrig Miner
This is a simple miner that uses the xmrig miner to mine Monero.
The configuration is set to mine to my local p2pool node, but you can change it to your own.
What is XMRig?
XMRig is a high performance, open source, cross platform RandomX, KawPow, CryptoNight and AstroBWT unified CPU/GPU miner and RandomX benchmark. Official binaries are available for Windows, Linux, macOS and FreeBSD.
How to use this image
Step 1: Clone the GitHub repo:
git clone https://github.com/ivuorinen/docker-xmrig.git
Step 2: Edit the config.json file after cloning it.
- Provide your pool configuration:
- url: your-p2pool-node:3333
- user: your-miner-identifier
- pass: ""
For all the available options, visit XMRig Config File documentation.
Step 3: Deploy the image as a standalone Docker container or to a Kubernetes cluster.
Docker
docker run -dit --rm \
--volume "$(pwd)"/config.json:/xmrig/etc/config.json:ro \
--volume "$(pwd)"/log:/xmrig/log \
--name xmrig ivuorinen/docker-xmrig:latest \
/xmrig/xmrig --config=/xmrig/etc/config.json
If you prefer Docker Compose, edit the docker-compose.yml
manifest as needed and run:
docker-compose up -d
Kubernetes
Step 1: Create a namespace for our XMRig application (optional but recommended):
kubectl create ns xmrig
Step 2: Create a configmap in the new namespace xmrig
from the config.json file:
kubectl create configmap xmrig-config --from-file config.json -n xmrig
remember to edit this file with your own pool configuration and wallet address or it will mine against my anonymised docker wallet
Step 3: Edit the deployment.yaml file. Things you may want to modify include:
replicas: number of desired pods to be running. As I run a 3 worker node Turing Pi cluster, I run 3 replica'simage:tag: to view all available versions, go to the Tags tab of the Docker Hub repo.resources: set appropriate values forcpuandmemoryrequests/limits.affinity: the manifest will schedule only one pod per node, if that's not the desired behavior, remove theaffinityblock.
Step 4: Once you are satisfied with the above manifest, create a deployment:
kubectl -f apply deployment.yaml
Logging
This Docker image sends the container logs to the stdout. To view the logs, run:
docker logs xmrig
For Kubernetes run:
kubectl logs --follow -n xmrig <pod-name>
Persistent logging
Containers are stateless by nature, so their logs will be lost when they shut down.
If you want the logs to persist, enable XMRig syslog output in the config.json file:
"syslog": true,
"log-file": "/xmrig/log/xmrig.log",
And give full permissions to the directory on the host machine:
chmod 777 "$(pwd)"/log
Then use either Docker bind mounts or Kubernetes Persistent Volumes to keep the log file on the host machine. The docker run command above and the docker-compose.yml file already includes this mapping.
Disclaimer
Use at your own disgression. This repository is by no means financial advise to mine cryptocurrency. This is a project to learn how to build containerised applications.
License
The Docker image is licensed under the terms of the MIT License. XMRig is licensed under the GNU General Public License v3.0. See its LICENSE file for details.
Used works from other repositories
This repo is a based on works of:
- jrkalf/xmrig-kryptokrona for XMRIG for Kryptokrona
- Roberto Meléndez for XMRIG for Monero
- Bufanda