Guida alla configurazione di un server e installazione di un full-node Bitcoin connesso a tor.
Per questa guida utilizzeremo la versione Ubuntu 22.04.2-server.
Dopo aver installato sulla macchina la versione di ubuntu server procediamo a configurare il server e prepararlo per ospitare il full-node Bitcoin.
sudo -i
apt update && sudo apt upgrade
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
Abilitando il firewall tutte le conessioni in entrata a qualsiasi porta vengono negate per impostazione predefinita.
Installazione fail2ban
Fail2ban e un software che prottegge il server da brute force attack.
apt install fail2ban
systemctl enable fail2ban.service
Installazione Tor Daemon
ATTENZIONE: La guida essendo scritta per una macchina amd64, verranno usati questi paramentri nei campi arch=<ARCHITECTURE>. Nel caso di sistemi arm64 (raspberry Pi) cambiare con arm64.
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
apt install apt-transport-https
nano /etc/apt/sources.list.d/tor.list
All’ interno del file tor.list copiare queste due stringhe:
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
Digitare ctrl+x poi y per savare ed infine enter
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
apt update
apt install tor deb.torproject.org-keyring
Creazione utenti
Creiamo un utente (bitcoin) , questo utente non avrà una password e non avrà nessun privilegio a differeza dell’ amministratore. Quindi l unico modo per poter accedere all’ utente bitcoin sarà tramite l’ amministratore.
adduser --disabled-password bitcoin
Premere enter fino alla fine della procedura.
In fine per uscire dalla modalita root premere ctrl+d e si tornera ad essere utente amministratore.
Per accedere all’ utente bitcoin sarà possibile digitando sudo su - bitcoin
ed iserire la password impostata in fase di installazione dell’ ubuntu-server, ctrl+d per tornare all’ utente amministratore.
Download, verifica ed installazione del full-node Bitcoin
Controllare di essere utente “amministratore”:
wget https://bitcoincore.org/bin/bitcoin-core-25.0/bitcoin-25.0-x86_64-linux-gnu.tar.gz
wget https://bitcoincore.org/bin/bitcoin-core-25.0/SHA256SUMS
wget https://bitcoincore.org/bin/bitcoin-core-25.0/SHA256SUMS.asc
sha256sum --ignore-missing --check SHA256SUMS
bitcoin-25.0-x86_64-linux-gnu.tar.gz: OK
git clone https://github.com/bitcoin-core/guix.sigs
gpg --import guix.sigs/builder-keys/*
Verifica
gpg --verify SHA256SUMS.asc
Il comando precedente restituirà una serie di controlli della firma per ciascuna delle chiavi pubbliche che hanno firmato i checksum. Ogni firma valida mostrerà il seguente testo:
A line that starts with:
gpg: Good signature
A complete line saying:
Primary key fingerprint: E777 299F C265 DD04 7930 70EB 944D 35F9 AC3D B76A
Installazione
tar xzf bitcoin-25.0-x86_64-linux-gnu.tar.gz
sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-25.0/bin/*
Per controllare che l’ installazione sia andata a buon fine digitare nel terminale:
bitcoind --version
Bitcoin Core version v25.0.0
Copyright (C) 2009-2023 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>
Configurazione
sudo nano /etc/tor/torrc
Andare fino in fondo ed inserire:
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1
Per salvare e uscire ctrl+x - y - enter.
aggiungere l’ utente bitcoin a debian-tor:
sudo adduser bitcoin debian-tor
Infine riavvia il server per rendere effettive le modifiche.
reboot
Accedere all’ utente bitcoin
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
String to be appended to bitcoin.conf:
rpcauth=bitcoin:c2c94047fc794c91bead981dd37be8d1$b6fa28bc76ad0f92d47d648c5342d282335257513912f6ebaf4ba4ebd8e66a6b
Your password:
kEhKrUnkEGSKLTK6WcTzuuNIYw_gEsLKvKNDRuoAkJM
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 ed inserire la seguente configurazione:
nano bitcoin.conf
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 uscire ctrl+x - y - enter
chmod 640 bitcoin.conf
Creazione del file bitcoind.service
ATTENZIONE: essere sicuri di essere l’ utente amministratore
Per fare in modo che il full-node si avvia dirattamente all’ avvio del server:
sudo nano /etc/systemd/system/bitcoind.service
[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 - y - enter
sudo systemctl enable bitcoind.service
sudo systemctl start bitcoind.service
Da questo momento il tuo nodo è in esecuzione, impiegherà qualche giorno prima che sarà completamente sincronizzato. Puoi controllare lo stato della sincronizzazione con il comando:
sudo su - bitcoin
watch -t bitcoin-cli -getinfo
oppure
tail -f .bitcoin/debug.log
altri comandi
bitcoin-cli -help