El primer prototipo de servidor solar con controlador de carga. Foto:
En septiembre de 2018, un entusiasta de Low-tech Magazine . El objetivo era reducir el consumo de energía lo suficiente como para que un servidor autohospedado pudiera funcionar con un solo panel solar. Esto no es sencillo, ya que el sitio debe operar las 24 horas del día. Veamos qué se logró al final.
Puedes visitar el servidor , verificar el consumo de energía actual y el nivel de carga de la batería. El sitio está optimizado para minimizar el número de solicitudes desde la página y el tráfico, por lo que debería soportar un aumento en la afluencia desde Habr. Según los cálculos del desarrollador, el consumo de energía por visitante único es de 0,021 W⋅h.
Poco antes del amanecer del 31 de enero de 2020, le quedaba un 42% de carga en la batería. El amanecer en Barcelona es a las 8:04, después de eso la corriente debe provenir del panel solar.

¿Por qué?
Hace diez años, los expertos , que el desarrollo de internet fomentaría la "desmaterialización" de la sociedad, la digitalización generalizada —y, como consecuencia, una reducción del consumo total de energía. Se equivocaron. De hecho, internet por sí mismo ha exigido , y estos volúmenes siguen creciendo.
Las empresas de TI han lanzado iniciativas para pasar a fuentes de energía alternativas, pero esto no es viable en la actualidad. Todos los centros de datos consumen tres veces más energía de la que generan todas las instalaciones solares y eólicas del mundo. Peor aún, la producción y el reemplazo regular de paneles solares y turbinas eólicas , por lo que hoy es simplemente imposible prescindir de los combustibles fósiles (petróleo, gas, uranio). Pero estos recursos no durarán mucho tiempo, así que inevitablemente tendremos que pensar en cómo vivir de fuentes renovables, incluyendo el funcionamiento de la infraestructura informática, como servidores web.
Low-tech Magazine el hinchamiento demasiado rápido de las páginas web. Desde 2010 hasta 2018, el tamaño medio de una página aumentó , y en sitios móviles —de 0,15 MB a 1,6 MB, según estimaciones conservadoras.
El aumento en los volúmenes de tráfico (la energía necesaria para transmitir 1 megabyte de información), lo que provoca un crecimiento constante del consumo energético de internet. Los sitios más pesados y cargados no solo aumentan la carga sobre la infraestructura de red, sino que también acortan el 'ciclo de vida' de computadoras y teléfonos inteligentes, que deben ser desechados y producidos con más frecuencia, lo que también .
Y, por supuesto, el aumento de la carga se genera por el estilo de vida: las personas pasan casi todo su tiempo en internet y dependen en gran medida de diversos servicios web. La sociedad moderna es difícil de imaginar sin una infraestructura IT en la nube (redes sociales, mensajeros, correo, etc.)
La configuración del servidor y del sitio web
En describe en detalle la configuración del hardware y el stack de software del servidor web.
Computadora de placa única elegida por su bajo consumo energético y funciones adicionales útiles, como la presencia de un chip de gestión de energía . Permite consultar estadísticas sobre el voltaje y la corriente actuales desde la placa y la batería. El chip cambia automáticamente la alimentación entre la batería y el conector de CC, donde fluye la corriente de un panel solar. De esta manera, es posible mantener la alimentación ininterrumpida del servidor con soporte para batería.

Olimex Olinuxino A20 Lime 2
Inicialmente, se eligió una batería de polímero de litio con una capacidad de 6600 mAh (aproximadamente 24 Wh), pero luego se instaló una batería de plomo-ácido de 84,4 Wh.
El sistema operativo se carga desde una tarjeta SD. Aunque el SO no ocupa más de 1 GB y un sitio web estático alrededor de 30 MB, no tenía sentido económico comprar una tarjeta más pequeña que Class 10 de 16 GB.
El servidor se conecta a la red a través de una conexión doméstica de 100 megabits en Barcelona y un enrutador consumidor estándar. Se ha reservado una dirección IP estática para él. Prácticamente cualquier persona puede levantar un sitio así en su apartamento, solo necesita ajustar ligeramente la configuración del firewall para el reenvío de puertos a la IP local:
Puerto 80 a 80 para HTTP Puerto 443 a 443 para HTTPS Puerto 22 a 22 para SSH
Sistema operativo basado en la distribución Debian y el kernel , diseñado para placas únicas con chips AllWinner.

