5
(2)


SPOILER ALERT: TENTO NÁVOD (ZATIAĽ) OBSAHUJE, AKO SI NAINŠTALOVAŤ BITCOIN CORE
DO NÁVODU JE PLÁNOVANÉ DOPLNIŤ:
• blockchain EXPLORER: btc rpc explorer
• FULCRUM SERVER
• LND (dlhodobý horizont)

V prípade, že chceme, aby náš uzol zachránil Bitcoin aj počas apokalypsy, tak sa odporúča napojiť uzol na UPS (Uninterrupted Power Supply), čiže na zdroj neprerušovaného napätia. Najčastejšie sa na to využívajú batérie.


V nasledujúcom návode si ukážeme, ako si nainštalovať svoj vlastný bitcoinový uzol na PC za pomoci Linuxu, použitím operačného systému Ubuntu a návodu Minibolt.
Zo začiatku sa môže zdať proces náročný a odstrašujúci, ale keď sa cez návod „prehryzieme“, čaká nás na konci sladká odmena a dobrý pocit, že sme to zvládli a navyše sa naučíme niečo nové o Bitcoine aj o Linuxe.

Čo budeme potrebovať?
• osobný počítač s Intel/AMD s procesorom generácie aspoň +2010
• minimálne 2 GB RAM na Bitcoin core a 4 GB RAM na Lightning node (odporúčané +8GB RAM)
• úložisko 1 TB SSD (odporúčané 2 TB SSD)
• USB disk vo veľkosti minimálne 4 GB
• ethernet kábel
• dočasný monitor alebo TV
• dočasnú klávesnicu

INŠTALÁCIA UBUNTU

Flashneme si najnovšiu verziu Ubuntu na prenosný USB disk za pomoci balenaEtcher:
Odkaz na balenaEtcher https://etcher.balena.io/
Odkaz na Ubuntu https://ubuntu.com/download/server

Nainštalujeme si balenaEtcher a stiahneme si najnovšiu stabilnú verziu Ubuntu.
Vložíme USB do PC a spustíme balenaEtcher, zobrazí sa nám nasledovné okno:

Postupujeme podľa krokov:
1 Flash from file
2 Zvolíme cestu kde máme stiahnuté Ubuntu
3 V prípade, že nám automaticky nezvolilo umiestnenie, kam flashnúť Ubuntu, tak zvolíme Select target
4 Flash!

Po flashnutí Ubuntu zapojíme USB do PC, na ktorom chceme bežať náš uzol. Zapneme PC a potrebujeme sa dostať do Boot Menu.
V prípade HP tak spravíme stlačením F9 pár sekúnd po štarte PC, kde v Boot Menu zvolíme možnosť, ktorá bude vyzerať nasledovne alebo podobne:

UEFI – názov USBčka (napr. Kingston DataTraveler 3.0...)

V nasledujúcich krokoch už inštalujeme Ubuntu:
1 *Try or Install Ubuntu Server
2 Jazyk zvolíme English alebo Čeština, odporúčané [English]
3 Identifikáciu klávesnice preskočíme – [Done]
4 Zvolíme (X) Ubuntu Server – [Done]
5 Počkáme, kým nám načíta IP adresu, IP ADRESU SI POZNAČÍME, budeme ju v ďalších krokoch potrebovať, v prípade, že máme pripojený PC k sieti cez ethernet kábel a pokračujeme – [Done]
6 Proxy address necháme prázdne a pokračujeme ďalej – [Done]
7 Ak nechceme použiť alternatívny mirror pre Ubuntu, tak ponecháme prázdne a pokračujeme – [Done]
8 Use entire disk, ak máme len jeden primárny disk a zvolíme „Set up this disk as an LVM group“ a pokračujeme ďalej – [Done]
9 Storage configuration – pokračujeme ďalej – [Done]
10 Pokračujeme cez [Continue], kde už niet cesty späť
11 Vytvoríme si užívateľa, ktorý bude dočasný:

Your name: temp
Your servers name: minibolt
Pick a username: temp
Choose a password: xxxx
Confirm your password: xxxx

Pokračujeme ďalej – [Done]
12 Upgrade to Ubuntu Pro (X) Skip for now – [Continue]
13 (X) Install OpenSSH server – [Done]
14 Ak chceme nainsťalovať aplikácie 3. strán, tak si môžeme zvoliť, v inom prípade pokračujeme – [Done]
15 Prebieha inštalácia
16 Cancel update and reboot, Rebooting…
17 Please remove the installation medium, then press ENTER, vyberieme inštalačný USB disk pre Ubuntu a stlačíme ENTER

Po reštartovaní PC sa nám spustí Ubuntu, systém sa načíta a následne sa prihlásime ako užívateľ temp s heslom, ktoré sme zadali. Ak sme sa úspešne prihlásili, môžeme prejsť na náš hlavný PC, z ktorého už budeme následne všetko riadiť.

KONFIGURÁCIA

