Fulcrum
Fulcrum és un servidor SPV ràpid i àgil per a Bitcoin Cash, Bitcoin BTC i Litecoin creat per Calin Culianu. Es pot utilitzar com a alternativa a Electrs pel seu rendiment, com podem veure a la comparació de Craig Raw de servidors.
Preparacions
Instal·leu dependències
Aquestes són dependències de construcció (es pot eliminar després de la instal·lació, si voleu)
$SU apk add --virtual .build-deps autoconf g++ git gnupg jemalloc-dev lz4-dev \
make pkgconf qt6-qtbase-dev rocksdb-dev zeromq-dev
Aquestes són dependències en temps d’execució
$SU apk add jemalloc libzmq qt6-qtbase rocksdb
Creeu l’usuari/grup fulcrum
$SU addgroup -S fulcrum
$SU adduser \
-S \
-D \
-H \
-h /dev/null \
-s /sbin/nologin \
-G fulcrum \
-g fulcrum \
fulcrum
Afegeix l’usuari fulcrum
al grup bitcoin
$SU adduser fulcrum bitcoin
Afegiu també l’usuari satoshi
al grup fulcrum
$SU adduser satoshi fulcrum
Servidor intermediari invers
A la secció Seguretat, ja hem configurat un servidor intermediari invers. Ara podem afegir la configuració del servidor Electrum.
- Habiliteu el servidor intermediari invers per afegir xifratge SSL/TLS a la comunicació del servidor Electrum. Creeu el fitxer de configuració i enganxeu el contingut següent
$SU $EDITOR /etc/caddy/streams/electrum.caddy
:50002 {
route {
tls
proxy {
upstream 127.0.0.1:50001
}
}
}
- Torna a carregar el Caddy
$SU rc-service caddy reload
Tallafoc
- Configura el tallafoc per permetre les sol·licituds entrants
$SU $EDITOR /etc/awall/optional/electrum.json
{
"description": "Allow Electrum SSL",
"filter": [
{
"in": "internet",
"out": "_fw",
"service": { "proto": "tcp", "port": 50002 },
"action": "accept",
"conn-limit": { "count": 10, "interval": 60 }
}
]
}
- Habilitar-ho
$SU awall enable electrum
$SU awall activate
Instal·lació
Una manera fàcil i eficient d’executar un servidor Electrum és utilitzar Fulcrum, el servidor Electrum ràpid i àgil. No hi ha binaris compatibles disponibles, així que compilarem l’aplicació nosaltres mateixos.
Descarrega el codi font
Obtenim l’última versió del codi font de Fulcrum, el verifiquem, el compilem en un binari executable i l’instal·lem.
- Baixeu el codi font de la darrera versió de Fulcrum. Podeu consultar la pàgina de llançament per veure si hi ha disponible una versió més recent. Tanmateix, és possible que altres versions no s’hagin provat correctament amb la resta de la configuració de Microbolt.
cd /tmp
VERSION=1.11.1
git clone --branch v$VERSION https://github.com/cculianu/Fulcrum.git && cd Fulcrum
Comprovació de la signatura
- Per evitar l’ús d’un codi font maliciós, verifiqueu que la versió hagi estat signada correctament pel desenvolupador principal Calin Culianu.
url="https://raw.githubusercontent.com/Electron-Cash/keys-n-hashes/master/pubkeys/calinkey.txt"
wget -qO- "$url" | gpg --import
git verify-commit v$VERSION
Configurar, compilar i instal·lar
- Ara compileu el codi font en un binari executable i instal·leu-lo.
qmake6 \
Fulcrum.pro \
-o build/
CC=gcc \
CXX=g++ \
make -C build
$SU install -m 0755 -o root -g root -t /usr/bin ./build/Fulcrum
$SU install -m 0755 -o root -g root -t /usr/bin ./FulcrumAdmin
$SU install -D -m 0660 -o fulcrum -g fulcrum ./doc/fulcrum-example-config.conf /etc/fulcrum/fulcrum.conf
- Baixeu el banner personalitzat de Fulcrum basat en Microbolt. Crea el teu propi si vols aquí
$SU wget \
https://gist.githubusercontent.com/doitwithnotepad/\
4472a92414223672d9ab4c3b55d0cd23/raw/ecb086f1b8cca49f22929778ac167b35915842e7/\
banner.txt \
-O /etc/fulcrum/banner.txt
”Strip” els binaris instal·lats
$SU strip -v /usr/bin/Fulcrum
Neteja
cd
rm -rf /tmp/Fulcrum
$SU apk del .build-deps
Configuració
- Modifiqueu el fitxer de configuració amb el contingut següent
$SU $EDITOR /etc/fulcrum/fulcrum.conf
[...]
#datadir = /path/to/a/dir
[...]
#rpcuser = Bob_The_Banker
[...]
#rpcpassword = hunter1
[...]
rpccookie = /var/lib/bitcoind/.cookie
[...]
tcp = 0.0.0.0:50001
[...]
banner = /etc/fulcrum/banner.txt
[...]
peering = false
[...]
Dispositius de baix rendiment
[...]
bitcoind_clients = 1
[...]
bitcoind_timeout = 600
[...]
db_max_open_files = # RAM: 4GB -> 200 | 8GB -> 400
[...]
db_mem = 1024.0
[...]
worker_threads = 1
[...]
Accés remot per Tor
Per utilitzar el vostre servidor Electrum quan esteu en remot, podeu crear fàcilment un servei ocult Tor. D’aquesta manera, podeu connectar la cartera BitBoxApp o Electrum també de manera remota, o fins i tot compartir els detalls de la connexió amb amics i familiars. Tingueu en compte que el dispositiu remot també ha de tenir Tor instal·lat.
- Afegiu les línies següents a la secció de “serveis ocults per la ubicació” al
fitxer
torrc
.
$SU $EDITOR /etc/tor/torrc
# Hidden Service Electrum
HiddenServiceDir /var/lib/tor/electrum/
HiddenServiceVersion 3
HiddenServicePoWDefensesEnabled 1
HiddenServicePort 50002 127.0.0.1:50002
- Torneu a carregar la configuració de Tor i obteniu la vostra adreça de connexió.
$SU rc-service tor reload
$SU cat /var/lib/tor/electrum/hostname
abcdefg..............xyz.onion
- Ara hauríeu de poder connectar-vos al vostre servidor Electrum de manera
remota mitjançant Tor, el vostre nom d’amfitrió i el port
50002
Inici automàtic a l’arrencada
Fulcrum s’ha d’iniciar automàticament a l’arrencada del sistema.
- Creeu la unitat Fulcrum init.d i copieu/enganxeu la configuració següent
$SU $EDITOR /etc/init.d/fulcrum
#!/sbin/openrc-run
: ${FULCRUM_CONFIGFILE:=/etc/fulcrum/fulcrum.conf}
: ${FULCRUM_DATADIR:=/var/lib/fulcrum}
: ${FULCRUM_LOGDIR:=/var/log/fulcrum}
: ${FULCRUM_USER:=fulcrum}
: ${FULCRUM_GROUP:=fulcrum}
: ${FULCRUM_BIN:=/usr/bin/Fulcrum}
: ${FULCRUM_ADMINPORT:=8000}
: ${FULCRUM_OPTS=${FULCRUM_OPTS}}
: ${FULCRUM_SIGTERM_TIMEOUT:=600}
FULCRUM_PIDDIR="/run/fulcrum"
required_files="${FULCRUM_CONFIGFILE}"
pidfile="${FULCRUM_PIDDIR}/${SVCNAME}.pid"
retry="${FULCRUM_SIGTERM_TIMEOUT}"
name="Fulcrum"
description="A fast & nimble SPV Server for BCH, BTC, and LTC"
command="${FULCRUM_BIN}"
command_args="${FULCRUM_CONFIGFILE}
--datadir ${FULCRUM_DATADIR}
--admin ${FULCRUM_ADMINPORT}
--pidfile ${pidfile}
${FULCRUM_OPTS}"
command_user="${FULCRUM_USER}:${FULCRUM_GROUP}"
command_background="true"
start_stop_daemon_args="--stdout ${FULCRUM_LOGDIR}/debug.log
--stderr ${FULCRUM_LOGDIR}/debug.log"
depend() {
use bitcoind
after bitcoind
}
start_pre() {
checkpath --file --mode 0660 --owner "${command_user}" "${FULCRUM_CONFIGFILE}"
checkpath --directory --mode 0750 --owner "${command_user}" "${FULCRUM_DATADIR}"
checkpath --directory --mode 0755 --owner "${command_user}" "${FULCRUM_LOGDIR}"
checkpath --directory --mode 0755 --owner "${command_user}" "${FULCRUM_PIDDIR}"
checkconfig
}
start_post() {
checkpath --file --owner "${command_user}" "${pidfile}"
}
checkconfig() {
if ! grep -qs '^rpccookie = ' "${FULCRUM_CONFIGFILE}"
then
eerror ""
eerror "ERROR: You must set a rpccookie path to run Fulcrum."
eerror "The setting must appear in ${FULCRUM_CONFIGFILE}"
eerror ""
return 1
fi
}
- Habilita el permís d’execució
$SU chmod +x /etc/init.d/fulcrum
Habilita logrotate
- Introduïu la configuració següent completa. Guardar i sortir
$SU $EDITOR /etc/logrotate.d/fulcrum
/var/log/fulcrum/*.log {
weekly
missingok
rotate 104
compress
delaycompress
notifempty
create 0640 fulcrum fulcrum
sharedscripts
postrotate
killall -HUP `cat /run/fulcrum/fulcrum.pid`
endscript
}
- Prova
$SU logrotate /etc/logrotate.d/fulcrum --debug
Activa i inicia Fulcrum
$SU rc-update add fulcrum
$SU rc-service fulcrum start
- Comproveu el registre per veure la sortida de Fulcrum. Sortiu amb
Ctrl-C
tail -f /var/log/fulcrum/debug.log
Ara Fulcrum indexarà tota la cadena de blocs de Bitcoin perquè pugui proporcionar tota la informació necessària als dispositius de signatura. Amb això, els dispositius de signatura que utilitzeu ja no necessiten connectar-se a cap servidor de tercers per comunicar-se amb la xarxa peer-to-peer de Bitcoin.
Per al futur: actualització de Fulcrum
Torneu a seguir la pàgina Fulcrum substituint el valor de la
variable d’entorn VERSION=x.xx
per l’últim si encara no s’ha modificat en
aquesta guia.
- Actualitzeu la configuració de Fulcrum si cal (vegeu les notes de la versió)
$SU $EDITOR /etc/fulcrum/fulcrum.conf
- Reinicieu el servei per aplicar els canvis
$SU rc-service fulcrum restart