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:
42
README.md
42
README.md
@@ -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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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 && docker compose build poller && 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>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user