{"id":24305672,"url":"https://github.com/PowPool/xmrpool","last_synced_at":"2025-09-26T09:31:01.140Z","repository":{"id":64303120,"uuid":"423738751","full_name":"PowPool/xmrpool","owner":"PowPool","description":"Improved mining pool for Monero","archived":false,"fork":false,"pushed_at":"2024-12-24T15:27:47.000Z","size":456,"stargazers_count":12,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-16T00:30:34.338Z","etag":null,"topics":["golang","mining-pool","monero","monero-pool","xmr","xmr-pool","xmr-proxy"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PowPool.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-02T07:01:53.000Z","updated_at":"2024-12-24T15:27:45.000Z","dependencies_parsed_at":"2023-09-27T20:14:04.890Z","dependency_job_id":"cb3120ae-9ef1-4a6c-bfe4-17ddd47403ef","html_url":"https://github.com/PowPool/xmrpool","commit_stats":null,"previous_names":["powpool/xmrpool","mutalisk999/xmrpool"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PowPool%2Fxmrpool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PowPool%2Fxmrpool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PowPool%2Fxmrpool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PowPool%2Fxmrpool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PowPool","download_url":"https://codeload.github.com/PowPool/xmrpool/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234300470,"owners_count":18810610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","mining-pool","monero","monero-pool","xmr","xmr-pool","xmr-proxy"],"created_at":"2025-01-17T02:15:25.151Z","updated_at":"2025-09-26T09:30:55.822Z","avatar_url":"https://github.com/PowPool.png","language":"Go","readme":"# xmrpool\n\nHigh performance CryptoNote mining stratum with Web-interface written in Golang.\n\n\n**Stratum feature list:**\n\n* Be your own pool\n* Rigs availability monitoring\n* Keep track of accepts, rejects, blocks stats\n* Easy detection of sick rigs\n* Daemon failover list\n* Concurrent shares processing\n* Beautiful Web-interface\n\n\n## Installation\n\nDependencies:\n\n  * go-1.17\n  * Everything required to build Monero\n  * Monero \u003e= **v0.18.3.1** (sometimes `master` branch required)\n\n### Linux\n\nUse Ubuntu 16.04 LTS.\n\n    sudo apt-get install libssl-dev\n    sudo apt-get install git cmake build-essential pkg-config libboost-all-dev libreadline-dev doxygen libsodium-dev libzmq5-dev\n    sudo apt-get install liblmdb-dev libevent-dev libjson-c-dev uuid-dev libunbound-dev\n\nUse Ubuntu 18.04 LTS.\n\n    sudo apt-get install libssl1.0-dev\n    sudo apt-get install git cmake build-essential pkg-config libboost-all-dev libreadline-dev doxygen libsodium-dev libzmq5-dev \n    sudo apt-get install liblmdb-dev libevent-dev libjson-c-dev uuid-dev libunbound-dev\n\n\nCompile Monero source (with shared libraries option):\n\n    git clone --recursive https://github.com/monero-project/monero.git\n    cd monero\n    git checkout tags/v0.18.3.1 -b v0.18.3.1\n    cmake -DBUILD_SHARED_LIBS=1 -DMANUAL_SUBMODULES=1 .\n    make\n\nInstall Golang and required packages:\n\n    sudo apt install software-properties-common\n    sudo add-apt-repository ppa:longsleep/golang-backports\n    sudo apt-get update\n    sudo apt-get install golang-go\n\nClone:\n\n    git clone https://github.com/PowPool/xmrpool.git\n    cd xmrpool\n\nBuild stratum:\n\n    export MONERO_DIR=[path_of_monero] \n    cmake .\n    make\n    make -f Makefile_build_info\n\n`MONERO_DIR=/path/to/monero` is optional, not needed if both `monero` and `xmrpool` is in the same directory like `/opt/src/`. By default make will search for monero libraries in `../monero`. You can just run `cmake .`.\n\n### Mac OS X\n\nCompile Monero source:\n\n    git clone --recursive https://github.com/monero-project/monero.git\n    cd monero\n    git checkout tags/v0.18.3.1 -b v0.18.3.1\n    cmake .\n    make\n\nInstall Golang and required packages:\n\n    brew update \u0026\u0026 brew install go\n\nClone stratum:\n\n    git clone https://github.com/PowPool/xmrpool.git\n    cd xmrpool\n\nBuild stratum:\n\n    MONERO_DIR=[path_of_monero]  \n    go mod tidy -compat=\"1.17\"\n    cmake .\n    make\n    make -f Makefile_build_info\n\n### Running Stratum\n\n    ./build/bin/xmrpool config.json\n\n* About `Security Password`:\n\nWe use `Security Password` to prevent our important configuration information from being viewed or modified.\nSo we encrypt some important configurations in config.json.\n\n    addressEncrypted\n    redis.passwordEncrypted or redisFailover.passwordEncrypted\n\n* How to encrypt/decrypt\n\nUse function `TestAe64Encode` and `TestAe64Decode` from model `util` in this project.\n\n\nIf you need to bind to privileged ports and don't want to run from `root`:\n\n    sudo apt-get install libcap2-bin\n    sudo setcap 'cap_net_bind_service=+ep' /path/to/xmrpool\n\n## Configuration\n\nConfiguration is self-describing, just copy *config.example.json* to *config.json* and run stratum with path to config file as 1st argument.\n\n```json\n{\n\t// Address for block rewards\n\t\"addressEncrypted\": \"xePkFW8E5OhMuFg/FyQQqCFs2awuArs/QGEAyJcZ8X4mBV6FM+k1vER2WW6lMSUd1cP/ggTXR8j+43qVa+bNijZMdZyrohoT/7rNUj/toDFGVxzDTDtrRvVs9LbRGtIx\",\n\t// Don't validate address\n\t\"bypassAddressValidation\": false,\n\t// Don't validate shares\n\t\"bypassShareValidation\": false,\n\n\t\"threads\": 16,\n\t\"coin\": \"xmr\",\n\n\t\"estimationWindow\": \"15m\",\n\t\"luckWindow\": \"24h\",\n\t\"largeLuckWindow\": \"72h\",\n\n\t// Interval to poll daemon for new jobs\n\t\"blockRefreshInterval\": \"1s\",\n\t\"hashRateExpiration\": \"3h\",\n\n\t\"purgeInterval\": \"10m\",\n\t\"hashrateWindow\": \"30m\",\n\t\"hashrateLargeWindow\": \"3h\",\n\n\t\"log\": {\n\t\t\"logSetLevel\": 10\n\t},\n\n\t\"stratum\": {\n\t\t\"enabled\": true,\n\t\t// Socket timeout\n\t\t\"timeout\": \"15m\",\n\t\t\"listen\": [\n\t\t\t{\n\t\t\t\t\"host\": \"0.0.0.0\",\n\t\t\t\t\"port\": 3003,\n\t\t\t\t\"diff\": 300000,\n\t\t\t\t\"maxConn\": 50000\n\t\t\t}\n\t\t]\n\t},\n\n\t\"stratumTls\": {\n\t\t\"enabled\": false,\n\t\t// Socket timeout\n\t\t\"timeout\": \"15m\",\n\t\t\"listen\": [\n\t\t\t{\n\t\t\t\t\"host\": \"0.0.0.0\",\n\t\t\t\t\"port\": 13003,\n\t\t\t\t\"diff\": 300000,\n\t\t\t\t\"maxConn\": 50000\n\t\t\t}\n\t\t],\n\n\t\t\"tlsCert\": \"certs/server.pem\",\n\t\t\"tlsKey\": \"certs/server.key\"\n\t},\n\n\t\"frontend\": {\n\t\t\"enabled\": false,\n\t\t\"listen\": \"0.0.0.0:8082\",\n\t\t\"login\": \"admin\",\n\t\t\"password\": \"\",\n\t\t\"hideIP\": false\n\t},\n\n\t\"upstreamCheckInterval\": \"5s\",\n\t// upstream to monerod rpc-api, multiple monerod supported\n\t\"upstream\": [\n\t\t{\n\t\t\t\"name\": \"Main\",\n\t\t\t\"host\": \"192.168.33.166\",\n\t\t\t\"port\": 18081,\n\t\t\t\"timeout\": \"3s\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Backup1\",\n\t\t\t\"host\": \"192.168.26.83\",\n\t\t\t\"port\": 18081,\n\t\t\t\"timeout\": \"3s\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Backup2\",\n\t\t\t\"host\": \"192.168.33.243\",\n\t\t\t\"port\": 18081,\n\t\t\t\"timeout\": \"3s\"\n\t\t}\n\t],\n\t// redis single node mode\n\t\"redis\": {\n\t\t\"enabled\": true,\n\t\t\"endpoint\": \"127.0.0.1:6379\",\n\t\t\"poolSize\": 10,\n\t\t\"database\": 0,\n\t\t\"passwordEncrypted\": \"oXyI5OTy+nRTshESi80X8KKSjDiLksuw1mhwRg2z0Ic=\"\n\t},\n\t// redis failover mode\n\t\"redisFailover\": {\n\t\t\"enabled\": false,\n\t\t\"masterName\": \"mymaster\",\n\t\t\"sentinelEndpoints\": [\"192.168.33.166:26379\", \"192.168.26.83:26379\", \"192.168.33.243:26379\"],\n\t\t\"poolSize\": 10,\n\t\t\"database\": 0,\n\t\t\"passwordEncrypted\": \"oXyI5OTy+nRTshESi80X8KKSjDiLksuw1mhwRg2z0Ic=\"\n\t},\n\n\t\"unlocker\": {\n\t\t\"enabled\": true,\n\t\t\"poolFee\": 1.0,\n\t\t\"poolFeeAddress\": \"\",\n\t\t\"donate\": false,\n\t\t\"depth\": 6,\n\t\t\"immatureDepth\": 3,\n\t\t\"keepTxFees\": false,\n\t\t\"interval\": \"10m\",\n\t\t\"daemonName\": \"unlocker\",\n\t\t\"daemonHost\": \"192.168.33.166\",\n\t\t\"daemonPort\": 18081,\n\t\t\"timeout\": \"10s\"\n\t},\n\n\t\"newrelicEnabled\": false,\n\t\"newrelicName\": \"MyStratum\",\n\t\"newrelicKey\": \"SECRET_KEY\",\n\t\"newrelicVerbose\": false\n}\n```\n\nYou must use `anything.WorkerID` as username in your miner. Either disable address validation or use `\u003caddress\u003e.WorkerID` as username. If there is no workerID specified your rig stats will be merged under `0` worker. If mining software contains dev fee rounds its stats will usually appear under `0` worker. This stratum acts like your own pool, the only exception is that you will get rewarded only after block found, shares only used for stats.\n\n\n### Mining tools\n\n* [xmrig](https://github.com/xmrig/xmrig)\n* [xmr-stak](https://github.com/fireice-uk/xmr-stak)\n\n\n### License\n\nReleased under the GNU General Public License v2.\n\nhttp://www.gnu.org/licenses/gpl-2.0.html\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPowPool%2Fxmrpool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPowPool%2Fxmrpool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPowPool%2Fxmrpool/lists"}