Engineering journal documenting hands-on Linux systems administration, homelab infrastructure, Docker, networking, security, monitoring, automation and AI-assisted tooling.
I'm TJ, a self-employed IT technician running Voltage PC Repairs in Australia. My interest is Linux, infrastructure and DevOps, and I learn by running real systems: a Docker-based homelab that supports my business tooling and my family's everyday services.
This repository is where I write that work down: what I built or changed, why, what broke and what I learned. Sensitive details (addresses, credentials, customer information, exact firewall and port layouts) are deliberately left out. See the publication guide.
How I work. Some project code and tooling were developed with AI-assisted coding tools (Claude). I'm responsible for requirements, architecture, deployment, testing, validation, security decisions and ongoing operation. I'm not presenting myself as a software developer, though one small project, the CD backup script, is mostly my own Python. I prefer plain, simple interfaces, and I build and set things up so that people who are not into computers can use them. The strength of this repo is the systems work around the code.
Not a tech person? Every journal entry opens with an "In short" box in plain English, and the glossary explains the technical words.
- Control Centre: the dashboard I run the whole lab from, and the project I am proudest of.
- Homelab overview: what runs, how it's laid out, and the principles behind it.
- Internal reverse proxy: reaching services by name instead of by address and port.
- Retiring Portainer and hardening network exposure: a day of audit-then-harden work (SSH, firewall, logins, closing ports).
- Signing key committed to version control: an incident case study, from detection to rotation to prevention.
- Latest entry: see the journal index.
| Section | What's in it |
|---|---|
journal/ |
Dated engineering logs: changes, debugging, decisions, lessons |
projects/ |
Project write-ups, each with an explicit "my role" section |
infrastructure/ |
Architecture and platform notes: homelab, Docker, reverse proxy, monitoring |
security/ |
Hardening notes and incident write-ups |
repairs/ |
Hardware repair and diagnostic case studies (planned) |
GLOSSARY.md |
Plain-English explanations of the technical terms |
Control Centre. The tool that makes a large Docker and server stack manageable. One dashboard shows every stack, host health, security and update status, and the invoicing pipeline, and lets me restart or upgrade a single container safely with protection levels, health checks and a one-time undo. It is the project I use most and have put the most thought into. The code was largely written with AI assistance. What I did: defined the problem, designed what it shows and what it may do, tested every change against the real lab, and run it daily. Control Centre, how it grew.
Homelab and reverse proxy. One Docker host running Compose stacks defined in version control, with internal services reached by name through a private Caddy proxy over LAN and Tailscale. A few services are published through Cloudflare Tunnel instead of port forwards. What I did: designed the layout, deployed and migrated the services, and wrote the migration order and rollback steps. Homelab, Reverse proxy.
Security hardening and exposure audit. Audited what the server really listens on, then moved SSH to key-only with fail2ban, narrowed firewall rules, put logins and TLS on admin tools, and closed direct ports. What I did: chose the method (repoint first, close second), tested every change from a fresh connection, and verified the apps still worked. Journal, 04/10/2026, Hardening.
Incident response. A private key reached a git repository through a backup folder. I contained it, rotated it, debugged two configuration failures and added a fail-closed secret-scanning hook. Case study.
Monitoring. Uptime Kuma, Dozzle, a UPS dashboard and self-hosted ntfy notifications, kept in step with every service move. Monitoring.
Supporter Invoicing. A live product with a public website and a purchase pipeline I built and run: signed agreement (self-hosted Documenso), Stripe payment, Cloudflare Worker licence issuing and CI-built signed installers. The code was largely AI-assisted; the pipeline design, deployment and testing are mine. Supporter Invoicing.
CD Backup Script. A Python tool that copies old data discs to server storage, with dry runs, clean failure handling and an optional full-screen interface. This is the one project here where I wrote most of the core code myself, as a way to learn Python. CD Backup Script.
Business websites. Three small business sites (my repair business, a photography business and the invoicing product site) deployed from Git to Cloudflare Pages, with a contact form hardened by Turnstile, rate limiting and a honeypot. I built the first version of the photography site myself; the later redesign and the other sites' code were largely AI-assisted. The setup, security and operation are mine. Business websites, the deploy that failed quietly.
Other projects. VoltOS, VoltOps, Holocron Kiosk.
Only things evidenced in this repo.
- Linux / systems: administration, systemd, SSH hardening, fail2ban, firewall rule review and cleanup, host and UPS monitoring.
- Linux desktop: Fedora (dnf) with Xfce, earlier Arch-based systems, KDE Plasma, GNOME and Hyprland, a documented rebuild order and a package list kept in step with the machine.
- Docker / containers: Compose stacks as code, container networks for isolation, log rotation, scoped automatic updates with Watchtower, image and volume cleanup.
- Networking: reverse proxying with Caddy, wildcard internal DNS, Tailscale, Cloudflare Tunnel, how Docker-published ports interact with the host firewall.
- Security: attack-surface audit, authentication on admin tools, TLS, least-privilege accounts, secrets handling, incident response and key rotation.
- Monitoring: Uptime Kuma, Dozzle, ntfy, noise reduction, monitoring as part of change management.
- Python scripting: a command-line tool with batch handling, error clean-up and a tested permission rule, written mostly by me as a learning project.
- Web hosting and deployment: static sites on Cloudflare Pages deployed from Git, Pages Functions, Turnstile, KV rate limiting, DNS and email-domain verification.
- Automation: opt-in update policy, pre-commit secret scanning, README-driven rebuildable setups.
- Git and documentation: version-controlled infrastructure, sanitised public write-ups, structured journal entries.
- AI-assisted workflow: specifying requirements, reviewing and testing AI-generated changes, and keeping responsibility for what runs.
Latest entries (full list in the journal index):
- 21/10/2026: Turning my music app into a Windows Media Player
- 20/10/2026: Dashboard themes and a local AI for playlists
- 17/10/2026: Windows XP and 7 themes, and a Start menu built from scratch
- 15/10/2026: VoltOps, texted receipts and an audit pass
- 12/10/2026: Finding a Linux desktop that works for me
- 12/10/2026: The homelab so far, and a repeatable security audit
- 12/10/2026: Business websites, and a security fix that was not live
- 10/10/2026: Building a CD backup script in Python
- 09/10/2026: Control Centre, from dashboard to operations hub
- 04/10/2026: Retiring Portainer and hardening network exposure
- 03/10/2026: Internal reverse proxy rollout
- 29/09/2026: Scoped automatic container updates
- 26/09/2026: Container update tooling and service cleanup
- DevOps practice: CI/CD, infrastructure automation
- Linux certification preparation
- Kubernetes, later, once the Docker fundamentals feel solid
- GitHub: VoltageViper99
- Business: Voltage PC Repairs
Text is licensed under CC BY 4.0. Pages carry front matter (title, date, category, tags, summary, public, featured) so a feed can be built from them later.