Panel solar de 50 vatios para el servidor web y un panel de 10 vatios para la iluminación de la sala de estar en el apartamento del autor
El sitio estático se generó con el sistema (generador de sitios web en Python). Los sitios estáticos se cargan más rápido y no generan carga en la CPU, por lo que son mucho más eficientes que las páginas generadas dinámicamente, en términos de consumo energético. El código fuente del tema es. .
Un punto muy importante es la compresión de imágenes, ya que sin esta optimización es prácticamente imposible hacer que las páginas web pesen menos de 1 megabyte. Para la optimización, se decidió convertir las fotografías en imágenes en escala de grises. Por ejemplo, aquí hay una foto de telefonistas en un conmutador en el siglo pasado, .

Aquí hay una imagen optimizada en escala de grises que pesa con tres colores (negro, blanco y gris). Gracias a la ilusión óptica, al espectador le parece que hay más de tres colores.

Se eligieron fotografías en escala de grises no solo por la optimización de tamaño (una decisión bastante dudosa), sino también por razones estéticas. Esta antigua técnica de procesamiento de imágenes tiene características estilísticas particulares, por lo que el sitio tiene un diseño único en cierto sentido.
Las 623 ilustraciones en el sitio de la revista Low-tech Magazine después de la optimización se redujeron de 194,2 MB a 21,3 MB, es decir, un 89%.
Todos los antiguos artículos se convirtieron a Markdown para facilitar la redacción de nuevos artículos, así como para simplificar la copia de seguridad a través de . Se eliminaron todos los scripts y rastreadores del sitio, así como los logotipos. Se utiliza la fuente predeterminada en el navegador del cliente. Como 'logotipo', se muestra el nombre de la revista en letras mayúsculas con una flecha hacia la izquierda: LOW←TECH MAGAZINE. Solo 16 bytes en lugar de una imagen.
En caso de tiempo de inactividad, se organizó la posibilidad de 'lectura offline': los textos e imágenes se exportan a un feed RSS. Se ha activado la caché de 100% del contenido, incluyendo HTML.
Otra optimización es la inclusión de la configuración HTTP2 en nginx, lo que reduce un poco el tráfico y acorta el tiempo de carga de las páginas, en comparación con HTTP/1.1. En la tabla se comparan los resultados de cinco páginas diferentes.
| | FP | WE | HS | FW | CW | |----------|-------|-------|-------|-------|-------| | HTTP/1.1 | 1.46s | 1.87s | 1.54s | 1.86s | 1.89s | | HTTP2 | 1.30s | 1.49s | 1.54s | 1.79s | 1.55s | | Imágenes | 9 | 21 | 11 | 19 | 23 | | ahorros | 11% | 21% | 0% | 4% | 18% |
Configuración completa de nginx:
root@solarserver:/var/log/nginx# cat /etc/nginx/sites-enabled/solar.lowtechmagazine.com
# Mapa de expiraciones
map $sent_http_content_type $expires {
default off;
text/html 7d;
text/css max;
application/javascript max;
~image/ max;
}
server {
listen 80;
server_name solar.lowtechmagazine.com;
location / {
return 301 https://$server_name$request_uri;
}
}
server{
listen 443 ssl http2;
server_name solar.lowtechmagazine.com;
charset UTF-8; #mejorar la velocidad de carga enviando el charset con la primera respuesta.
location / {
root /var/www/html/;
index index.html;
autoindex off;
}
#Caching (guardar páginas html por 7 días, el resto el mayor tiempo posible, sin cache en la página principal)
expires $expires;
location @index {
add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-cache, no-store';
etag off;
expires off;
}
#error_page 404 /404.html;
# redirigir las páginas de error del servidor a la página estática /50x.html
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /var/www/;
#}
#Compresión
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
#Caching (guardar la página html por 7 días, el resto el mayor tiempo posible)
expires $expires;
# Logs
access_log /var/log/nginx/solar.lowtechmagazine.com_ssl.access.log;
error_log /var/log/nginx/solar.lowtechmagazine.com_ssl.error.log;
# Configuraciones SSL:
ssl_certificate /etc/letsencrypt/live/solar.lowtechmagazine.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/solar.lowtechmagazine.com/privkey.pem;
# Mejorar el rendimiento HTTPS con reanudación de sesión
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
# Habilitar protección del lado del servidor contra ataques BEAST
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
# Deshabilitar SSLv3
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# Reducir el tamaño del buffer para aumentar TTFB
ssl_buffer_size 4k;
# Parámetro de Diffie-Hellman para ciphersuites DHE
# $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# Habilitar HSTS (https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security)
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
# Habilitar OCSP stapling (http://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox)
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/solar.lowtechmagazine.com/fullchain.pem;
resolver 87.98.175.85 193.183.98.66 valid=300s;
resolver_timeout 5s;
}Resultados de 15 meses de operación
Durante el período del 12 de diciembre de 2018 al 28 de noviembre de 2019, el servidor mostró . Esto significa que debido a condiciones climáticas adversas, el tiempo de inactividad durante el año fue de 399 horas.
Sin embargo, si no se consideran los últimos dos meses, el tiempo de funcionamiento ininterrumpido fue del 98,2%, y el tiempo de inactividad solo alcanzó las 152 horas, según los desarrolladores. El tiempo de funcionamiento ininterrumpido cayó al 80% durante los últimos dos meses, cuando el consumo de energía aumentó como resultado de una actualización de software. Cada noche, el sitio fue apagado durante varias horas.
Según las estadísticas, durante un año (del 3 de diciembre de 2018 al 24 de noviembre de 2019), el consumo de energía del servidor fue de 9,53 kWh. Se registraron pérdidas significativas en el sistema fotovoltaico debido a la conversión de voltaje y la descarga de la batería. El controlador solar mostró un consumo anual de 18,10 kWh, lo que indica una eficiencia del sistema del orden del 50%.

