When I built my new PC last year, I resolved to turn my old machine into a home server. I sort of knew the general shape that I wanted that project to take at the time, but I ended up putting it off for a whole year because we’re so busy with our kids. Hey! Have kids before you’re 40 and tired all the time.
Anyway, I *finally* got to spin that thing up a couple weeks ago and it’s finally starting to come together. It’s nothing super impressive, I’m not self-hosting my entire productivity cloud or anything. I’m going to add a couple of media servers to the mix later, but storage is sort of comically expensive right now and it feels a little silly to spend $600 filling out a DAS RAID.
So what *do* I have cooking in there?
Ubuntu Server
Yes, I’m using Baby’s First Linux for Baby’s First Server. What can I say, it’s what I’m used to. I used to dual-boot Ubuntu Studio in college to make it easier to turn in my computer science projects. There’s nothing fancy here, I’ve installed Gnome so that I can RDP in from my main PC for things that I don’t want to just do in the shell. I’ve set up Samba- there’s one general share for swapping files back and forth with the PC, and another share that I’ll get into below. There’s Docker chugging along in the background, and nginx web server directing traffic. I’m running a global MariaDB instance for the web services to use. I’ve set up certbot to maintain Let’s Encrypt certificates for my domain (not this one!)
Web Services
My ISP is pretty cool. It’s fiber and it’s like half the cost of the local Spectrum service for way better speed and quality in both directions. On top of that, they only charge an extra $10 for a static IP, which is a steal, so I get to set up some things that I can access from outside the house without having to remote into my PC.
Pelican.dev
Somebody is going to want to chastise me for installing this into a /var/www subdirectory instead of a docker container, but Wings needs to be an OS daemon anyway so don’t @ me.
Pelican.dev is pretty neat. It’s a browser-based control panel for installing and managing dedicated game servers as Docker containers. It uses Wings as its agent in the OS for issuing those commands, and provides you, the admin, with a clean and simple UI for it all. You even get a console for the server container right there in the browser, so you can issue commands while you’re away.
Grocy
If you weren’t sure I’m boring, wait until you find out the whole reason I decided I wanted this homelab was Grocy. My wife and I have always used a shared Google Keep note for our groceries, but one day I saw Grocy and thought, “What if I go even further beyond?”
Grocy can import grocery item data from Open Food Facts when you scan the barcode, and lets you maintain a beautiful color-coded grocery list that can be sorted by aisle/section, but that’s not all it does. Grocy is an increasingly fully-featured ERP for management of your entire household. You can use it to keep inventory of your fridge and pantry, and add things automatically to the grocery list as they run out. If you’re diligent about your data entry, Grocy can send you an alert when something is about to expire. It can track chores, it can track the last time you changed the batteries in your smoke detectors. It seems sort of indispensable for somebody like me who can’t remember when I last changed my furnace filter.
Dedicated Game Servers
Minecraft
Folks, it’s been a few years since I messed with Minecraft, but something feels sort of Correct about hosting a dedicated server that one day my kids can use. Or they can certainly try to, because I have chosen to run a modpack that is for engineers.
I was intrigued when I saw the trailer for Create, and my interest was fully solidified when I watched a tutorial about how to hook Create’s modular machine parts up to a fully-functioning water wheel to power a small factory.
Listen: it’s neat. Create’s core ethos is something like: machinery that operates in an analog fashion, exposed via animation. A lot of minecraft mods for automation and mechanization are sort of like, everything takes place inside of pipes and boxes. Sometimes there’s conveyor belts. Everything in Create is out there, acting on physical entities in the world. Do you have an automatic press? You aren’t putting ingots into an inventory, and seeing them transfer to a different inventory as flat sheets. You’re dropping a stack of ingots from your hand onto a depot below the press, and when that hammer comes down it’s turning into a sheet you can pick back up. Or, ideally, you’re having a conveyor belt deliver an endless stream of ingots into your press for expedient flattening. Now extrapolate that to everything. When you request a stack of items from your gigantic storage vault, it is being packed into a cardboard box and sent on its way through a network of belts and tubes of your own design, filtered and directed to the address of the terminal you requested it from. Also there’s trains that you set up like Transport Tycoon and work even across unloaded chunks.
Anyway, I’m a minecraft maximalist who cut his teeth on stuff like Tekkit and Attack of the B-Team, so of course the core of my setup is All of Create, which is a huge modpack containing Create and a ton of add-ons for it. On top of that, I added The Factory Must Grow, which adds more types of petroleum refining and liquid fuel engines to Create, Ars Nouveau for people who want to make things even more complicated by layering on a magic system, Computercraft Tweaked, which is strongly integrated in Create, and Sophisticated Storage for people who don’t want to have to participate in an elaborate mechanical postal service.
At this point, this article has sat in my drafts for so long that I’ve added Create Aeronautics to the mix, which lets you make fully physics-enabled contraptions that can drive or fly, as well as realistic rope suspension bridges and all kinds of other crazy stuff.
The Emulation Vault
Folks, I’ve got a lot of ROMs across a lot of categories. All above board, surely, I’ve bought a lot of games in my life. The collection can start getting very large as it decompresses. It’s not sensible to just keep copying it to every computer I buy. Some devices, sure. The portable ones should have their own local collections. But I don’t need to have all those files on my PC, or on any hypothetical mini PC that I might be trying to cook into a homebrew console. I’ve added a ROMs folder in the server to the Samba shares, and now I can map it as a network drive and tell Retroarch to look for its ROMs in there. If I set up my permissions right, I can also get it so different users can access their own subdirectories for saves.
But anyway, that’s the idea. Then I can spin up a VM on my main PC with Batocera, link to the Samba share in there, and have a nice little emulation “interface “console” in my PC that I can pop open whenever. I can do the same thing on other devices that I want to have access to the collection. If I’m feeling nasty, I can experiment with using a VPN to let my portable devices access it from outside.
Future Considerations
I think a whole media server is overkill, and also I don’t have the storage for it. Is Jellyfin cool as hell? Yes. And I’m sure I’ll elaborate in a future article, but I think I had a mini-midlife crisis about media ownership and I started buying blu-rays and CDs again even though my old collection from y2k times is long gone.
That said, as you may know I did buy an mp3 player, and the PC that was hosting my Media Monkey server was wiped to become this linux homelab. So I do plan to look into a decent host for my mp3s. And hey, who knows. Maybe I’ll come around on the media server thing later. The movie collection grows steadily and there’s a couple of anime series in there, too. Mind you, I’d have to start looking into some kind of USB blu-ray drive, which seems like its own can of worms, not to mention the cost of storage.



Leave a Reply