Installation
Deploy the automation system by running the following command on target production servers:
curl https://seed.hyper.media/deployment.sh | shThis installer:
Install the dependencies needed to run bun scripts and docker compose
Fetches the bun script, and hands the control over the bun script
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
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
Example:
bun run deploy.tsx2. 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"
}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