Diagrama simplificado. No se muestra el convertidor de voltaje de 12 a 5 voltios ni el medidor de amperios-hora de la batería.
Durante el período estudiado, el sitio recibió 865,000 visitantes únicos. Incluyendo todas las pérdidas de energía en la instalación solar, el consumo de energía por visitante único fue de 0,021 Wh. Por lo tanto, un kilovatio-hora de energía solar generada es suficiente para atender casi a 50,000 visitantes únicos.
Durante el experimento, se probaron paneles solares de diferentes tamaños. En la tabla se presentan los cálculos sobre cuánto tiempo tardarán en cargar las baterías de diferentes capacidades utilizando paneles solares de distinto tamaño.

La potencia media consumida por el servidor web durante el primer año, incluyendo todas las pérdidas de energía, fue de 1,97 W. El cálculo muestra que para mantener el sitio web durante la noche más corta del año (8 horas 50 minutos, 21 de junio) se necesitan 17,40 vatios-hora de capacidad de almacenamiento, y para la noche más larga (14 horas 49 minutos, 21 de diciembre) se requieren 29,19 Wh.

Dado que las baterías de plomo-ácido no deben descargarse por debajo de la mitad de su capacidad, el servidor requiere una batería de 60 Wh para sobrevivir a la noche más larga con condiciones de luz óptimas durante el día (2×29,19 Wh). La mayor parte del año, el sistema funcionó con una batería de 86,4 Wh y un panel solar de 50 vatios, lo que permitió alcanzar el tiempo de actividad mencionado del 95-98%.
Tiempo de actividad del 100%
Para un tiempo de actividad del 100%, es necesario aumentar la capacidad de las baterías. Para compensar un día de muy mal tiempo (sin generación significativa de energía eléctrica), se necesitan 47,28 vatios-hora (24 horas × 1,97 vatios) de almacenamiento.
Desde el 1 de diciembre de 2019 hasta el 12 de enero de 2020, se instaló una batería de 168 vatios, cuya capacidad práctica de almacenamiento es de 84 vatios-hora. Este almacenamiento es suficiente para mantener el funcionamiento del sitio web durante dos noches y un día. La configuración se probó en el período más oscuro del año, pero el clima fue relativamente bueno, y durante el período especificado, el tiempo de funcionamiento ininterrumpido fue del 100%.
Sin embargo, para garantizar un tiempo de actividad del 100% durante varios años, hay que prever incluso el peor de los escenarios, en el que el mal tiempo persiste durante varios días. Los cálculos muestran que, para mantener el sitio en línea durante cuatro días con baja o nula generación de energía, se necesitará una batería de plomo-ácido con una capacidad de 440 vatios-hora, del tamaño de una batería de automóvil.
En la práctica, con buen clima, una batería de plomo-ácido con una capacidad de 48 vatios-hora mantendrá el funcionamiento del servidor durante la noche de marzo a septiembre. Una batería de 24 vatios-hora mantendrá el servidor un máximo de 6 horas, es decir, se apagará cada noche, aunque a diferentes horas dependiendo del mes.
En general, algunos sitios no necesitan operar durante la noche, cuando el número de visitantes es mínimo, según los chicos de Low-tech Magazine. Por ejemplo, si se trata de una publicación regional en una ciudad, donde no entran visitantes de otros husos horarios, solo ciudadanos locales.
Es decir, para sitios con diferentes niveles de tráfico y diferentes disponibilidades, se necesitan baterías de diferentes capacidades y paneles solares de diferentes tamaños.


