The SystemD CI/CD Pattern

Deployment automation with plain Linux tools. It's thrilling in the same way well-labelled cables are thrilling.

Architecture & Patterns

This pattern keeps the heavy lifting inside systemd and leaves me more time for coffee. The idea works for any deployment scenario:

[Repository] → [SystemD Service] → [Target]
     ↓               ↓              ↓
 Album files    deploy-base3     /usr/share/base3
 API code       deploy-api       /opt/api/
 Database       deploy-db        PostgreSQL

Building a Deployment DSL with UNIX Primitives:

Level 0: Linux Primitives (systemctl, git, rsync)
Level 1: SystemD Services (deploy-*.service)
Level 2: Aliases (da, st, logs, check)
Level 3: Higher-Order Operations (health-check, rollback)

Complete Universal Pattern Guide

Technical Deep Dive

Hot Takes & Philosophy

SystemD's Vanilla JS Moment

Once upon a time everyone leaned on jQuery. Then browsers grew up. SystemD feels the same—awkward adolescence behind it, ready for adult responsibilities.

Phone-Friendly Operations (Parenting Downtime)

The playground is loud, the kids are busy, and I can sneak in a quick deploy from my phone. tmux and tiny aliases are the real toys.

Simplicity Over Complexity

Modern CI/CD pipelines read like epic poems. Mine fits on a screen and doesn't require an interpreter—unless you count bash.

Read the full rants and hot takes

Implementation Guide

Deployment Pipeline Architecture

server-config (orchestrator)
├── Pulls latest code from git
├── Validates and deploys Caddy config
├── Triggers site deployments:
│   ├── base3-site → /usr/share/base3
│   ├── nimbus-site → /usr/share/caddy
│   └── weblog-site → /usr/share/weblog
├── Compresses assets (brotli/gzip)
├── Restarts Caddy
└── Health checks all sites

Management Commands

  • da - Deploy all services
  • st - Show service status
  • logs - Follow deployment logs
  • check - Test all sites

Current Implementation

  • Base3 - PWA album player with offline support
  • Weblog - Technical documentation system
  • Nimbus - Server monitoring dashboard

Technical Deep Dive

Logging Infrastructure

Live Demo

Development Log

Recent Updates

  • Deployment Recovery - SystemD services staged a revolt, I negotiated peace.
  • Logging Implementation - The journal now eats its veggies and keeps disk usage in check.
  • Security & Performance - HTTP/3, headers, and compressors for good measure.

Current Status

✅ All systems operational – which is my polite way of saying nothing's on fire.

Active Work

  • Nimbus monitoring dashboard
  • Base3 PWA improvements
  • Deployment pipeline testing

Latest: Deployment Recovery

Logging Implementation Story

Original Development Log