|
7 | 7 |
|
8 | 8 | ## Quick Start |
9 | 9 |
|
10 | | -### Option 1: Docker (recommended) |
| 10 | +Runs in seconds. No setup required. |
11 | 11 |
|
12 | | -**Prerequisites:** Docker + Docker Compose v2 |
| 12 | +No `.env` file, TLS certificates, or encryption key are required to start the app. |
| 13 | + |
| 14 | +### Run with Docker |
13 | 15 |
|
14 | 16 | ```bash |
15 | | -git clone https://github.com/markrai/scrumboy |
16 | | -cd scrumboy |
17 | 17 | docker compose up --build |
18 | 18 | ``` |
19 | 19 |
|
20 | | -Open [http://127.0.0.1:8080](http://127.0.0.1:8080). |
21 | | - |
22 | | -- **Listen address:** Compose maps `127.0.0.1:8080:8080` (localhost only on the host). |
23 | | -- **Container env:** `DATA_DIR=/data`, `SQLITE_PATH=/data/app.db`, plus SQLite and body-size overrides as set in `docker-compose.yml`. |
24 | | -- **Full mode (default):** create your first (bootstrap) user. |
25 | | -- **Anonymous mode (optional):** set `SCRUMBOY_MODE=anonymous` in `docker-compose.yml` (under `environment:` for the service), then bring the stack up again. |
26 | | -- **Data on host:** `./data` is mounted to `/data` in the container (your SQLite file lives under `./data` on the machine running Docker). |
27 | | - |
28 | | -### Option 2: Run from source |
| 20 | +Open [http://localhost:8080](http://localhost:8080). |
29 | 21 |
|
30 | | -**Prerequisites:** Go 1.22+ |
| 22 | +### Run from source |
31 | 23 |
|
32 | 24 | ```bash |
33 | | -git clone https://github.com/markrai/scrumboy |
34 | | -cd scrumboy |
35 | 25 | go run ./cmd/scrumboy |
36 | 26 | ``` |
37 | 27 |
|
38 | 28 | Open [http://localhost:8080](http://localhost:8080). |
39 | 29 |
|
40 | | -**First run (full mode):** create your bootstrap user. |
| 30 | +## Optional Configuration |
41 | 31 |
|
42 | | -**Data & config:** by default the server uses `./data` and `./data/app.db` (relative to the process working directory-run from the repo root). Override paths and other settings with env vars (see **Config** below). |
| 32 | +### Environment variables |
43 | 33 |
|
44 | | -**Anonymous mode (quick test, no login):** in Bash, a variable can prefix a single command on one line (no `export` needed): |
| 34 | +Note: `scrumboy.env` is not a standard KEY=value file — it contains only the raw encryption key on a single line. |
45 | 35 |
|
46 | | -```bash |
47 | | -SCRUMBOY_MODE=anonymous go run ./cmd/scrumboy |
48 | | -``` |
| 36 | +- The app does **not** automatically load `.env` files. |
| 37 | +- On Linux/macOS, export variables manually (for example: `export SCRUMBOY_ENCRYPTION_KEY=...`). |
| 38 | +- Windows helper scripts load `scrumboy.env` automatically. |
| 39 | + |
| 40 | +### Encryption key (optional) |
| 41 | + |
| 42 | +- `SCRUMBOY_ENCRYPTION_KEY` is **not** required for basic startup. |
| 43 | +- It is required for: |
| 44 | + - 2FA |
| 45 | + - Password reset flows |
| 46 | +- If an existing database already has 2FA-enabled users, startup fails without this key. |
| 47 | + |
| 48 | +Generate a key with: `openssl rand -base64 32` |
| 49 | + |
| 50 | +### TLS / HTTPS (optional) |
49 | 51 |
|
50 | | -Then open [http://localhost:8080](http://localhost:8080). |
| 52 | +- TLS is optional. |
| 53 | +- HTTPS is enabled only when both `SCRUMBOY_TLS_CERT` and `SCRUMBOY_TLS_KEY` files exist. |
| 54 | +- Otherwise, the server runs on HTTP by default. |
51 | 55 |
|
52 | 56 | ### Frontend build note |
53 | 57 |
|
@@ -106,6 +110,7 @@ Simplicity of a light Kanban, with the power of structured systems: Roles, sprin |
106 | 110 | # Config |
107 | 111 |
|
108 | 112 | Env vars and defaults are defined in `internal/config/config.go`. ResolveDataDir uses `DATA_DIR` and `SQLITE_PATH` as documented there. |
| 113 | +None of these are required for basic startup. |
109 | 114 |
|
110 | 115 | | Variable | Default (from code) | |
111 | 116 | |----------|---------------------| |
|
0 commit comments