Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Mi solución de backup

Intro

¿Los ba­ckups son im­por­tan­tes, ok? Yo lo sé, vos de­be­rías sa­ber­lo. ¿En­ton­ce­s, por qué la ma­yo­ría no tie­ne ba­ckups de­cen­tes de sus com­pus?

Por­que la ma­yo­ría de las ma­ne­ras de ha­cer ba­ckups son in­con­ve­nien­tes o inú­ti­le­s.

Así que acá es­tá la so­lu­ción que yo im­ple­men­té, que ha­ce mis ba­ckups úti­les y con­ve­nien­tes.

La herramienta de backup en sí

Uso res­tic por­que es­tá bue­na. Fun­cio­na, es rá­pi­da, es efi­cien­te con el es­pa­cio, y es fá­ci­l.

Na­da más hay que es­cri­bir un script co­mo es­te:

#!/bin/bash -x

# Backup dónde?
MOUNTDIR=/backup
BACKUPDIR=$MOUNTDIR/backup-$HOSTNAME

if [ -d $BACKUPDIR ]
then
    # Backups con password
    export RESTIC_PASSWORD=passwordgoeshere

    # Backup qué cosa?
    restic -r $BACKUPDIR --verbose backup \
            /home/ralsina \
            --exclude ~ralsina/.cargo \
            --exclude ~ralsina/.local/share/Steam/ \
            --exclude ~ralsina/.cache \
            --exclude ~ralsina/.config/google-chrome/ \
            --exclude ~ralsina/.rustup \
            --exclude ~ralsina/.npm \
            --exclude ~ralsina/.gitbook \
            \
            /etc/systemd/system/backup.* \
            /usr/local/bin

    # Guardar un backup por día de los últimos 7 días que hay backups
    restic -r $MOUNTDIR/backup-pinky forget --prune --keep-daily=7
    # Limpieza
    restic -r $MOUNTDIR/backup-pinky prune
    # Asegurate que están en disco
    sync; sync; sync; sync
fi

La regla 3-2-1 de los backups

Di­ce la re­gla 3-2-1:

  • 3 co­pias de los da­tos (1 ba­ckup pri­ma­rio, dos se­cun­da­rio­s)
  • 2 me­dios de al­ma­ce­na­mien­to dis­tin­to
  • 1 re­mo­to

En mi ca­so, es así:

  • Ba­ckup pri­ma­rio es en el dis­co
  • Ba­ckup se­cun­da­rio es a dis­co en otra má­qui­na (un script si­mi­la­r, usan­do sftp)
  • Ba­ckup ter­cia­rio a un pen dri­ve (me­dio dis­tin­to) que des­pués va en mi bol­si­llo (re­mo­to)

Pa­ra ha­cer los ba­ckups pri­ma­rio y se­con­da­rio son dos ver­sio­nes de ese script (en rea­li­dad el mis­mo scrip­t, con ar­gu­men­to­s).

El ba­ckup ter­cia­rio es un po­co más com­pli­ca­do, por­que quie­ro que sea con­ve­nien­te.

La manera conveniente de hacer backup a un medio removible

Es­ta es mi "u­ser sto­r­y":

Co­mo per­so­na que quie­re un ba­ckup offsi­te pe­ro no tie­ne ga­nas de trans­mi­tir to­dos esos da­to­s, quie­ro en­chu­far un pen dri­ve en la má­qui­na a ba­cku­pear y que AU­TO­MÁ­TI­CA­MEN­TE se ha­ga el ba­ckup de los da­tos al pen dri­ve.

En­ton­ce­s, cuan­do en al­gún mo­men­to el ba­ckup ter­mi­ne, lo pue­do des­en­chu­far y lle­vár­me­lo.

Di­ga­mos que en­con­trar la for­ma de ha­cer eso me to­mó va­rias ho­ras y es­toy bas­tan­te se­gu­ro que mi so­lu­ción es más com­pli­ca­da de lo ne­ce­sa­rio. Pe­ro bue­no, fun­cio­na, así que es­tá bien.

Sien­do es­to Li­nux en el año 2022 ... es­ta so­lu­ción im­pli­ca sys­te­m­d. Y por­que es sys­te­m­d, es com­pli­ca­do.

Automount

Lo primero es montar el pen drive automáticamente en un lugar conocido. Para eso se necesitan dos cosas. Un servicio de automount, para que systemd monte algo en /backup:

/etc/systemd/system/backup.automount

[Unit]
Description=Automount Backup

[Automount]
Where=/backup
TimeoutIdleSec=5min

[Install]
WantedBy=multi-user.target

Y un servicio de mount, para que sepa qué se monta en /backup y cómo:

/etc/systemd/system/backup.mount

[Unit]
Description=Backup
Wants=backup.service
Before=backup.service

[Mount]
What=/dev/disk/by-uuid/74cac511-4d7a-4221-9c0f-e554de12fbf1
Where=/backup
Type=ext4
Options=auto

[Install]
WantedBy=multi-user.target

Las par­tes in­te­re­san­tes so­n:

  • Wants y Before: ese backup.service v a a ser un servicio systemd que efectivamente corre el script de backup. Queremos que lo haga, y que lo haga DESPUÉS de que el pen drive se haya montado.
  • Where y What: "Where" dónde se monta y "What" es el UUID del pen drive como lo muestra sudo blkid

Hay que ha­bi­li­tar e ini­ciar el ser­vi­cio au­to­moun­t, no ha­ce fal­ta ha­cer na­da con el de moun­t.

Por su­pues­to des­pués vie­ne el ser­vi­cio de ba­ckup en sí. Es un "o­nes­ho­t": cuan­do arran­ca eje­cu­ta el script de ba­cku­p:

/etc/systemd/system/backup.service

[Unit]
Description=Backup
Requires=backup.mount
After=backup.mount

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

[Install]
WantedBy=multi-user.target

Hay que ha­bi­lia­tar­lo pe­ro no ha­cer "s­tar­t". Ya que es­tá en el "Wante­d" del moun­t, cuan­do el dis­po­si­ti­vo se mon­ta el ba­ckup se eje­cu­ta.

O ASÍ SE­RÍA EN UN MUN­DO EN EL QUE LAS CO­SAS TIE­NEN SEN­TI­DO

Lamentablemente el dispositivo solo se monta cuando, después de ser insertado, alguien trata de usar el mountpoint. Así que con estos servicios nada pasa hasta que, después de enchufar el pen drive uno va y hace algo como ls /backup, lo que dispara el mount, que a su vez inicia el script de backup.

¿Y cómo se arregla? Ni idea. Mi workaround fue agregar OTROS DOS SERVICIOS, así ls /backup se ejecuta una vez por minuto.

/etc/systemd/system/backup_try.timer

[Unit]
Description=Try to run backup

[Timer]
OnUnitActiveSec=1min

[Install]
WantedBy=timers.target

/etc/systemd/system/backup_try.service

[Unit]
Description=Trigger Backup

[Service]
Type=oneshot
ExecStart=/bin/ls /backup

[Install]
WantedBy=multi-user.target

Y con eso, sí, pue­do en­chu­far el pen dri­ve cuan­do lle­go a la ofi­ci­na a la ma­ña­na y des­en­chu­far­lo más tar­de, sa­bien­do que tie­ne un ba­ckup de hoy aden­tro.

Radxa Zero!

Lo qué?

Las Ras­pbe­rry Pi son úti­le­s, bue­nas y ba­ra­ta­s. Ex­cep­to por un de­ta­lle: es im­po­si­ble com­prar­la­s.

No hay sto­ck de Ras­pbe­rry PI 4, no hay sto­ck de Ras­pbe­rry Pi Ze­ro 2W, no hay sto­ck de na­da, ex­cep­to Pi Pi­co (que son mi­cro­con­tro­la­do­res) y Pi 400 (que no son lo que quie­ro­).

En­ton­ces bus­qué al­ter­na­ti­va­s, y en­contré la bue­na gen­te de All­net Chi­na que ven­de la lí­nea Ro­ck Pi.

¿Cómo son las Rock Pi?

  • Son ... pa­re­ci­das a las Ras­pbe­rry
  • En har­dwa­re, en al­gu­nos ca­so­s, son me­jo­res!
  • En so­ftwa­re ... es­tán un po­co más cru­da­s.
  • En com­pa­ti­bi­li­dad son más com­pli­ca­da­s.

Pe­ro ... HAY STO­CK y A BUEN PRE­CIO y MAN­DAN A AR­GEN­TI­NA!

Así que me com­pre un par de Ra­d­xa Ze­ro­s. Son co­mo una Pi Ze­ro ... pe­ro la CPU es mas o me­nos co­mo la de una Pi 4????

Tu­ve un pro­ble­mi­ta ini­cial­men­te pa­ra pa­gar­lo pe­ro me lo re­sol­vie­ron de in­me­dia­to y me upgra­dea­ron el shi­pping a Fe­dEx, así que lle­ga­ron en dos se­ma­nas y no pa­gué adua­na.

Eso sí, Fe­dEx no te avi­sa que cuan­do te lo traen te van a co­brar "al­go­", y no te di­cen cuán­to ni que te­nés que pa­gar cas­h.

En mi ca­so fue­ron $5400 y no me avi­sa­ron a tiem­po asi que tu­ve que es­pe­rar un día ex­tra.

Y qué tal andan?

Her­mo­so. La CPU es rá­pi­da. Man­ja­ro an­da 10 pun­tos (u­na vez que en­ten­dí co­mo ins­ta­lar­lo­).

Tie­ne eM­MC así que no ne­ce­si­ta tar­je­ta SD!

Un pro­ble­ma es que no he po­di­do ha­cer an­dar mi dis­play 1920­x480 (hay so­lo una men­ción de otra per­so­na en la In­ter­net in­ten­tán­do­lo, tam­po­co le an­du­vo)

Sal­vo eso? Ex­ce­len­te.

Es­toy mi­gran­do mi ser­ver Pi­nky a una Ra­d­xa, ya que la ten­go y con­su­me lo mis­mo que la Pi 3

Si bien leí va­rias ad­ver­ten­cias so­bre que se pue­den re­ca­len­tar no pa­re­cen pa­sar de los 48 gra­dos en uso nor­ma­l.

En ge­ne­ra­l, las re­co­mien­do, pe­ro ca­da uno ten­drá que ver cuán­to quie­re gas­tar y pa­ra qué.

The cases I built for my mini servers

I have writ­ten a cou­ple posts about my rasp­ber­ry-pi home server­s. And peo­ple seem to like the cas­es I 3d-print­ed for them.

Well, if you liked them here they are.

For a Rasp­ber­ry pi 3-based serv­er you need:

  • The case it­self
  • Caps to lock each disk in its slot: 1 and 2
  • Cap to lock the pi in its slot

For a Rasp­ber­ry pi 4-based serv­er you need:

  • The case it­self
  • Caps to lock each disk in its slot: 1 and 2
  • Cap to lock the pi in its slot

All these are just the fol­low­ing de­signs from thin­gi­verse slapped to­geth­er:

  • Pi 3 sleeve case: here
  • Pi 4 sleeve case: here
  • HDD case: here

They work bet­ter (or at al­l!) if you use a pow­ered USB hub. There is no room in the case for it, just buy one you like and glue it to the side :-)

Case with a USB server glued to it

Owning a Pet Server in 2022 (Part 2)

Owning a Pet Server in 2022 (Part 2)

In part 1 I de­scribed why I want­ed this server, and some of the trade­offs and de­ci­sions I had to make to make it hap­pen and work nice­ly.

This is an up­date af­ter re­view­ing some of those de­ci­sion­s, and adding some more soft­ware.

Hardware Changes

  • I added a pow­ered hub. This makes the two-HDD sit­u­a­­tion much more man­age­able avoid­ing un­der­­volts that could harm the hard­ware. I used a cheap pow­ered USB HUB.

  • I tried us­ing a Pi 4 with 4GB of RAM, USB 3 and faster CPU and ... there was no per­­ceiv­able dif­fer­­ence in per­­for­­mance. So, it's back to a Pi 3B+ with 1GB of RAM.

    Mem­o­ry us­age hov­­ers around 500MB so no prob­lem there.

  • I will get a 4-­port white HUB and in­te­grate it in­to the case (or do a new case) at some point.

Software Changes

  • Moved all ser­vices to run dock­­er­ized.

    I was re­luc­­tant at first, sus­pec­t­ing a per­­for­­mance im­­pact. Well, it's neg­li­gi­ble and it makes run­n­ing things MUCH sim­­pler.

    Spe­­cial h/t to lin­uxserv­er.io for their nice, qual­i­­ty con­­tain­er­s.

  • Added Hedge­­Doc a kick­­ass mark­­down ed­i­­tor / note-­­tak­ing ap­­pli­­ca­­tion / many oth­­er things. Us­ing it to write this!

  • Added FreeRSS as a re­­place­­ment for my us­age of In­­ore­ad­er.

  • Added Medusa, Tran­s­mis­­sion and Jel­­lyfin which com­bined turn in­­­to a nice "hey, I want to watch this TV show" so­lu­­tion.

  • THi­­sis in ad­di­­tion to a we­b­site, gitea and mux­imux to give a uni­­fied fron­­tend to ev­ery­thing.

How does it perform?

I can be stream­ing a video via Jel­lyfin (with transcod­ing) and read­ing news on FreshRSS with nice re­sponse times, and mem­o­ry us­age hov­ers around 500M­B, which CPU load is around 4.

So, I think this is about as far as I can push it, but it's a lot of func­tion­al­i­ty for a tiny, cheap, home serv­er.

Owning a Pet Server, in 2022

Introducción

El pén­du­lo más len­to de la tec­no­lo­gía es el que se mue­ve en­tre la cen­tra­li­za­ción y lo dis­tri­bui­do. To­ma años o dé­ca­das pa­ra os­ci­la­r. Por eso al­gu­na vez tu­vi­mos com­pu­ta­do­ras con ter­mi­na­les bo­ba­s, y des­pués com­pu­ta­do­ras per­so­na­le­s, que fui­mos con­vir­tien­do en ter­mi­na­les de in­ter­ne­t, que es adon­de es­ta­mos aho­ra.

Tal vez pa­rez­ca que no se va a mo­ver de ahí, pe­ro así se sen­tía tam­bién las ve­ces an­te­rio­res. Tal vez os­ci­le, tal vez no, quién sa­be, no soy fu­tu­ró­lo­go, pe­ro yo lo voy a mo­ver un po­qui­to, pa­ra mí, en un área es­pe­cí­fi­ca: no es­toy con­ten­to con que mis da­tos vi­van prin­ci­pal­men­te en gran­jas de ser­vers que tie­nen due­ños que no son yo.

Así que en vez de te­ner mis da­tos vi­vien­do en un ser­vi­dor "ga­na­do" en una gran­ja de ser­vi­do­res, aho­ra vi­ven prin­ci­pal­men­te en un ser­vi­dor mas­co­ta, en ca­sa.

Les pre­sen­to a ... pi­nk­y.

Foto de una pequeña compu de plástico blanco

Pi­nky no te va a asom­brar con sus ca­rac­te­rís­ti­ca­s, es tal vez el ser­ver prác­ti­co más len­to po­si­ble.

  • Ras­pbe­rry Pi 3b+, 1GB de RAM
  • tar­je­ta 16­GB SD
  • 2x500­GB HDD (es­pe­ja­do)

Pe­ro es más que su­fi­cien­te pa­ra al­gu­nos ti­pos es­pe­cí­fi­cos de tra­ba­jo que ne­ce­si­to. En es­te do­cu­men­to voy a tra­tar de ex­pli­car por qué los quie­ro ha­ce­r, des­cri­bir­lo­s, ex­pli­car las li­mi­ta­cio­nes y el pro­ce­so que me lle­vó a la de­ci­sión de adop­tar es­ta so­lu­ció­n.

Software

Una de las co­sas más im­por­tan­tes acá es Gi­tea.

Es di­fí­cil exa­ge­rar co­mo cam­bia las co­sas pa­ra un ti­po es­pe­cí­fi­co de usua­rio: Gi­tea ha­ce que te­ner tu ser­vi­dor de git sea fá­cil y ba­ra­to.

¿Y qué? pre­gun­ta­rá al­guno.

Bue­no, un ser­ver git es útil co­mo ba­ckend pa­ra mu­chas co­sas úti­le­s, aún si no te in­te­re­sa ha­cer de­sa­rro­llo de so­ftwa­re (que a mí si me in­te­re­sa).

Pass

Por ejem­plo, su­po­né­te que que­rés ma­ne­jar tus pro­pias pa­sswor­d­s, en vez de con­fiar en un ser­vi­cio de ter­ce­ro­s. Una ma­ne­ra de ha­cer­lo es usar pa­ss que es una im­ple­men­ta­ción open sour­ce so­por­ta­da por ca­si to­dos los bro­w­ser­s, apli­ca­cio­nes de es­cri­to­rio, ter­mi­na­les y que se yo.

Pe­ro si te­nés más de un dis­po­si­ti­vo ... ¿có­mo sin­cro­ni­zás tus pa­sswor­ds en­tre ello­s? Sí, usan­do un ser­ver gi­t.

Chezmoi

Y sí, uso más de una com­pu. Ten­go una en ca­sa, una en la ofi­ci­na, otra pa­ra tra­ba­ja­r, y me es­toy ha­cien­do al­gu­nas ca­se­ras con ras­pbe­rry pis, y quie­ro que al­gu­nas co­sas fun­cio­nen de la mis­ma ma­ne­ra en to­das ella­s.

Chez­moi Es una im­ple­men­ta­ción del con­cep­to de do­tfi­le­s.

Bá­si­ca­men­te le de­cís que ma­ne­ja al­gu­nos de tus ar­chi­vos de con­fi­gu­ra­ció­n, los que se guar­dan ver­sio­na­dos y com­par­ti­dos en­tre tus com­pus usan­do ... si, un ser­ver gi­t.

Me lle­vó un po­co de es­fuer­zo pa­ra de­jar­lo en un es­ta­do usa­ble, pe­ro creo que aho­ra le es­tá agre­gan­do va­lor a mis com­pus.

Mi Sitio

Si, ya sé, muy 2003. Pe­ro bue­no, a mí me sir­ve. Una ubi­ca­ción cen­tral pa­ra:

  • Co­sas que es­cri­bo (co­mo es­ta)
  • Li­bros que leo y co­men­to, via goodrea­ds
  • Vi­deos que ha­go, via you­tu­be

De nue­vo, una de las me­tas es que mis da­tos son míos así que to­das esas lis­tas de li­bro­s, co­men­ta­rios y ca­li­fi­ca­cio­nes y de­más ... ¿Por qué de­be­rían es­tar so­lo en goodrea­d­s? ¿Y si Ama­zon lo cie­rra?

Co­mo pue­do es­cri­bir so­ftwa­re, lo aga­rro to­do y lo pon­go en mi si­tio, y lis­to. Y cual es el lu­gar don­de es­tá to­do eso ... sí, un re­po gi­t, que se buil­dea y de­plo­yea au­to­má­ti­ca­men­te.

Acla­ra­ció­n: mi si­tio es­tá prin­ci­pal­men­te en una VPS que pa­go pa­ra otra co­sa, pe­ro hay un es­pe­jo en ho­me.­ral­si­na.­me que es­tá, efec­ti­va­men­te en pi­nk­y.

Gateway a la VPN de mi oficina / casa

Es­tos ser­vi­cios ne­ce­si­tan ac­ce­der­se des­de al­gu­na par­te. Usan­do unos ge­ne­ro­sos ser­vi­cios gra­tui­tos de fly y [tailsca­le])(http­s://­tailsca­le.­com) mas un po­co de es­fuer­zo de con­fi­gu­ra­ción pue­do, des­de cual­quie­ra de mis com­pus o mi ce­lu­la­r, ac­ce­der a to­dos los de­má­s, no im­por­ta don­de es­tén siem­pre y cuan­do ten­gan al­gún ti­po de co­ne­xión a in­ter­ne­t.

Hardware

¿Por qué ESTE hardware?

Por­que ya lo te­nía.

  • La ras­pbe­rry jun­ta­ba tie­rra des­de pro­yec­tos an­te­rio­res.
  • Dos HDD de 500­GB que me re­ga­la­ron o de no­te­books vie­ja­s.

Tu­ve que com­prar 2 ca­bles US­B-S­ATA (mas o me­nos 1000 pe­so­s) y un ca­ble mi­cro­-usb mas lin­do (200 pe­so­s) por­que era lin­do.

Performance

¿Es len­to, pe­ro ... es len­to?

La ras­pbe­rry pi 3b+ tie­ne 4 co­res, así que pue­de eje­cu­tar gi­tea, un web ser­ver y al­gu­nas otras co­sas sin pro­ble­ma.

Tam­bién es USB 2.0, así que el ac­ce­so a dis­co es ... len­ti­to.

Por otro la­do, la ma­yor par­te del tiem­po ac­ce­do a co­sas chi­cas (un git pu­ll es muy efi­cien­te) o por un en­la­ce len­to (30M­bp­s) así que el cue­llo de bo­te­lla ca­si nun­ca va a ser el dis­co.

Una co­sa es­pe­cí­fi­ca que no tie­ne sen­ti­do en es­te ser­ver es es­pe­ja­do por RAI­D, por­que el te­ner que ha­cer los wri­tes dos ve­ces lo ha­ría to­do más len­to.

So­lu­ció­n: apa­go uno de los dis­cos (a­sí no se gas­ta) y lo pren­do a la no­che pa­ra ba­cku­pear el ser­ve­r.

Adi­cio­nal­men­te una vez por se­ma­na sa­co el dis­co se­cun­da­rio y lo co­pio offsi­te.

Electricidad

A to­do lo que da, mi co­si­to USB pa­ra me­dir el con­su­mo que com­pré por un dó­lar (no le creo mu­cho) di­ce que pue­de lle­gar a usar 1.1A a 5v así que en pro­me­dio es­tá usan­do al­go co­mo 4W.

Con mi bo­le­ta de EDE­NO­R, eso es apro­xi­ma­da­men­te 10 cen­ta­vos de dó­lar al me­s.

La Carcaza

Aga­rré una car­ca­za "s­lee­ve" pa­ra ras­pbe­rr­y, 2 car­ca­zas "s­lee­ve" pa­ra dis­cos de 2.5, las pe­go­teé con pa­ra­le­le­pí­pe­do­s, im­pri­mí to­do en la im­pre­so­ra 3D más ba­ra­ta que pue­de com­prar el di­ne­ro. Salió bár­ba­ro.

Co­mo es una Pi 3 y no una Pi 4 so­por­ta cooling pa­si­vo sin pro­ble­ma­s. Las car­ca­zas de los HDD los im­pri­mí a 50% in­fi­ll pa­ra que amor­ti­güen un po­co el rui­do. Se es­cu­cha a ve­ces un cli­ck de los dis­co­s, pe­ro es bá­si­ca­men­te si­len­cio­so.

Tam­bién es chi­quiti­to, mas o me­nos 10­cm en ca­da di­men­sió­n.

Conclusión

Lle­va un mes an­dan­do (sin la car­ca­za, eso es nue­vo) sin pro­ble­ma­s. Tie­ne up­da­tes au­to­má­ti­cos de so­ftwa­re pa­ra to­do, y si se lle­ga a rom­per al­go no pa­sa na­da, pue­do es­tar días sin el ser­ve­r.

En re­su­men, lo ca­li­fi­co co­mo un éxi­to ro­tun­do.


Contents © 2000-2025 Roberto Alsina