Na našom hlavnom PC si pustíme Terminál (CTRL + ALT + T) a zadáme príkaz ssh spolu s užívateľom a IP, ktorú sme videli počas inštalácie Ubuntu, ak sme ju nevideli, tak si ju vieme pozrieť v nastaveniach routru.

Terminál od nás vypýta vytvorenie autentifikácie, napíšeme yes a stlačíme ENTER.

The authenticity of host '192.168.X.XXX (192.168.X.XXX)' can't be established.
AB12345 key fingerprint is SHA256:....
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Vypýta od nás heslo na prihlásenie, prihlásime sa heslom, ktoré sme zadali pri inštalácii Ubuntu, počas vytvárania užívateľa.
Vytvoríme hlavného užívateľa admin namiesto užívateľa temp pre jednoduchosť návodu.
Vytvoríme užívateľa s názvom admin a s heslom XY, ktoré budeme potrebovať.

sudo adduser --gecos "" admin

Z užívateľa admin spravíme superusera tým, že ho pridáme do skupiny sudo a starej skupiny temp.

sudo usermod -a -G sudo,adm,cdrom,dip,plugdev,lxd admin

Odhlásime sa z existujúceho užívateľa temp.

logout

Opäť sa prihlásime do svojho uzla cez príkaz ssh, ale tentokrát cez užívateľa admin s novým heslom. Vymažeme užívateľa temp, ktorého už nebudeme potrebovať.

Vymažeme užívateľa temp.

sudo userdel -rf temp

Očakávaný výstup:

userdel: user temp is currently used by process 1344
userdel: temp mail spool (/var/mail/temp) not found

Spravíme systémový update:

sudo apt update && sudo apt full-upgrade

Počas inštalácie môže od nás vypýtať súhlas, zvolíme „y“ a stlačíme ENTER, pokračujeme ďalej.

Aby sme mohli používať svoj vlastný názov uzla MiniBolt na prihlasovanie cez ssh namiesto IP adresy, musíme nainštalovať potrebný softvér.
Príklad: namiesto ssh [email protected] budeme používať ssh [email protected].

sudo apt install avahi-daemon

Overíme si výkon zápisu nášho disku. Výkon nášho uzla do veľkej miery závisí od rýchlosti zápisu nášho disku. Overíme si, či rýchlosť zápisu disku je dostačujúca. Disk by mal byť detegovaný ako /dev/sda. Overíme si to pomocou nasledovného príkazu, ktorý nám ukáže zoznam pripojených zariadení.

lsblk -pli

Odmeriame rýchlosť nášho disku.

sudo hdparm -t --direct /dev/sda

Očakávaný výstup:

/dev/sda:
Timing O_DIRECT disk reads: 404 MB in 3.01 seconds = 134.39 MB/sec

Ak sme nainštalovali aj sekundárny disk, tak odmeriame jeho rýchlosť zápisu s nasledovným príkazom. Ak sme sekundárny disk nenainštalovali, tak príkaz preskočíme.

sudo hdparm -t --direct /dev/sdb

Adresár údajov
Budeme ukladať všetky aplikácie a ich dáta v priečinku /data. Toto zabezpečí lepšiu ochranu, pretože to nebudeme ukladať v priečinku home žiadneho užívateľa. Dodatočne je jednoduchšie presunúť ten priečinok niekam inam, napríklad na separátny disk, kde môžeme pripojiť akékoľvek úložisko k /data.

sudo mkdir /data

Priradíme užívateľa admin ako majiteľa priečinku /data.

sudo chown admin:admin /data

BEZPEČNOSŤ

Zabezpečíme, aby bol náš uzol zabezpečený voči neautorizovanému vonkajšiemu prístupu. Uzol potrebuje byť zabezpečený voči útokom viacerými metódami.

Nekomplikovaný Firewall (povolenie & konfigurácia)
Brána Firewall kontroluje, aký druh vonkajšej prevádzky náš počítač akceptuje a ktoré aplikácie môžu odosielať dáta. V predvolenom (defaultnom) nastavení je veľa sieťových portov otvorených a načúvajú k prichádzajúcim spojeniam. Zatvorenie nepotrebných portov môže zmierniť mnohé potenciálne zraniteľnosti systému.

Zatiaľ by malo byť dostupné z vonku iba SSH. Bitcoin Core a LND používajú Tor a nepotrebujú prichádzajúce porty. Otvoríme porty až v ďalších častiach návodu, ak to bude potrebné (napríklad pre Electrs alebo webové aplikácie).

Skontrolujeme dostupnosť IPv6
S užívateľom admin skontrolujeme dostupnosť IPv6.

ping6 -c2 2001:858:2:2:aabb:0:563b:1526 && ping6 -c2 2620:13:4000:6000::1000:118 && ping6 -c2 2001:67c:289c::9 && ping6 -c2 2001:678:558:1000::244 && ping6 -c2 2001:638:a000:4140::ffff:189 && echo OK.

Ak dostaneme výstup „OK.“ tak máme dostupnosť IPv6.
Ak náš výstup bude „ping6: connect: Network is unreachable„, tak IPv6 dostupnosť nemáme, ale nič sa nedeje, adopcia IPv6 je nízka, môžeme pokračovať aj bez toho. Namiesto toho môžeme získať verejnú IPv4 za pomoci:

