Introducción
El péndulo más lento de la tecnología es el que se mueve
entre la centralización y lo distribuido. Toma años o décadas
para oscilar. Por eso alguna vez tuvimos computadoras con
terminales bobas, y después computadoras personales, que fuimos
convirtiendo en terminales de internet, que es adonde estamos ahora.
Tal vez parezca que no se va a mover de ahí, pero así se sentía
también las veces anteriores. Tal vez oscile, tal vez no, quién sabe,
no soy futurólogo, pero yo lo voy a mover un poquito, para mí,
en un área específica: no estoy contento con que mis datos vivan
principalmente en granjas de servers que tienen dueños que no
son yo.
Así que en vez de tener mis datos viviendo en un servidor "ganado"
en una granja de servidores, ahora viven principalmente en un
servidor mascota, en casa.
Les presento a ... pinky.
Pinky no te va a asombrar con sus características, es tal vez el server
práctico más lento posible.
- Raspberry Pi 3b+, 1GB de RAM
- tarjeta 16GB SD
- 2x500GB HDD (espejado)
Pero es más que suficiente para algunos tipos específicos de
trabajo que necesito. En este documento voy a tratar de explicar
por qué los quiero hacer, describirlos, explicar las limitaciones
y el proceso que me llevó a la decisión de adoptar esta solución.
Software
Una de las cosas más importantes acá es Gitea.
Es difícil exagerar como cambia las cosas para un tipo específico de
usuario: Gitea hace que tener tu servidor de git sea fácil y barato.
¿Y qué? preguntará alguno.
Bueno, un server git es útil como backend para muchas cosas útiles,
aún si no te interesa hacer desarrollo de software (que a mí si me interesa).
Pass
Por ejemplo, suponéte que querés manejar tus propias passwords, en vez
de confiar en un servicio de terceros. Una manera de hacerlo es usar pass que es una implementación open source
soportada por casi todos los browsers, aplicaciones de escritorio,
terminales y que se yo.
Pero si tenés más de un dispositivo ... ¿cómo sincronizás tus passwords
entre ellos? Sí, usando un server git.
Chezmoi
Y sí, uso más de una compu. Tengo una en casa, una en la oficina, otra
para trabajar, y me estoy haciendo algunas caseras con raspberry pis,
y quiero que algunas cosas funcionen de la misma manera en todas ellas.
Chezmoi Es una implementación del concepto de dotfiles.
Básicamente le decís que maneja algunos de tus archivos de configuración,
los que se guardan versionados y compartidos entre tus compus usando ...
si, un server git.
Me llevó un poco de esfuerzo para dejarlo en un estado usable, pero
creo que ahora le está agregando valor a mis compus.
Mi Sitio
Si, ya sé, muy 2003. Pero bueno, a mí me sirve. Una ubicación central
para:
- Cosas que escribo (como esta)
- Libros que leo y comento, via goodreads
- Videos que hago, via youtube
De nuevo, una de las metas es que mis datos son míos así
que todas esas listas de libros, comentarios y calificaciones
y demás ... ¿Por qué deberían estar solo en goodreads? ¿Y si
Amazon lo cierra?
Como puedo escribir software, lo agarro todo y lo pongo en mi
sitio, y listo. Y cual es el lugar donde está todo eso ... sí,
un repo git, que se buildea y deployea automáticamente.
Aclaración: mi sitio está principalmente en una VPS que pago para
otra cosa, pero hay un espejo en home.ralsina.me que está, efectivamente
en pinky.
Gateway a la VPN de mi oficina / casa
Estos servicios necesitan accederse desde alguna parte. Usando
unos generosos servicios gratuitos de fly
y [tailscale])(https://tailscale.com) mas un poco de esfuerzo de configuración puedo, desde
cualquiera de mis compus o mi celular, acceder a todos los demás, no importa donde estén
siempre y cuando tengan algún tipo de conexión a internet.
Hardware
¿Por qué ESTE hardware?
Porque ya lo tenía.
- La raspberry juntaba tierra desde proyectos anteriores.
- Dos HDD de 500GB que me regalaron o de notebooks viejas.
Tuve que comprar 2 cables USB-SATA (mas o menos 1000 pesos) y
un cable micro-usb mas lindo (200 pesos) porque era lindo.
Performance
¿Es lento, pero ... es lento?
La raspberry pi 3b+ tiene 4 cores, así que puede ejecutar gitea,
un web server y algunas otras cosas sin problema.
También es USB 2.0, así que el acceso a disco es ... lentito.
Por otro lado, la mayor parte del tiempo accedo a cosas chicas
(un git pull es muy eficiente) o por un enlace lento (30Mbps)
así que el cuello de botella casi nunca va a ser el disco.
Una cosa específica que no tiene sentido en este server es espejado
por RAID, porque el tener que hacer los writes dos veces lo haría todo
más lento.
Solución: apago uno de los discos (así no se gasta) y lo prendo
a la noche para backupear el server.
Adicionalmente una vez por semana saco el disco secundario y lo copio
offsite.
Electricidad
A todo lo que da, mi cosito USB para medir el consumo que compré por
un dólar (no le creo mucho) dice que puede llegar a usar 1.1A a 5v
así que en promedio está usando algo como 4W.
Con mi boleta de EDENOR, eso es aproximadamente 10 centavos de dólar al mes.
La Carcaza
Agarré una carcaza "sleeve" para raspberry, 2 carcazas "sleeve" para
discos de 2.5, las pegoteé con paralelepípedos, imprimí todo en la
impresora 3D más barata que puede comprar el dinero. Salió bárbaro.
Como es una Pi 3 y no una Pi 4 soporta cooling pasivo sin problemas.
Las carcazas de los HDD los imprimí a 50% infill para que amortigüen
un poco el ruido. Se escucha a veces un click de los discos, pero es
básicamente silencioso.
También es chiquitito, mas o menos 10cm en cada dimensión.
Conclusión
Lleva un mes andando (sin la carcaza, eso es nuevo) sin problemas.
Tiene updates automáticos de software para todo, y si se llega a
romper algo no pasa nada, puedo estar días sin el server.
En resumen, lo califico como un éxito rotundo.