Merge remote-tracking branch 'MAIN/develop' into feature/jobs
[akkoma] / docs / config.md
1 # Configuration
2
3 This file describe the configuration, it is recommended to edit the relevant *.secret.exs file instead of the others founds in the ``config`` directory.
4 If you run Pleroma with ``MIX_ENV=prod`` the file is ``prod.secret.exs``, otherwise it is ``dev.secret.exs``.
5
6 ## Pleroma.Upload
7 * `uploader`: Select which `Pleroma.Uploaders` to use
8 * `filters`: List of `Pleroma.Upload.Filter` to use.
9 * `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.
11 * `proxy_opts`: Proxy options, see `Pleroma.ReverseProxy` documentation.
12
13 Note: `strip_exif` has been replaced by `Pleroma.Upload.Filter.Mogrify`.
14
15 ## Pleroma.Uploaders.Local
16 * `uploads`: Which directory to store the user-uploads in, relative to pleroma’s working directory
17
18 ## Pleroma.Upload.Filter.Mogrify
19
20 * `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", {"impode", "1"}]`.
21
22 ## Pleroma.Upload.Filter.Dedupe
23
24 No specific configuration.
25
26 ## Pleroma.Upload.Filter.AnonymizeFilename
27
28 This filter replaces the filename (not the path) of an upload. For complete obfuscation, add
29 `Pleroma.Upload.Filter.Dedupe` before AnonymizeFilename.
30
31 * `text`: Text to replace filenames in links. If empty, `{random}.extension` will be used.
32
33 ## Pleroma.Mailer
34 * `adapter`: one of the mail adapters listed in [Swoosh readme](https://github.com/swoosh/swoosh#adapters), or `Swoosh.Adapters.Local` for in-memory mailbox.
35 * `api_key` / `password` and / or other adapter-specific settings, per the above documentation.
36
37 An example for Sendgrid adapter:
38
39 ```exs
40 config :pleroma, Pleroma.Mailer,
41 adapter: Swoosh.Adapters.Sendgrid,
42 api_key: "YOUR_API_KEY"
43 ```
44
45 An example for SMTP adapter:
46
47 ```exs
48 config :pleroma, Pleroma.Mailer,
49 adapter: Swoosh.Adapters.SMTP,
50 relay: "smtp.gmail.com",
51 username: "YOUR_USERNAME@gmail.com",
52 password: "YOUR_SMTP_PASSWORD",
53 port: 465,
54 ssl: true,
55 tls: :always,
56 auth: :always
57 ```
58
59 ## :uri_schemes
60 * `valid_schemes`: List of the scheme part that is considered valid to be an URL
61
62 ## :instance
63 * `name`: The instance’s name
64 * `email`: Email used to reach an Administrator/Moderator of the instance
65 * `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance``
66 * `limit`: Posts character limit (CW/Subject included in the counter)
67 * `remote_limit`: Hard character limit beyond which remote posts will be dropped.
68 * `upload_limit`: File size limit of uploads (except for avatar, background, banner)
69 * `avatar_upload_limit`: File size limit of user’s profile avatars
70 * `background_upload_limit`: File size limit of user’s profile backgrounds
71 * `banner_upload_limit`: File size limit of user’s profile banners
72 * `registrations_open`: Enable registrations for anyone, invitations can be enabled when false.
73 * `invites_enabled`: Enable user invitations for admins (depends on `registrations_open: false`).
74 * `account_activation_required`: Require users to confirm their emails before signing in.
75 * `federating`: Enable federation with other instances
76 * `allow_relay`: Enable Pleroma’s Relay, which makes it possible to follow a whole instance
77 * `rewrite_policy`: Message Rewrite Policy, either one or a list. Here are the ones available by default:
78 * `Pleroma.Web.ActivityPub.MRF.NoOpPolicy`: Doesn’t modify activities (default)
79 * `Pleroma.Web.ActivityPub.MRF.DropPolicy`: Drops all activities. It generally doesn’t makes sense to use in production
80 * `Pleroma.Web.ActivityPub.MRF.SimplePolicy`: Restrict the visibility of activities from certains instances (See ``:mrf_simple`` section)
81 * `Pleroma.Web.ActivityPub.MRF.RejectNonPublic`: Drops posts with non-public visibility settings (See ``:mrf_rejectnonpublic`` section)
82 * `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:.
83 * `public`: Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network.
84 * `quarantined_instances`: List of ActivityPub instances where private(DMs, followers-only) activities will not be send.
85 * `managed_config`: Whenether the config for pleroma-fe is configured in this config or in ``static/config.json``
86 * `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML)
87 * `finmoji_enabled`: Whenether to enable the finmojis in the custom emojis.
88 * `mrf_transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo).
89 * `scope_copy`: Copy the scope (private/unlisted/public) in replies to posts by default.
90 * `subject_line_behavior`: Allows changing the default behaviour of subject lines in replies. Valid values:
91 * "email": Copy and preprend re:, as in email.
92 * "masto": Copy verbatim, as in Mastodon.
93 * "noop": Don't copy the subject.
94 * `always_show_subject_input`: When set to false, auto-hide the subject field when it's empty.
95 * `extended_nickname_format`: Set to `true` to use extended local nicknames format (allows underscores/dashes). This will break federation with
96 older software for theses nicknames.
97 * `max_pinned_statuses`: The maximum number of pinned statuses. `0` will disable the feature.
98 * `autofollowed_nicknames`: Set to nicknames of (local) users that every new user should automatically follow.
99 * `no_attachment_links`: Set to true to disable automatically adding attachment link text to statuses
100
101 ## :logger
102 * `backends`: `:console` is used to send logs to stdout, `{ExSyslogger, :ex_syslogger}` to log to syslog
103 See: [logger’s documentation](https://hexdocs.pm/logger/Logger.html) and [ex_syslogger’s documentation](https://hexdocs.pm/ex_syslogger/)
104
105
106 ## :frontend_configurations
107
108 This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` are configured.
109
110 Frontends can access these settings at `/api/pleroma/frontend_configurations`
111
112 To add your own configuration for PleromaFE, use it like this:
113
114 `config :pleroma, :frontend_configurations, pleroma_fe: %{redirectRootNoLogin: "/main/all", ...}`
115
116 These settings need to be complete, they will override the defaults. See `priv/static/static/config.json` for the available keys.
117
118 ## :fe
119 __THIS IS DEPRECATED__
120
121 If you are using this method, please change it to the `frontend_configurations` method. Please set this option to false in your config like this: `config :pleroma, :fe, false`.
122
123 This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:instance`` is set to false.
124
125 * `theme`: Which theme to use, they are defined in ``styles.json``
126 * `logo`: URL of the logo, defaults to Pleroma’s logo
127 * `logo_mask`: Whenether to mask the logo
128 * `logo_margin`: What margin to use around the logo
129 * `background`: URL of the background, unless viewing a user profile with a background that is set
130 * `redirect_root_no_login`: relative URL which indicates where to redirect when a user isn’t logged in.
131 * `redirect_root_login`: relative URL which indicates where to redirect when a user is logged in.
132 * `show_instance_panel`: Whenether to show the instance’s specific panel.
133 * `scope_options_enabled`: Enable setting an notice visibility and subject/CW when posting
134 * `formatting_options_enabled`: Enable setting a formatting different than plain-text (ie. HTML, Markdown) when posting, relates to ``:instance, allowed_post_formats``
135 * `collapse_message_with_subjects`: When a message has a subject(aka Content Warning), collapse it by default
136 * `hide_post_stats`: Hide notices statistics(repeats, favorites, …)
137 * `hide_user_stats`: Hide profile statistics(posts, posts per day, followers, followings, …)
138
139 ## :mrf_simple
140 * `media_removal`: List of instances to remove medias from
141 * `media_nsfw`: List of instances to put medias as NSFW(sensitive) from
142 * `federated_timeline_removal`: List of instances to remove from Federated (aka The Whole Known Network) Timeline
143 * `reject`: List of instances to reject any activities from
144 * `accept`: List of instances to accept any activities from
145
146 ## :mrf_rejectnonpublic
147 * `allow_followersonly`: whether to allow followers-only posts
148 * `allow_direct`: whether to allow direct messages
149
150 ## :mrf_hellthread
151 * `threshold`: Number of mentioned users after which the message gets discarded as spam
152
153 ## :media_proxy
154 * `enabled`: Enables proxying of remote media to the instance’s proxy
155 * `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.
156 * `proxy_opts`: All options defined in `Pleroma.ReverseProxy` documentation, defaults to `[max_body_length: (25*1_048_576)]`.
157
158 ## :gopher
159 * `enabled`: Enables the gopher interface
160 * `ip`: IP address to bind to
161 * `port`: Port to bind to
162
163 ## :activitypub
164 * ``accept_blocks``: Whether to accept incoming block activities from other instances
165 * ``unfollow_blocked``: Whether blocks result in people getting unfollowed
166 * ``outgoing_blocks``: Whether to federate blocks to other instances
167 * ``deny_follow_blocked``: Whether to disallow following an account that has blocked the user in question
168
169 ## :http_security
170 * ``enabled``: Whether the managed content security policy is enabled
171 * ``sts``: Whether to additionally send a `Strict-Transport-Security` header
172 * ``sts_max_age``: The maximum age for the `Strict-Transport-Security` header if sent
173 * ``ct_max_age``: The maximum age for the `Expect-CT` header if sent
174 * ``referrer_policy``: The referrer policy to use, either `"same-origin"` or `"no-referrer"`.
175
176 ## :mrf_user_allowlist
177
178 The keys in this section are the domain names that the policy should apply to.
179 Each key should be assigned a list of users that should be allowed through by
180 their ActivityPub ID.
181
182 An example:
183
184 ```exs
185 config :pleroma, :mrf_user_allowlist,
186 "example.org": ["https://example.org/users/admin"]
187 ```
188
189 ## :web_push_encryption, :vapid_details
190
191 Web Push Notifications configuration. You can use the mix task `mix web_push.gen.keypair` to generate it.
192
193 * ``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.
194 * ``public_key``: VAPID public key
195 * ``private_key``: VAPID private key
196
197 ## Pleroma.Captcha
198 * `enabled`: Whether the captcha should be shown on registration
199 * `method`: The method/service to use for captcha
200 * `seconds_valid`: The time in seconds for which the captcha is valid
201
202 ### Pleroma.Captcha.Kocaptcha
203 Kocaptcha is a very simple captcha service with a single API endpoint,
204 the source code is here: https://github.com/koto-bank/kocaptcha. The default endpoint
205 `https://captcha.kotobank.ch` is hosted by the developer.
206
207 * `endpoint`: the kocaptcha endpoint to use
208
209 ## :admin_token
210
211 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:
212
213 ```exs
214 config :pleroma, :admin_token, "somerandomtoken"
215 ```
216
217 You can then do
218
219 ```sh
220 curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerandomtoken"
221 ```
222
223 ## Pleroma.Jobs
224
225 A list of job queues and their settings.
226
227 Job queue settings:
228
229 * `max_jobs`: The maximum amount of parallel jobs running at the same time.
230
231 Example:
232
233 ```exs
234 config :pleroma, Pleroma.Jobs,
235 federator_incoming: [max_jobs: 50],
236 federator_outgoing: [max_jobs: 50]
237 ```
238
239 This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the `max_jobs` set to `50`.
240
241
242 ## Pleroma.Web.Federator.RetryQueue
243
244 * `enabled`: If set to `true`, failed federation jobs will be retried
245 * `max_jobs`: The maximum amount of parallel federation jobs running at the same time.
246 * `initial_timeout`: The initial timeout in seconds
247 * `max_retries`: The maximum number of times a federation job is retried
248
249 ## Pleroma.Web.Metadata
250 * `providers`: a list of metadata providers to enable. Providers availible:
251 * Pleroma.Web.Metadata.Providers.OpenGraph
252 * Pleroma.Web.Metadata.Providers.TwitterCard
253 * `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews
254
255 ## :hackney_pools
256
257 Advanced. Tweaks Hackney (http client) connections pools.
258
259 There's three pools used:
260
261 * `:federation` for the federation jobs.
262 You may want this pool max_connections to be at least equal to the number of federator jobs + retry queue jobs.
263 * `:media` for rich media, media proxy
264 * `:upload` for uploaded media (if using a remote uploader and `proxy_remote: true`)
265
266 For each pool, the options are:
267
268 * `max_connections` - how much connections a pool can hold
269 * `timeout` - retention duration for connections
270