Redes Autônomas (Felipe Fonseca e Vincenzo Tozzi-Brasil)

De nuvem
Ir para: navegação, pesquisa

Resumo

O projeto trata do desenvolvimento protótipos para a criação de redes autônomas, que possibilitem a troca de conteúdos digitais em áreas isoladas ou com pouca conectividade. Está articulado nos eixos hardware, software, acesso e conteúdo. Relaciona-se com projetos correntes dos autores (ZASF e Rede Mocambos).

ZASF.jpeg

Núcleo Filosofico/Pedagogico/Metodologico

Día 1

1 - Analise da Nuboteca

Primero miramos cómo está actualmente organizada la nuboteca.

2 - Classificação/Indice

Discutimos sobre cuál debía ser el método de clasificación: (por contenido? por formato?). Se planteó la idea de que esto dependía del tipo de usuario que fuera a hacer uso del acervo, si pensábamos en un usuario común que accediera a una biblioteca de contenidos generales o bien a usuarios ligados por unos intereses compartidos (por ejemplo, software libre, arte y tecnología, etc.) que constituyen una comunidad de prácticas e intereses.

3 - Comunidade/Publico

Se llegó a la conclusión de que la nuboteca está dirigida a un público genérico, ya que el material relacionado con los proyectos de Interactivos está recogido en el wiki.

4 - Criterios

Decidimos entonces aplicar un criterio más genérico (en base al formato) para la clasificación en el nivel más alto, para ir luego especificando (en base al tema) en los siguientes niveles.

5 - Proposta de Estrutura

Definimos la siguiente estructura de contenidos:

  • Video
    • Peliculas
      • Ficción
      • Documental
      • Infantil
      • Musical
  • Audio
    • Música
    • Entrevistas/Charlas/Presentaciones
  • Texto
    • Tutoriales/Manuales
    • Ensayo
    • Ficción
  • Imágenes
NOTA: En todas las categorías, se incluye una carpeta de 'Otros' para material que no tenga cabida en las carpetas existentes. Periódicamente esa carpeta se revisa y se decide si crear o no una nueva carpeta en función del contenido que haya.
Duda: ¿Es necesario incluir una carpeta de 'Recursos' donde meter material como software, código, mapas, fuentes, etc.?

Dia 2

El día de hoy nos centramos en cómo sería la interfaz de acceso al repositorio. Para ello primero identificamos algunos conceptos que hay detrás del proyecto y que queremos que la interfaz refleje. Estos son:

  • Promover el uso de licencias libres y formatos abiertos.
  • Sostenibilidad: proyecto basado en la idea de acceso limitado y recursos finitos.
  • Facilitar el uso colectivo: que el usuario se ponga en el lugar del otro, fomentar buenas prácticas para facilitar el uso comunitario de los recursos (por ejemplo: seguir una metodología a la hora de nombrar los archivos que facilite su búsqueda, incluir el campo 'comentarios' que dé más información sobre el contenido del archivo.
  • Caja de herramientas: que responda a necesidades reales.
  • Que sea una red local identificable por los miembros de la comunidad, por ejemplo, diseñando una 'marca' para los puntos de acceso a la nuboteca que sea reconocible por todos.
  • Que la interfaz sea 'amigable'.

TO-DO:

Hacer una propuesta de una metodología para nombrar archivos.
Hacer una propuesta de cómo hacer la interfaz amigable.

Proposta de interface da nuboteca

Interfacenuboteca.png


Dias 8 y 9

Nueva Propuesta

Proponemos una nueva forma de organizar el acervo, partiendo de los contenidos existentes. En lugar de ir de la estructura al contenido vamos del contenido a la estructura. ¿Por qué este cambio?

Las dinámicas habituales en informática y en diseño de redes están basadas en una lógica del crecimiento ilimitado.

El modelo nuevo se basa en una lógica de intereses: en lugar de hacerse en previsión de un crecimiento de recursos infinito, la estructura va creciendo desde los intereses -los que ya existen (acervo de nuvem) y los que se vayan generando.

Es una estructura más abierta, un dispositivo inacabado que irá evolucionando en función de cómo evolucione la comunidad que haga uso de ella.

NuevaEstructura.png

Recomendaciones de uso
  • Como esta experiencia quiere contribuir a un modelo de cultura sostenible, se puede limitar el volumen de contenido que puede subirse al acervo.
  • También quiere mantener un compromiso con la cultura libre, se recomienda/permite enlazar solo material cuya licencia permita su libre circulación, tratar de evitar los materiales con copyright.

Para fases más avanzadas del proyecto, se podrían implementar funcionalidades extras:

  • Proponer itinerarios temáticos por el acervo, que una persona o grupo de personas propusieran un subconjunto de materiales en relación a una temática determinada.
  • Automatizar sugerencias: como las carpetas más visitadas o los archivos más descargados.

Comparativa

Propuestas de organización de carpetas, para el repositorio de nuvem.

Prop Pastas.jpg

  • PROPUESTA 1:
    • Criterio de orden: Por tipología, distingue cuatro categorías generales fácilmente identificables.
      • Ventajas:
        • Menor cantidad de carpetas en lista
      • Desventaja:
        • Dos o tres niveles de carpetas antes de llegar al nivel de interés.
        • No permite una búsqueda por temática de interés
    • Añadir archivo: La incorporación de nuevos archivos se realiza directamente dentro de cada carpeta existente. Si no existe una que represente el contenido del nuevo archivo se puede colocar en la carpeta /OTROS/, que cada subcarpeta por tipo tiene.
      • Ventajas:
        • Permite ordenar de modo general (por tipología) toda la nueva información que se agrega al repositorio
      • Desventajas:
        • Los nuevos documentos que no encuentrán catalogación, quedan restringuidos a una carpeta /Otros/ que tiene una posición secundaría dentro del árbol del repositorio


  • PROPUESTA 2:
    • Criterio de orden: Por temática, nace desde la observación de los documentos ya existentes
      • Ventajas:
        • Acceso directo desde un primer nivel de carpetas a la información
      • Desventajas:
        • Mayor cantidad de carpetas en lista
    • Añadir archivo: La incorporación de nuevos archivos se realiza directamente dentro de cada carpeta existente. Si no existe una que represente el contenido del nuevo archivo se puede crear una nueva en la carpeta /CarpetasCompartidas/, y depositar ahí la nueva información.
      • Ventajas:
        • Permite ordenar de modo específico (por temática) toda la nueva información que se agrega al repositorio.
        • La nueva información incorporada en /CarpetasCompartidas/ es más directamente accesible, y ofrece más protagonismo a esta información.
      • Desventajas:
        • No existe ningún tipo de catalogación de la información entrante, más que la que el propio usuario pueda entregar.
        • Puede diversificarse mucho la cantidad de carpetas.
  • Lógica de crecimiento vs. lógica de intereses: el enfoque de estas propuestas tienen dos perspectivas opuestas en su genesis. Mientras la Propuesta 1 se ha pensado desde un contexto general, considerando la gran cantidad de información potencialmente disponible, la segunda se ha pensado desde la información ya existente en el repositorio de nuvem. Como este proyecto se concentra en el desarrollo de una red autónoma, en un contexto local, donde la información potencialmente disponible es menor que en una red global, y está más vinculada a usos comunitarios de la misma, nos hace más sentido usar y evaluar la propuesta 2.
  • Orden vs. diversidad: en la propuesta anterior primaba más el ordenamiento, se traza un camino/estructura desde el que crece la red. Contemplaba la diversidad como un caso excepcional/residual (bajo la carpeta de 'Otros'). Ahora la diversidad forma parte de la propia dinámica de crecimiento de la red.

Presentacion

http://nuboteca/nuboteca/nuvem/projetos/Interactivos2012/RedesAutonomas/metodologia.pdf



Núcleo de Pesquisa e Desenvolvimento Digital

Dia 1

Instalando o Raspberry-Pi

Para instalar baixar a imagem do site do Raspberry ou uma Debian testing (arquitetura armhf)

Para gravar a imagem no cartão ligado no device sdb

dd bs=4M if=nomedaimagem.img of=/dev/sdb

Link:

WTF: Instalação da rede interna para o Interactivos

Os access point que o Capo passou, tem uma opção de funcionar ao mesmo tempo como cliente de outro access point e access point mesmo (AP Client Router). Essa funcionalidade deve ser muito cheia de bug porque a rede caía o tempo todo.

Os access point são da marca TP-LINK, modelo TL-WR743ND.

Topografia da rede

O que conseguimos montar e que ta razoavelmente estavel.


Portal na entrada                      Varanda em                          Salao da Casa     
da casa                                baixo do telhado                                     Varanda/Mesa             Espalhados ;)

