A lightweight, agentless multi-node Docker deployment and host observability control plane based on declarative Docker Compose stacks.
Features โข Architecture โข Quick Start โข Documentation โข Tech Stack โข Bahasa Indonesia ๐ฎ๐ฉ
Docker Orkes solves the operational gap between single-server docker compose and heavy cluster orchestrators like Kubernetes or Docker Swarm. It allows DevOps engineers and sysadmins to manage dozens of independent VPS or bare-metal servers through a single unified Control Plane without installing any agents, runners, or background daemons on the target hosts.
Everything is performed over secure, agentless SSH:
- Push declarative Docker Compose templates.
- Inject node-specific environment variables (
.env). - Monitor remote disk capacity and container runtimes in real time.
- Edit remote stack files live with an integrated SFTP code editor.
- Automatically detect configuration drift between desired state and actual remote state.
- Backup all stacks and deployment manifests to an external Git Mirror.
- Agentless over Daemons: No agents or cluster daemons (Swarm/Kubernetes) consuming RAM or requiring maintenance on target nodes. Plain SSH and Docker are all you need.
- Declarative over Imperative: Manage applications as reproducible Compose templates and deployments with automatic drift detection, rather than ad-hoc container clicking.
- Agentless Vulnerability Scanning without Runtime Bloat: Docker Orkes audits container image security by executing ephemeral Trivy scanner containers directly on managed nodes via the SSH Executor, persisting CVE metrics in SQLite without embedding multi-gigabyte vulnerability databases into the Control Plane binary.
- 100% Self-Contained: Single static Go binary with zero external CDN dependencies, embedded SQLite, and embedded web terminal.
- ๐ Agentless SSH Architecture: Zero software footprint on target nodes. If the target server can run Docker and accept SSH connections, it can be managed by Docker Orkes.
- ๐ฆ Declarative Stack Templates: Define reusable
docker-compose.ymltemplates and deploy them across any target node with customized environment variables. - ๐จ VS Code-Style Stack Editor & Validation Guardrails: Edit Docker Compose manifests and environment variables with embedded VS Code Dark styling, line numbers, 2-space automatic indentation, matching brackets, fullscreen workspace expansion (
โถ), and instant pre-save syntax validation preventing invalid YAML or compose files withoutservices:from being saved. - ๐ Real-Time Configuration Drift Detection: Verify SHA-256 checksums and review line-by-line diffs between the Control Plane's Desired State and the Actual State on remote nodes. Choose to either Reconcile (overwrite remote) or Adopt (pull remote changes into Git).
- ๐ก๏ธ Agentless Image Vulnerability Scanning & Cooldown Protocol: Audit Node container images for CVEs using transient Trivy containers with dedicated host caching (
orkes-trivy-cache), 24-hour scan cooldown guards to prevent rate-limiting and host exhaustion, real-time background progress tracking, and interactive vulnerability report modals detailing package versions and CVE identifiers. - ๐ป 100% Offline Interactive Web Terminal: Launch low-latency browser PTY terminal sessions over WebSocket directly into node host shells or running container environments (
docker exec) with bundled offline xterm.js assets. - ๐ Deployment Revisions & 1-Click Rollback: Maintain forward-only, immutable snapshot histories of compose configurations and environment variables with bounded retention for instant rollbacks.
- ๐ Remote Stack Filesystem & Runtime Assets: Full remote directory browser, file creation, drag-and-drop & recursive folder upload (
webkitdirectory), remote archive extraction (.tar.gz,.zip), secret masking, and live code editing with instant redeployment. - ๐ Proactive Liveness Poller & Alerting: Automatic background auditing of host reachability, container health, and drift with edge-triggered webhook dispatches to Telegram, Discord, or generic endpoints.
- ๐ Host Observability & Container Logs: Real-time disk usage telemetry (
df -h), Docker engine vitals, container port mappings, and live container logs viewer. - ๐ Automated Git Mirror Backup: Maintain an external Git repository (GitHub, GitLab, Gitea) as a versioned audit log of all stack templates, deployment variables, and inventory.
- โก Auto-Inject SSH Key: Bootstrap new nodes automatically using temporary SSH passwordsโthe password is used once to append the Control Plane's public key to
~/.ssh/authorized_keysand is never saved. - ๐ก In-App Activity Console & Live Telemetry Stream: Real-time zero-polling diagnostic feed served via Server-Sent Events (SSE) with a 6-column running drawer (
TIME | LEVEL | MODULE | TARGET/NODE | MESSAGE | DETAILS), smart auto-scroll, pause/resume, level filters, unread error counters, global hotkey (Ctrl+```), and client-side.logand.json` export. - ๐ Bilingual Interface: Seamlessly switch between English and Bahasa Indonesia with instant client-side localization.
- ๐ Shared Operator Runbook: Built-in operational checklist and infrastructure notes synchronized directly to your Git repository as
RUNBOOK.md.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Docker Orkes Control Plane โ
โ (Go Single Binary + SQLite + embed.FS) โ
โโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SSH (Agentless) โ SSH (Agentless) โ Git SSH/HTTPS
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Node 1 โ โ Node 2 โ โ Git Mirror โ
โ (Docker Host) โ โ (Docker Host) โ โ(GitHub / GitLab)โ
โ โ โ โ โ โ
โ ~/.docker-orkes โ โ ~/.docker-orkes โ โ - Stacks โ
โ /stacks/... โ โ /stacks/... โ โ - Deployments โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ - inventory.jsonโ
โ - RUNBOOK.md โ
โโโโโโโโโโโโโโโโโโโ
- Control Plane host: Linux or macOS with Go 1.22+ (or pre-compiled binary).
- Target Nodes: Any Linux server with Docker and SSH server enabled (
systemctl status docker).
git clone https://github.com/herliansyah/docker-orkes.git
cd docker-orkes
go build -o bin/docker-orkes ./cmd/docker-orkes./bin/docker-orkes -addr :8080 -pass your-secure-passwordOpen your browser and navigate to http://localhost:8080. Log in with your password.
| Flag | Environment Variable | Default | Description |
|---|---|---|---|
-addr |
ADDR |
:8080 |
Web server listening address and port |
-pass |
MASTER_PASSWORD |
admin |
Master login password for the control plane |
-db |
DB_PATH |
docker-orkes.db |
SQLite database file path |
-log-file |
LOG_FILE |
docker-orkes.log |
Persistent rotating server log file path (empty to disable) |
-log-level |
LOG_LEVEL |
info |
Diagnostic logging level (debug, info, warn, error) |
Caution
NEVER STORE PERSISTENT APPLICATION DATA OR DATABASES INSIDE ~/.docker-orkes/
The Stack Directory (~/.docker-orkes/stacks/<stack-name>/) is reserved strictly for declarative configuration files (docker-compose.yml, .env) and lightweight auxiliary assets (Nginx configs, SSL certificates).
When an operator performs a Deployment Deletion with Data Purge, Docker Orkes executes docker compose down -v followed by an automated rm -rf on the Stack Directory. If persistent databases (e.g. ./data:/var/lib/mysql) are placed inside this directory, THEY WILL BE PERMANENTLY DESTROYED.
Built-in Guardrail: To protect against accidental destruction of misplaced databases, Docker Orkes audits the Stack Directory size before running rm -rf. If the directory exceeds 50 MB, the automated purge is blocked immediately by the Control Plane.
If your Node has a dedicated disk partition (e.g. /mydocker or /data) intended for Docker data:
- Persistent Databases / App Storage:
Always mount volumes using absolute host paths outside
~/.docker-orkes/or Docker Named Volumes:services: db: image: mysql:8.0 volumes: # โ CORRECT: Absolute host path on your dedicated partition - /mydocker/mysql-data:/var/lib/mysql # OR # โ CORRECT: Docker Named Volume (stored under Docker daemon's data-root) - mysql_data:/var/lib/mysql
- Relocating Entire
.docker-orkesto a Dedicated Partition: Do not modify application code. Use a native OS symbolic link on the Node:This offloads stack files transparently to your partition while maintaining full compatibility and sandboxing.mkdir -p /mydocker/docker-orkes ln -s /mydocker/docker-orkes ~/.docker-orkes
Comprehensive guides and technical documentation are available:
- ๐ Getting Started Guide (English) | Panduan Memulai (Bahasa Indonesia)
- ๐ ๏ธ Feature Deep Dive & Architecture (English) | Rincian Fitur & Arsitektur (Bahasa Indonesia)
- ๐ฆ Internal Hybrid Image Registry Setup (English) | Panduan Setup Registry Internal (Bahasa Indonesia)
- ๐ก๏ธ Disaster Recovery & Standby Setup (English) | Disaster Recovery & Standby Setup (Bahasa Indonesia)
- ๐ Architecture Decision Records (ADRs)
- ADR 0001: Agentless SSH Architecture
- ADR 0002: Control Plane Tech Stack
- ADR 0003: Stack Template and Deployment Model
- ADR 0004: Lightweight Liveness Poller and Edge-Triggered Alerting
- ADR 0005: Forward-Only Deployment Revisions with Bounded Retention
- ADR 0006: Active-Passive Control Plane Replication
- ADR 0007: Internal Hybrid Image Registry Architecture
- ADR 0008: Remote Stack Filesystem and Runtime Assets Management
- ADR 0009: Offline Web Terminal Architecture via WebSocket and PTY
- ADR 0010: Node Images and On-Demand Retention
- ADR 0011: Self-Contained Enterprise UI
- ADR 0012: Node Volumes and Networks Observability
- ADR 0013: Deployment Deletion Lifecycle and Adoption Safety
- ADR 0014: Deployment Preflight Checks and Execution Feedback
- ADR 0015: Agentless Transport Security and Filesystem Isolation
- ADR 0016: Stack Directory Isolation and Data Purge Guardrails
- ADR 0017: In-App Activity Console and Live Telemetry Stream
- Backend: Go (Standard Library +
net/httprouting) - Database: SQLite with Modernc pure-Go driver (
modernc.org/sqlite) - Transport:
golang.org/x/crypto/ssh&github.com/pkg/sftp - Frontend: HTML5 Templates embedded at compile time (
embed.FS) styled with Tailwind CSS - Version Control: Pure-Go Git implementation (
github.com/go-git/go-git/v5)
Contributions, feature requests, and bug reports are welcome! Feel free to check the issues page.
Distributed under the MIT License. See LICENSE for more information.
Crafted with care by Herliansyah.