Newer
Older
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
### Caracteristicas
El `bfanodo` es un docker que podes bajar y correr en tu propia
maquina o datacenter. Se va a levantar como un nodo transaccional,
**sin cuentas**, abierto a todo el mundo.
Si no queres brindar este servicio a la red, podes usar ipfilter o
(mas facil) no publicar el puerto 8545 (atalo (bind) a 127.0.0.1
solamente, igual que puerto 8546). Para hacer eso, tenes que cambiar
los parametros `-p` en `start.sh`.
Como ves en el ejemplo abajo, puerto 30303/tcp y 8545/tcp estan abiertos al
mundo (0.0.0.0 = INADDR_ANY) y 8546/tcp esta abierto solamente para
conecciones de tu maquina.
```
$ docker container port bfanodo
30303/tcp -> 0.0.0.0:30303
8545/tcp -> 0.0.0.0:8545
8546/tcp -> 127.0.0.1:8546
```
Es importante entender que "tu maquina" incluye otros dockers en
la misma maquina, si las has conectado con el parametro `--link`,
como se puede ver aqui:
```
docker run --rm -it --link bfanodo alpine env | grep BFANODO_PORT | sort
BFANODO_PORT_30303_TCP_ADDR=172.17.0.2
BFANODO_PORT_30303_TCP_PORT=30303
BFANODO_PORT_30303_TCP_PROTO=tcp
BFANODO_PORT_30303_TCP=tcp://172.17.0.2:30303
BFANODO_PORT_30303_UDP_ADDR=172.17.0.2
BFANODO_PORT_30303_UDP_PORT=30303
BFANODO_PORT_30303_UDP_PROTO=udp
BFANODO_PORT_30303_UDP=udp://172.17.0.2:30303
BFANODO_PORT_8545_TCP_ADDR=172.17.0.2
BFANODO_PORT_8545_TCP_PORT=8545
BFANODO_PORT_8545_TCP_PROTO=tcp
BFANODO_PORT_8545_TCP=tcp://172.17.0.2:8545
BFANODO_PORT_8546_TCP_ADDR=172.17.0.2
BFANODO_PORT_8546_TCP_PORT=8546
BFANODO_PORT_8546_TCP_PROTO=tcp
BFANODO_PORT_8546_TCP=tcp://172.17.0.2:8546
BFANODO_PORT=tcp://172.17.0.2:8545
```
Los puertos estan disponibles de los otros dockers tambien sin usar
`--link` pero no van a estar publicados en variables del entorno.
```
docker run --rm alpine sh -c "date | nc 172.17.0.2 8545" ; echo
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Connection: close
400 Bad Request
```
(puerto abierto)
### Cuentas
Una leccion aprendido durante el primer año de BFA es, que el `geth`
normalmente no necesita una cuenta asociado (eso obviamente es distinto si
lo usas como nodo sellador).
Las cuentas deben estar asociados a los applicaciones que se conecta al
nodo. Ese hace es sistema mas seguro, y **cada applicacion necesita su
propia cuenta**.
### Para usar
```
wget https://gitlab.bfa.ar/docker/bfanodo/raw/master/start.sh
./start.sh
```
Si no sos miembro del grupo `docker` (en `/etc/group` ) tenes que hacer todo como `root`
Te va a crear un directorio en `~/dockers/volumes/bfanodo,home,bfa,bfa,network,node,geth` . Si tenes cuentas/llaves van ahi. Toda la blockchain tambien se ve ahi, para que no hay que bajar toda la blockchain de vuelta al actualizar el nodo.
### Avisos del sistema
Si ves el aviso `WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.` la solucion posible esta en https://docs.docker.com/install/linux/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities
Normalmente es suficiente con:
```
echo 'GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"' >> /etc/default/grub
update-grub
reboot
```
### Registros / logs
Para ver como esta tu bfanodo, estos comandos pueden brindar mas informacion (y hasta darte un shell):
```
docker stats bfanodo
docker logs bfanodo
docker exec bfanodo bfalog.sh
docker exec bfanodo localstate.pl
docker exec -it bfanodo bash
```
### Crear
Para crear el docker uso el script `build.sh`. No lo uses si no sabes como funciona todo.