En la [primera parte](/posts/renovando-nodo-Chersky-parte-1) de la renovación del nodo Chersky, se vió la conexión del nodo hacia LaOtraRed e internet.

A continuación veremos sobre los servicios que se ponen a dispocisión incluyendo:

* [Sobre la conexión por VPN](#sobre-la-conexion-por-vpn)
* [Conexión del servidor (Raspberry pi)](#conexion-del-servidor-raspberry-pi)
* [Sobre DNS autoritativo o resolvedor](#sobre-dns-autoritativo-o-resolvedor)
* [Servicios](#servicios)
    - Sitio web (página principal)
    - Radio (streaming de audio)
    - El Botadero (compartición de archivos)
* [Escalabilidad](#escalabilidad)
* [Conclusión](#conclusion)

## Sobre la conexión por VPN

El nodo Chersky a 2 de Noviembre de 2018 se conecta a LaOtraRed a través de una VPN (red privada virtual) por internet, esto por que aún no tiene conexión directa con otro nodo como modo de conexión alternativa. Aun así incluso por VPN el nodo Chersky anuncia sus rutas y hace crecer la red.

La conexión es por una VPN mesh, en pocas palabras una **VPN resitente a caídas** usando el protocolo [tinc](https://www.tinc-vpn.org/). Las conexiones por VPN no son parte de la troncal de LaOtraRed y sólo son una forma de conexión particular, por eso no tienen soporte oficial.

![conexión por VPN](/static/imgs/posts/vpnlorv1.jpg)
(extraído de [https://laotra.red/meshnet/vpnlor](https://laotra.red/meshnet/vpnlor))

El dibujo anterior ilustra tres tres tipo de nodos, los **nodos LOR** (nodos dentro la red troncal), **Concentradores Meshnet** que son servidores en internet conectados por una VPN usando el protocolo tinc, y **clientes VPN**. El Nodo Chersky entraría en esta categoría por estar conectado a LaOtraRed (LOR) a través de uno o más concentradores meshnet, hay otros nodos que son Meshnet *gateways* y hacen el puente entre LOR y la VPN Meshnet.

Si quieres más información sobre meshnet ponte en [contacto](https://laotra.red/redlibre/contacto).

## Conexión del servidor (Raspberry pi)

Como servidor principal para el nodo Chersky estoy usando un reaspberry pi 2, con 16 GB de almacenamiento y casi 1GB de RAM. En este equipo he instalado raspbian 9 y para tenerlo como el servidor principal de mi nodo he definido la dirección ipv4 `10.64.3.66` e ipv6 `fc01:1934:1:200::2` fijas. Las configuraciones necesarias se han hecho en el archivo `/etc/network/interfaces`:

    :::bash
    auto eth0
    allow-hotplug eth0
    # conexion ipv4
    iface eth0 inet static
            address 10.64.3.66       # direccion ipv4 fija
            netmask 255.255.255.240
            gateway 10.64.3.65       # enrutador principal del nodo
    # conexion ipv6
    iface eth0 inet6 static
          address fc01:1934:1:200::2 # direccion ipv6 fija
          netmask 64
          gateway fc01:1934:1:200::1 # enrutador principal del nodo

Con esas configuraciones el servidor ya tiene conexión a internet y LaOtraRed por que el enrutador como se define en la primera parte se encarga de dirigir el tráfico donde corresponde.

## Sobre DNS autoritativo o resolvedor

En LaOtraRed a esta fecha se usa principalmente el servidor DNS autoritativo en 10.64.64.53 y se tienen registros para resolver el dominio `chersky.laotra.red` que apunten al servidor del nodo en ipv6 e ipv4.

Se podría configurar en este nodo un servidor DNS autoritativo o resolvedor para colaborar con LaOtraRed, pero ahora mismo hay pocas conexiones y servicios que requiran este esfuerzo adicional. Entonces a través de los medios de contacto de LOR he solicitado explícitamente se registren los dominios: `chersky.laotra.red botadero.chersky.laotra.red radio.chersky.laotra.red` para que apunten al servidor del nodo Chersky.

## Servicios

A continuación una breve explicación de los servicios que el nodo Chersky proporciona.

### Sitio web (página principal)

El sitio web es **accesible en LOR y generalmente también desde internet** en la dirección [http://chersky.laotra.red](http://chersky.laotra.red).

![Nodo Chersky protada](/static/imgs/posts/nodo_chersky2.jpg)

Una página de presentación e informativa para visitantes, es un sitio web estático y solamente ha hecho falta instalar el servidor web nginx en el servidor raspberry pi y hacer que apunte al sitio web.

En la página he puesto un índice de los servicios disponibles y referencias a otros servicios de otros nodos y la página índice de [laotra.red](laotra.red) (disponible también en internet).

### Radio (streaming de audio)

El servicio de streaming de audio, se ha hecho siguiendo la guía para montar [radios por wifi](https://laotra.red/servicios/radio-por-wifi) en la wiki de LaOtraRed.

En mi caso he montado dos radios, una para audio en formato OGG Vorbis y otra para MP3. La radio es accesible desde LaOtraRed y pronto también desde internet (se está trabajando en el DNS para eso), en las direcciones [http://chersky.laotra.red:7501/ogg](http://chersky.laotra.red:7501/ogg) y [http://chersky.laotra.red:7501/mp3](http://chersky.laotra.red:7501/mp3) :)

### El botadero

También, he montado el servicio de compratición de archivos [el botadero](https://botadero.rmgss.net/) en [botadero.chersky.nodo.laotra.red](http://botadero.chersky.nodo.laotra.red). Siempre es útil tener un botadero para compartir archivos sin mayores complicaciones y libremente, estoy mejorando el programa y tengo instalada una versión estable cuya sencilla instalación está documentada en [https://notabug.org/strysg/botadero](https://notabug.org/strysg/botadero).

La puesta a dispocisión de este servicio se puede resumir en tres pasos.

#### 1. Instalando utilidades del sistema, python y ajustando permisos

	:::bash
    sudo apt install python-virtualenv python-pip python-dev build-essential nginx
	


Crear un directorio, darle los permisos de un usuario no privilegiado a la aplicación.

	:::bash
	cd /srv
	sudo mkdir servicios
	# aqui reemplazar usuario por el el nombre de usuario deseado
	sudo chown -R usuario:usuario servicios 

Clonar la aplicación, instalar entorno virtual:

	:::bash
    git clone https://notabug.org/strysg/botadero
	cd botadero
	## creando entorno virtual e instalando paquetes python
	virtualenv venv
	. venv/bin/activate
	pip install Flask uwsgi

Agregar permisos, cambiar el usuario dueño del directorio de la aplicación y agergarlo como parte dle grupo `www-data` para el servidor web.

	:::bash
	cd /srv/servicios
	sudo chown -R www-data:www-data botadero
	# agregando el usuario al grupo www-data
	sudo gpasswd -a usuario www-data

#### 2. Ejecutar el botadero como demonio

Probar que la aplicación se ejecuta correctamente:

	:::bash
	cd /srv/servicios/botadero
	sudo -u www-data venv/bin/uwsgi --ini botadero.ini

Hacer que la aplicación se ejecute automáticamente al inicio del sistema, por ejemplo con systemd se crea el archivo `/etc/systemd/system/botadero.service` luego editarlo.
	
    [Unit]
    Description=uwsgi deamon
    After=network.target
    
    [Service]
    User=www-data
    Group=www-data
    WorkingDirectory=/srv/servicios/botadero/
    ExecStart=/srv/servicios/botadero/venv/bin/uwsgi --ini botadero.ini
    
    [Install]
    WantedBy=multi-user.target

Probar que se ejecute el servicio con:

	:::bash
	sudo systemctl start botadero.service
	# comprobar
	sudo systemctl status botadero.service
	# si funciona todo bien, habilitar el servicio
	sudo systemctl enable botadero.service

#### 3. Configurar servidor nginx como proxy reverso

En mi caso he creado el archivo `/etc/nginx/sites-available/botadero.conf`:

    server {
    	listen 80;
    	listen [::]:80;
    	server_name botadero.chersky.nodo.laotra.red;
    	client_max_body_size 5000M;
    	location / {
    		include uwsgi_params;
    		uwsgi_pass unix:/srv/servicios/botadero/botadero.sock;
    	}
    }

Crear enlace simbólico.

	:::bash
	sudo ln -s /etc/nginx/sites-available/botadero.conf /etc/nginx/sites-enabled

Reiniciar nginx

	:::bash
	# probar configuraciones
	sudo nginx -t
	sudo service nginx restart

Si todo anda bien al ingresar desde un navegador a botadero.chersky.nodo.laotra.red se puede acceder a la aplicación.

## Escalabilidad

Una vez siendo parte de la red, prácticamente no hay restricciones para poner servicios o conectarse a más nodos. El comportamiento de cada nodo permite y ayuda a que toda la red sea escalable, es decir siga creciendo en conexiones y contenidos. 

## Conclusión

Poniendo a dispocisión servicio tras servicio y haciendo que otras personas los usen es como se va llenando de contenido una red, y conectando más y más nodos es como se extienden las posiblidades, esto funciona de forma similar a internet pero con un enfoque más distribuido y orientado primero a contenidos locales, luego a contenidos globales.

Seguiré mejorando el nodo y los servicios, lo bueno es que al ser parte de la red libre no se require del permiso especial de alguien y las mejoras e innovación que pudiese hacer no están condicionadas, me despido con una foto de la Chersky que ya está de avanzada edad pero no ha perdido el toque `:D`

![Chersky2](/static/imgs/posts/chersky2.jpg)
