-
Notifications
You must be signed in to change notification settings - Fork 3.8k
docs(self-hosting): note the Railway ENCRYPTION_KEY must be 64-char hex #6530
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
eeshsaxena
wants to merge
1
commit into
simstudioai:main
Choose a base branch
from
eeshsaxena:docs/railway-encryption-key-hex
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
108 changes: 56 additions & 52 deletions
108
apps/docs/content/docs/en/platform/self-hosting/platforms.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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. | ||
|
|
||
| [](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 | ||
|
|
||
| <Callout type="warn"> | ||
| 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. | ||
| </Callout> | ||
|
|
||
| ## 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. | ||
|
|
||
| [](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 | ||
|
|
||
| <Callout type="warn"> | ||
| 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. | ||
| </Callout> | ||
|
|
||
| <Callout type="warn"> | ||
| 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. | ||
| </Callout> | ||
|
|
||
| ## 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). | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When CI runs the docs workspace's
biome check ., the file-wide CRLF conversion conflicts with the repository's required LF line endings, causing the lint gate to fail. Normalize this file back to LF while retaining the new callout.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!