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
{{ message }}
Repository navigation
Commit 84f9328
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .github/CONTRIBUTING.md
+4-9Lines changed: 4 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -140,20 +140,15 @@ Using clear and consistent commit messages makes it easier for everyone to under
140
140
141
141
To set up your local development environment:
142
142
143
-
### Option 1: Using NPM Package (Simplest)
143
+
### Option 1: Using the Setup Wizard (Simplest)
144
144
145
-
The easiest way to run Sim locally is using our NPM package:
145
+
Inside your clone, run the interactive setup wizard:
146
146
147
147
```bash
148
-
npx simstudio
148
+
bun run sim-setup
149
149
```
150
150
151
-
After running this command, open [http://localhost:3000/](http://localhost:3000/) in your browser.
152
-
153
-
#### Options
154
-
155
-
-`-p, --port <port>`: Specify the port to run Sim on (default: 3000)
156
-
-`--no-pull`: Skip pulling the latest Docker images
151
+
It provisions the database, generates secrets, writes `.env`, and offers the source-only local development and Kubernetes modes. Outside a clone, `npx sim-setup` sets up a deployment from the published images instead.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/networking.mdx
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -292,7 +292,7 @@ The practical consequence: a mandatory-egress-proxy environment can route LLM tr
292
292
A request through the SSRF guard keeps its checks when it is proxied. Before each request, and again for each redirect hop, the app resolves the destination's hostname with its own DNS and refuses it if any policy in [Security](/platform/self-hosting/security#the-ssrf-boundary) blocks the address. It then hands the hostname, not the address, to the proxy, so a proxy that allowlists by domain sees the name it expects.
293
293
294
294
- **DNS must still resolve inside the container.** A destination that the app cannot resolve is refused before the proxy is asked.
295
-
- **The proxy resolves the name again.** The app cannot pin the address across a proxy, so the proxy's own egress policy is the last check.
295
+
- **The proxy resolves the name again.** The app cannot pin the address across a proxy, so a name that answers differently to the proxy (a short-TTL rebind, or split-horizon DNS) reaches whatever the proxy resolves. The proxy's own egress policy is the last check: it must refuse private, loopback, and link-local ranges (including `169.254.169.254`) and your internal DNS zones, the same addresses the app's guard refuses.
296
296
- **`https` destinations are tunneled** with `CONNECT host:443`. **`http` destinations are forwarded** to the proxy as an absolute URL, as curl and Bun do.
297
297
- **Proxy credentials** go in the URL, e.g. `http://user:pass@proxy.internal:3128`. They are sent only to the proxy. An `https://` proxy URL also works; SOCKS proxies are not supported.
298
298
- **The HTTP block's `proxyUrl`** still takes precedence for that one request.
@@ -301,6 +301,8 @@ A request through the SSRF guard keeps its checks when it is proxied. Before eac
301
301
302
302
Set `NO_PROXY` for every destination that is not on the public internet, not just model endpoints. The app reaches the realtime server (`SOCKET_SERVER_URL`), the Presidio PII service (`PII_URL`), and itself (`INTERNAL_API_BASE_URL`) over the same default `fetch`, alongside self-hosted Ollama, LiteLLM, and vLLM — so a proxy that cannot reach your internal network breaks live updates and PII redaction, not only inference. AWS clients and OTLP export follow the same rule, so also add an internal S3-compatible store such as MinIO, AWS VPC endpoints, and an in-cluster OpenTelemetry collector.
303
303
304
+
`NO_PROXY` matches hostnames, domain suffixes (`.internal` or `*.internal`), exact IP addresses, and an optional `:port`, or `*` alone for everything. It does not match CIDR ranges such as `10.0.0.0/8` or IPv6 addresses, so list internal destinations by name.
305
+
304
306
Set it in the application environment, not your shell — under `app.env` on Helm, or the service's `environment:` on Compose. On Helm the suffixes alone are not enough: the chart wires `SOCKET_SERVER_URL`, `PII_URL`, and `OLLAMA_URL` to bare Service names, which no domain suffix matches. Add those names too — `helm template` prints the rendered ones, and the prefix is the release name unless it already contains `sim`, in which case it is the release name alone:
0 commit comments