A few months ago I started a pro subscription to Claude in an effort to learn how to use generative AI. I wanted to understand what it could and couldn’t do well. In this post I will cover a few of the ways I have found to use Claude and generative AI in general. The vast majority of the time I interact with Claude.ai using the desktop app and I leverage plain Chat, Cowork and Code. These are quick and simple examples and not an exhaustive description of how I am using it. My use of AI is centered mostly around “technology” rather than spreadsheets, email or other use cases you routinely see advertised. Being honest, I find AI to be less ideal for those use cases as of today but I also don’t try, your mileage may vary.

If your understanding of what AI can do is based solely what “Apple Intelligence” or from the abundant horror stories you find on the web, I encourage you to consider more full feature solutions like OpenAI’s ChatGPT and related systems or Anthropic’s Claude. These are far more capable AI solutions that, while they may not tie into your data the way Apple Intelligence [poorly] does, are capable of a lot more.

Chat

Claude has nearly completely replaced my use of search engines for most operations that might require reading multiple pages to get an answer. Claude’s ability to take in information, dedupe and summarize it based on what I’m really looking for in a matter of seconds removes a lot of friction and helps answer questions quicker. A recent example of how to utilize Claude was to find parts for my mower. I know that while it is branded “Craftsman” it is actually sold under multiple names and tracing this back can be difficult. Giving Claude the make and model number and asking it to find the correct replacement rear wheels gave me the exact part numbers for various makes as well as the fact the part number mentioned in the owners manual has been superseded with an improved design. Doing this myself would have taken significantly longer.

Through various connectors, capabilities and MCP servers, Claude also helps me to:

  • manage my music collection as well as find new music based on my purchases and listening habits
  • help get unstuck in a game I am playing while avoiding spoilers
  • find and resolve banking discrepancies
  • manage my home lab inventory
  • much more

All of this is done using plain language to tell Claude what I want and it takes care of it. When it is unsure of how to proceed it asks.

Chat is also where I typically work with Claude to help debug issues I run into which can range from simply asking it questions about the best way to get a stain out of something to pasting in large log files to pin point a root cause.

Cowork

To be honest, the distinction between Chat and Cowork in Claude is a bit loose to me as there is a lot of overlap between what each can do. The difference in Cowork is it shows you a plan and you can schedule the tasks to be run periodically. That said, I have largely handed management of my entire home lab over to Cowork. My home lab consists of multiple Proxmox instances running various VMs and a k3s based Kubernetes cluster. I described to Claude Cowork how to access all resources, the location of my FluxCD repository and put it in charge of managing software versions, resolving issues and so on. Claude examines the software that is installed, checks for updated versions, validates the configuration has changed and ensures software upgrades cleanly. If there is an issue where it can rollback it does, if it can’t it alerts me through email of any potential or current issues it can’t cleanly resolve. Claude also has access to my Cloudflare account for Zero Trust and DNS management meaning I can add software using plain language. I describe to Claude what new software I want to add, it adds it to the FluxCD project and configures ingress through Cloudflare.

Code

Code behaves differently from the other two parts in a meaningful way. It has more direct file and remote system access meaning it doesn’t have as strict of requirements for accessing files on the local system or accessing remote systems through ssh. I have used Code extensively to update plugins/themes on this site, resolve font loading issues and more.

I have also used Claude Code to create a few projects including:

  • Raspberry Pi based streaming music player that can stream my music from Plex but give me physical controls like an old CD player.
  • Port my old ControlPlane app from Objective-C to Swift and modernize it.
  • Various small utility apps like a daemon for Linux that sets the RGB lights on my otherwise unsupported keyboard to white and a tone generator for testing audio equipment.

In General

Overall, Claude has proven to be well worth the monthly subscription cost and is not something I want to give up. While I can do a lot of what it can, it can do it more quickly and a lot of the times more accurately than me. It makes mistakes the same way I could and I can guide or redirect it as required. Allowing Claude to manage my home lab frees me from doing more tedious work and gives me time back.

