diff --git a/docs/content/doc/setup/config.md b/docs/content/doc/setup/config.md index ed08631f10a..fa35a0f5f9e 100644 --- a/docs/content/doc/setup/config.md +++ b/docs/content/doc/setup/config.md @@ -74,18 +74,55 @@ Default is a random token which will be generated at each startup of vikunja. Default: `` +Full path: `service.JWTSecret` + +Environment path: `VIKUNJA_SERVICE_JWT_SECRET` + + ### interface The interface on which to run the webserver Default: `:3456` +Full path: `service.interface` + +Environment path: `VIKUNJA_SERVICE_INTERFACE` + + +### unixsocket + +Path to Unix socket. If set, it will be created and used instead of tcp + +Default: `` + +Full path: `service.unixsocket` + +Environment path: `VIKUNJA_SERVICE_UNIXSOCKET` + + +### unixsocketmode + +Permission bits for the Unix socket. Note that octal values must be prefixed by "0o", e.g. 0o660 + +Default: `` + +Full path: `service.unixsocketmode` + +Environment path: `VIKUNJA_SERVICE_UNIXSOCKETMODE` + + ### frontendurl The URL of the frontend, used to send password reset emails. Default: `` +Full path: `service.frontendurl` + +Environment path: `VIKUNJA_SERVICE_FRONTENDURL` + + ### rootpath The base path on the file system where the binary and assets are. @@ -94,66 +131,121 @@ with a config file which will then be used. Default: `` +Full path: `service.rootpath` + +Environment path: `VIKUNJA_SERVICE_ROOTPATH` + + ### maxitemsperpage The max number of items which can be returned per page Default: `50` +Full path: `service.maxitemsperpage` + +Environment path: `VIKUNJA_SERVICE_MAXITEMSPERPAGE` + + ### enablecaldav Enable the caldav endpoint, see the docs for more details Default: `true` +Full path: `service.enablecaldav` + +Environment path: `VIKUNJA_SERVICE_ENABLECALDAV` + + ### motd Set the motd message, available from the /info endpoint Default: `` +Full path: `service.motd` + +Environment path: `VIKUNJA_SERVICE_MOTD` + + ### enablelinksharing Enable sharing of lists via a link Default: `true` +Full path: `service.enablelinksharing` + +Environment path: `VIKUNJA_SERVICE_ENABLELINKSHARING` + + ### enableregistration Whether to let new users registering themselves or not Default: `true` +Full path: `service.enableregistration` + +Environment path: `VIKUNJA_SERVICE_ENABLEREGISTRATION` + + ### enabletaskattachments Whether to enable task attachments or not Default: `true` +Full path: `service.enabletaskattachments` + +Environment path: `VIKUNJA_SERVICE_ENABLETASKATTACHMENTS` + + ### timezone The time zone all timestamps are in. Please note that time zones have to use [the official tz database names](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). UTC or GMT offsets won't work. Default: `GMT` +Full path: `service.timezone` + +Environment path: `VIKUNJA_SERVICE_TIMEZONE` + + ### enabletaskcomments Whether task comments should be enabled or not Default: `true` +Full path: `service.enabletaskcomments` + +Environment path: `VIKUNJA_SERVICE_ENABLETASKCOMMENTS` + + ### enabletotp Whether totp is enabled. In most cases you want to leave that enabled. Default: `true` +Full path: `service.enabletotp` + +Environment path: `VIKUNJA_SERVICE_ENABLETOTP` + + ### sentrydsn If not empty, enables logging of crashes and unhandled errors in sentry. Default: `` +Full path: `service.sentrydsn` + +Environment path: `VIKUNJA_SERVICE_SENTRYDSN` + + ### testingtoken If not empty, this will enable `/test/{table}` endpoints which allow to put any content in the database. @@ -163,6 +255,11 @@ each request made to this endpoint neefs to provide an `Authorization: ` Default: `` +Full path: `service.testingtoken` + +Environment path: `VIKUNJA_SERVICE_TESTINGTOKEN` + + ### enableemailreminders If enabled, vikunja will send an email to everyone who is either assigned to a task or created it when a task reminder @@ -170,6 +267,11 @@ is due. Default: `true` +Full path: `service.enableemailreminders` + +Environment path: `VIKUNJA_SERVICE_ENABLEEMAILREMINDERS` + + --- ## database @@ -182,54 +284,99 @@ Database type to use. Supported types are mysql, postgres and sqlite. Default: `sqlite` +Full path: `database.type` + +Environment path: `VIKUNJA_DATABASE_TYPE` + + ### user Database user which is used to connect to the database. Default: `vikunja` +Full path: `database.user` + +Environment path: `VIKUNJA_DATABASE_USER` + + ### password Databse password Default: `` +Full path: `database.password` + +Environment path: `VIKUNJA_DATABASE_PASSWORD` + + ### host Databse host Default: `localhost` +Full path: `database.host` + +Environment path: `VIKUNJA_DATABASE_HOST` + + ### database Databse to use Default: `vikunja` +Full path: `database.database` + +Environment path: `VIKUNJA_DATABASE_DATABASE` + + ### path When using sqlite, this is the path where to store the data Default: `./vikunja.db` +Full path: `database.path` + +Environment path: `VIKUNJA_DATABASE_PATH` + + ### maxopenconnections Sets the max open connections to the database. Only used when using mysql and postgres. Default: `100` +Full path: `database.maxopenconnections` + +Environment path: `VIKUNJA_DATABASE_MAXOPENCONNECTIONS` + + ### maxidleconnections Sets the maximum number of idle connections to the db. Default: `50` +Full path: `database.maxidleconnections` + +Environment path: `VIKUNJA_DATABASE_MAXIDLECONNECTIONS` + + ### maxconnectionlifetime The maximum lifetime of a single db connection in miliseconds. Default: `10000` +Full path: `database.maxconnectionlifetime` + +Environment path: `VIKUNJA_DATABASE_MAXCONNECTIONLIFETIME` + + ### sslmode Secure connection mode. Only used with postgres. @@ -237,12 +384,22 @@ Secure connection mode. Only used with postgres. Default: `disable` +Full path: `database.sslmode` + +Environment path: `VIKUNJA_DATABASE_SSLMODE` + + ### tls Enable SSL/TLS for mysql connections. Options: false, true, skip-verify, preferred Default: `false` +Full path: `database.tls` + +Environment path: `VIKUNJA_DATABASE_TLS` + + --- ## cache @@ -255,6 +412,11 @@ If cache is enabled or not Default: `false` +Full path: `cache.enabled` + +Environment path: `VIKUNJA_CACHE_ENABLED` + + ### type Cache type. Possible values are "keyvalue", "memory" or "redis". @@ -263,12 +425,22 @@ When choosing "redis" you will need to configure the redis connection seperately Default: `keyvalue` +Full path: `cache.type` + +Environment path: `VIKUNJA_CACHE_TYPE` + + ### maxelementsize When using memory this defines the maximum size an element can take Default: `1000` +Full path: `cache.maxelementsize` + +Environment path: `VIKUNJA_CACHE_MAXELEMENTSIZE` + + --- ## redis @@ -281,24 +453,44 @@ Whether to enable redis or not Default: `false` +Full path: `redis.enabled` + +Environment path: `VIKUNJA_REDIS_ENABLED` + + ### host The host of the redis server including its port. Default: `localhost:6379` +Full path: `redis.host` + +Environment path: `VIKUNJA_REDIS_HOST` + + ### password The password used to authenicate against the redis server Default: `` +Full path: `redis.password` + +Environment path: `VIKUNJA_REDIS_PASSWORD` + + ### db 0 means default database Default: `0` +Full path: `redis.db` + +Environment path: `VIKUNJA_REDIS_DB` + + --- ## cors @@ -313,18 +505,33 @@ Note: If you want to put the frontend and the api on seperate domains or ports, Default: `true` +Full path: `cors.enable` + +Environment path: `VIKUNJA_CORS_ENABLE` + + ### origins A list of origins which may access the api. These need to include the protocol (`http://` or `https://`) and port, if any. Default: `` +Full path: `cors.origins` + +Environment path: `VIKUNJA_CORS_ORIGINS` + + ### maxage How long (in seconds) the results of a preflight request can be cached. Default: `0` +Full path: `cors.maxage` + +Environment path: `VIKUNJA_CORS_MAXAGE` + + --- ## mailer @@ -337,60 +544,110 @@ Whether to enable the mailer or not. If it is disabled, all users are enabled ri Default: `false` +Full path: `mailer.enabled` + +Environment path: `VIKUNJA_MAILER_ENABLED` + + ### host SMTP Host Default: `` +Full path: `mailer.host` + +Environment path: `VIKUNJA_MAILER_HOST` + + ### port SMTP Host port Default: `587` +Full path: `mailer.port` + +Environment path: `VIKUNJA_MAILER_PORT` + + ### username SMTP username Default: `user` +Full path: `mailer.username` + +Environment path: `VIKUNJA_MAILER_USERNAME` + + ### password SMTP password Default: `` +Full path: `mailer.password` + +Environment path: `VIKUNJA_MAILER_PASSWORD` + + ### skiptlsverify Wether to skip verification of the tls certificate on the server Default: `false` +Full path: `mailer.skiptlsverify` + +Environment path: `VIKUNJA_MAILER_SKIPTLSVERIFY` + + ### fromemail The default from address when sending emails Default: `mail@vikunja` +Full path: `mailer.fromemail` + +Environment path: `VIKUNJA_MAILER_FROMEMAIL` + + ### queuelength The length of the mail queue. Default: `100` +Full path: `mailer.queuelength` + +Environment path: `VIKUNJA_MAILER_QUEUELENGTH` + + ### queuetimeout The timeout in seconds after which the current open connection to the mailserver will be closed. Default: `30` +Full path: `mailer.queuetimeout` + +Environment path: `VIKUNJA_MAILER_QUEUETIMEOUT` + + ### forcessl By default, vikunja will try to connect with starttls, use this option to force it to use ssl. Default: `false` +Full path: `mailer.forcessl` + +Environment path: `VIKUNJA_MAILER_FORCESSL` + + --- ## log @@ -403,60 +660,110 @@ A folder where all the logfiles should go. Default: `logs` +Full path: `log.path` + +Environment path: `VIKUNJA_LOG_PATH` + + ### enabled Whether to show any logging at all or none Default: `true` +Full path: `log.enabled` + +Environment path: `VIKUNJA_LOG_ENABLED` + + ### standard Where the normal log should go. Possible values are stdout, stderr, file or off to disable standard logging. Default: `stdout` +Full path: `log.standard` + +Environment path: `VIKUNJA_LOG_STANDARD` + + ### level Change the log level. Possible values (case-insensitive) are CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG. Default: `INFO` +Full path: `log.level` + +Environment path: `VIKUNJA_LOG_LEVEL` + + ### database Whether or not to log database queries. Useful for debugging. Possible values are stdout, stderr, file or off to disable database logging. Default: `off` +Full path: `log.database` + +Environment path: `VIKUNJA_LOG_DATABASE` + + ### databaselevel The log level for database log messages. Possible values (case-insensitive) are CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG. Default: `WARNING` +Full path: `log.databaselevel` + +Environment path: `VIKUNJA_LOG_DATABASELEVEL` + + ### http Whether to log http requests or not. Possible values are stdout, stderr, file or off to disable http logging. Default: `stdout` +Full path: `log.http` + +Environment path: `VIKUNJA_LOG_HTTP` + + ### echo Echo has its own logging which usually is unnessecary, which is why it is disabled by default. Possible values are stdout, stderr, file or off to disable standard logging. Default: `off` +Full path: `log.echo` + +Environment path: `VIKUNJA_LOG_ECHO` + + ### events Whether or not to log events. Useful for debugging. Possible values are stdout, stderr, file or off to disable events logging. Default: `stdout` +Full path: `log.events` + +Environment path: `VIKUNJA_LOG_EVENTS` + + ### eventslevel The log level for event log messages. Possible values (case-insensitive) are ERROR, INFO, DEBUG. Default: `info` +Full path: `log.eventslevel` + +Environment path: `VIKUNJA_LOG_EVENTSLEVEL` + + --- ## ratelimit @@ -469,24 +776,44 @@ whether or not to enable the rate limit Default: `false` +Full path: `ratelimit.enabled` + +Environment path: `VIKUNJA_RATELIMIT_ENABLED` + + ### kind The kind on which rates are based. Can be either "user" for a rate limit per user or "ip" for an ip-based rate limit. Default: `user` +Full path: `ratelimit.kind` + +Environment path: `VIKUNJA_RATELIMIT_KIND` + + ### period The time period in seconds for the limit Default: `60` +Full path: `ratelimit.period` + +Environment path: `VIKUNJA_RATELIMIT_PERIOD` + + ### limit The max number of requests a user is allowed to do in the configured time period Default: `100` +Full path: `ratelimit.limit` + +Environment path: `VIKUNJA_RATELIMIT_LIMIT` + + ### store The store where the limit counter for each user is stored. @@ -495,6 +822,11 @@ When choosing "keyvalue" this setting follows the one configured in the "keyvalu Default: `keyvalue` +Full path: `ratelimit.store` + +Environment path: `VIKUNJA_RATELIMIT_STORE` + + --- ## files @@ -507,6 +839,11 @@ The path where files are stored Default: `./files` +Full path: `files.basepath` + +Environment path: `VIKUNJA_FILES_BASEPATH` + + ### maxsize The maximum size of a file, as a human-readable string. @@ -514,6 +851,11 @@ Warning: The max size is limited 2^64-1 bytes due to the underlying datatype Default: `20MB` +Full path: `files.maxsize` + +Environment path: `VIKUNJA_FILES_MAXSIZE` + + --- ## migration @@ -526,18 +868,38 @@ These are the settings for the wunderlist migrator Default: `` +Full path: `migration.wunderlist` + +Environment path: `VIKUNJA_MIGRATION_WUNDERLIST` + + ### todoist Default: `` +Full path: `migration.todoist` + +Environment path: `VIKUNJA_MIGRATION_TODOIST` + + ### trello Default: `` +Full path: `migration.trello` + +Environment path: `VIKUNJA_MIGRATION_TRELLO` + + ### microsofttodo Default: `` +Full path: `migration.microsofttodo` + +Environment path: `VIKUNJA_MIGRATION_MICROSOFTTODO` + + --- ## avatar @@ -550,6 +912,11 @@ When using gravatar, this is the duration in seconds until a cached gravatar use Default: `3600` +Full path: `avatar.gravatarexpiration` + +Environment path: `VIKUNJA_AVATAR_GRAVATAREXPIRATION` + + --- ## backgrounds @@ -562,10 +929,20 @@ Whether to enable backgrounds for lists at all. Default: `true` +Full path: `backgrounds.enabled` + +Environment path: `VIKUNJA_BACKGROUNDS_ENABLED` + + ### providers Default: `` +Full path: `backgrounds.providers` + +Environment path: `VIKUNJA_BACKGROUNDS_PROVIDERS` + + --- ## legal @@ -579,10 +956,20 @@ Will be shown in the frontend if configured here Default: `` +Full path: `legal.imprinturl` + +Environment path: `VIKUNJA_LEGAL_IMPRINTURL` + + ### privacyurl Default: `` +Full path: `legal.privacyurl` + +Environment path: `VIKUNJA_LEGAL_PRIVACYURL` + + --- ## keyvalue @@ -598,6 +985,11 @@ The type of the storage backend. Can be either "memory" or "redis". If "redis" i Default: `memory` +Full path: `keyvalue.type` + +Environment path: `VIKUNJA_KEYVALUE_TYPE` + + --- ## auth @@ -611,6 +1003,11 @@ This is the default auth mechanism and does not require any additional configura Default: `` +Full path: `auth.local` + +Environment path: `VIKUNJA_AUTH_LOCAL` + + ### openid OpenID configuration will allow users to authenticate through a third-party OpenID Connect compatible provider.
@@ -624,6 +1021,11 @@ Take a look at the [default config file](https://kolaente.dev/vikunja/api/src/br Default: `` +Full path: `auth.openid` + +Environment path: `VIKUNJA_AUTH_OPENID` + + --- ## metrics @@ -638,15 +1040,30 @@ If set to true, enables a /metrics endpoint for prometheus to collect metrics ab Default: `false` +Full path: `metrics.enabled` + +Environment path: `VIKUNJA_METRICS_ENABLED` + + ### username If set to a non-empty value the /metrics endpoint will require this as a username via basic auth in combination with the password below. Default: `` +Full path: `metrics.username` + +Environment path: `VIKUNJA_METRICS_USERNAME` + + ### password If set to a non-empty value the /metrics endpoint will require this as a password via basic auth in combination with the username below. Default: `` +Full path: `metrics.password` + +Environment path: `VIKUNJA_METRICS_PASSWORD` + + diff --git a/magefile.go b/magefile.go index f95c503716e..5b06dec2e1b 100644 --- a/magefile.go +++ b/magefile.go @@ -995,13 +995,20 @@ func parseYamlConfigNode(node *yaml.Node) (config *configOption) { return config } -func printConfig(config []*configOption, level int) (rendered string) { +func printConfig(config []*configOption, level int, parent string) (rendered string) { // Keep track of what we already printed to prevent printing things twice printed := make(map[string]bool) for _, option := range config { + // FIXME: Not a good solution. Ideally this would work without the level check, but since generating config + // for more than two levels is currently broken anyway, I'll fix this after moving the config generation + // to a better format than yaml. + if level == 0 && option.key != "" { + parent = option.key + } + if option.key != "" { // Filter out all config objects where the default value == key @@ -1030,12 +1037,17 @@ func printConfig(config []*configOption, level int) (rendered string) { if option.defaultValue == "" { rendered += "" } - rendered += "`\n" + rendered += "`\n\n" + + fullPath := parent + "." + option.key + + rendered += "Full path: `" + fullPath + "`\n\n" + rendered += "Environment path: `VIKUNJA_" + strcase.ToScreamingSnake(fullPath) + "`\n\n" } } printed[option.key] = true - rendered += "\n" + printConfig(option.children, level+1) + rendered += "\n" + printConfig(option.children, level+1, parent) } return @@ -1069,7 +1081,7 @@ func GenerateDocs() error { } } - renderedConfig := printConfig(conf, 0) + renderedConfig := printConfig(conf, 0, "") // Rebuild the config file, err := os.OpenFile(configDocPath, os.O_RDWR, 0)