2026 Mar 16 - Graphics drivers, Networking, and Comments
Home server shenanigans, personal site updates, and new project!
Published: 3/16/2026 | Updated: 4/4/2026
Tags: update, blog, website, server, programming
Home server shenanigans
I was very excited to get my new server set up this week, but I ran into one problem after another, and now I have to wait for a new router to arrive.
Installing Ubuntu has always been a breeze in the past, but this time I had problems. Everything went as usual at first. I installed the live server ISO on a flash drive with Rufus and it showed up in the boot menu, but when I triggered the installation it started spamming USB file path requests and could not find the installation media anymore.
I thought list of device interfaces might be messed up because of the windows installation that was present, so I wiped the drive and tried again, but I still had the same issue. Eventually, after trying to find info online about it, I noticed the install process had timed out and given me the option to download the ISO and do an internet install. Installing directly from the internet worked, so I have no idea what the original issue was, but I finally had Ubuntu installed.
Drivers
The next step was to get my old GTX 960 installed so I could use hardware
accelerated transcoding, but all my server programs are going to run in Docker
containers, so I needed to install the Nvidia container toolkit drivers. One would think
that you just have to follow the instruction in the
documentation, but it’s very confusing.
The docs say to install the device drivers first, with a link that leads to the CUDA driver installation instructions. So I installed the CUDA drivers and promptly ran into the brick wall that is secure boot and setting up MOKs (machine owner keys). After seven or eight reboot cycles I finally figured out how to add my MOK properly, but in succeeding in installing the CUDA drivers I broke the display pipeline.
I could not get video output with the graphics card installed from either the card OR the motherboard. Then ensued another round of debugging and research during which I learned that you have to install the regular (non CUDA) drivers to get ANY of this to work, but since the CUDA drivers were already installed the regular driver installation crashed every time I tried it.
So I wiped everything and started over. This time I just disabled secure boot to avoid the key issues. No one will have physical access to the device and I’m not important enough to warrant the expense of a boot kit if the server ever gets compromised, so it’s not a big risk to go without it. This time through the installation things went much smoother, and I didn’t end up needing the CUDA drivers after all, because those get bundled in the containers. Ubuntu doesn’t need the graphics card at all.
Networking
As I mentioned last week, I’ve been putting together a collection of services in docker containers for self hosting. All of those will be behind a Traefik container that will act as a reverse proxy and manage SSL certificates.
This makes it easier to handle certs, and allows routing subdomains to different services, but since the certs are for my custom domain I can’t access any of the services on the local network. The domain resolves to my public IP address, which causes hairpinning when the traffic on the local network gets redirected back where it came from.
I plan to use PiHole to set up local DNS resolution and force internal traffic to resolve my domain to the local IP address of my home server. This is usually pretty straightforward to implement; just set the router’s DNS server to the PiHole. However, the router I have from Spectrum forces all IPv6 traffic through their DNS, and I have not been able to confirm whether the IPv4 DNS redirect even works.
In the end my only real option was to order a new router. I bought a mid-range Asus router for 90 bucks, and it will hopefully arrive this coming week. I’m looking forward to sharing all the cool stuff I can run once the network is set up!
Comments on Blog Posts
When you get to the bottom of this post you will see a new addition to my blog. You can comment now! One of the downsides of writing my site from the ground up is that I don’t get built in systems or plugins for comments and such that I would get on something like WordPress. Thankfully, the database I use for most of my web apps makes adding features like comments so easy its silly.
Except for SocialDB (see below), I have used Convex as the backend and DB for all of my recent web app projects. Convex is purpose built for reactive web applications, and it takes care of all the syncing out of the box, which means your UI automatically updates when the database updates without you having to implement any of that logic.
The other thing I love about Convex is that ALL of the configuration can be managed in the repo and command line. This makes working with AI much easier, especially when trying to track down annoying bugs. Not needing to dig through some arcane web dashboard is very nice.
I didn’t want to deal with setting up an auth provider, so the comment system uses a very basic claimed alias system with WebCrypto password hashing for now. If spam becomes an issue I might do a full auth system, but for now the system will just shut down completely if there’s too much spam.
I also add a chat page hooked to the same alias system. Just today I set up a Discord webhook to notify me when someone messages or comments, so from now on I will hopefully get notified.
SocialDB
Last but not least, I started a new project! I struggle to remember too many names when I’m networking, and I sometimes lose track friends who live a long way away, so I’ve wanted some sort of personal CRM for years (my friends from freshman year of college can attest to the “years” part).
I’ve looked, but I haven’t been able to find a solution I like. I am leery of posting too much personal information of other people on some random platform, and I’m notoriously picky about UI and UX. Monica is a good candidate and comes quite close to what I need: self hosting, reminders, lots of custom fields, etc. I don’t like the UI, though, and I want a platform more focused on unstructured data and that supports vector search.
I give you SocialDB:
...
Yeah, there’s no UI to speak of yet, I started it three days ago. I did get the database system setup though! I’m using postgres with pgvector and Drizzle for an ORM. I’m also probably going to include Minio for photo storage. I plan to provide the entire thing in a single docker compose file for easy self hosting, and detailed instructions on setting it up on distributed architecture as well.
I plan to make the entire thing open source once there’s something there, and I don’t plan to launch it commercially. I might launch a hosted version on a subscription service if there’s demand, but I’m more focused on other things right now.
Comments
Loading comments…
I use cookies to prevent spam. To comment, please enable cookies.