Introducció

Fa uns anys, cap al 2018, vaig descobrir un pòdcast anomenat Autodefensa informàtica , de la bona gent de Radio Almaina. Va ser dels primers pòdcasts que escoltava, i va suposar un punt d’inflexió en la meva percepció de la tecnologia, especialment del que anomenem «núvol». Fins llavors, tot i tenir Linux a l’ordinador, depenia de molts serveis privatius en línia. Sentir aquelles converses amb idees tan «radicals» i friquis (així ho vaig percebre en un inici) em va generar inquietuds i em va fer veure que no havia de resignar-me davant de certs problemes, sinó que hi ha camins alternatius. Feia també poc temps que havia entrat a Softcatalà i el tancament de llocs web pel referèndum de l'1 d’octubre de 2017 era molt recent. En definitiva, que a la base d’usuari habitual del programari lliure, curiositat, coneixements tècnics mitjans s’hi va sumar una conjuntura que va fer que alguna cosa dins meu fes clic.

Disposat a provar coses, sense experiència prèvia administrant un servidor i molt menys fent-ho tot des del terminal, vaig descobrir l’existència dels VPS (servidors privats virtuals) i m’hi vaig llançar. Per un preu assequible (uns 60€ l’any o alguna cosa així) tenia una màquina poc potent però suficient per a fer proves. Vaig instal·lar Nextcloud i així vaig tenir un lloc on allotjar alguns fitxers en un «núvol privat», lluny de les mirades de Google i Microsoft. A mesura que vaig guanyar experiència, vaig anar sumant serveis (un parell de llocs web, l’accés extern al Home Assistant que tinc instal·lat en una Raspberry Pi a casa i alguna cosa més) i millorant el maquinari del VPS.

Fem fast forward fins al gener de 2024. Estic més que acostumat i a gust amb l’ús i l’administració d’un servidor privat per a les meves coses, però hi ha alguns aspectes que no m’agraden:

  1. Les opcions de millora del maquinari assignat al VPS són limitades i poc personalitzables.
  2. Em ve de gust tenir nous serveis (començo a pensar en Mastodon, per exemple), però els recursos estan al límit i les millores són massa cares.
  3. Les dades les administro jo, però s’emmagatzemen a l’estranger i fora del meu control.
  4. El cost s’ha disparat sense que les característiques del VPS hagin millorat en la mateixa proporció (més de 120€ l’any 2023).

Arribat a aquest punt, em ronda pel cap una possible solució: i si munto un servidor a casa? Potser puc trobar una màquina que no suposi una inversió inicial excessiva i que pugui amortitzar ràpidament…

Infraestructura

Servidor

Després de cercar, vaig decantar-me per fer servir un Mini PC com a servidor. Són dispositius compactes, amb un consum elèctric semblant al d’un portàtil, que no es poden personalitzar a fons però normalment permeten configurar la RAM i l’emmagatzematge. Vaig trobar un ASUS PN50 seminou, que algú havia retornat sense fer servir, per 250€. Sumant-li 16 GB de RAM i un SSD de 256 GB, per poc més de 300€ tenia un servidor. Comparat amb els 120€ l’any (com a mínim!) del VPS, en tres anys s’amortitza el cost inicial de la màquina. I amb més potència i espai d’emmagatzematge!

Imatge d’un ASUS PN50, un Mini PC molt compacte de color negre. Té diversos ports USB a la part frontal i un botó d’engegada.

El funcionament del servidor no té gaire misteri. Té instal·lat Debian i tots els serveis s’executen amb l’ajuda de Docker Compose. Tinc un sistema de còpies de seguretat basat en Duplicati que faig servir des del VPS i que m’ha salvat la vida un parell de vegades.

Ara bé, amb un servidor en una xarxa domèstica, tenint en compte que també connectem els nostres dispositius personals, necessitem una mica de protecció. I en el meu cas vaig necessitar un altre aparell…

Router

Els routers que instal·len les operadores destaquen sobretot per les restriccions. Són aparells que pertanyen a l’empresa, no al client, i solen ser models que potser assoleixen la velocitat màxima contractada, però que no permeten gaire personalització.

Per sort, podem fer servir un aparell propi si estem disposats a fer una petita inversió (perquè un router bo no és barat). En el meu cas, vaig trobar el Banana Pi R3 , que funciona amb OpenWRT , un sistema operatiu lliure basat en Linux per a dispositius integrats, principalment routers. Vaig aconseguir-lo per Aliexpress per uns 150€ amb una carcassa metàl·lica i antenes Wi-Fi. No és ni molt menys dels millors aparells que hi ha, però té una bona relació qualitat-preu; gairebé arriba a la velocitat que tinc contractada (1Gb simètric) i m’ha permès muntar una xarxa domèstica avançada:

  • Divisió en subxarxes i control amb tallafocs: si connectem diversos dispositius a una mateixa xarxa, el més normal és que es puguin veure i comunicar entre si. Això no sempre és bo: volem que el mòbil d’un convidat a casa pugui accedir al nostre ordinador? O que un servidor obert al públic, potencialment hackejable, tingui accés al nostre sistema de domòtica? Les subxarxes permeten configurar això fàcilment. Jo tinc tres subxarxes principals: una xarxa general/genèrica, una xarxa només per a dispositius domòtics (llums, càmera, etc.) i una xarxa exclusiva per al servidor. El tallafoc restringeix les connexions entre xarxes, amb algunes excepcions.
  • Sistema d’actualització del DNS dinàmic: en xarxes domèstiques és habitual que la IP pública canviï periòdicament. Si tenim un servidor, hem de mantenir els registres DNS del domini actualitzats, o perdem l’accés al servidor des de fora de la xarxa local (i no tindrem visites). En el meu cas, canvia cada pocs dies, de vegades cada poques hores.
  • VPN privat per a accedir a la xarxa local: sovint interessa restringir certs dispositius o serveis a la xarxa local, però de vegades hi volem accedir des de fora. Que el router en si faci de servidor de VPN facilita molt les coses. Jo ho faig servir, per exemple, per a accedir a Home Assistant (domòtica) quan soc fora de casa.

Un cop configurat el router, no s’ha de fer gaire. Només convé mantenir-lo al dia amb les actualitzacions més recents (la qual cosa és fàcil i no sol donar problemes).

Imatge d’un prestatge amb el Mini PC ASUS PN50, que fa de servidor, i un router Banana Pi R3 a sobre. Hi ha llumetes enceses i molts cables Ethernet de diversos colors per darrere.

Quan acabes dedicant un diumenge sencer a actualitzacions…

Mantenir tot això no és complicat un cop està tot muntat; si no s’han d’ampliar els serveis, és qüestió de tenir-ho tot al dia. Ara bé, sempre poden passar imprevistos, com el que vaig tenir fa uns dies.

Fa uns mesos que va sortir la versió 24.10 d’OpenWRT i calia actualitzar el router. Com que a casa som dos que teletreballem i poden haver-hi imprevistos, havia anat endarrerint l’actualització. Quan vaig trobar un moment per a fer-la, vaig adonar-me que l’actualització no es podia fer automàticament, perquè havia canviat l’esquema de particions i calia esborrar la configuració. O sigui que vaig tornar a endarrerir l’actualització fins a un diumenge al matí.

OpenWRT, a la pàgina d’actualitzacions, ofereix una opció per a fer una còpia de seguretat de la configuració. Vaig fer-la i la vaig desar a l’ordinador. Llavors vaig provar d’actualitzar el router des de la mateixa pàgina d’actualització, marcant l’opció d’esborrar l’actualització. Passen uns minuts, tot sembla anar bé, el router es reinicia… i ja no arrenca més. 😱

«No passa res! Provem de reinstal·lar-ho». Vaig agafar una microSD, vaig enregistrar-hi OpenWRT i vaig instal·lar-lo al router. Tot bé, ja torna a funcionar amb la configuració de fàbrica. Restauro la còpia de seguretat de la configuració i ja torno a tenir en marxa les subxarxes i tota la pesca (o això pensava).

Content i motivat amb l’actualització del router, pensant en un disc dur que tenia en un calaix d’un portàtil antic, se’m va acudir una idea: «I si instal·lo el disc dur al servidor i així tinc més espai per als volums de Docker? Va, som-hi!» Aturo el servidor, hi instal·lo el disc dur i l’engego de nou per a fer la còpia de dades. Semblava que la cosa s’allargaria més de mitja hora, o sigui que ho vaig deixar fent.

Quan va acabar la còpia, sense errors, vaig donar per fet que tot havia anat com esperava i vaig aixecar de nou tots els serveis. Entro a Mastodon: error intern del servidor. Entro al blog: error intern del servidor. «Ui, que estrany. Sembla que falla el proxy». Vaig entrar a la pàgina de configuració i estava tot de fàbrica, sense subdominis personalitzats. QUÈ!?

«No passa res, Marc, deu ser senzill de resoldre». Sí, senzillíssim, al final em va suposar tota una tarda de recerca. I havia estat una tonteria: quan havia copiat les dades amb rsync, havien anat a parar a una subcarpeta i Docker no llegia els volums correctament. Solucionat això, tot tornava a funcionar.

Abans d’anar-me’n a dormir, vaig entrar a Mastodon i em va sorprendre no veure cap publicació nova des del migdia (abans d’iniciar la còpia del servidor). El món estava molt tranquil aquell diumenge? Estrany… Mirant els registres de Docker, vaig veure uns errors molt estranys amb la meva adreça de correu. Vaig revisar el fitxer compose.yml… i per alguna raó havia enganxat sense voler l’adreça al mig de la configuració de Sidekiq, un dels components de Mastodon. Aquest component s’encarrega de processar les tasques en segon pla (rebre i enviar publicacions, baixada de multimèdia, etc.) i, com que no acabava d’arrencar, no veia novetats. Un cop esmenada la configuració, em van arribar un parell de publicacions noves a la cronologia de Mastodon i ho vaig donar per resolt. «Quin dia més llarg, però ja ho tinc tot al dia!»

… i dilluns encara no has acabat

L’endemà al matí, mentre esmorzava, vaig entrar a veure les novetats a Mastodon. Excepte que… no n’hi havia. Res després del parell de publicacions rebudes abans d’anar-me’n al llit. Podria ser que, després d’haver estat tantes hores desconnectat, hagués acabat «desfederat»? S’havia trencat alguna cosa al servidor en copiar les dades?

La resposta, curiosament, no tenia res a veure amb el servidor, sinó amb el router. Vaig restaurar la còpia de seguretat de la configuració, sí, però ja està. I certes funcions del router, com el DNS dinàmic, depenen de paquets addicionals que no s’inclouen a la còpia de seguretat . La configuració s’havia restaurat, però no tot el programari que la feia servir. En definitiva: que el domini ja no apuntava cap al servidor i «de cara a la galeria» no tenia connexió.

Un cop reinstal·lats els paquets, ja va quedar tot resolt i van arribar les publicacions noves de Mastodon en tromba.

De tota experiència s’aprèn

El que podria haver estat una hora va allargar-se un dia sencer, però m’ha servit per a tenir en compte en el futur alguns detalls útils que resumeixo (per a mi i per a qui li puguin servir):

  • Si s’actualitza OpenWRT, per defecte no es reinstal·len els paquets instal·lats manualment, però hi ha maneres de conservar-los .
  • Si OpenWRT no arrenca, no passa res; hi ha maneres de recuperar el router .
  • Si es copien dades amb rsync o similars, cal revisar sempre que el camí de destinació sigui correcte i que no es creïn subcarpetes inesperades.
  • Compte en copiar i enganxar text, especialment en fitxers de configuració; afegir o treure parts sense voler pot generar problemes evidents i no tan evidents.
  • Amb un servidor obert a l’Internet públic, potser no sobra tenir algun sistema per a comprovar la connexió periòdicament (a mi m’hauria anat bé per a detectar el problema, ho he d’investigar).

I, per acabar, no està de més recordar: sempre cal tenir còpies de seguretat. No m’han calgut aquesta vegada, però a la vida passen coses i no se sap mai. Més val que en sobri que no que en falti.