Modmon Documentation

website·Indexed 29 days ago

https://modmon.dev

Modmon is a pre-alpha deployment tool for managing software stacks using declarative Blueprints, Recipes, and flat files via a GitOps approach. It includes a CLI for project setup and depot management, support for single or multi-node clusters, and a Modmon API (v1.0.0) for cluster and node operations.

Tokens
5K
Snippets
25
Records
48
Agent score
50%

What's inside Modmon

  1. Overview of Modmon software components

    Modmon is a GitOps-focused, open-source, self-hosted deployment system designed for small to medium teams. It consists of four primary components:

    • modmon: The main package installed in the master repository. It provides the local developer experience and manages remote clusters.
    • modmon-server: A lightweight Go application that runs on production nodes to manage servers and deployments.
    • modmon-cli: A command-line interface for managing applications and clusters. It connects to remote servers via secure SSH tunnels, eliminating the need to open additional ports.
    • modmon-ui: A Vue-based web interface that wraps the CLI utilities for easier management of applications and clusters.
  2. Understand ModMon cluster node configurations

    ModMon cluster functionality can be deployed on either a single node (server) or across multiple nodes. In a multi-node configuration, all client interactions—including those from the CLI and the UI—must be directed exclusively to the master node.
  3. Understand Modmon Blueprints for stack definition

    Blueprints in Modmon are a declarative method for defining an application's stack, including its components, services, and dependencies. These blueprints are eventually compiled into docker-compose.yaml or docker-stack.yaml files, which Modmon uses to deploy the application. Blueprints can be managed via the Modmon CLI, the Modmon UI, or by editing the underlying YAML files directly.
  4. Automate server management and monitoring with Modmon

    Modmon provides automated setup, maintenance, and monitoring of servers and deployments, removing the operational overhead of infrastructure management from the developer.
  5. Identify supported services on the Edge decentralized cloud platform

    Edge is a decentralized cloud platform providing cost-effective and eco-friendly alternatives to traditional big-cloud services. The platform currently supports the following core services: Compute, Block Storage, and Object Storage.
  6. Understand and use Modmon Depots for project organization

    A depot in Modmon is a centralized location where all code required for a project is stored, though each component remains tracked separately (distinct from a monorepo).

    Key usage patterns include:

    • Project Services: All services belonging to a project should typically be placed in the depot.
    • External Dependencies: If you do not own the version control (VC) for a piece of code, it should be added as a standalone Docker image for pulling rather than being placed in the depot.
    • Internal Tooling: Developer tools can be included in the depot. To prevent these tools from being deployed to production or specific clusters, you can disable specific depot items for certain environments.
  7. Understand the core components of a ModMon Project

    A Project in ModMon contains all the necessary elements to initialize and manage a stack. The fundamental components include:

    • Blueprints: Definitions for services and databases, including repositories that are cloned into the project depot.
    • Recipes: Specific instructions for deployment.
    • Clusters: Infrastructure groupings (which can optionally be outsourced to a separate repository).
    • Access Control Lists: Permissions and security configurations for the project.
  8. Manage node maintenance and security

    Modmon Server automatically manages the lifecycle and health of cluster nodes. This includes:

    • Keeping OS packages up-to-date.
    • Applying security hardening.
    • Installing and managing Docker and Docker Swarm/Compose.
    • Managing the Docker network used to connect all services.
  9. Understand the modmon-server tech stack

    The modmon-server backend is built using Go and the Buffalo framework. Go was selected because it is a compiled language with a small memory footprint, high speed, and excellent integration with Docker, which is the primary use case for the server.