Skip to content

Configuration options

Options are split into a few types:

  • Co-op Cloud options are set in your co-op cloud env configuration and relate to Co-op Cloud specific settings
  • Core options are set on the server (e.g. co-op cloud env, or if not using co-op cloud, using environment variables)
  • App options can be set via environment options, but can also be set using a nice UI

Co-op Cloud options

  • TYPE, SITE_URL, LETS_ENCRYPT_ENV - leave as-is
  • DOMAIN - this is the domain name which resolves to karrot. Should be set to the same as app name

GeoIP

GeoIP is optional. The Karrot application just needs the path to the database set via the GeoIP Path option.

To keep the GeoIP database up to date though, you need to run geoipupdate. You need a maxmind account to get GeoIP data. You only need the free account and then you can get an account id and license key.

  • in the Co-op Cloud setup this can be achieved by including compose.geoip.yml and setting MAXMIND_ACCOUNT_ID and a secret for MAXMIND_LICENSE_KEY
  • if you are using a custom setup, then you need to configure geoipupdate yourself

Core options

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

mode (optional)

fieldmode
env varMODE
defaultdev

base_url (optional)

fieldbase_url
env varBASE_URL, SITE_URL
defaulthttp://localhost:8000

secret_key

fieldsecret_key
env varSECRET_KEY

Admin Emails (optional)

Email Address of Instance Admins

fieldadmin_emails
env varADMIN_EMAILS
examplesadmin1@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

fieldfrontend_dir
env varFRONTEND_DIR

Allowed hosts (optional)

fieldallowed_hosts
env varALLOWED_HOSTS
default*

CSRF Trusted Origins (optional)

fieldcsrf_trusted_origins
env varCSRF_TRUSTED_ORIGINS
defaulthttp://127.0.0.1:8000

GeoIP Path (optional)

fieldgeoip_path
env varGEOIP_PATH

Listen options

File descriptor (optional)

fieldlisten.fd
env varLISTEN_FD

Host (optional)

fieldlisten.host
env varLISTEN_HOST

Port (optional)

fieldlisten.port
env varLISTEN_PORT

Unix socket (optional)

fieldlisten.socket
env varLISTEN_SOCKET

Concurrency (optional)

How many web workers

fieldlisten.concurrency
env varLISTEN_CONCURRENCY, WORKER_COUNT
default1

request timeout seconds (optional)

fieldlisten.request_timeout_seconds
env varREQUEST_TIMEOUT_SECONDS
default60

Database options

Database name

fielddatabase.name
env varDATABASE_NAME

User

fielddatabase.user
env varDATABASE_USER

Password

fielddatabase.password
env varDATABASE_PASSWORD

Host (optional)

fielddatabase.host
env varDATABASE_HOST
defaultlocalhost

Port (optional)

fielddatabase.port
env varDATABASE_PORT
default5432

Connection max age (optional)

fielddatabase.connection_max_age
env varDATABASE_CONN_MAX_AGE
default0

database statement query timeout during requests (optional)

fielddatabase.request_timeout_seconds
env varREQUEST_DATABASE_TIMEOUT_SECONDS
default60

Redis options

Host (optional)

fieldredis.host
env varREDIS_HOST
defaultlocalhost

Port (optional)

fieldredis.port
env varREDIS_PORT
default6379

Unix socket (optional)

fieldredis.socket
env varREDIS_SOCKET

Database (optional)

fieldredis.db
env varREDIS_DB
default0

Worker options

immediate (optional)

fieldworker.immediate
defaultFalse

count (optional)

fieldworker.count
default1

Upload options

dir (optional)

fielduploads.dir
env varFILE_UPLOAD_DIR
default./uploads/

temp_dir (optional)

fielduploads.temp_dir
env varFILE_UPLOAD_TEMP_DIR

permissions (optional)

fielduploads.permissions
env varFILE_UPLOAD_PERMISSIONS

directory_permissions (optional)

fielduploads.directory_permissions
env varFILE_UPLOAD_DIRECTORY_PERMISSIONS

Plugin options

dir (optional)

fieldplugins.dir
env varPLUGIN_DIR
default./plugins/

