Skip to content
View modem7's full-sized avatar

Organizations

@borgmatic-collective

Block or report modem7

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
modem7/README.md

Header

LinkedIn OmegaWiki Buy Me A Coffee Profile Views


๐Ÿ‘จโ€๐Ÿ’ป About Me

  • ๐Ÿ”ญ Iโ€™m a Platform Engineer focused on building and managing CI/CD pipelines, internal tooling, and scalable infrastructure. Day to day that means everything from writing automation to bench-testing hardware and making sure software gets from dev to production reliably. Currently that includes ROS 2 (Jazzy) pipeline infrastructure in the subsea/marine robotics space โ€” Debian packaging with bloom and debhelper, Aptly-managed package repositories with GPG signing and environment promotion, and Fast-DDS discovery server configuration for distributed development teams.

  • ๐Ÿ”ง I work across the full stack of infrastructure โ€” containers, virtualisation (ESXi, Proxmox, vSphere), IaC (Ansible, Terraform, Packer), and GitOps โ€” with a strong lean towards automating anything that shouldnโ€™t be done by hand. Prior to my current role I was a Linux Sysadmin, so Iโ€™m just as comfortable racking servers and hardening systems as I am writing pipelines.

  • ๐Ÿ‘ฅ I collaborate closely with software and engineering teams, and have worked across vendors, procurement, and SoC teams to keep projects moving. Happy switching between writing technical docs on Confluence, reviewing pipelines, or configuring switches and firewalls depending on what the day calls for. I also integrate AI tooling (Claude, GitLab Duo, Microsoft Copilot) into engineering workflows โ€” pipeline automation, code review assistance, documentation, changelog generation, and infrastructure work. A force multiplier, not a substitute for understanding what's actually going on.

  • ๐ŸŒ I've worked my way up through infrastructure roles across high-stakes sectors like defence, energy, transport, and telecoms โ€” picking up everything from large-scale VDI environments to Linux systems engineering along the way. I'm also a fluent Brazilian Portuguese speaker, which has come in handy supporting global and multilingual teams throughout.

  • โšก Outside of work I run a two-node Proxmox cluster (Samwise + Frodo) with 20+ VMs and LXC containers, ZFS storage, a dedicated Proxmox Backup Server, and a self-hosted GitHub Actions runner that ties it all into real CI/CD pipelines. IaC VMs for Packer, Ansible, and Terraform are spun up on demand from cloud-init templates I build and maintain myself. Ansible is my go-to for automating it all โ€” I've also picked up both the Ansible Essential and Advanced Playbooks certifications to back that up.

  • ๐ŸงŸ For nearly a decade I helped organise World Zombie Day โ€” a global charity event that raised money for food banks through city-wide zombie walks. Coordinating sponsors, volunteers, routes, and day-of logistics across London, UK was genuinely great experience, and a lot of fun.

  • ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ I'm active in the open source community โ€” opening PRs, contributing commits, reviewing code, and raising issues and bug reports across projects I use and care about. Not just a consumer.

  • โœ๏ธ I write up what I learn over on OmegaWiki โ€” mostly Linux, Docker, and homelab guides.

  • ๐Ÿ“ซ Reach me: LinkedIn


๐Ÿ› ๏ธ Languages and Tools

Operating Systems

Shell

Editors
Containers & CI/CD

Robotics

Virtualisation

Source Control
Hardware & Other

Enterprise Systems

Project Management

AI Tooling

๐Ÿš€ Featured Projects

Project Description Stars
public_scripts A collection of practical scripts covering Proxmox automation, Docker management, server administration, and media processing โ€” built for real use and shared publicly with sensitive values scrubbed Stars
docker-borgmatic (co-maintainer) Multiarch Docker container packaging Borg, Borgmatic, and Apprise for automated backup orchestration with container stop/start hook support โ€” part of the official borgmatic-collective. 7.2M+ pulls on Docker Hub Stars
docker-borgmatic (personal fork) Self-maintained fork of the above with custom builds and personal modifications running on S6 Overlay, supporting amd64 and arm64 Stars
cibuildwheel CI pipeline that builds Python wheels for packages missing from PyPI, used to supply dependencies for the docker-borgmatic image โ€” packages published to Cloudsmith Stars

๐Ÿ”ฅ My Stats

GitHub Trophies

GitHub Stats Top Languages

GitHub Streak

Github activity graph

๐Ÿฑ My GitHub Data

๐Ÿ“ฆ 4.8 MB Used in GitHub's Storage

๐Ÿ† 83 Contributions in the Year 2026

๐Ÿšซ Not Opted to Hire

๐Ÿ“œ 55 Public Repositories

๐Ÿ”‘ 8 Private Repositories

I'm a Night ๐Ÿฆ‰

๐ŸŒž Morning                2109 commits        โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   09.06 % 
๐ŸŒ† Daytime                6133 commits        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   26.35 % 
๐ŸŒƒ Evening                7990 commits        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   34.33 % 
๐ŸŒ™ Night                  7040 commits        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   30.25 % 

๐Ÿ“… I'm Most Productive on Wednesday

Monday                   3405 commits        โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   14.63 % 
Tuesday                  4200 commits        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   18.05 % 
Wednesday                4695 commits        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   20.17 % 
Thursday                 2901 commits        โ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   12.47 % 
Friday                   3594 commits        โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   15.44 % 
Saturday                 2562 commits        โ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   11.01 % 
Sunday                   1915 commits        โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   08.23 % 

๐Ÿ“Š This Week I Spent My Time On

๐Ÿ•‘๏ธŽ Time Zone: Europe/London

๐Ÿ’ฌ Programming Languages: 
Bash                     2 hrs 24 mins       โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘   79.68 % 
sh                       14 mins             โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   08.06 % 
Text                     9 mins              โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   05.40 % 
YAML                     5 mins              โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   03.25 % 
Other                    2 mins              โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   01.44 % 

๐Ÿ”ฅ Editors: 
VS Code                  1 hr 58 mins        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   65.68 % 
Notepad++                47 mins             โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   26.26 % 
Zsh                      14 mins             โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   08.06 % 

๐Ÿฑโ€๐Ÿ’ป Projects: 
public_scripts           1 hr 52 mins        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   62.42 % 
Unknown Project          52 mins             โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   28.96 % 
dotfiles                 9 mins              โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   05.02 % 
Docker                   5 mins              โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   03.25 % 
project_work             0 secs              โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   00.35 % 

๐Ÿ’ป Operating System: 
Windows                  2 hrs 46 mins       โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘   91.94 % 
Linux                    14 mins             โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   08.06 % 

I Mostly Code in Shell

Shell                    12 repos            โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   22.64 % 
Dockerfile               11 repos            โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   20.75 % 
Python                   8 repos             โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   15.09 % 
JavaScript               4 repos             โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   07.55 % 
HCL                      1 repo              โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   01.89 % 

Last Updated on 27/06/2026 01:50:10 UTC

๐ŸŽฎ Steam playtime leaderboard

โš”๏ธ Dota 2                           ๐Ÿ•˜ 2293 hrs 14 mins
๐ŸŽฎ HELLDIVERSโ„ข 2                    ๐Ÿ•˜ 1044 hrs 10 mins
๐ŸŽฎ Creeper World 4                  ๐Ÿ•˜ 882 hrs 51 mins
๐ŸŒ Sid Meier's Civilization V       ๐Ÿ•˜ 226 hrs 21 mins
๐ŸŽฎ Overwatchยฎ                       ๐Ÿ•˜ 209 hrs 25 mins

๐Ÿ  Home Lab

Two-node Proxmox cluster backed by a dedicated Proxmox Backup Server, ZFS on both nodes, and an Unraid NAS for secondary storage. The PBS doubles as a QDevice โ€” third vote in the quorum, keeping the cluster clean in a node failure without split-brain.

Everything is managed as code. Cloud-init templates are built with a custom script (multi-backend storage detection, SHA256 image verification, reusable config profiles) and kept current by a template update pipeline that patches source VMs concurrently via QEMU Guest Agent, handles reboots, then clones and converts to templates automatically.

Network infrastructure managed with Terraform, services provisioned with Ansible.

Samwise (primary โ€” 20c / 256GB / ~1TB ZFS | IPMI for out-of-band management)

Service Type Role
DNS + NTP (primary) VM Pihole + Unbound โ€” full recursive DNS with DNSSEC validation, qname minimisation, DNS rebinding protection, and rate limiting. No upstream DNS dependency. Chrony NTP. HA primary โ€” adlists synced to replica via Nebula-Sync
Home Automation VM Home automation
Cloud Storage VM Self-hosted cloud storage
Docker Server VM 50+ container Docker stack โ€” media, productivity, security, and monitoring
NAS VM Network attached storage
IaC Server VM Ansible / Packer / Terraform (on-demand)
Backup Server VM Backup orchestration (on-demand)
HA-Proxy LXC SNI-based TCP routing to Proxmox UI + SPICE console proxy
CI/CD Runner LXC Self-hosted GitHub Actions runner

Frodo (secondary โ€” 4c / 32GB / ~100GB ZFS)

