Publish the reviewed allowlisted snapshot whose exact binary completed maintenance deployment, rollback, and reactivation exercises for Gamertan and Sandwich Hime. Private-Source-Commit: 4d7094c8b7c61991bfb67b11fc1558724c874eb2 Private-Source-Tree: 54a2f74804f7acddf3755d7d4da5b97f5fc28381 AI-Assistance: OpenAI Codex assisted implementation, testing, security review, and release verification. Signed-off-by: Cole Speelman <crspeelman@gmail.com>
31 lines
1.4 KiB
Markdown
31 lines
1.4 KiB
Markdown
# Reusable Tend examples
|
|
|
|
This subtree is licensed 0BSD so an operator can copy and adapt it without
|
|
bringing the Tend program's AGPL license into an application configuration.
|
|
|
|
The blue/green example expects one separately reviewed environment file that
|
|
the two installed slots and transient validation use consistently:
|
|
|
|
```text
|
|
# /etc/tend/environment/example-site.env
|
|
APP_SECRET=replace-on-server
|
|
```
|
|
|
|
The blue/green systemd slot units then read the nonsecret listen address from
|
|
`/etc/tend/slots/example-site-blue.env` or `-green.env`; Tend overrides only
|
|
the isolated candidate address. Secret values never enter `tend.json`.
|
|
|
|
The singleton example follows the same split: its shared root-only environment
|
|
file omits the configured listen key, the installed unit owns the live address,
|
|
and Tend supplies only the transient candidate address. This prevents a shared
|
|
environment file from overriding the isolated candidate port.
|
|
|
|
Production configuration belongs outside the source checkout, owned by root,
|
|
and not group- or world-writable. The Caddy handler template is an entire
|
|
imported handler fragment; the enclosing site, matchers, and routing precedence
|
|
remain operator-owned.
|
|
|
|
`server/` demonstrates the schema-2 receive policy, forced OpenSSH command,
|
|
restricted sudo entry, two independent service configurations, and secret-file
|
|
placement. The values are placeholders, not an installation script.
|