--- title: 'Environment Variables' description: 'Environment Variables for NocoDB!' hide_table_of_contents: true --- For production usecases, it is **recommended** to configure - `NC_DB`, - `NC_AUTH_JWT_SECRET`, - `NC_PUBLIC_URL`, - `NC_REDIS_URL` | Variable | Comments | If absent | |---|---|---| | NC_DB | See our example database URLs [here](https://github.com/nocodb/nocodb#docker). | A local SQLite will be created in root folder if `NC_DB` is not provided | | NC_DB_JSON | Can be used instead of `NC_DB` and value should be valid knex connection JSON | | | NC_DB_JSON_FILE | Can be used instead of `NC_DB` and value should be a valid path to knex connection JSON | | | DATABASE_URL | JDBC URL Format. Can be used instead of NC_DB. | | | DATABASE_URL_FILE | Can be used instead of DATABASE_URL: path to file containing JDBC URL Format. | | | NC_AUTH_JWT_SECRET | JWT secret used for auth and storing other secrets | A random secret will be generated | | PORT | For setting app running port | `8080` | | DB_QUERY_LIMIT_DEFAULT | Default pagination limit | 25 | | DB_QUERY_LIMIT_MAX | Maximum allowed pagination limit | 1000 | | DB_QUERY_LIMIT_MIN | Minimum allowed pagination limit | 1 | | NC_TOOL_DIR | App directory to keep metadata and app related files | Defaults to current working directory. In docker maps to `/usr/app/data/` for mounting volume. | | NC_PUBLIC_URL | Used for sending Email invitations | Best guess from http request params | | NC_JWT_EXPIRES_IN | JWT token expiry time | `10h` | | NC_CONNECT_TO_EXTERNAL_DB_DISABLED | Disable Project creation with external database | | | NC_INVITE_ONLY_SIGNUP | Removed since version 0.99.0 and now it's recommended to use [super admin settings menu](/setup-and-usages/account-settings#enable--disable-signup). Allow users to signup only via invite url, value should be any non-empty string. | | | NUXT_PUBLIC_NC_BACKEND_URL | Custom Backend URL | ``http://localhost:8080`` will be used | | NC_REQUEST_BODY_SIZE | Request body size [limit](https://expressjs.com/en/resources/middleware/body-parser.html#limit) | `1048576` | | NC_EXPORT_MAX_TIMEOUT | After NC_EXPORT_MAX_TIMEOUT csv gets downloaded in batches | Default value 5000(in millisecond) will be used | | NC_DISABLE_TELE | Disable telemetry | | | NC_DASHBOARD_URL | Custom dashboard url path | `/dashboard` | | NC_GOOGLE_CLIENT_ID | Google client id to enable google authentication | | | NC_GOOGLE_CLIENT_SECRET | Google client secret to enable google authentication | | | NC_MIGRATIONS_DISABLED | Disable NocoDB migration | | | NC_MIN | If set to any non-empty string the default splash screen(initial welcome animation) and matrix screensaver will disable | | | NC_SENTRY_DSN | For Sentry monitoring | | | NC_REDIS_URL | Custom Redis URL. Example: `redis://:authpassword@127.0.0.1:6380/4` | Meta data will be stored in memory | | NC_DISABLE_ERR_REPORT | Disable error reporting | | | NC_DISABLE_CACHE | To be used only while debugging. On setting this to `true` - meta data be fetched from db instead of redis/cache. | `false` | | AWS_ACCESS_KEY_ID | For Litestream - S3 access key id | If Litestream is configured and `NC_DB` is not present. SQLite gets backed up to S3 | | AWS_SECRET_ACCESS_KEY | For Litestream - S3 secret access key | If Litestream is configured and `NC_DB` is not present. SQLite gets backed up to S3 | | AWS_BUCKET | For Litestream - S3 bucket | If Litestream is configured and `NC_DB` is not present. SQLite gets backed up to S3 | | AWS_BUCKET_PATH | For Litestream - S3 bucket path (like folder within S3 bucket) | If Litestream is configured and `NC_DB` is not present. SQLite gets backed up to S3 | | NC_SMTP_FROM | For SMTP plugin - Email sender address | | | NC_SMTP_HOST | For SMTP plugin - SMTP host value | | | NC_SMTP_PORT | For SMTP plugin - SMTP port value | | | NC_SMTP_USERNAME | For SMTP plugin (Optional) - SMTP username value for authentication | | | NC_SMTP_PASSWORD | For SMTP plugin (Optional) - SMTP password value for authentication | | | NC_SMTP_SECURE | For SMTP plugin (Optional) - To enable secure set value as `true` any other value treated as false | | | NC_SMTP_IGNORE_TLS | For SMTP plugin (Optional) - To ignore tls set value as `true` any other value treated as false. For more info visit https://nodemailer.com/smtp/ | | | NC_S3_BUCKET_NAME | For S3 storage plugin - AWS S3 bucket name | | | NC_S3_REGION | For S3 storage plugin - AWS S3 region | | | NC_S3_ACCESS_KEY | For S3 storage plugin - AWS access key credential for accessing resource | | | NC_S3_ACCESS_SECRET | For S3 storage plugin - AWS access secret credential for accessing resource | | | NC_ADMIN_EMAIL | For updating/creating super admin with provided email and password | | | NC_ATTACHMENT_FIELD_SIZE | For setting the attachment field size(in Bytes) | Defaults to 20MB | | NC_ADMIN_PASSWORD | For updating/creating super admin with provided email and password. Your password should have at least 8 letters with one uppercase, one number and one special letter(Allowed special chars $&+,:;=?@#\|'.^*()%!_-" ) | | | NODE_OPTIONS | For passing Node.js [options](https://nodejs.org/api/cli.html#node_optionsoptions) to instance | | | NC_MINIMAL_DBS | Create a new SQLite file for each project. All the db files are stored in `nc_minimal_dbs` folder in current working directory. (This option restricts project creation on external sources) | | | NC_DISABLE_AUDIT | Disable Audit Log | `false` | | NC_AUTOMATION_LOG_LEVEL | Possible Values: `OFF`, `ERROR`, `ALL`. See [Webhooks](/developer-resources/webhooks#call-log) for details. | `OFF` | | NC_SECURE_ATTACHMENTS | Allow accessing attachments only through presigned urls. To enable secure set value as `true` any other value treated as false. (⚠ this will make existing links inaccessible ⚠) | `false` | | NC_ATTACHMENT_EXPIRE_SECONDS | How many seconds before expiring presigned attachment urls. (Attachments will expire in at least set seconds and at most 10mins after set time) | 7200 (2 hours) |