Tags:
/Biblioteca virtual autónoma
Bibliobox
Una bibliobox es un dispositivo que crea una red WLAN para poder conectarte y navegar un sitio estático que contiene una biblioteca digital.
link a sitio específico–> bibliobox.copiona.com
o podés comenzar por aqui:
¿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. {: .lead}
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?
- Raspberry PI 3 model B [con placa de WiFi integrada]
- Monitor con hdmi para instalar Rasbian a la Raspberry PI 3
- Tarjeta de memoria + 8gb (para OS y Libros)
- Computadora con Gnu/linux1 instalado.
- Calibre instalado con una biblioteca y libros con portadas(importante).
El procedimiento se puede dividir en 3 etapas
- #1-Equipo [A] que generará el sitio estático con la biblioteca.
- #2-Equipo [B] que alojará la biblioteca virtual.
- #3-Copiar el sitio generado de [A] >>[B]
#1 Equipo que generará el sitio estático con la biblioteca.
-
Instalar [Calibre] este será el lugar donde volcaremos los libros y los organizarémos por etiquetas, autoras, series.
-
Volcar libros en una biblioteca.
-
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 enModificar metadatos > Generar portada
-
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:
- Instalar [Python]
- Instalar pipenv
pip install pipenv --user
- Instalar las dependencias parado en ./biblioteca-guerrilla
pipenv install
[1] - Luego iniciar el entorno de trabajo para poder generar la biblioteca
pipenv shell
- Ahora que tenemos el entorno de trabajo con las dependencias vamos a editar el archivo ./biblioteca-guerrilla/app/settings.py y reemplazar la ruta donde esta nuestra biblioteca calibre y su archivo metadata.db en FREEZER_DESTINATION podemos editar la ruta donde guardará el sitio estático con la página.
CONECTOR_OPCIONES = {
"ruta": "ruta/a/la/bibliotecaDeCalibre/metadata.db"
}
RUTA_BASE_LIBROS = "ruta/a/la/bibliotecaDeCalibre/"
FREEZER_DESTINATION = "/tmp/biblioteca-guerrilla/"
- Aquí cree el directorio
mkdir miaubox
y clone el repositorio allí dentro. - Editando con nano el archivo settings.py
- Ejecutando pipenv shell
- Luego de editar y guardar settings.py podemos crear el sitio estático con
make generate-static-website
si no tenesmake
podes hacerapt/pacman/dnf install make dependiendo de tu dsitribución Gnu/linux
Ejecutando make generate-static-website
5. Para ejecutar un servidor de pruebas ejecutamos make start-test-server
y podemos acceder a el vía http://localhost:5000/
- Con esto tenemos el sitio en /tmp/biblioteca-guerrilla/ ahora lo siguiente es preparar el equipo donde se alojará el sitio estático!
- Luego de agregar varios libros podemos realizar nuevamente el paso 5 y copiar la nueva web actualizada de /tmp/biblioteca-guerrilla.
#2 Equipo que alojará la biblioteca.
-Estos pasos recomiendo hacerlos con un monitor enchufado a la raspberrypi.
-
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, si no tenés monitor hdmi, podes instalat raspbian en la tarjeta de memoria sd desde linux con Etcher e insertar un archivo llamado “ssh” en la partición “boot”. luego conectar tu raspberrypi a tu router con un cable de red para poder descubrir que ip le asigna y apuntar desde una shell con: $ ssh pi@laipdelaraspi. luego de instalar
sudo apt-get update sudo apt-get upgrade
-
Cambio de contraseña de usuaria pi (por defecto). Con
sudo passwd
cambiamos la contraseña por defecto e introducimos 2 veces la nueva. -
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)
-
Como raspbian viene con apache vamos a pararlo con:
sudo /etc/init.d/apache2 stop
Luego le decimos consystemd
que no este enabled como servicio:sudo systemctl disable apache2
-
Instalamos nginx y php-fpm
sudo apt install nginx php-fpm
-
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
-
Como no configuramos nada todavía vamos a desactivar temporalmente dnsmasq y hostapd
sudo systemctl stop dnsmasq sudo systemctl stop hostapd
-
Gracias a @perro_tuerto nos dimos cuenta el repositorio de hostapd varia según versión de raspbian, pueden ser tanto, hostapd_2.4-1+deb9u4_armhf.deb, como hostapd_2.7+git20190128+0c1e29f-4_bpo9+2_armhf.deb, este ultimo parece funcionar, pero si tenes instalado el hostapd con el primer .deb hay que modificar esta linea en el archivo de configuración:
#DAEMON_OPTS="/etc/hostapd/hostapd.conf"
DAEMON_CONF="/etc/hostapd/hostapd.conf"
-
Luego reiniciamos la raspberrypi con
sudo reboot
-
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:
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
11. Luego restarteamos el servicio dhcp sudo service dhcpcd restart
y tendremos una ip estática en wlan0
12. 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
13. 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
- 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:
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
- En ssid= poner el nombre de la red inalámbrica
- En wpa_passphrase= poner la constraseña si es que la queremos.
-
Ahora necesitamos que el sistema encuentre el archivo asi que en
sudo nano /etc/default/hostapd
buscamos #DAEMON_CONF y escribimosDAEMON_CONF="/etc/hostapd/hostapd.conf"
-
Iniciamos los servicios dnsmasq & hostapd
sudo systemctl start hostapd
sudo systemctl start dnsmasq
luego usamos
sudo update-rc.d hostapd enable´
para dejar el servicio hostapd seteado en el inicio de la RPi.
17 Para no tener que ponerla ip 192.168.100.1 para entrar a la biblioteca vamos a editar el archivo sudo nano /etc/hosts
e ingresar la siguiente linea:
192.168.100.1 biblio.box
ahora podremos entrar desde el navegador escribiendo biblio.box
18. 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í.
- 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.
scp -r /tmp/biblioteca-guerrilla/ pi@192.168.100.1:/home/pi/
- 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.
sudo mv -r /home/pi/biblioteca-guerrilla /var/www/html
-
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. -
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 virtuales!
Fuentes
Bibliobox que andan por ahí
- ~Void @v0idifier en todon.nl
- ~Librenauta @librenauta en twitter o @librenauta en mastodon
[Void]
#Lugares donde participé con la bibliobox
- Rancho Electrónico (mx) TED
- MIAU, con utopía pirata
- FABlab , #Aaronswartzday (Bariloche, AR)
- Flisol La plata “2018”, (festival latinoamericano de instalación de software libre)
- Radioslibres.net
- F.L.I.A la plata “2018”
- PPT para el miau 2019
- F.L.I.A La Plata “2019”
- AaronSwartzDay2019 en La Plata 2019 junto a el PIP & Biblioteca Osmiornica
- Semana de La Cultura Libre 2019 - Uruguay -
- radioformateca.wordpress.com