Una pagina web auto-alojada de bajo consumo

From Wiki-Fou

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

Propuesta A.jpg

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

B.jpg

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>

Hardware

Esquema final hardware.jpg

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.
Uugear.jpg

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

Recomendaciones disenyo para que las paginas web consuman menos

Herramientas de interés

Green hosting

Calafou data center?

Literatura acerca del impacto eco de las TIC