curl -s ipv4.icanhazip.com

V prípade, že nemáme IPv6 dostupnosť, môžeme zakázať IPv6 na UFW, aby sme predišli vytvoreniu pravidiel, ktoré s tým môžu súvisieť.

sudo nano /etc/default/ufw

Zmeníme IPV6=yes na IPV6=no. Uložíme – CTRL + S a súbor zavrieme – CTRL + X.

Zakážeme odhlasovanie.

sudo ufw logging off

Očakávaný výstup:

Logging disabled

Povolíme SSH pripojenie.

sudo ufw allow 22/tcp comment 'allow SSH from anywhere'

Povolíme UFW keď nám prompt ukáže:

sudo ufw enable
"Command may disrupt existing ssh connections. Proceed with operation (y|n)?"

Napíšeme „y“ a stlačíme ENTER.

Očakávaný výstup:

Firewall is active and enabled on system startup

Skontrolujeme si, či je UFW správne nakonfigurovaný a aktívny.

sudo ufw status verbose

Očakávaný výstup:

Status: active
Logging: off
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere # allow SSH from anywhere

Monitorovanie SSH logs (voliteľné)
Môžeme monitorovať všeobecné protokoly autentifikácie v našom systéme v reálnom čase, monitorovanie ukončíme stlačením CTRL + C.

sudo tail -f /var/log/auth.log

Alebo vyfiltrujeme iba SSH autentifikáciu v posledných 500 riadkoch.

sudo tail --lines 500 /var/log/auth.log | grep sshd

Pomocou nasledujúceho príkazu vieme zobraziť zoznam posledných úspešných prihlásených užívateľov do nášho uzla za posledných 7 dní. Ak si želáme vidieť iné časové obdobie, môžeme zmeniť -7days podľa vlastných preferencií.

last -s -7days -t today

Vďaka tomuto vieme zistiť prípadný útok hrubou silou a môžeme prijať vhodné opatrenia na zmiernenie.

INŠTALÁCIA NGINX

Niekoľko komponentov tohto návodu si bude vyžadovať komunikačný port, napríklad Blockchain Explorer (BTC RPC Explorer) alebo ThunderHub webové rozhranie pre Lightning uzol. Aj napriek tomu, že používame tieto aplikácie len vo vlastnej domácej sieti, komunikácia by mala byť vždy šifrovaná. V opačnom prípade každé zariadenie na rovnakej sieti môže načúvať k vymieňaným dátam, vrátane hesiel.

Použijeme Nginx na šifrovanie komunikácie za pomoci SSL/TLC (Transport Layer Security). Toto nastavenie sa volá „reverse proxy“. Nginx poskytuje bezpečnú komunikáciu smerom von a smeruje prenos späť do internej služby bez šifrovania.

Nainštalujeme Nginx.

sudo apt-get install nginx-full

Overíme správnosť inštalácie a skontrolujeme verziu nginx.

nginx -v

Požadovaný výstup:

nginx version: nginx/1.24.0 (Ubuntu)

Vytvoríme certifikát SSL/TLS s vlastným podpisom platný 10 rokov.

sudo openssl req -x509 -nodes -newkey rsa:4096 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -subj "/CN=localhost" -days 3650

Nginx je taktiež webový server. Ak ho chceme používať iba ako „reverse proxy“, zálohujeme si predvolenú konfiguráciu.

sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

Vytvoríme si čistý súbor na konfiguráciu.

sudo nano /etc/nginx/nginx.conf

Nalepíme nasledujúci text do súboru nginx.conf. Uložíme – CTRL + S a zavrieme – CTRL + X.

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
  worker_connections 768;
}

