Everything Wants a Second Life

Nothing has only one use until you decide it does.

If I Can't See It, I Don't Understand It

Nothing has only one use until you decide it does.

If I Have to Do It Twice, I Build a System

Nothing has only one use until you decide it does.

Think Inside the Box

Nothing has only one use until you decide it does.

Embrace the Mistake

Nothing has only one use until you decide it does.

Showing posts with label Docker. Show all posts
Showing posts with label Docker. Show all posts

Thursday, July 30, 2026

Beyond the Internet — Watching the Network

Networking · Infrastructure · Monitoring

Beyond the Internet — Watching the Network.

When I first started building my homelab, I wasn't trying to create a lab at all.

I was simply solving a problem for myself. Normally, I build things because a client asks for them. This time, I was the client. Well — the direct client, not the final one.

One service became two. Two became five. Then ten. Before I realized it, the homelab had grown into something that other people relied on every day.

And that changed everything about how I needed to think about it.

Sometimes the internet isn't the problem. Sometimes the network still has work to do — and nobody knows it until someone notices that the photos aren't syncing.

The Problem

The network might still appear online while something important is broken.

A while ago, I created a simple troubleshooting guide so anyone in the house could recover the internet if it went down. That solved one problem.

But the network is much more than internet access now. Today the homelab runs photo storage, a music server, a DNS filter, a firewall, a Cloudflare Tunnel, a service launcher, and an external management system for a client. Each of these services can fail independently — and when one does, the network might still appear "online" while an important part of it is actually broken.

That's when I realized I didn't need another troubleshooting guide. I needed visibility.

The Solution

One screen. Five services. Green or red.

I wanted anyone to be able to glance at a screen and immediately know whether everything was healthy, what service was down, and whether something needed attention. No commands. No SSH. No digging through logs.

Uptime Kuma — a self-hosted monitoring tool — runs in Docker on the NUC. It checks each service every 60 seconds and shows a simple status: up or down. That's all anyone needs to see.

Uptime Kuma showing all services green

Uptime Kuma — 5 services monitored, all green.

Monitored services

🔥 Firewall — OPNsense · 192.168.2.1
🛡️ DNS — Pi-hole · dns.home:8080
📷 Fotos — Immich · fotos.home:2283
🎵 Music — Navidrome · music.home:4533
🔧 Taller — taller.creativelydifferentbuilds.com

The Physical Dashboard

A repurposed Samsung A51 — always on, always visible.

The monitor lives on a Samsung A51 running Fully Kiosk Browser in kiosk mode — screen always on, always showing the status of every service. It connects to Uptime Kuma over the local network at monitor.home:3001.

The goal is simple: anyone in the house — whether they understand the technical details or not — can glance at the screen and know if something needs attention. Green means everything is working. Red means something needs a look.

Samsung A51 showing Uptime Kuma with all services green

Samsung A51 repurposed as a physical dashboard — always on, always visible.

The Launcher

Access for the family — no technical knowledge required.

Alongside the monitor, the service launcher now includes a card for Uptime Kuma. Anyone in the house opens servicios.home:8888 from any device — phone, tablet, or PC — and has direct access to every available service. No IP addresses. No ports to remember. Just names.



The Monitor card is now in the launcher — accessible from any device on the network.

What's Next

The list keeps growing — and that's the point.

As more services come online — home automation, security cameras, a local AI assistant, a family photo album, a music library — each one gets a card in the launcher and a monitor in Uptime Kuma. The infrastructure grows, but the experience stays simple.

Eventually, I'd like to build a guest access system — a QR code menu with curated services for visitors. A pre-selected family photo album. A shared music library. Maybe a local AI assistant. Content that's safe to share, easy to access, and requires nothing more than scanning a code.

That's still an idea. But the infrastructure to support it is already here.

Quick Setup Guide

Get Uptime Kuma running in under 5 minutes.

Requirements: Docker installed on any always-on machine

1. Run the container

docker run -d \
  --name uptime-kuma \
  --restart unless-stopped \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  louislam/uptime-kuma:1

2. Open the dashboard

Go to http://[your-server-ip]:3001 and create your admin account.

3. Add a monitor

Click + Add New Monitor → Type: HTTP(s) → enter the URL of your service → set interval to 60 seconds → Save. If the service uses a self-signed certificate, enable Ignore TLS/SSL error.

4. Add a local DNS record (optional)

In Pi-hole → Local DNS Records → add monitor.home pointing to your server IP. Now anyone on the network can open it by name.

There are many detailed guides out there for setting up Uptime Kuma — this is just the version that worked for me. If you run into something specific or need help getting it running in your setup, drop a comment below.

Real World Update

