Files
runix/README.md
T

86 lines
3.2 KiB
Markdown
Raw Normal View History

2026-07-27 02:19:11 +03:00
# Runix
2026-07-27 01:43:48 +03:00
2026-07-27 02:19:11 +03:00
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
2026-07-27 02:19:11 +03:00
```
Binaries are served from object storage, so this needs no account and no
token. To pin a version, add `--version v0.5.0`.
2026-07-27 02:19:11 +03:00
### 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 <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
2026-07-27 02:19:11 +03:00
```
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
2026-07-27 02:19:11 +03:00
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
2026-07-27 02:19:11 +03:00
```
## Releases
Each release publishes, for `linux/amd64` and `linux/arm64`:
- `runix-server_linux_<arch>` — the control plane
- `runix-agent_linux_<arch>` — 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.
2026-07-27 02:19:11 +03:00
## 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
2026-07-27 02:19:11 +03:00
```