| Area | What I actually do with it |
|---|---|
| π§ Linux & virtualisation | Proxmox VE on VMware Workstation Β· users and permissions Β· networking Β· systemd services |
| π³ Containers | Multi-service Docker Compose stacks Β· networks Β· volumes Β· health checks Β· env management |
| π§± Infrastructure as Code | Terraform-provisioned VMs Β· Ansible playbooks for repeatable configuration |
| π CI/CD & quality | Jenkins build β test β SonarQube pipelines Β· shell-based deploys Β· fixing broken credentials and SSH |
| βοΈ Cloud & edge | AWS EC2 Β· Cloudflare DNS Β· Caddy reverse proxy with automatic TLS |
| π Operations | Netdata Β· Dozzle Β· Portainer Β· reading logs Β· tracking down CPU, memory, disk and DB problems |
From an idea in the backlog to a healthy service in production β and back again when something breaks. Bold arrows = the delivery path Β· thin arrows = the operations loop Β· dotted = private admin access.
%%{init: {"theme": "base", "flowchart": {"wrappingWidth": 400}, "themeVariables": {"primaryColor": "#161b22", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#30363d", "lineColor": "#8b949e", "clusterBkg": "#0d1117", "clusterBorder": "#30363d", "titleColor": "#e6edf3", "edgeLabelBackground": "#161b22", "tertiaryColor": "#0d1117"}}}%%
flowchart TB
subgraph PLAN["π§ 1 Β· PLAN & CODE"]
direction LR
BACKLOG["π Backlog<br/>issues Β· incidents Β· tech debt"] --> CODE["π» App code + IaC<br/>Dockerfile Β· Terraform Β· Ansible"] --> PR["π Pull request<br/>review Β· branch protection"]
end
subgraph CI["βοΈ 2 Β· BUILD & TEST"]
direction LR
BUILD["ποΈ Build<br/>Jenkins Β· GitHub Actions"] --> TEST["π§ͺ Tests<br/>unit Β· integration"] --> SCAN["π SonarQube<br/>quality gate"] --> IMAGE["π¦ OCI image<br/>tagged with git SHA"] --> REG[("ποΈ Zot<br/>private registry")]
end
subgraph REL["π§± 3 Β· PROVISION"]
direction LR
TF["π§± Terraform apply<br/>Proxmox Β· Incus Β· EC2"] --> ANS["π§ Ansible<br/>harden Β· users Β· Docker"] --> DEPLOY["π’ Deploy job<br/>compose pull + up<br/>secrets from OpenBao"]
end
subgraph RUN["π 4 Β· PRODUCTION"]
direction LR
USERS(["π Users"]) --> CF["βοΈ Cloudflare<br/>DNS Β· WAF Β· CDN"] --> CADDY["π Caddy<br/>reverse proxy Β· auto-TLS"]
CADDY --> APP1["π₯οΈ App host 1<br/>Docker Compose"]
CADDY --> APP2["π₯οΈ App host 2<br/>Docker Compose"]
APP1 --> DB[("π Database")]
APP2 --> DB
end
subgraph OBS["π 5 Β· OBSERVE"]
direction LR
METRICS["π VictoriaMetrics<br/>metrics"] --> GRAFANA["π Grafana<br/>dashboards Β· alert rules"]
LOGS["π VictoriaLogs<br/>central logs"] --> GRAFANA
GATUS["β
Gatus<br/>uptime Β· SSL expiry"]
end
subgraph PROTECT["π‘οΈ 6 Β· PROTECT"]
direction LR
BACKUP["πΎ Portabase<br/>DB backups"] --> OFFSITE[("βοΈ Off-site S3<br/>Garage")] --> DRILL["β»οΈ Restore drill<br/>prove backups work"]
HC["β° Healthchecks<br/>missed-backup alarm"]
end
subgraph RESPOND["π¨ 7 Β· ALERT & RESPOND"]
direction LR
APPRISE["π£ Apprise API"] --> CHANNELS["π± ntfy Β· Slack Β· Email"] --> ONCALL["π§βπ On-call DevOps"] --> RUNBOOK["π Runbook<br/>rollback Β· scale Β· fix"] --> PM["π Blameless<br/>post-mortem"] --> LOOP(["π New backlog issues<br/>back to step 1"])
end
subgraph ACCESS["π ADMIN ACCESS"]
direction LR
LAPTOP["π» Admin laptop"] -. WireGuard .-> VPN["πΈοΈ NetBird<br/>zero-trust overlay"]
end
PLAN ==>|merge to main| CI
CI ==>|image pushed to Zot| REL
REL ==>|rolling deploy| RUN
RUN -->|metrics Β· logs Β· probes| OBS
RUN -->|nightly backups| PROTECT
OBS -->|alert fires| RESPOND
PROTECT -->|backup missed| RESPOND
ACCESS -.->|SSH Β· dashboards Β· DB| RUN
classDef plan stroke:#a371f7,stroke-width:2px
classDef ci stroke:#58a6ff,stroke-width:2px
classDef rel stroke:#d29922,stroke-width:2px
classDef run stroke:#3fb950,stroke-width:2px
classDef obs stroke:#39c5cf,stroke-width:2px
classDef prot stroke:#f778ba,stroke-width:2px
classDef resp stroke:#f85149,stroke-width:2px
classDef acc stroke:#8b949e,stroke-width:2px
class BACKLOG,CODE,PR plan
class BUILD,TEST,SCAN,IMAGE,REG ci
class TF,ANS,DEPLOY rel
class USERS,CF,CADDY,APP1,APP2,DB run
class METRICS,LOGS,GRAFANA,GATUS obs
class BACKUP,OFFSITE,DRILL,HC prot
class APPRISE,CHANNELS,ONCALL,RUNBOOK,PM,LOOP resp
class LAPTOP,VPN acc
style PLAN stroke:#a371f7,stroke-width:2px
style CI stroke:#58a6ff,stroke-width:2px
style REL stroke:#d29922,stroke-width:2px
style RUN stroke:#3fb950,stroke-width:2px
style OBS stroke:#39c5cf,stroke-width:2px
style PROTECT stroke:#f778ba,stroke-width:2px
style RESPOND stroke:#f85149,stroke-width:2px
style ACCESS stroke:#8b949e,stroke-width:2px
π Zoom in: reference architecture built from the underrated tools below
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#161b22", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#3fb950", "lineColor": "#8b949e", "edgeLabelBackground": "#161b22"}}}%%
flowchart TD
GH[GitHub] --> CI[Jenkins / CI pipeline]
CI --> REG[Private OCI registry: Zot]
REG --> EC1[Application host 1]
REG --> EC2[Application host 2]
EC1 --> LOG[Central log store: VictoriaLogs]
EC2 --> LOG
CI --> NOTIFY[Apprise API]
EC1 --> NOTIFY
EC2 --> NOTIFY
DB[(Database server)] --> BACKUP[Portabase]
EC1 --> BACKUP
EC2 --> BACKUP
LAPTOP[Admin laptop] -. private overlay .-> VPN[NetBird]
VPN -. private access .-> EC1
VPN -. private access .-> EC2
VPN -. private access .-> LOG
VPN -. private access .-> BACKUP
βοΈ NimbusOps Command CenterPython multi-cloud decision platform that simulates a production estate: incident blast radius, rollback priority, FinOps savings and compliance drift in one view. |
π CI/CD PipelinesJenkins pipeline that builds, tests and containerises a Python app β Dockerfile, automated tests and pipeline run screenshots. |
|
Travel site with a React frontend, a Node.js backend and MongoDB (seeded by an init script), wired together with Docker Compose. |
π Shell automationBash scripts for everyday automation β WHOIS summary reports for domains, plus terminal games written to practise scripting. |
𧬠KernalxMy first kernel, written in Assembly over two iterations β learning how a machine boots, from the metal up. |
π Internship notesNotes from my 2025 internship across DevOps, AI/ML and full-stack development. |
Hand-picked from the 649 one-command installers in community-scripts/Incus (the same app scripts as the Proxmox VE Helper-Scripts, running on Incus). Skip the obvious ones (Grafana, Jenkins, GitLab) β these are the tools that quietly solve real problems.
β If you only try five: Beszel Β· Gatus Β· Dagu Β· Pangolin Β· Backrest
# On an Incus host: replace <app> with the name in the "Script" column
# (read a script before you pipe it to bash)
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/Incus/main/ct/<app>.sh)"π Observability & monitoring β 9 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| Beszel | Lightweight server and Docker stats with alerts β a hub plus tiny agents instead of a full Prometheus stack | beszel |
| Gatus | Health checks as code: assert status, body, latency and cert expiry in YAML, and get a status page for free | gatus |
| VictoriaMetrics | Prometheus-compatible TSDB that needs far less RAM and disk β a drop-in remote-write target | victoriametrics |
| VictoriaLogs | Central logs without running ELK β fast LogsQL queries on modest hardware | victorialogs |
| OpenObserve | Logs, metrics and traces in one binary, stored cheaply on object storage | openobserve |
| SigNoz | OpenTelemetry-native APM β traces, metrics and logs in one UI; an open alternative to Datadog | signoz |
| Healthchecks | Dead-man's switch for cron jobs and backups β alerts you when something doesn't run | healthchecks |
| PatchMon | Shows which Linux hosts are missing updates and automates patching across the fleet | patchmon |
| SmokePing | Latency and packet-loss history that proves "it's the network" (or that it isn't) | smokeping |
π CI/CD, Git & automation β 9 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| Forgejo + Runner | Self-hosted Git with a GitHub-Actions-compatible CI runner β own the whole pipeline | forgejo Β· forgejo-runner |
| OneDev | Git server, CI/CD and issue boards in one app, with a GUI pipeline editor | onedev |
| Gitea Mirror | Auto-syncs your GitHub repos to Gitea/Forgejo β a cheap off-GitHub backup of all your code | gitea-mirror |
| Dagu | Cron replacement: DAG workflows in YAML with retries, logs and a web UI | dagu |
| xyOps | The next generation of Cronicle: job scheduling, visual workflows, monitoring and incident response | xyops |
| Semaphore UI | Web UI for Ansible, Terraform/OpenTofu and scripts β RBAC, schedules and run history | semaphore |
| Komodo | Build and deploy Docker/Compose across many servers from one UI, synced from Git | komodo |
| Zot | Minimal OCI-native image registry with mirroring, signing and vulnerability-scanning extensions | zot-registry |
| Dockge | Compose-first stack manager β your compose.yaml files stay on disk, not locked in a database |
dockge |
π Networking, DNS & edge β 9 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| Pangolin + Newt | Self-hosted tunnelled reverse proxy with built-in auth β expose services without opening ports | pangolin Β· newt |
| NetBird | WireGuard mesh VPN with SSO and access policies β private admin access to every host | netbird |
| Headscale | Self-hosted Tailscale control server β keep the Tailscale clients, own the coordination | headscale |
| Technitium DNS | Recursive + authoritative DNS server with DoH/DoT, blocklists and a clean web UI | technitiumdns |
| Blocky | DNS proxy and ad-blocker configured in one YAML file, with Prometheus metrics | blocky |
| Zoraxy | Reverse proxy with a GUI: ACME certs, GeoIP blocking and a built-in uptime monitor | zoraxy |
| GoDoxy | High-performance reverse proxy that configures routes automatically from your Docker containers | godoxy |
| Apt-Cacher NG | Caches apt packages for the whole lab β faster provisioning and less bandwidth | apt-cacher-ng |
| netboot.xyz | PXE boot menu for dozens of OS installers and rescue tools over the network | netboot-xyz |
π Security, identity & secrets β 10 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| OpenBao | Open-source community fork of HashiCorp Vault β secrets, dynamic credentials and PKI | openbao |
| Infisical | Secrets manager that syncs environment variables into CI/CD, Docker and Kubernetes | infisical |
| Pocket ID | Passkey-only OIDC provider β simple SSO for all your self-hosted apps | pocketid |
| Tinyauth | Tiny auth server that puts a login in front of any app behind your reverse proxy | tinyauth |
| LLDAP | Lightweight LDAP with a web UI β a user directory without the OpenLDAP pain | lldap |
| step-ca | Private CA with an ACME server β real TLS (and SSH certificates) for internal services | step-ca |
| CertMate | Control plane for TLS certs: issue, renew, inventory and deploy β ready for 47-day certificates | certmate |
| Teleport | Identity-based SSH, Kubernetes and database access with session recording | teleport |
| Wazuh | Open-source SIEM/XDR: file-integrity monitoring, vulnerability detection and compliance | wazuh |
| Yopass | Share secrets through end-to-end encrypted, self-destructing links instead of chat | yopass |
π οΈ Developer & ops utilities β 10 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| IT-Tools | Dozens of handy utilities: JWT decoder, crontab generator, chmod and subnet calculators, converters | alpine-it-tools |
| CyberChef | The "cyber Swiss Army knife" β chain decode, parse, hash and decrypt operations in the browser | cyberchef |
| OmniTools | Self-hosted everyday tools for images, PDFs, text and JSON β no ads, no tracking | omnitools |
| Mailpit | Fake SMTP server with a web UI and API β test app and CI emails safely | mailpit |
| WhoDB | Lightweight database explorer for Postgres, MySQL, SQLite, MongoDB, Redis and more | whodb |
| ChartDB | Visualise a database schema from a single query β instant ER diagrams | chartdb |
| Opengist | Self-hosted, Git-backed gists for scripts and config snippets | opengist |
| Termix | Self-hosted, browser-based server management: SSH terminal, tunnels and file manager | termix |
| Web-Check | One-shot website analysis: DNS, TLS, headers, open ports, tech stack and more | web-check |
| Gotenberg | API that converts HTML, Markdown and Office documents to PDF β drop it into any pipeline | gotenberg |
πΎ Storage & backups β 9 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| Garage | Lightweight, geo-distributed S3 storage built for small clusters and home labs | garage |
| VersityGW | Serves an existing filesystem over the S3 API β no data migration needed | versitygw |
| SeaweedFS | Fast distributed storage for billions of files, with S3, FUSE and WebDAV | seaweedfs |
| Backrest | Web UI and scheduler for restic β browse snapshots and restore with a click | backrest |
| Zerobyte | Backup automation for self-hosters, built on restic | zerobyte |
| Portabase | One place to back up and restore PostgreSQL, MySQL, MariaDB, MongoDB, Redis, SQLite and more | portabase |
| Databasus | PostgreSQL backups with point-in-time recovery and restore verification | databasus |
| Borg UI | Create, schedule and restore Borg backups from a web UI instead of long terminal commands | borg-ui |
| Rclone | "rsync for cloud storage" β sync, mount and encrypt across dozens of providers | rclone |
π Notifications & watchers β 5 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| Apprise API | One HTTP API that fans out to 100+ notification services (Slack, Telegram, email, ntfyβ¦) | apprise-api |
| ntfy | Push notifications from any script: curl -d "backup done" ntfy.sh/your-topic |
ntfy |
| Gotify | Self-hosted push server with a REST API and an Android app | gotify |
| Argus | Watches for new software releases and fires webhooks β a great trigger for upgrade pipelines | argus |
| Changedetection.io | Watches web pages and APIs for changes β vendor status pages, pricing, docs | changedetection |
πΊοΈ Infrastructure management & docs β 8 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| NetBox | Source of truth for IPs, racks, devices and circuits β feeds your automation | netbox |
| Scanopy | Network diagrams that update themselves | scanopy |
| Homelable | Interactive infrastructure diagram with live status monitoring | homelable |
| Rackula | Rack layout designer β plan the rack before you rack it | rackula |
| Cockpit | Web console for Linux servers: services, logs, storage, networking and updates | cockpit |
| PegaProx | Multi-cluster management for Proxmox VE and XCP-ng, with load balancing | pegaprox |
| Fleet | osquery-based visibility and device management for servers and laptops | fleet |
| Docmost | Collaborative wiki (a Confluence alternative) β the perfect home for runbooks | docmost |
π€ AI-assisted ops β 3 tools
| Tool | Why it's worth a look | Script |
|---|---|---|
| LiteLLM | One OpenAI-compatible gateway to 100+ LLM providers, with keys, budgets and logging | litellm |
| Ollama + Open WebUI | Run local LLMs behind a ChatGPT-style UI β private AI for logs and docs | ollama Β· openwebui |
| n8n | Visual workflow automation with AI nodes β glue alerts, tickets and chat together | n8n |
Full catalogue with ready-made commands: community-scripts.org





