Mac Minis en Stack

Ya casi estamos autoalojados completamente

Ya he dado muchísimos pasos camino a tener todo , o sea, tener un servidor en casa y dejar de pagar por un VPS, con todos los riesgos que esto conlleva, aunque de eso hablaré más adelante.

Lo que hice inicialmente fue comprar un primer Mac Mini Late 2012 con un Intel i7 de cuatro núcleos y ocho hilos, que venía con 8GB de RAM y un disco duro de 1TB. Me costó poco más de $120 dólares, y es que ahora mismo encuentras estos ordenadores del 2011 y 2012 a precio de ganga en eBay.

Un Mac Mini de estas características al día de hoy es espectacular ya no solo para usarlo de servidor, sino como ordenador de sobremesa con GNU/Linux. Cualquier distribución camina de lujo en este pequeño aparato que además aporta un montón de puertos de USB, un HDMI (limitado a 1080p), un puerto Display Port que nos puede ofrecer hasta 2K de resolución, y que podemos actualizar poniéndole un segundo disco duro, ya sea HDD o SSD, y con más memoria RAM hasta los 16GB teóricamente.

Compré todo lo necesario en iFixit y amplié la memoria RAM, la capacidad de almacenamiento poniendo un disco SSD para el sistema y el disco de 1TB para datos, y aproveché para renovar la pasta térmica del disipador de la CPU. Todo el proceso fue bastante simple, aunque puse el disco SSD como secundario sin darme cuenta. Esto a Linux le importa 3 pepinos, pero en cuanto pueda abriré el ordenador nuevamente, porque hay un TOC en mi que no me deja vivir pensando en eso.

La idea siempre fue traer todos mis sitios webs, incluyendo esta Newsletter y montarlos sobre Docker, y me percaté con el paso de los días de que me estoy haciendo mayor con las nuevas tecnologías. Pero de Docker hablaremos después.

De momento tengo varios sitios ya funcionando en mi servidor casero:

ernestoacosta.me: Digamos que es como mi carta de presentación. Un sitio web simple con HTML + CSS que básicamente tiene enlaces (que tengo que actualizar por cierto).

newsletter.ernestoacosta.me: Esta newsletter que funciona con WordPress + JetPack.

blog.comopiensodigo.com: Este es un blog de soporte para el Podcast. Aquí he escrito sobre temas de los que he hablado en Como Pienso Digo de corte más político o social.

systeminside.net: Mi blog más antiguo de tecnología, el cual no se si retome algún día la verdad.

tupodcast.com: mi antigua plataforma de podcasting que está ahí, a modo de archivo o para publicar algún que otro podcast al que no me interesa darle mucha promoción en si.

Me queda pendiente traer el servicio más crítico para mi, Castopod, la plataforma de podcasting que uso para Como Pienso Digo, y que es sin dudas la que me interesa que esté arriba 24x7x365.

El otro que me falta por traer también mi instancia de Mastodon, que encuentran en ernestoacosta.org y que me interesa menos que esté siempre funcionando.

Y es que en la vida muy real, ninguno de mis sitios web son imprescindibles, ninguno es fundamental para mi día a día, no son parte de ningún negocio ni reportan beneficios en si. Son un hobbie, que apenas tienen tráfico. Pero ya el podcast es otra cosa, es como mi niño lindo y mimado, y ahí si que tengo algo de tráfico diario.

Castopod utiliza como base de datos MySQL/MariaDB, con lo cual puede coexistir sin problemas con el resto de sitios web. El Mac Mini tiene recursos de sobra para llevar todo eso, máxime cuando ahora mismo los VPS que tengo contratados tampoco son la gran cosa.

Mastodon por su parte usa PostgreSQL, que si, podría estar junto a MySQL, pero no me gusta mezclar las cosas. Aquí la solución hubiese sido Docker, pero Docker… madre mía.

Docker tan simple y complicado

A ver, Docker en si, lo que es la instalación y demás no es nada complicado. Lo complicado sería el esquema de red que cada uno quiera tener. Docker te lo venden como la solución para ese trabajo en equipo, donde se pueden compartir imágenes y contenedores que van a funcionar en cualquier parte, así no habrán errores.

Y bajo es premisa la pregunta es ¿necesito Docker yo? Ya les digo que no de antemano. Lejos de facilitarme las cosas, se me ha hecho la picha un lío, probé con diversas configuraciones de docker-compose, con decenas de imágenes, con diversas variantes de redes internas y externas, y el resultado es que nada me funcionaba como yo quería.

