Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #=============== Script monero.sh =======
- #!/bin/bash
- # TODO: Change this.
- location_bitmonero="/path/to/.bitmonero/"
- current_dir=$(pwd)
- pushd $location_bitmonero || cd $location_bitmonero
- PATH=/opt/bin/:$PATH
- export PATH
- DNS_PUBLIC="tcp://127.0.0.1"
- #DNS_PUBLIC="tcp://9.9.9.9"
- export DNS_PUBLIC
- MONERO_RANDOMX_FULL_MEM=1
- export MONERO_RANDOMX_FULL_MEM
- #
- # $1 = file, $2 = max age in hrs - both mandatory.
- function is_file_recent () {
- local retval=0 # defaults to 0, false
- file_tmstmp=$(stat -c %Y $1)
- now_tmstmp=$(date +%s)
- file_age=$(($now_tmstmp - $file_tmstmp))
- #max_age=$(( $2 * 60 )) # for debug (in mins)
- max_age=$(( $2 * 60 * 60))
- if [[ $file_age -gt $max_age ]]; then
- # "Max age exceeded re-download"
- retval=0
- else
- # "File is recent no download"
- retval=1
- fi
- echo ${retval}
- }
- # Download the latest XMR nodes
- # https://monero.fail/haproxy.cfg
- # https://monero.fail/haproxy.cfg?chain=monero&network=mainnet
- function download_haproxy () {
- echo -ne "\nDownloading latest Active Peers.\n"
- wget -q -O haproxy.cfg "https://monero.fail/haproxy.cfg?chain=monero&network=mainnet"
- }
- re_download=$(is_file_recent "haproxy.cfg" 6)
- if [[ $re_download -eq 0 ]]; then
- download_haproxy
- else
- echo Active Peers File is new enough!
- fi
- # ***************************************
- peer_nodes=()
- success_count=0
- MAX_PEER_NODES=15
- for anode in $(cat haproxy.cfg | grep -E '\s+server backend-.+{1,5}\s+' | awk '{print $3}' | grep -vE 'b32\.i2p|\.onion')
- do
- server=$(echo "$anode" | sed 's/\(.*\):\(.*\)/\1/')
- echo -ne "\n===================================\n"
- echo -ne "Checking if Monero Node : $server is alive"
- ping -c 1 -W 5 $server 1>/dev/null 2>&1
- if [[ $? -eq 0 ]] then
- echo -ne " -> [Yes]\n===================================\n"
- # append to array.
- peer_nodes+=($anode)
- ((success_count+=1))
- else
- echo -ne " -> [No]\n===================================\n"
- fi
- if [[ $success_count -eq $MAX_PEER_NODES ]] then
- break
- fi
- done
- add_peer_node_str=""
- for pnode in ${peer_nodes[@]}
- do
- add_peer_node_str+=" --seed-node $pnode "
- done
- # ***************************************
- function download_banlist () {
- # Download the latest ban list.
- # https://github.com/Boog900/monero-ban-list/blob/main/ban_list.txt
- echo -ne "\nDownloading BanList File.\n\n"
- aria2c --allow-overwrite --remote-time -o ban_list.txt https://raw.githubusercontent.com/Boog900/monero-ban-list/refs/heads/main/ban_list.txt
- # bug fix
- touch ban_list.txt
- }
- echo -ne "\n"
- do_download=$(is_file_recent "ban_list.txt" 6)
- if [[ $do_download -eq 0 ]]; then
- download_banlist
- else
- echo "========================================"
- echo BanList File is new enough!
- echo "========================================"
- echo ""
- fi
- cmd="monerod --zmq-pub tcp://127.0.0.1:18083 "
- # Peer Node(s)
- cmd+=$add_peer_node_str
- cmd_heredoc=$( cat <<'EndCmd'
- --enforce-dns-checkpointing --enable-dns-blocklist --ban-list /path/to/ban_list.txt
- --limit-rate-up 512
- --limit-rate-down 512
- --out-peers 100 --in-peers 100
- --max-connections-per-ip 3
- --p2p-bind-port 18080 --p2p-bind-ip 192.188.1.4 --p2p-external-port 18080
- --log-file /mnt/crypto/.bitmonero/bitmonero.log --max-log-files 2
- --no-igd --igd=disabled --db-sync-mode safe:sync --max-concurrency 6
- --pidfile /path/to/monerod.pid --detach
- --rpc-bind-ip 127.0.0.1 --rpc-bind-port 18081
- --public-node --confirm-external-bind
- --rpc-restricted-bind-port 18089 --rpc-restricted-bind-ip 192.188.1.4
- --rpc-payment-allow-free-loopback
- --rpc-ssl-allow-any-cert
- --rpc-ssl enabled
- --log-level 0
- EndCmd
- )
- cmd+=$cmd_heredoc
- echo $cmd
- echo "Countdown ends in 10"
- for a in {1..9}
- do
- echo -ne $a.
- sleep 1
- done
- echo "10"
- sudo -u monero -g monero --preserve-env=DNS_PUBLIC,PATH,MONERO_RANDOMX_FULL_MEM ${cmd}
- popd || cd "$current_dir"
- #=============== Script monero-restart.sh =======
- #!/usr/bin/bash
- # Stop the monerod daemon.
- curl -k -v -X POST https://127.0.0.1:18081/stop_daemon -H 'Content-Type: application/json'
- # Pause before restart
- echo "Restarting in 30"
- sleep 30
- # restart the daemon
- /path/to/bin/monero.sh
- # ============================= Cron job =========
- # Execute script
- SHELL=/bin/bash
- PATH=/path/to/bin/:/sbin:/bin:/usr/sbin:/usr/bin
- * 7 * * * root /path/to/bin/monero-restart.sh 1>>/path/to/bitmonero.log
Add Comment
Please, Sign In to add comment