Claude and AI in general can certainly make mistakes. You do still need to validate information it gives you and be aware that, like people, it can get confused and be confidently incorrect. While doing some vehicle research I found that Claude would repeatedly bring in details from a previous model of a vehicle I was looking at. I had to be very specific about the exact year and model name I was looking for and ask it to find sources. This has happened less as models improve but I have also learned how to better prompt the AI for what I am looking for.

In a future post I will dig a bit deeper into how I prompt Claude and ensure it is doing what I want with guardrails in place to stay as safe as I can while still getting real work done.

This post is really a small collection of thoughts about Proxmox when used in a home lab situation and home labs in general. I was originally going to post this to Mastodon only but it didn’t fit in a single post.

A lot of people (at least what I see on reddit) build Proxmox systems with shared file systems like ceph, even for home lab use. While I understand what shared file systems can do they also have steeper HW requirements and honestly the benefits are rather limited. If your purpose for using shared file systems is to learn about them, then go for it as it is a great thing to understand. Outside of learning, I prefer and have had great luck with keeping things as simple as I can while still getting something that is useful and versatile. Additionally, I also avoid the use of ZFS because running it properly requires more memory, memory I’d prefer to give to my VMs.

For that reason, my Proxmox cluster consists of two systems with a Raspberry Pi acting as a qdevice for quorum. Each system has a single spinning drive for the Proxmox OS and then a single SSD for all of the VMs that live on that node. I then have another physical system providing network based shared storage for content like ISO files and backups, things that truly need to be shared between the Proxmox cluster nodes. This setup gives me a blend of excellent VM performance because the disks are local and speedy, shared file space where it matters for ISOs and backups while maintaining one of the best features of Proxmox, live migration. Yes, live migration of VMs is still possible even when the underlying file system is not shared between systems, it’s just a lot slower of a process because data must be transferred over the network during a migration.

One of the benefits of using a file system like ceph is that you can distribute files across your systems in the event a system or disk fails. You have some redundancy there but regardless of redundancy you still need to have actual backups. To cover for this, I have regular backups taken of important VMs and separate backup tasks specifically for databases. For anything that has files, like Plex or Nextcloud, that data comes from my TrueNAS system using a network file system like NFS or Samba. Again, local storage for speed and shared storage where it really matters.

This setup gives me a lot of the benefits without a ton of overhead which helps me keep costs down. Each Proxmox node, while clustered, still work more or less independently of each other. I can recover from issues by restoring a backup to either node or recover databases quickly and easily. I don’t ever have to debug shared file system issues and any file system issues I do face are localized to the affected node. In the event of a severe issue, recovery is simplified because I can remove the replace the bad drive and simply restore any affected VMs on that node. The HA features of Proxmox are very good and I encourage their use when it makes sense, but you can avoid their complexity and maintenance and still have a reliable home lab that is easy and straight forward to live with.

For nearly as long as I’ve been using Linux I have had some system on my home network that is acting as a server or test bed for various pieces of software or services. In the beginning this system might be my DHCP and NAT gateway, later it might be a file server but over the years I have almost always had some sort system running that acted as a server of some kind. These systems would often be configured using the same operating system that I was using in the workplace and running similar services where it made sense. This has always given me a way to practice upgrades, service configuration changes and just be as familiar with things as I possibly could.

As I’ve moved along in my career, the services I deal with have gotten more complex and what I want running at home as grown more complex to match. Although my home lab pales in comparison to what others have done I thought it would still be fun to go through what I have running.

Hardware

Like a lot of people, the majority of the hardware I’m running is older hardware that isn’t well suited for daily use. Some of the hardware is stuff I got free, some of it is hardware previously used to run Windows and so on. Unlike what seems to be most home lab enthusiasts, I like to keep things as basic as possible. If a consumer grade device is capable of delivering what I need at home then I will happily stick to that.

