Creación un nodo de Storj

Docker 14 de jun. de 2020

Hoy os traigo un tutorial de cómo unirte a la red de datos descentralizada de Storj creando un nodo y cediendo ancho de banda y espacio en tus discos.

A cambio de estas cesiones, Storj nos recompensa con pagos en su criptomoneda STORJ.

Os dejo la web por si queréis profundizar más en el proyecto:

Storj - Decentralized Cloud Storage
Storj DCS is secure cloud object storage for developers that’s S3-compatible at up to 80% less cost. Try it free and see how you can start building on the decentralized cloud today.

Nota: al principio probablemente no ganéis nada debido a que la red se fundamenta en la reputación de los nodos para funcionar, y hasta que tu nodo no tenga cierta reputación y tiempo no empezarás a ver ningún tipo de ingreso


Antes de empezar

Primero de todo necesitaremos tener un equipo (o hypervisor) con el que podamos cumplir los requisitos mínimos de un nodo de Storj (revisad la web para eso, ya que los requisitos suelen cambiar).

Es necesario tener los siguientes programas instalados (o bien utilizar alternativas de vuestro agrado): Putty y WinSCP

Por otra parte necesitaremos tener un token con el cuál registrar los nodos, para ello nos registraremos con nuestro email en Storj y esperaremos a que nos envien el token al correo.

Entramos en nuestra cuenta de DuckDNS y en el banner superior encontraremos el token que deberemos copiar y guardar para más adelante.

Y por último descargamos lo siguiente:

rancher/os
Tiny Linux distro that runs the entire OS as Docker containers - rancher/os
Hay que descargar la que pone rancheros.iso a secas.

Crear clave SSH para Rancher

Rancher es que no permite el uso de contraseñas por defecto, solo permite acceso con una clave ssh, por lo tanto, vamos a generar una:

Si no tienes el programa Putty, lo puedes descargar desde aquí:

Download PuTTY: latest release (0.73)

Una vez instalado, abrimos PuTTYgen y le damos a generate, seguimos las instrucciones que nos salen, en Key Comment ponemos nuestro email (esto es opcional), le ponemos una contraseña si queremos y guardamos la clave privada en un lugar seguro, ya que sin esta clave no podremos volver a entrar al servidor.

Lo que nos sale en el cuadro de texto superior, lo copiamos y lo guardamos para luego.


Crear USB de instalación de RancherOS

En el caso de que lo montéis en un hypervisor, montad la ISO directamente en la máquina virtual y saltaos este paso.

Yo suelo utilizar Rufus para grabar las ISO en USBs, pero vosotros podéis usar el que más os guste.

Una vez creado lo conectamos al PC e iniciamos desde el USB.


Configuración e Instalación de RancherOS

Una vez hayan pasado unos segundos y haya acabado de iniciar el instalador, pulsamos enter y escribimos:

sudo passwd rancher
Introducimos una nueva contraseña, enter, la confirmamos y enter de nuevo.

Necesitamos saber el nombre del disco de donde se va a instalar rancher y el nombre del disco donde se van a guardar los datos del nodo, para ello ejecutamos el siguiente comando:

sudo fdisk -l

Nos guiaremos por las capacidades para distinguirlos. Nos interesa /dev/sda y /dev/sdb, en mi caso el disco de 16GB es el del SO y el de 5GB es el disco de los datos del nodo (recordad que el requisito mínimo son 500GB, aunque en el tutorial haya puesto uno de 5GB).

Nos anotamos que disco es cual para más adelante.


Configuración

Ahora nos vamos a otro PC y creamos un archivo con el nombre cloud-config.yaml y dentro pegamos lo siguiente:

#cloud-config
hostname: storjnode
ssh_authorized_keys:
  - ssh-rsa AAA... [email protected]

rancher:
  console: ubuntu
  
  environment:
    # DuckDNS
    TZ: Europe/Madrid
    SUBDOMAINS: subdomain1,subdomain2
    TOKEN: token
    # Storjnode
    WALLET: 0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    EMAIL: [email protected]
    ADDRESS: domain.duckdns.org:28967
    STORAGE: 1TB
    
  network:
    dns:
      nameservers:
        - 1.1.1.1
        - 1.0.0.1
      override: false # Override DHCP assigned nameservers
    # Assign static IP configuration to interfaces (Default: use DHCP)
    # Ref: https://rancher.com/docs/os/v1.x/en/installation/networking/interfaces/
    #interfaces:
    #  eth1:
    #    address: 192.168.1.100/24
    #    gateway: 192.168.1.1
    #    mtu: 1500
    #    dhcp: false
    
  services:
    duckdns:
      image: linuxserver/duckdns:latest
      container_name: duckdns
      restart: always
      labels:
        io.rancher.os.after: console,wait-for-network
      environment:
      - TZ
      - SUBDOMAINS
      - TOKEN
      
    portainer:
      image: portainer/portainer:latest
      container_name: portainer
      restart: always
      ports:
        - "9000:9000"
      labels:
        io.rancher.os.after: console,wait-for-network
        io.rancher.os.scope: system
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock
    
    storjnode:
      image: storjlabs/storagenode:beta
      container_name: storjnode
      restart: always
      ports:
        - "28967:28967"
        - "14002:14002"
      labels:
        io.rancher.os.after: duckdns,wait-for-network
      volumes:
        - /identity/storagenode:/app/identity
        - /storage:/app/config
      environment:
      - WALLET
      - EMAIL
      - ADDRESS
      - STORAGE
      

runcmd:
  - 'mkdir -p /storage'
  - 'mkdir -p /identity'
  - 'mount -t ext4 /dev/sdb /storage || (mkfs.ext4 /dev/sdb && mount -t ext4 /dev/sdb /storage)'

De este archivo tendremos que cambiar distintos parámetros:

  • En la línea 3: cambiamos la clave ssh que hay por la que hemos copiado anteriormente.
  • En la línea 12: reemplazamos subdomain1,subdomain2 por nuestro(s) subdominio(s) de DuckDNS, si tuviesemos el subdominio storj.duckdns.org, solo pondríamos storj, si tenemos 2 o más subdominios, entonces hay que poner los subdominios separados por comas: storj,storj2
  • En la línea 13: reemplazamos token por nuestro token de DuckDNS copiado anteriormente
  • En la línea 15, 16, 17 y 18: ponemos la configuración de nuestro nodo
  • En la línea 81: cambiamos /dev/sdb por la ruta de nuestro disco donde vayan a ir los datos del nodo. EL COMANDO DE ESTA LÍNEA FORMATEA EL DISCO SI NO ESTÁ EN FORMATO EXT4. Id con cuidado si estáis migrando un nodo a Linux, ya que tendréis que copiar os datos a otro lado y luego volverlos a pasar de vuelta.

Para copiar el archivo que acabamos de crear y editar, abrimos WinSCP y nos conectamos al PC mediante la IP que se le haya asignado automáticamente, con el usuario rancher y con la contraseña que hemos puesto previamente.

Si no sabéis vuestra IP, podéis ejecutar ip addr en la consola de Rancher y os aparecerá.

Una vez nos conectemos, se nos abrirá una carpeta, ahí copiamos el cloud-config.yaml y luego volvemos a la consola para validar que el archivo sea correcto y no nos hayamos equivocado.

sudo ros config validate -i cloud-config.yaml

Ahora para instalar simplemente tenemos que ejecutar (cambiando /dev/sda por nuestro disco de instalación):

sudo ros install -c cloud-config.yaml -d /dev/sda

Nos pedirá confirmación, ponemos y y luego enter, y de nuevo, nos pedirá confirmación para reiniciar el equipo, ponemos y y luego enter.


Portainer

