[ [object Object] ]

DHDTech.io Cloud - Self-Hosted Control Panel for Our Infrastructure

PythonFastAPIPydanticReactTypeScriptViteTailwind CSSxtermuPlotPostgreSQLPgBouncerRedisDockerDocker ComposeHAProxyNginxCloudflare TunnelGrafana AlloyLokiBitwardenboto3pytestVisit live site
DHDTech.io Cloud - Self-Hosted Control Panel for Our Infrastructure

/// SECTION 01 — OVERVIEW

Overview

The self-hosted control panel behind every DHDTech.io site and web service. One bare-metal host runs everything in Docker behind a Cloudflare Tunnel, and this panel is the only way in: projects and services, blue-green deploys with their live execution log, backups and restores, per-service terminals in the browser, and a Postgres monitor built on pg_stat_statements.

The Challenge

Managed platforms bill per service, hide the host you are already paying for, and scatter deploys, backups and database access across separate vendor dashboards. We wanted the whole estate visible and operable from one place, without handing the infrastructure to somebody else.

The Solution

A FastAPI backend with a React 19 front end, served from the same container. Services are declared in a catalog that drives Docker Compose, nginx, HAProxy and Cloudflare ingress. Deploys run blue-green: bring up the -next sibling, health-gate it, then swap the network alias. A poller watches each project's branch every minute and enqueues deploys with retry backoff. Backups pipe pg_dump through zstd into S3 behind an integrity guard, restore into a fresh database so live is never overwritten, and promote by rename. The panel is itself split into least-privilege containers — edge, secrets, git-service, db-admin, and a host-agent that is the only one holding the Docker socket. A bearer-token machine API is published with an OpenAPI 3.1 document.

Highlights

  • [ BARE-METAL HOST RUNNING THE WHOLE ESTATE ]
    1
  • [ DEPLOYS WITH A HEALTH-GATED ALIAS SWAP ]
    Blue-green
  • [ BEARER-TOKEN MACHINE API ]
    OpenAPI 3.1
  • [ BACKUP CADENCE, RESTORE NEVER TOUCHES LIVE ]
    30 min

[ Call to action ]

Ready to scale your engineering team?

Tell us the roles you need to fill and we'll get back within 24 hours.