gotosocial/docs/configuration/index.md
tobi 0884f89431
Implement Cobra CLI tooling, Viper config tooling (#336)
* start pulling out + replacing urfave and config

* replace many many instances of config

* move more stuff => viper

* properly remove urfave

* move some flags to root command

* add testrig commands to root

* alias config file keys

* start adding cli parsing tests

* reorder viper init

* remove config path alias

* fmt

* change config file keys to non-nested

* we're more or less in business now

* tidy up the common func

* go fmt

* get tests passing again

* add note about the cliparsing tests

* reorganize

* update docs with changes

* structure cmd dir better

* rename + move some files around

* fix dangling comma
2021-12-07 13:31:39 +01:00

3.3 KiB

Configuration Overview

GoToSocial aims to be as configurable as possible, to fit lots of different use cases.

We try to provide sensible defaults wherever possible, but you can't run a GoToSocial instance without managing some configuration.

Configuration Methods

There are three different methods for configuring a GoToSocial instance, which can be combined depending on your setup.

Configuration File

The easiest way to configure GoToSocial is to pass a configuration file to to the gotosocial server start command, for example:

gotosocial server start --config-path ./config.yaml

The command expects a file in YAML or JSON format.

An example configuration file, with an explanation of each of the config fields, with default and example values, can be found here.

This example file is included with release downloads, so you can just copy it and edit it to your needs without having to worry too much about what the hell YAML or JSON is.

Environment Variables

You can also configure GoToSocial by setting environment variables. These environment variables follow the format:

  1. Prepend GTS_ to the config flag.
  2. Uppercase-all.
  3. Replace dash (-) with underscore (_).

So for example, instead of setting media-image-max-size to 2097152 in your config.yaml, you could set the environment variable:

GTS_MEDIA_IMAGE_MAX_SIZE=2097152

If you're in doubt about any of the names of these environment variables, just check the --help for the subcommand you're using.

Command Line Flags

Finally, you can set configuration values using command-line flags, which you pass directly when you're running a gotosocial command. For example, instead of setting media-image-max-size in your config.yaml, or with an environment variable, you can pass the value directly through the command line:

gotosocial server start --media-image-max-size 2097152 

If you're in doubt about which flags are available, check gotosocial --help.

Priority

The above configuration methods override each other in the order in which they were listed.

command line flags > environment variables > config file

That is, if you set media-image-max-size to 2097152 in your config file, but then ALSO set the environment variable GTS_MEDIA_MAX_IMAGE_SIZE=9999999, then the final value will be 9999999, because environment variables have a higher priority than values set in config.yaml.

Command line flags have the highest priority, so if you set --media-image-max-size 13121312, then the final value will be 13121312 regardless of what you've set elsewhere.

This means in cases where you want to just try changing one thing, but don't want to edit your config file, you can temporarily use an environment variable or a command line flag to set that one thing.

Default Values

Reasonable default values are provided for most of the configuration parameters, except in cases where a custom value is absolutely required.

See the example config file for the default values, or run gotosocial --help.