Mar 172013
 

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

En este articulo presentamos un script para ejecutar bitcoind automáticamente en segundo plano al iniciar el sistema, el script se encuentra aquí bitcoin-init-0.1.0.tar.bz2

Este script funciona en Debian Squeezy, Debian Wheezy y Ubuntu Precise Pangolin puede que también en otras versiones pero no lo hemos testeado.
NOTA: Funciona con bitcoind 0.6.x, 0.7.x y 0.8.x recomendamos la version 0.8.x pueden ver en nuestros artículos anteriores como instalarlo en Debian «Como instalar bitcoin 0.8.0 en debian squeeze amd64» Como instalar bitcoin 0.8.0 en debian wheezy amd64 y para instalarlo en Ubuntu las instrucciones están aquí

Ahora si comencemos con la instalación del script.

Primero descargamos el script

root@x252:/tmp# wget http://downloads.geeklab.com.ar/files/scripts/bitcoin-init-0.1.0.tar.bz2
--2013-03-17 20:43:17--  http://downloads.geeklab.com.ar/files/scripts/bitcoin-init-0.1.0.tar.bz2
Resolving downloads.geeklab.com.ar (downloads.geeklab.com.ar)... 69.61.29.79
Connecting to downloads.geeklab.com.ar (downloads.geeklab.com.ar)|69.61.29.79|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4308 (4.2K) [application/x-bzip2]
Saving to: `bitcoin-init-0.1.0.tar.bz2'

100%[=====================================================================================================================================================================================================================================================================================>] 4,308       --.-K/s   in 0s      

2013-03-17 20:43:17 (62.4 MB/s) - `bitcoin-init-0.1.0.tar.bz2' saved [4308/4308]

root@x252:/tmp# 

Luego lo descomprimimos e ingresamos en el directorio bitcoin-init-0.1.0

root@x252:/tmp# tar xjf bitcoin-init-0.1.0.tar.bz2 
root@x252:/tmp# cd bitcoin-init-0.1.0
root@x252:/tmp/bitcoin-init-0.1.0# 

Podemos ver que hay un script llamado install-bitcoin-init.sh el script esta listo para ser ejecutado he instalara dependencias, creara un usuario para el demonio, copiara los archivos en el sistema y configurara el script, si lo desean pueden editarlo y modificar estas variables

SYSTEM_USER=bitcoin 
RPC_USER=bitcoin
##SSL CERT DATA
DAYS=3650
COUNTRYNAME=AR ##2 letter code
STATEORPROVINCENAME="BUENOS AIRES"
LOCALITYNAME=CABA
ORGANITATIONNAME=GeekLab
ORGANITATIONALUNITNAME=GeekLab
COMMONNAME=geeklab.com.ar
EMAILADDRESS=rmalvarez@gnupanel.org
FILE_PEM=bitcoin-init.pem
FILE_CERT=bitcoin-init.cert

Las variables que si deben editar son

##SSL CERT DATA
COUNTRYNAME=AR ##2 letter code
STATEORPROVINCENAME="BUENOS AIRES"
LOCALITYNAME=CABA
ORGANITATIONNAME=GeekLab
ORGANITATIONALUNITNAME=GeekLab
COMMONNAME=geeklab.com.ar
EMAILADDRESS=rmalvarez@gnupanel.org

El script realizara lo siguiente

1 – Instalara las dependencias

2 – Creara un usuario y el home lo pondra en /var/lib/${SYSTEM_USER} por defecto /var/lib/bitcoin

3 – Luego creara el directorio ${SYSTEM_USER_DIR}/.bitcoin por defecto /var/lib/bitcoin/.bitcoin

4 – Copiara los archivos bitcoin-server.conf y bitcoin.conf en ${SYSTEM_USER_DIR}/.bitcoin

5 – Reemplazara las variables necesarias en bitcoin-server.conf y bitcoin.conf el password rpc lo generara en el momento

6 – Copiara el archivo bitcoin-init en /etc/default

7 – Copiara bitcoin-init.sh en /usr/local/bin

8 – Creara el enlace simbolico /etc/init.d/bitcoin-init.sh apuntando a /usr/local/bin/bitcoin-init.sh

9 – Creara los enlaces System-V para el inicio

10 – Creara el certificado SSL para bitcoind

11 – Copiara el certificado en ${SYSTEM_USER_DIR}/.bitcoin por defecto /var/lib/bitcoin/.bitcoin

12 – Acomodara los permisos

Ahora ejecutamos el script la salida debería ser similar a la siguiente