Al final volví a lo que estoy acostumbrado, todo instalado a pelo en el servidor, sin tanto lío. Ahora lo que tengo que hacer es simplemente mantener un buen sistema de respaldo que haga copias con regularidad en caso de que todo se caiga en algún momento.

El riesgo y la ventaja del SelfHosted

Evidentemente hay un riesgo en tener todo en casa. Los equipos pueden fallar, los discos duros, el procesador, la memoria, la conexión a Internet o se puede ir la electricidad. Mi hija puede meter un dedo, o el perro comerse un cable, bueno, eso no.. Charlie es muy tranquilo.

Este tipo de cosas ni siquiera las pensamos cuando tenemos todo en la nube. Ante cualquier eventualidad “ellos se encargan de todo”, y a seguir viviendo tranquilos, pero, el riesgo tiene su recompensa.

En primer lugar, mi información no está en el disco duro de alguien más. Por muy simple y poco privada que sea. No dependo de que mis cosas estén en el disco duro de alguna compañía, y que por algún motivo, me dejen sin acceso a la misma.

En segundo lugar, todo lo tengo en local, con lo cual para mi cada proceso será muchísimo más rápido. ¿Qué mañana quiero desconectarme del mundo? Apago el ordenador o le quito el cable de red. Listo.

Dos servidores y contando

Si estabas prestando atención desde el principio, habrás leído que escribí:

Lo que hice inicialmente fue comprar un primer Mac Mini Late 2012

Y es que los Mac Mini de segunda mano tienen un precio tan bueno que me dije: dedico uno solo para Mastodon, y el otro para Castopod y el resto de servicios.

Asi que compré un Mac Mini Late 2012 con un i7, 16GB de RAM y 512GB de HDD, que incluso me salió un poco más barato que el anterior. A este solo tendría que ponerle un SSD, así que voy a utilizar el que tiene la Laptop HP o el Macbook Pro mid 2009, y listo.

Como tengo un Router Tp-Link Deco 6E, hay 3 puertos ethernet que puedo usar, uno para el Mac Mini M1, y los otros dos para los Mac Mini Intel del 2012. Así que listo Evaristo. Dentro de poco tendré una granja de servidores. 🙂

De hecho, tengo que investigar porque sé que hay alguna que otra empresa que ha dado servicios de servidores con Mac Minis puestos en clúster o algo así, con lo cual no descarto una configuración como esa a futuro.

De hecho, podría montarme en uno de ellos, o en un tercero si me vuelvo loco, un UnRaid, con lo cual tendría un NAS to guapo por menos de $200 dólares.

Bola extra

Para cuando estoy escribiendo esto, el Mac Mini 2012 estaba teniendo un comportamiento extraño, y es que la red se caía cuando recibía carga al parecer. Lo que hice fue implementar una solución que encontré, con lo cual si resulta, bien, y si no, en un próximo envío los actualizo con este tema.

La solución es deshabilitar el paso de IOMMU en GRUB (IOMMU parece ser una característica específica de ARM). Para hacerlo:

  • Abrir /etc/default/grub en un editor de texto
  • Agregar iommu.passthrough=1 a la variable GRUB_CMDLINE_LINUX . Es probable que esta variable no tenga ningún valor cuando abra el archivo por primera vez, por lo que debería verse así una vez editado: GRUB_CMDLINE_LINUX=”iommu.passthrough=1″. De lo contrario, simplemente agregue la línea iommu a todo lo que ya esté allí.
  • Guarda el archivo
  • Ejecuta sudo update-grub2
  • Reiniciar

Y esto sería todo…


Comments

2 responses to “Ya casi estamos autoalojados completamente”

  1. Paco García Avatar
    Paco García

    Me encantaría tener todo autoalojado. Pero creo que tendría que aprender mucho sobre ciberseguridad antes, pues una exposición a la red conlleva muchísima responsabilidad…

    1. Siempre corremos el riesgo de estar expuestos. Hay algunas guías que te pueden ayudar, pero sobre todo, tener una buena contraseña es un buen comienzo. Esta guía de Mastodon no tiene desperdicio: https://docs.joinmastodon.org/admin/prerequisites/

Leave a Reply

Your email address will not be published. Required fields are marked *