# 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://vcs.astra-dev.online/svesnav/runix/raw/branch/main/install.sh | sudo sh ``` Prefer to pin a version, or your instance still requires sign-in to read raw files? Use the release asset instead — it downloads without a login: ```sh curl -fsSL https://vcs.astra-dev.online/svesnav/runix/releases/download/v0.5.0/install.sh | sudo sh -s -- --role all-in-one ``` ### 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://vcs.astra-dev.online/svesnav/runix/raw/branch/main/install.sh | sudo sh -- -y ``` Or update from the UI: an administrator sees an **Updates** page that checks this repository 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_API_BASE=https://vcs.astra-dev.online/api/v1 RUNIX_UPDATE_REPO=svesnav/runix ``` ## 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 here and to the source repository. ## Verify a download by hand ```sh curl -fsSLO https://vcs.astra-dev.online/svesnav/runix/releases/download/v0.5.0/runix-server_linux_amd64 curl -fsSL https://vcs.astra-dev.online/svesnav/runix/releases/download/v0.5.0/SHA256SUMS | sha256sum -c --ignore-missing ```