Sep 042014
 

Agradecemos a GNUtransfer el habernos cedido un VPS y otros recursos para escribir este articulo.

En este articulo veremos como usar el paquete bitcoind-init para debian wheezy amd64 disponible en nuestro repositorio

NOTA: El paquete lo hemos llamado bitcoind-init para que no entre en conflicto con el paquete bitcoind que esta en los repositorios de debian.

Este es el paquete bitcoind compilado para debian wheezy amd64 con las fuentes descargadas del repositorio git de bitcoin https://github.com/bitcoin/bitcoin.git y con un script en init.d de inicio y detención del mismo.

El paquete dispone de un script de inicio y parada en /etc/init.d

Primero procedemos a instalarlo con apt-get veremos que también se instalan las dependencias.

root@vps590197:/# apt-get install bitcoind-init
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libboost-chrono1.49.0 libboost-filesystem1.49.0 libboost-program-options1.49.0 libboost-system1.49.0 libboost-thread1.49.0 libdb5.1++ libminiupnpc5 minissdpd openssl pwgen rpl
Suggested packages:
  db-util db4.8-util ca-certificates
The following NEW packages will be installed:
  bitcoind-init libboost-chrono1.49.0 libboost-filesystem1.49.0 libboost-program-options1.49.0 libboost-system1.49.0 libboost-thread1.49.0 libdb5.1++ libminiupnpc5 minissdpd openssl pwgen
  rpl
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,742 kB of archives.
After this operation, 10.4 MB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 http://repository.geeklab.com.ar/geeklab-repository/ wheezy/contrib bitcoind-init amd64 0.9.3-0 [1,822 kB]
Get:2 http://security.debian.org/ wheezy/updates/main openssl amd64 1.0.1e-2+deb7u12 [701 kB]                                                  
Get:3 http://ftp.us.debian.org/debian/ wheezy/main rpl all 1.5.5-1 [8,314 B]                                                                   
Get:4 http://ftp.us.debian.org/debian/ wheezy/main pwgen amd64 2.06-1+b2 [21.0 kB]               
Get:5 http://ftp.us.debian.org/debian/ wheezy/main libboost-system1.49.0 amd64 1.49.0-3.2 [33.4 kB] 
Get:6 http://ftp.us.debian.org/debian/ wheezy/main libboost-filesystem1.49.0 amd64 1.49.0-3.2 [78.3 kB]              
Get:7 http://ftp.us.debian.org/debian/ wheezy/main libboost-program-options1.49.0 amd64 1.49.0-3.2 [162 kB]                
Get:8 http://ftp.us.debian.org/debian/ wheezy/main libboost-thread1.49.0 amd64 1.49.0-3.2 [64.0 kB]                            
Get:9 http://ftp.us.debian.org/debian/ wheezy/main libboost-chrono1.49.0 amd64 1.49.0-3.2 [39.8 kB]                   
Get:10 http://ftp.us.debian.org/debian/ wheezy/main libdb5.1++ amd64 5.1.29-5 [757 kB]
Get:11 http://ftp.us.debian.org/debian/ wheezy/main libminiupnpc5 amd64 1.5-2 [37.9 kB]                                                                                                      
Get:12 http://ftp.us.debian.org/debian/ wheezy/main minissdpd amd64 1.1.20120121-1 [17.5 kB]                                                                                                 
Fetched 3,742 kB in 8s (462 kB/s)                                                                                                                                                            
Selecting previously unselected package openssl.
(Reading database ... 27776 files and directories currently installed.)
Unpacking openssl (from .../openssl_1.0.1e-2+deb7u12_amd64.deb) ...
Selecting previously unselected package rpl.
Unpacking rpl (from .../archives/rpl_1.5.5-1_all.deb) ...
Selecting previously unselected package pwgen.
Unpacking pwgen (from .../pwgen_2.06-1+b2_amd64.deb) ...
Selecting previously unselected package libboost-system1.49.0.
Unpacking libboost-system1.49.0 (from .../libboost-system1.49.0_1.49.0-3.2_amd64.deb) ...
Selecting previously unselected package libboost-filesystem1.49.0.
Unpacking libboost-filesystem1.49.0 (from .../libboost-filesystem1.49.0_1.49.0-3.2_amd64.deb) ...
Selecting previously unselected package libboost-program-options1.49.0.
Unpacking libboost-program-options1.49.0 (from .../libboost-program-options1.49.0_1.49.0-3.2_amd64.deb) ...
Selecting previously unselected package libboost-thread1.49.0.
Unpacking libboost-thread1.49.0 (from .../libboost-thread1.49.0_1.49.0-3.2_amd64.deb) ...
Selecting previously unselected package libboost-chrono1.49.0.
Unpacking libboost-chrono1.49.0 (from .../libboost-chrono1.49.0_1.49.0-3.2_amd64.deb) ...
Selecting previously unselected package libdb5.1++:amd64.
Unpacking libdb5.1++:amd64 (from .../libdb5.1++_5.1.29-5_amd64.deb) ...
Selecting previously unselected package libminiupnpc5.
Unpacking libminiupnpc5 (from .../libminiupnpc5_1.5-2_amd64.deb) ...
Processing triggers for man-db ...
Setting up openssl (1.0.1e-2+deb7u12) ...
Setting up rpl (1.5.5-1) ...
Setting up pwgen (2.06-1+b2) ...
Setting up libboost-system1.49.0 (1.49.0-3.2) ...
Setting up libboost-filesystem1.49.0 (1.49.0-3.2) ...
Setting up libboost-program-options1.49.0 (1.49.0-3.2) ...
Setting up libboost-thread1.49.0 (1.49.0-3.2) ...
Setting up libboost-chrono1.49.0 (1.49.0-3.2) ...
Setting up libdb5.1++:amd64 (5.1.29-5) ...
Setting up libminiupnpc5 (1.5-2) ...
Processing triggers for python-support ...
Selecting previously unselected package bitcoind-init.
(Reading database ... 27926 files and directories currently installed.)
Unpacking bitcoind-init (from .../bitcoind-init_0.9.3-0_amd64.deb) ...
Selecting previously unselected package minissdpd.
Unpacking minissdpd (from .../minissdpd_1.1.20120121-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up bitcoind-init (0.9.3-0) ...
update-rc.d: using dependency based boot sequencing
[ ok ] bitcoin-init.sh: Start bitcoind Daemon is disabled check /etc/default/bitcoin-init.
Setting up minissdpd (1.1.20120121-1) ...
root@vps590197:/# 

Al instalar este paquete se crea el usuario bitcoin cuyo directorio de trabajo es

/var/lib/bitcoin

el script de instalación lo deja con una configuración lista para funcionar.

Solo hay que editar /etc/default/bitcoin-init (La sintaxis es bash)

root@vps590197:/# cat /etc/default/bitcoin-init 
ENABLE=no

SERVER_CONF=/var/lib/bitcoin/.bitcoin/bitcoin-server.conf
CLIENT_CONF=/var/lib/bitcoin/.bitcoin/bitcoin.conf
DATADIR=/var/lib/bitcoin/.bitcoin
RUNUSER=bitcoin
RUNGROUP=bitcoin

NICE_VAL=18

Y cambiar el valor de la variable ENABLE por yes de modo que quede así

root@vps590197:/# cat /etc/default/bitcoin-init 
ENABLE=yes

SERVER_CONF=/var/lib/bitcoin/.bitcoin/bitcoin-server.conf
CLIENT_CONF=/var/lib/bitcoin/.bitcoin/bitcoin.conf
DATADIR=/var/lib/bitcoin/.bitcoin
RUNUSER=bitcoin
RUNGROUP=bitcoin

NICE_VAL=18

En el caso que necesitemos modificar la configuración del demonio bitcoind se debe editar el archivo /var/lib/bitcoin/.bitcoin/bitcoin-server.conf

Si en el archivo /var/lib/bitcoin/.bitcoin/bitcoin-server.conf modificamos la variable rpcuser y/o rpcpassword debemos modificarla tambien en el archivo /var/lib/bitcoin/.bitcoin/bitcoin.conf de modo que sean iguales en ambos archivos.

Si tenemos un archivo wallet.dat debemos copiarlo en el directorio /var/lib/bitcoin/.bitcoin y cambiarle el usuario y los permisos

root@vps590197:/# chown bitcoin:bitcoin /var/lib/bitcoin/.bitcoin/wallet.dat
root@vps590197:/# chmod 0600 /var/lib/bitcoin/.bitcoin/wallet.dat
root@vps590197:/# 

Si no tenemos archivo wallet.dat uno sera creado la primera vez que arranquemos el demonio.

Ahora procedemos a arrancar el demonio.

El script de inicio es /etc/init.d/bitcoin-init.sh

root@vps590197:/# /etc/init.d/bitcoin-init.sh start
[ ok ] bitcoin-init.sh: Start bitcoind.
root@vps590197:/# 

Esperamos unos minutos y probamos de conectarnos por RPC para eso nos convertimos en el usuario bitcoin y ejecutamos una consulta

root@vps590197:/# su bitcoin 
bitcoin@vps590197:/$ bitcoin-cli getinfo
{
    "version" : 90300,
    "protocolversion" : 70002,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 95537,
    "timeoffset" : 0,
    "connections" : 4,
    "proxy" : "",
    "difficulty" : 8078.19525793,
    "testnet" : false,
    "keypoololdest" : 1409790646,
    "keypoolsize" : 1025,
    "paytxfee" : 0.00000000,
    "relayfee" : 0.00001000,
    "errors" : ""
}
bitcoin@vps590197:/$ 

Si quieren conectarse con otro usuario pueden hacer lo siguiente (ejemplo con el usuario root)

root@vps590197:/# mkdir -p /root/.bitcoin
root@vps590197:/# cp /var/lib/bitcoin/.bitcoin/bitcoin.conf /root/.bitcoin/
root@vps590197:/# chown root:root /root/.bitcoin/bitcoin.conf 
root@vps590197:/# chmod 0600 /root/.bitcoin/bitcoin.conf
root@vps590197:/# 

Luego probamos de conectarnos con ese usuario

root@vps590197:/# bitcoin-cli getinfo
{
    "version" : 90300,
    "protocolversion" : 70002,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 114072,
    "timeoffset" : 0,
    "connections" : 4,
    "proxy" : "",
    "difficulty" : 76192.61934751,
    "testnet" : false,
    "keypoololdest" : 1409790646,
    "keypoolsize" : 1025,
    "paytxfee" : 0.00000000,
    "relayfee" : 0.00001000,
    "errors" : ""
}
root@vps590197:/#                    

NOTA 1: debemos esperar que se sincronice toda la cadena de bloques eso puede tardar mas de un día

NOTA 2: Debemos asegurarnos de tener espacio en el disco pues al día de escribir este articulo 3-9-2014 toda la cadena de bloques ocupa unos 27 GB

Cualquier bug o error de concepto no duden en dejar un comentario.

Con esto terminamos este articulo