Sentry options

dsn (optional)

fieldsentry.dsn
env varSENTRY_DSN

environment (optional)

fieldsentry.environment
env varSENTRY_ENVIRONMENT
defaultproduction

client_dsn (optional)

fieldsentry.client_dsn
env varSENTRY_CLIENT_DSN

release (optional)

fieldsentry.release
env varSENTRY_RELEASE

release_use_git_rev (optional)

fieldsentry.release_use_git_rev
env varSENTRY_RELEASE_USE_GIT_REV
defaultTrue

Influxdb options

host

fieldinflux_db.host
env varINFLUXDB_HOST

port

fieldinflux_db.port
env varINFLUXDB_PORT

user

fieldinflux_db.user
env varINFLUXDB_USER

password

fieldinflux_db.password
env varINFLUXDB_PASSWORD

database name

fieldinflux_db.database
env varINFLUXDB_NAME

timeout (optional)

fieldinflux_db.timeout
env varINFLUXDB_TIMEOUT
default5

App options

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

Admin Chat Webhook (optional)

fieldadmin_chat_webhook
env varADMIN_CHAT_WEBHOOK

General

Site Name (optional)

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

fieldgeneral.name
env varSITE_NAME
defaultKarrot

Site Logo URL (optional)

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

fieldgeneral.logo
env varSITE_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

fieldaccount.email_verification_time_limit_hours
env varEMAIL_VERIFICATION_TIME_LIMIT_HOURS
default168

Password Reset Time (minutes) (optional)

Time until a password reset link expires

fieldaccount.password_reset_time_limit_minutes
env varPASSWORD_RESET_TIME_LIMIT_MINUTES
default180

Account Delete Time (minutes) (optional)

Time until an account delete email link expires

fieldaccount.account_delete_time_limit_minutes
env varACCOUNT_DELETE_TIME_LIMIT_MINUTES
default180

Email

Configure email settings

Email Backend (optional)

Choose how sending email is handled

fieldemail.backend
env varEMAIL_BACKEND
defaultconsole

From Address (optional)

fieldemail.from_email
env varEMAIL_FROM
defaultkarrot@example.com
exampleskarrot@example.com

Email Reply Domain (optional)

Domain to which email replies go to

fieldemail.reply_domain
env varEMAIL_REPLY_DOMAIN
examplesreplies.example.com

Email Reply Trimmer URL (optional)

Service to handle email reply trimming

fieldemail.reply_trimmer_url
env varEMAIL_REPLY_TRIMMER_URL
exampleshttp://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

fieldemail.smtp.host
env varSMTP_HOST

Port (optional)

Port to use for the SMTP server

fieldemail.smtp.port
env varSMTP_PORT
default25

User (optional)

Username to use for the SMTP server

fieldemail.smtp.user
env varSMTP_USER

Password (optional)

Password to use for the SMTP server

fieldemail.smtp.password
env varSMTP_PASSWORD

Use TLS (optional)

Use explicit TLS connection, generally on port 587

fieldemail.smtp.use_tls
env varSMTP_USE_TLS
defaultFalse

Use SSL (optional)

Use implicit TLS, generally on port 465

fieldemail.smtp.use_ssl
env varSMTP_USE_SSL
defaultFalse

SSL Keyfile (optional)

Path to a PEM-formatted private key file

fieldemail.smtp.ssl_keyfile
env varSMTP_SSL_KEYFILE

SSL Certfile (optional)

Path to a PEM-formatted certificate chain file

fieldemail.smtp.ssl_certfile
env varSMTP_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)

fieldemail.postal.api_url
env varPOSTAL_API_URL

Postal API Key (optional)

fieldemail.postal.api_key
env varPOSTAL_API_KEY

Postal Webhook Key (optional)

Used for Postal to call back to Karrot

fieldemail.postal.webhook_key
env varPOSTAL_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)

fieldmeet.livekit_endpoint
env varMEET_LIVEKIT_ENDPOINT

LiveKit API Key (optional)

fieldmeet.livekit_api_key
env varMEET_LIVEKIT_API_KEY

LiveKit API Secret (optional)

