Hosted onhyper.mediavia theHypermedia Protocol

    Installation

      Deploy the automation system by running the following command on target production servers:

      curl https://seed.hyper.media/deployment.sh | sh
      1

      This installer:

        Install the dependencies needed to run bun scripts and docker compose

        Fetches the bun script, and hands the control over the bun script

        1

    Deployment Script Architecture

      Runtime: Bun (TypeScript/TSX) Source: https://github.com/seed-hypermedia/seed Execution Schedule: Nightly via cron. The bun script, once run, will create a cronjob with the resulting configuration that will run every night. Modes: Headless (default), Wizard Using @clack/prompts

    Operational Modes

      1. Headless Mode (Default)

        Automated deployment execution without user interaction.

          Workflow:

            Reads configuration from /shm/config.json

            1

            Fetches the latest docker-compose.yml from https://github.com/seed-hypermedia/seed

            Compares current running stack against target configuration

            Uses docker-rollout to orchestrate deployment with automatic error handling and rollback

            1

          Example:

          bun run deploy.tsx

      2. Wizard

        We should ask the user the necessary questions to populate the Configuration Management file, such as the domain to be used, the email in case we need to contact the technical guy, any custom configuration (for example, the debug level desired, if this is a dev or a production deployment. All these questions should feel like a journey and should also give feedback to the user why we are asking and what difference does it make. For this purpose, a tool like @clack/prompts its well suited

    Configuration Management

      Location: /shm/config.json Purpose: Stores deployment parameters and tracks desired state

      Example structure:

      {
        "domain": "node1.seed.run",
        "email": "ops@seed.hypermedia",
        "compose_url": "https://raw.githubusercontent.com/seed-hypermedia/seed/main/ops/docker-compose.yml",
        "compose_sha": "a3f2b1c",
        "compose_envs": {"INCLUDE_STATS":true, "LOG_LEVEL":"debug"},
        "last_script_run": "2026-01-21T10:30:00Z",
        "environment": "dev",
        "link_secret": "aF56Eh0jR32"
      }
      1

    Dependencies

      Bun: JavaScript/TypeScript runtime (ensure installed on target servers)

      Docker & Docker Compose: Container orchestration

      docker-rollout: Zero-downtime deployment tool with automatic error handling and rollback (GitHub)

      curl: For installation script fetching

    Cron Configuration

      The installer sets up a cron job that runs nightly in headless mode:

      0 2 * * * cd /opt/seed-deploy && bun run deploy.ts >> /var/log/seed-deploy.log 2>&1