From e3749577d175b44937e19cc12604a149f41121e3 Mon Sep 17 00:00:00 2001 From: Vladimir Eremin Date: Sat, 11 Jul 2026 19:47:37 +0300 Subject: [PATCH] docs: rewrite README with a friendly what/why/how structure Open with a centered logo and a plain-language description of what apex does for a self-hoster, then Why, then How it works. Quick start shows a minimal selfhost.example.com bootstrap. Links the published docs (en + Russian) and the getting-started guide. Drops badges and the repo-layout table (covered in docs). --- README.md | 109 ++++++++++++++++++++++++++++++++++++------------ assets/logo.png | Bin 127271 -> 129452 bytes assets/logo.svg | 35 ---------------- 3 files changed, 82 insertions(+), 62 deletions(-) delete mode 100644 assets/logo.svg diff --git a/README.md b/README.md index f53498e..85fcedb 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,93 @@ -# apex +

+ apex.ermnvldmr.com logo +

-The **commons** of an apex fleet: a stock-python engine (`apex /`) and -the shared core docker-compose, consumed by every node as the `commons/` git submodule. -The framework assumes no particular domain — every node declares its own identity in -`node.env`. +# apex.ermnvldmr.com commons -## Layout -- `apex` — launcher (python3, stdlib only); node `init.sh` symlinks it onto `PATH`. -- `engine/` — the runner: CLI, identity, overlay, context, and the `ctx.*` helper library. -- `actions/` — grouped actions; the path IS the name (`configure/ufw`, `tiers/link`, …). -- `compositions/apex/docker-compose.yml` — the shared, `${env}`-parameterized core compose. -- `vendor/` — pinned pure-python third-party (empty; see `vendor/VENDORED.md`). -- `tests/` — stdlib `unittest` suite (`tests/run.sh`). +apex helps you run a bunch of self-hosted apps across a few machines — a VPS here, a home server +there — and keep them consistent, reproducible, and under version control. Instead of hand-tuning +every box and copy-pasting compose files around, you describe each machine once in its own git +repository, share a common set of conventions and building blocks between them, and manage the +whole thing with one small command: `apex`. -Node-specific tooling lives in each node repo's `proprietaries/` — commons holds only -what every node shares. +It's for the person who self-hosts a handful of mostly-unrelated things — a media server, a +password vault, a mail server, some *arr apps — and wants the fleet to feel like one tidy, +git-tracked system instead of a pile of snowflakes. -## Usage (on a node) -`apex` acts on the **local checkout** — no `` argument. Identity comes from -`node.env` (`APEX_NODE_HOST`, `APEX_NODE_FQDN`, `APEX_SUBNET`). -- `apex` / `apex --help` — list actions -- `apex configure/ufw` — render + apply this node's ufw config -- `apex configure` — run every `configure/*` in order -- `apex compose up` — bring up the node's compositions +## Why -## Constraints -git + python3 stdlib only. No pip/Node/Go/CUE. Composes are hand-authored (no codegen). +Self-hosting across a few boxes tends to sprawl. Every host slowly becomes a one-off, +configuration drifts away from whatever you last wrote down, and "how did I set this up again?" +turns into a recurring question. apex keeps the shared parts in one versioned place and every host +as a plain, reviewable git repo — so your setup is something you can read, diff, and rebuild, not +something you hope you still remember. + +A few things that keep it pleasant to live with: + +- **No control plane.** Nothing central to run or babysit — every command acts on the machine you + run it on. The "fleet" is just a set of repositories that share the same building blocks. +- **No lock-in, no build step.** Just `git` and Python's standard library — no pip, Node, Go, or + code generation. The compose files are hand-written and stay readable. +- **Assumes nothing about your setup.** A machine says who it is in a small `node.env` file; apex + makes no assumptions about your domain, hosting provider, or topology. + +## How it works + +- **Each host is a git repository** that pins apex as a shared `commons/` submodule, then adds its + own `compositions/` (the services that host runs) and `proprietaries/` (anything special to that + host). +- **One command, grouped actions.** You drive everything with `apex /` — the path + *is* the name (`configure/ufw`, `compose up`, `sync/repository`, …). A host can override or + extend any shared action with its own, through a small overlay. +- **A shared compose core** gives every host the same foundation — an edge reverse proxy (Traefik) + and a Docker-socket proxy — plus opt-in pieces you switch on per host: AdGuard, an Xray edge, a + Grafana Alloy metrics/logs agent, and label-driven `restic` backups. +- **Your setup captures itself.** A scheduled "capture-up" records each host's live state back into + its repo on a `sync/` branch, so drift shows up as a diff you can review. + +Under the hood it's deliberately boring: a `python3`-stdlib engine that resolves the overlay, works +out the host's identity, builds a context of helpers, and hands it to your action. + +📖 **[Read the docs](https://docs.ermnvldmr.com/en/apex/)** for the full picture — concepts, guides, +and reference — also available in [Russian](https://docs.ermnvldmr.com/ru/apex/). + +## Quick start + +Every host is its own git repository that pins apex. Bringing up a host called +`selfhost.example.com` looks like this: + +```sh +# Get the host's repo (it pins apex as commons/) and put `apex` on your PATH +git clone --recurse-submodules git@github.com:you/selfhost.example.com.git +cd selfhost.example.com && ./init.sh && source ~/.bashrc + +# Tell apex who this host is +cat > node.env <<'EOF' +APEX_NODE_FQDN=selfhost.example.com +APEX_NODE_HOST=selfhost.example.com +APEX_SUBNET=198.18.16.0/24 +EOF + +apex configure # set the host up: firewall, crowdsec, cron, systemd, routing +apex compose up # bring its services online +``` + +A couple of steps sit in between on a real host — linking storage, provisioning users, filling in +secrets. The **[Getting started guide](https://docs.ermnvldmr.com/en/apex/getting-started/)** walks +through the whole thing. + +## Requirements + +- `git` and `python3` — standard library only, nothing to install. +- A Debian-based host with Docker and `docker compose` v2. ## License -BSD 2-Clause (see `LICENSE`). + +BSD-2-Clause — see [`LICENSE`](LICENSE). --- Portions of this project's source code may have been developed with the assistance of AI -code-generation tools. Contributions made with the help of such tools are welcome, provided -the code quality stays within an acceptable range and the contributor fully understands the -submission they are making. +code-generation tools. Contributions made with the help of such tools are welcome, provided the +code quality stays within an acceptable range and the contributor fully understands the submission +they are making. diff --git a/assets/logo.png b/assets/logo.png index 762e3e81f1ebfb35921cb8a06b41af37b75c84cf..6bb48597d800c744c5ba024f9a2e7a7545a5a49d 100644 GIT binary patch delta 28150 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -