Skip to content

Configuration settings

Settings come in two types:

  • Core settings are set on the server and require Karrot to be rebooted to take effect
  • App settings can be on the server, but also edited using the Instance Settings UI, no reboot required

TIP

All environment variables can also be set from file contents by adding _FILE on the end.

E.g.

# Set the password to 1234
DATABASE_PASSWORD=1234
# Reads the file contents of /path/to/database_password and then sets DATABASE_PASSWORD 
DATABASE_PASSWORD_FILE=/path/to/database_password

Core settings

This documentation is generated by the server, and available in markdown or html format.

mode (optional)

FieldENVDefault
modeMODEdev

base_url (optional)

FieldENVDefault
base_urlBASE_URL
SITE_URL
http://localhost:8000

secret_key

FieldENV
secret_keySECRET_KEY

Admin Emails (optional)

Email Address of Instance Admins

FieldENVExamples
admin_emailsADMIN_EMAILSadmin1@example.com,admin2@example.com

Instance admins can access the admin interface, e.g. to configure App Settings

Frontend directory (optional)

Directory to serve frontend files from, if you are not using something else to serve them

FieldENV
frontend_dirFRONTEND_DIR

Allowed hosts (optional)

FieldENVDefault
allowed_hostsALLOWED_HOSTS*

CSRF Trusted Origins (optional)

FieldENVDefault
csrf_trusted_originsCSRF_TRUSTED_ORIGINShttp://127.0.0.1:8000

GeoIP Path (optional)

FieldENV
geoip_pathGEOIP_PATH

Listen options

File descriptor (optional)

FieldENV
listen.fdLISTEN_FD

Host (optional)

FieldENV
listen.hostLISTEN_HOST

Port (optional)

FieldENV
listen.portLISTEN_PORT

Unix socket (optional)

FieldENV
listen.socketLISTEN_SOCKET

Concurrency (optional)

How many web workers

FieldENVDefault
listen.concurrencyLISTEN_CONCURRENCY
WORKER_COUNT
1

request timeout seconds (optional)

FieldENVDefault
listen.request_timeout_secondsREQUEST_TIMEOUT_SECONDS60

Database options

Database name

FieldENV
database.nameDATABASE_NAME

User

FieldENV
database.userDATABASE_USER

Password

FieldENV
database.passwordDATABASE_PASSWORD

Host (optional)

FieldENVDefault
database.hostDATABASE_HOSTlocalhost

Port (optional)

FieldENVDefault
database.portDATABASE_PORT5432

Connection max age (optional)

FieldENVDefault
database.connection_max_ageDATABASE_CONN_MAX_AGE0

database statement query timeout during requests (optional)

FieldENVDefault
database.request_timeout_secondsREQUEST_DATABASE_TIMEOUT_SECONDS60

Redis options

Host (optional)

FieldENVDefault
redis.hostREDIS_HOSTlocalhost

Port (optional)

FieldENVDefault
redis.portREDIS_PORT6379

Unix socket (optional)

FieldENV
redis.socketREDIS_SOCKET

Database (optional)

FieldENVDefault
redis.dbREDIS_DB0

Worker options

immediate (optional)

FieldDefault
worker.immediateFalse

count (optional)

FieldDefault
worker.count1

Upload options

dir (optional)

FieldENVDefault
uploads.dirFILE_UPLOAD_DIR./uploads/

temp_dir (optional)

FieldENV
uploads.temp_dirFILE_UPLOAD_TEMP_DIR

permissions (optional)

FieldENV
uploads.permissionsFILE_UPLOAD_PERMISSIONS

directory_permissions (optional)

FieldENV
uploads.directory_permissionsFILE_UPLOAD_DIRECTORY_PERMISSIONS

Plugin options

dir (optional)

FieldENVDefault
plugins.dirPLUGIN_DIR./plugins/

Sentry options

dsn (optional)

FieldENV
sentry.dsnSENTRY_DSN

environment (optional)

FieldENVDefault
sentry.environmentSENTRY_ENVIRONMENTproduction

client_dsn (optional)

FieldENV
sentry.client_dsnSENTRY_CLIENT_DSN

release (optional)

FieldENV
sentry.releaseSENTRY_RELEASE

release_use_git_rev (optional)

FieldENVDefault
sentry.release_use_git_revSENTRY_RELEASE_USE_GIT_REVTrue

Influxdb options

host

FieldENV
influx_db.hostINFLUXDB_HOST

port

FieldENV
influx_db.portINFLUXDB_PORT

user

FieldENV
influx_db.userINFLUXDB_USER

password

FieldENV
influx_db.passwordINFLUXDB_PASSWORD

database name

FieldENV
influx_db.databaseINFLUXDB_NAME

timeout (optional)

FieldENVDefault
influx_db.timeoutINFLUXDB_TIMEOUT5

App settings

This documentation is generated by the server, and available in markdown or html format.

Admin Chat Webhook (optional)

FieldENV
admin_chat_webhookADMIN_CHAT_WEBHOOK

General

Site Name (optional)

The name of the site, it will show up in the site title, and other places.

FieldENVDefault
general.nameSITE_NAMEKarrot

Site Logo URL (optional)

URL to an image that will be used as the logo, a PNG with transparent background is recommended

FieldENV
general.logoSITE_LOGO

PNG with transparent background is recommended because there is not good enough support in email clients for other formats, e.g. SVG.

For now, you have to find a way to host the file yourself and provide the URL here. In the future you will be able to upload it here.

Account

Email Verification Time (hours) (optional)

Time until a verification code expires

FieldENVDefault
account.email_verification_time_limit_hoursEMAIL_VERIFICATION_TIME_LIMIT_HOURS168

Password Reset Time (minutes) (optional)

Time until a password reset link expires

FieldENVDefault
account.password_reset_time_limit_minutesPASSWORD_RESET_TIME_LIMIT_MINUTES180

Account Delete Time (minutes) (optional)

Time until an account delete email link expires

FieldENVDefault
account.account_delete_time_limit_minutesACCOUNT_DELETE_TIME_LIMIT_MINUTES180

Email

Configure email settings

Email Backend (optional)

Choose how sending email is handled

FieldENVDefault
email.backendEMAIL_BACKENDconsole

From Address (optional)

FieldENVDefaultExamples
email.from_emailEMAIL_FROMkarrot@example.comkarrot@example.com

Email Reply Domain (optional)

Domain to which email replies go to

FieldENVExamples
email.reply_domainEMAIL_REPLY_DOMAINreplies.example.com

Email Reply Trimmer URL (optional)

Service to handle email reply trimming

FieldENVExamples
email.reply_trimmer_urlEMAIL_REPLY_TRIMMER_URLhttp://localhost:4567/trim

A service to trim the reply section from emails when receiving incoming emails.

See https://github.com/karrot-dev/email_reply_trimmer_service

SMTP

Host

The host to use for sending email

FieldENV
email.smtp.hostSMTP_HOST
Port (optional)

Port to use for the SMTP server

FieldENVDefault
email.smtp.portSMTP_PORT25
User (optional)

Username to use for the SMTP server

FieldENV
email.smtp.userSMTP_USER
Password (optional)

Password to use for the SMTP server

FieldENV
email.smtp.passwordSMTP_PASSWORD
Use TLS (optional)

Use explicit TLS connection, generally on port 587

FieldENVDefault
email.smtp.use_tlsSMTP_USE_TLSFalse
Use SSL (optional)

Use implicit TLS, generally on port 465

FieldENVDefault
email.smtp.use_sslSMTP_USE_SSLFalse
SSL Keyfile (optional)

Path to a PEM-formatted private key file

FieldENV
email.smtp.ssl_keyfileSMTP_SSL_KEYFILE
SSL Certfile (optional)

Path to a PEM-formatted certificate chain file

FieldENV
email.smtp.ssl_certfileSMTP_SSL_CERTFILE

Postal

Configure settings to send email via a postal server

Postal is a self hostable email server.

You can find out more at https://postalserver.io/

Postal API URL (optional)
FieldENV
email.postal.api_urlPOSTAL_API_URL
Postal API Key (optional)
FieldENV
email.postal.api_keyPOSTAL_API_KEY
Postal Webhook Key (optional)

Used for Postal to call back to Karrot

FieldENV
email.postal.webhook_keyPOSTAL_WEBHOOK_KEY

Webhooks allow Postal to make requests to Karrot. The webhook key is what ensures that happens securely.

The webhooks have two purposes:

  • receiving tracking events
  • receiving incoming email

You might configure this even if you are not using Postal for sending email as you can still use Postal for handling incoming email in that scenario.

Meet

Options for video calling

Video calling is powered by LiveKit.

This can be self-hosted, or you can use their hosted option.

LiveKit Endpoint (optional)

FieldENV
meet.livekit_endpointMEET_LIVEKIT_ENDPOINT

LiveKit API Key (optional)

FieldENV
meet.livekit_api_keyMEET_LIVEKIT_API_KEY

LiveKit API Secret (optional)

FieldENV
meet.livekit_api_secretMEET_LIVEKIT_API_SECRET

Use LiveKit room prefix (optional)

If enabled prefixes room names with the base URL,allowing multiple deployments to use the same instance

FieldENVDefault
meet.use_livekit_room_prefixMEET_USE_LIVEKIT_ROOM_PREFIXFalse

Web Push

