-
Notifications
You must be signed in to change notification settings - Fork 0
feat: rc11 consolidation — derived system actions, terminal-error split, install.sh, guided setup #83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
feat: rc11 consolidation — derived system actions, terminal-error split, install.sh, guided setup #83
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
3d6e89e
feat: rc11 — derived-projection system actions, partial-config warn, …
PaulDotterer 2e2c18c
fix: rc11 review round 1 — async listener, terminal-error split, setu…
PaulDotterer cf87a76
fix: rc11 review round 2 — bound listener goroutines, regression tests
PaulDotterer 6d6650f
fix: rc11 review round 3 — CodeRabbit findings on PR #83
PaulDotterer 1bddada
fix: rc11 review round 4 — CodeRabbit findings on PR #83
PaulDotterer 0e244ac
fix: rc11 round 4b — single-label CONTROL_DOMAIN graceful default
PaulDotterer 713c265
fix: rc11 review round 5 — CodeRabbit findings on PR #83
PaulDotterer 441a882
fix: rc11 review round 6 — drift retry + meta-test tracking
PaulDotterer File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| # Power Manage Server — Quickstart | ||
|
|
||
| One-line install on a fresh Linux host with Docker + the compose plugin already installed: | ||
|
|
||
| ```bash | ||
| curl -fsSL https://raw.githubusercontent.com/manchtools/power-manage-server/main/deploy/install.sh | sudo bash | ||
| ``` | ||
|
|
||
| The installer: | ||
| 1. Verifies `docker` + `docker compose` are present (does **not** install them — you own that step). | ||
| 2. Downloads the `deploy/` tree from the latest pre-release tag. | ||
| 3. Copies `.env.example` to `.env` if missing. | ||
| 4. Runs `setup.sh` in **guided mode** — interactive prompts for domains, ACME email, and admin credentials; auto-generates strong defaults for every secret (Postgres / indexer / Valkey passwords, JWT secret, encryption key). | ||
| 5. Pulls the Power Manage container images. | ||
| 6. Brings the stack up via `docker compose up -d`. | ||
| 7. Prints the URLs and next steps. | ||
|
|
||
| ## Pinning a specific version | ||
|
|
||
| The installer defaults to `latest-rc` (the curated pre-release tag). For a stable release or a specific RC: | ||
|
|
||
| ```bash | ||
| curl -fsSL .../install.sh | sudo RELEASE_TAG=v2026.05 bash | ||
| ``` | ||
|
|
||
| > **Note:** the env var goes between `sudo` and `bash`, **not** before `curl`. By default `sudo` resets the environment (`env_reset`), so `RELEASE_TAG=… curl … | sudo bash` would only set the variable for the local `curl` process and the installer running under `sudo` would never see it. Putting it after `sudo` passes it through. | ||
|
|
||
| ## Non-interactive install | ||
|
|
||
| CI / Ansible / preconfigured `.env` setups can skip the guided prompts: | ||
|
|
||
| ```bash | ||
| curl -fsSL .../install.sh | sudo NO_PROMPT=1 bash | ||
| ``` | ||
|
|
||
| The installer expects `.env` (or `.env.example` to copy from) at `INSTALL_DIR` and runs `setup.sh --no-prompt` — strict env validation only, no prompts. | ||
|
|
||
| ## Custom install directory | ||
|
|
||
| ```bash | ||
| curl -fsSL .../install.sh | sudo INSTALL_DIR=/srv/pm bash | ||
| ``` | ||
|
|
||
| ## Re-running the installer | ||
|
|
||
| `install.sh` is idempotent. Re-running on an existing install: | ||
| - Preserves `.env` (your secrets stay intact). | ||
| - Pulls the chosen `RELEASE_TAG` images. | ||
| - Restarts the stack. | ||
|
|
||
| Use this for upgrades: | ||
|
|
||
| ```bash | ||
| sudo RELEASE_TAG=v2026.06 bash /opt/power-manage/install.sh # if previously installed | ||
| # or fetch a fresh installer | ||
| curl -fsSL .../install.sh | sudo RELEASE_TAG=v2026.06 bash | ||
| ``` | ||
|
|
||
| ## Manual install (if you'd rather not run a curl-pipe-bash) | ||
|
|
||
| ```bash | ||
| git clone https://github.com/manchtools/power-manage-server.git | ||
| cd power-manage-server/deploy | ||
| cp .env.example .env | ||
| ./setup.sh # guided env + cert generation | ||
| docker compose up -d | ||
| ``` | ||
|
|
||
| ## What the installer does NOT do | ||
|
|
||
| - **Install Docker.** Use [the official convenience script](https://docs.docker.com/engine/install/) or your distro's package manager first. | ||
| - **Configure DNS.** You need A/AAAA records pointing your `CONTROL_DOMAIN`, `GATEWAY_DOMAIN`, and (if terminals are enabled) `GATEWAY_TTY_DOMAIN` at this host. | ||
| - **Open firewall ports.** Traefik binds `:80` (LE http-01 challenge + redirect-to-https) and `:443` (everything else) on the host. Open those before the first start so Let's Encrypt can issue certificates. | ||
| - **Migrate from a pre-rc11 deploy.** This installer is for fresh installs and same-release upgrades. Migrating across breaking releases follows the per-release migration runbook. | ||
|
|
||
| ## After install | ||
|
|
||
| 1. Wait ~30 s for Let's Encrypt to issue certs on first run. | ||
| 2. Log in to `https://<CONTROL_DOMAIN>` with the bootstrap admin credentials the installer printed. | ||
| 3. Create real user accounts (UI, SSO, or SCIM) — the bootstrap admin is intentionally not for daily use; see [`.env.example`](./.env.example) for details. | ||
| 4. Generate a registration token and enroll your first agent. | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.