Skip to main content

Ralsina.Me — Roberto Alsina's website

Posts about software

Home Server Update May 2023

This is a longer-term up­date on the state of my home serv­er. You can read more about it in these 1 2 3 4 5 6 post­s.

Hardware

  • Got some SS­Ds for cheap, so mi­grat­ed it from HDDs to SDDs. Thanks to btrf­s, I could even do that with­out turn­ing the thing of­f.
  • Did some ex­per­i­ments to mea­sure pow­er us­age. It's around 8W when it goes full throt­tle with heavy disk us­age.
  • Work­ing on im­ple­ment­ing a UPS for the whole sys­tem.

Software

Since the last up­date I have added a few new ser­vices:

Filebrowser

I added a we­b-based file­brows­er. It's ... File­brows­er

Why? Be­cause some­times I need to man­age some files. No big deal, al­most nev­er use it.

Ebook Server

It's Kavi­ta and it's pret­ty good, if a lit­tle too ba­sic. I use it to man­age an epub col­lec­tion, and it work­s. Writ­ing scripts to au­to­mat­i­cal­ly tag and add meta­da­ta to ran­dom crap­py ebooks was fun.

Snips

A snip­pet/­paste­bin thing called snip­s.sh and it's re­al­ly nice. I added a small shell script so I can just pipe things to it. I am mak­ing the HTTPS pub­lic at snip­s.ralsi­na.me and keep­ing the SSH pri­vate in my VPN thank you very much.

Had some trou­ble mak­ing it work on ARM be­cause of a ten­sor­flow de­pen­den­cy, but it's run­ning fine.

WatchTower

Watch­tow­er is a tool that mon­i­tors your run­ning con­tain­ers and will dai­ly check if there are new ver­sion­s. If there are, it will up­grade them. Nice to have things up­date unat­tend­ed.

Conclusion

Serv­er is sta­ble

Pet Server (Feb 2023 update)

This is a longer-term up­date on the state of my home serv­er. You can read more about it in these 1 2 3 4 5 post­s.

Not much has changed in it, to be hon­est.

Hard­ware's the same as in the past, ev­ery­thing is work­ing fine. I have a good back­up of the serv­er us­ing what I de­scribed here and I have ac­tu­al­ly test­ed it. I can bring it back up in un­der half an hour, which is ok.

I am con­sid­er­ing get­ting a bet­ter USB hub, be­cause the one it's us­ing now is pret­ty slow for the stor­age. Not slow enough that I can no­tice but slow­er than it could be.

I may re­do the case be­cause I have learned a lot about mak­ing cas­es and can do a bet­ter one :-)

What could im­prove?

  • Some things are tricky to de­ploy in ARM
  • Some of my ad-hoc im­ple­men­ta­tions are clunky
  • I am not re­al­ly us­ing the whole me­dia serv­er im­ple­men­ta­tion all that much

How hap­py am I with it? Su­per hap­py. I use it ev­ery day, it's re­li­able and ba­si­cal­ly main­te­nance-free.

Pet Server (September 2022 update)

This is a longer-term up­date on the state of my home serv­er. You can read more about it in these 1 2 3 4 post­s.

What's the hardware nowadays?

  • Radxa Ze­ro: 4-­core 4GB RAM, 32GB eMMC
  • 2 1TB HDD over USB
  • 100Mbps eth­er­net wired con­nec­tion to the router

And ... so far, it's more than enough. No strain :-)

What is it running?

Al­so back­ups via restic and oth­er ran­dom things. I have a sep­a­rate oc­to­print serv­er but I may move it here.

Really, it runs all that?

Yeah, and it works just fine. Of course this is most­ly be­cause I am the on­ly re­al user, but hey, it work­s.

Anything else you would want to run?

  • Maybe some sort of push no­ti­fi­ca­tion thingie so I can no­ti­fy my phone if there's a prob­lem
  • Maybe grafana? But don't care enough yet.

Was it worth it?

I could run all this on cloud­s, but the hard­ware I am us­ing would cost maybe 100 dol­lars, and month­ly fees for ser­vices will quick­ly reach that amount and sur­pass it. I am al­ready pay­ing for the band­width any­way.

OTOH I have spent maybe 50 or 60 hours set­ting this up and if I look at my hourly rates ... ick.

Anything weird?

I re­al­ly don't un­der­stand oth­er peo­ple's home­lab­s, they seem wild­ly over­pow­ered.

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

Introduction

The slow­est pen­du­lum in tech is the dis­tri­bu­tion/­cen­tral­iza­tion one. It takes years, even decades to swing. That's why we once had cen­tral­ized time­shar­ing com­put­ers with dumb ter­mi­nal­s, and then we had per­son­al com­put­er­s, which we turned in­to in­ter­net ter­mi­nal­s, which we are stuck with.

This seems to be stick­ing, but hey, so did the oth­er two. It may swing the oth­er way, or it may not. Who knows, I am not a fu­tur­ol­o­gist, but I am swing­ing it a lit­tle bit, for my­self, in one small area: I am not hap­py with my da­ta liv­ing pri­mar­i­ly in large serv­er farms owned by oth­er­s.

So, rather than hav­ing my da­ta live in a cat­tle serv­er in a serv­er far­m, it now most­ly lives in a pet server, at home.

Al­low me to in­tro­duce you to ... pinky.

Picture of a small white plastic computer

Pinky will not wow you with spec­s, it's per­haps the slow­est prac­ti­cal serv­er pos­si­ble:

  • Rasp­ber­ry Pi 3b+, 1GB of RAM
  • 16GB SD card
  • 2x500GB HDD (mir­rored)

But it is more than enough for some spe­cif­ic class­es of work I need­ed. In this doc­u­ment I will try to ex­plain why I want­ed to do them, de­scribe them, and ex­plain the trade­offs in­volved, and the de­ci­sion process that lead me to the de­ci­sion to adopt this so­lu­tion.

Software

One of the most im­por­tant things here is Gitea.

It's hard to over­state what a game chang­er it is for a spe­cif­ic kind of user: Gitea makes host­ing a user-friend­ly git ser­vice easy and cheap.

So what? You may ask.

Well, a git serv­er is use­ful as a back­end for many ac­tu­al­ly use­ful ser­vices, even if you don't care about soft­ware de­vel­op­ment (which I do).

Pass

For ex­am­ple, sup­pose you want to man­age your own pass­word­s, in­stead of re­ly­ing on a third par­ty ser­vice. Well one way to do it is to use pass which is an open source im­ple­men­ta­tion which is sup­port­ed in most web browser­s, desk­top ap­pli­ca­tion­s, ter­mi­nals and what­not.

But if you have more than one de­vice ... then how do you sync your pass­words be­tween them? Yes, us­ing a git serv­er.

Chezmoi

Yes, I use more than one com­put­er. I have one at home, one in the of­fice, an­oth­er one for work, plus I am build­ing some home­made stuff us­ing rasp­ber­ry pis, and I want some things to work in the same way in all of them.

Chez­moi is an im­ple­men­ta­tion of the dot­files con­cep­t.

Ba­si­cal­ly: you tell it to man­age some of the con­fig files in your home di­rec­to­ry, which are then ver­sioned and shared be­tween com­put­ers us­ing ... you guessed it, a git serv­er.

It took some ef­fort to get things in a use­ful state but now I think it's ac­tu­al­ly adding val­ue to my sys­tem­s.

My Website

Yeah, I know, so 2003. But hey, it works for me. A cen­tral­ized lo­ca­tion for:

  • Things I write, like this one
  • Books I read and com­ment one, via goodreads
  • Videos I make, via youtube

Again, one of the goals is that my da­ta is mine so all those book list­s, and com­ments and star-rat­ings and what­ev­er ... why would they live on­ly in goodread­s? What if Ama­zon clos­es it?

Well, be­cause I can write soft­ware, I just get it all and put it in my own site, thank you very much.

And guess where the canon­i­cal source of all that is? Yeah, a git repos­i­to­ry, au­to­mat­i­cal­ly built and de­ployed.

Dis­clo­sure: my site is most­ly host­ed on a VPS I al­ready pay for, but there is a mir­ror at home­.ralsi­na.me which is, in­deed, in my pinky serv­er.

Gateway to my Office / Home VPN

All these ser­vices need to be ac­cessed from some­where. Us­ing some gen­er­ous free-ti­er ser­vices from fly and tailscale plus some con­fig­u­ra­tion ef­fort I can, from any of my com­put­ers (and my phone too) ac­cess any oth­er, re­gard­less of where they are, as long as they have some sort of in­ter­net con­nec­tion.

Hardware

Why THIS Hardware?

Be­cause I had it ly­ing around.

  • The rasp­ber­ry from old pro­ject­s, gath­er­ing dust.
  • Two 500GB HDDs from old note­books and giv­en as gift­s.

I had to buy 2 US­B-SA­TA ca­bles (about 5 dol­lars) and a nicer knit­ted mi­cro-usb an­gled ca­ble so it looked pret­ty (1 dol­lar).

Performance

Yes, it's pret­ty slow, but ... is it?

The rasp­ber­ry pi 3b+ is a 4-­core ma­chine, so it can run gitea, a web serv­er and a cou­ple oth­er things with­out any is­sues.

Sure, it's USB 2.0 on­ly, so ac­cess to stor­age is ... not fast.

OTO­H, most of the time I am ac­cess­ing ei­ther very small things (a git pull is pret­ty ef­fi­cien­t!) or over a slow link (30Mbps at most) so stor­age speed is hard­ly ev­er the bot­tle­neck.

One spe­cif­ic thing that makes no sense would be RAID mir­ror­ing be­tween the two disks, it would just make ev­ery­thing slow­er be­cause of the need to write each change twice.

So I turn off one of the disks (saves on wear) and turn it on at night to back­up the whole serv­er in­to it.

Adi­tion­al­ly, I can once a week take the sec­ondary disk and back it up off­site.

Power Usage

Run­ning at full throt­tle, my USB pow­er con­sump­tion mea­sur­ing thing I got for a dol­lar (so take it with a grain of salt) says it may use 1.1A at 5v, so in av­er­age it's prob­a­bly us­ing some­thing like 4W.

I checked my pow­er bill and that comes down to about 20 ar­gen­tini­an pe­sos a mon­th, or 10 US cents.

The Case

I grabbed a rasp­ber­ry "sleeve" case and a 2.5" HDD "sleeve" case out of thin­gi­verse, and slapped them on­to a few box­es, then print­ed it in the cheap­est 3D print­er mon­ey can buy. It works great.

Be­cause it's a Pi 3 and not a Pi 4 it can be pas­sive­ly cooled with no prob­lem and I print­ed the HDD sleeves at 50% in­fill so they would muf­fle the noise a bit. I can on­ly hear the oc­ca­sion­al click from the hard drives, but it's pret­ty much silen­t.

It's al­so around 10cm in each di­men­sion. That's pret­ty smal­l.

Conclusion

This serv­er (with­out the case, that's new) has been work­ing for around a month. It has au­to­mat­ic soft­ware up­dates for ev­ery­thing and if some­thing would hap­pen to break I can live with­out it for a few days with­out any is­sues.

I con­sid­er it a com­plete suc­cess.


Contents © 2000-2024 Roberto Alsina