2 alias Pleroma.Docs.Generator
7 {Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"},
8 {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}
15 config :pleroma, :config_description, [
20 description: "Upload general settings",
25 description: "Module which will be used for uploads",
27 Generator.uploaders_list()
32 type: {:list, :module},
33 description: "List of filter modules for uploads",
35 Generator.filters_list()
41 description: "If enabled, a name parameter will be added to the url of the upload. For example `https://instance.tld/media/imagehash.png?name=realname.png`",
50 description: "Base url for the uploads, needed if you use CDN",
52 "https://cdn-host.com"
58 description: "If enabled, requests to media stored using a remote uploader will be proxied instead of being redirected.",
67 description: "Proxy options, see `Pleroma.ReverseProxy` documentation"
73 key: Pleroma.Uploaders.Local,
75 description: "Local uploader-related settings",
80 description: "Path where user uploads will be saved",
89 key: Pleroma.Uploaders.S3,
91 description: "S3 uploader-related settings",
96 description: "S3 bucket",
102 key: :bucket_namespace,
104 description: "S3 bucket namespace",
105 suggestions: ["pleroma"]
108 key: :public_endpoint,
110 description: "S3 endpoint",
111 suggestions: ["https://s3.amazonaws.com"]
114 key: :truncated_namespace,
117 "If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or \"\" etc." <>
118 " For example, when using CDN to S3 virtual host format, set \"\". At this time, write CNAME to CDN in public_endpoint.",
125 key: Pleroma.Upload.Filter.Mogrify,
127 description: "Uploads mogrify filter settings",
131 type: [:string, {:list, :string}, {:list, :tuple}],
132 description: "List of actions for the mogrify command",
135 ["strip", "auto-orient"],
137 ["strip", "auto-orient", {"implode", "1"}]
144 key: Pleroma.Upload.Filter.AnonymizeFilename,
146 description: "Filter replaces the filename of the upload",
152 "Text to replace filenames in links. If no setting, {random}.extension will be used. You can get the original" <>
153 " filename extension by using {extension}, for example custom-file-name.{extension}",
155 "custom-file-name.{extension}",
163 key: Pleroma.Emails.Mailer,
165 description: "Mailer-related settings",
171 "One of the mail adapters listed in [Swoosh readme](https://github.com/swoosh/swoosh#adapters)," <>
172 " or Swoosh.Adapters.Local for in-memory mailbox",
174 Swoosh.Adapters.SMTP,
175 Swoosh.Adapters.Sendgrid,
176 Swoosh.Adapters.Sendmail,
177 Swoosh.Adapters.Mandrill,
178 Swoosh.Adapters.Mailgun,
179 Swoosh.Adapters.Mailjet,
180 Swoosh.Adapters.Postmark,
181 Swoosh.Adapters.SparkPost,
182 Swoosh.Adapters.AmazonSES,
184 Swoosh.Adapters.SocketLabs,
185 Swoosh.Adapters.Gmail
191 description: "Allow/disallow send emails",
198 group: {:subgroup, Swoosh.Adapters.SMTP},
201 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
202 suggestions: ["smtp.gmail.com"]
205 group: {:subgroup, Swoosh.Adapters.SMTP},
208 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
209 suggestions: ["pleroma"]
212 group: {:subgroup, Swoosh.Adapters.SMTP},
215 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
216 suggestions: ["password"]
219 group: {:subgroup, Swoosh.Adapters.SMTP},
222 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
223 suggestions: [true, false]
226 group: {:subgroup, Swoosh.Adapters.SMTP},
229 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
230 suggestions: [:always, :never, :if_available]
233 group: {:subgroup, Swoosh.Adapters.SMTP},
236 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
237 suggestions: [:always, :never, :if_available]
240 group: {:subgroup, Swoosh.Adapters.SMTP},
243 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
247 group: {:subgroup, Swoosh.Adapters.SMTP},
250 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
254 group: {:subgroup, Swoosh.Adapters.SMTP},
257 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
258 suggestions: [true, false]
261 group: {:subgroup, Swoosh.Adapters.Sendgrid},
264 description: "`Swoosh.Adapters.Sendgrid` adapter specific setting",
265 suggestions: ["my-api-key"]
268 group: {:subgroup, Swoosh.Adapters.Sendmail},
271 description: "`Swoosh.Adapters.Sendmail` adapter specific setting",
272 suggestions: ["/usr/bin/sendmail"]
275 group: {:subgroup, Swoosh.Adapters.Sendmail},
278 description: "`Swoosh.Adapters.Sendmail` adapter specific setting",
279 suggestions: ["-N delay,failure,success"]
282 group: {:subgroup, Swoosh.Adapters.Sendmail},
285 description: "`Swoosh.Adapters.Sendmail` adapter specific setting",
286 suggestions: [true, false]
289 group: {:subgroup, Swoosh.Adapters.Mandrill},
292 description: "`Swoosh.Adapters.Mandrill` adapter specific setting",
293 suggestions: ["my-api-key"]
296 group: {:subgroup, Swoosh.Adapters.Mailgun},
299 description: "`Swoosh.Adapters.Mailgun` adapter specific setting",
300 suggestions: ["my-api-key"]
303 group: {:subgroup, Swoosh.Adapters.Mailgun},
306 description: "`Swoosh.Adapters.Mailgun` adapter specific setting",
307 suggestions: ["pleroma.com"]
310 group: {:subgroup, Swoosh.Adapters.Mailjet},
313 description: "`Swoosh.Adapters.Mailjet` adapter specific setting",
314 suggestions: ["my-api-key"]
317 group: {:subgroup, Swoosh.Adapters.Mailjet},
320 description: "`Swoosh.Adapters.Mailjet` adapter specific setting",
321 suggestions: ["my-secret-key"]
324 group: {:subgroup, Swoosh.Adapters.Postmark},
327 description: "`Swoosh.Adapters.Postmark` adapter specific setting",
328 suggestions: ["my-api-key"]
331 group: {:subgroup, Swoosh.Adapters.SparkPost},
334 description: "`Swoosh.Adapters.SparkPost` adapter specific setting",
335 suggestions: ["my-api-key"]
338 group: {:subgroup, Swoosh.Adapters.SparkPost},
341 description: "`Swoosh.Adapters.SparkPost` adapter specific setting",
342 suggestions: ["https://api.sparkpost.com/api/v1"]
345 group: {:subgroup, Swoosh.Adapters.AmazonSES},
348 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
349 suggestions: ["us-east-1", "us-east-2"]
352 group: {:subgroup, Swoosh.Adapters.AmazonSES},
355 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
356 suggestions: ["aws-access-key"]
359 group: {:subgroup, Swoosh.Adapters.AmazonSES},
362 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
363 suggestions: ["aws-secret-key"]
366 group: {:subgroup, Swoosh.Adapters.Dyn},
369 description: "`Swoosh.Adapters.Dyn` adapter specific setting",
370 suggestions: ["my-api-key"]
373 group: {:subgroup, Swoosh.Adapters.SocketLabs},
376 description: "`Swoosh.Adapters.SocketLabs` adapter specific setting",
380 group: {:subgroup, Swoosh.Adapters.SocketLabs},
383 description: "`Swoosh.Adapters.SocketLabs` adapter specific setting",
387 group: {:subgroup, Swoosh.Adapters.Gmail},
390 description: "`Swoosh.Adapters.Gmail` adapter specific setting",
399 description: "URI schemes related settings",
403 type: {:list, :string},
404 description: "List of the scheme part that is considered valid to be an URL",
430 description: "Instance-related settings",
435 description: "Name of the instance",
443 description: "Email used to reach an Administrator/Moderator of the instance",
451 description: "Email used for notifications",
459 description: "The instance's description, can be seen in nodeinfo and /api/v1/instance",
467 description: "Posts character limit (CW/Subject included in the counter)",
475 description: "Hard character limit beyond which remote posts will be dropped",
483 description: "File size limit of uploads (except for avatar, background, banner)",
489 key: :avatar_upload_limit,
491 description: "File size limit of user's profile avatars",
497 key: :background_upload_limit,
499 description: "File size limit of user's profile backgrounds",
505 key: :banner_upload_limit,
507 description: "File size limit of user's profile banners",
515 description: "A map with poll limits for local polls",
519 max_option_chars: 200,
521 max_expiration: 31_536_000
528 description: "Maximum number of options",
532 key: :max_option_chars,
534 description: "Maximum number of characters per option",
538 key: :min_expiration,
540 description: "Minimum expiration time (in seconds)",
544 key: :max_expiration,
546 description: "Maximum expiration time (in seconds)",
552 key: :registrations_open,
554 description: "Enable registrations for anyone, invitations can be enabled when false",
561 key: :invites_enabled,
563 description: "Enable user invitations for admins (depends on registrations_open: false)",
570 key: :account_activation_required,
572 description: "Require users to confirm their emails before signing in",
581 description: "Enable federation with other instances",
588 key: :federation_incoming_replies_max_depth,
591 "Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while" <>
592 " fetching very long threads. If set to nil, threads of any depth will be fetched. Lower this value if you experience out-of-memory crashes",
598 key: :federation_reachability_timeout_days,
601 "Timeout (in days) of each external federation target being unreachable prior to pausing federating to it",
607 key: :federation_publisher_modules,
608 type: [:list, :module],
609 description: "List of modules for federation publishing",
611 Pleroma.Web.ActivityPub.Publisher,
619 description: "Enable Pleroma's Relay, which makes it possible to follow a whole instance",
626 key: :rewrite_policy,
627 type: {:list, :module},
628 description: "A list of MRF policies enabled",
630 Pleroma.Web.ActivityPub.MRF.NoOpPolicy,
638 "Makes the client API in authentificated mode-only except for user-profiles." <>
639 " Useful for disabling the Local Timeline and The Whole Known Network",
646 key: :quarantined_instances,
647 type: {:list, :string},
649 "List of ActivityPub instances where private(DMs, followers-only) activities will not be send",
656 key: :managed_config,
659 "Whenether the config for pleroma-fe is configured in this config or in static/config.json",
668 description: "Instance static directory",
674 key: :allowed_post_formats,
675 type: {:list, :string},
676 description: "MIME-type list of formats allowed to be posted (transformed into HTML)",
687 key: :mrf_transparency,
690 "Make the content of your Message Rewrite Facility settings public (via nodeinfo)",
697 key: :mrf_transparency_exclusions,
698 type: {:list, :string},
700 "Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value",
706 key: :extended_nickname_format,
709 "Set to true to use extended local nicknames format (allows underscores/dashes)." <>
710 " This will break federation with older software for theses nicknames",
717 key: :max_pinned_statuses,
719 description: "The maximum number of pinned statuses. 0 will disable the feature",
727 key: :autofollowed_nicknames,
728 type: {:list, :string},
730 "Set to nicknames of (local) users that every new user should automatically follow",
739 key: :no_attachment_links,
742 "Set to true to disable automatically adding attachment link text to statuses",
749 key: :welcome_message,
752 "A message that will be send to a newly registered users as a direct message",
754 "Hi, @username! Welcome to the board!",
759 key: :welcome_user_nickname,
761 description: "The nickname of the local user that sends the welcome message",
768 key: :max_report_comment_size,
770 description: "The maximum size of the report comment (Default: 1000)",
776 key: :safe_dm_mentions,
779 "If set to true, only mentions at the beginning of a post will be used to address people in direct messages." <>
780 " This is to prevent accidental mentioning of people when talking about them (e.g. \"@friend hey i really don't like @enemy\")." <>
790 description: "If set to true, system data will be shown on /api/pleroma/healthcheck",
797 key: :remote_post_retention_days,
800 "The default amount of days to retain remote posts when pruning the database",
806 key: :user_bio_length,
808 description: "A user bio maximum length (default: 5000)",
814 key: :user_name_length,
816 description: "A user name maximum length (default: 100)",
822 key: :skip_thread_containment,
824 description: "Skip filter out broken threads. The default is true",
831 key: :limit_to_local_content,
832 type: [:atom, false],
834 "Limit unauthenticated users to search for local statutes and users only. The default is :unauthenticated ",
842 key: :dynamic_configuration,
845 "Allow transferring configuration to DB with the subsequent customization from Admin api. Defaults to `false`",
852 key: :max_account_fields,
854 description: "The maximum number of custom fields in the user profile (default: 10)",
860 key: :max_remote_account_fields,
863 "The maximum number of custom fields in the remote user profile (default: 20)",
869 key: :account_field_name_length,
871 description: "An account field name maximum length (default: 512)",
877 key: :account_field_value_length,
879 description: "An account field value maximum length (default: 512)",
885 key: :external_user_synchronization,
887 description: "Enabling following/followers counters synchronization for external users",
898 description: "Logger-related settings",
902 type: [:atom, :tuple, :module],
904 "Where logs will be send, :console - send logs to stdout, {ExSyslogger, :ex_syslogger} - to syslog, Quack.Logger - to Slack.",
905 suggestions: [[:console, {ExSyslogger, :ex_syslogger}, Quack.Logger]]
913 description: "ExSyslogger-related settings",
918 description: "Log level",
919 suggestions: [:debug, :info, :warn, :error]
925 "A string that's prepended to every message, and is typically set to the app name",
926 suggestions: ["pleroma"]
931 description: "It defaults to \"$date $time [$level] $levelpad$node $metadata $message\"",
932 suggestions: ["$metadata[$level] $message"]
936 type: {:list, :atom},
938 suggestions: [[:request_id]]
946 description: "Console logger settings",
951 description: "Log level",
952 suggestions: [:debug, :info, :warn, :error]
957 description: "It defaults to \"$date $time [$level] $levelpad$node $metadata $message\"",
958 suggestions: ["$metadata[$level] $message"]
962 type: {:list, :atom},
964 suggestions: [[:request_id]]
971 description: "Quack-related settings",
976 description: "Log level",
977 suggestions: [:debug, :info, :warn, :error]
981 type: {:list, :atom},
982 description: "Configure which metadata you want to report on",
1000 description: "Configure the Slack incoming webhook",
1001 suggestions: ["https://hooks.slack.com/services/YOUR-KEY-HERE"]
1007 key: :frontend_configurations,
1009 description: "A keyword list that keeps the configuration data for any kind of frontend",
1014 description: "Settings for Pleroma FE",
1017 theme: "pleroma-dark",
1018 logo: "/static/logo.png",
1019 background: "/images/city.jpg",
1020 redirectRootNoLogin: "/main/all",
1021 redirectRootLogin: "/main/friends",
1022 showInstanceSpecificPanel: true,
1023 scopeOptionsEnabled: false,
1024 formattingOptionsEnabled: false,
1025 collapseMessageWithSubject: false,
1026 hidePostStats: false,
1027 hideUserStats: false,
1029 subjectLineBehavior: "email",
1030 alwaysShowSubjectInput: true
1037 description: "Which theme to use, they are defined in styles.json",
1038 suggestions: ["pleroma-dark"]
1043 description: "URL of the logo, defaults to Pleroma's logo",
1044 suggestions: ["/static/logo.png"]
1050 "URL of the background, unless viewing a user profile with a background that is set",
1051 suggestions: ["/images/city.jpg"]
1054 key: :redirectRootNoLogin,
1057 "relative URL which indicates where to redirect when a user isn't logged in",
1058 suggestions: ["/main/all"]
1061 key: :redirectRootLogin,
1064 "relative URL which indicates where to redirect when a user is logged in",
1065 suggestions: ["/main/friends"]
1068 key: :showInstanceSpecificPanel,
1070 description: "Whenether to show the instance's specific panel",
1071 suggestions: [true, false]
1074 key: :scopeOptionsEnabled,
1076 description: "Enable setting an notice visibility and subject/CW when posting",
1077 suggestions: [true, false]
1080 key: :formattingOptionsEnabled,
1083 "Enable setting a formatting different than plain-text (ie. HTML, Markdown) when posting, relates to :instance, allowed_post_formats",
1084 suggestions: [true, false]
1087 key: :collapseMessageWithSubject,
1090 "When a message has a subject(aka Content Warning), collapse it by default",
1091 suggestions: [true, false]
1094 key: :hidePostStats,
1096 description: "Hide notices statistics(repeats, favorites, ...)",
1097 suggestions: [true, false]
1100 key: :hideUserStats,
1103 "Hide profile statistics(posts, posts per day, followers, followings, ...)",
1104 suggestions: [true, false]
1110 "Copy the scope (private/unlisted/public) in replies to posts by default",
1111 suggestions: [true, false]
1114 key: :subjectLineBehavior,
1116 description: "Allows changing the default behaviour of subject lines in replies.
1117 `email`: Copy and preprend re:, as in email,
1118 `masto`: Copy verbatim, as in Mastodon,
1119 `noop`: Don't copy the subjec",
1120 suggestions: ["email", "masto", "noop"]
1123 key: :alwaysShowSubjectInput,
1125 description: "When set to false, auto-hide the subject field when it's empty",
1126 suggestions: [true, false]
1133 description: "Settings for Masto FE",
1136 showInstanceSpecificPanel: true
1141 key: :showInstanceSpecificPanel,
1143 description: "Whenether to show the instance's specific panel",
1144 suggestions: [true, false]
1155 "This section configures assets to be used with various frontends. Currently the only option relates to mascots on the mastodon frontend",
1161 "Keyword of mascots, each element MUST contain both a url and a mime_type key",
1165 url: "/images/pleroma-fox-tan-smol.png",
1166 mime_type: "image/png"
1168 pleroma_fox_tan_shy: %{
1169 url: "/images/pleroma-fox-tan-shy.png",
1170 mime_type: "image/png"
1176 key: :default_mascot,
1179 "This will be used as the default mascot on MastoFE (default: :pleroma_fox_tan)",
1190 description: "Message Rewrite Facility",
1193 key: :media_removal,
1194 type: {:list, :string},
1195 description: "List of instances to remove medias from",
1196 suggestions: ["example.com", "*.example.com"]
1200 type: {:list, :string},
1201 description: "List of instances to put medias as NSFW(sensitive) from",
1202 suggestions: ["example.com", "*.example.com"]
1205 key: :federated_timeline_removal,
1206 type: {:list, :string},
1208 "List of instances to remove from Federated (aka The Whole Known Network) Timeline",
1209 suggestions: ["example.com", "*.example.com"]
1213 type: {:list, :string},
1214 description: "List of instances to reject any activities from",
1215 suggestions: ["example.com", "*.example.com"]
1219 type: {:list, :string},
1220 description: "List of instances to accept any activities from",
1221 suggestions: ["example.com", "*.example.com"]
1224 key: :report_removal,
1225 type: {:list, :string},
1226 description: "List of instances to reject reports from",
1227 suggestions: ["example.com", "*.example.com"]
1230 key: :avatar_removal,
1231 type: {:list, :string},
1232 description: "List of instances to strip avatars from",
1233 suggestions: ["example.com", "*.example.com"]
1236 key: :banner_removal,
1237 type: {:list, :string},
1238 description: "List of instances to strip banners from",
1239 suggestions: ["example.com", "*.example.com"]
1248 "This policy processes messages through an alternate pipeline when a given message matches certain criteria." <>
1249 " All criteria are configured as a map of regular expressions to lists of policy modules.",
1254 description: "Matches a series of regular expressions against the actor field",
1257 ~r/https:\/\/example.com/s => [Pleroma.Web.ActivityPub.MRF.DropPolicy]
1265 key: :mrf_rejectnonpublic,
1270 key: :allow_followersonly,
1272 description: "whether to allow followers-only posts",
1273 suggestions: [true, false]
1278 description: "whether to allow direct messages",
1279 suggestions: [true, false]
1285 key: :mrf_hellthread,
1287 description: "Block messages with too much mentions",
1290 key: :delist_threshold,
1293 "Number of mentioned users after which the message gets delisted (the message can still be seen, " <>
1294 " but it will not show up in public timelines and mentioned users won't get notifications about it). Set to 0 to disable",
1298 key: :reject_threshold,
1301 "Number of mentioned users after which the messaged gets rejected. Set to 0 to disable",
1310 description: "Reject or Word-Replace messages with a keyword or regex",
1314 type: [:string, :regex],
1316 "A list of patterns which result in message being rejected, each pattern can be a string or a regular expression",
1317 suggestions: ["foo", ~r/foo/iu]
1320 key: :federated_timeline_removal,
1321 type: [:string, :regex],
1323 "A list of patterns which result in message being removed from federated timelines (a.k.a unlisted), each pattern can be a string or a regular expression",
1324 suggestions: ["foo", ~r/foo/iu]
1328 type: [{:string, :string}, {:regex, :string}],
1330 "A list of patterns which result in message being removed from federated timelines (a.k.a unlisted), each pattern can be a string or a regular expression",
1331 suggestions: [{"foo", "bar"}, {~r/foo/iu, "bar"}]
1339 description: "Block messages which mention a user",
1343 type: {:list, :string},
1344 description: "A list of actors, for which to drop any posts mentioning",
1345 suggestions: [["actor1", "actor2"]]
1351 key: :mrf_vocabulary,
1353 description: "Filter messages which belong to certain activity vocabularies",
1357 type: {:list, :string},
1359 "A list of ActivityStreams terms to accept. If empty, all supported messages are accepted",
1360 suggestions: [["Create", "Follow", "Mention", "Announce", "Like"]]
1364 type: {:list, :string},
1366 "A list of ActivityStreams terms to reject. If empty, no messages are rejected",
1367 suggestions: [["Create", "Follow", "Mention", "Announce", "Like"]]
1373 # key: :mrf_user_allowlist,
1376 # "The keys in this section are the domain names that the policy should apply to." <>
1377 # " Each key should be assigned a list of users that should be allowed through by their ActivityPub ID",
1379 # ["example.org": ["https://example.org/users/admin"]],
1381 # ["example.org": ["https://example.org/users/admin"]]
1389 description: "Media proxy",
1394 description: "Enables proxying of remote media to the instance's proxy",
1395 suggestions: [true, false]
1401 "The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts",
1402 suggestions: ["https://example.com"]
1407 description: "Options for Pleroma.ReverseProxy",
1408 suggestions: [[max_body_length: 25 * 1_048_576, redirect_on_failure: false]]
1412 type: {:list, :string},
1413 description: "List of domains to bypass the mediaproxy",
1414 suggestions: ["example.com"]
1422 description: "Gopher settings",
1427 description: "Enables the gopher interface",
1428 suggestions: [true, false]
1433 description: "IP address to bind to",
1434 suggestions: [{0, 0, 0, 0}]
1439 description: "Port to bind to",
1445 description: "Port advertised in urls (optional, defaults to port)",
1452 key: Pleroma.Web.Endpoint,
1454 description: "Phoenix endpoint configuration",
1459 description: "http protocol configuration",
1461 [port: 8080, ip: {127, 0, 0, 1}]
1466 type: {:list, :tuple},
1467 description: "dispatch settings",
1472 {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []},
1473 {"/websocket", Phoenix.Endpoint.CowboyWebSocket,
1474 {Phoenix.Transports.WebSocket,
1475 {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}},
1476 {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}}
1478 # end copied from config.exs
1493 description: "port",
1503 description: "configuration for generating urls",
1505 [host: "example.com", port: 2020, scheme: "https"]
1511 description: "Host",
1519 description: "port",
1527 description: "Scheme",
1536 key: :instrumenters,
1537 type: {:list, :module},
1539 suggestions: [Pleroma.Web.Endpoint.Instrumenter]
1545 suggestions: ["https"]
1548 key: :secret_key_base,
1551 suggestions: ["aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl"]
1557 suggestions: ["CqaoopA2"]
1560 key: :render_errors,
1563 suggestions: [[view: Pleroma.Web.ErrorView, accepts: ~w(json)]],
1569 suggestions: [Pleroma.Web.ErrorView]
1573 type: {:list, :string},
1575 suggestions: ["json"]
1583 suggestions: [[name: Pleroma.PubSub, adapter: Phoenix.PubSub.PG2]],
1589 suggestions: [Pleroma.PubSub]
1595 suggestions: [Phoenix.PubSub.PG2]
1600 key: :secure_cookie_flag,
1603 suggestions: [true, false]
1606 key: :extra_cookie_attrs,
1607 type: {:list, :string},
1609 suggestions: ["SameSite=Lax"]
1617 description: "ActivityPub-related settings",
1620 key: :unfollow_blocked,
1622 description: "Whether blocks result in people getting unfollowed",
1623 suggestions: [true, false]
1626 key: :outgoing_blocks,
1628 description: "Whether to federate blocks to other instances",
1629 suggestions: [true, false]
1632 key: :sign_object_fetches,
1634 description: "Sign object fetches with HTTP signatures",
1635 suggestions: [true, false]
1638 key: :follow_handshake_timeout,
1640 description: "Following handshake timeout",
1647 key: :http_security,
1649 description: "HTTP security settings",
1654 description: "Whether the managed content security policy is enabled",
1655 suggestions: [true, false]
1660 description: "Whether to additionally send a Strict-Transport-Security header",
1661 suggestions: [true, false]
1666 description: "The maximum age for the Strict-Transport-Security header if sent",
1667 suggestions: [31_536_000]
1672 description: "The maximum age for the Expect-CT header if sent",
1673 suggestions: [2_592_000]
1676 key: :referrer_policy,
1678 description: "The referrer policy to use, either \"same-origin\" or \"no-referrer\"",
1679 suggestions: ["same-origin", "no-referrer"]
1684 description: "Adds the specified url to report-uri and report-to group in CSP header",
1685 suggestions: ["https://example.com/report-uri"]
1690 group: :web_push_encryption,
1691 key: :vapid_details,
1694 "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it",
1700 "a mailto link for the administrative contact." <>
1701 " 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," <>
1702 " is unavailable for an extended period, or otherwise can't respond, someone else on the list can",
1703 suggestions: ["Subject"]
1708 description: "VAPID public key",
1709 suggestions: ["Public key"]
1714 description: "VAPID private keyn",
1715 suggestions: ["Private key"]
1721 key: Pleroma.Captcha,
1723 description: "Captcha-related settings",
1728 description: "Whether the captcha should be shown on registration",
1729 suggestions: [true, false]
1734 description: "The method/service to use for captcha",
1735 suggestions: [Pleroma.Captcha.Kocaptcha]
1738 key: :seconds_valid,
1740 description: "The time in seconds for which the captcha is valid",
1747 key: Pleroma.Captcha.Kocaptcha,
1750 "Kocaptcha is a very simple captcha service with a single API endpoint, the source code is" <>
1751 " here: https://github.com/koto-bank/kocaptcha. The default endpoint https://captcha.kotobank.ch is hosted by the developer",
1756 description: "the kocaptcha endpoint to use",
1757 suggestions: ["https://captcha.kotobank.ch"]
1765 "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",
1770 description: "Token",
1771 suggestions: ["some_random_token"]
1776 group: :pleroma_job_queue,
1779 description: "Pleroma Job Queue configuration: a list of queues with maximum concurrent jobs",
1782 key: :federator_outgoing,
1784 description: "Outgoing federation queue",
1788 key: :federator_incoming,
1790 description: "Incoming federation queue",
1796 description: "Email sender queue, see Pleroma.Emails.Mailer",
1802 description: "Web push notifications queue",
1806 key: :transmogrifier,
1808 description: "Transmogrifier queue",
1812 key: :scheduled_activities,
1814 description: "Scheduled activities queue, see Pleroma.ScheduledActivities",
1818 key: :activity_expiration,
1820 description: "Activity expiration queue",
1826 description: "Background queue",
1833 key: Pleroma.Web.Federator.RetryQueue,
1840 description: "If set to true, failed federation jobs will be retried",
1841 suggestions: [true, false]
1846 description: "The maximum amount of parallel federation jobs running at the same time",
1850 key: :initial_timeout,
1852 description: "The initial timeout in seconds",
1858 description: "The maximum number of times a federation job is retried",
1865 key: Pleroma.Web.Metadata,
1867 decsription: "Metadata-related settings",
1871 type: {:list, :module},
1872 description: "List of metadata providers to enable",
1875 Pleroma.Web.Metadata.Providers.OpenGraph,
1876 Pleroma.Web.Metadata.Providers.TwitterCard,
1877 Pleroma.Web.Metadata.Providers.RelMe
1884 description: "If set to true nsfw attachments will be shown in previews",
1902 "if enabled the instance will parse metadata from attached links to generate link previews",
1903 suggestions: [true, false]
1907 type: {:list, :string},
1908 description: "list of hosts which will be ignored by the metadata parser",
1909 suggestions: [["accounts.google.com", "xss.website"]]
1913 type: {:list, :string},
1914 description: "list TLDs (top-level domains) which will ignore for parse metadata",
1915 suggestions: [["local", "localdomain", "lan"]]
1919 type: {:list, :module},
1920 description: "list of Rich Media parsers",
1922 Generator.richmedia_parsers()
1927 type: {:list, :module},
1928 description: "list of rich media ttl setters",
1930 [Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl]
1937 key: :fetch_initial_posts,
1939 description: "Fetching initial posts settings",
1945 "if enabled, when a new user is federated with, fetch some of their latest posts",
1946 suggestions: [true, false]
1951 description: "the amount of pages to fetch",
1957 group: :auto_linker,
1960 description: "Configuration for the auto_linker library",
1964 type: [:string, false],
1965 description: "specify the class to be added to the generated link. false to clear",
1966 suggestions: ["auto-linker", false]
1970 type: [:string, false],
1971 description: "override the rel attribute. false to clear",
1972 suggestions: ["noopener noreferrer", false]
1977 description: "set to false to remove target='_blank' attribute",
1978 suggestions: [true, false]
1983 description: "Set to true to link urls with schema http://google.com",
1984 suggestions: [true, false]
1988 type: [:integer, false],
1990 "Set to a number to truncate urls longer then the number. Truncated urls will end in `..`",
1991 suggestions: [15, false]
1996 description: "Strip the scheme prefix",
1997 suggestions: [true, false]
2002 description: "link urls with rarely used schemes (magnet, ipfs, irc, etc.)",
2003 suggestions: [true, false]
2009 key: Pleroma.ScheduledActivity,
2011 description: "Scheduled activities settings",
2014 key: :daily_user_limit,
2017 "the number of scheduled activities a user is allowed to create in a single day (Default: 25)",
2021 key: :total_user_limit,
2024 "the number of scheduled activities a user is allowed to create in total (Default: 300)",
2030 description: "whether scheduled activities are sent to the job queue to be executed",
2031 suggestions: [true, false]
2037 key: Pleroma.ActivityExpiration,
2039 description: "Expired activity settings",
2044 description: "whether expired activities will be sent to the job queue to be deleted",
2045 suggestions: [true, false]
2052 description: "Authenticator",
2055 key: Pleroma.Web.Auth.Authenticator,
2058 suggestions: [Pleroma.Web.Auth.PleromaAuthenticator, Pleroma.Web.Auth.LDAPAuthenticator]
2067 "Use LDAP for user authentication. When a user logs in to the Pleroma instance, the name and password" <>
2068 " will be verified by trying to authenticate (bind) to an LDAP server." <>
2069 " If a user exists in the LDAP directory but there is no account with the same name yet on the" <>
2070 " Pleroma instance then a new Pleroma account will be created with the same name as the LDAP user name.",
2075 description: "enables LDAP authentication",
2076 suggestions: [true, false]
2081 description: "LDAP server hostname",
2082 suggestions: ["localhosts"]
2087 description: "LDAP port, e.g. 389 or 636",
2088 suggestions: [389, 636]
2093 description: "true to use SSL, usually implies the port 636",
2094 suggestions: [true, false]
2099 description: "additional SSL options",
2105 description: "true to start TLS, usually implies the port 389",
2106 suggestions: [true, false]
2111 description: "additional TLS options",
2117 description: "LDAP base, e.g. \"dc=example,dc=com\"",
2118 suggestions: ["dc=example,dc=com"]
2124 "LDAP attribute name to authenticate the user, e.g. when \"cn\", the filter will be \"cn=username,base\"",
2133 description: "Authentication / authorization settings",
2136 key: :auth_template,
2139 "authentication form template. By default it's show.html which corresponds to lib/pleroma/web/templates/o_auth/o_auth/show.html.ee",
2140 suggestions: ["show.html"]
2143 key: :oauth_consumer_template,
2146 "OAuth consumer mode authentication form template. By default it's consumer.html which corresponds to" <>
2147 " lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex",
2148 suggestions: ["consumer.html"]
2151 key: :oauth_consumer_strategies,
2154 "the list of enabled OAuth consumer strategies; by default it's set by OAUTH_CONSUMER_STRATEGIES environment variable." <>
2155 " Each entry in this space-delimited string should be of format <strategy> or <strategy>:<dependency>" <>
2156 " (e.g. twitter or keycloak:ueberauth_keycloak_strategy in case dependency is named differently than ueberauth_<strategy>).",
2157 suggestions: ["twitter", "keycloak:ueberauth_keycloak_strategy"]
2163 key: :email_notifications,
2165 description: "Email notifications settings",
2171 "emails of \"what you've missed\" for users who have been inactive for a while",
2175 schedule: "0 0 * * 0",
2177 inactivity_threshold: 7
2184 description: "globally enable or disable digest emails",
2185 suggestions: [true, false]
2191 "When to send digest email, in crontab format. \"0 0 0\" is the default, meaning \"once a week at midnight on Sunday morning\"",
2192 suggestions: ["0 0 * * 0"]
2197 description: "Minimum interval between digest emails to one user",
2201 key: :inactivity_threshold,
2203 description: "Minimum user inactivity threshold",
2212 key: Pleroma.Emails.UserEmail,
2214 description: "Email template settings",
2218 # type: [:string, nil],
2219 description: "a path to a custom logo. Set it to nil to use the default Pleroma logo",
2220 suggestions: ["some/path/logo.png", nil]
2225 description: "a map with color settings for email templates.",
2228 link_color: "#d8a070",
2229 background_color: "#2C3645",
2230 content_background_color: "#1B2635",
2231 header_color: "#d8a070",
2232 text_color: "#b9b9ba",
2233 text_muted_color: "#b9b9ba"
2241 suggestions: ["#d8a070"]
2244 key: :background_color,
2247 suggestions: ["#2C3645"]
2250 key: :content_background_color,
2253 suggestions: ["#1B2635"]
2259 suggestions: ["#d8a070"]
2265 suggestions: ["#b9b9ba"]
2268 key: :text_muted_color,
2271 suggestions: ["#b9b9ba"]
2281 description: "Configure OAuth 2 provider capabilities",
2284 key: :token_expires_in,
2286 description: "The lifetime in seconds of the access token",
2290 key: :issue_new_refresh_token,
2293 "Keeps old refresh token or generate new refresh token when to obtain an access token",
2294 suggestions: [true, false]
2297 key: :clean_expired_tokens,
2299 description: "Enable a background job to clean expired oauth tokens. Defaults to false",
2300 suggestions: [true, false]
2303 key: :clean_expired_tokens_interval,
2306 "Interval to run the job to clean expired tokens. Defaults to 86_400_000 (24 hours).",
2307 suggestions: [86_400_000]
2318 key: :shortcode_globs,
2319 type: {:list, :string},
2320 description: "Location of custom emoji files. * can be used as a wildcard",
2321 suggestions: [["/emoji/custom/**/*.png"]]
2324 key: :pack_extensions,
2325 type: {:list, :string},
2327 "A list of file extensions for emojis, when no emoji.txt for a pack is present",
2328 suggestions: [[".png", ".gif"]]
2334 "Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the groupname" <>
2335 " and the value the location or array of locations. * can be used as a wildcard",
2338 # Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md`
2339 Custom: ["/emoji/*.png", "/emoji/**/*.png"]
2344 key: :default_manifest,
2347 "Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download." <>
2348 " Currently only one manifest can be added (no arrays)",
2349 suggestions: ["https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json"]
2357 description: "Database related settings",
2362 description: "If RUM indexes should be used. Defaults to false",
2363 suggestions: [true, false]
2371 description: "Rate limit settings. This is an advanced feature and disabled by default.",
2375 type: [:tuple, {:list, :tuple}],
2376 description: "for the search requests (account & status search etc.)",
2377 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2380 key: :app_account_creation,
2381 type: [:tuple, {:list, :tuple}],
2382 description: "for registering user accounts from the same IP address",
2383 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2386 key: :relations_actions,
2387 type: [:tuple, {:list, :tuple}],
2388 description: "for actions on relations with all users (follow, unfollow)",
2389 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2392 key: :relation_id_action,
2393 type: [:tuple, {:list, :tuple}],
2394 description: "for actions on relation with a specific user (follow, unfollow)",
2395 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2398 key: :statuses_actions,
2399 type: [:tuple, {:list, :tuple}],
2401 "for create / delete / fav / unfav / reblog / unreblog actions on any statuses",
2402 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2405 key: :status_id_action,
2406 type: [:tuple, {:list, :tuple}],
2408 "for fav / unfav or reblog / unreblog actions on the same status by the same user",
2409 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2417 "To enable simple command line interface accessible over ssh, add a setting like this to your configuration file",
2422 description: "Enables ssh",
2423 suggestions: [true, false]
2428 description: "Dir with ssh keys",
2429 suggestions: ["/some/path/ssh_keys"]
2434 description: "Handler module",
2435 suggestions: ["Pleroma.BBS.Handler"]
2440 description: "Port to connect",
2441 suggestions: [10_022]
2444 key: :password_authenticator,
2446 description: "Authenticator module",
2447 suggestions: ["Pleroma.BBS.Authenticator"]
2454 description: "Mime types",
2462 "application/xml" => ["xml"],
2463 "application/xrd+xml" => ["xrd+xml"],
2464 "application/jrd+json" => ["jrd+json"],
2465 "application/activity+json" => ["activity+json"],
2466 "application/ld+json" => ["activity+json"]
2471 key: "application/xml",
2472 type: {:list, :string},
2474 suggestions: [["xml"]]
2477 key: "application/xrd+xml",
2478 type: {:list, :string},
2480 suggestions: [["xrd+xml"]]
2483 key: "application/jrd+json",
2484 type: {:list, :string},
2486 suggestions: [["jrd+json"]]
2489 key: "application/activity+json",
2490 type: {:list, :string},
2492 suggestions: [["activity+json"]]
2495 key: "application/ld+json",
2496 type: {:list, :string},
2498 suggestions: [["activity+json"]]
2507 description: "Tesla settings",
2512 description: "Tesla adapter",
2513 suggestions: [Tesla.Adapter.Hackney]
2521 description: "Pleroma chat settings",
2527 suggestions: [true, false]
2540 description: "Enables suggestions",
2544 key: :third_party_engine,
2546 description: "URL for third party engine",
2548 "http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-suggestions-api.cgi?{{host}}+{{user}}"
2554 description: "Request timeout to third party engine",
2555 suggestions: [300_000]
2560 description: "Limit for suggestions",
2567 suggestions: ["https://vinayaka.distsn.org"]
2573 key: Pleroma.Web.Endpoint.MetricsExporter,
2575 description: "Prometheus settings",
2580 description: "API endpoint with metrics",
2581 suggestions: ["/api/pleroma/app_metrics"]
2586 group: :http_signatures,
2588 description: "HTTP Signatures settings",
2594 suggestions: [Pleroma.Signature]
2600 key: Pleroma.Uploaders.MDII,
2608 suggestions: ["https://mdii.sakura.ne.jp/mdii-post.cgi"]
2614 suggestions: ["https://mdii.sakura.ne.jp"]
2622 description: "HTTP settings",
2626 type: [:string, :atom, nil],
2628 suggestions: ["localhost:9020", {:socks5, :localhost, 3090}, nil]
2631 key: :send_user_agent,
2634 suggestions: [true, false]
2643 # Workaround for remote server certificate chain issues
2644 partial_chain: &:hackney_connect.partial_chain/1,
2645 # We don't support TLS v1.3 yet
2646 versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]
2660 key: :allow_inline_images,
2663 suggestions: [true, false]
2666 key: :allow_headings,
2669 suggestions: [true, false]
2675 suggestions: [true, false]
2681 suggestions: [true, false]
2685 type: {:list, :module},
2687 suggestions: [[Pleroma.HTML.Transform.MediaProxy, Pleroma.HTML.Scrubber.Default]]
2698 key: :deny_follow_blocked,
2701 suggestions: [true, false]
2707 key: :mrf_normalize_markup,
2715 suggestions: [Pleroma.HTML.Scrubber.Default]
2726 key: :restricted_nicknames,
2727 type: {:list, :string},
2748 "ostatus_subscribe",
2775 suggestions: [86_400]
2779 type: {:list, :string},
2781 suggestions: [["POST", "PUT", "DELETE", "GET", "PATCH", "OPTIONS"]]
2790 "X-RateLimit-Reset",
2791 "X-RateLimit-Limit",
2792 "X-RateLimit-Remaining",
2802 suggestions: [true, false]
2806 type: {:list, :string},
2808 suggestions: [["Authorization", "Content-Type", "Idempotency-Key"]]