Production Deployment
We recommend using managed services as much as possible. Our basic Helm chart deploys pods for DB, S3, etc., which is great for small environments but not intended for production.
Best Practices
- Managed PostgreSQL / Aurora PostgreSQL
- Fast Managed S3 (Object Storage).
- Managed Redis
- Managed Elasticsearch / OpenSearch
- Multiple pods for RepoFlow server deployment in the chart
- Multiple pods for RepoFlow client deployment in the chart
- Keep the Hasura console and dev mode disabled
Required Changes in Helm Chart
Below are the server, client, and Hasura environment variables you will likely need to configure. For more details, refer to the relevant documentation:
Server Environment Variables
(Read more here):
- S3 connection details
- Redis connection details
- Search engine connection details (Elasticsearch/OpenSearch)
SERVER_URLFRONTEND_URLHASURA_URLCOOKIE_DOMAINGENERAL_COOKIE_SECRETJWT_SECRETRESET_PASSWORD_JWT_SECRETPERSONAL_ACCESS_TOKEN_JWT_SECRETMIGRATION_CREDENTIALS_ENCRYPTION_KEYHASURA_ADMIN_SECRET
Replace every chart placeholder value ending in -replace-me before using the deployment. Running with those defaults is insecure because the values are public and may allow other people to access or take over the instance.
Hasura Environment Variables
HASURA_GRAPHQL_ADMIN_SECRET(must match the server'sHASURA_ADMIN_SECRETvalue)HASURA_GRAPHQL_JWT_SECRET: Must be a JSON string in the following format (JWT is provided via cookie):
{"key":"<JWT_SECRET>","type":"HS256","header":{"type":"Cookie","name":"X-USER-TOKEN"}}
Thekeyvalue must match the server’sJWT_SECRET.
Console and Dev Mode
Starting with RepoFlow 0.9.2, the Helm, Docker Compose, and all-in-one deployment defaults disable the Hasura console and dev mode. Keep both disabled in production:
hasura:
environment:
HASURA_GRAPHQL_ENABLE_CONSOLE: "false"
HASURA_GRAPHQL_DEV_MODE: "false"
These settings control Hasura's administration UI and internal error details. RepoFlow's UI, GraphQL API, and automatic migrations continue to work independently. If needed, temporarily set either value to "true" for administration or troubleshooting. Existing deployment configurations that explicitly enable either setting must be updated to disable it.
Hasura Logging
Hasura logging defaults remain unchanged and include query-log. Query logs contain query variables, which can include sensitive values such as password hashes used during sign-in. Disabling the console or dev mode does not disable these logs.
For production, you can disable detailed query logging while keeping the other default log types:
hasura:
environment:
HASURA_GRAPHQL_ENABLED_LOG_TYPES: "startup,http-log,webhook-log,websocket-log"
Other error logs can still contain request details, so restrict access to your logs. See Hasura's logging documentation for more information.
Client Environment Variables
(Read more here):
HASURA_API_URLHASURA_WEB_SOCKET_URLREPOFLOW_SERVER