Skip to content

About

๐Ÿš€Lightweight, agentless multi-node Docker Compose control plane with real-time host observability, configuration drift detection, offline web terminal (PTY), and automated Git mirror backup.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

60 Commits

Folders and files

Repository files navigation

๐Ÿณ Docker Orkes

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 ๐Ÿ‡ฎ๐Ÿ‡ฉ


Overview

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.

Design Philosophy: Pragmatic, Lean, and Self-Contained

  • 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.

Key Features

  • ๐Ÿš€ 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.yml templates 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 without services: 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_keys and 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.

Architecture

                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                 โ”‚       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    โ”‚
                                                        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Quick Start

Prerequisites

  • 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).

1. Build the Binary

git clone https://github.com/herliansyah/docker-orkes.git
cd docker-orkes
go build -o bin/docker-orkes ./cmd/docker-orkes

2. Launch Control Plane

./bin/docker-orkes -addr :8080 -pass your-secure-password

Open your browser and navigate to http://localhost:8080. Log in with your password.

Configuration Flags & Environment Variables

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)

โš ๏ธ Storage Architecture & Data Persistence Best Practices

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.

Proper Patterns for Dedicated Partitions & Persistent Data (e.g. /mydocker)

If your Node has a dedicated disk partition (e.g. /mydocker or /data) intended for Docker data:

  1. 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
  2. Relocating Entire .docker-orkes to a Dedicated Partition: Do not modify application code. Use a native OS symbolic link on the Node:
    mkdir -p /mydocker/docker-orkes
    ln -s /mydocker/docker-orkes ~/.docker-orkes
    This offloads stack files transparently to your partition while maintaining full compatibility and sandboxing.

Documentation

Comprehensive guides and technical documentation are available:


Tech Stack

  • Backend: Go (Standard Library + net/http routing)
  • 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)

Contributing

Contributions, feature requests, and bug reports are welcome! Feel free to check the issues page.


License

Distributed under the MIT License. See LICENSE for more information.

Crafted with care by Herliansyah.

About

๐Ÿš€Lightweight, agentless multi-node Docker Compose control plane with real-time host observability, configuration drift detection, offline web terminal (PTY), and automated Git mirror backup.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages