Come costruire e rendere operativo un Secure Node ZenCash
Requisiti Base per un Secure Node
Il server ha bisogno di un processore e di un sistema operativo a 64 bit per soddisfare i requisiti di un Secure Node. Inoltre ha bisogno dell’accesso ad un processore core decente e ad un totale di 4 GB di RAM, che può includere uno swap se l’accesso alla memoria è abbastanza veloce.
Per poter ottenere la remunerazione di un Secure Node ZenCash, il server del Secure Node deve essere in grado di svolgere i calcoli richiesti in meno di 5 minuti, o 300 secondi. Ciò comporta la creazione di una Transazione Protetta ZenCash, sia dimostrando l’adeguatezza del server che aiutando a creare più transazioni protette al giorno, rafforzando la sicurezza di ogni utente delle Transazioni Protette.
Per alcuni server, un pacchetto VPS da 1GB di RAM è sufficiente. Per altri provider, è necessario affittare una VPS da 4GB di RAM.
Richiederà inoltre un indirizzo IPv4 or IPv6, e un certificato TLS. Ciò significa che avrai bisogno anche di un dominio. Questa guida mostra come ottenere un certificato gratis eseguendo uno script sul server. Comprare un certificato per il tuo Secure Node sarà più sicuro, ma anche più costoso.
Questa guida mostra come fare l’installazione utilizzando Ubuntu 16.04. Altre versioni di linux o di unix dovrebbero andare bene ugualmente. Questa è una guida base pensata per sistemisti linux esperti per copiare e incollare i comandi velocemente.
Installa Linux OS su una VPS o sul tuo server
NON ESEGUIRE QUESTA INSTALLAZIONE COME UTENTE ROOT!
Guarda il mio tutorial su Come Configurare una VPS se non sai come configurare un utente non-root e una basic authentication.
Inoltre, sono disponibili tutorial su Linode se non sai come configurare un server per un utente normale:
Come iniziare con una VPS Linode
Creare un Nodo ZenCash
Se hai bisogno di assistenza, unisciti a ZenCash Discord e chiedi aiuto sul canale #securenodes
Controlla la memoria disponibile e lo spazio sul disco:
free -h df -h
Se non hai più di 5GB di memoria quando aggiungi la memoria disponibile e swap, aggiungi al server dello spazio swap:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Fai risalire lo swap con un riavvio:
sudo su - cat <<EOF >> /etc/fstab /swapfile none swap sw 0 0 EOF exit
Fai lavorare meglio lo swap, anche quello già esistente se non ne aggiungi uno. Questa configurazione fa si che il server non utilizzi il disco come memoria finché la RAM non è utilizzata al 90%:
sudo su - cat <<EOF >> /etc/sysctl.conf vm.swappiness=10 EOF exit
Controlla nuovamente la memoria disponibile e lo spazio sul disco:
free -h df -h
Opzione 1 – Installa zen da pacchetti – più veloce
Installa Zen da pacchetti da questa pagina – https://zencashofficial.gith
sudo apt-get update sudo apt-get install apt-transport-https lsb-release echo 'deb https://zencashofficial.github.io/repo/ '$(lsb_release -cs)' main' | sudo tee --append /etc/apt/sources.list.d/zen.list gpg --keyserver ha.pool.sks-keyservers.net --recv 219F55740BBF7A1CE368BA45FB7053CE4991B669 gpg --export 219F55740BBF7A1CE368BA45FB7053CE4991B669 | sudo apt-key add - sudo apt-get update sudo apt-get install zen # to install Zen zen-fetch-params
FINE OPZIONE 1 – Installa Zen da pacchetti
Puoi vedere l’Opzione 2 per installare da sorgente al fondo della pagina
Configura Zen
Esegui zend una volta e leggi il messaggio. Dopo si ferma.
zend
Crea un nuovo file di configurazione di zen. Copialo e incollalo all’interno della riga di comando:
cat <<EOF > ~/.zen/zen.conf rpcuser=zenuserorsomebettername rpcpassword=replacethiswithagoodpassword rpcport=18231 rpcallowip=127.0.0.1 server=1 daemon=1 listen=1 txindex=1 logtimestamps=1 ### testnet config #testnet=1 EOF
Esegui l’applicazione di Zen come demone:
zend
Controlla lo status e assicurati che i blocchi stiano aumentando:
zen-cli getinfo
Installa un certificato gratuitamente da LetsEncrypt
Crea un Record A per il tuo host sul pannello di controllo del DNS per il tuo dominio. Questo è il tuo FQDN
Ovunque ci sia una parola <MAIUSCOLA> devi inserire un valore valido. Per esempio, l’ <FQDN> del server del blog di ZenCash è blog.horizen.io
Controlla che la propagazione del dominio sia completata e che il dominio sia abbinato all’indirizzo IP pubblico del tuo server:
ping <FQDN>
Installa lo script acme per creare un certificato:
sudo apt install socat cd git clone https://github.com/Neilpang/acme.sh.git cd acme.sh ./acme.sh --install
Crea il certificato:
FQDN=<FQDN>
echo $FQDN
sudo ~/.acme.sh/acme.sh --issue --standalone -d $FQDN
Dovrebbe dirti dove sono i tuoi certificati. Dovrebbero essere in:
~/.acme.sh/<FQDN>
Installa il comando crontab che controllerà la scadenza dello script e se necessario lo rinnoverà:
sudo crontab -e
Inserisci questo al fondo del file crontab:
6 0 * * * "/home/<USER>/.acme.sh"/acme.sh --cron --home "/home/<USER>/.acme.sh" > /dev/null
Copia il certificato intermedio su Ubuntu e installalo. Il miglior modo per farlo è copiare la prossima sezione in un file di testo, come Notepad, sostituendo il tuo username e l’FQDN ai campi <USER> e <FQDN>, dopo di che incollare e copiare il testo nella riga di comando di linux. Finché resti loggato per il resto della guida, non dovresti copiare e incollare più di una volta la riga dell’FQDN in alto. Usa tab, spazio, enter per navigare nel menù dei certificati CA:
FQDN=<FQDN> echo "<USER> is $USER" echo "<FQDN> is $FQDN" sudo cp /home/$USER/.acme.sh/$FQDN/ca.cer /usr/share/ca-certificates/ca.crt sudo dpkg-reconfigure ca-certificates
Arresta l’applicazione zen e configura la posizione del certificato, dopo di che avvia nuovamente zend:
FQDN=<FQDN> zen-cli stop cat <<EOF >> ~/.zen/zen.conf tlscertpath=/home/$USER/.acme.sh/$FQDN/$FQDN.cer tlskeypath=/home/$USER/.acme.sh/$FQDN/$FQDN.key EOF zend
Controlla che il certificato TLS sia verificato – una riga dovrebbe dire “tls_cert_verified”:
zen-cli getnetworkinfo
Configura i Requisiti per un Secure Node
Crea un indirizzo trasparente sul tuo swing wallet – inviaci 42 zen. Questo è l’indirizzo di deposito <T_ADDR>. Assicurati che sia inserito ZEN all’interno dell’indirizzo, altrimenti il tuo Secure Node non eseguirà i suoi controlli.
Controlla se il nodo ha già un indirizzo protetto:
zen-cli z_listaddresses
Se non lo ha, crea un indirizzo protetto sul nodo zen:
zen-cli z_getnewaddress
Questo indirizzo dovrà fare riferimento a <Z_ADDR>. Invia 4 o 5 transazioni tra 0.1 e 0.25 zen a <Z_ADDR> dal wallet ZenCash che hai eseguito sul tuo PC o Mac. Controlla che il nodo li riconosca come fondi. Sei pronto quando ha più di 1 ZEN:
zen-cli z_gettotalbalance
Se il bilancio è ancora a zero, la blockchain potrebbe non essere del tutto aggiornata. Controlla con il comando:
zen-cli getinfo
oppure
watch zen-cli getinfo
Installa l’applicazione tracker. Se la stai aggiornando, leggi qui le istruzioni per l’aggiornamento: https://githu
Installa npm e Node.js:
sudo apt -y install npm sudo npm install -g n sudo n latest
Clona questa repository e poi installa i moduli del nodo:
mkdir ~/zencash cd ~/zencash git clone https://github.com/HorizenOfficial/secnodetracker.git cd secnodetracker npm install
Esegui l’applicazione per il setup del nodo. Avrai bisogno del <T_ADDR> e di un indirizzo email per ricevere gli alert.
node setup.js
Avvia l’app di tracking e assicurati che funzioni:
node app.js
Controlla lo stato del tuo nodo sul sito Secure Node Tracker:
https://securenodes2.zensystem.io/
Se ti sembra che sia registrato correttamente, e ti sembra che nel complesso vada bene, premi ctrl-c per arrestare l’app. Dopo eseguiremo l’app del nodo come processo: il riferimento è il post di psyrax sul blog https://www.zen-solutions
cd ~/zencash/secnodetracker/
sudo npm install pm2 -g
pm2 start app.js --name securenodetracker
Esegui il boot:
pm2 startup
Dovrai copiare e incollare un comando per far si che pm2 si esegua in boot – ecco come fare
Installa e configura monit così si avvia l’applicazione zen node. Installa monit:
sudo apt install monit
Crea un piccolo file per avviare zend. Editalo con:
nano ~/zen_node.sh or vim ~/zen_node.sh
Incollalo nel file. Sostituisci il tuo username a <USER>
#!/bin/bash PID_FILE='/home/<USER>/.zen/zen_node.pid' start() { touch $PID_FILE eval "/bin/su <USER> -c '/usr/bin/zend 2>&1 >> /dev/null'" PID=$(ps aux | grep zend | grep -v grep | awk '{print $2}') echo "Starting zend with PID $PID" echo $PID > $PID_FILE } stop () { pkill zend rm $PID_FILE echo "Stopping zend" } case $1 in start) start ;; stop) stop ;; *) echo "usage: zend {start|stop}" ;; esac exit 0
Rendi eseguibile il file di supporto:
chmod u+x ~/zen_node.sh
Aggiungi le impostazioni di configurazione in fondo alla configurazione di monit modificandolo:
sudo nano /etc/monit/monitrc or sudo vim /etc/monit/monitrc
Copia questo in fondo al file. Sostituisci il tuo username a <USER>:
### added on setup for zend set httpd port 2812 use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server # ### zend process control check process zend with pidfile /home/<USER>/.zen/zen_node.pid start program = "/home/<USER>/zen_node.sh start" with timeout 60 seconds stop program = "/home/<USER>/zen_node.sh stop"
Carica la nuova configurazione:
sudo monit reload
Abilita il monit:
sudo monit start zend
É fatta. Devi solo fare il passaggio sopra. Puoi controllare lo stato del monit con il comando:
sudo monit status
Questo manterrà attiva l’applicazione zend. Se la arresti, questo la rieseguirà. Se vuoi arrestarla davvero, scrivi:
sudo monit stop zend
Aggiungere una Sicurezza di Base al Server
Crea un firewall:
sudo ufw default allow outgoing sudo ufw default deny incoming sudo ufw allow ssh/tcp sudo ufw limit ssh/tcp sudo ufw allow http/tcp sudo ufw allow https/tcp sudo ufw allow 9033/tcp sudo ufw logging on
sudo ufw enable
Installa e abilita il blocco dei dictionary attack sui tentativi di accesso:
sudo apt -y install fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban
Installa un rootkit detector:
sudo apt -y install rkhunter
Quando richiede la configurazione di una mail, scegli il sito internet e scrivilo nel tuo FQDN nella prossima pagina. Crea uno script di aggiornamento che aggiornerà anche il rootkit detector dopo che hai aggiornato il tuo nodo:
cat <<EOF > ~/upgrade_script.sh #!/bin/bash sudo apt update sudo apt -y dist-upgrade sudo apt -y autoremove sudo rkhunter --propupd EOF
Modifica i permessi per abilitare l’esecuzione dello script:
chmod u+x ~/upgrade_script.sh
Quando vuoi aggiornare il nodo, esegui lo script di aggiornamento scrivendo:
sudo ~/upgrade_script.sh
Ora dovresti avere un Secure Node di ZenCash attivo. Spero che continui a soddisfare con successo i tempi di calcolo.
Test Finale
Riavvia il tuo server e controlla che tutto risalga e riparta di nuovo correttamente.
sudo reboot
Dopo il riavvio, riconnettiti, e controlla che tutto funzioni:
sudo monit status pm2 status zen-cli getinfo zen-cli getnetworkinfo
Questo dovrebbe essere tutto ciò che serve per un Secure Node base. É possibile farlo meglio, diversamente, o con più stile? Di sicuro. Provaci e fammi sapere nei commenti cosa avrei potuto fare meglio in questa guida. ?