root@x252:/tmp/bitcoin-init-0.1.0# ./install-bitcoin-init.sh 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
coreutils is already the newest version.
openssl is already the newest version.
pwgen is already the newest version.
rpl is already the newest version.
passwd is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Replacing "__SYSTEM_USER_DIR__" with "/var/lib/bitcoin" (case sensitive) (partial words matched)
.
A Total of 3 matches replaced in 1 file searched.
Replacing "__SYSTEM_USER__" with "bitcoin" (case sensitive) (partial words matched)
.
A Total of 2 matches replaced in 1 file searched.
Replacing "__BITCOIN_RPC_USER__" with "bitcoin" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__BITCOIN_RPC_PASSWORD__" with "YOUR_SECRET" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__FILE_PEM__" with "bitcoin-init.pem" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__FILE_CERT__" with "bitcoin-init.cert" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__BITCOIN_RPC_USER__" with "bitcoin" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__BITCOIN_RPC_PASSWORD__" with "YOUR_SECRET" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
update-rc.d: using dependency based boot sequencing
Replacing "__COUNTRY__" with "AR" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__STATE__" with "BUENOS AIRES" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__LOCALITY__" with "CABA" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__ORGANITATION__" with "GeekLab" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__ORGANITATION_UNIT__" with "GeekLab" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__COMMON_NAME__" with "geeklab.com.ar" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Replacing "__EMAIL__" with "rmalvarez@gnupanel.org" (case sensitive) (partial words matched)
.
A Total of 1 matches replaced in 1 file searched.
Generating RSA private key, 4096 bit long modulus
.........................................++
......................................................................++
e is 65537 (0x10001)
root@x252:/tmp/bitcoin-init-0.1.0# 

En el caso que tengan una billetera bitcoin deben copiarla en /var/lib/bitcoin/.bitcoin

root@x252:/tmp/bitcoin-init-0.1.0# cp wallet.dat /var/lib/bitcoin/.bitcoin
root@x252:/tmp/bitcoin-init-0.1.0# chown bitcoin:bitcoin /var/lib/bitcoin/.bitcoin/wallet.dat 
root@x252:/tmp/bitcoin-init-0.1.0# chmod 0600 /var/lib/bitcoin/.bitcoin/wallet.dat
root@x252:/tmp/bitcoin-init-0.1.0# 

Ahora procedemos a arrancar el demonio.

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

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

root@x252:/tmp/bitcoin-init-0.1.0# su bitcoin
bitcoin@x252:/tmp/bitcoin-init-0.1.0$ bitcoind getinfo
{
    "version" : 80000,
    "protocolversion" : 70001,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 55450,
    "connections" : 9,
    "proxy" : "",
    "difficulty" : 12.84918315,
    "testnet" : false,
    "keypoololdest" : 1363538621,
    "keypoolsize" : 1025,
    "paytxfee" : 0.00000000,
    "errors" : ""
}
bitcoin@x252:/tmp/bitcoin-init-0.1.0$ 

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

root@x252:/tmp/bitcoin-init-0.1.0# mkdir -p /home/rmalvarez/.bitcoin
root@x252:/tmp/bitcoin-init-0.1.0# cp /var/lib/bitcoin/.bitcoin/bitcoin.conf /home/rmalvarez/.bitcoin
root@x252:/tmp/bitcoin-init-0.1.0# chown -R rmalvarez:rmalvarez /home/rmalvarez/.bitcoin
root@x252:/tmp/bitcoin-init-0.1.0# chmod 0600 /home/rmalvarez/.bitcoin/bitcoin.conf 
root@x252:/tmp/bitcoin-init-0.1.0# 

Luego probamos de conectarnos con ese usuario

root@x252:/tmp/bitcoin-init-0.1.0# su rmalvarez
rmalvarez@x252:/tmp/bitcoin-init-0.1.0$ bitcoind getinfo  
{
    "version" : 80000,
    "protocolversion" : 70001,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 88932,
    "connections" : 8,
    "proxy" : "",
    "difficulty" : 3091.73689041,
    "testnet" : false,
    "keypoololdest" : 1363538621,
    "keypoolsize" : 1025,
    "paytxfee" : 0.00000000,
    "errors" : ""
}
rmalvarez@x252:/tmp/bitcoin-init-0.1.0$ 

Pueden revisar el script para ver detalladamente los pasos que realiza y adaptarlo a sus necesidades.

Hay que tener en cuenta que la base de datos de bitcoin tardara mucho en actualizarse en algunos casos mas de dos días.

Bitcoin 0.8.x aceptara conexiones RPC aunque no tenga la base de datos actualizada (a los pocos minutos de iniciada por primera vez)
en el caso de las versiones 0.6.x y 0.7.x no aceptara conexiones RPC hasta no tener la base totalmente actualizada

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

Con esto terminamos este articulo

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.