The internet was working. The photo service wasn't.

This is exactly why I built this. The internet was up. The network was running. But Immich — the photo service — went down, and the monitor caught it immediately with a timestamp.

The reason: photos don't have a permanent server yet. Immich runs on my main workstation, and when I shut it down for the night, the service goes with it. That's a known limitation — one that will be resolved when the services move to a dedicated always-on machine. For now, the monitor makes that limitation visible instead of invisible.

As soon as the workstation came back online, Immich recovered automatically. The monitor logged the downtime, the duration, and the recovery — without me having to check anything manually.

Samsung A51 showing Immich down after workstation was turned off

Immich down at 22:43 — timeout of 48000ms. Back up at 22:44 when the workstation came online. The monitor is in Spanish because my wife and kids are native Spanish speakers — the system should work for everyone in the house.

That's the point of visibility. Not to prevent every failure — but to know exactly when it happened, how long it lasted, and when it recovered. Without asking me.

The Honest State

It works perfectly. It looks like a work in progress.

Right now, the A51 is literally thrown on my desk — and it looks exactly like that. Next to the Fire Tablet running MacroDeck, the setup works perfectly but doesn't look intentional. Because it isn't yet.

"If a cluttered desk is a sign of a cluttered mind, of what, then, is an empty desk a sign of?"

— Albert Einstein

I've read that quote many times. And I agree with it — I don't want an empty desk. I want one that looks organized and functional. One that doesn't make a visitor wonder what happened here.

The plan is to mount both the A51 and the Fire Tablet on the wall with permanent connections to the PC. Everything within reach, nothing in the way. The desk stays as the workspace — the wall becomes the command surface.

That's the next project. Unless my mind takes a different route first — which, if you've read this blog, you already know is a real possibility.

The Point

A well-monitored network is one that anyone can trust.

The internet might be fine. But the network has more work to do. And now, anyone in the house can see exactly how it's doing — without asking me.

Green means everything is working. That's all anyone needs to know.

What are you monitoring in your homelab? Drop it below.

This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product listed here is something I personally own and use daily.

Thursday, July 9, 2026

I Took Back Control of What I Listen To

Self-Hosted · Music · 28 Years of Library

I Took Back Control of What I Listen To.



I'm a man approaching forty. I've always loved music — deeply, obsessively. But growing up in a Latin country, the music I actually liked rarely made it to the radio. What I wanted to hear was whatever MTV decided to air that day, and not much else. No algorithm back then — just limited access and a lot of waiting.

That frustration pushed me toward technology earlier than most. If the system wouldn't give me what I wanted, I'd find another way.

I remember when the internet was still version 1.0. There weren't many pages. Search engines weren't common yet — you had to use Yahoo, AltaVista. And then, much later, Google appeared.

I remember the first days of YouTube. When YouTube was ugly and uncontrolled by any algorithm. When it was just people uploading things and other people watching them.

But music? Music was its own journey.

If I wanted to listen to something, my options were the radio, MTV, or a CD. I walked to school with a CD player in my pocket or backpack. Then came the burned CD and the MP3 CD player — and suddenly I started to feel something I hadn't felt before with music: Control.

I was choosing what I listened to. No DJ. No playlist curated by someone else. Just me and what I actually wanted to hear.

Before I had a CD burner, a friend gave me one CD. One. I listened to it so many times I grew to hate it. But it was my only option. When I finally started downloading my own music, something exploded. It wasn't just convenience. It was discovery.

I had two The Offspring CDs. If I wanted to switch between them, I had to physically get up, open the player, swap the disc, and find the track. Later, the home stereo had a 6-disc carousel — which felt like a revolution. Except changing from one disc to another took about 35 seconds. Per disc change. That was the cost of control.

That spark never went out.

A library built song by song since 1998. It's passed 10,000 songs. Every one of them was chosen deliberately.

Around that same time, I started building something without fully realizing it. A library. Song by song — from Napster, then iMesh, then LimeWire, eMule, eDonkey, online radio station rippers. Every tool that existed, I used. Not to collect everything — to collect what I liked. What I actually came back to.

That library has been growing since 1998. It's passed 10,000 songs. It's not a competition — it's a history. The evolution of what I've liked, from adolescence to now.

Then life got busy. Work. Responsibilities. No time to sit down and browse a library. And that's when the services arrived — first Google Play Music. Then Spotify. Then YouTube Music Premium.

And for a while, they were great. Convenient. Fast. Available everywhere.

But slowly, without me noticing, I stopped listening to what I wanted to hear. I'd pick the first song — the right song — and then the algorithm took over. Five songs in, I was somewhere else. Listening to what they decided I should listen to next.

I became a victim of the algorithm.

