From a6fb74f25073343f2964e8f4320b13b17519a61d Mon Sep 17 00:00:00 2001 From: eeshsaxena Date: Fri, 7 Aug 2026 18:06:29 +0530 Subject: [PATCH 1/2] 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. --- .../en/platform/self-hosting/platforms.mdx | 108 +++++++++--------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/apps/docs/content/docs/en/platform/self-hosting/platforms.mdx b/apps/docs/content/docs/en/platform/self-hosting/platforms.mdx index 72152909258..b4a3f3f693a 100644 --- a/apps/docs/content/docs/en/platform/self-hosting/platforms.mdx +++ b/apps/docs/content/docs/en/platform/self-hosting/platforms.mdx @@ -1,52 +1,56 @@ ---- -title: Cloud Platforms -description: Provider-specific notes for running Sim on Railway, a VPS, or managed Kubernetes ---- - -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' -import { Callout } from 'fumadocs-ui/components/callout' - -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. - -## Railway - -One-click deployment with automatic PostgreSQL provisioning. - -[![Deploy on Railway](https://railway.app/button.svg)](https://railway.com/new/template/sim-studio) - -After deployment, set in the Railway dashboard: - -- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (auto-generated by the template) -- An AI provider key such as `OPENAI_API_KEY` -- Your custom domain under **Settings → Networking**, then `NEXT_PUBLIC_APP_URL` to match - - - 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. - - -## VPS - -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. - -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. - -## Managed Kubernetes - -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. - -## Managed PostgreSQL - -Recommended for any production deployment. The requirement is **pgvector**. - -| Service | Notes | -|---|---| -| AWS RDS / Aurora | Enable the `vector` extension | -| GCP Cloud SQL | Enable the `vector` extension | -| Azure Database for PostgreSQL | Enable the `vector` extension | -| Supabase / Neon | pgvector available by default | - -```bash -DATABASE_URL="postgresql://user:pass@host:5432/simstudio?sslmode=require" -``` - -For the Helm chart, disable the bundled Postgres and use `externalDatabase` — see [Kubernetes](/platform/self-hosting/kubernetes#external-database). +--- +title: Cloud Platforms +description: Provider-specific notes for running Sim on Railway, a VPS, or managed Kubernetes +--- + +import { Tab, Tabs } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' + +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. + +## Railway + +One-click deployment with automatic PostgreSQL provisioning. + +[![Deploy on Railway](https://railway.app/button.svg)](https://railway.com/new/template/sim-studio) + +After deployment, set in the Railway dashboard: + +- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (auto-generated by the template) +- An AI provider key such as `OPENAI_API_KEY` +- Your custom domain under **Settings → Networking**, then `NEXT_PUBLIC_APP_URL` to match + + + 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. + + + + 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. + + +## VPS + +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. + +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. + +## Managed Kubernetes + +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. + +## Managed PostgreSQL + +Recommended for any production deployment. The requirement is **pgvector**. + +| Service | Notes | +|---|---| +| AWS RDS / Aurora | Enable the `vector` extension | +| GCP Cloud SQL | Enable the `vector` extension | +| Azure Database for PostgreSQL | Enable the `vector` extension | +| Supabase / Neon | pgvector available by default | + +```bash +DATABASE_URL="postgresql://user:pass@host:5432/simstudio?sslmode=require" +``` + +For the Helm chart, disable the bundled Postgres and use `externalDatabase` — see [Kubernetes](/platform/self-hosting/kubernetes#external-database). From 415e9b2d821949de02ba518eeb6aea91797f7bcb Mon Sep 17 00:00:00 2001 From: eeshsaxena <139802361+eeshsaxena@users.noreply.github.com> Date: Thu, 13 Aug 2026 21:47:40 +0530 Subject: [PATCH 2/2] docs(self-hosting): normalize line endings to LF and drop stray trailing space --- .../en/platform/self-hosting/platforms.mdx | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/apps/docs/content/docs/en/platform/self-hosting/platforms.mdx b/apps/docs/content/docs/en/platform/self-hosting/platforms.mdx index b4a3f3f693a..1267d0da938 100644 --- a/apps/docs/content/docs/en/platform/self-hosting/platforms.mdx +++ b/apps/docs/content/docs/en/platform/self-hosting/platforms.mdx @@ -1,56 +1,56 @@ ---- -title: Cloud Platforms -description: Provider-specific notes for running Sim on Railway, a VPS, or managed Kubernetes ---- - -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' -import { Callout } from 'fumadocs-ui/components/callout' - -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. - -## Railway - -One-click deployment with automatic PostgreSQL provisioning. - -[![Deploy on Railway](https://railway.app/button.svg)](https://railway.com/new/template/sim-studio) - -After deployment, set in the Railway dashboard: - -- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (auto-generated by the template) -- An AI provider key such as `OPENAI_API_KEY` -- Your custom domain under **Settings → Networking**, then `NEXT_PUBLIC_APP_URL` to match - - - 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. - - - - 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. - - -## VPS - -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. - -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. - -## Managed Kubernetes - -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. - -## Managed PostgreSQL - -Recommended for any production deployment. The requirement is **pgvector**. - -| Service | Notes | -|---|---| -| AWS RDS / Aurora | Enable the `vector` extension | -| GCP Cloud SQL | Enable the `vector` extension | -| Azure Database for PostgreSQL | Enable the `vector` extension | -| Supabase / Neon | pgvector available by default | - -```bash -DATABASE_URL="postgresql://user:pass@host:5432/simstudio?sslmode=require" -``` - -For the Helm chart, disable the bundled Postgres and use `externalDatabase` — see [Kubernetes](/platform/self-hosting/kubernetes#external-database). +--- +title: Cloud Platforms +description: Provider-specific notes for running Sim on Railway, a VPS, or managed Kubernetes +--- + +import { Tab, Tabs } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' + +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. + +## Railway + +One-click deployment with automatic PostgreSQL provisioning. + +[![Deploy on Railway](https://railway.app/button.svg)](https://railway.com/new/template/sim-studio) + +After deployment, set in the Railway dashboard: + +- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (auto-generated by the template) +- An AI provider key such as `OPENAI_API_KEY` +- Your custom domain under **Settings → Networking**, then `NEXT_PUBLIC_APP_URL` to match + + + 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. + + + + 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. + + +## VPS + +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. + +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. + +## Managed Kubernetes + +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. + +## Managed PostgreSQL + +Recommended for any production deployment. The requirement is **pgvector**. + +| Service | Notes | +|---|---| +| AWS RDS / Aurora | Enable the `vector` extension | +| GCP Cloud SQL | Enable the `vector` extension | +| Azure Database for PostgreSQL | Enable the `vector` extension | +| Supabase / Neon | pgvector available by default | + +```bash +DATABASE_URL="postgresql://user:pass@host:5432/simstudio?sslmode=require" +``` + +For the Helm chart, disable the bundled Postgres and use `externalDatabase` — see [Kubernetes](/platform/self-hosting/kubernetes#external-database).