I let Claude Code run my weekend
A Linux server, a Jellyfin stack, smart blinds, a washing machine API, and a movie curator — all set up with AI pair programming over 48 hours.
This weekend I sat down to migrate an old Windows gaming PC into a Linux home server. By Sunday night I had a fully automated media pipeline, smart home automations, a movie curation engine, and a blog you’re reading right now — all built with Claude Code as my co-pilot.
Here’s what actually happened.
The server
The box is an Intel i5-6500 with 16GB RAM and an RTX 3080 I pulled from my old gaming rig. I put Ubuntu Server 24.04 on it and started talking to Claude.
SSH hardening, UFW rules, fail2ban, unattended upgrades, NVIDIA drivers, CUDA, Docker with nvidia-container-toolkit — all configured through conversation. Not copy-pasting from DigitalOcean guides. Just describing what I wanted and letting Claude write the configs, run the commands, and verify the results.
The server lives on my Tailscale network at 100.69.7.65, alongside a Synology DS224+ NAS with 14TB of storage mounted over SMB.
The media stack
This is where it got fun. I told Claude I wanted a complete media automation setup and we built out a Docker Compose stack:
- Jellyfin on port 8096 with NVENC hardware transcoding via the 3080
- SABnzbd pulling from Newshosting (SSL, 30 connections)
- Sonarr + Radarr for TV and movie automation
- Prowlarr managing NZBGeek as the indexer
- Jellyseerr as a request frontend connected to everything
- Bazarr for subtitles (Podnapisi, Supersubtitles, YIFY, embedded subs)
The entire pipeline — NZBGeek → Prowlarr → Sonarr/Radarr → SABnzbd → NAS → Jellyfin — was wired up in one session. Claude handled the API keys, the Docker networking, the volume mounts, all of it.
I also set up dual-audio custom formats for anime (My Hero Academia, all 9 seasons plus the movies) because I’m that person.
The movie curator
This one was a proper software project. I wanted something that would automatically find non-mainstream movies I’d actually want to watch — not algorithmic trending garbage, but world cinema, Indian films, Korean stuff, festival picks.
Claude built a Python project (Poetry, proper src layout) that:
- Pulls from TMDB with filters for Indian cinema, underrated gems, and festival films
- Scores everything using Bayesian averaging (C=7.5, m=300) — rewards quality without rewarding popularity
- Auto-adds the top 50 picks to Radarr
- Serves an RSS feed on port 8888
- Runs daily at 3am via a systemd timer
We started with Letterboxd as a social source, pulling recommendations from film critics I follow. That broke — Letterboxd started returning 403s on everything except watchlists. Mid-session, Claude suggested switching to Trakt.tv (free, open API, no scraping). We rewired the whole thing without losing momentum.
Home Assistant and smart home
Home Assistant runs as another Docker container on the same box. Over the weekend we set up:
Kasa KL125 smart bulbs (x4, all on the porch):
- Sunset + 30 min: lights on, warm white
- Every 20 minutes: cycle through 9 curated colors with smooth transitions
- 11pm: wind down to dim
- Sunrise - 30 min: off
We hit a wall here — the KL125s don’t support the tplink.random_effect or tplink.sequence_effect services (those are Tapo-only). Claude figured this out after debugging the API calls and pivoted to timed automations with transition parameters instead.
SmartWings motorized roller blinds (x2, Matter/Thread):
- These were the trickiest part. BLE commissioning from a Docker container doesn’t work
- The workaround: commission via Apple Home first, then share to Home Assistant via Matter multi-admin through the Eero mesh’s Thread border router
- Automations: sunrise + 15 min → open, noon → half close (50%), sunset - 15 min → close
Miele washing machine + dryer: Registered an app on developer.miele.com to get API access. The developer portal was down most of the weekend, so this one’s still pending. The goal is laundry notifications and cycle tracking in HA.
We also set up a service dashboard served by Caddy at http://kidd0-server — a single page with links to every service.
What Claude Code actually did
I want to be specific about this because “I used AI” is vague to the point of being useless.
Claude Code didn’t just answer questions. It:
- Wrote and ran shell commands directly on the server over SSH
- Edited config files — docker-compose.yml, nginx configs, systemd units, Home Assistant YAML
- Debugged live issues — when the Letterboxd scraper broke, it read the error, diagnosed the 403, and proposed the Trakt migration in the same breath
- Made architectural decisions — Poetry over venv, Bayesian scoring over simple averages, Matter multi-admin over direct BLE commissioning
- Iterated on failures — the Kasa bulb effect APIs failing, the Docker BLE limitations, the NAS mount permissions
It wasn’t “generate code, paste, pray.” It was a continuous back-and-forth where I described intent and Claude handled implementation, hitting real problems and working through them.
The numbers
Over ~48 hours (Friday evening to Sunday night):
- 1 Linux server fully provisioned and hardened
- 9 Docker services running and interconnected
- 1 Python project with TMDB + Trakt integration
- 50 curated movies added to the library
- 4 smart bulbs with color automation
- 2 motorized blinds with sun-tracking schedules
- 1 blog you’re reading right now
I don’t think I could have done all of this in a weekend without AI. Maybe the server and Jellyfin — I’ve done that before. But the curator, the home automation debugging, the Matter commissioning workaround, wiring it all together? That’s a week of evenings, minimum.
What’s next
- Get the Miele API key and wire up laundry notifications
- Set up OpenClaw (AI automation framework — the original reason I built the server)
- Upgrade the RAM to 64GB for running local models
- Write more about specific pieces of this setup in detail
If you want to try something similar, just start talking to Claude Code. Don’t plan it out. Just describe what you want and start building. That’s what I did Friday night, and here we are.