config.md 9.8 KB
Newer Older
Haelwenn's avatar
Haelwenn committed
1 2
# Configuration

3 4 5
This file describe the configuration, it is recommended to edit the relevant *.secret.exs file instead of the others founds in the ``config`` directory.
If you run Pleroma with ``MIX_ENV=prod`` the file is ``prod.secret.exs``, otherwise it is ``dev.secret.exs``.

Haelwenn's avatar
Haelwenn committed
6 7
## Pleroma.Upload
* `uploader`: Select which `Pleroma.Uploaders` to use
href's avatar
href committed
8 9
* `filters`: List of `Pleroma.Upload.Filter` to use.
* `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host.
10
* `proxy_remote`: If you\'re using a remote uploader, Pleroma will proxy media requests instead of redirecting to it.
href's avatar
href committed
11 12 13
* `proxy_opts`: Proxy options, see `Pleroma.ReverseProxy` documentation.

Note: `strip_exif` has been replaced by `Pleroma.Upload.Filter.Mogrify`.
Haelwenn's avatar
Haelwenn committed
14 15

## Pleroma.Uploaders.Local
Haelwenn's avatar
Haelwenn committed
16
* `uploads`: Which directory to store the user-uploads in, relative to pleroma’s working directory
href's avatar
href committed
17 18 19 20

## Pleroma.Upload.Filter.Mogrify

* `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", {"impode", "1"}]`.
Haelwenn's avatar
Haelwenn committed
21

22 23 24 25 26 27
## Pleroma.Upload.Filter.Dedupe

No specific configuration.

## Pleroma.Upload.Filter.AnonymizeFilename

href's avatar
href committed
28
This filter replaces the filename (not the path) of an upload. For complete obfuscation, add
29 30
`Pleroma.Upload.Filter.Dedupe` before AnonymizeFilename.

href's avatar
href committed
31
* `text`: Text to replace filenames in links. If empty, `{random}.extension` will be used.
32

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
## Pleroma.Mailer
* `adapter`: one of the mail adapters listed in [Swoosh readme](https://github.com/swoosh/swoosh#adapters), or `Swoosh.Adapters.Local` for in-memory mailbox.
* `api_key` / `password` and / or other adapter-specific settings, per the above documentation. 

An example for Sendgrid adapter:

```
config :pleroma, Pleroma.Mailer,
  adapter: Swoosh.Adapters.Sendgrid,
  api_key: "YOUR_API_KEY"
```

An example for SMTP adapter:
```
config :pleroma, Pleroma.Mailer,
  adapter: Swoosh.Adapters.SMTP,
  relay: "smtp.gmail.com",
  username: "YOUR_USERNAME@gmail.com",
  password: "YOUR_SMTP_PASSWORD",
  port: 465,
  ssl: true,
  tls: :always,
  auth: :always
```

Haelwenn's avatar
Haelwenn committed
58
## :uri_schemes
Haelwenn's avatar
Haelwenn committed
59 60
* `valid_schemes`: List of the scheme part that is considered valid to be an URL

Haelwenn's avatar
Haelwenn committed
61
## :instance
62
* `name`: The instance’s name
Haelwenn's avatar
Haelwenn committed
63
* `email`: Email used to reach an Administrator/Moderator of the instance
64 65
* `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance``
* `limit`: Posts character limit (CW/Subject included in the counter)
Haelwenn's avatar
Haelwenn committed
66 67 68
* `upload_limit`: File size limit of uploads (except for avatar, background, banner)
* `avatar_upload_limit`: File size limit of user’s profile avatars
* `background_upload_limit`: File size limit of user’s profile backgrounds
69
* `banner_upload_limit`: File size limit of user’s profile banners
70 71
* `registrations_open`: Enable registrations for anyone, invitations can be enabled when false.
* `invites_enabled`: Enable user invitations for admins (depends on `registrations_open: false`).
72
* `account_activation_required`: Require users to confirm their emails before signing in.
73
* `federating`: Enable federation with other instances
74
* `allow_relay`: Enable Pleroma’s Relay, which makes it possible to follow a whole instance
75 76 77 78 79
* `rewrite_policy`: Message Rewrite Policy, either one or a list. Here are the ones available by default:
  * `Pleroma.Web.ActivityPub.MRF.NoOpPolicy`: Doesn’t modify activities (default)
  * `Pleroma.Web.ActivityPub.MRF.DropPolicy`: Drops all activities. It generally doesn’t makes sense to use in production
  * `Pleroma.Web.ActivityPub.MRF.SimplePolicy`: Restrict the visibility of activities from certains instances (See ``:mrf_simple`` section)
  * `Pleroma.Web.ActivityPub.MRF.RejectNonPublic`: Drops posts with non-public visibility settings (See ``:mrf_rejectnonpublic`` section)
80
  * `Pleroma.Web.ActivityPub.MRF.EnsureRePrepended`: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:.
81
* `public`: Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network.
Haelwenn's avatar
Haelwenn committed
82 83 84
* `quarantined_instances`: List of ActivityPub instances where private(DMs, followers-only) activities will not be send.
* `managed_config`: Whenether the config for pleroma-fe is configured in this config or in ``static/config.json``
* `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML)
85
* `finmoji_enabled`: Whenether to enable the finmojis in the custom emojis.
Haelwenn's avatar
Haelwenn committed
86
* `mrf_transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo).
scarlett's avatar
scarlett committed
87 88 89 90 91 92
* `scope_copy`: Copy the scope (private/unlisted/public) in replies to posts by default.
* `subject_line_behavior`: Allows changing the default behaviour of subject lines in replies. Valid values:
  * "email": Copy and preprend re:, as in email.
  * "masto": Copy verbatim, as in Mastodon.
  * "noop": Don't copy the subject.
* `always_show_subject_input`: When set to false, auto-hide the subject field when it's empty.
href's avatar
href committed
93
* `extended_nickname_format`: Set to `true` to use extended local nicknames format (allows underscores/dashes). This will break federation with
href's avatar
href committed
94
    older software for theses nicknames.
Haelwenn's avatar
Haelwenn committed
95 96

## :fe
97 98 99 100 101 102 103 104 105 106
This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:instance`` is set to false.

* `theme`: Which theme to use, they are defined in ``styles.json``
* `logo`: URL of the logo, defaults to Pleroma’s logo
* `logo_mask`: Whenether to mask the logo
* `logo_margin`: What margin to use around the logo
* `background`: URL of the background, unless viewing a user profile with a background that is set
* `redirect_root_no_login`: relative URL which indicates where to redirect when a user isn’t logged in.
* `redirect_root_login`: relative URL which indicates where to redirect when a user is logged in.
* `show_instance_panel`: Whenether to show the instance’s specific panel.
107
* `scope_options_enabled`: Enable setting an notice visibility and subject/CW when posting
Haelwenn's avatar
Haelwenn committed
108 109 110 111 112 113 114 115 116 117 118 119
* `formatting_options_enabled`: Enable setting a formatting different than plain-text (ie. HTML, Markdown) when posting, relates to ``:instance, allowed_post_formats``
* `collapse_message_with_subjects`: When a message has a subject(aka Content Warning), collapse it by default
* `hide_post_stats`: Hide notices statistics(repeats, favorites, …)
* `hide_user_stats`: Hide profile statistics(posts, posts per day, followers, followings, …)

## :mrf_simple
* `media_removal`: List of instances to remove medias from
* `media_nsfw`: List of instances to put medias as NSFW(sensitive) from
* `federated_timeline_removal`: List of instances to remove from Federated (aka The Whole Known Network) Timeline
* `reject`: List of instances to reject any activities from
* `accept`: List of instances to accept any activities from

120 121 122 123
## :mrf_rejectnonpublic
* `allow_followersonly`: whether to allow followers-only posts
* `allow_direct`: whether to allow direct messages

Karen Konou's avatar
Karen Konou committed
124
## :mrf_hellthread
Karen Konou's avatar
Karen Konou committed
125 126
* `threshold`: Number of mentioned users after which the message gets discarded as spam

Haelwenn's avatar
Haelwenn committed
127 128
## :media_proxy
* `enabled`: Enables proxying of remote media to the instance’s proxy
href's avatar
href committed
129 130
* `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.
* `proxy_opts`: All options defined in `Pleroma.ReverseProxy` documentation, defaults to `[max_body_length: (25*1_048_576)]`.
Haelwenn's avatar
Haelwenn committed
131 132 133 134 135

## :gopher
* `enabled`: Enables the gopher interface
* `ip`: IP address to bind to
* `port`: Port to bind to
136 137 138 139 140 141

## :activitypub
* ``accept_blocks``: Whether to accept incoming block activities from other instances
* ``unfollow_blocked``: Whether blocks result in people getting unfollowed
* ``outgoing_blocks``: Whether to federate blocks to other instances
* ``deny_follow_blocked``: Whether to disallow following an account that has blocked the user in question
142

kaniini's avatar
kaniini committed
143
## :http_security
144 145 146
* ``enabled``: Whether the managed content security policy is enabled
* ``sts``: Whether to additionally send a `Strict-Transport-Security` header
* ``sts_max_age``: The maximum age for the `Strict-Transport-Security` header if sent
kaniini's avatar
kaniini committed
147
* ``ct_max_age``: The maximum age for the `Expect-CT` header if sent
148
* ``referrer_policy``: The referrer policy to use, either `"same-origin"` or `"no-referrer"`.
kaniini's avatar
kaniini committed
149 150 151 152 153 154 155 156 157 158 159 160 161

## :mrf_user_allowlist

The keys in this section are the domain names that the policy should apply to.
Each key should be assigned a list of users that should be allowed through by
their ActivityPub ID.

An example:

```
config :pleroma, :mrf_user_allowlist,
  "example.org": ["https://example.org/users/admin"]
```
162

Haelwenn's avatar
Haelwenn committed
163
## :web_push_encryption, :vapid_details
164

lain's avatar
lain committed
165
Web Push Notifications configuration. You can use the mix task `mix web_push.gen.keypair` to generate it.
166 167 168 169

* ``subject``: a mailto link for the administrative contact. It’s best if this email is not a personal email address, but rather a group email so that if a person leaves an organization, is unavailable for an extended period, or otherwise can’t respond, someone else on the list can.
* ``public_key``: VAPID public key
* ``private_key``: VAPID private key
170 171 172 173

## Pleroma.Captcha
* `enabled`: Whether the captcha should be shown on registration
* `method`: The method/service to use for captcha
174
* `seconds_retained`: The time in seconds for which the captcha is valid (stored in the cache)
175 176 177

### Pleroma.Captcha.Kocaptcha
Kocaptcha is a very simple captcha service with a single API endpoint,
178 179
the source code is here: https://github.com/koto-bank/kocaptcha. The default endpoint
`https://captcha.kotobank.ch` is hosted by the developer.
180

181 182 183 184 185 186 187 188 189 190 191 192 193 194
* `endpoint`: the kocaptcha endpoint to use

## :admin_token

Allows to set a token that can be used to authenticate with the admin api without using an actual user by giving it as the 'admin_token' parameter. Example:

```
config :pleroma, :admin_token, "somerandomtoken"
```

You can then do
```
curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerandomtoken"
```