On the network side, my home is serviced with cable based Internet. This goes into an ISP provided Arris cable modem and immediately behind this is a Google WiFi access point. Nothing elaborate here, just a “basic” WiFi router handles all DHCP and NAT for my entire network and does a fine job with it. After the WiFi router is a Cisco 3560g 10/100/1000 switch. This sixteen year old managed switch does support a lot of useful features but most of my network is just sitting on VLAN 1 as I don’t have a lot of need for segmenting my network. Attached to the switch are two additional Google WiFi access points, numerous IoT devices, phones, laptops and the like.

Also attached to the switch are, of course, items that I consider part of the home lab. This includes a 2011 HP Compaq 8200 Elite Small Form Factor PC, an Intel i5-3470 based system built around 2012 and a Raspberry Pi 4. The HP system has a number of HDD and SSD drives, 24GB memory, a single gigabit ethernet port and hosts a number of virtual machines. The built Intel i5-3470 system has 16GB memory, a set of three 2TB HDDs and a single SSD for hosting the OS. The Pi4 is a 4GB model with an external SSD attached.

Operating Systems

Base operating system on the HP is Proxmox 7. This excellent operating system is best describe as being similar to VMware ESXi. It allows you to host as many Virtual Machines as your hardware will support, can be clustered and even migrate VMs between cluster nodes. Proxmox is definitely a happy medium between having a single system and being a full on cloud like OpenStack. I can effectively achieve a lot of a cloud stack would provide but with greater simplicity. Although I can create VMs and manually install operating systems, I have created a number of templates to make creating VMs quicker and easier. The code for building the templates is at https://github.com/dustinrue/proxmox-packer.

On the Intel i5-3470 based system is TrueNAS Core. This system acts as a Samba based file store for the entire home network including remote Apple Time Machine support, NFS for Proxmox and iSCSI for Kubernetes. TrueNAS Core is an excellent choice for creating a NAS. Although it is capable of more, I stick just to just the basic file serving functionality and don’t get into any of the extra plugins or services it can provide.

The Raspberry Pi 4 is running the 64bit version of Pi OS. Although it is a beta release it has proven to work well enough.

Software and Services

The Proxmox system hosts a number of virtual machines. These virtual machines provide:

Kubernetes

On top of Proxmox I also run k3s to provide Kubernetes. Kubernetes allows me to run software and test Helm charts that I’m working on. My Kubernetes cluster consists of a single amd64 based VM running on Proxmox and the Pi4 to give me a true arm64 node. In Kubernetes I have installed:

  • cert-manager for SSL certifications. This is configured against my DNS provider to validate certificates.
  • ingress-nginx for ingress. I do not deploy Traefik on k3s but prefer to use ingress-nginx. I’m more familiar with its configuration and have good luck with it.
  • democratic-csi for storage. This package is able to provide on demand storage for pods that ask for it using iSCSI to the TrueNAS system. It is able to automatically create new storage pools and share them using iSCSI.
  • gitlab-runner for Gitlab runner. This provides my Gitlab server with the ability to do CI/CD work.

I don’t currently use Kubernetes at home for anything other than short term testing of software and Helm charts. Of everything in my home lab Kubernetes is the most “lab” part of it where I do most of my development of Helm charts and do basic testing of software. Having a Pi4 in the cluster really helps with ensuring charts are targeting operating systems and architectures properly. It also helps me validate that Docker images I am building do work properly across different architectures.

Personal Workstation

My daily driver is currently an i7 Mac mini. This is, of course, running macOS and includes all of the usual tools and utilities I need. I detailed some time ago the software I use at https://dustinrue.com/2020/03/whats-on-my-computer-march-2020-edition/.

Finishing Up

As you can see, I have a fairly modest home lab setup but it provides me with exactly what I need to provide the services I actually use on a daily basis as well as provide a place to test software and try things out. Although there is a limited set of items I run continuously I can easily use this for testing more advanced setups if I need to.