diff --git a/README.md b/README.md index 411bc14..a503a8d 100644 --- a/README.md +++ b/README.md @@ -63,39 +63,25 @@ Web UI ## Quick Start ```bash -# Clone and configure +# Clone and run the setup wizard 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 -# Generate a JWT signing key -JWT_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(64))") +- Pre-flight checks (Docker, ports, RAM) +- Database password configuration +- 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) -CREDENTIAL_ENCRYPTION_KEY=$(python3 -c "import secrets, base64; print(base64.b64encode(secrets.token_bytes(32)).decode())") -``` - -> **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. +On first launch, the web UI walks you through enrolling your Secret Key, adding your +first organization, and onboarding your first device. --- diff --git a/docs/website/docs.html b/docs/website/docs.html index e84de8d..cc967c4 100644 --- a/docs/website/docs.html +++ b/docs/website/docs.html @@ -169,23 +169,24 @@

Quick Start

-
# Clone and configure
-cp .env.example .env
+        
# Clone and run the setup wizard
+git clone https://github.com/staack/the-other-dude.git
+cd the-other-dude
+python3 setup.py
-# Start infrastructure -docker compose up -d - -# Build app images (one at a time to avoid OOM) -docker compose build api -docker compose build poller -docker compose build frontend - -# Start the full stack -docker compose up -d - -# Verify -curl http://localhost:8001/health -open http://localhost:3000
+

The interactive setup wizard handles everything:

+ +

No manual .env editing required. The wizard generates .env.prod with production-strength secrets and starts the full stack.

Environment Profiles

diff --git a/docs/website/index.html b/docs/website/index.html index c638e4e..9038600 100644 --- a/docs/website/index.html +++ b/docs/website/index.html @@ -332,7 +332,7 @@
-

Run The Other Dude locally in minutes using Docker

+

Deploy The Other Dude with two commands

@@ -341,25 +341,12 @@ Terminal
-
# Clone the repo
+        
# Clone and run the setup wizard
 git clone https://github.com/staack/the-other-dude.git
 cd the-other-dude
-
-# Configure
-cp .env.example .env
-
-# Start infrastructure
-docker compose up -d
-
-# Build app images
-docker compose build api && docker compose build poller && docker compose build frontend
-
-# Launch
-docker compose up -d
-
-# Open TOD
-open http://localhost:3000
+python3 setup.py
+

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.