# Runix Runix is an infrastructure management platform: one control plane manages a fleet of hosts through lightweight agents that dial out over WebSocket (NAT-friendly — nothing connects *in* to your servers). Manage Docker, Compose, systemd units and native daemons; browse and edit files; open terminals and consoles; schedule tasks; and update the whole fleet from the UI. This repository holds the **release binaries and the installer**. The source lives in a separate repository. ## Install One command sets up a host. Run it as root; it asks what the host should be (control plane, agent, or both), checks prerequisites, installs under `/opt/runix`, and wires up systemd. ```sh curl -fsSL https://runix-releases.s3-alpha-web.astra-dev.online/install.sh | sudo sh ``` Binaries are served from object storage, so this needs no account and no token. To pin a version, add `--version v0.5.0`. ### Roles | Command | What it installs | |---|---| | `sudo sh install.sh --role all-in-one` | Control plane **and** an agent on this host (single-host setup) | | `sudo sh install.sh --role server` | Control plane only | | `sudo sh install.sh --role agent --url https://runix.example.com --token ` | An agent that joins an existing control plane | The all-in-one and server roles can provision PostgreSQL in Docker for you (`--db docker`) or use one you already run (`--dsn postgres://…`). Add `-y` for an unattended install that takes sensible defaults. `sh install.sh --help` lists every flag. Everything lives under one directory: ``` /opt/runix/bin/ runix-server, runix-agent /opt/runix/etc/ server.env, agent.env (0600 — secrets live here) /opt/runix/postgres/ docker-compose.yml, data/ (control plane) /opt/runix/agent/ supervised daemon state (agent) ``` ## Update Re-running the installer upgrades in place — binaries are replaced and services restarted, while your configuration (above all the JWT and encryption secrets) is preserved: ```sh curl -fsSL https://runix-releases.s3-alpha-web.astra-dev.online/install.sh | sudo sh -s -- -y ``` Or update from the UI: an administrator sees an **Updates** page that checks object storage for the latest release and updates the control plane and each agent with one click. Point a control plane at this repository with: ``` RUNIX_UPDATE_MANIFEST=https://runix-releases.s3-alpha-web.astra-dev.online/latest.json ``` ## Releases Each release publishes, for `linux/amd64` and `linux/arm64`: - `runix-server_linux_` — the control plane - `runix-agent_linux_` — the agent - `install.sh` — this installer - `SHA256SUMS` — checksums; the installer verifies every download against it Binaries are built automatically from source on tag by the CI runner and published to object storage as well as to this repository. `latest.json` beside them names the newest version and every asset's checksum — that is what the installer and the in-app updater read. ## Verify a download by hand ```sh curl -fsSLO https://runix-releases.s3-alpha-web.astra-dev.online/v0.5.0/runix-server_linux_amd64 curl -fsSL https://runix-releases.s3-alpha-web.astra-dev.online/v0.5.0/SHA256SUMS | sha256sum -c --ignore-missing ```