{Internet}                 {192.168.1.x}                             {192.168.10.x}                                 {192.168.100.x}
    |                _______________________                       ________________                           
    |               |                       |                     |                |         
  ((3g))        ((wifi))                 ((wifi))              ((wifi))          ((wifi))                                
    [ Router - Nuvem ]                      [ Router - NuvemNuvem ]         [ Servidor - Nuboteca ]              [ Laptop ]    [ Laptop ]
    [  192.168.1.1   ]                      [     192.168.10.1    ]         [    192.168.10.10    ]               ((wifi))      ((wifi))
                                                               <<cabo>>                                               |            |
                                                                  |_________________                            ______|_____ ______|____ __...
                                                                                    |                          |            |           |
                                                                                <<cabo>>                    ((wifi))        |           |
                                                                                    [ Router - NuvemNuvemNuvem ]         ((wifi))     ((wifi))
                                                                                    [      192.168.100.1       ]        [ Laptop ]   [ Rasp-Pi ]

    

Já mudamos para outra configuração..


Portal na entrada                      Varanda em                              Salao da Casa     
da casa                                baixo do telhado                                                             Espalhados ;)

{Internet}                 {192.168.1.x}                             {192.168.10.x}                                 
    |                _______________________                       ________________ _________________________________ _____________                         
    |               |                       |                     |                |                                 |             |
  ((3g))        ((cabo))                 ((cabo))              ((wifi))         ((wifi))                         ((wifi))      ((wifi))       
    [ Router - Nuvem ]                      [ Router - NuvemNuvem ]         [ Servidor - Nuboteca ]              [ Laptop ]    [ Laptop ]
    [  192.168.1.1   ]                      [     192.168.10.1    ]         [    192.168.10.10    ]               
                                                               <<cabo>>                                          
    

Dia 2

Criando um repositorio git-annex para a Nuvem

Basicamente um repositório git-annex é uma pasta de arquivos que pode ser clonada em vários lugares/computadores facilitando manter as copias/clones sincronizados e mapeados..

Entao no linux, vamos fazer algumas operações na linha de comando/terminal.

Imagine abir um terminal e criar uma pasta onde vai ter todos os video da Nuvem:

mkdir /home/nuvem/nuvem/


Vou agora transformar essa pasta em um repositorio git-annex:

cd /home/nuvem/nuvem/
git init .
git annex init nuboteca

'nuboteca' é o nome do computador da Nuboteca para poder identificar facilmente depois no mapa dos clones..

Depois coloco o meu video na pasta de videos:

mkdir videos
cp /algum/lugar/OrquestraTaina.ogg videos/

Peço pro git-annex tomar conta do video:

cd videos/
git annex add OrquestraTaina.ogg

E depois falo pro git-annex atualizar a situação:

git annex sync

Feito isso, nos outros clones (que poderiam ser em servidores em outras comunidades/pontos), pode exectuar o mesmo comando

git annex sync

e se for listar o conteúdo da pasta /home/nuvem/nuvem/videos/, vai aparecer o OrquestraTaina.ogg, que na real é só um link simbólico.

Para pegar o conteúdo do arquivo OrquestraTaina.ogg precisa pedir assim:

git annex get OrquestraTaina.ogg

Isso permite sincronizar rapidamente as referencias aos arquivos e baixar e enviar seletivamente só o que realmente é necessário.

E tem outras coisas bacanas.. se quiser saber onde tem mais copias do video é só pedir:

git annex whereis OrquestraTaina.ogg

Ele vai mostrar a lista dos clones do repositório que mantêm copia do video..

Copiando/Clonando um repositorio

Uma vez criado nosso repositorio podemos clonar atraves de varios meios por exemplo:

Se quiser entao clonar o repositorio da nuvem na minha maquina via ssh, no terminal:

git clone ssh://nuvem@nuboteca/home/nuvem/nuvem

Vai criar uma pasta no lugar onde vc executou o comando com toda a arvore muito rapidamente, mas sem os conteudos.

Tendremos una carpeta/pasta con la siguiente estructura:

nuvem/
audio    Ferramentas    imagem    texto    video

Depois precisa incializar localmente o repositorio.Esto SOLO se hace la PRIMERA VEZ que te conectas al servidor, para que reconozca tu máquina:

cd nuvem
git annex init AlgumNomeParaIdentificarOSeuComputador 
git annex sync

Pronto.. seu repositorio ta ligado!

Para bajar un archivo del repositorio, entro en la carpeta/pasta donde está el archivo que quiero y lo descargo:

cd nuvem/texto/ensaio/NombredelArchivo
git annex get NombredelArchivo

Copiando un archivo al repositorio de nuvem

Copio el archivo que quiero subir al repositorio en la carpeta/pasta correspondiente.

cp /algum/lugar/isa.txt /nuvem/text/tutoriais_manuais 

Lo añado al repositorio. Este paso solo genera el link simbólico.

cd texto/tutoriais_manuais 
git annex add isa.txt 

Copio el contenido al repositorio.

git annex copy --to origin

Añado un comentario al archivo que estoy subiendo.

git commit -m "Algún comentario"

Actualizo el estado del repositorio.

git annex sync

Otros comandos útiles

Muestra un histórico de los cambios realizados en el repositorio con información sobre quién lo hizo, cuándo y el comentario (commit) que añadió.

git log

Te muestra todas las máquinas que tienen una copia del archivo.

git annex whereis NombredelArchivo 

Para más info sobre otros comandos de git annex y sus usos:

man git annex

Tv Multicast

Um experimento de streaming multicast com vlc:

