¿Cómo hacer tu propia biblio.box?

¿Querés tener una biblioteca portátil para compartir libros? en la siguiente entrada se detalla como crear una bibliobox usando el código de biblioteca-guerrilla una raspberry pi y una celda de carga.

Una bibliobox es un dispositivo que crea una red WLAN para poder conectarte y navegar un sitio estático que contiene una biblioteca digital.

Si bien el software puede utilizarce en varios dispositivos, esta instancia de biblioteca guerrilla será montada en una raspberry pi. En esta documentación se detallará ese procedimimiento *al estilo receta de cocina: ¿Qué necesitamos?

El procedimiento se puede dividir en 3 etapas

#1 Equipo que generará el sitio estático con la biblioteca.

  1. Instalar [Calibre] este será el lugar donde volcaremos los libros y los organizarémos por etiquetas, autoras, series.
  2. Volcar libros en una biblioteca.
  3. Editar metadata de los libros y asegurarnos que tienen todos portadas [tapas], en el buscador de calibre podemos poner: cover:false para filtrar los libros que no tengan una tapa, y podemos crearle una en Modificar metadatos > Generar portada

  4. Clonar el repositorio de [biblioteca-guerrilla] git clone https://github.com/elKaZe/biblioteca-guerrilla.git

    Biblioteca-guerrilla es un script escrito en python que utiliza la base de datos de calibre y los libros de la biblioteca para crear un sitio estático. para ejecutar el script que esta en ./biblioteca-guerrilla/app/freeze.py son necesarias algunas herramientas:

Ejecutando make generate-static-website 683x741 [5] Para ejecutar un servidor de pruebas ejecutamos make start-test-server y podemos acceder a el vía http://localhost:5000/

683x741

[6] Con esto tenemos el sitio en /tmp/biblioteca-guerrilla/ ahora lo siguiente es preparar el equipo donde se alojará el sitio estático! 683x741

#2 Equipo que alojará la biblioteca.

-Estos pasos recomiendo hacerlos con un monitor enchufado a la raspberrypi.

  1. Instalación de OS en raspberry pi 3, en este link podrás descargar la imagen de raspbian, la distribución optimizada de debian para instalar en raspberry pi, luego de instalar sudo apt-get update sudo apt-get upgrade
  2. Cambio de contraseña de usuaria pi (por defecto). Con sudo passwd cambiamos la contraseña por defecto e introducimos 2 veces la nueva.
  3. Instalación de nginx como servidor Web Acá hay una guía muy completa de como instalarlo y dejar el servicio funcionando (dejar el servicio significa que nginx el servidor web que instalaremos se iniciará cuando la raspberrypi inicie)
  4. Como raspbian viene con apache vamos a pararlo con: sudo /etc/init.d/apache2 stop Luego le decimos con systemd que no este enabled como servicio: sudo systemctl disable apache2
  5. Instalamos nginx y php-fpm sudo apt install nginx php-fpm

  6. Comenzamos a Configurar el Acces Point (utilizaremos el hardware wifi para crear una red Wlan y actuar de router) para esto necesitaremos hostapd: sudo apt-get install dnsmasq hostapd
  7. Como no configuramos nada todavía vamos a desactivar temporalmente dnsmasq y hostapd
    sudo systemctl stop dnsmasq sudo systemctl stop hostapd
  8. Luego reiniciamos la raspberrypi con sudo reboot

  9. Estamos configurando una red inalámbrica para que actue como servidor, asique necesitaremos una ip estática asignada al puerto inalámbrico para luego conectarnos a ella y que el dhcp nos asigne una ip como clientas. Para configurar la ip estática editamos el siguiente archivo:
    sudo nano /etc/dhcpcd.conf (nano es el editor de texto que viene por defecto en raspbian) alli podremos lo siguiente al final del archivo:
    1
    2
    3
    interface wlan0
     static ip_address=192.168.100.1/24
     nohook wpa_supplicant
    

    static ip_address es la ip con la cual nos conectaremos via ssh luego
    ssh pi@192.168.100.1

  10. Luego restarteamos el servicio dhcp sudo service dhcpcd restart y tendremos una ip estática en wlan0
  11. El servicio DHCP es llamado por dnsmasq. por defecto el archivo dnsmasq.conf contiene mucha información y es mejor arrancar uno de cero, asque editamos el nombre con sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig y dejamos un backup del archivo de configuración
  12. Luego iniciamos uno nuevo con sudo nano /etc/dnsmasq.conf y pegamos las siguentes lineas:
    interface=wlan0 # Use the require wireless interface - usually wlan0 dhcp-range=192.168.100.2,192.168.100.24,255.255.255.0,24h

  13. Ahora editaremos el archivo de configuración de Hostapd, el software para crear el acces point en: sudo nano /etc/hostapd/hostapd.conf en este archivo pondremos el nombre de la red inalámbrica y si queremos que tenga contraseña o no.

usar lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
interface=wlan0
driver=nl80211
ssid=Biblio.box
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=biblioteca
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
  1. Iniciamos los servicios dnsmasq & hostapd
    1
    2
    sudo systemctl start hostapd
    sudo systemctl start dnsmasq
    
  2. Antes de reiniciar vamos a chequear tener el puerto 22 (SSH) abierto para poder comunicarnos via Wireless. Lo más fácil es utilizar el comando sudo raspi-config > 5 Interfacing Options > P2 SSH > Sí.

  3. Luego parado en la máquina [A] y conectada a la red biblio.box ubicamos la ruta donde creamos la biblioteca-guerrilla y enviamos esa carpeta al home/pi/ de la raspberrypi con el comando scp. Escribimos -r para que copie los directorios y subdirectorios.
    • El comando scp copia y envía por ssh lo que indiquemos, primero hay que indicar el directorio a copiar y luego la conexión via ssh al equipo de destino, seguido de la ubicación de la carpeta destino.
      1
      scp -r /tmp/biblioteca-guerrilla/ pi@192.168.100.1:/home/pi/
      

      screenshot de una terminal copiando los archivos

  4. Luego en pi@192.168.100.1 dentro de /home/pi utilizamos el comando mv para mover los directorios del home a la carpeta host.
    1
    sudo mv -r /home/pi/biblioteca-guerrilla /var/www/html
    
  5. Por último nos conectamos a la red vía movil o con una computadora y tecleamos en el navegador 192.168.100.1 e ingresamos a la biblioteca portátil. si ingresamos desde un celular, es necesario que desactivemos los datos móviles, ya que al ingresar la ip, el navegador intentará hacer una petición fuera de la red wlan0.

  6. Por último, podemos conectar directamente la celda de carga con la raspberry-pi-3 y montar la red en cualquier sitio, independientemente de si hay corriente electrica o internet.

¡A por islas de bibliotecas portátiles!

una bibliobox feliz :)

Fuentes

  1. Setting up a Raspberry Pi as an access point in a standalone network (NAT)
  2. Install Nginx Raspbian, and accelerate your Raspberry web server
  3. SSH-Raspbian

Bibliobox que andan por ahí

[Void] bibliobox de void