← Work

Employment — current role · mid-2024 – present

Self-HostedInfrastructure

Architecting, building and running the technology stack a working organization depends on.

ROLE  Technical owner — architecture, build, deployment, operationsSTATUS  In production, serving real usersFOR  a humanitarian organization
  • Proxmox
  • Frappe / ERPNext
  • n8n
  • Asterisk
  • FreePBX
  • KoboToolbox
  • Bitwarden
  • Dokploy
  • RustDesk
  • Bash
  • cron
  • Linux
8 self-hosted services in productionbackups automated, offsiterestore path exercised on every migration

An organization with no dedicated ops team. Virtualization, ERP, telephony, automation, and every internal web application, in production for the people who rely on them daily.

For hiring managers

Scope: technical owner. Architecture, build, deployment and operations — with no dedicated ops or platform team behind it.

Virtualization and hosting. Everything runs on Proxmox — bare-metal virtualization, meaning the machines, the VMs, the networking, the backups, and the upgrades are all owned. Not a managed platform; the hard parts are mine. Dokploy provides a self-hosted PaaS layer for application deployment on top.

ERP. Deployed and maintained Frappe/ERPNext, and wrote installation scripts to make the deployment repeatable. Frappe is a notoriously involved install; the script means the deployment can be rebuilt after a failure instead of being a one-off.

Telephony. Custom applications and scripts integrating with Asterisk and FreePBX, both to extract operational data from the phone system and to streamline the work of the operators using it. Most web developers never touch a phone system.

Automation. n8n for workflow automation, plus cron jobs and shell scripts across multiple servers for scheduled operations. This layer decides whether the stack runs itself or needs someone watching it.

Data collection. KoboToolbox — the standard humanitarian data-collection platform, used across the sector for field surveys and needs assessments.

Security and support. Self-hosted Bitwarden for credential management, RustDesk for remote support.

Applications. Websites and web applications built, architected and maintained across the organization's programmes. One public-facing site among them was built on a purchased template. The claim here is the infrastructure, not that site.

For clients

Self-hosting turns recurring per-seat licence costs into hardware and one engineer's time — if someone can operate it. That operating capability is what this page demonstrates.

The result: an ERP system, a phone system, workflow automation, secure credential management, field data collection, and the organization's web presence, all running on infrastructure the organization owns outright, with no vendor able to raise prices or discontinue a product they depend on.

The hard problem

Being the entire operations team

Eight production services, and no second person to catch a mistake before it reaches users. Every update has to land without breaking the systems that depend on it.

Backups are automated and offsite — the compute may sit on one machine; the data never does.

That forces a discipline a larger team never has to develop: anything done twice gets scripted, anything that depends on someone remembering gets automated, and every change to a live, stateful system is planned before it's made.

Backups

The restore path is exercised, not assumed

Backups are automated, offsite, and restore-tested. On top of scheduled verification, every migration and upgrade is performed by restoring from backup — so the recovery path is proven against real data each time the infrastructure changes, not just when a test says so. If a restore fails, it fails visibly, long before an emergency needs it.

Incidents

What breaking looks like here

Incidents in this environment aren't exotic: a mobile-signal coverage drop takes telephony quality down, or a power cut reboots a host and the operator panel doesn't come back on boot. The fix for the second is service supervision and start-order dependencies, so the next power cut passes without incident. Infrastructure work here means designing for an environment where electricity and signal are part of the threat model, not just disks and processes.

Trade-offs

What it cost

DecisionBoughtPaid
Self-hosting over SaaSCosts collapse; full data control; no vendor lock-inEvery outage is mine; upgrades are my job
Self-hosted compute, cloud backupDurability that survives losing the building, without paying for hosted computeAn ongoing cloud cost
Restore as the migration mechanismThe recovery path is continuously proven against real dataMigrations take as long as a restore takes — a slow restore is felt every time
Proxmox bare metal over cloudCheapest per unit of compute; no egress feesNo managed failover; hardware is a real risk
Frappe/ERPNext over custom buildMature ERP feature set for freeHeavy system to operate; customization fights the framework
n8n over bespoke scriptsNon-developers can read and modify workflowsAnother service to host and keep running
Ownership concentrated in one engineerFast decisions, deep system knowledgeA concentration of risk — and most of it points at me

A single-owner infrastructure works until the owner is unavailable. Repeatable installation scripts and automated offsite backups are real mitigation — the system can be rebuilt and the data survives — but neither solves one person holding the operating knowledge.

Certified alongside this role: Solution Architect · UML & OO Design · Clean Code · Application Security — 125.5 hours, Jan–Jun 2024. The full record →