cvlc /var/www/nuboteca/nuvem/ultimos_videos/*.ogg --sout '#transcode{vcodec=mp2v,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:std{access=udp{ttl=1},mux=ts,dst=239.239.239.239:1234}' --sout-keep

Se tiver uma pasta "ultimos_videos", por exemplo, para fazer uma televisão local multicast so precisa dar o comando acima...

Pra visualizar, em qualquer maquina ligada na mesma rede/roteador, por exemplo, com mplayer:

mplayer udp://239.239.239.239:1234

Dia 3

Conteúdos importantes que tem que ser compartilhados/baixados sempre

Quando voce clona um repositorio git-annex, tem rapidamente uma copia de toda a arvore de pastas e arquivos.. mas so os links simbolicos. Se quiser, por exemplo, baixar sempre o conteudo da pasta /nuvem/importantes pode usar a seguinte configuração para baixar o que contem sempre que clonar/sincronizar. Colocar no arquivo: .git/hooks/post-checkout

#!/bin/sh
# Uses git-annex to get all files in the specified directories
# (relative to the top of the repository) on checkout.
dirs=importantes
top="$(git rev-parse --show-toplevel)"
for dir in "$dirs"; do git annex get $top/$dir"; done

Dia 6

Retomando os trabalhos, depois de uma manhã na cachoeira e dois dias tentando reinstalar o laptop que hospeda a nuboteca e trocando o firmware do access point.

Firmware DD-WRT

Agora tem um DD-WRT (tl-wr743nv1) que ja facilita o uso interno da rede graças ao DNS local. 

A vantagem é que o servidor web local, que antes era acessado através do endereço ip http://192.168.10.10, passa a ser acessado pelo endereço http://nuboteca/. O DD-WRT procura o nome de cada máquina na rede local e usa como endereço.

O firmware para o esta na repositorio na pasta: nuvem/ferramentas/firmware

O site de desenvolvimento do firmware (para procurar o DD-WRT para outros modelos de AP / routers é www.dd-wrt.com/

Reusando e formatando o log do git

A informação colocada nas mensagens de commit pode ser um otimo registro do historico do acervo.

O git tem um monte de opções, e gera log do jeito que voce mais precisa. Com o seguinte comando:

git log --pretty=format:"%an publicou %ar %n >> %s << %n" 

Temos uma formatação que de alguma forma podemos publicar num site local ou colocar em overlay num canal TV multicast local:

Vincenzo Tozzi publicou 24 minutes ago 
 >> Contribuições da galera do projeto Autonomia do Silencio << 

Isabel Lafuente publicou 15 hours ago 
 >> colocando una contribucion del proyecto de autonomias do silencio << 

Isabel Lafuente publicou 16 hours ago 
 >> ver como funciona el commit << 

nuvem publicou 17 hours ago 
 >> git-annex automatic sync <<

Usando a raspberry pi como AP

O plano aqui é que a Raspi possa ser um provedor de serviços na rede local, completo com wifi e servidor.

Esse cara aqui conseguiu configurar a plaquinha como ap, mas ele usou um dongle wifi sub que não temos - Ralink RT5370. Com ele, poderíamos rodar o hostapd, um programinha que faria a raspi funcionar como um AP. Encomendamos um que esperamos que chegue antes do fim do encontro.

A outra alternativa é usar o dongle que temos no modo ad-hoc. Esse modo é mais comum e também funciona para criar um ponto de rede.

Usamos o dongle da marca realtek, modelo RTL8188S. O driver usado é o rtl8712. Para descobrir essas informações, desplugue e volte a plugar o dongle, e rode o comando 'dmesg'. As últimas informações fornecidas serão a respeito do seu dongle.

Mas o que importa realmente é verificar se ele foi reconhecido pelo sistema e que aceita o modo adhoc. Se ele não foi reconhecido, vai aparecer uma mensagem de erro no dmesg. Do contrário, a interface de rede sem fio wlan0 vai aparecer ao executar o comando 'ifconfig'.

Para saber se o modo ad-hoc funciona:

sudo ifdown wlan0

Se ela não estiver configurada, vai dar uma mensagem de erro. Não tem importância. Agora execute:

sudo iwconfig wlan0 mode ad-hoc

Se não der mensagem de erro, é sinal de que o modo ad-hoc funciona. Do contrário pode procurar outro wifi usb.

Agora temos que alterar as configurações de rede para que seja criada uma rede a partir do dongle. Para isso temos que editar o arquivo interfaces:

sudo nano /etc/network/interfaces

adicione as linhas

iface wlan0 inet static
address 192.168.2.2
netmask 255.255.255.0
wireless-mode ad-hoc
wireless-essid raspfi

auto wlan0

Use Ctrl-X para fechar e confirme a mudança no texto.

Para que possa funcionar como servidor, a raspi tem que distribuir endereços ips. Isso é feito com um servidor de DHCP - um programa que atribui um ip para cada dispositivo que se conecta. Usamos um programa chamado dnsmasq para isso. Ele está disponível no repositório da distro da placa, portanto foi só rodar "sudo app-get install dnsmasq" que ele instalou.

Aqui você encontra o arquivo de configuração que usei para o dnsmasq. As modificações importantes são:

domain-needed
bogus-priv
interface=wlan0
bind-interfaces
expand-hosts
domain=casinha.local
dhcp-range=192.168.2.50,192.168.2.150,12h
dhcp-option=3,192.168.2.2

Em princípio isso deveria ser o suficiente para a rede funcionar. Reinicie a Raspi e procure pela rede "raspi".

Porém como sempre a prática vem com umas surpresinhas. Não sei se é pela pouca energia que a Raspi consegue fornecer, mas o fato é que o dongle não consegue ser inicializado no momento do boot. Depois que o boot termina, aí ela topa ser inicializada. Então fiz um script que liga a interface e inicia o dnsmasq (que não pode ser iniciado sem a interface) 1 minuto depois do boot. Como saber se a interface foi iniciada? Use o comando 'ifconfig'. Se aparece a interface wlan0 listada, com o endereço 192.168.2.2, tudo certo. Se aparecer sem o endereço, siga as instruções abaixo para fazer o remendo.

Crie um arquivo vazio com o comando

sudo pico /home/pi/start-adhoc.sh

Esse vai ser o script que liga tudo. Adicione as seguintes linhas ao arquivo

sleep 60
ifdown wlan0
sleep 3
ifup wlan0
service dnsmasq start

Use Ctrl-X para fechar e confirme a mudança no texto.

Agora edite o arquivo /etc/rc.local

sudo pico /etc/rc.local

Antes da linha que diz 'exit 0', adicione a seguinte linha:

nohup /home/pi/start-adhoc.sh &

Isso é o que vai fazer o script ser executado após o boot. De novo, use Ctrl-X para fechar e confirme a mudança no texto.

Reinicie a raspi e procure a rede. Aqui funcionou.

Editando pós-interactivos Apesar do sucesso em fazer a rasp pi funcionar em modo adhoc e distribuir ip, a conexão de rede não funcionou na prática. Nem um ping foi respondido. A opção final foi realmente usar um AP com dd-wrt instalado. Confira em RedesAutonomasMontandoRedeAutonoma como isso foi feito.

Dia 11

Sincronizando repositorios

Agora temos mais uma rede para instalar na Casinha, com um raspberry-pi e acess point para prover um clone do acervo e do site hotglue que parece nao ter problemas de merge.

Endereço/caminho

Para sincronizar dois clone eles precisam se "enxergar", ou seja, precisa configurar o endereço/caminho de um para o outro.

Mapa dos clones do repositorio nuvem:

git annex map

Mapa dos clones

No caso da minha maquina, kalakuta:

  ___________ _
 |          
 | Kalakuta 
 |                                                .
 | git remote                                     |
 | origin ssh://nuvem@nuboteca/home/nuvem/nuvem   |
 |                                                |
 !                                                |
                               ___________________|
                            
                                   |                      ___________________ _
                                   |            \        |
                KALAKUTA "VE"      |___copy ->___\_______| Nuboteca                         .
                A NUBOTECA              get <-   /       |                                  |
                                                /        | git remote                       |
                                                         |  -- (é o repositorio principal)  |
                                                         !                                  |
                                                                                  __________|


A principio pode deixar essa configuração.. que é a de base quando for clonar o repositorio. Tem que lembrar de subir sempre uma copia dos arquivos para o servidor porque ele, sabe da existencia da maquina kalakuta mas não tendo referencia não pode buscar.

Sicronização entre dois servidores com um pendrive/hd USB
  ___________ _
 |          
 | Nuboteca 
 |                                                .
 | git remote                                     |
 | origin ssh://nuvem@nuboteca/home/nuvem/nuvem   |
 |                                                |
 !                                                |
                               ___________________|
                            
                                   |                      __________________ _
                                   |          /          |
                O PENDRIVE "VE"    |_________/_<-_copy __| pendrive-troca                         .
                A NUBOTECA                   \ -> get    |                                  |
                                              \          | git remote                       |
                                                         | origin /home/nuvem/nuvem         |
                                                         !                                  |
                                                                                  __________|
                                                                             
             ___________ _                                                   |
            |                                                                |
            | Tecanubo                                                       |   
            |                      .                                         |
            | git remote                          |          \               |
            | origin /media/Troca/nuvem           |__copy ->__\______________|
            |                                     |   get <-  /            
            !                                     |          /             O TECANUBO "VE" O PENDRIVE 
                               ___________________|