Skip to main content

max / makenotwork

docs: point deploy docs at Sando, retire deploy.sh references Policy is always Sando, never deploy.sh, but README/CONTRIBUTING across the server and mnw-cli still pointed a fresh reader at deploy/deploy.sh as the production path (and advertised cargo zigbuild cross-compilation, a convention violation). Repoint all six locations at the Sando controller; label the scripts as retained cutover references only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-23 01:43 UTC
Commit: 22e15846c3d4298c71b1eb37178b9b32e8ea0375
Parent: 40a467d
5 files changed, +26 insertions, -28 deletions
M README.md +8 -12
@@ -46,7 +46,7 @@ TEST_DATABASE_URL="postgres://user:pass@host:5432/postgres" cargo test --test in
46 46 cargo run --bin mnw-admin
47 47 ```
48 48
49 - Production deployment uses `cargo zigbuild` for cross-compilation to x86_64 Linux. See `server/deploy/deploy.sh`.
49 + Production deploys run through Sando, the build-and-release controller (`sandod`, on fw13). See Deployment below.
50 50
51 51 ### Key Integrations
52 52
@@ -61,18 +61,14 @@ Production deployment uses `cargo zigbuild` for cross-compilation to x86_64 Linu
61 61
62 62 Runs on a Hetzner VPS with systemd and Caddy (reverse proxy + TLS). No Docker.
63 63
64 - ```sh
65 - cd server/
66 -
67 - # Full deploy (cross-compile + upload + restart)
68 - ./deploy/deploy.sh
64 + Deploys go through Sando, the pipeline controller (`sandod`, on fw13). Sando
65 + builds the server natively, runs the gate tiers, and swaps the release on the
66 + prod host. Deploying by hand is not supported: no `deploy.sh`, no `scp`, no
67 + building on the prod box. The operator procedure lives in
68 + `sando/deploy/README.md`.
69 69
70 - # Binary-only deploy (skip config files)
71 - ./deploy/deploy.sh --quick
72 -
73 - # Config-only deploy (Caddyfile, systemd unit, static assets, error pages)
74 - ./deploy/deploy.sh --config
75 - ```
70 + The old `server/deploy/deploy.sh` is retained only as a cutover reference and
71 + must not be used.
76 72
77 73 ### Testing
78 74
@@ -99,13 +99,13 @@ All commands support `--json` for machine-readable output.
99 99
100 100 ## Deployment
101 101
102 - ```sh
103 - ./deploy/deploy.sh # Full: build + upload + config + restart
104 - ./deploy/deploy.sh --quick # Build + binary + restart
105 - ./deploy/deploy.sh --config # Config files only
106 - ```
102 + mnw-cli ships as a companion of the server, in lockstep with each Sando promote
103 + (`sando.toml` deploys it alongside the `makenotwork` binary on prod-1). There is
104 + no separate deploy step and no manual `scp`. See `../sando/deploy/README.md`.
107 105
108 - Deploys to hetzner (`100.120.174.96`) as a systemd service with security hardening (ProtectSystem=strict, PrivateTmp, NoNewPrivileges).
106 + It runs on hetzner as a systemd service with security hardening
107 + (ProtectSystem=strict, PrivateTmp, NoNewPrivileges). The old
108 + `deploy/deploy.sh` is a retired reference, not a supported path.
109 109
110 110 ## Key Paths
111 111
@@ -117,7 +117,7 @@ Deploys to hetzner (`100.120.174.96`) as a systemd service with security hardeni
117 117 | Non-interactive commands | `src/commands.rs` |
118 118 | SFTP + staging | `src/ssh/sftp.rs`, `src/staging.rs` |
119 119 | Git proxy | `src/ssh/git.rs` |
120 - | Deploy script | `deploy/deploy.sh` |
120 + | Deploy script (retired) | `deploy/deploy.sh` |
121 121 | systemd unit | `deploy/mnw-cli.service` |
122 122
123 123 ## License
@@ -151,5 +151,5 @@ Target: port 22 on hetzner (after migrating sshd to port 2200 on Tailscale only)
151 151 | API client | `src/api.rs` |
152 152 | Commands | `src/commands.rs` |
153 153 | Config | `src/config.rs` |
154 - | Deploy | `deploy/deploy.sh` |
154 + | Deploy | Sando companion, in lockstep with the server promote (`../../sando/deploy/README.md`) |
155 155 | systemd unit | `deploy/mnw-cli.service` |
@@ -467,11 +467,13 @@ Always use the latest stable release of every dependency. When upgrading introdu
467 467
468 468 ## Deployment
469 469
470 - Deploy from the `server/` directory:
471 - ```bash
472 - ./deploy/deploy.sh # Full: cross-compile + config + binary + restart
473 - ./deploy/deploy.sh --quick # Binary only + restart
474 - ./deploy/deploy.sh --config # Config files only
475 - ```
470 + Deploys go through Sando, the pipeline controller (`sandod`, on fw13), which
471 + builds the server natively, runs the gate tiers, and swaps the release on the
472 + prod host. Never deploy by hand: no `deploy.sh`, no `scp`, no building on the
473 + prod box. The operator procedure lives in `../sando/deploy/README.md`.
474 +
475 + The version is read from `Cargo.toml` and compiled into the binary via
476 + `env!("CARGO_PKG_VERSION")` for Sentry release strings. Bump the version in
477 + `Cargo.toml` before every production deploy.
476 478
477 - Cross-compiles to x86_64-unknown-linux-gnu via `cargo zigbuild`. Version is read from `Cargo.toml` and compiled into the binary via `env!("CARGO_PKG_VERSION")` for Sentry release strings. Bump the version in `Cargo.toml` before every production deploy.
479 + `server/deploy/deploy.sh` is a retained cutover reference, not a supported path.
@@ -8,7 +8,7 @@ Built with Axum, SQLx (PostgreSQL), and Askama templates.
8 8
9 9 - **Architecture:** `docs/architecture.md`
10 10 - **Contributing:** `CONTRIBUTING.md`
11 - - **Deployment:** `deploy/deploy.sh` (run from this directory)
11 + - **Deployment:** through Sando; see `../sando/deploy/README.md`
12 12 - **Schema:** `docs/schema.md`
13 13 - **Troubleshooting:** `docs/troubleshooting.md`
14 14