Skip to content

Commit a6fb74f

Browse files
committed
docs(self-hosting): note the Railway ENCRYPTION_KEY must be 64-char hex
The Railway template auto-generates ENCRYPTION_KEY as a URL-safe secret, but Sim requires a 64-character hex string, so saving Workspace Secrets fails with a 500. Add a troubleshooting callout with the openssl rand -hex 32 fix. Re #6246.
1 parent d5ce247 commit a6fb74f

1 file changed

Lines changed: 56 additions & 52 deletions

File tree

Lines changed: 56 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,56 @@
1-
---
2-
title: Cloud Platforms
3-
description: Provider-specific notes for running Sim on Railway, a VPS, or managed Kubernetes
4-
---
5-
6-
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
7-
import { Callout } from 'fumadocs-ui/components/callout'
8-
9-
This page covers what differs per provider. The deployment itself is the same everywhere — follow [Docker](/platform/self-hosting/docker) for a single node or [Kubernetes](/platform/self-hosting/kubernetes) for a cluster.
10-
11-
## Railway
12-
13-
One-click deployment with automatic PostgreSQL provisioning.
14-
15-
[![Deploy on Railway](https://railway.app/button.svg)](https://railway.com/new/template/sim-studio)
16-
17-
After deployment, set in the Railway dashboard:
18-
19-
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (auto-generated by the template)
20-
- An AI provider key such as `OPENAI_API_KEY`
21-
- Your custom domain under **Settings → Networking**, then `NEXT_PUBLIC_APP_URL` to match
22-
23-
<Callout type="warn">
24-
The Railway template deploys the app services but not the `cron` service, so scheduled workflows and polling triggers stay idle. Add a Railway cron service calling the endpoints in [Background Jobs](/platform/self-hosting/background-jobs), or deploy with Docker Compose instead.
25-
</Callout>
26-
27-
## VPS
28-
29-
DigitalOcean, EC2, Azure VM, Hetzner, or any Linux box. Size it from the [requirements table](/platform/self-hosting) — 16 GB RAM is the practical floor for a team install, because memory rather than CPU is what bounds concurrent workflow executions.
30-
31-
Install Docker via [get.docker.com](https://get.docker.com), then follow the [Docker guide](/platform/self-hosting/docker), which covers secrets, the compose stack, and TLS.
32-
33-
## Managed Kubernetes
34-
35-
EKS, AKS, and GKE each have a tuned example values file in the chart. See [Kubernetes](/platform/self-hosting/kubernetes) for the install and [Networking](/platform/self-hosting/networking) for the load-balancer specifics — notably GKE's 30-second websocket timeout and its `ManagedCertificate` requirement.
36-
37-
## Managed PostgreSQL
38-
39-
Recommended for any production deployment. The requirement is **pgvector**.
40-
41-
| Service | Notes |
42-
|---|---|
43-
| AWS RDS / Aurora | Enable the `vector` extension |
44-
| GCP Cloud SQL | Enable the `vector` extension |
45-
| Azure Database for PostgreSQL | Enable the `vector` extension |
46-
| Supabase / Neon | pgvector available by default |
47-
48-
```bash
49-
DATABASE_URL="postgresql://user:pass@host:5432/simstudio?sslmode=require"
50-
```
51-
52-
For the Helm chart, disable the bundled Postgres and use `externalDatabase` — see [Kubernetes](/platform/self-hosting/kubernetes#external-database).
1+
---
2+
title: Cloud Platforms
3+
description: Provider-specific notes for running Sim on Railway, a VPS, or managed Kubernetes
4+
---
5+
6+
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
7+
import { Callout } from 'fumadocs-ui/components/callout'
8+
9+
This page covers what differs per provider. The deployment itself is the same everywhere — follow [Docker](/platform/self-hosting/docker) for a single node or [Kubernetes](/platform/self-hosting/kubernetes) for a cluster.
10+
11+
## Railway
12+
13+
One-click deployment with automatic PostgreSQL provisioning.
14+
15+
[![Deploy on Railway](https://railway.app/button.svg)](https://railway.com/new/template/sim-studio)
16+
17+
After deployment, set in the Railway dashboard:
18+
19+
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (auto-generated by the template)
20+
- An AI provider key such as `OPENAI_API_KEY`
21+
- Your custom domain under **Settings → Networking**, then `NEXT_PUBLIC_APP_URL` to match
22+
23+
<Callout type="warn">
24+
The template auto-generates `ENCRYPTION_KEY` as a URL-safe secret, but Sim requires a 64-character hex string. If saving Workspace Secrets fails with `ENCRYPTION_KEY must be set to a 64-character hex string` (HTTP 500), regenerate it with `openssl rand -hex 32` and update the variable in the Railway dashboard.
25+
</Callout>
26+
27+
<Callout type="warn">
28+
The Railway template deploys the app services but not the `cron` service, so scheduled workflows and polling triggers stay idle. Add a Railway cron service calling the endpoints in [Background Jobs](/platform/self-hosting/background-jobs), or deploy with Docker Compose instead.
29+
</Callout>
30+
31+
## VPS
32+
33+
DigitalOcean, EC2, Azure VM, Hetzner, or any Linux box. Size it from the [requirements table](/platform/self-hosting) — 16 GB RAM is the practical floor for a team install, because memory rather than CPU is what bounds concurrent workflow executions.
34+
35+
Install Docker via [get.docker.com](https://get.docker.com), then follow the [Docker guide](/platform/self-hosting/docker), which covers secrets, the compose stack, and TLS.
36+
37+
## Managed Kubernetes
38+
39+
EKS, AKS, and GKE each have a tuned example values file in the chart. See [Kubernetes](/platform/self-hosting/kubernetes) for the install and [Networking](/platform/self-hosting/networking) for the load-balancer specifics — notably GKE's 30-second websocket timeout and its `ManagedCertificate` requirement.
40+
41+
## Managed PostgreSQL
42+
43+
Recommended for any production deployment. The requirement is **pgvector**.
44+
45+
| Service | Notes |
46+
|---|---|
47+
| AWS RDS / Aurora | Enable the `vector` extension |
48+
| GCP Cloud SQL | Enable the `vector` extension |
49+
| Azure Database for PostgreSQL | Enable the `vector` extension |
50+
| Supabase / Neon | pgvector available by default |
51+
52+
```bash
53+
DATABASE_URL="postgresql://user:pass@host:5432/simstudio?sslmode=require"
54+
```
55+
56+
For the Helm chart, disable the bundled Postgres and use `externalDatabase` — see [Kubernetes](/platform/self-hosting/kubernetes#external-database).

0 commit comments

Comments
 (0)