Settings for web push notifications

VAPID Public Key

FieldENV
web_push.vapid_public_keyVAPID_PUBLIC_KEY

VAPID Private Key

FieldENV
web_push.vapid_private_keyVAPID_PRIVATE_KEY

VAPID Admin Email

FieldENVExamples
web_push.vapid_admin_emailVAPID_ADMIN_EMAILadmin@example.com

Discourse

URL

FieldENVExamples
discourse.urlPROXY_DISCOURSE_URLhttps://community.karrot.world
https://forum.example.com

Topic to use for the banner inside Karrot

FieldENVExamples
discourse.banner_topic_idFORUM_BANNER_TOPIC_ID930

Discussions Feed (optional)

Feed to use for the discussions section

FieldENVExamples
discourse.discussions_feedFORUM_DISCUSSIONS_FEEDlatest.json

Upload

Max Upload Size (optional)

Maximum size allowed for image or attachment uploads

FieldENVDefaultExamples
uploads.max_sizeFILE_UPLOAD_MAX_SIZE10m500k
20m
1g

Use Accel Redirect (optional)

Allows nginx to serve files that were uploaded by users, you must also configure this in nginx

FieldENVDefault
uploads.use_accel_redirectFILE_UPLOAD_USE_ACCEL_REDIRECTFalse

Issues

voting_duration_days (optional)

FieldENVDefault
issues.voting_duration_daysVOTING_DURATION_DAYS7

voting_due_soon_hours (optional)

FieldENVDefault
issues.voting_due_soon_hoursVOTING_DUE_SOON_HOURS12

max_sanction_days (optional)

FieldENVDefault
issues.max_sanction_daysMAX_SANCTION_DAYS365

Conversations

message_edit_days (optional)

FieldENVDefault
conversations.message_edit_daysMESSAGE_EDIT_DAYS2

conversation_closed_days (optional)

FieldENVDefault
conversations.conversation_closed_daysCONVERSATION_CLOSED_DAYS7

Groups

Trust

group_editor_trust_max_threshold (optional)

Maximum trust needed to get editor role

FieldENVDefault
groups.trust.group_editor_trust_max_thresholdGROUP_EDITOR_TRUST_MAX_THRESHOLD3

The amount of trust needed to get editor role changes depending on how many people are in the group, as the group gets bigger, more trust is needed. This is the maximum amount of trust that will ever be needed.

Group Inactivity

For managing inactive groups

days_until_group_inactive (optional)
FieldENVDefault
groups.inactivity.days_until_group_inactiveNUMBER_OF_DAYS_UNTIL_GROUP_INACTIVE14

Membership Inactivity

For managing inactive users in groups

days_until_inactive_in_group (optional)

For marking users inactive

FieldENVDefault
groups.membership_inactivity.days_until_inactive_in_groupNUMBER_OF_DAYS_UNTIL_INACTIVE_IN_GROUP30
inactive_months_until_removal_notification (optional)

For sending users an email telling them they will be removed from a group

FieldENVDefault
groups.membership_inactivity.inactive_months_until_removal_notificationNUMBER_OF_INACTIVE_MONTHS_UNTIL_REMOVAL_FROM_GROUP_NOTIFICATION6
days_after_removal_notification_we_actually_remove_them (optional)

For actually removing them, after they have been notified

FieldENVDefault
groups.membership_inactivity.days_after_removal_notification_we_actually_remove_themNUMBER_OF_DAYS_AFTER_REMOVAL_NOTIFICATION_WE_ACTUALLY_REMOVE_THEM7

Places

Max Weeks in Advance (optional)

Max allowable value for how many weeks in advance activities are created for a series

FieldENVDefault
places.store_max_weeks_in_advancePLACE_MAX_WEEKS_IN_ADVANCE
STORE_MAX_WEEKS_IN_ADVANCE
52

This is still dependent on setting it for a specific place, which can use a lower value, but not higher

Activities

Feedback Period (days) (optional)

Time period after an activity that feedback can be submitted

FieldENVDefault
activities.feedback_possible_daysFEEDBACK_POSSIBLE_DAYS30

Activity Due Soon Notification (hours) (optional)

Time before activity is due that an upcoming activities notification will be issued

FieldENVDefault
activities.activity_due_soon_hoursACTIVITY_DUE_SOON_HOURS6

Activity Reminder (hours) (optional)

Time before activity is due that a push notification will be sent

FieldENVDefault
activities.activity_reminder_hoursACTIVITY_REMINDER_HOURS3

Activity Left Late (hours) (optional)

Time before activity is due to start that it is considered too late

FieldENVDefault
activities.activity_leave_late_hoursACTIVITY_LEAVE_LATE_HOURS24

This will be considered when viewing the activity statistics