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>
5 files changed,
+26 insertions,
-28 deletions
| 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 |
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 |
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 |
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 |
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 |
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 |
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 |
|
|