The Data

I exported my YouTube watch history and analyzed it. Out of 51,543 unique titles, about 28% were classifiable by category. Of those:

  • 37.8% — Shorts and viral content
  • 23.4% — Music
  • 12.4% — Gaming
  • 11.6% — Tutorials
  • 6.1% — Comedy and memes

1 in 4 classified videos was music. But YouTube decided which music, when, and in what order. I wasn't choosing. I was being served.

That was enough. That's when I found Navidrome.

The Setup

Navidrome is the brain. Nobody sees it. Nobody touches it.

I installed Navidrome without being entirely sure what I was walking into. When it came up, it was just another web player. And from my perspective as a designer — the interface was ugly. That's an honest assessment, not a complaint. It works. It does exactly what it needs to do.

Before any of that could matter, I had to invest time cleaning and organizing my library. Fixing tags. Running everything through MusicBrainz Picard to repair metadata, match albums, correct artist names. That's not optional with a library that's been growing organically for 28 years — it's the foundation everything else sits on.

Navidrome running in Docker

Navidrome running in Docker — silent, no interface, doing its job.

Once that was done, Navidrome became what it was supposed to be: a silent engine. It just works.

Then I started looking for the front end. First install: DSub. It works — but the interface carries the same visual weight as Navidrome. Functional. Forgettable. I kept reading.

Then I found Symfonium. Clean UI. Loaded my Navidrome server without complications. Suddenly I had everything — the functionality and freedom of Spotify or YouTube Music Premium, but running on my own hardware, with my own library, under my own control.

On Windows, Feishin does the same thing. Modern interface. Connects to Navidrome in seconds. No configuration friction.

Feishin on Windows playing Stratovarius

Feishin on Windows — Stratovarius playing, Auto DJ active, 28 years of personal genres on screen.

The Ecosystem

I didn't install three apps. I built a personal music ecosystem.

Navidrome is the brain. Feishin is the face on the desktop. Symfonium is the face in your pocket. Together, they feel like one app — not three.

I create a playlist in Feishin for a specific mood or route. I open Symfonium, the playlist is already there. I mark it for permanent offline cache — and it downloads. The entire Navidrome library metadata lives in Symfonium even without a connection, meaning I can keep building and organizing playlists for later even when the server is unreachable. When it comes back online, everything syncs.

Likes. Favorites. Play counts. Statistics. All of it synchronized between Feishin and Symfonium with a single tap. Nothing complicated. Nothing manual.

Symfonium in action

Screen recording from the phone

External shot — the real experience

I don't have exact metrics. But I have my last 10 days of history. Music actively searched: three tracks. Algorithm deciding what I listen to: zero times.

Before, I opened YouTube to find something to listen to in the background. I'd pick the first song — and then the algorithm took over. Ads. Recommendations I didn't ask for. The quiet question the platform asks every few minutes: are you still there?

Now Feishin opens almost automatically on Windows. No ads. No unwanted playback. No passive consumption. Just music I chose, playing the way I want it to play. And when I leave the desk? I load the playlist into Symfonium and keep listening in the street.

It feels cleaner than it looks. And now I want to expand the library, activate WireGuard so it follows me anywhere — not just on the local network. It feels like a new kind of freedom.

A note on Auto DJ

Feishin has an Auto DJ mode that generates suggestions from your own library — and it works incredibly well. But only if your tags are clean. A file with youtube.com/watch?v=... as the album name tells the system nothing. The quality of your experience is directly proportional to the quality of your metadata.

The Honest Conclusion

I'm not going to tell you how to get music. That's not my place.

My library isn't vast by anyone's standards. 10,000 songs isn't a flex. But it's mine. Every song in it was chosen deliberately at some point in my life — whether at 16, or 25, or last month. It maps my moods with a precision that no recommendation engine has ever matched.

What I will tell you: when you have your library — whatever size it is — the step you cannot skip is MP3Tag. Cleaning and structuring your metadata is tedious. You do it once. And you enjoy it for life.

There's something quietly powerful about pressing play and knowing — with absolute certainty — that what comes next is something you actually chose. Not predicted. Not served. Chosen.

That feeling is worth more than any algorithm. And the next step? Activating WireGuard so my library follows me everywhere — not just on the local network, but anywhere I go.

Have a library sitting on a hard drive somewhere? There might be more there than you think. Drop your questions below.

This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product listed here is something I personally own and use daily.

Wednesday, June 10, 2026

Google Photos Was Free. Until It Wasn't. Here's My Setup Now.

