# Environment Variables

Enviroment Variable Description Default Value
APP_SITE_URL Site URL. e.g. https://example.com, https://example.com:8080
MONGO_URI URI to connect to MongoDB. mongodb://localhost/growi
MONGO_MAX_POOL_SIZE Maximum number of connections in the MongoDB connection pool. Raise it when a large environment with many active users runs short on concurrency. 15
MONGO_MIN_POOL_SIZE Minimum number of connections in the MongoDB connection pool. 2
PASSWORD_SEED A password seed used by the password hash generator.
SECRET_TOKEN A secret key for verifying the integrity of signed cookies.
SESSION_NAME The name of the session ID cookie to set in the response by Express. connect.sid
FORCE_WIKI_MODE Forces wiki mode. undefined
: undefined Publicity will be configured by the admin security page settings
: public Forces all pages to become public
: private Forces all pages to become private
FORMAT_NODE_LOG If false, Output server log as JSON. (Enabled only when NODE_ENV=production) true
USER_UPPER_LIMIT (TBD)
MIN_PASSWORD_LENGTH Minimum password length that users can set. 8
DEFAULT_EMAIL_PUBLISHED Default setting for publishing new user email addresses. true
SSR_MAX_REVISION_BODY_LENGTH Maximum number of characters for the body to be Server Side Rendered (SSR). Pages with a body length exceeding this value will no longer be SSR, but will still be rendered on the client side without any issues. 3000
S2CMSG_PUBSUB_CONNECTIONS_LIMIT Maximum number of connections for all clients that receive push messages. 5000
S2CMSG_PUBSUB_CONNECTIONS_LIMIT_FOR_GUEST Maximum number of connections for guest clients that receive push messages. 2000
S2CMSG_PUBSUB_CONNECTIONS_LIMIT_FOR_ADMIN Maximum number of connections for admin users in admin pages.
(This is isolated from S2CMSG_PUBSUB_CONNECTIONS_LIMIT)
100
AUDIT_LOG_ENABLED If true, the Audit Log feature is enabled false
ACTIVITY_EXPIRATION_SECONDS Number of seconds to keep the audit log. Audit logs are automatically deleted after a set number of seconds have elapsed since they were created. 2592000
AUDIT_LOG_ACTION_GROUP_SIZE Size of action groups to be collected in the audit log (can be SMALL, MEDIUM, or LARGE) SMALL
AUDIT_LOG_ADDITIONAL_ACTIONS Add individual actions not included in the action group specified by AUDIT_LOG_ACTION_GROUP_SIZE, in CSV format (comma-separated string).
AUDIT_LOG_EXCLUDE_ACTIONS Exclude individual actions in the action group specified by AUDIT_LOG_ACTION_GROUP_SIZE, in CSV format (comma-separated string).
TRUST_PROXY_BOOL A boolean that can be set to the trust proxy settings for Express (opens new window) prioritized than TRUST_PROXY_CSV and TRUST_PROXY_HOPS.
TRUST_PROXY_CSV A CSV value that can be set to the trust proxy settings for Express (opens new window) prioritized than TRUST_PROXY_HOPS.
TRUST_PROXY_HOPS A number value that can be set to the trust proxy settings for Express (opens new window).
Option for file uploading
FILE_UPLOAD Attached files storage. aws
: aws Amazon Web Service S3 (needs AWS settings on Admin page)
: gcs Google Cloud Storage (needs settings with environment variables)
: mongodb MongoDB GridFS (Setting-less)
: local Server's Local file system (Setting-less)
: none Disable file uploading
MAX_FILE_SIZE The maximum file size limit for uploads (bytes). Infinity
FILE_UPLOAD_TOTAL_LIMIT Total capacity limit for uploads (bytes). Infinity
S3_OBJECT_ACL Object ACL. (Reference: Canned ACL (opens new window))
Set private to disable. (Recommended)
public-read
S3_LIFETIME_SEC_FOR_TEMPORARY_URL Time to keep the cache of signed URLs (number of seconds) 120
GCS_API_KEY_JSON_PATH Path of the JSON file that contains service account key to authenticate to GCP API (opens new window)
GCS_BUCKET Name of the GCS bucket
GCS_UPLOAD_NAMESPACE Directory name to create in the bucket
GCS_LIFETIME_SEC_FOR_TEMPORARY_URL Time to keep the cache of signed URLs (number of seconds) 120
GCS_REFERENCE_FILE_WITH_RELAY_MODE If true, the GROWI server sends the attachment data (relay mode). In the case of false (default value), the users download data from GCS directly by Signed URLs (opens new window) created by the server. false
GCS_USES_ONLY_ENV_VARS_FOR_SOME_OPTIONS Prioritize env vars over values in DB for some GCS options. false
AZURE_TEANANT_ID ID of the application's Microsoft Entra tenant.
AZURE_CLIENT_ID ID of a Microsoft Entra application.
AZURE_CLIENT_SECRET One of the application's client secrets.
AZURE_STORAGE_ACCOUNT_NAME Storage Account Name
AZURE_STORAGE_CONTAINER_NAME Container Name
AZURE_LIFETIME_SEC_FOR_TEMPORARY_URL Time to keep the cache of signed URLs (number of seconds) 120
AZURE_REFERENCE_FILE_WITH_RELAY_MODE If true, the GROWI server sends the attachment data (relay mode). In the case of false (default value), the users download data from Azure(Blob) directly by Shared Access Signatured URLs (opens new window) created by the server. false
AZURE_USES_ONLY_ENV_VARS_FOR_SOME_OPTIONS Prioritize env vars over values in DB for some Azure(Blob) options. false
Option for full-text search
ELASTICSEARCH_URI URI to connect to Elasticsearch.
ELASTICSEARCH_VERSION Elasticsearch major version that system connects to. (8 or 9 can be specified) 9
ELASTICSEARCH_MAX_BODY_LENGTH_TO_INDEX The maximum number of characters per page to create an index. Pages with a body length exceeding this value will not be indexed. 100000
ELASTICSEARCH_REINDEX_BULK_SIZE The number of page documents to process at once when reindexing 100
ELASTICSEARCH_REINDEX_ON_BOOT Recreate the index on system boot false
ELASTICSEARCH_REQUEST_TIMEOUT Timeout for requests to the Elasticsearch server (msec) 8000
ELASTICSEARCH_REJECT_UNAUTHORIZED Turn off certificate verification when connecting with HTTPS schema. false
Option to integrate with external systems
REDIS_URI URI to connect to Redis (use it as a session store instead of MongoDB).
NCHAN_URI URI to connect to Nginx Nchan (opens new window) server.
HACKMD_URI URI to connect to HackMD(CodiMD) (opens new window) server.
This server must load the GROWI agent. Here's how to prepare it.
HACKMD_URI_FOR_SERVER URI to connect to HackMD(CodiMD) (opens new window) server from GROWI Express server. If not set, HACKMD_URI will be used.
PLANTUML_URI URI to connect to PlantUML (opens new window) server.
DRAWIO_URI URI to connect to diagrams.net(draw.io) (opens new window) server.
S2SMSG_PUBSUB_SERVER_TYPE
: nchan Nginx Nchan (opens new window)
: redis (Not implemented yet)
S2SMSG_PUBSUB_NCHAN_PUBLISH_PATH Publisher endpoint path for Nchan server /pubsub
S2SMSG_PUBSUB_NCHAN_SUBSCRIBE_PATH Subscriber endpoint path for Nchan server /pubsub
S2SMSG_PUBSUB_NCHAN_CHANNEL_ID The channel ID to connect to Nchan server
PROMSTER_ENABLED Enable Promster (opens new window) server false
PROMSTER_PORT The port to launch Promster server 7788
SLACKBOT_TYPE Type of Slack Bot to use when linking with Slack
SLACKBOT_WITHOUT_PROXY_SIGNING_SECRET Signing Secret string used for Custom Bot without proxy environment
SLACKBOT_WITHOUT_PROXY_BOT_TOKEN Bot Token string used for Custom Bot without proxy environment
SLACKBOT_WITH_PROXY_PROXY_URI URI of slackbot-proxy server used for Custom Bot with proxy environment
SLACKBOT_WITH_PROXY_SALT_FOR_GTOP Salt (for GROWI to Proxy) when generating tokens for the Official Bot or Custom Bot with proxy environment gtop
SLACKBOT_WITH_PROXY_SALT_FOR_PTOG Salt (for GROWI to Proxy) when generating tokens for the Official Bot or Custom Bot with proxy environment ptog
Options related to OpenTelemetry
OPENTELEMETRY_ENABLED Enables data transmission via OpenTelemetry. This option overrides the official OpenTelemetry SDK's OTEL_SDK_DISABLED. true
OPENTELEMETRY_IS_APP_SITE_URL_HASHED Hashing the site URL in the data sent via OpenTelemetry. false
OPENTELEMETRY_ANONYMIZE_IN_BEST_EFFORT Applies additional anonymization to data sent via OpenTelemetry. While sensitive information is not sent under normal circumstances, enabling this setting provides an extra layer of protection for environments requiring stricter data anonymization. Note that enabling this may have a slight impact on server performance. false
OTEL_EXPORTER_OTLP_ENDPOINT Endpoint for data transmission https://telemetry.growi.org
Other environment variables starting with OTEL_ Refer to the official OpenTelemetry documentation.
Option for GROWI AI features
AI_ENABLED Enable or disable AI function false
OPENAI_SERVICE_TYPE Type of OpenAI compatible service. As of v7.1.2, only openai is available. openai
: openai Use OpenAI API.
OPENAI_API_KEY API key for using OpenAI services.
OPENAI_CHAT_ASSISTANT_INSTRUCTIONS Instructions used by Knowledge Assistant feature. ref (opens new window)
OPENAI_CHAT_ASSISTANT_MODEL AI model used by Knowledge Assistant feature. gpt-4o-mini
OPENAI_THREAD_DELETION_CRON_EXPRESSION Specifies the schedule for executing OpenAI thread deletion in cron format. 0 * * * *
OPENAI_THREAD_DELETION_BARCH_SIZE Maximum number of threads to delete in a single process 100
OPENAI_THREAD_DELETION_API_CALL_INTERVAL Interval between thread deletion API calls (milliseconds) 36000
OPENAI_VECTOR_STORE_FILE_DELETION_CRON_EXPRESSION Specifies the schedule for executing Vector store file deletion in cron format. 0 * * * *
OPENAI_VECTOR_STORE_FILE_DELETION_BARCH_SIZE Maximum number of Vector store files to delete in a single process 100
OPENAI_VECTOR_STORE_FILE_DELETION_API_CALL_INTERVAL Interval between Vector store file deletion API calls (milliseconds) 36000
OPENAI_SEARCH_ASSISTANT_INSTRUCTIONS Instructions used for Search Assistant functionality '' (empty string)
OPENAI_LIMIT_LEARNABLE_PAGE_COUNT_PER_ASSISTANT Maximum number of pages that a single Knowledge Assistant can learn 3000
GROWI AI Agent options
AI_ENABLED Enables GROWI AI Agent when true. false
AI_PROVIDERS Specifies per-provider settings (enabling, Azure OpenAI settings, etc.) as JSON.
Example: {"openai":{"enabled":true},"azure-openai":{"enabled":true,"azureOpenaiSettings":{"resourceName":"<resource-name>"}}}
AI_PROVIDER_API_KEYS Specifies per-provider API keys as JSON.
Example: {"openai":"sk-xxxx","anthropic":"sk-ant-xxxx"}
AI_ALLOWED_MODELS Specifies the list of models that users can select, as a JSON array.
Example: [{"provider":"openai","modelId":"gpt-4o","isDefault":true},{"provider":"anthropic","modelId":"claude-sonnet-4-5"}]
[]
AI_USES_ONLY_ENV_VARS_FOR_SOME_OPTIONS When true, the connection settings (enabling the AI feature, enabling providers, and API keys) reference only the environment variable values, not the values in the local DB. false
AI_MODEL_CATALOG_REFRESH_ON_STARTUP When true, refreshes the model catalog on startup. false
AI_MODEL_CATALOG_REFRESH_CRON_SCHEDULE Specifies the schedule for periodically refreshing the model catalog in cron format. Leave empty to disable periodic refresh. 0 4 * * *
Option (Overwritable in admin page)
APP_SITE_URL_USES_ONLY_ENV_VARS Prioritize env vars over values in DB for Site URL false
FILE_UPLOAD_USES_ONLY_ENV_VAR_FOR_FILE_UPLOAD_TYPE Prioritize env var over value in DB for File Upload Type false
LOCAL_STRATEGY_ENABLED Enable or disable ID/Pass login
LOCAL_STRATEGY_USES_ONLY_ENV_VARS_FOR_SOME_OPTIONS Prioritize env vars over values in DB for some ID/Pass login options false
SAML_ENABLED Enable or disable SAML
SAML_USES_ONLY_ENV_VARS_FOR_SOME_OPTIONS Prioritize env vars over values in DB for some SAML options false
SAML_ENTRY_POINT IdP entry point
SAML_ISSUER Issuer string to supply to IdP
SAML_ATTR_MAPPING_ID Attribute map for ID
SAML_ATTR_MAPPING_USERNAME Attribute map for username
SAML_ATTR_MAPPING_MAIL Attribute map for email
SAML_ATTR_MAPPING_FIRST_NAME Attribute map for first name
SAML_ATTR_MAPPING_LAST_NAME Attribute map for last name
SAML_CERT PEM-encoded X.509 signing certificate string to validate the response from IdP
OAUTH_GOOGLE_CLIENT_ID Google API client ID for OAuth login.
OAUTH_GOOGLE_CLIENT_SECRET Google API client secret for OAuth login.
OAUTH_GITHUB_CLIENT_ID GitHub API client ID for OAuth login.
OAUTH_GITHUB_CLIENT_SECRET GitHub API client secret for OAuth login.
OAUTH_TWITTER_CONSUMER_KEY Twitter consumer key(API key) for OAuth login.
OAUTH_TWITTER_CONSUMER_SECRET Twitter consumer secret(API secret) for OAuth login.
GROWI Vault options
VAULT_ENABLED Enables the GROWI Vault feature (fixed at deploy time; no runtime toggle). false
VAULT_MANAGER_ENDPOINT URL the GROWI app uses to reach the vault-manager service (required to enable Vault).
VAULT_MANAGER_INTERNAL_SECRET Shared secret for app-to-vault-manager authentication. Must be set in production and kept confidential.
VAULT_REPO_PATH Filesystem path of the bare Git repository managed by vault-manager (required; vault-manager does not start without it. The conventional value is /data/vault-repo.git).
VAULT_BOOTSTRAP_ON_START Run the initial bootstrap at startup (true / false / force). false
VAULT_BOOTSTRAP_RETRY_MAX Maximum number of bootstrap retry attempts. 5
VAULT_BOOTSTRAP_RETRY_BASE_MS Base backoff delay between bootstrap retries (ms). 30000
VAULT_BOOTSTRAP_RETRY_MAX_MS Cap on the bootstrap retry backoff delay (ms). 1800000
VAULT_BOOTSTRAP_RETRY_DISABLED Disables automatic bootstrap retries. false
VAULT_BOOTSTRAP_HEARTBEAT_INTERVAL_MS Interval for bootstrap heartbeat writes (ms). 10000
VAULT_BOOTSTRAP_HEARTBEAT_STALE_MS Age after which a running bootstrap heartbeat is considered stale (ms). 60000
VAULT_DRIFT_DETECTION_DISABLED Disables the post-bootstrap drift detection sweep. false
VAULT_DRIFT_DETECTION_INTERVAL_MS Interval between drift detection ticks (ms). 300000
VAULT_DRIFT_MAX_PAGES_PER_TICK Maximum pages scanned per drift detection tick. 10000
VAULT_RECONCILE_MAX_PAGES_PER_USER_REQUEST Maximum pages for a user-triggered reconcile request. 1000
VAULT_RECONCILE_MAX_PAGES_PER_ADMIN_REQUEST Maximum pages for an admin-triggered reconcile request. 1000
VAULT_RECONCILE_MAX_CONCURRENT_PER_USER Maximum concurrent reconcile jobs per user. 1
VAULT_RECONCILE_MAX_CONCURRENT_SYSTEM Maximum concurrent reconcile jobs system-wide. 3
VAULT_RECONCILE_CHUNK_SIZE Page batch size per reconcile processing chunk. 100
VAULT_RECONCILE_HISTORY_RETENTION_DAYS Days to retain reconcile history log entries. 30
VAULT_RECONCILE_REJECT_WHEN_BOOTSTRAP_NOT_DONE Rejects reconcile requests while bootstrap is incomplete. true
VAULT_RECONCILE_ADMIN_BYPASS_CAPACITY_LIMIT Lets admin reconcile requests bypass the system concurrency limit. false
VAULT_MAINTENANCE_TICK_MS vault-manager maintenance loop tick interval (ms); drives squash/gc checks. 300000
VAULT_SQUASH_COMMIT_THRESHOLD Commit count per namespace above which history is squashed. 1000
VAULT_SQUASH_AGE_HOURS Hours since the last squash that forces another squash. 1
VAULT_GC_LOOSE_OBJECT_THRESHOLD Loose-object count above which git gc runs. 50000
VAULT_GC_INTERVAL_HOURS Hours between git gc runs. 24