docs: update quick start to use setup.py wizard

Replace manual 6-step docker compose instructions with python3 setup.py
in README, website landing page, and docs page.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jason Staack
2026-03-15 18:47:08 -05:00
parent e3215812d8
commit e01ce33094
3 changed files with 35 additions and 61 deletions

View File

@@ -63,39 +63,25 @@ Web UI
## Quick Start ## Quick Start
```bash ```bash
# Clone and configure # Clone and run the setup wizard
git clone https://github.com/staack/the-other-dude.git && cd the-other-dude git clone https://github.com/staack/the-other-dude.git && cd the-other-dude
cp .env.example .env python3 setup.py
``` ```
**Edit `.env` before starting** -- at minimum, generate unique values for: The setup wizard handles everything interactively:
```bash - Pre-flight checks (Docker, ports, RAM)
# Generate a JWT signing key - Database password configuration
JWT_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(64))") - Cryptographic key generation (JWT, encryption)
- Admin account creation
- SMTP configuration (optional)
- Domain and reverse proxy setup (Caddy, nginx, Apache, HAProxy, Traefik)
- OpenBao (KMS) bootstrap
- Docker image builds
- Stack startup and health checks
# Generate a Fernet encryption key (used to encrypt device credentials at rest) On first launch, the web UI walks you through enrolling your Secret Key, adding your
CREDENTIAL_ENCRYPTION_KEY=$(python3 -c "import secrets, base64; print(base64.b64encode(secrets.token_bytes(32)).decode())") first organization, and onboarding your first device.
```
> **Warning**
> The `.env.example` ships with **hard-coded dev defaults** for both keys. These are fine for local development but **must be replaced before exposing the instance to any network**. Anyone with the default `JWT_SECRET_KEY` can forge authentication tokens, and the default `CREDENTIAL_ENCRYPTION_KEY` leaves all stored device credentials readable.
```bash
# Build images sequentially (avoids OOM on low-RAM machines)
docker compose --profile full build api
docker compose --profile full build poller
docker compose --profile full build frontend
# Start the full stack
docker compose --profile full up -d
# Open the UI
open http://localhost:3000
```
On first launch, the setup wizard walks you through creating a super admin account,
enrolling your Secret Key, adding your first organization, and onboarding your first device.
--- ---

View File

@@ -169,23 +169,24 @@
<!-- QUICK START --> <!-- QUICK START -->
<section id="quickstart"> <section id="quickstart">
<h1>Quick Start</h1> <h1>Quick Start</h1>
<pre><code># Clone and configure <pre><code># Clone and run the setup wizard
cp .env.example .env git clone https://github.com/staack/the-other-dude.git
cd the-other-dude
python3 setup.py</code></pre>
# Start infrastructure <p>The interactive setup wizard handles everything:</p>
docker compose up -d <ul>
<li>Pre-flight checks (Docker, ports, RAM)</li>
# Build app images (one at a time to avoid OOM) <li>Database password configuration</li>
docker compose build api <li>Cryptographic key generation (JWT, credential encryption)</li>
docker compose build poller <li>Admin account creation</li>
docker compose build frontend <li>SMTP configuration (optional)</li>
<li>Domain and reverse proxy setup (Caddy, nginx, Apache, HAProxy, Traefik)</li>
# Start the full stack <li>OpenBao (KMS) bootstrap with automatic credential capture</li>
docker compose up -d <li>Docker image builds (sequential to avoid OOM)</li>
<li>Stack startup and health checks</li>
# Verify </ul>
curl http://localhost:8001/health <p>No manual <code>.env</code> editing required. The wizard generates <code>.env.prod</code> with production-strength secrets and starts the full stack.</p>
open http://localhost:3000</code></pre>
<h2>Environment Profiles</h2> <h2>Environment Profiles</h2>
<table> <table>

View File

@@ -332,7 +332,7 @@
<section class="quickstart-section"> <section class="quickstart-section">
<div class="container"> <div class="container">
<span class="section-label">QUICK START</span> <span class="section-label">QUICK START</span>
<h2 class="section-title">Run The Other Dude locally in minutes using Docker</h2> <h2 class="section-title">Deploy The Other Dude with two commands</h2>
<div class="code-window"> <div class="code-window">
<div class="code-window-header"> <div class="code-window-header">
@@ -341,25 +341,12 @@
<span class="code-dot code-dot--green"></span> <span class="code-dot code-dot--green"></span>
<span class="code-window-title">Terminal</span> <span class="code-window-title">Terminal</span>
</div> </div>
<pre class="code-window-body"><code><span class="code-comment"># Clone the repo</span> <pre class="code-window-body"><code><span class="code-comment"># Clone and run the setup wizard</span>
<span class="code-cmd">git clone https://github.com/staack/the-other-dude.git</span> <span class="code-cmd">git clone https://github.com/staack/the-other-dude.git</span>
<span class="code-cmd">cd the-other-dude</span> <span class="code-cmd">cd the-other-dude</span>
<span class="code-cmd">python3 setup.py</span></code></pre>
<span class="code-comment"># Configure</span>
<span class="code-cmd">cp .env.example .env</span>
<span class="code-comment"># Start infrastructure</span>
<span class="code-cmd">docker compose up -d</span>
<span class="code-comment"># Build app images</span>
<span class="code-cmd">docker compose build api &amp;&amp; docker compose build poller &amp;&amp; docker compose build frontend</span>
<span class="code-comment"># Launch</span>
<span class="code-cmd">docker compose up -d</span>
<span class="code-comment"># Open TOD</span>
<span class="code-cmd">open http://localhost:3000</span></code></pre>
</div> </div>
<p class="section-desc" style="margin-top: 24px;">The setup wizard configures your database, generates cryptographic keys, bootstraps OpenBao, sets up your reverse proxy, builds the Docker images, and starts everything. No manual .env editing required.</p>
</div> </div>
</section> </section>