diff --git a/home-server/jellyfin.png b/home-server/jellyfin.png new file mode 100644 index 00000000..a7c35924 Binary files /dev/null and b/home-server/jellyfin.png differ diff --git a/index.html b/index.html index 0662946e..fd1b7ead 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Sandbox Escape Python CTF -

A Tale of a Frugal Home Server


NixOS +

A Tale of a Frugal Home Server


NixOS Home Server Automation Jellyfin diff --git a/index.xml b/index.xml index cadf494d..522db3a2 100644 --- a/index.xml +++ b/index.xml @@ -5,10 +5,7 @@ start this year off by going back to the roots.</p> <blockquote> <p>The Multiverse is within your grasp! Unfortunately, the server that contains the secrets of the multiverse is in a universe where keyboards only have numbers -and (most) symbols.</p>A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<blockquote> -<p>Note: This post is a draft</p> -</blockquote> -<p>Having run an on-premise server for the past two years, I think my setup has finally +and (most) symbols.</p>A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<p>Having run an on-premise server for the past two years, I think my setup has finally matured enough to be worth talking about.</p> <p>At any point, you can check out the source code for the server&rsquo;s infrastructure <a href="https://github.com/lavafroth/dotfiles/tree/main/hosts/rahu">here</a> for a concrete example. For each service I talk about, I will also link the respective definitions in my config.</p> diff --git a/pagefind/fragment/en-us_4d1320e.pf_fragment b/pagefind/fragment/en-us_4d1320e.pf_fragment deleted file mode 100644 index fd2e7fd5..00000000 Binary files a/pagefind/fragment/en-us_4d1320e.pf_fragment and /dev/null differ diff --git a/pagefind/fragment/en-us_8de98f1.pf_fragment b/pagefind/fragment/en-us_8de98f1.pf_fragment new file mode 100644 index 00000000..78fd3eda Binary files /dev/null and b/pagefind/fragment/en-us_8de98f1.pf_fragment differ diff --git a/pagefind/index/en-us_14a176f.pf_index b/pagefind/index/en-us_14a176f.pf_index deleted file mode 100644 index 78a78c71..00000000 Binary files a/pagefind/index/en-us_14a176f.pf_index and /dev/null differ diff --git a/pagefind/index/en-us_23e8caf.pf_index b/pagefind/index/en-us_23e8caf.pf_index new file mode 100644 index 00000000..de6ae4b4 Binary files /dev/null and b/pagefind/index/en-us_23e8caf.pf_index differ diff --git a/pagefind/index/en-us_345bd5b.pf_index b/pagefind/index/en-us_345bd5b.pf_index new file mode 100644 index 00000000..4b4f3627 Binary files /dev/null and b/pagefind/index/en-us_345bd5b.pf_index differ diff --git a/pagefind/index/en-us_41493b3.pf_index b/pagefind/index/en-us_41493b3.pf_index new file mode 100644 index 00000000..d96f3920 Binary files /dev/null and b/pagefind/index/en-us_41493b3.pf_index differ diff --git a/pagefind/index/en-us_80cc1fc.pf_index b/pagefind/index/en-us_80cc1fc.pf_index deleted file mode 100644 index e6b6a5fc..00000000 Binary files a/pagefind/index/en-us_80cc1fc.pf_index and /dev/null differ diff --git a/pagefind/index/en-us_80fa387.pf_index b/pagefind/index/en-us_80fa387.pf_index deleted file mode 100644 index 1689f2bb..00000000 Binary files a/pagefind/index/en-us_80fa387.pf_index and /dev/null differ diff --git a/pagefind/index/en-us_85b2c42.pf_index b/pagefind/index/en-us_85b2c42.pf_index deleted file mode 100644 index 2e9e1829..00000000 Binary files a/pagefind/index/en-us_85b2c42.pf_index and /dev/null differ diff --git a/pagefind/index/en-us_873ebd3.pf_index b/pagefind/index/en-us_873ebd3.pf_index new file mode 100644 index 00000000..4cb5d6ad Binary files /dev/null and b/pagefind/index/en-us_873ebd3.pf_index differ diff --git a/pagefind/index/en-us_92cbaba.pf_index b/pagefind/index/en-us_92cbaba.pf_index new file mode 100644 index 00000000..9ae05acb Binary files /dev/null and b/pagefind/index/en-us_92cbaba.pf_index differ diff --git a/pagefind/index/en-us_9d45f2a.pf_index b/pagefind/index/en-us_9d45f2a.pf_index deleted file mode 100644 index b66eaa33..00000000 Binary files a/pagefind/index/en-us_9d45f2a.pf_index and /dev/null differ diff --git a/pagefind/index/en-us_b352ff2.pf_index b/pagefind/index/en-us_b352ff2.pf_index new file mode 100644 index 00000000..348ad35d Binary files /dev/null and b/pagefind/index/en-us_b352ff2.pf_index differ diff --git a/pagefind/index/en-us_efd0bb4.pf_index b/pagefind/index/en-us_efd0bb4.pf_index deleted file mode 100644 index 76e7a475..00000000 Binary files a/pagefind/index/en-us_efd0bb4.pf_index and /dev/null differ diff --git a/pagefind/pagefind-entry.json b/pagefind/pagefind-entry.json index 90217785..7c2af499 100644 --- a/pagefind/pagefind-entry.json +++ b/pagefind/pagefind-entry.json @@ -1 +1 @@ -{"version":"1.0.3","languages":{"en-us":{"hash":"en-us_15ebd5499a2ca","wasm":"en-us","page_count":48}}} \ No newline at end of file +{"version":"1.0.3","languages":{"en-us":{"hash":"en-us_514f7b8988ec7","wasm":"en-us","page_count":48}}} \ No newline at end of file diff --git a/pagefind/pagefind.en-us_15ebd5499a2ca.pf_meta b/pagefind/pagefind.en-us_15ebd5499a2ca.pf_meta deleted file mode 100644 index b86e7890..00000000 Binary files a/pagefind/pagefind.en-us_15ebd5499a2ca.pf_meta and /dev/null differ diff --git a/pagefind/pagefind.en-us_514f7b8988ec7.pf_meta b/pagefind/pagefind.en-us_514f7b8988ec7.pf_meta new file mode 100644 index 00000000..d720134f Binary files /dev/null and b/pagefind/pagefind.en-us_514f7b8988ec7.pf_meta differ diff --git a/post/a-tale-of-a-frugal-home-server/index.html b/post/a-tale-of-a-frugal-home-server/index.html index ad4f7c54..ce5f4e5e 100644 --- a/post/a-tale-of-a-frugal-home-server/index.html +++ b/post/a-tale-of-a-frugal-home-server/index.html @@ -1,18 +1,15 @@ A Tale of a Frugal Home Server - lavafroth -

A Tale of a Frugal Home Server

Note: This post is a draft

Having run an on-premise server for the past two years, I think my setup has finally +Throughout the rest of the post, you will come across the following broad strokes:'>

A Tale of a Frugal Home Server

Having run an on-premise server for the past two years, I think my setup has finally matured enough to be worth talking about.

At any point, you can check out the source code for the server’s infrastructure here for a concrete example. For each service I talk about, I will also link the respective definitions in my config.

My minimalist mindset has unsurprisingly aided the architecture of my server. Throughout the rest of the post, you will come across the following broad strokes:

  • Easy is not always simple
  • Simple is better than easy
  • There must be one (and exactly one) way of doing something

Hardware

The server is an old laptop which was on the verge becoming e-waste. Despite having a touchscreen display, the LCD had been battered into shards, making it no better than a shiny paperweight.

Although one could have kept the display, I carefully disassembled the machine to disconnect the corresponding -ribbon cable because we are aiming for a headless setup. Removing the display also reduces the power draw.

A picture of the home server sans the display

Software

I have seen a lot of people grow monstrous fleets of docker containers in the name of “simplicity” and ease of use. +ribbon cable because we are aiming for a headless setup.

Removing the display reduced the power draw to 4 watts at idle. Thus, I would highly recommend it.

A picture of the home server sans the display

Software

I have seen a lot of people grow monstrous fleets of docker containers in the name of “simplicity” and ease of use. Yet others take this further with dedicated operating systems like CasaOS to install containerized services in a single click.

Sure, these solutions might be easy but they are certainly not simple. Containers introduce the overhead of Linux kernel namespaces. This means accessing files on the host additionally requires creating a mount namespace.

To avoid all of that overhead, I opted for NixOS.

With NixOS, I can define the state of my system in a single configuration file, ensuring that the services @@ -27,7 +24,17 @@ but the filesystem is usually FUSE mounted as sshfs.

The adde as our user.

SFTP is fast and available on almost all platforms:

  • Linux: Native support
  • Android: Native support on some devices. Alternatively, use Material Files
  • Windows: Supported through WinSCP
  • iOS: Suppported through Pisth

Freedom from the Botnet

Finally, we can talk about weeding out the proprietary services that are holding us back and replacing them with more privacy respecting alternatives.

Google Photos → Photoprism (source)

Since I backup my phone’s camera roll to the server, it’s often nice to have these photos and videos tagged and organized. Photoprism packs all the functionality of Google Photos including tagging people, -pets and places in photos, as well as searching through them along the timeline.

NixOS +pets and places in photos, as well as searching through them along the timeline.

Netflix / Spotify → Jellyfin

Instead of overpriced and restrictive services like Netflix or Spotify that shove ads in your face +even if you have paid for them, I have migrated to buying pieces of media including movies +and music, ripping them off the discs and saving them on the server. This way we don’t have to sit +through piles of DVDs to find out a movie to rewatch.

Albeit there’s a caveat to this, media that is not sold in physical copies.

I have set Jellyfin to monitor a directory where I store the ripped media from the CDs or DVDs. +Jellyfin then automatically updates its catalogue (index) when something new is added.

For music, Jellyfin also supports adding lyrics through .lrc files. A feature that is paywalled +on services like Spotify.

Here’s a screenshot of the one album I have so far.

Finishing thoughts

Using Nix for infrastructure has been a great success in my books. One of the greatest appeals is that +there’s little to no setup involved for most of the services, because someone else has already figured +that out for you!

I have also enabled automatic updates which are scheduled every week. This works while leaving a backup of +the last known working state (generation), so even if the update fails, the server must keep working. +There’s simply no way for the software side of the server to break.

What does that mean to an outsider? Less tech savvy people in my family just need to power the machine on +if it isn’t already. That’s it!

Sysadmins need not apply.

A Tale of a Frugal Home Server


NixOS +

A Tale of a Frugal Home Server


NixOS Home Server Automation Jellyfin diff --git a/post/index.xml b/post/index.xml index 04a1e24d..37fbc505 100644 --- a/post/index.xml +++ b/post/index.xml @@ -5,10 +5,7 @@ start this year off by going back to the roots.</p> <blockquote> <p>The Multiverse is within your grasp! Unfortunately, the server that contains the secrets of the multiverse is in a universe where keyboards only have numbers -and (most) symbols.</p>A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<blockquote> -<p>Note: This post is a draft</p> -</blockquote> -<p>Having run an on-premise server for the past two years, I think my setup has finally +and (most) symbols.</p>A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<p>Having run an on-premise server for the past two years, I think my setup has finally matured enough to be worth talking about.</p> <p>At any point, you can check out the source code for the server&rsquo;s infrastructure <a href="https://github.com/lavafroth/dotfiles/tree/main/hosts/rahu">here</a> for a concrete example. For each service I talk about, I will also link the respective definitions in my config.</p> diff --git a/tags/automation/index.html b/tags/automation/index.html index db25b94d..387dfa0b 100644 --- a/tags/automation/index.html +++ b/tags/automation/index.html @@ -1,5 +1,5 @@ Automation - lavafroth -

A Tale of a Frugal Home Server


NixOS +

A Tale of a Frugal Home Server


NixOS Home Server Automation Jellyfin diff --git a/tags/automation/index.xml b/tags/automation/index.xml index 961e0e61..89dd843a 100644 --- a/tags/automation/index.xml +++ b/tags/automation/index.xml @@ -1,7 +1,4 @@ -Automation on lavafrothhttps://lavafroth.is-a.dev/tags/automation/Recent content in Automation on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<blockquote> -<p>Note: This post is a draft</p> -</blockquote> -<p>Having run an on-premise server for the past two years, I think my setup has finally +Automation on lavafrothhttps://lavafroth.is-a.dev/tags/automation/Recent content in Automation on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<p>Having run an on-premise server for the past two years, I think my setup has finally matured enough to be worth talking about.</p> <p>At any point, you can check out the source code for the server&rsquo;s infrastructure <a href="https://github.com/lavafroth/dotfiles/tree/main/hosts/rahu">here</a> for a concrete example. For each service I talk about, I will also link the respective definitions in my config.</p> diff --git a/tags/home-server/index.html b/tags/home-server/index.html index 39a73333..41375024 100644 --- a/tags/home-server/index.html +++ b/tags/home-server/index.html @@ -1,5 +1,5 @@ Home Server - lavafroth -

A Tale of a Frugal Home Server


NixOS +

A Tale of a Frugal Home Server


NixOS Home Server Automation Jellyfin diff --git a/tags/home-server/index.xml b/tags/home-server/index.xml index a6d4c804..995eea69 100644 --- a/tags/home-server/index.xml +++ b/tags/home-server/index.xml @@ -1,7 +1,4 @@ -Home Server on lavafrothhttps://lavafroth.is-a.dev/tags/home-server/Recent content in Home Server on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<blockquote> -<p>Note: This post is a draft</p> -</blockquote> -<p>Having run an on-premise server for the past two years, I think my setup has finally +Home Server on lavafrothhttps://lavafroth.is-a.dev/tags/home-server/Recent content in Home Server on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<p>Having run an on-premise server for the past two years, I think my setup has finally matured enough to be worth talking about.</p> <p>At any point, you can check out the source code for the server&rsquo;s infrastructure <a href="https://github.com/lavafroth/dotfiles/tree/main/hosts/rahu">here</a> for a concrete example. For each service I talk about, I will also link the respective definitions in my config.</p> diff --git a/tags/jellyfin/index.html b/tags/jellyfin/index.html index c214debc..b04538fb 100644 --- a/tags/jellyfin/index.html +++ b/tags/jellyfin/index.html @@ -1,5 +1,5 @@ Jellyfin - lavafroth -

A Tale of a Frugal Home Server


NixOS +

A Tale of a Frugal Home Server


NixOS Home Server Automation Jellyfin diff --git a/tags/jellyfin/index.xml b/tags/jellyfin/index.xml index defe733f..91921cc6 100644 --- a/tags/jellyfin/index.xml +++ b/tags/jellyfin/index.xml @@ -1,7 +1,4 @@ -Jellyfin on lavafrothhttps://lavafroth.is-a.dev/tags/jellyfin/Recent content in Jellyfin on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<blockquote> -<p>Note: This post is a draft</p> -</blockquote> -<p>Having run an on-premise server for the past two years, I think my setup has finally +Jellyfin on lavafrothhttps://lavafroth.is-a.dev/tags/jellyfin/Recent content in Jellyfin on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<p>Having run an on-premise server for the past two years, I think my setup has finally matured enough to be worth talking about.</p> <p>At any point, you can check out the source code for the server&rsquo;s infrastructure <a href="https://github.com/lavafroth/dotfiles/tree/main/hosts/rahu">here</a> for a concrete example. For each service I talk about, I will also link the respective definitions in my config.</p> diff --git a/tags/nixos/index.html b/tags/nixos/index.html index bf6da489..800f804b 100644 --- a/tags/nixos/index.html +++ b/tags/nixos/index.html @@ -1,5 +1,5 @@ NixOS - lavafroth -

A Tale of a Frugal Home Server


NixOS +

A Tale of a Frugal Home Server


NixOS Home Server Automation Jellyfin diff --git a/tags/nixos/index.xml b/tags/nixos/index.xml index 162fba2b..83de5561 100644 --- a/tags/nixos/index.xml +++ b/tags/nixos/index.xml @@ -1,7 +1,4 @@ -NixOS on lavafrothhttps://lavafroth.is-a.dev/tags/nixos/Recent content in NixOS on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<blockquote> -<p>Note: This post is a draft</p> -</blockquote> -<p>Having run an on-premise server for the past two years, I think my setup has finally +NixOS on lavafrothhttps://lavafroth.is-a.dev/tags/nixos/Recent content in NixOS on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<p>Having run an on-premise server for the past two years, I think my setup has finally matured enough to be worth talking about.</p> <p>At any point, you can check out the source code for the server&rsquo;s infrastructure <a href="https://github.com/lavafroth/dotfiles/tree/main/hosts/rahu">here</a> for a concrete example. For each service I talk about, I will also link the respective definitions in my config.</p> diff --git a/tags/photoprism/index.html b/tags/photoprism/index.html index 6e9dd8f8..2f72c278 100644 --- a/tags/photoprism/index.html +++ b/tags/photoprism/index.html @@ -1,5 +1,5 @@ Photoprism - lavafroth -

A Tale of a Frugal Home Server


NixOS +

A Tale of a Frugal Home Server


NixOS Home Server Automation Jellyfin diff --git a/tags/photoprism/index.xml b/tags/photoprism/index.xml index af4563b9..9f39d63a 100644 --- a/tags/photoprism/index.xml +++ b/tags/photoprism/index.xml @@ -1,7 +1,4 @@ -Photoprism on lavafrothhttps://lavafroth.is-a.dev/tags/photoprism/Recent content in Photoprism on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<blockquote> -<p>Note: This post is a draft</p> -</blockquote> -<p>Having run an on-premise server for the past two years, I think my setup has finally +Photoprism on lavafrothhttps://lavafroth.is-a.dev/tags/photoprism/Recent content in Photoprism on lavafrothHugoen-usSat, 04 Jan 2025 10:04:37 +0530A Tale of a Frugal Home Serverhttps://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/<p>Having run an on-premise server for the past two years, I think my setup has finally matured enough to be worth talking about.</p> <p>At any point, you can check out the source code for the server&rsquo;s infrastructure <a href="https://github.com/lavafroth/dotfiles/tree/main/hosts/rahu">here</a> for a concrete example. For each service I talk about, I will also link the respective definitions in my config.</p>