You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Docker release hardening pass: parameterize POSTGRES_PASSWORD and wire `.env.example` through `install.sh`; bind port 3001 to `127.0.0.1` by default; drop stale `MANIFEST_TRUST_LAN` from docs; replace OpenClaw-specific meta tags in the SPA with agent-neutral copy. `/api/v1/routing/:agent/status` now returns a structured `{ enabled, reason }` shape and only claims `enabled: true` when at least one tier resolves to a real model (`reason: no_provider | no_routable_models | pricing_cache_empty`). Provider connect rejects unknown providers and normalises casing. Tier override rejects unknown models with a helpful list. New `GET /api/v1/routing/pricing-health` and `POST /api/v1/routing/pricing/refresh` endpoints plus a Routing-page banner when the OpenRouter pricing cache is empty. Workspace-card and per-agent message counts now exclude error and fallback-error rows.
Copy file name to clipboardExpand all lines: docker/DOCKER_README.md
+26-9Lines changed: 26 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,9 +62,11 @@ Works with 300+ models across OpenAI, Anthropic, Google Gemini, DeepSeek, xAI, M
62
62
63
63
Three paths, ordered from fastest to most hands-on. All three end in the same place: a running stack that walks you through the **setup wizard** at [http://localhost:3001](http://localhost:3001) to create your admin account.
64
64
65
+
> **Heads up on network binding.** The bundled compose file binds port 3001 to `127.0.0.1` only, so the dashboard is reachable on the host machine but not over the LAN. See [Custom port](#custom-port) to expose it beyond localhost.
One command. The script downloads `docker/docker-compose.yml`, generates a fresh `BETTER_AUTH_SECRET`and injects it into the compose file, brings up the stack, and waits for the healthcheck to go green.
69
+
One command. The script downloads `docker/docker-compose.yml` and `docker/.env.example`, writes a fresh `BETTER_AUTH_SECRET` into `.env`, brings up the stack, and waits for the healthcheck to go green.
2. Generate a secret and paste it over the `BETTER_AUTH_SECRET` placeholder in `docker-compose.yml`:
97
+
2. Generate a secret and paste it into the `BETTER_AUTH_SECRET=` line in `.env`:
94
98
95
99
```bash
96
100
openssl rand -hex 32
97
101
```
98
102
103
+
(Optional: to use a stronger database password, set BOTH `POSTGRES_PASSWORD` and `DATABASE_URL` in `.env` — they must agree, and any special characters in the password need to be percent-encoded in the URL.)
104
+
99
105
3. Start it:
100
106
101
107
```bash
@@ -191,12 +197,24 @@ Or in docker-compose.yml:
191
197
192
198
```yaml
193
199
ports:
194
-
- "8080:3001"
195
-
environment:
196
-
- BETTER_AUTH_URL=http://localhost:8080
200
+
- "127.0.0.1:8080:3001"
201
+
```
202
+
203
+
…and in `.env`:
204
+
205
+
```env
206
+
BETTER_AUTH_URL=http://localhost:8080
197
207
```
198
208
199
-
If you see "Invalid origin" on the login page, `BETTER_AUTH_URL` doesn't match the port you're using.
209
+
### Exposing on the LAN
210
+
211
+
By default the compose file binds port 3001 to `127.0.0.1` only — the dashboard is reachable from the host but not from other machines on the network. To expose it on the LAN:
212
+
213
+
1. Edit `docker-compose.yml` and change the `ports` line from `"127.0.0.1:3001:3001"` to `"3001:3001"`.
214
+
2. In `.env`, set `BETTER_AUTH_URL` to the host you'll reach the dashboard on — e.g. `http://192.168.1.20:3001` or `https://manifest.mydomain.com`. This MUST match the URL in the browser or Better Auth will reject the login with "Invalid origin".
215
+
3. `docker compose up -d` to apply.
216
+
217
+
If you see "Invalid origin" on the login page, `BETTER_AUTH_URL` doesn't match the URL you're accessing the dashboard on. The host matters as much as the port.
200
218
201
219
## Image tags
202
220
@@ -256,7 +274,6 @@ docker compose down -v # ⚠ destroys all data
256
274
| `PORT` | No | `3001` | Internal server port |
257
275
| `NODE_ENV` | No | `production` | Set `development` for auto-migrations |
258
276
| `SEED_DATA` | No | `false` | Seed demo data on startup |
259
-
| `MANIFEST_TRUST_LAN` | No | `false` | Trust private network IPs (needed in Docker) |
260
277
261
278
Full env var reference: [github.com/mnfst/manifest](https://github.com/mnfst/manifest)
0 commit comments