Service Type Role
DNS + NTP (replica) VM Pihole + Unbound + Chrony NTP โ€” HA replica, gravity and adlists synced from primary
Transcoding Node VM Automated media transcoding
APT Cache LXC Local APT package cache
Bastion LXC SSH jump host
Netboot LXC PXE / network boot server
Patch Management LXC Tracks and reports pending updates across all systems
IoT Builder LXC ESPHome firmware builds
HA-Proxy LXC SNI-based TCP routing to Proxmox UI + SPICE console proxy
Push Notifications LXC Self-hosted push notifications
Network Monitor LXC Network device tracking and new device detection

Network (because the lab doesn't stop at the hypervisor)

Managed via a UniFi stack โ€” everything named after Lord of the Rings characters because of course it is.

Device Model Role
Gandalf UDM Pro Gateway / firewall โ€” WireGuard VPN
Gimli USW Pro Max 24 PoE Core switch โ€” 10GbE backbone
Faramir USW Flex 2.5G 5 2.5G distribution switch
Morgoth USW Lite 8 PoE Access switch
Legolas / Aragorn U6 Pro ร—2 Wi-Fi APs
Sauron UNVR Network video recorder
Category Detail
Protect IP camera system โ€” isolated on a dedicated camera VLAN
IoT SLZB-MR1u (PoE) โ€” standalone Zigbee + Thread/Matter coordinator for Home Assistant
VLANs Default ยท IoT ยท Guest ยท VM ยท Camera
Clients Large number of devices spread across multiple VLANs

Self-Hosted Services (running on the Docker server)

The Docker server runs a 50+ container stack across three isolated networks โ€” a main bridge, an outbound-only network, and a fully internal network with no external routing. All services sit behind Traefik (HTTP/3, dual internal/external entrypoints, Cloudflare wildcard TLS), with Authentik as the SSO layer and CrowdSec handling threat intelligence via both a Traefik bouncer and a Cloudflare Worker bouncer.

Media

  • Self-hosted media server with NVIDIA GPU passthrough for hardware transcoding
  • Automated media management and transcoding pipeline with multi-node remote transcoding
  • Request management, stats, and library maintenance tooling

Security & Access

  • Traefik โ€” reverse proxy, HTTP/3, Cloudflare TLS

  • Authentik โ€” SSO / OIDC provider for all services

  • CrowdSec โ€” collaborative IPS feeding threat intelligence into both a Traefik bouncer and a Cloudflare Worker bouncer, so malicious traffic is blocked at the CDN edge before it reaches the network

  • Cloudflare โ€” WAF rules, firewall policies, and proxied DNS layered on top of CrowdSec blocklists for defence-in-depth at the perimeter

  • Self-hosted password manager with SSO, YubiKey & Duo MFA

  • Docker Socket Proxy โ€” read-only, locked-down Docker API proxy so containers get only the socket access they need

Productivity

  • BookStack โ€” wiki / knowledge base (OmegaWiki)
  • Nextcloud โ€” cloud storage (separate VM)
  • Linkwarden โ€” bookmark manager
  • Flatnotes ยท HastyPaste ยท XBackbone ยท Excalidraw

Monitoring & Management

  • Grafana ยท Prometheus ยท Telegraf
  • Dozzle โ€” Docker log aggregation across 6 hosts
  • Uptime Kuma โ€” uptime monitoring running on an external VPS for genuine outside-in visibility
  • Netdata โ€” real-time performance monitoring on all VMs
  • Monocker โ€” container state alerts via Telegram
  • Speedtest Tracker
  • PatchMon โ€” patch management across all systems, tracking and reporting pending updates
  • PiAlert โ€” network device tracking and new device detection across VLANs

Backup & CI/CD

  • modem7/borgmatic-docker โ€” own fork, runs backup orchestration

  • modem7/docker-autoheal โ€” own fork, auto-restarts unhealthy containers

  • Drone CI + Runner โ€” GitHub-integrated CI/CD pipelines

  • Photoprism โ€” AI-powered photo management (NVIDIA GPU + TensorFlow)


โœ๏ธ Latest Wiki Posts :

โœ๏ธ Personal Websites :

Pinned Loading

  1. docker-rickroll docker-rickroll Public

    Dockerised Rick Roll

    Shell 55 16

  2. docker-borgmatic docker-borgmatic Public

    Container to automate Borgbackups (https://github.com/borgbackup) using Borgmatic (https://github.com/witten/borgmatic)

    Shell 47 8

  3. public_scripts public_scripts Public

    Scripts for the general public

    Shell 93 18

  4. cibuildwheel cibuildwheel Public

    CIBuildWheel

    Shell

  5. docker-devenv docker-devenv Public

    Docker Dev Environments

    Dockerfile 5 1

  6. docker-starwars docker-starwars Public

    HTML 16 1