Para aquellos que no conozcáis Portainer, es una herramienta que nos va a proporcionar una interfaz gráfica para poder administrar y crear nuestros contenedores en docker. Gracias al archivo de configuración que le hemos pasado antes, viene preinstalado:

Vamos a http://IP_de_RancherOS:9000

Configuramos un usuario y contraseña

Seleccionamos local, ya que queremos administrar esta máquina, no una remota, aunque desde un mismo portainer puedes administrar otras máquinas remotas.

En la barra lateral le damos a containers y nos saldrán los contenedores que tenemos, incluido el de storjnode.

Antes de continuar tenemos que parar el contenedor de Storj, para ello, lo seleccionamos y pulsamos Stop, una vez hecho esto, podemos continuar.


Identity

Una vez hecho esto ya está casi todo listo, falta la identity del nodo.

Hay dos opciones: copiar una ya existente o bien crear una nueva. A continuación os explico ambas.


Identity nueva

Para crear una, abrimos PuTTY pero esta vez hay que cargar la clave SSH, ya que ya hemos instalado Rancher con la configuración anterior.

En la pestaña lateral le damos a Auth y en Private key ponemos la clave privada que hemos guardado antes. Luego volvemos a Session, ponemos la IP del equipo y le damos al botón de Open.

Una vez hecho esto se nos abre el terminal y solo hay que ejecutar los siguientes comandos (uno detrás de otro):

sudo apt-get update && sudo apt-get install unzip curl -y
curl -L https://github.com/storj/storj/releases/latest/download/identity_linux_amd64.zip -o identity_linux_amd64.zip
unzip -o identity_linux_amd64.zip
sudo chmod +x identity
sudo mv identity /usr/local/bin/identity
identity create storagenode
identity authorize storagenode <email:characterstring>
grep -c BEGIN ~/.local/share/storj/identity/storagenode/ca.cert
grep -c BEGIN ~/.local/share/storj/identity/storagenode/identity.cert
sudo mv ~/.local/share/storj/identity/storagenode /identity/storagenode
sudo chown -R root:root /identity
Tenemos que sustituir <email:characterstring> por el token que nos haya enviado Storj al correo

Volvemos a Portainer y ponemos a funcionar el nodo

Seleccionamos storjnode y le damos a start

Debajo de Quick actions nos aparecen unos iconos, si le damos al que parece a un fichero, se nos abrirá el log del contenedor y podremos ver si algo va mal.


Identity existente

Abrimos WinSCP y ponemos la IP y rancher como usuario. La contraseña se deja en blanco.

Le damos a Avanzado
En el submenú de Autentificación ponemos la ruta de nuestra clave privada y le damos a Aceptar y luego a Conectar.

Una vez estemos dentro, cogemos la carpeta storagenode que está dentro de nuestra carpeta identity y la arrastramos.


Abrimos PuTTY pero esta vez hay que cargar la clave SSH, ya que ya hemos instalado Rancher con la configuración anterior.

En la pestaña lateral le damos a Auth y en Private key ponemos la clave privada que hemos guardado antes. Luego volvemos a Session, ponemos la IP del equipo y le damos al botón de Open.

Una vez hecho esto se nos abre el terminal y solo hay que ejecutar los siguientes comandos (uno detrás de otro):

sudo mv /home/rancher/storagenode /identity/storagenode
sudo chown -R root:root /identity

Volvemos a Portainer y ponemos a funcionar el nodo

Seleccionamos storjnode y le damos a start

Debajo de Quick actions nos aparecen unos iconos, si le damos al que parece a un fichero, se nos abrirá el log del contenedor y podremos ver si algo va mal.


Y ya tendríamos nuestro nodo de Storj configurado y funcionando!

Etiquetas

Carlos Mora Clavero

Soy un estudiante al que le gusta aprender cosas nuevas en sus ratos libres sobre sistemas, hardware, programación, etc.