mirror of
https://github.com/jwinterm/nodejs-pool.git
synced 2026-10-18 05:31:26 +02:00
Initial commit, moving from private repo. Welcome to the light.
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
CREATE DATABASE pool;
|
||||
GRANT ALL ON pool.* TO pool@`127.0.0.1` IDENTIFIED BY '98erhfiuehw987fh23d';
|
||||
GRANT ALL ON pool.* TO pool@localhost IDENTIFIED BY '98erhfiuehw987fh23d';
|
||||
FLUSH PRIVILEGES;
|
||||
USE pool;
|
||||
CREATE TABLE balance
|
||||
(
|
||||
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
||||
last_edited TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
payment_address VARCHAR(128),
|
||||
payment_id VARCHAR(128) DEFAULT NULL,
|
||||
pool_type VARCHAR(64),
|
||||
bitcoin TINYINT(1),
|
||||
amount BIGINT(26) DEFAULT '0'
|
||||
);
|
||||
CREATE UNIQUE INDEX balance_id_uindex ON balance (id);
|
||||
CREATE UNIQUE INDEX balance_payment_address_pool_type_bitcoin_payment_id_uindex ON balance (payment_address, pool_type, bitcoin, payment_id);
|
||||
CREATE INDEX balance_payment_address_payment_id_index ON balance (payment_address, payment_id);
|
||||
CREATE TABLE bans
|
||||
(
|
||||
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
||||
ip_address VARCHAR(40),
|
||||
mining_address VARCHAR(200),
|
||||
active TINYINT(1) DEFAULT '1',
|
||||
ins_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||||
);
|
||||
CREATE UNIQUE INDEX bans_id_uindex ON bans (id);
|
||||
CREATE TABLE block_log
|
||||
(
|
||||
id INT(11) NOT NULL COMMENT 'Block Height',
|
||||
orphan TINYINT(1) DEFAULT '1',
|
||||
hex VARCHAR(128) PRIMARY KEY NOT NULL,
|
||||
find_time TIMESTAMP,
|
||||
reward BIGINT(20),
|
||||
difficulty INT(11),
|
||||
major_version INT(11),
|
||||
minor_version INT(11)
|
||||
);
|
||||
CREATE UNIQUE INDEX block_log_hex_uindex ON block_log (hex);
|
||||
CREATE TABLE config
|
||||
(
|
||||
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
||||
module VARCHAR(32),
|
||||
item VARCHAR(32),
|
||||
item_value VARCHAR(128),
|
||||
item_type VARCHAR(64),
|
||||
Item_desc VARCHAR(512)
|
||||
);
|
||||
CREATE UNIQUE INDEX config_id_uindex ON config (id);
|
||||
CREATE UNIQUE INDEX config_module_item_uindex ON config (module, item);
|
||||
CREATE TABLE payments
|
||||
(
|
||||
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
||||
unlocked_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
paid_time TIMESTAMP DEFAULT '1970-01-01 00:00:01' NOT NULL,
|
||||
pool_type VARCHAR(64),
|
||||
payment_address VARCHAR(125),
|
||||
transaction_id INT(11) COMMENT 'Transaction ID in the transactions table',
|
||||
bitcoin TINYINT(1) DEFAULT '0',
|
||||
amount BIGINT(20),
|
||||
block_id INT(11),
|
||||
payment_id VARCHAR(128)
|
||||
);
|
||||
CREATE UNIQUE INDEX payments_id_uindex ON payments (id);
|
||||
CREATE INDEX payments_transactions_id_fk ON payments (transaction_id);
|
||||
CREATE INDEX payments_payment_address_payment_id_index ON payments (payment_address, payment_id);
|
||||
CREATE TABLE pools
|
||||
(
|
||||
id INT(11) PRIMARY KEY NOT NULL,
|
||||
ip VARCHAR(72) NOT NULL,
|
||||
last_checkin TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
active TINYINT(1) NOT NULL,
|
||||
blockID INT(11),
|
||||
blockIDTime TIMESTAMP DEFAULT '1970-01-01 00:00:01',
|
||||
hostname VARCHAR(128)
|
||||
);
|
||||
CREATE UNIQUE INDEX pools_id_uindex ON pools (id);
|
||||
CREATE TABLE ports
|
||||
(
|
||||
pool_id INT(11),
|
||||
network_port INT(11),
|
||||
starting_diff INT(11),
|
||||
port_type VARCHAR(64),
|
||||
description VARCHAR(256),
|
||||
hidden TINYINT(1) DEFAULT '0',
|
||||
ip_address VARCHAR(256),
|
||||
lastSeen TIMESTAMP DEFAULT '1970-01-01 00:00:01',
|
||||
miners INT(11),
|
||||
ssl_port TINYINT(1) DEFAULT '0'
|
||||
);
|
||||
CREATE TABLE shapeshiftTxn
|
||||
(
|
||||
id VARCHAR(64) PRIMARY KEY NOT NULL,
|
||||
address VARCHAR(128),
|
||||
paymentID VARCHAR(128),
|
||||
depositType VARCHAR(16),
|
||||
withdrawl VARCHAR(128),
|
||||
withdrawlType VARCHAR(16),
|
||||
returnAddress VARCHAR(128),
|
||||
returnAddressType VARCHAR(16),
|
||||
txnStatus VARCHAR(64),
|
||||
amountDeposited BIGINT(26),
|
||||
amountSent FLOAT,
|
||||
transactionHash VARCHAR(128)
|
||||
);
|
||||
CREATE UNIQUE INDEX shapeshiftTxn_id_uindex ON shapeshiftTxn (id);
|
||||
CREATE TABLE transactions
|
||||
(
|
||||
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
||||
bitcoin TINYINT(1),
|
||||
address VARCHAR(128),
|
||||
payment_id VARCHAR(128),
|
||||
xmr_amt BIGINT(26),
|
||||
btc_amt BIGINT(26),
|
||||
transaction_hash VARCHAR(128),
|
||||
submitted_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
mixin INT(11),
|
||||
fees BIGINT(26),
|
||||
payees INT(11),
|
||||
exchange_rate BIGINT(26),
|
||||
confirmed TINYINT(1),
|
||||
confirmed_time TIMESTAMP DEFAULT '1970-01-01 00:00:01',
|
||||
exchange_name VARCHAR(64),
|
||||
exchange_txn_id VARCHAR(128)
|
||||
);
|
||||
CREATE UNIQUE INDEX transactions_id_uindex ON transactions (id);
|
||||
CREATE INDEX transactions_shapeshiftTxn_id_fk ON transactions (exchange_txn_id);
|
||||
CREATE TABLE users
|
||||
(
|
||||
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
||||
username VARCHAR(256) NOT NULL,
|
||||
pass VARCHAR(64),
|
||||
email VARCHAR(256),
|
||||
admin TINYINT(1) DEFAULT '0',
|
||||
payout_threshold BIGINT(16) DEFAULT '0'
|
||||
);
|
||||
CREATE UNIQUE INDEX users_id_uindex ON users (id);
|
||||
CREATE UNIQUE INDEX users_username_uindex ON users (username);
|
||||
CREATE TABLE xmrtoTxn
|
||||
(
|
||||
id VARCHAR(64) PRIMARY KEY NOT NULL,
|
||||
address VARCHAR(128),
|
||||
paymentID VARCHAR(128),
|
||||
depositType VARCHAR(16),
|
||||
withdrawl VARCHAR(128),
|
||||
withdrawlType VARCHAR(16),
|
||||
returnAddress VARCHAR(128),
|
||||
returnAddressType VARCHAR(16),
|
||||
txnStatus VARCHAR(64),
|
||||
amountDeposited BIGINT(26),
|
||||
amountSent FLOAT,
|
||||
transactionHash VARCHAR(128)
|
||||
);
|
||||
CREATE UNIQUE INDEX xmrtoTxn_id_uindex ON xmrtoTxn (id);
|
||||
CREATE TABLE port_config
|
||||
(
|
||||
poolPort INT(11) PRIMARY KEY NOT NULL,
|
||||
difficulty INT(11) DEFAULT '1000',
|
||||
portDesc VARCHAR(128),
|
||||
portType VARCHAR(16),
|
||||
hidden TINYINT(1) DEFAULT '0',
|
||||
`ssl` TINYINT(1) DEFAULT '0'
|
||||
);
|
||||
CREATE UNIQUE INDEX port_config_poolPort_uindex ON port_config (poolPort);
|
||||
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'minerTimeout', '900', 'int', 'Length of time before a miner is flagged inactive.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'banEnabled', 'true', 'bool', 'Enables/disabled banning of "bad" miners.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'banLength', '-15m', 'string', 'Ban duration except perma-bans');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'targetTime', '30', 'int', 'Time in seconds between share finds');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'trustThreshold', '30', 'int', 'Number of shares before miner trust can kick in.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'banPercent', '25', 'int', 'Percentage of shares that need to be invalid to be banned.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'banThreshold', '30', 'int', 'Number of shares before bans can begin');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'trustedMiners', 'true', 'bool', 'Enable the miner trust system');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'trustChange', '1', 'int', 'Change in the miner trust in percent');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'trustMin', '20', 'int', 'Minimum level of miner trust');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'trustPenalty', '30', 'int', 'Number of shares that must be successful to be trusted, reset to this value if trust share is broken');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'retargetTime', '60', 'int', 'Time between difficulty retargets');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('daemon', 'address', '127.0.0.1', 'string', 'Monero Daemon RPC IP');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('daemon', 'port', '18081', 'int', 'Monero Daemon RPC Port');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('wallet', 'address', '127.0.0.1', 'string', 'Monero Daemon RPC Wallet IP');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('wallet', 'port', '18082', 'int', 'Monero Daemon RPC Wallet Port');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('rpc', 'https', 'false', 'bool', 'Enable RPC over SSL');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'maxDifficulty', '500000', 'int', 'Maximum difficulty for VarDiff');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'minDifficulty', '100', 'int', 'Minimum difficulty for VarDiff');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'varDiffVariance', '20', 'int', 'Percentage out of the target time that difficulty changes');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'varDiffMaxChange', '125', 'int', 'Percentage amount that the difficulty may change');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'btcFee', '1.5', 'float', 'Fee charged for auto withdrawl via BTC');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'ppsFee', '6.5', 'float', 'Fee charged for usage of the PPS pool');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'pplnsFee', '.6', 'float', 'Fee charged for the usage of the PPLNS pool');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'propFee', '.7', 'float', 'Fee charged for the usage of the proportial pool');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'soloFee', '.4', 'float', 'Fee charged for usage of the solo mining pool');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'exchangeMin', '5', 'float', 'Minimum XMR balance for payout to exchange/payment ID');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'walletMin', '.3', 'float', 'Minimum XMR balance for payout to personal wallet');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'devDonation', '3', 'float', 'Donation to XMR core development');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'poolDevDonation', '3', 'float', 'Donation to pool developer');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'denom', '.000001', 'float', 'Minimum balance that will be paid out to.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'blocksRequired', '60', 'int', 'Blocks required to validate a payout before it''s performed.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'sigDivisor', '1000000000000', 'int', 'Divisor for turning coin into human readable amounts ');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'feesForTXN', '10', 'int', 'Amount of XMR that is left from the fees to pay miner fees.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'maxTxnValue', '250', 'int', 'Maximum amount of XMR to send in a single transaction');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'shapeshiftPair', 'xmr_btc', 'string', 'Pair to use in all shapeshift lookups for auto BTC payout');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'coinCode', 'XMR', 'string', 'Coincode to be loaded up w/ the shapeshift getcoins argument.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'allowBitcoin', 'false', 'bool', 'Allow the pool to auto-payout to BTC via ShapeShift');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'exchangeRate', '0', 'float', 'Current exchange rate');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'bestExchange', 'xmrto', 'string', 'Current best exchange');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'mixIn', '4', 'int', 'Mixin count for coins that support such things.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'statsBufferLength', '480', 'int', 'Number of items to be cached in the stats buffers.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pps', 'enable', 'false', 'bool', 'Enable PPS or not');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pplns', 'shareMulti', '2', 'int', 'Multiply this times difficulty to set the N in PPLNS');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pplns', 'shareMultiLog', '3', 'int', 'How many times the difficulty of the current block do we keep in shares before clearing them out');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'blockCleaner', 'true', 'bool', 'Enable the deletion of blocks or not.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pool', 'address', '', 'string', 'Address to mine to, this should be the wallet-rpc address.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'feeAddress', '', 'string', 'Address that pool fees are sent to.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'mailgunKey', '', 'string', 'MailGun API Key for notification');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'mailgunURL', '', 'string', 'MailGun URL for notifications');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'emailFrom', '', 'string', 'From address for the notification emails');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'testnet', 'false', 'bool', 'Does this pool use testnet?');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('pplns', 'enable', 'true', 'bool', 'Enable PPLNS on the pool.');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('solo', 'enable', 'true', 'bool', 'Enable SOLO mining on the pool');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'feeSlewAmount', '.011', 'float', 'Amount to charge for the txn fee');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'feeSlewEnd', '4', 'float', 'Value at which txn fee amount drops to 0');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'rpcPasswordEnabled', 'false', 'bool', 'Does the wallet use a RPC password?');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'rpcPasswordPath', '', 'string', 'Path and file for the RPC password file location');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('payout', 'maxPaymentTxns', '5', 'int', 'Maximum number of transactions in a single payment');
|
||||
INSERT INTO pool.config (module, item, item_value, item_type, Item_desc) VALUES ('general', 'shareHost', '', 'string', 'Host that receives share information');
|
||||
INSERT INTO pool.users (username, pass, email, admin, payout_threshold) VALUES ('Administrator', null, 'Password123', 1, 0);
|
||||
INSERT INTO pool.port_config (poolPort, difficulty, portDesc, portType, hidden, `ssl`) VALUES (3333, 1000, 'Low-End Hardware (Up to 30-40 h/s)', 'pplns', 0, 0);
|
||||
INSERT INTO pool.port_config (poolPort, difficulty, portDesc, portType, hidden, `ssl`) VALUES (5555, 5000, 'Medium-Range Hardware (Up to 160 h/s)', 'pplns', 0, 0);
|
||||
INSERT INTO pool.port_config (poolPort, difficulty, portDesc, portType, hidden, `ssl`) VALUES (7777, 10000, 'High-End Hardware (Anything else!)', 'pplns', 0, 0);
|
||||
INSERT INTO pool.port_config (poolPort, difficulty, portDesc, portType, hidden, `ssl`) VALUES (8001, 20000, 'Claymore SSL', 'pplns', 0, 1);
|
||||
@@ -0,0 +1,10 @@
|
||||
# Catch-all vhost
|
||||
:80 {
|
||||
root /var/www
|
||||
proxy /leafApi 127.0.0.1:8000
|
||||
proxy /api 127.0.0.1:8001 {
|
||||
without /api
|
||||
}
|
||||
cors
|
||||
gzip
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
echo "This assumes that you are doing a green-field install. If you're not, please exit in the next 15 seconds."
|
||||
sleep 15
|
||||
echo "Continuing install, this will prompt you for your password if you're not already running as root and you didn't enable passwordless sudo. Please do not run me as root!"
|
||||
if [[ `whoami` == "root" ]]; then
|
||||
echo "You ran me as root! Do not run me as root!"
|
||||
exit 1
|
||||
fi
|
||||
ROOT_SQL_PASS=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
|
||||
CURUSER=$(whoami)
|
||||
echo "Etc/UTC" | sudo tee -a /etc/timezone
|
||||
sudo rm -rf /etc/localtime
|
||||
sudo ln -s /usr/share/zoneinfo/Zulu /etc/localtime
|
||||
sudo dpkg-reconfigure -f noninteractive tzdata
|
||||
sudo apt-get update
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
|
||||
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $ROOT_SQL_PASS"
|
||||
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $ROOT_SQL_PASS"
|
||||
echo -e "[client]\nuser=root\npassword=$ROOT_SQL_PASS" | sudo tee /root/.my.cnf
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install git python-virtualenv python3-virtualenv curl ntp build-essential screen cmake pkg-config libboost-all-dev libevent-dev libunbound-dev libminiupnpc-dev libunwind8-dev liblzma-dev libldns-dev libexpat1-dev libgtest-dev mysql-server lmdb-utils
|
||||
cd ~
|
||||
git clone https://github.com/Snipa22/nodejs-pool.git # Change this depending on how the deployment goes.
|
||||
cd /usr/src/gtest
|
||||
sudo cmake .
|
||||
sudo make
|
||||
sudo mv libg* /usr/lib/
|
||||
cd ~
|
||||
sudo systemctl enable ntp
|
||||
cd /usr/local/src
|
||||
sudo git clone https://github.com/monero-project/monero.git
|
||||
cd monero
|
||||
sudo git checkout 15eb2bcf6f2132c5410e937186b6a3121147d628
|
||||
sudo git apply ~/nodejs-pool/deployment/fluffy.patch
|
||||
sudo make -j 4
|
||||
sudo cp ~/nodejs-pool/deployment/monero.service /lib/systemd/system/
|
||||
sudo useradd -m monerodaemon -d /home/monerodaemon
|
||||
wget -O /tmp/blockchain.raw https://downloads.getmonero.org/blockchain.raw
|
||||
sudo -u monerodaemon /usr/local/src/monero/build/release/bin/monero-blockchain-import --input-file /tmp/blockchain.raw --batch-size 20000 --database lmdb#fastest --verify off --data-dir /home/monerodaemon/.bitmonero
|
||||
rm -f /tmp/blockchain.raw
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable monero
|
||||
sudo systemctl start monero
|
||||
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
|
||||
source ~/.nvm/nvm.sh
|
||||
nvm install v6.9.2
|
||||
cd ~/nodejs-pool
|
||||
npm install
|
||||
npm install -g pm2
|
||||
openssl req -subj "/C=IT/ST=Pool/L=Daemon/O=Mining Pool/CN=mining.pool" -newkey rsa:2048 -nodes -keyout cert.key -x509 -out cert.pem -days 36500
|
||||
mkdir ~/pool_db/
|
||||
cp config_example.json config.json
|
||||
cd ~
|
||||
git clone https://github.com/hackfanatic/xmrpoolui
|
||||
cd xmrpoolui
|
||||
npm install
|
||||
cd app
|
||||
sudo ln -s `pwd` /var/www
|
||||
cd /tmp/
|
||||
wget -O caddy.tar.gz 'https://caddyserver.com/download/build?os=linux&arch=amd64&features=cors'
|
||||
tar -xf caddy.tar.gz
|
||||
sudo cp caddy /usr/local/bin
|
||||
sudo chown root:root /usr/local/bin/caddy
|
||||
sudo chmod 755 /usr/local/bin/caddy
|
||||
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
|
||||
sudo groupadd -g 33 www-data
|
||||
sudo useradd -g www-data --no-user-group --home-dir /var/www --no-create-home --shell /usr/sbin/nologin --system --uid 33 www-data
|
||||
sudo mkdir /etc/caddy
|
||||
sudo chown -R root:www-data /etc/caddy
|
||||
sudo mkdir /etc/ssl/caddy
|
||||
sudo chown -R www-data:root /etc/ssl/caddy
|
||||
sudo chmod 0770 /etc/ssl/caddy
|
||||
sudo cp ~/nodejs-pool/deployment/caddyfile /etc/caddy/Caddyfile
|
||||
sudo chown www-data:www-data /etc/caddy/Caddyfile
|
||||
sudo chmod 444 /etc/caddy/Caddyfile
|
||||
sudo cp /tmp/init/linux-systemd/caddy.service /etc/systemd/system/
|
||||
sudo chown root:root /etc/systemd/system/caddy.service
|
||||
sudo chmod 744 /etc/systemd/system/caddy.service
|
||||
sudo sed -i 's/ProtectHome=true/ProtectHome=false/' /etc/systemd/system/caddy.service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable caddy.service
|
||||
sudo systemctl start caddy.service
|
||||
cd ~
|
||||
sudo env PATH=$PATH:`pwd`/.nvm/versions/node/v6.9.2/bin `pwd`/.nvm/versions/node/v6.9.2/lib/node_modules/pm2/bin/pm2 startup systemd -u $CURUSER --hp `pwd`
|
||||
cd ~/nodejs-pool
|
||||
sudo chown -R $CURUSER. ~/.pm2
|
||||
pm2 install pm2-logrotate
|
||||
mysql -u root --password=$ROOT_SQL_PASS < deployment/base.sql
|
||||
mysql -u root --password=$ROOT_SQL_PASS pool -e "INSERT INTO monero_live.config (module, item, item_value, item_type, Item_desc) VALUES ('api', 'authKey', '`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`', 'string', 'Auth key sent with all Websocket frames for validation.')"
|
||||
mysql -u root --password=$ROOT_SQL_PASS pool -e "INSERT INTO monero_live.config (module, item, item_value, item_type, Item_desc) VALUES ('api', 'secKey', '`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`', 'string', 'HMAC key for Passwords. JWT Secret Key. Changing this will invalidate all current logins.')"
|
||||
pm2 start init.js --name=api -- --module=api
|
||||
echo "You're setup! Please read the rest of the readme for the remainder of your setup and configuration. These steps include: Setting your Fee Address, Pool Address, Global Domain, and the Mailgun setup!"
|
||||
@@ -0,0 +1,77 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index cee3d8c..c411f2b 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -275,18 +275,21 @@ add_definitions("-DBLOCKCHAIN_DB=${BLOCKCHAIN_DB}")
|
||||
|
||||
# Can't install hook in static build on OSX, because OSX linker does not support --wrap
|
||||
# On ARM, having libunwind package (with .so's only) installed breaks static link.
|
||||
-if(APPLE OR (ARM AND STATIC))
|
||||
- set(DEFAULT_STACK_TRACE OFF)
|
||||
- set(LIBUNWIND_LIBRARIES "")
|
||||
-else()
|
||||
- find_package(Libunwind)
|
||||
- if(LIBUNWIND_FOUND)
|
||||
- set(DEFAULT_STACK_TRACE ON)
|
||||
- else()
|
||||
- set(DEFAULT_STACK_TRACE OFF)
|
||||
- set(LIBUNWIND_LIBRARIES "")
|
||||
- endif()
|
||||
-endif()
|
||||
+#if(APPLE OR (ARM AND STATIC))
|
||||
+# set(DEFAULT_STACK_TRACE OFF)
|
||||
+# set(LIBUNWIND_LIBRARIES "")
|
||||
+#else()
|
||||
+# find_package(Libunwind)
|
||||
+# if(LIBUNWIND_FOUND)
|
||||
+# set(DEFAULT_STACK_TRACE ON)
|
||||
+# else()
|
||||
+# set(DEFAULT_STACK_TRACE OFF)
|
||||
+# set(LIBUNWIND_LIBRARIES "")
|
||||
+# endif()
|
||||
+#endif()
|
||||
+
|
||||
+set(DEFAULT_STACK_TRACE OFF)
|
||||
+set(LIBUNWIND_LIBRARIES "")
|
||||
|
||||
option(STACK_TRACE "Install a hook that dumps stack on exception" ${DEFAULT_STACK_TRACE})
|
||||
|
||||
diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h
|
||||
index 95cbf74..d444bcc 100644
|
||||
--- a/src/cryptonote_config.h
|
||||
+++ b/src/cryptonote_config.h
|
||||
@@ -98,7 +98,7 @@
|
||||
#define P2P_LOCAL_WHITE_PEERLIST_LIMIT 1000
|
||||
#define P2P_LOCAL_GRAY_PEERLIST_LIMIT 5000
|
||||
|
||||
-#define P2P_DEFAULT_CONNECTIONS_COUNT 8
|
||||
+#define P2P_DEFAULT_CONNECTIONS_COUNT 256
|
||||
#define P2P_DEFAULT_HANDSHAKE_INTERVAL 60 //secondes
|
||||
#define P2P_DEFAULT_PACKET_MAX_SIZE 50000000 //50000000 bytes maximum packet size
|
||||
#define P2P_DEFAULT_PEERS_IN_HANDSHAKE 250
|
||||
diff --git a/src/cryptonote_core/tx_pool.cpp b/src/cryptonote_core/tx_pool.cpp
|
||||
index 6ad1390..8a9b7fa 100644
|
||||
--- a/src/cryptonote_core/tx_pool.cpp
|
||||
+++ b/src/cryptonote_core/tx_pool.cpp
|
||||
@@ -619,7 +619,7 @@ namespace cryptonote
|
||||
|
||||
LOG_PRINT_L2("Filling block template, median size " << median_size << ", " << m_txs_by_fee_and_receive_time.size() << " txes in the pool");
|
||||
auto sorted_it = m_txs_by_fee_and_receive_time.begin();
|
||||
- while (sorted_it != m_txs_by_fee_and_receive_time.end())
|
||||
+ while (sorted_it != m_txs_by_fee_and_receive_time.end() && (bl.tx_hashes.size() < 120))
|
||||
{
|
||||
auto tx_it = m_transactions.find(sorted_it->second);
|
||||
LOG_PRINT_L2("Considering " << tx_it->first << ", size " << tx_it->second.blob_size << ", current block size " << total_size << "/" << max_total_size << ", current coinbase " << print_money(best_coinbase));
|
||||
diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl
|
||||
index 73e4fa7..0e9e65a 100644
|
||||
--- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl
|
||||
+++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl
|
||||
@@ -1108,7 +1108,7 @@ namespace cryptonote
|
||||
{
|
||||
if (peer_id && exclude_context.m_connection_id != context.m_connection_id)
|
||||
{
|
||||
- if(m_core.get_testnet() && (support_flags & P2P_SUPPORT_FLAG_FLUFFY_BLOCKS))
|
||||
+ if(support_flags & P2P_SUPPORT_FLAG_FLUFFY_BLOCKS)
|
||||
{
|
||||
MDEBUG("PEER SUPPORTS FLUFFY BLOCKS - RELAYING THIN/COMPACT WHATEVER BLOCK");
|
||||
fluffyConnections.push_back(context.m_connection_id);
|
||||
@@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
echo "This assumes that you are doing a green-field install. If you're not, please exit in the next 15 seconds."
|
||||
sleep 15
|
||||
echo "Continuing install, this will prompt you for your password if you're not already running as root and you didn't enable passwordless sudo. Please do not run me as root!"
|
||||
if [[ `whoami` == "root" ]]; then
|
||||
echo "You ran me as root! Do not run me as root!"
|
||||
exit 1
|
||||
fi
|
||||
CURUSER=$(whoami)
|
||||
echo "Etc/UTC" | sudo tee -a /etc/timezone
|
||||
sudo rm -rf /etc/localtime
|
||||
sudo ln -s /usr/share/zoneinfo/Zulu /etc/localtime
|
||||
sudo dpkg-reconfigure -f noninteractive tzdata
|
||||
sudo apt-get update
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install git python-virtualenv python3-virtualenv curl ntp build-essential screen cmake pkg-config libboost-all-dev libevent-dev libunbound-dev libminiupnpc-dev libunwind8-dev liblzma-dev libldns-dev libexpat1-dev libgtest-dev
|
||||
cd ~
|
||||
git clone https://github.com/Snipa22/nodejs-pool.git # Change this depending on how the deployment goes.
|
||||
cd /usr/src/gtest
|
||||
sudo cmake .
|
||||
sudo make
|
||||
sudo mv libg* /usr/lib/
|
||||
cd ~
|
||||
sudo systemctl enable ntp
|
||||
cd /usr/local/src
|
||||
sudo git clone https://github.com/monero-project/monero.git
|
||||
cd monero
|
||||
sudo git checkout 15eb2bcf6f2132c5410e937186b6a3121147d628
|
||||
sudo git apply ~/nodejs-pool/deployment/fluffy.patch
|
||||
sudo make -j 4
|
||||
sudo cp ~/nodejs-pool/deployment/monero.service /lib/systemd/system/
|
||||
sudo useradd -m monerodaemon -d /home/monerodaemon
|
||||
wget -O /tmp/blockchain.raw https://downloads.getmonero.org/blockchain.raw
|
||||
cd /home/monerodaemon
|
||||
sudo -u monerodaemon /usr/local/src/monero/build/release/bin/monero-blockchain-import --input-file /tmp/blockchain.raw --batch-size 20000 --database lmdb#fastest --verify off --data-dir /home/monerodaemon/.bitmonero
|
||||
rm -f /tmp/blockchain.raw
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable monero
|
||||
sudo systemctl start monero
|
||||
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
|
||||
source ~/.nvm/nvm.sh
|
||||
nvm install v6.9.2
|
||||
cd ~/nodejs-pool
|
||||
npm install
|
||||
npm install -g pm2
|
||||
openssl req -subj "/C=IT/ST=Pool/L=Daemon/O=Mining Pool/CN=mining.pool" -newkey rsa:2048 -nodes -keyout cert.key -x509 -out cert.pem -days 36500
|
||||
cd ~
|
||||
sudo env PATH=$PATH:`pwd`/.nvm/versions/node/v6.9.2/bin `pwd`/.nvm/versions/node/v6.9.2/lib/node_modules/pm2/bin/pm2 startup systemd -u $CURUSER --hp `pwd`
|
||||
sudo chown -R $CURUSER. ~/.pm2
|
||||
pm2 install pm2-logrotate
|
||||
echo "You're setup with a leaf node! Congrats"
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Monero Daemon
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
GuessMainPID=no
|
||||
ExecStart=/usr/local/src/monero/build/release/bin/monerod --rpc-bind-ip 127.0.0.1 --detach --restricted-rpc
|
||||
Restart=always
|
||||
User=monerodaemon
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user