Configurazione Bitcoin Core
Guida completa all’installazione e configurazione di un full-node Bitcoin su Ubuntu Server
Preparazione del server
Dopo aver installato Ubuntu Server, seguire questi passaggi per preparare il sistema:
- Accedere come root:
sudo -i
- Aggiornare il sistema:
apt update && sudo apt upgrade
- Configurare il firewall:
ufw allow from 192.168.1.0/24 to any port ssh comment 'Allow SSH from LAN' ufw enable
Alla domanda “Command may distrupt existing ssh connection. Proceed with operation (y|n)?”, digitare
y
Nota: Abilitando il firewall, tutte le connessioni in entrata a qualsiasi porta vengono negate per impostazione predefinita.
Installazione di fail2ban
Fail2ban è un software che protegge il server da attacchi di forza bruta.
apt install fail2ban
systemctl enable fail2ban.service
Installazione di Tor Daemon
ATTENZIONE: Questa guida è scritta per una macchina amd64. Per sistemi arm64 (es. Raspberry Pi), sostituire amd64
con arm64
nei comandi seguenti.
- Aggiungere i repository Tor:
deb [arch=<ARCHITECTURE> signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org jammy main deb-src [arch=<ARCHITECTURE> signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org jammy main
- Installare apt-transport-https:
apt install apt-transport-https
- Configurare il repository Tor:
nano /etc/apt/sources.list.d/tor.list
Inserire nel file:
deb [arch=amd64 signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org jammy main deb-src [arch=amd64 signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org jammy main
Per salvare e uscire: ctrl+x, poi y, infine enter.
- Aggiungere la chiave GPG di Tor:
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
- Aggiornare e installare Tor:
apt update apt install tor deb.torproject.org-keyring
Creazione dell’utente Bitcoin
Creiamo un utente (bitcoin) che non avrà una password e non avrà nessun privilegio a differenza dell’amministratore. L’unico modo per accedere all’utente bitcoin sarà tramite l’amministratore.
adduser --disabled-password bitcoin
Premere enter fino alla fine della procedura.
Per uscire dalla modalità root, premere ctrl+d e si tornerà ad essere utente amministratore.
Per accedere all’utente bitcoin, digitare sudo su - bitcoin
e inserire la password impostata in fase di installazione dell’ubuntu-server. Ctrl+d per tornare all’utente amministratore.
Download, verifica e installazione del full-node Bitcoin
Assicurarsi di essere utente “amministratore”:
- Scaricare Bitcoin Core:
wget https://bitcoincore.org/bin/bitcoin-core-27.1/bitcoin-27.1-x86_64-linux-gnu.tar.gz wget https://bitcoincore.org/bin/bitcoin-core-27.1/SHA256SUMS wget https://bitcoincore.org/bin/bitcoin-core-27.1/SHA256SUMS.asc
- Verificare l’integrità del download:
sha256sum --ignore-missing --check SHA256SUMS
Dovrebbe restituire:
bitcoin-27.1-x86_64-linux-gnu.tar.gz: OK
- Verificare la firma:
git clone https://github.com/bitcoin-core/guix.sigs gpg --import guix.sigs/builder-keys/* gpg --verify SHA256SUMS.asc
Il comando restituirà una serie di controlli della firma. Ogni firma valida mostrerà:
- Una riga che inizia con:
gpg: Good signature
- Una riga completa che dice:
Primary key fingerprint: E777 299F C265 DD04 7930 70EB 944D 35F9 AC3D B76A
- Una riga che inizia con:
- Installare Bitcoin Core:
tar xzf bitcoin-27.1-x86_64-linux-gnu.tar.gz sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-27.1/bin/*
- Verificare l’installazione:
bitcoind --version
Configurazione
- Configurare Tor:
sudo nano /etc/tor/torrc
Aggiungere alla fine del file:
ControlPort 9051 CookieAuthentication 1 CookieAuthFileGroupReadable 1
Per salvare e uscire: ctrl+x, poi y, infine enter.
- Aggiungere l’utente bitcoin al gruppo debian-tor:
sudo adduser bitcoin debian-tor
- Riavviare il server:
reboot
- Configurare Bitcoin Core:
sudo su - bitcoin mkdir .bitcoin chmod 750 .bitcoin/ cd .bitcoin wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py python3 rpcauth.py bitcoin
Salvare l’output in un file e renderlo accessibile solo all’utente bitcoin:
nano rpcauth.passwd chmod 400 rpcauth.passwd
- Creare il file bitcoin.conf:
nano bitcoin.conf
Inserire la seguente configurazione:
server=1 daemon=1 txindex=1 blockfilterindex=1 dns=0 dnsseed=0 debug=tor listen=1 onlynet=onion bind=127.0.0.1 proxy=127.0.0.1:9050 rpcauth=<inserisci qui la stringa che hai salvato prima nel file rpcauth.passwd>
Per salvare e uscire: ctrl+x, poi y, infine enter.
chmod 640 bitcoin.conf
Creazione del file bitcoind.service
Assicurarsi di essere l’utente amministratore.
Per fare in modo che il full-node si avvii direttamente all’avvio del server:
sudo nano /etc/systemd/system/bitcoind.service
Inserire il seguente contenuto:
[Unit]
Description=Bitcoin daemon
After=network.target
[Service]
# Service execution
###################
ExecStart=/usr/local/bin/bitcoind -daemon \
-pid=/run/bitcoind/bitcoind.pid \
-conf=/home/bitcoin/.bitcoin/bitcoin.conf \
-datadir=/home/bitcoin/.bitcoin \
# Process management
####################
Type=forking
PIDFile=/run/bitcoind/bitcoind.pid
Restart=on-failure
TimeoutSec=300
RestartSec=30
# Directory creation and permissions
####################################
User=bitcoin
UMask=0027
# /run/bitcoind
RuntimeDirectory=bitcoind
RuntimeDirectoryMode=0710
# Hardening measures
####################
# Provide a private /tmp and /var/tmp.
PrivateTmp=true
# Mount /usr, /boot/ and /etc read-only for the process.
ProtectSystem=full
# Disallow the process and all of its children to gain
# new privileges through execve().
NoNewPrivileges=true
# Use a new /dev namespace only populated with API pseudo devices
# such as /dev/null, /dev/zero and /dev/random.
PrivateDevices=true
# Deny the creation of writable and executable memory mappings.
MemoryDenyWriteExecute=true
[Install]
WantedBy=multi-user.target
Per salvare: ctrl+x, poi y, infine enter.
Abilitare e avviare il servizio:
sudo systemctl enable bitcoind.service
sudo systemctl start bitcoind.service
Monitoraggio del nodo
Da questo momento il tuo nodo è in esecuzione. Impiegherà qualche giorno prima che sarà completamente sincronizzato.
Per controllare lo stato della sincronizzazione:
sudo su - bitcoin
watch -t bitcoin-cli -getinfo
oppure
tail -f .bitcoin/debug.log
Per altri comandi:
bitcoin-cli -help