El autor presenta un cálculo de cuánta energía se requiere para la producción de los propios paneles solares (energía incorporada) y cuánto se obtiene al dividir esta cantidad por la vida útil esperada de 10 años.

Así, se puede calcular el equivalente de combustible fósil que se ha gastado en la producción y operación de los paneles. En Low-tech Magazine, encontraron que en el primer año de funcionamiento su sistema (panel de 50 W, batería de 86,4 vatios-hora) 'generó' aproximadamente 9 kg de emisiones o el equivalente a la combustión de 3 litros de gasolina: aproximadamente lo mismo que un automóvil de pasajeros en 50 km de recorrido.

Si el servidor no se alimenta de energía solar, sino de la red eléctrica general, las emisiones equivalentes son aproximadamente seis veces menores: 1,54 kg (en la energía española, la proporción de energías alternativas y nucleares es alta). Pero esta comparación no es del todo correcta, argumenta el autor, porque tiene en cuenta la energía incorporada de la infraestructura solar, pero no considera este indicador para la red eléctrica general, es decir, los costos de su construcción y mantenimiento.
Mejoras futuras
Durante el tiempo transcurrido, se han realizado una serie de optimizaciones que han reducido el consumo de energía del servidor. Por ejemplo, en un momento, el desarrollador notó que 6,63 TB del total de 11,15 TB de tráfico lo generaba una implementación incorrecta del feed RSS que extraía contenido cada pocos minutos. Tras corregir este error, el consumo de energía del servidor (sin tener en cuenta las pérdidas de energía) se redujo de 1,14 W a aproximadamente 0,95 W. La ganancia puede parecer pequeña, pero la diferencia de 0,19 W representa 4,56 vatios-hora por día, lo que equivale a más de 2,5 horas de funcionamiento autónomo del servidor.
Durante el primer año, la eficiencia fue solo del 50%. Se observaron pérdidas al cargar y descargar la batería (22%), así como en la conversión de voltaje de 12 V (sistema fotovoltaico) a 5 V (USB), donde las pérdidas son de hasta el 28%. El desarrollador reconoce que tiene un convertidor de voltaje no óptimo (controlador sin USB integrado), por lo que se puede optimizar este aspecto o cambiar a una instalación solar de 5V.
Para aumentar la eficiencia del almacenamiento de energía, se pueden reemplazar las baterías de plomo-ácido por baterías de iones de litio más costosas, que tienen menores pérdidas durante la carga/descarga (<10%). Actualmente, el constructor está considerando un sistema compacto de (CAES), que tiene una vida útil de décadas, lo que significa una menor "huella de carbono" en su producción.

Batería compacta de energía de aire comprimido,
Se está considerando la instalación de un aerogenerador adicional (se puede ) y la instalación de un seguidor solar para orientar los paneles hacia el sol. El seguidor permite aumentar la producción de electricidad en un 30%.

Otra forma de aumentar la eficiencia del sistema es su escalabilidad. Alojar más sitios web en el servidor y ejecutar más servidores. Así se reducirá el consumo de energía por cada sitio.

Empresa de hosting solar. Ilustración: Diego Marmolejo
Si cubres con paneles solares todo el balcón del apartamento y abres una empresa de hosting web solar, los costos por cliente serán mucho más bajos que los de un solo sitio web: ahorro a gran escala.
En general, este experimento demuestra que, bajo ciertas limitaciones, la infraestructura informática puede funcionar con fuentes de energía renovable.
Teóricamente, un servidor así podría incluso prescindir de una batería si se refleja en otras partes del mundo. Por ejemplo, instalar espejos en Nueva Zelanda y Chile. Allí, los paneles solares funcionarán cuando en Barcelona sea de noche.
Fuente: habr.com