fieldmeet.livekit_api_secret
env varMEET_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

fieldmeet.use_livekit_room_prefix
env varMEET_USE_LIVEKIT_ROOM_PREFIX
defaultFalse

Web Push

Settings for web push notifications

VAPID Public Key

fieldweb_push.vapid_public_key
env varVAPID_PUBLIC_KEY

VAPID Private Key

fieldweb_push.vapid_private_key
env varVAPID_PRIVATE_KEY

VAPID Admin Email

fieldweb_push.vapid_admin_email
env varVAPID_ADMIN_EMAIL
examplesadmin@example.com

Discourse

URL

fielddiscourse.url
env varPROXY_DISCOURSE_URL
exampleshttps://community.karrot.world, https://forum.example.com

Topic to use for the banner inside Karrot

fielddiscourse.banner_topic_id
env varFORUM_BANNER_TOPIC_ID
examples930

Discussions Feed (optional)

Feed to use for the discussions section

fielddiscourse.discussions_feed
env varFORUM_DISCUSSIONS_FEED
exampleslatest.json

Upload

Max Upload Size (optional)

Maximum size allowed for image or attachment uploads

fielduploads.max_size
env varFILE_UPLOAD_MAX_SIZE
default10m
examples500k, 20m, 1g

Use Accel Redirect (optional)

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

fielduploads.use_accel_redirect
env varFILE_UPLOAD_USE_ACCEL_REDIRECT
defaultFalse

Issues

voting_duration_days (optional)

fieldissues.voting_duration_days
env varVOTING_DURATION_DAYS
default7

voting_due_soon_hours (optional)

fieldissues.voting_due_soon_hours
env varVOTING_DUE_SOON_HOURS
default12

Conversations

message_edit_days (optional)

fieldconversations.message_edit_days
env varMESSAGE_EDIT_DAYS
default2

conversation_closed_days (optional)

fieldconversations.conversation_closed_days
env varCONVERSATION_CLOSED_DAYS
default7

Groups

Trust

group_editor_trust_max_threshold (optional)

Maximum trust needed to get editor role

fieldgroups.trust.group_editor_trust_max_threshold
env varGROUP_EDITOR_TRUST_MAX_THRESHOLD
default3

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)

fieldgroups.inactivity.days_until_group_inactive
env varNUMBER_OF_DAYS_UNTIL_GROUP_INACTIVE
default14

Membership Inactivity

For managing inactive users in groups

days_until_inactive_in_group (optional)

For marking users inactive

fieldgroups.membership_inactivity.days_until_inactive_in_group
env varNUMBER_OF_DAYS_UNTIL_INACTIVE_IN_GROUP
default30

inactive_months_until_removal_notification (optional)

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

fieldgroups.membership_inactivity.inactive_months_until_removal_notification
env varNUMBER_OF_INACTIVE_MONTHS_UNTIL_REMOVAL_FROM_GROUP_NOTIFICATION
default6

days_after_removal_notification_we_actually_remove_them (optional)

For actually removing them, after they have been notified

fieldgroups.membership_inactivity.days_after_removal_notification_we_actually_remove_them
env varNUMBER_OF_DAYS_AFTER_REMOVAL_NOTIFICATION_WE_ACTUALLY_REMOVE_THEM
default7

Places

Max Weeks in Advance (optional)

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

fieldplaces.store_max_weeks_in_advance
env varPLACE_MAX_WEEKS_IN_ADVANCE, STORE_MAX_WEEKS_IN_ADVANCE
default52

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

fieldactivities.feedback_possible_days
env varFEEDBACK_POSSIBLE_DAYS
default30

Activity Due Soon Notification (hours) (optional)

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

fieldactivities.activity_due_soon_hours
env varACTIVITY_DUE_SOON_HOURS
default6

Activity Reminder (hours) (optional)

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

fieldactivities.activity_reminder_hours
env varACTIVITY_REMINDER_HOURS
default3

Activity Left Late (hours) (optional)

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

fieldactivities.activity_leave_late_hours
env varACTIVITY_LEAVE_LATE_HOURS
default24

This will be considered when viewing the activity statistics