Una pagina web auto-alojada de bajo consumo
Qué es esto?
Si has llegado hasta aquí puede ser por múltiples motivos. Uno de ellos es que hayas tratado de acceder a Calafou.org y la web en este momento esté caída y no accesible. Los motivos posibles de que la web esté caída son diversos y variopintos.
El sistema en el que la web está alojada depende de energía renovable del lugar en que que tenemos la servidora y a pesar de que en Cataluña el tiempo acostumbra a ser soleado, puede que en algún momento el sol no sea suficiente o alguno de los elementos del sistema de energía solar falle. Por otro lado, estamos rodeadas de hermosos árboles que de vez en cuando deciden que es llegado el momento de caer sobre el cable que conecta Calafou con el resto del planeta por fibra óptica. Estas son los dos principales motivos por los que nuestra web no esté disponible en el momento en el que lees estas líneas.
Estás accediendo a esta wiki porque las compañeras de Tachanka, probablemente, no tengan a su alrededor unos árboles tan simpáticos como los de nuestra región o el sol brille fuerte desde hace semanas en la suya. Tanto esta wiki como la página que te ha dirigido hasta aquí están alojadas en una computadora de Tachanka que se llama Ebro y ubicada en el norte de Europa.
A continuación puedes aprender a montar tu propia servidora autoalojada de bajo consumo y alimentada por energía renovable producida en el lugar en el que ubiques la servidora.
Proceso
Host
Web http://ynh.calafou.org/web
Login http://ynh.calafou.org/web/index.php/Admin
Propuestas A
Esquema hablado durante la primera sesión de trabajo: front page en Ebro con enlaces a la wiki que se mantiene en ebro y a un typesetter instalado en una raspberry pi que contiene el blog, las paginas de los proyectos, la pagina de datos, las residencias...
En Ebro habrá que hacer redireccionamiento para que, por ejemplo, cuando alguien haga click en el enlace que lleva a "Datos", la url sea calafou.org/datos y no la del subdominio que tendrá direccionado el typesetter instalado en la raspberry pi.
Si la pagina alojada en Calafou no funciona, la visitante verá un html en el que se le explica el proyecto de autoalojamiento, el enlace a la wiki (alojada ebro) y el contacto.
Propuestas B
En este esquema toda la web de calafou incluida la front page está alojada en Calafou. Una instalación de typesetter que contiene toda la información de la web: blog, proyectos, residencias, pagina de datos... LA wiki la mantendriamos en Tachanka para mantener la relación. La idea es colocar un SAI en el router de iguana y conectar ahí la raspberry pi. De este modo los cortes de electricidad internos a Calafou no serán problematicos. Solo nos queda la amenaza fantasma de los árboles.
Para realizar esto el DNS de Gandi apunta a Ebro en donde hay un script que comprueba si la página está online. En caso afirmativo muestra el contenido de www.calafou.org. En el caso negativo, muestra una html con la explicación del proyecto y los posibles motivos de la caida del servicio: árboles, ratas, falta de meados, quince dias seguidos de lluvia.... que estará en www.pudoserunarbol.calafou.org. También podemos poner ahí un enlace a esta página de la wiki en la que se explica el proceso y el hazlo tú misma.
Este modelo mantiene la web completa en Calafou, sigue siendo un modelo distribuido y el consumo energético que puede generar el redireccionamiento Ebro -> Rpi / Ebro -> Ebro es poco.
Software
Servidora Yunohost
Para la parte de la servidora hemos optado por Yunohost, un conjunto de paquetes que configura de forma automática la servidora y todos los servicios que instalemos en ella (en nuestro caso la web de Calafou). Yunohost es una solución enfocada en un público con escasos o nulos conocimientos en el mantenimiento de servidoras. Nos interesa que el modelo de autoalojamiento por el que hemos optado y que describimos en esta página, sea replicable y amigable para cualquier persona independientemente de sus conocimientos técnicos.
Yunohost es fundamentalmente un sistema operativo Raspbian con una instalación de LEMP (Linux, Nginx, MySQL y PHP), un conjunto de softwares que componen los elementos principales de uno de los tipos de servidoras posibles.
Yunohost puede instalarse en cualquier distribución GNU/Linux manualmente y además existen imágenes precompiladas para diferentes arquitecturas. Hemos elegido la opción de utilizar una imagen precompilada de Yunohost para Raspberry pi. El proceso de instalación es el mismo que una imagen de instalción de Raspbian o Armbian. Podeis descargar y ver cómo instalarlo en la Raspberry pi en este enlace.
Gestor de contenidos Typesetter
Apache vhost for failover switch
Un apache en un servidor fuera responde a calafou.org, a vhost mira si ynh.calafou.org responde, si = hace proxy a ynh.calafou.org, no = hace proxy a calafou.org/weboff
cd /etc/apache2/mods-available/ a2enmod proxy proxy_http a2enmod proxy_balancer lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat lbmethod_bybusyness systemctl restart apache2
<VirtualHost *:80> Header set Access-Control-Allow-Origin "*" ServerName calafou.org ProxyPreserveHost Off ProxyRequests On ErrorLog ${APACHE_LOG_DIR}/proxy2ynh-error.log CustomLog ${APACHE_LOG_DIR}/proxy2ynh-access.log combined LogLevel error <Proxy balancer://mycluster> BalancerMember http://ynh.calafou.org timeout=15 retry=300 BalancerMember http://calafou.org/weboff status=+H </Proxy> ProxyPass "/" "balancer://mycluster/" ProxyPassReverse "/" "balancer://mycluster/" </VirtualHost>
Troubleshooting
On boot process
If the Pi, after an update, is stucked on the rainbow screen at boot or the red and green light stay up, it means that the /boot is missing something
The solution is insert the SD card in a computer and to copy the content of the folder rootfs/boot.backup to the boot partition and then edit the cmdline.txt :
To know which PARTUUID :
sudo blkid /dev/sda1: LABEL_FATBOOT="boot" LABEL="boot" UUID="49D4-FECF" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="f26e7a0e-01" /dev/sda2: LABEL="rootfs" UUID="e56cd792-9997-4d02-b53e-d51ec370b26e" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="f26e7a0e-02"
console=serial0,115200 console=tty1 root=PARTUUID=f26e7a0e-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Re-insert the SD Card into the Pi and reboot, should work !
To debug the boot process :
- https://www.techradar.com/how-to/computing/how-to-fix-raspberry-pi-boot-problems-1310697
- https://www.raspberrypi-spy.co.uk/2013/02/raspberry-pi-status-leds-explained/
- https://elinux.org/R-Pi_Troubleshooting
Problem with libstdc++.so.6
If
> Oct 10 21:20:02 systemd[1]: Starting A high performance web server and a reverse proxy server... > Oct 10 21:20:02 nginx[915]: nginx: [emerg] dlopen() "/usr/share/nginx/modules/ngx_http_dav_ext_module.so" failed (/lib/aarch64-linux-gnu/libstdc++.so.6: undefined symbol: _ZNKSt10lock_error4whatEv, version GLIBCXX_3.4.11) in /etc/nginx/modules-enabled/50-mod-http-dav-ext.conf:1 > Oct 10 21:20:02 nginx[915]: nginx: configuration file /etc/nginx/nginx.conf test failed apt update segfault
Then
wget http://http.us.debian.org/debian/pool/main/g/gcc-10/libstdc++6_10.2.1-6_arm64.deb dpkg -i libstdc++6_10.2.1-6_arm64.deb reboot now
It works ! but wtf ???
Hardware
Computadora
La servidora inicialmente estará alojado en una placa Raspberry Pi 2. En un futuro podriamos emplear una Olimex, 100% libre y con memoria en la placa. El porqué de usar una computadora con memoria en la placa es que las trarjetas microSD no son los mejores soportes para escritura y depender de una de estas tarjetas para una servidora es mala idea si pensamos en la durabilidad y el uptime.
Alimentación
Fuentes
Para la alimentación la propuesta inicial es la de emplear dos fuentes:
- Energia solar proveniente de una placa.
- Orinotrón: dispositivo que genera electricidad a partir de orina.
Para conectar estas dos fuentes de alimentación simultáneamente a la computadora utilizaremos el shield Zero2Go Omini de Uugear que permite conectar hasta tres fuentes de alimentación diferentes a la computadora y tomar la energía de la que más está recibiendo en cada momento.
Acumuladores
Ensamblaje
ESTE ES EL INSTRUCTABLE FOTO A FOTO
Lista de materiales
Paso a paso
Se han realizado dos ajustes de software que reducen el consumo energético de la Raspberry Pi:
- Deshabilitar los dos leds de la placa.
- Deshabilitar el circuito de conexión HDMI
Post ensamblaje
Desabilitar leds
Para apagar los dos leds de la Raspberry pi cada vez que la computadora se reinicia es necesario realizar la siguiente operación con la linea de comandos. Con ella, las luces led de la placa se encenderán durante el proceso de arranque y se apagarán al acabar. Abre la Terminal y sigue la siguiente receta:
- Conéctate a la Raspberry pi vía ssh con el siguiente comando. Debes conocer previamente la ip de la computadora. Puedes obtenerla conectando una pantalla a la placa o usando alguna aplicación de rastreo de redes.
sudo ssh admin@ipDeTuComputadora
- Tienes que introducir la clave de acceso a la Raspberry que es la misma que utilizaste durante el proceso de post instalación de Yunohost.
- Para obtener permisos de administradora en la computadora escribe
sudo su
- A continuación editaremos el crontab de la Raspberry pi. Con el crontab podemos indicar a la computadora que ejecute comandos o acciones justo después del arranque y por tanto, éstas se ejecuten siempre que la computadora se reinicie.
crontab -e
- Se abrirá un documento de texto. Añade al final del documento las siguientes dos líneas:
@reboot echo 0 >/sys/class/leds/led0/brightness #Apaga el LED verde
@reboot echo 0 >/sys/class/leds/led1/brightness #Apaga el LED rojo
- Salva el documento con control + x
- Reinicia la computadora con el comando reboot
Las luces led roja y verde de la placa deberían encenderse durante el reinicio y apagarse justo después de que el proceso de reinicio haya acabado manteniéndose apagadas.
Este proceso puede realizarse de otro modo editando el documento /boot/config.txt descrito en este enlace. La diferencia en el resultado de esta otra receta está en que, con esta, los leds no se encienden en ningún momento. Con la receta descrita en esta wiki, los leds se encienden exclusivamente durante el proceso de reinicio. Dejarlas responde a que el consumo de los leds durante el reinicio es mínimo dado que dura alrededors de 30 segundos y aporta información del proceso muy útil al no disponer de una pantalla para leer la información de arranque.
Desabilitar HDMI
Teniendo en cuenta que emplearemos la Raspberry pi como servidor y conectándonos via navegador web o via ssh, conviene que desabilitemos el circuito de la conexión HDMI. Este circuito viene activado por defecto y puede desactivarse añadiendo una línea al documento ubicado en /etc/rc.local. Abre de nuevo la Terminal y escribe la siguiente receta:
sudo su
nano /etc/rc.local
- Añade al final del documento la siguiente línea: /usr/bin/tvservice –o
- Salva el documento con control + x
- Reinicia la computadora con el comando reboot
Aesthetics
Recomendaciones relativas a la subida de media. Subir las imágenes a 96 dpi en formato jpg al 80% de calidad SIN datos exif. HAy distintos tamaños.
- Portada y páginas con "distribuidores" rectangulares (infraestructura, proyectos...): 366x244px
- Imágenes de cada proyecto: 550px de lado ancho.
- Imágenes grandes: 1024 de lado ancho.
Recursos
Ejemplos de paginas webs desarrolladas para consumir poco
- How to create Low tech website
- How to build a Low-Tech website: Software & Hardware
- Guatemala Momentánea: Ciberfeministas Guatemala
- Pagina web low tech explicando 10 reglas de oro a tener en cuenta
- La MYNE Conception numérique low-tech
- Solar protocol:This website is hosted across a network of solar powered servers and is sent to you from wherever there is the most sunshine
Recomendaciones disenyo para que las paginas web consuman menos
- Guía de conversión digital al low tech
- Proyecto de Ping en francés listando recursos de interés ReSourcesWeb
- Como concebir de manera responsable servicios o productos digitales? Ethics by design
- Diseno web sostenible
Herramientas de interés
- Website Carbon Calculator
- Restart futures
- Materials Matters
- Privacy-first, carbon-aware web analytics
- Climate strike software
- How green are your computations
- Scaphandre es un agente de metrología dedicado a las mediciones de consumo de energía. El objetivo del proyecto es permitir a cualquier empresa o particular medir el consumo de energía de sus servicios técnicos y obtener estos datos de forma cómoda, enviándolos a través de cualquier cadena de herramientas de monitorización o análisis de datos.
Green hosting
Calafou data center?
Literatura acerca del impacto eco de las TIC
- Revista sobre un internet sostenible
- APC GLOBAL INFORMATION SOCIETY WATCH 2020 Technology, the environment and a sustainable world: Responses from the global South
- The shift project
- Data centers impact
- Software disenchantment
- Long live the machine by ECOS project
How ecodesign & energy labelling can prevent premature obsolescence of laptops