A month of upgrades to the homelab
It has been a minute since I’ve written here, mostly due to a poor start to our landscape contracting season. I’ve been focused on closing more business and balancing our spending through the slow start.
March is also a busy time of year for us, with many birthdays.
However, I’ve also been working on a few additions to my homelab. Most of it has been born out of my experience with the Chromebook.
ChromeOS papercuts
I don’t want this to come off as I don’t like my Chromebook. I love it and carry it with me everywhere.
But…
The Linux and Android environments leave a lot to be desired. I think it is a fine development environment or for testing various apps or services. I originally wanted to use it so I could run a few different Linux desktop and Android apps to fill in some gaps around ChromeOS. However, apps running in these sandboxes are not reliable. Especially when trying to run something in the background.
Background app issues
For example, I use Syncthing to keep my personal files on all my machines. Then, I use Obsidian for my notes. On ChromeOS, I use the Syncthing-fork Android app for keeping the files in sync. But, there is no way to automate it starting on boot. So, every time I rebooted the Chromebook, I have to manually start Syncthing-fork. You’d think this wouldn’t be a problem, but ChromeOS restarts constantly.
About once a day, ChromeOS doesn’t come back from sleep and just reboots. Other times its the virtual environments for Linux or Android that makes it so I have to reboot. Each time I have to wait for the Android VM to start and then start Syncthing-fork.
Then I have to restart the Linux environment, wait for that to boot, and then I can finally open Linux desktop applications.
Imagine doing this 1-3 times a day.
Accessing files across environments
It is also a pain to deal with local files at times. Since Synthing-fork is in the Android environment, I have to explicitly share it with the Linux VM. In fact, I have to do this with every directory I want the Linux VM to have access to. Its a pain in the ass.
It gets confusing as well. Which folder is available in which environment?
Another example: I download a file in the Chrome browser in ChromeOS, but want to edit with a text editor in Linux. Did I share the Downloads folder with Linux? Do I need to manually copy the folder over to the Linux VM? Should I just wget the file?
Homelab fixes the problems
Rather than search for apps that best fit my setup or find constant workarounds, I decided to add a few things to my homelab server that will fix this not just for the Chromebook, but all of my devices. I don’t want to rely on installing the same apps on every device. Instead I can leverage the homelab to make web apps, which is what the Chromebook is all about anyway. But instead of commercial options, I can self-host everything.
This is what I’ve added to my homelab recently.
Notes - Silverbullet
This was the hardest one, but I’m happy with my solution. I am an avid note-taker and having a comfortable place to take notes is critical in my life. This is more than just having issues running Obsidian on the Chromebook.
I realized that Obsidian is essentially an entire operating system, with countless power utilities, addons, and customizations that make it so you can literally live your entire life inside of it. That’s not how I use it. I only write notes in markdown, organize in folders, and use search. I use about 1% of what Obsidian is capable of doing and have no desire to expand my usage.
I am also moving away from apps that have a cloud option. Obsidian doesn’t require you to use their syncing service, which is great. But, the app can be slow to open because it checks to see if you do use their sync service. I don’t need to use an app that pings home every time I open it.
So, I nervously moved away from Obsidian and started looking at my options. I eventually settled on Silverbullet. I chose it for these reasons:
- Easy to self-host and long-term maintainence is minimal. I, of course, went with the docker installation.
- No complicated database requirement. Flat out, I’m not running
postgresqlormysqlor similar. - Flat markdown files stored in directories. It doesn’t rename the files or adjust them in any way. In the end, I just have a web frontend for my markdown notes.
- Quality web app that works on desktop and mobile.
So far, I’m happy with my decision to use Silverbullet. The web frontend is good and works great on mobile. Since I use Tailscale, my notes are available anywhere I have an internet connection. In the times I don’t, Silverbullet can sync files locally. Works like a charm.
Text editing - VSCode code-server
Another papercut with ChromeOS is editing files. There’s a very basic text editor built-in, but not a good option. I can get many great text editors in Linux, but the file access thing is a hinderance.
Having a consistent editor has been becoming a greater need on my other devices, too. I spent a lot of time with other editors including Etherpad, Rustpad, Dumbpad, and Ghostboard.
These were my requirements while I was researching options: Reqs match:
- Import/upload documents in browser UI
- Text highlighting
- Download files
- Access same file from other devices
- No database
So, I decided to setup a VSCode code-server.
Although this setup is much more resource intensive than the options I researched, it actually checks all of the boxes for my reqs, plus a few extras that are nice-to-haves. Now I can have a full editor on my Chromebook, while also having network shares mounted to access all of my files and servers, plus the same setup on all my devices.
Homelab management - Portainer
I run Cockpit on my homelab and on my NAS so I can manage them from a browser. This was part of an earlier project, when I was using my phone as a laptop replacement. The key point was I wanted the ability to manage my server from any machine. Cockpit gives me access to it, plus the console, and I can manage network shares and virtual machines.
The component that was missing is managing Docker containers. To solve this, I setup Portainer. Combined with Cockpit, I can now fully manage my servers from any browser in the house. This is less about hopping onto one of the kids computers to manage my server and more about my constant rotation of devices.
I am constantly changing my desktop or running a new laptop because I give my devices away so frequently. If a family member or friend finds themselves without a computer, I happily set them up with one of mine and then I find some other random device to use until I get it back. Having literally everyting in the browser makes my life so much easier. All I need is a browser on any device I am using.
Terminal tooling - HiSHtory
Because I bounce around so many devices, I’ve been eyeing a tool for syncing my fish shell history easily between them. I thought about running Atuin, but I don’t want to use their hosted version and the self-hosted has a postgres requirement 🤮.
This lead me to HiSHtory, which is similar to Atuin, but can use a sqlite database. I know, I can hear people screaming about performance and sqlite. But, hear me out.
One, this is a single user instance. Two, I don’t want to run yet another container for a database. Three, sqlite is more than capable for my requirements.
I spent some time today setting up the LSIO version of HiSHtory and got it running on three devices, plus the self-hosted server, in about a half hour. Its a nice upgrade to my terminal experience.
Up next
I’m trying to get back into the habit of writing here. I actually miss it and I wish I wasn’t so tied up in life that takes away from publishing more. But, it is what it is.
We are close to the start of gardening season here in the Puget Sound region, which is another avid hobby of mine. I hope to get some time coming up to write about the garden, the absolutely ridiculous upgrades I’ve been doing to my desktop PC (think repurposed huge, green Alienware case), and writing more about my business and the jobs we do. We have a big one coming up for another avid gardener that is going to be a lot of fun.
Bye, pals.
- - - - -
Did you like this post? Give it an upvote by clicking on the arrows below! Sending me an upvote is like you and I giving each other a high five.
🙏 😎
Thank you for reading! If you would like to comment on this post you can start a conversation on the Fediverse. Message me on Mastodon at @cinimodev@masto.ctms.me. Or, you may email me at blog.discourse904@8alias.com. This is an intentionally masked email address that will be forwarded to the correct inbox.If you enjoy the random stuff I write here, post to Mastodon, or watch on YouTube, and are feeling generous, I am open to tips of Ko-fi.