I Trusted Google With Ten Years of Memories. Then the Rules Changed.The problem...The problem...Photography has always been one of my favorite hobbies. Not professionally — I never went that route. But personally, I've taken photos of everything that matters to me: family moments, projects, travel, random memories, everyday life.Back in 2015, I discovered Google Photos. Honestly, it felt revolutionary. Before that, managing photos was a mess — my phone constantly filled up, I had to manually copy everything to external hard drives, and I ended up with four or five different drives scattered everywhere. Finding a specific photo from years ago meant remembering which drive had it, connecting it, and hoping I'd organized things correctly.Google Photos changed all of that. Every photo available instantly from anywhere. Search by face, color, event, date, location, objects inside the image. If I wanted photos of my wife, I could simply search for her face.At the time, it felt magical. Then the rules slowly changed.First, Google introduced compression policies. Then they merged storage limits across Google Drive, Gmail, and Google Photos. By that point I had around 50 to 60 GB stored in the cloud — and I realized something uncomfortable: I didn't really own my storage anymore.Five Hard Drives. No System. No Trust.The chaos beforeI eventually tried using Google Takeout to download everything. The process worked, but it was painfully slow and fragmented — multiple archives, folders, metadata files, formats that aren't easy to restore. I ended up manually downloading and deleting files for months.For years after that, my workflow became chaotic again. Save to Google Photos. Leave copies on the phone. Transfer some to local storage. Forget where certain files lived. Accidentally lose things over time.That loss of organization eventually pushed me toward building a NAS. And when I reactivated it, I discovered something that changed everything: self-hosted photo management systems that work like Google Photos — but run on your own hardware.The App That Made Me Stop Paying for Cloud Storage.The solution - IMMICHThe one I'm using is Immich. Honestly, it's incredible. It offers everything I loved about Google Photos:- Automatic photo backups from every device- Face recognition- Timeline organization- AI-powered search- Mobile uploads- Shared libraries- Date memories and remindersThe NUC Couldn't Handle It. My Network Paid the Price.The mistakeInitially, I installed Immich using Docker on the Intel NUC. Technically, it worked — until the AI processing began.What many people don't realize is that image recognition and video processing are resource-intensive when handled locally. The moment I added a second user and the system began scanning thousands of additional photos, the machine became overloaded. I had made the mistake of running too many services on one low-powered machine:The system became saturated. My DNS service started failing — and that meant my entire network would randomly go down, sometimes at 3am, forcing me to manually restart machines just to restore internet access across the house.One Machine Does One Job. The Rest Goes to IMPERFECT.The fixI decided to separate responsibilities. DNS services stayed on the NUC — Pi-hole running independently, dedicated to the network. Immich moved to my main workstation: an i7-14700F with an RTX 5060 and significantly more storage available.[🎬 VIDEO — backup corriendo en el celular, subiendo fotos a la red local]Now backups happen while I work during the day, when the computer is already turned on. The system barely impacts performance. AI processing runs in the background — and when it's done, every photo is searchable, organized by face, date, and location, exactly like Google Photos.Photo processing - Video indexing - DNS services (Pi-hole) - Docker containersIMPERFECT — main workstation running ImmichIMPERFECT — i7-14700F · RTX 5060 · now running Immich for the whole familyFor the Right Situation — It's Hard to Go Back.Is it worth it ?To be fair, cloud storage still makes perfect sense for many people. If you're a single user who doesn't generate a lot of photos and videos, paying for convenience is probably worth it.But my situation is different. I have six immediate family members constantly generating multimedia content every single day. Photos, videos, backups, phone uploads — it adds up quickly. At this point I maintain around 8 TB of available storage. At cloud pricing, that's a significant monthly expense — every month, indefinitely.The interesting part is that modern self-hosted photo systems are no longer difficult to set up. If you have an old computer collecting dust somewhere at home, there's a good chance you already own the hardware needed to build your own private photo cloud. And once it works, it's honestly hard to go back.The biggest issue with subscription-based cloud storage is simple: the moment you stop paying, your data becomes vulnerable. That dependence never sat well with me.This Build Isn't Finished.That's the thing about building your own system — it's never really done. Here's what's coming:protection, ergonomicsQuestions about the setup? Drop them below. I built this without a guide — figured it out piece by piece over time. Happy to help you figure it out.But it all runs locally on my own hardware. No subscription. No cloud lock-in. No dependence on a company changing pricing or policies.WHAT'S NEXT- Moving Immich to the NAS — once the WD EX2 is fully operational, photo storage moves off IMPERFECT and onto dedicated hardware- Home Assistant — smart plugs, door notifications, automation that actually makes sense- Building a desk from scratch — closed cabinet for the homelab, dust management, surgeEach of those is a post. I'll document the process — what worked, what didn't, what I'd do differently. If you're building something similar, follow along.