sitio personal de Rodrigo Garcia Saenz.

Renovando nodo chersky parte 2

permalink.

Actualizado - 23 July 2023

En la primera parte 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

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. 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 (extraído de 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.

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:

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.

Nodo Chersky protada

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 (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 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 y http://chersky.laotra.red:7501/mp3 :)

El botadero

También, he montado el servicio de compratición de archivos el botadero en 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.

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

1. Instalando utilidades del sistema, python y ajustando permisos

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.

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:

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.

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:

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:

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.

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

Reiniciar nginx

# 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

Consejo del día

Si tienes la posiblidad, haz donaciones a organizaciones sin ánimo de lucro para apoyar su trabajo.

Muchas de estas organizaciones se mantienen gracias a la gente que les apoya con donaciones monetarias.