http {
  ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
  ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
  ssl_session_cache shared:HTTP-TLS:1m;
  ssl_session_timeout 4h;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;
  include /etc/nginx/sites-enabled/*.conf;
}

stream {
  ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
  ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
  ssl_session_cache shared:STREAM-TLS:1m;
  ssl_session_timeout 4h;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;
  include /etc/nginx/streams-enabled/*.conf;
}

Vytvoríme si priečinky streams-availablestreams-enabled pre budúcu konfiguráciu.

sudo mkdir /etc/nginx/streams-available
sudo mkdir /etc/nginx/streams-enabled

Vymažeme súbory site availablesite enabled s pôvodnou konfiguráciou.

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default

Vyskúšame si nastavenie Nginx.

sudo nginx -t

Očakávaný výstup:

> nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
> nginx: configuration file /etc/nginx/nginx.conf test is successful

Znovu načítame Nginx aby sa zmeny prejavili.

sudo systemctl reload nginx

Pre monitorovanie správania sa Nginx a zobrazenie zápisov použijeme nasledovný príkaz. Pre ukončenie sledovania stlačíme CTRL + C.

journalctl -f -u nginx

Očakávaný výstup:

> Nov 16 16:56:56 minibolt systemd[1]: Starting A high performance web server and a reverse proxy server...
> Nov 16 16:56:56 minibolt systemd[1]: Started A high performance web server and a reverse proxy server.

Pre sledovanie chybných hlásení Nginx použijeme nasledovný príkaz:

sudo tail -f /var/log/nginx/error.log

SÚKROMIE

Nastavíme Tor a l2P, aby náš uzol bežal anonymne.

Bežaním vlastného Bitcoinového a Lightningového uzla sa stávate suverénnym členom Bitcoinovej siete. Avšak, pokiaľ pri konfigurácii nedbáme na súkromie, tak dávame vedieť celému svetu, že sme niekto s Bitcoinom.

Ako ďalšiu výhodu si uľahčíme pripojenie k uzlu mimo domácej siete.

Je pravda, že ide iba o našu IP adresu, ale za pomoci služieb, ako je napríklad iplocation.net, naša fyzická adresa môže byť celkom presne určená. Obzvlášť, ak ide o Lightning, naša adresa by sa veľmi šírila. Musíme preto zabezpečiť svoje súkromie.

Tor Project
Používame Tor, bezplatný softvér vytvorený Tor Project-om. Umožňuje nám anonymizovať internetový prenos tým, že smeruje prenos cez sieť ďalších uzlov, vďaka čomu je ukrytá naša poloha a profil používania.

Projekt sa nazýva Tor (The Onion Router). Informácie sa prenášajú cez niekoľko hopov (skokov) a sú šifrované niekoľkokrát. Každý uzol dešifruje iba vrstvu informácií, ktorá je mu adresovaná, pričom sa dozvie iba predchádzajúci a nasledujúci hop (skok) z celej trasy. Dátový balík je tak postupne odlúpnutý ako vrstvy cibule až pokým nedosiahne konečný cieľ.

Inštalácia Tor
Ak nie sme, prihlásime sa do uzla cez ssh ako užívateľ admin a nainštalujeme Tor.
Aktualizujeme celý operačný systém nášho uzla.

sudo apt update && sudo apt full-upgrade

Nainštalujeme dependency.

sudo apt install apt-transport-https

Vytvoríme nový súbor s názvom tor.list.

sudo nano /etc/apt/sources.list.d/tor.list

Do súboru zapíšeme nasledujúce riadky. Uložíme – CTRL + S a zavrieme – CTRL + X.

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

Na chvíľu sa prihlásime do užívateľa root.

sudo su

Pridáme kľúče GPG používané na podpisovanie balíkov spustením nasledujúceho prikazu.

wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

Vrátime sa do užívateľa admin.

exit

Aktualizujeme úložisko apt a nainštalujeme Tor a Tor Debian keyring.

sudo apt update && sudo apt install tor deb.torproject.org-keyring

Overíme, či sa Tor nainštaloval správne.

tor --version

Očakávaný výstup:

Tor version 0.4.8.12.
This build of Tor is covered by the GNU General Public License (https://www.gnu.org/licenses/gpl-3.0.en.html)
Tor is running on Linux with Libevent 2.1.12-stable, OpenSSL 3.0.13, Zlib 1.3, Liblzma 5.4.5, Libzstd 1.5.5 and Glibc 2.39 as libc.
Tor compiled with GCC version 11.4.0

Tor konfigurácia
Bitcoin Core bude komunikovať priamo s Tor deamonom, aby smeroval všetku komunikáciu cez sieť Tor. Potrebujeme povoliť Tor, aby prijímal inštrukcie cez svoj port so správnou autentifikáciou.

Upravíme konfiguráciu Tor.

sudo nano +56 /etc/tor/torrc --linenumbers

Za pomoci časti príkazu +56 nám otvorí dokument priamo na riadku 56, povolíme riadiaci port a to tak, že vymažeme znak hashtag #, čím sa zruší príznak komentovania. Čiže náš riadok by mal vyzerať nasledovne:

ControlPort 9051

Uložíme – CTRL + S a zavrieme – CTRL + X.

Aby sa zmena prejavila, musíme znovu načítať Tor.

sudo systemctl reload tor

Ubezpečíme sa, že Tor beží a počúva k predvoleným portom 9050 a 9051 na localhost (127.0.0.1).

sudo ss -tulpn | grep tor

Očakávaný výstup:

tcp   LISTEN 0      4096            127.0.0.1:9050       0.0.0.0:*    users:(("tor",pid=13959,fd=6))          
tcp LISTEN 0 4096 127.0.0.1:9051 0.0.0.0:* users:(("tor",pid=13959,fd=15))

V prípade, že chceme sledovať, čo Tor robí v reálnom čase, použijeme nasledovný príkaz.

journalctl -fu tor@default

Inštalácia i2P
Ubezpečíme sa, že sme prihlásení ako užívateľ admin a pridáme i2pd úložisko.

wget -q -O - https://repo.i2pd.xyz/.help/add_repo | sudo bash -s –

Očakávaný výstup:

Importing signing key
Adding APT repository

Aktualizujeme úložisko a nainštalujeme i2pd. Ak sa nás pýta na prompt tak napíšme “y“ a stlačíme ENTER.

sudo apt update && sudo apt install i2pd

Skontrolujeme, či inštalácia prebehla úspešne.

i2pd --version

Očakávaný výstup:

i2pd version 2.54.0 (0.9.64)
Boost version 1.83.0
OpenSSL 3.0.13 30 Jan 2024

Zabezpečíme, aby služba i2pd fungovala a načúvala predvoleným portom.

sudo ss -tulpn | grep i2pd

Očakávaný výstup:

udp   UNCONN 0      0                 0.0.0.0:10477      0.0.0.0:*    users:(("i2pd",pid=14661,fd=21))         
udp UNCONN 0 0 127.0.0.1:7655 0.0.0.0:* users:(("i2pd",pid=14661,fd=45))
tcp LISTEN 0 4096 127.0.0.1:7656 0.0.0.0:* users:(("i2pd",pid=14661,fd=44))
tcp LISTEN 0 4096 127.0.0.1:7070 0.0.0.0:* users:(("i2pd",pid=14661,fd=25))
tcp LISTEN 0 4096 127.0.0.1:6668 0.0.0.0:* users:(("i2pd",pid=14661,fd=40))
tcp LISTEN 0 4096 127.0.0.1:4447 0.0.0.0:* users:(("i2pd",pid=14661,fd=36))
tcp LISTEN 0 4096 127.0.0.1:4444 0.0.0.0:* users:(("i2pd",pid=14661,fd=35))
tcp LISTEN 0 4096 0.0.0.0:10477 0.0.0.0:* users:(("i2pd",pid=14661,fd=20))

Na monitorovanie hlásení i2p použijeme nasledovný príkaz. Pre ukončenie sledovania stlačíme klávesovú skratku CTRL + C.

sudo tail -f /var/log/i2pd/i2pd.log

BITCOIN CORE

Inštalácia Bitcoin Core. Bitcoin Core stiahne celý blockchain a overí všetky transakcie od roku 2009. Hovoríme o viac ako 864 845 blokoch (ku dňu písania článku) s veľkosťou 690, GB čo nie je ľahká úloha.

Inštalácia
Stiahneme Bitcoin Core a porovnáme s podpísaným a časovo označeným kontrolným súčtom. Toto je preventívne opatrenie, aby sme sa uistili, že ide o oficiálne vydanie a nie o škodlivú verziu, ktorá by sa nám pokúšala ukradnúť peniaze.

Ako užívateľ admin zmeníme dočasný priečinok, ktorý sa pri reštarte vymaže.

cd /tmp

Nastavíme verziu, ktorú chceme stiahnuť. V prípade, že pri Bitcoine uprednostňujeme pomalšie updaty, môžeme zvoliť staršiu verziu.
Zoznam starších verzií najdeme na https://github.com/bitcoin/bitcoin/tags.

VERSION=28.0

Stiahneme aktuálne binárne súbory a podpisy.

wget https://bitcoincore.org/bin/bitcoin-core-$VERSION/bitcoin-$VERSION-x86_64-linux-gnu.tar.gz
wget https://bitcoincore.org/bin/bitcoin-core-$VERSION/SHA256SUMS
wget https://bitcoincore.org/bin/bitcoin-core-$VERSION/SHA256SUMS.asc

Kontrolný súčet
Skontrolujeme, či sa kontrolný súčet v súbore SHA256SUMS zhoduje s kontrolným súčtom, ktorý vypočítame my (ignorujeme riadky s nesprávnym formátovaním).

sha256sum --ignore-missing --check SHA256SUMS

Očakávaný výstup:

bitcoin-28.0-x86_64-linux-gnu.tar.gz: OK

Kontrola podpisu
Jednotlivé verzie vydania Bitcoinu sú podpísané viacerými jednotlivcami, kde každý používa svoj vlastný kľúč. Na overenie platnosti týchto podpisov musíme najprv importovať zodpovedajúce verejné kľúče do našej databázy kľúčov GPG.

Nasledujúci príkaz automaticky stiahne a importuje všetky podpisy z vydaní Bitcoin Core.

curl -s "https://api.github.com/repositories/355107265/contents/builder-keys" | grep download_url | grep -oE "https://[a-zA-Z0-9./-]+" | while read url; do curl -s "$url" | gpg --import; done
> gpg: key 17565732E08E5E41: 29 signatures not checked due to missing keys
> gpg: /home/admin/.gnupg/trustdb.gpg: trustdb created
> gpg: key 17565732E08E5E41: public key "Andrew Chow <[email protected]>" imported
> gpg: Total number processed: 1
> gpg: imported: 1
> gpg: no ultimately trusted keys found
[...]

Overíme, či súbor s kontrolnými súčtami je kryptograficky podpísaný podpisovými kľúčmi. Nasledujúci príkaz vytlačí kontroly podpisov pre každý verejný kľúč, ktorý podpísal kontrolný súčet.

gpg --verify SHA256SUMS.asc

Očakávaný výstup:

gpg: assuming signed data in 'SHA256SUMS'
gpg: Signature made Thu Oct 3 16:25:02 2024 UTC
gpg: using RSA key 101598DC823C1B5F9A6624ABA5E0907A0380E6C3
gpg: Good signature from "CoinForensics (SigningKey) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 1015 98DC 823C 1B5F 9A66 24AB A5E0 907A 0380 E6C3
gpg: Signature made Thu Oct 3 21:36:16 2024 UTC

Kontrola časovej pečiatky (Timestamp)
Binárny súbor kontrolného súčtu je tiež označený časovou pečiatkou s bitcoinovým blockchainom pomocou protokolu OpenTimeStamps, čo dokazuje, že súbor existoval pred určitým časom. Overíme si túto časovú pečiatku. Na svojom lokálnom PC si stiahneme súbor kontrolných súčtov a jeho dôkaz o časovej pečiatke:
Stiahnuť súbor kontrolného súčtu
Stiahnuť súbor kontrolného súčtu
Vo svojom prehliadači si otvoríme OpenTimeStamps webovú stránku.
V sekcii „Stamp and verify“ prenesieme stiahnutý súbor SHA256SUMS.ots do vyznačeného čiarkovaného pola.
Do ďalšieho pola nahráme súbor SHA256SUMS.
Ak sú časové pečiatky overené, mala by sa nám zobraziť nasledujúca správa:

Ak sme s kontrolým súčtom, podpisom a časovou pečiatkou spokojní, môžeme extrahovať binárny súbor Bitcoin Core.

tar -xvf bitcoin-$VERSION-x86_64-linux-gnu.tar.gz
bitcoin-28.0/
bitcoin-28.0/README.md
bitcoin-28.0/bin/
bitcoin-28.0/bin/bitcoin-cli
bitcoin-28.0/bin/bitcoin-qt
bitcoin-28.0/bin/bitcoin-tx
bitcoin-28.0/bin/bitcoin-util
bitcoin-28.0/bin/bitcoin-wallet
bitcoin-28.0/bin/bitcoind
bitcoin-28.0/bin/test_bitcoin
bitcoin-28.0/bitcoin.conf
bitcoin-28.0/share/
bitcoin-28.0/share/man/
bitcoin-28.0/share/man/man1/
bitcoin-28.0/share/man/man1/bitcoin-cli.1
bitcoin-28.0/share/man/man1/bitcoin-qt.1
bitcoin-28.0/share/man/man1/bitcoin-tx.1
bitcoin-28.0/share/man/man1/bitcoin-util.1
bitcoin-28.0/share/man/man1/bitcoin-wallet.1
bitcoin-28.0/share/man/man1/bitcoind.1
bitcoin-28.0/share/rpcauth/
bitcoin-28.0/share/rpcauth/README.md
bitcoin-28.0/share/rpcauth/rpcauth.py

Inštalácia binárnych súborov
Nainštalujeme za pomoci nasledovného príkazu:

sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-$VERSION/bin/bitcoin-cli bitcoin-$VERSION/bin/bitcoind

Skontrolujeme nainštalovanú verziu.

bitcoind --version
Bitcoin Core version v28.0.0
Copyright (C) 2009-2024 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>

Vytvorenie používateľa a skupiny bitcoin
Aplikácia Bitcoin Core bude bežať na pozadí ako daemon a z bezpečnostných dôvodov bude používať samostatného užívateľa bitcoin. Tento používateľ nemá práva užívateľa admin a nemôže zasahovať do konfigurácie systému.

Vytvoríme užívateľa a skupinu bitcoin.

sudo adduser --gecos "" --disabled-password bitcoin

Priradíme užívateľa admin do skupiny bitcoin.

sudo adduser admin bitcoin

Povolíme užívateľovi bitcoin, aby mohol používať riadiaci port a nakonfigurujeme Tor tým, že ho pridáme do skupiny debian-tor.

sudo adduser bitcoin debian-tor

Vytvoríme priečinok data
Bitcoin Core štandardne používa priečinok .bitcoin v užívateľskom umiestnení home. Namiesto vytvorenia tohto priečnku vytvoríme priečniok data vo všeobecnom umiestnení /data a prelinkujeme ho.

Vytvoríme Bitcoin data priečinok.

mkdir /data/bitcoin

Priradíme mu majiteľa, ktorý bude používateľ bitcoin.

sudo chown bitcoin:bitcoin /data/bitcoin

Prihlásime sa ako užívateľ bitcoin.

sudo su - bitcoin

Vytvoríme symbolický link .bitcoin, ktorý bude nasmerovaný do tohto priečinku.

ln -s /data/bitcoin /home/bitcoin/.bitcoin

Skontrolujeme, či symbolický link bol správne vytvorený.

ls -la .bitcoin

Očakávaný výstup:

lrwxrwxrwx 1 bitcoin bitcoin 13 Oct 10 21:22 .bitcoin -> /data/bitcoin

Vygenerujeme prístupové poverenia
Na to, aby sa mohli iné programy dopytovať na Bitcoin Core, potrebujú správne prístupové údaje. Aby sa predišlo ukladaniu používateľského mena a hesla v konfiguračnom súbore v obyčajnom texte, heslo je zahashované. To umožňuje Bitcoin Core akceptovať heslo, hashovať ho a porovnávať s uloženým hashom, pričom nie je možné získať pôvodné heslo.

Ďalšou možnosťou, ako získať prístupové údaje, je prostredníctvom súboru .cookie v adresári bitcoinových údajov. Ten sa vytvára automaticky a môžu si ho prečítať všetci používatelia, ktorí sú členmi skupiny „bitcoin“. Bitcoin Core poskytuje jednoduchý program Python na generovanie konfiguračného riadku pre konfiguračný súbor.

cd .bitcoin

Stiahneme program RPCAuth.

wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py

Spustíme nižšie uvedený skript s tým, že zadáme presne meno nášho servera minibolt a naše heslo.

python3 rpcauth.py minibolt YourPasswordB

Očakávaný výstup:

String to be appended to bitcoin.conf:
rpcauth=minibolt:....

Skopírujeme si celý riadok rpcauth od začiatku až po koniec a niekde si ho dočasne a bezpečne nakopírujeme.

Konfigurácia
Teraz je potrebné vytvoriť si konfiguračný súbor bitcoind a taktiež si nastavíme aj správne prístupové oprávnenia.
Nesmieme zabudnúť nakopírovať naše vygenerované rpcauth pod # Connections, pôvodný rpcauth text vymažeme a nahradíme ho našim.

V prípade, že máme dostupnú vyššiu RAM tak môžeme v konfiguračnom súbore upraviť aj riadok dbcache a to nasledovným spôsobom:
Odporúčané je používať 1/2 našej RAM, napr. ak máme 4GB RAM dbcache=2048 / 8 GB RAM dbcache=4096 / 16 GB RAM = dbcache=8192 atď.

nano /home/bitcoin/.bitcoin/bitcoin.conf
# MiniBolt: bitcoind configuration
# /home/bitcoin/.bitcoin/bitcoin.conf

# Bitcoin daemon
server=1
txindex=1

# Append comment to the user agent string
uacomment=MiniBolt node

# Disable integrated wallet
disablewallet=1

# Additional logs
debug=tor
debug=i2p

# Assign to the cookie file read permission to the Bitcoin group users
startupnotify=chmod g+r /home/bitcoin/.bitcoin/.cookie

# Disable debug.log
nodebuglogfile=1

# Avoid assuming that a block and its ancestors are valid,
# and potentially skipping their script verification.
# We will set it to 0, to verify all.
assumevalid=0

# Enable all compact filters
blockfilterindex=1

# Serve compact block filters to peers per BIP 157
peerblockfilters=1

# Maintain coinstats index used by the gettxoutsetinfo RPC
coinstatsindex=1

# Network
listen=1

## P2P bind
bind=127.0.0.1

## Proxify clearnet outbound connections using Tor SOCKS5 proxy
proxy=127.0.0.1:9050

## I2P SAM proxy to reach I2P peers and accept I2P connections
i2psam=127.0.0.1:7656

# Connections
rpcauth=<replace with your own auth line generated in the previous step>

# Initial block download optimizations (set dbcache size in megabytes 
# (4 to 16384, default: 300) according to the available RAM of your device,
# recommended: dbcache=1/2 x RAM available e.g: 4GB RAM -> dbcache=2048)
# Remember to comment after IBD (Initial Block Download)!
dbcache=2048
blocksonly=1

Nastavíme povolenie iba pre používateľa bitcoin a členov skupiny bitcoin, ktorí ho môžu čítať (potrebné, aby LND prečítalo riadok „rpcauth“).

chmod 640 /home/bitcoin/.bitcoin/bitcoin.conf

Odhlásime sa z užívateľa bitcoin naspäť do užívateľa admin.

exit

Chceme, aby systém spúšťal bitcoin daemon automaticky na pozadí. Používame systemd, daemon, ktorý riadi proces spúšťania pomocou konfiguračných súborov.

sudo nano /etc/systemd/system/bitcoind.service
# MiniBolt: systemd unit for bitcoind
# /etc/systemd/system/bitcoind.service

[Unit]
Description=Bitcoin Core Daemon
Requires=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/bitcoind -pid=/run/bitcoind/bitcoind.pid \
                                  -conf=/home/bitcoin/.bitcoin/bitcoin.conf \
                                  -datadir=/home/bitcoin/.bitcoin
# Process management
####################
Type=exec
NotifyAccess=all
PIDFile=/run/bitcoind/bitcoind.pid

Restart=on-failure
TimeoutStartSec=infinity
TimeoutStopSec=600

# Directory creation and permissions
####################################
User=bitcoin
Group=bitcoin
RuntimeDirectory=bitcoind
RuntimeDirectoryMode=0710
UMask=0027

# Hardening measures
####################
PrivateTmp=true
ProtectSystem=full
NoNewPrivileges=true
PrivateDevices=true
MemoryDenyWriteExecute=true
SystemCallArchitectures=native

[Install]
WantedBy=multi-user.target

Povolíme automatické spúšťanie (voliteľné).

sudo systemctl enable bitcoind

Pripravíme si termínal na monitorovanie bitcoind žurnálu (journal) systemd a skontrolujeme výstup. Monitorovanie môžeme kedykoľvek ukončiť pomocou CTRL + C.

journalctl -f -u bitcoind

Aby sme mohli sledovať, čo náš uzol robí za pomoci aplikácie Bitcoin Core, otvoríme si nový terminál cez CTRL + ALT + T. Opäť sa prihlásime do nášho uzla ako admin a spustíme bitcoind.

sudo systemctl start bitcoind

Očakývaný výstup:

Oct 10 21:51:06 minibolthdd bitcoind[15413]: 2024-10-10T21:51:06Z Opening LevelDB in /home/bitcoin/.bitcoin/blocks/index
Oct 10 21:51:06 minibolthdd bitcoind[15413]: 2024-10-10T21:51:06Z Opened LevelDB successfully
Oct 10 21:51:06 minibolthdd bitcoind[15413]: 2024-10-10T21:51:06Z Using obfuscation key for /home/bitcoin/.bitcoin/blocks/index: 0000000000000000
Oct 10 21:51:06 minibolthdd bitcoind[15413]: 2024-10-10T21:51:06Z LoadBlockIndexDB: last block file = 0
Oct 10 21:51:06 minibolthdd bitcoind[15413]: 2024-10-10T21:51:06Z LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=0, size=0, heights=0...0, time=1970-01-01...1970-01-01)
...

Prepojíme aj adresár Bitcoin data z domovského adresára užívateľa admin. To umožňuje užívateľovi admin pracovať s bitcoind priamo, napríklad pomocou príkazu bitcoin-cli.

ln -s /data/bitcoin /home/admin/.bitcoin

Symbolické prepojenie sa stáva aktívnym, až keď sa opätovne prihlásime, takže sa odhlásime a znova prihlásime.

exit

Overíme, či sa symbolické prepojenie správne vytvorilo.

ln -s /data/bitcoin /home/admin/.bitcoin

Očakávaný výstup:

lrwxrwxrwx 1 admin admin 13 Nov 7 10:41 .bitcoin -> /data/bitcoin

V prípade, že nám vyhodilo chybu alebo máme iba „.bitcoin“ namiesto „.bitcoin -> /data/bitcoin“ je potrebné to opraviť:

Oprava „.bitcoin -> /data/bitcoin
S užívateľom admin vymažeme symbolické prepojenie.

sudo rm -r .bitcoin

Vytvoríme znova symbolické prepojenie.

ln -s /data/bitcoin /home/admin/.bitcoin

Skontrolujeme, či bolo prepojenie vytvorené správne.

ls -la .bitcoin
bitcoin-cli -netinfo

Očakývaný výstup:

lrwxrwxrwx 1 admin admin 13 Oct 10 21:58 .bitcoin -> /data/bitcoin

V tomto momente nám Bitcoin Core beží a synchronizuje blockchain.
Medzičasom, kým prebieha synchronizácia, vieme sledovať jej stav za pomoci príkazu bitcoin-cli -getinfo.

bitcoin-cli -getinfo

Alebo vieme sledovať bitcoin žurnál.

journalctl -fu bitcoind

Ak sa vám podarilo dostať sa až sem, GRATULUJEM! Nainštalovali ste si svoj vlastný bitcoinový uzol a tým prispievate k decentralizácii siete a zároveň ste sa naučili niečo nové o Bitcoine aj Linuxe.

NEDOKONČEnÉ

BLOCKCHAIN EXPLORER: BTC RPC EXPLORER

Blockchain explorer je webová aplikácia, ktorá beží na našom uzle, ktorá nám poskytuje detailné informácie o našom uzle a o blockchaine v peknom grafickom prostredí.

Na inštaláciu BTC RPC Explorer budeme potrebovať Bitcoin Core a Node + NPM.

Inštalácia Node
S užívateľom admin aktualizujeme najprv všetky balíky nášho operačného systému, napíšeme „y“ a stlačíme ENTER, tam kde si to vyžaduje.

sudo apt update && sudo apt full-upgrade

Použíjeme binárne súbory NodeSource Node.js. Stiahneme a naimportujeme NodeSource GPG kľúč.

curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

Zvolíme si prostredie verzie.

VERSION=20

Vytvoríme deb úložisko.

echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$VERSION.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

Aktualizujeme a nainštalujeme Node.js + NPM za pomoci apt package manažéra. Napíšeme „y“ a stlačíme ENTER.

sudo apt update && sudo apt install nodejs

Skontrolujeme správnosť inštalácie nodejs.

node -v

Páčil sa ti tento článok?

Klikni na hviezdičky a ohodnoť ho!

Priemerné hodnotenie 5 / 5. Počet: 2

Zatiaľ žiadne hlasy. Buď prvý!

O autorovi

Podpor autora

Similar Posts

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *