Homelab Adventures
banner
index.homelab.turriff.net.ap.brid.gy
Homelab Adventures
@index.homelab.turriff.net.ap.brid.gy
Setting up and running a home lab server

🌉 bridged from ⁂ https://homelab.turriff.net/, follow @ap.brid.gy to interact
Aside - Garuda Linux
This post is by request - some folks in my life wanting a write-up on the Linux distribution I use, and why. So, I shall praise the benefits of Garuda Linux for a bit. It's based on Arch Linux, a fairly light-weight, extensively customizable distribution, and fits my needs for a daily driver well enough. Garuda serves my needs for both a productivity and entertainment platform, with various tools and applications available: * Gaming * Steam for Linux - my preferred platform, and I would suggest using it as runtime even if you do not own games on it. The automated handling of Wine environments is an absolute killer application. HDR gaming is theoretically supported, but I have not had the motivation, time or inclination to make it work. Given how most of what I play these days, with the exception of Legend of Heroes, tends towards the highly abstracted strategy gaming, I have not needed the functionality. Not much call for eye candy in those games. * Heroic Game Launcher - Alternative client for Epic Games, GoG and Amazon Games. I mostly use it as front-end to download games from those stores and import them into Steam as external games - like I said, the integration there is so much better * Open source games - realistically, the works. I am partial to FreeCiv, but there's a lot out there. * Productivity * LibreOffice - rather comprehensive MS Office replacement * GIMP - Raster image manipulation. The open source answer to Adobe Photoshop. Not being artistically inclined, I mostly use it for its advanced image scaling capabilities. * Inkscape - Vector graphics tool. Not something I personally use, but the requestor might be interested * TexLive distribution - Typesetting software. Primarily used for scientific literature, but has templates for all sorts of things. * VSCodim - Software development IDE. * Communication * Clients for most of the common social and communications platforms * Video editing * OBS - video capture and streaming platform * Numrous tools in that field, notably things like Blender * Multimedia * VLC - all-in-one media player platform * Kodi - Entertainment hub And more... I am fairly certain I only scratched the surface here. For me, it serves as management platform for my in-house network, development environemnt for assorted side/hobby projects, and gaming center. Installation is simple enough - download the desired edition, write the image to a USB stick, and boot from it. A few caveats and notes here, however: * Garuda, and more broadly, Arch Linux, do not natively play nice with Secure Boot. Probably easiest to disable that in the system firmware, There's a bunch of utilities to make it cooperate better, but that's out of scope here. * I personally have a fondness for Ventoy to maintain a multi-boot thumbdrive with images for Arch Linux (bare), Garuda Linux, FreeBSD, Memtest86+ and a few others I find handy to have. Using Rufus might be easier if all you need is a one-shot USB stick to install a new OS. * I would shy away from Dragonized Gaming - it contains an incredible amount of STUFF you may or may not need, and the visual design is bold. My personal preference is to start from something leaner and add what I need, rather than needing to figure out what all is present. * I am a KDE guy. I would suggest using Mokka or Dragonized (non-gaming) as base install. Cosmic is promising, but alpha quality software, and I haven't experimented with it much. System maintenance: I'm a command line guy, I admit it. My idea of installing a new package is # paru -S <package name> Garuda uses Octopi for graphical package / software management. Speaking entirely without judgment, the best I can say about it is "it exists, and seems to work" - this is not a condemnation, simply a recognition that I personally do not use it.
homelab.turriff.net
December 13, 2025 at 6:17 PM
Infrastructure - FreeBSD Buildbox
This may not be necessary for everyone, but my goal is to run my jails as minimally as possible: no userland, no root, minimal dependencies. This means that a lot of things will need to be manually built - and in so far as possible, I am aiming for reproducible builds. This means a controlled build environment, ideally down to the compiler flags and package options. This build environment will be a standard base FreeBSD install - there's a ton of tutorials out there for how to install such a system. There is a chicken-and-egg problem here in that maintaining a source and ports tree practically requires git, but git is not part of the base. Circumventing that is easiest by installing the ports and src components of the base system. We'll get there. The nature of a build box dictates that you will need a fair amount of RAM and hard disk space - on my box, I currently have 6.3 GByte in assorted built packages, 1 GByte for the compiled FreeBSD source code, and quite a bit of free space to hold the files while building things. Finally, I recommend using compatible sub-architectures for build box and your final host. In my case, and in all the following instructions, that is assumed to be "x86-64-v3". With all that said, I am going to assume there is a VM dedicated as build system, and you have installed and configured the FreeBSD base system - at time of this writing, 14.3p6. I know, 15.0 is out, but there's something going on with that release I haven't run down yet. So, stick with the 14.x releases for now. Without further configuration, the Ports tree builds as root - one more reason for the dedicated (and disposable!) build box. So, since so far, there is nothing set up, log in as root to your shiny new builder. As said earlier, you'll want git. So, after logging as root, run make -C /usr/ports/devel/git FLAVOR=tiny all install clean If everything goes right (on a naked system, it should), that will get you a git client. Probably an old-ish version, but that's fine for now. Next, you'll want to grab poudriere. It's a build tool for FreeBSD ports, and takes care of all the annoying details like jail management for building. make -C /usr/ports/ports-mgmt/poudriere all install clean Poudriere needs some setup to function. You'll need - and quite possibly want - a number of options set in /usr/local/etc/poudriere.conf: #Storage for jails, log files and build packages ZPOOL=<your storage pool> ZROOTFS=<root dataset for Poudriere> BASEFS=<mount point for Poudriere's root dataset> #Building in a tmpfs (RAM disk) can speed things up, but watch large packages USE_TMPFS=yes #My suggestion. You might find you need to add others. TMPFS_BLACKLISE="llvm* rust gcc*" #Source code needs to be downloaded somewhere DISTFILES_CACHE=${BASEFS}/data/cache/distfiles #This shouldn't be required, but I feel it's a good idea. #Terminates a compile if a dependency does not exist BAD_PKGNAME_DEPS_ARE_FATAL=yes #Build in parallel PARALLEL_JOBS=<number of jobs. I have mine at 1/2 the number of CPU cores> ALLOW_MAKE_JOBS=yes #Hostname of the build box BUILDER_HOSTNAME=<set to whatever> #Do not build these in parallel. This is currently only on the devel branch MUTUALLY_EXCLUSIVE_BUILD_PACKAGES="llvm* rust* gcc* node*" In the next chapter, we'll start building actual packages.
homelab.turriff.net
December 3, 2025 at 9:56 PM