Setting Up Shelly Device Without Cloud or Location Permissions
I use a Shelly Plug M Gen3 to monitor my homeserver’s power consumption with a custom Prometheus exporter. After a router restart, the device disappeared from the network. I tried the official Shelly Cloud app to re-onboard it, but the app demanded location permissions, wanted to upload my WiFi password to Shelly’s cloud, and still failed to add the device. Frustrated, I figured out the offline setup process. This works for initial setup or after a factory reset (hold the button for 10 seconds within 60 seconds of power-up). ...
PromQL rate() vs increase()
I keep mixing up rate() and increase() in PromQL, so this is a short note for future reference. Both functions are normally used with counters: metrics that only go up, except when the process restarts and the counter resets. The quick difference: rate() answers: how fast is it increasing? increase() answers: how much did it increase? rate() rate() gives the average per-second increase over a time range. rate(http_requests_total[5m]) If the counter moved from around 280 to 700, the increase is 420. In this example the sampled time difference is 270 seconds, so: ...
The Hidden Cost of 24/7: Tracking Home Lab Power with Shelly
Introduction As you might know, I manage two home servers for various self-hosted services. I keep everything organized in a GitOps way using ComposeFlux—a tool I built to handle Docker Compose stacks when I got tired of manual updates. (You can read about that journey in GitOps for Homeservers (Part 1)). Recently, I was catching up with a colleague at the office. We were talking about self-hosting, and I mentioned that I run Immich to completely replace Google Photos. He was impressed but then asked the one question I couldn’t answer: “How much are you actually paying for the electricity to run those servers 24/7?” ...
GitOps for Homeservers (Part 1) — My Homeservers, Ansible, and the Pain Points
This is Part 1 of a 3-part series: “GitOps for Homeservers” Part 1: My Homeservers, Ansible, and the Pain Points (You are here) Part 2: Searching for the Right Tool — Komodo, Dockhand, and Beyond Part 3: ComposeFlux — A Lightweight GitOps Tool for Docker Compose Also read: How I Manage My Homeservers with GitOps and Docker Compose on Medium. Introduction I have been managing 2 homeservers and 5 virtual machines in the cloud for almost 2 years. As my enthusiasm grows to self-host software — both for fun and actual use — my docker-compose files and stacks keep growing too. Deploying and managing them became painful over time. ...
GitOps for Homeservers (Part 2) — Searching for the Right Tool — Komodo, Dockhand, and Beyond
This is Part 2 of a 3-part series: “GitOps for Homeservers” Part 1: My Homeservers, Ansible, and the Pain Points Part 2: Searching for the Right Tool — Komodo, Dockhand, and Beyond (You are here) Part 3: ComposeFlux — A Lightweight GitOps Tool for Docker Compose Also read: How I Manage My Homeservers with GitOps and Docker Compose on Medium. Introduction In Part 1, I covered my homeserver setup, the Ansible-based deployment workflow, and the problems that came with it — slow deployments, no selective deployment, manual triggers, and the fact that it was never true GitOps. ...
GitOps for Homeservers (Part 3) — ComposeFlux: A Lightweight GitOps Tool for Docker Compose
This is Part 3 of a 3-part series: “GitOps for Homeservers” Part 1: My Homeservers, Ansible, and the Pain Points Part 2: Searching for the Right Tool — Komodo, Dockhand, and Beyond Part 3: ComposeFlux — A Lightweight GitOps Tool for Docker Compose (You are here) Introduction In Part 1, I covered my homeserver setup and the Ansible-based deployment workflow along with its pain points. In Part 2, I evaluated alternatives like Komodo and Dockhand — solid tools, but none fully fit my needs. ...
Traefik HTTPS Config with DuckDNS for Local Homeserver
This is a how-to guide inspired by “Quick and Easy SSL Certificates for Your Homelab!”" focus on Traefik reverse proxy server. Although this guide focuses on DuckDNS, a similar configuration can apply to any DNS provider. The trick is by setting private IP for the domain name you own, in my case DuckDNS. Get DuckDNS Sub-Domain Sign-up an account in duckdns.org, choose a sub-domain(As I choose a dummy sub-domain lser.duckdns.org) and add your home server IP address(In my case 192.168.0.120) ...
Wireguard VPN and BitTorrent on Docker Swarm (Part 1)
Introduction One of the services I always wanted to have on my raspberry pi home server is VPN and BitTorrent, which basically, route all BitTorrent traffic through a VPN container. Then I saw Wolfgang’s “Set Up Your Own Wireguard VPN Server with 2FA in 5 Minutes!” on Youtube, which inspired me to set up my own VPN server. I quickly created an instance on Oracle Cloud and ran the ansible playbook to deploy the wireguard VPN. After I tested a few months on Mobile and PC, I’m comfortable setting up server and client. So, I decided to use the Wireguard in my raspberrypi-homeserver project. ...
Wireguard VPN and BitTorrent on Docker Swarm (Part 2)
Previously in part 1, we have deployed the qBittorrent with Wireguard VPN on docker swarm. In this part, we will test the deployment, configure qBittorrent and finish the blog with the kill switch configuration Testing Below are the tests to make sure qBittorrent has access to the Internet through Wireguard VPN ➡️Make sure Wireguard and qBittorrent containers are up and running. ➡️Check you are able to ping Wireguard container from qBittorrent ...
Portainer vs Yacht
Introduction I have been working on my home server setup on Raspberry Pi 4. I’d like to deploy all of my services/tools in docker containers, and for that, I need a nice and fancy container management tool I want to have on my home server. I had checked multiple sources, and finally picked two; they are Portainer and Yacht. Portainer is a well-known container management tool and Yacht is fairly new. In this post, I would like to give my thoughts on both tools. ...