Live

DeployDock

DeployDock is a self-hosted deployment control panel for developers and small teams already running apps on VPS servers. It automates the workflow you already have — connect servers, register apps, run one-click deploys, stream logs, restart services, and roll back failed releases — through an on-demand SSH bridge or an outbound-only Go agent that health-checks each new container before switching traffic.

Focus

Deployment automation, secure server access, release pipeline state

Category

DevOps / Backend / Developer Tools

Stack

FastAPI, PostgreSQL, React, Vite, Go, Docker

DeployDock homepage. The headline reads “Deploy to your own servers,” beside a control panel with four applications and a live deploy log.

The problem

Automating deployments on servers people already run, without forcing a new runtime — while keeping SSH access pinned and audited, secrets encrypted, and every release health-gated before traffic switches.

Architecture

React Dashboard01
FastAPI Control Plane02
PostgreSQL State + Audit Trail03
SSH Bridge (on-demand)04
Go Agent (outbound-only)05
Docker Health-Gated Releases06
Existing systemd / nginx Apps07

Core Features

  • One-click deploys with a 12-state pipeline and one-click rollback
  • Two execution paths: on-demand SSH bridge or outbound-only Go agent
  • Live deployment log streaming over SSE
  • GitHub webhooks that auto-deploy and queue behind an active release
  • SSH keys and environment variables encrypted at rest with rotatable key ids
  • Agent registration with heartbeats and a command queue for agent-driven deploys

What I Learned

  • Automating a workflow people already trust beats asking them to migrate to a new runtime.
  • Deployments need an explicit state pipeline, not just streamed command output.
  • Health-gated traffic switches make rollback boring, and boring is the goal for releases.

Write-ups

3 min read

A deploy is a state machine, not a command

Why DeployDock tracks explicit release states instead of streaming shell output, and what health-gated cutover actually buys you.

  • #deployments
  • #architecture
  • #go