Welcome to ScriptedVestige!

I’m an IT guy documenting my home lab which covers networking, infrastructure, automation, and everything in between. This is a living record of things I’ve built, broken, and fixed.

Right now, my current quest is to build a data-driven, machine learning powered irrigation system. Once that is complete, I’ll probably use the same data to optimize my HVAC system. Stay tuned!

Have a question or want to get in touch? Reach me at contact@scriptedvestige.com!

Initial Data Analysis

Having a lot of data collected can be a good thing, but it’s important to be able to pull the signal from the noise to be able to act upon the data. What’s the point in collecting all of this data if I’m not going to use it? I’m going to create some materialized views in Timescale that I can query with Grafana that will show me useful data that I can act on. ...

April 11, 2026 · 8 min · ScriptedVestige

Network Outage

Ah, Sunday. The day of rest and relaxation… and troubleshooting why your entire network is down when you wake up. Now, I’m not superstitious, but I am a little stitious, I should have seen this coming. Last night, I woke up in the middle of the night and noticed my watch’s screen was completely white and battery reporting 1%, which never happens as I charge every morning while I get ready and the battery will last until the next morning. The watch is unrelated, but it was a sign for sure. ...

March 1, 2026 · 7 min · ScriptedVestige

Unplanned Outage Troubleshooting

Power & ISP Outages While at work, I received a notification at 14:35 local time from my power company that there was an outage in my area. I then received a notification at 15:50 that the power was back up. I also received notification from my ISP reporting an outage at 15:45 local due to the power outage, which is weird, but after I got home, I could see multiple occurrences of losing connectivity to my ISP in the UDM. ...

February 24, 2026 · 7 min · ScriptedVestige

Manual Event Logging

There is a lot of data that I want to collect that my sensors can’t. With automation and machine learning application being the goal, I want to gather as much data as I possibly can to really create a complete picture of events in the yard. Snow events are one example of that, so that’s where I started. I again used Python, FastAPI, and uvicorn to define some API endpoints on the same Pi that runs my Ecowitt ingest API. Just like the Ecowitt ingest, I’ll make this API a service also. The difference with this one though is that when the endpoint is requested in the browser, an HTML form is presented. ...

February 14, 2026 · 3 min · ScriptedVestige

Grafana

Grafana is a tool that allows you to build dashboards to visualize data. I haven’t gone too deep into the full capabilities yet, but I wanted a way to display the weather data from my database without reinventing the wheel and building dashboards manually myself. Install & Config Grafana is available as an app on TrueNAS SCALE, which is the OS that runs on my NAS. In the configuration, I’ll select “Publish port on the host for external access” for the Port Bind Mode in the network configuration so other hosts on my LAN can access the Grafana web UI with the default port 3000. Timescale and Portainer are using different ports, so I’ll have no conflicts between the three services and all can be accessed via their respective ports on the NAS IP (and hostname down the road when I get around to setting up Pi-hole). For the host IP, I’ll select ‘0.0.0.0’ (aka any) IP address because TrueNAS isn’t allowing me to select the host IP, but I’ve got traffic locked down pretty well with my VLAN and firewall rules setup. ...

February 7, 2026 · 5 min · ScriptedVestige

Weather Station Deployment

Today I’m going to set up my local weather station in my yard that will feed data to my database that stores the forecast data I’m pulling from NWS. NWS gives me projected future data, but I’m not able to see what’s happening in my yard, until now. Down the road, I’ll perform some analysis comparing forecast data to observed data which will be useful for future automation and machine learning. ...

January 31, 2026 · 5 min · ScriptedVestige

Portainer & TimescaleDB

I’m going to run TimescaleDB in Portainer to host my weather database for my yard and irrigation project. I decided to use Portainer just because it’s easier to use than the Docker CLI, in my opinion. Portainer is available as a native app within TrueNAS as well, so everything will be nice and smooth. TimescaleDB was my choice over vanilla PostgreSQL or other options because it’s great for time series data, which is what I’ll be dealing with in the weather data. It automatically creates chunks within what are called hypertables, which allows you to manage large quantities of data in a time series easily and offers features like continuous aggregates, which will be very useful for what I’ll be doing. ...

January 9, 2026 · 6 min · ScriptedVestige

TrueNAS Configuration

Now that the NAS is back online and has the new pool created, I’m going to dive into creating some datasets and users. In the future, I’ll create any users or groups before I create any dataset that is owned by said user or group as it’s a bit less clunky than doing what I did here. Dataset Creation I’ll start with creating a dataset for general use from endpoints like my laptop or desktop. Think PDFs, text documents, spreadsheets kind of stuff. I’ll navigate to the Datasets tab in the TrueNAS GUI, select my main pool, then select Add Dataset. This dataset will be called “docs”, I’ll select multiprotocol for the Dataset Preset and enable both SMB and NFS so it will work with both Windows and Linux. SMB name is “docs” to match the dataset name. I’m not going to set a quota (quotas would be useful for multi-user use or if I had more limited storage, but it’s just me and I have plenty of space), and I’ll leave encryption as inherited. I’ll leave the other advanced options as the default, most of them inherit from the parent pool so that’s fine by me for now and for this dataset. ...

January 9, 2026 · 4 min · ScriptedVestige

Daily Briefing

This project started with wanting a way to keep up with cybersecurity news. I started the project with a simple, hard-coded script that let me scrape the RSS feed of one news source. I got distracted with other things and came back to this project months later, but I didn’t forget about the project. While I was busy with other things, I had ideas to make this project better, and I’ve implemented those. ...

January 3, 2026 · 7 min · ScriptedVestige

TrueNAS Resurrection

I built a custom box to run TrueNAS a while ago but took it offline because I wasn’t really using it. Now, I’ve got a reason to bring it back online: hosting services for my yard and irrigation project. The original setup was rushed, so I wanted a plan to safely bring it back online on the new network backbone. This article mentions some IP mismatch issues, I cover that in my Network Backbone post. ...

January 2, 2026 · 5 min · ScriptedVestige