2 alias Pleroma.Docs.Generator
7 {Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"},
8 {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}
21 "Name of the frontend. Valid config must include both `Name` and `Reference` values."
28 "Reference of the frontend to be used. Valid config must include both `Name` and `Reference` values."
33 description: "URL of the git repository of the frontend"
39 "Either an url to a zip file containing the frontend or a template to build it by inserting the `ref`. The string `${ref}` will be replaced by the configured `ref`.",
40 example: "https://some.url/builds/${ref}.zip"
45 description: "The directory inside the zip file "
49 config :pleroma, :config_description, [
54 description: "Upload general settings",
59 description: "Module which will be used for uploads",
60 suggestions: {:list_behaviour_implementations, Pleroma.Uploaders.Uploader}
64 type: {:list, :module},
66 "List of filter modules for uploads. Module names are shortened (removed leading `Pleroma.Upload.Filter.` part), but on adding custom module you need to use full name.",
67 suggestions: {:list_behaviour_implementations, Pleroma.Upload.Filter}
73 "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`."
79 description: "Base URL for the uploads, needed if you use CDN",
81 "https://cdn-host.com"
88 "If enabled, requests to media stored using a remote uploader will be proxied instead of being redirected"
92 label: "Proxy Options",
94 description: "Options for Pleroma.ReverseProxy",
96 redirect_on_failure: false,
97 max_body_length: 25 * 1_048_576,
99 follow_redirect: true,
105 key: :redirect_on_failure,
108 "Redirects the client to the real remote URL if there's any HTTP errors. " <>
109 "Any error during body processing will not be redirected as the response is chunked."
112 key: :max_body_length,
115 "Limits the content length to be approximately the " <>
116 "specified length. It is validated with the `content-length` header and also verified when proxying."
122 description: "HTTP options",
127 description: "Adapter specific options",
132 label: "SSL Options",
133 description: "SSL options for HTTP adapter",
137 type: {:list, :atom},
138 description: "List of TLS versions to use",
139 suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"]
148 type: [:string, :tuple],
149 description: "Proxy URL",
150 suggestions: ["127.0.0.1:8123", {:socks5, :localhost, 9050}]
157 key: :filename_display_max_length,
159 description: "Set max length of a filename to display. 0 = no limit. Default: 30"
165 key: Pleroma.Uploaders.Local,
167 description: "Local uploader-related settings",
172 description: "Path where user's uploads will be saved",
181 key: Pleroma.Uploaders.S3,
183 description: "S3 uploader-related settings",
188 description: "S3 bucket",
194 key: :bucket_namespace,
196 description: "S3 bucket namespace",
197 suggestions: ["pleroma"]
200 key: :public_endpoint,
202 description: "S3 endpoint",
203 suggestions: ["https://s3.amazonaws.com"]
206 key: :truncated_namespace,
209 "If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or \"\" etc." <>
210 " For example, when using CDN to S3 virtual host format, set \"\". At this time, write CNAME to CDN in public_endpoint."
213 key: :streaming_enabled,
216 "Enable streaming uploads, when enabled the file will be sent to the server in chunks as it's being read. This may be unsupported by some providers, try disabling this if you have upload problems."
222 key: Pleroma.Upload.Filter.Mogrify,
224 description: "Uploads mogrify filter settings",
228 type: [:string, {:list, :string}, {:list, :tuple}],
230 "List of actions for the mogrify command. It's possible to add self-written settings as string. " <>
231 "For example `auto-orient, strip, {\"resize\", \"3840x1080>\"}` value will be parsed into valid list of the settings.",
242 key: Pleroma.Upload.Filter.AnonymizeFilename,
244 description: "Filter replaces the filename of the upload",
250 "Text to replace filenames in links. If no setting, {random}.extension will be used. You can get the original" <>
251 " filename extension by using {extension}, for example custom-file-name.{extension}.",
253 "custom-file-name.{extension}"
260 key: Pleroma.Emails.Mailer,
262 description: "Mailer-related settings",
268 "One of the mail adapters listed in [Swoosh readme](https://github.com/swoosh/swoosh#adapters)," <>
269 " or Swoosh.Adapters.Local for in-memory mailbox",
271 Swoosh.Adapters.SMTP,
272 Swoosh.Adapters.Sendgrid,
273 Swoosh.Adapters.Sendmail,
274 Swoosh.Adapters.Mandrill,
275 Swoosh.Adapters.Mailgun,
276 Swoosh.Adapters.Mailjet,
277 Swoosh.Adapters.Postmark,
278 Swoosh.Adapters.SparkPost,
279 Swoosh.Adapters.AmazonSES,
281 Swoosh.Adapters.SocketLabs,
282 Swoosh.Adapters.Gmail,
283 Swoosh.Adapters.Local
289 description: "Allow/disallow send emails"
292 group: {:subgroup, Swoosh.Adapters.SMTP},
295 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
296 suggestions: ["smtp.gmail.com"]
299 group: {:subgroup, Swoosh.Adapters.SMTP},
302 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
303 suggestions: ["pleroma"]
306 group: {:subgroup, Swoosh.Adapters.SMTP},
309 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
310 suggestions: ["password"]
313 group: {:subgroup, Swoosh.Adapters.SMTP},
317 description: "`Swoosh.Adapters.SMTP` adapter specific setting"
320 group: {:subgroup, Swoosh.Adapters.SMTP},
324 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
325 suggestions: [:always, :never, :if_available]
328 group: {:subgroup, Swoosh.Adapters.SMTP},
331 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
332 suggestions: [:always, :never, :if_available]
335 group: {:subgroup, Swoosh.Adapters.SMTP},
338 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
342 group: {:subgroup, Swoosh.Adapters.SMTP},
345 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
349 group: {:subgroup, Swoosh.Adapters.SMTP},
351 label: "No MX lookups",
353 description: "`Swoosh.Adapters.SMTP` adapter specific setting"
356 group: {:subgroup, Swoosh.Adapters.Sendgrid},
360 description: "`Swoosh.Adapters.Sendgrid` adapter specific setting",
361 suggestions: ["my-api-key"]
364 group: {:subgroup, Swoosh.Adapters.Sendmail},
367 description: "`Swoosh.Adapters.Sendmail` adapter specific setting",
368 suggestions: ["/usr/bin/sendmail"]
371 group: {:subgroup, Swoosh.Adapters.Sendmail},
374 description: "`Swoosh.Adapters.Sendmail` adapter specific setting",
375 suggestions: ["-N delay,failure,success"]
378 group: {:subgroup, Swoosh.Adapters.Sendmail},
381 description: "`Swoosh.Adapters.Sendmail` adapter specific setting"
384 group: {:subgroup, Swoosh.Adapters.Mandrill},
388 description: "`Swoosh.Adapters.Mandrill` adapter specific setting",
389 suggestions: ["my-api-key"]
392 group: {:subgroup, Swoosh.Adapters.Mailgun},
396 description: "`Swoosh.Adapters.Mailgun` adapter specific setting",
397 suggestions: ["my-api-key"]
400 group: {:subgroup, Swoosh.Adapters.Mailgun},
403 description: "`Swoosh.Adapters.Mailgun` adapter specific setting",
404 suggestions: ["pleroma.com"]
407 group: {:subgroup, Swoosh.Adapters.Mailjet},
411 description: "`Swoosh.Adapters.Mailjet` adapter specific setting",
412 suggestions: ["my-api-key"]
415 group: {:subgroup, Swoosh.Adapters.Mailjet},
418 description: "`Swoosh.Adapters.Mailjet` adapter specific setting",
419 suggestions: ["my-secret-key"]
422 group: {:subgroup, Swoosh.Adapters.Postmark},
426 description: "`Swoosh.Adapters.Postmark` adapter specific setting",
427 suggestions: ["my-api-key"]
430 group: {:subgroup, Swoosh.Adapters.SparkPost},
434 description: "`Swoosh.Adapters.SparkPost` adapter specific setting",
435 suggestions: ["my-api-key"]
438 group: {:subgroup, Swoosh.Adapters.SparkPost},
441 description: "`Swoosh.Adapters.SparkPost` adapter specific setting",
442 suggestions: ["https://api.sparkpost.com/api/v1"]
445 group: {:subgroup, Swoosh.Adapters.AmazonSES},
448 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
449 suggestions: ["us-east-1", "us-east-2"]
452 group: {:subgroup, Swoosh.Adapters.AmazonSES},
455 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
456 suggestions: ["aws-access-key"]
459 group: {:subgroup, Swoosh.Adapters.AmazonSES},
462 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
463 suggestions: ["aws-secret-key"]
466 group: {:subgroup, Swoosh.Adapters.Dyn},
470 description: "`Swoosh.Adapters.Dyn` adapter specific setting",
471 suggestions: ["my-api-key"]
474 group: {:subgroup, Swoosh.Adapters.SocketLabs},
477 description: "`Swoosh.Adapters.SocketLabs` adapter specific setting"
480 group: {:subgroup, Swoosh.Adapters.SocketLabs},
484 description: "`Swoosh.Adapters.SocketLabs` adapter specific setting"
487 group: {:subgroup, Swoosh.Adapters.Gmail},
490 description: "`Swoosh.Adapters.Gmail` adapter specific setting"
497 description: "`Swoosh.Adapters.Local` adapter specific settings",
500 group: {:subgroup, Swoosh.Adapters.Local},
503 description: "Run the preview server together as part of your app"
506 group: {:subgroup, Swoosh.Adapters.Local},
509 description: "The preview server port",
517 label: "URI Schemes",
519 description: "URI schemes related settings",
523 type: {:list, :string},
524 description: "List of the scheme part that is considered valid to be an URL",
549 description: "Instance-related settings",
554 description: "Name of the instance",
561 label: "Admin Email Address",
563 description: "Email used to reach an Administrator/Moderator of the instance",
570 label: "Sender Email Address",
572 description: "Envelope FROM address for mail sent via Pleroma",
581 "The instance's description. It can be seen in nodeinfo and `/api/v1/instance`",
589 description: "Posts character limit (CW/Subject included in the counter)",
597 description: "Character limit of the instance chat messages",
605 description: "Hard character limit beyond which remote posts will be dropped",
613 description: "File size limit of uploads (except for avatar, background, banner)",
619 key: :avatar_upload_limit,
621 description: "File size limit of user's profile avatars",
627 key: :background_upload_limit,
629 description: "File size limit of user's profile backgrounds",
635 key: :banner_upload_limit,
637 description: "File size limit of user's profile banners",
645 description: "A map with poll limits for local polls",
649 max_option_chars: 200,
651 max_expiration: 31_536_000
658 description: "Maximum number of options",
662 key: :max_option_chars,
664 description: "Maximum number of characters per option",
668 key: :min_expiration,
670 description: "Minimum expiration time (in seconds)",
674 key: :max_expiration,
676 description: "Maximum expiration time (in seconds)",
682 key: :registrations_open,
685 "Enable registrations for anyone. Invitations require this setting to be disabled."
688 key: :invites_enabled,
691 "Enable user invitations for admins (depends on `registrations_open` being disabled)"
694 key: :account_activation_required,
696 description: "Require users to confirm their emails before signing in"
699 key: :account_approval_required,
701 description: "Require users to be manually approved by an admin before signing in"
706 description: "Enable federation with other instances"
709 key: :federation_incoming_replies_max_depth,
710 label: "Fed. incoming replies max depth",
713 "Max. depth of reply-to and reply activities fetching on incoming federation, to prevent out-of-memory situations while" <>
714 " 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.",
720 key: :federation_reachability_timeout_days,
721 label: "Fed. reachability timeout days",
724 "Timeout (in days) of each external federation target being unreachable prior to pausing federating to it",
732 description: "Enable Pleroma's Relay, which makes it possible to follow a whole instance"
738 "Makes the client API in authenticated mode-only except for user-profiles." <>
739 " Useful for disabling the Local Timeline and The Whole Known Network. " <>
740 " Note: when setting to `false`, please also check `:restrict_unauthenticated` setting."
743 key: :quarantined_instances,
744 type: {:list, :string},
746 "List of ActivityPub instances where private (DMs, followers-only) activities will not be sent",
753 key: :managed_config,
756 "Whenether the config for pleroma-fe is configured in this config or in static/config.json"
761 description: "Instance static directory",
767 key: :allowed_post_formats,
768 type: {:list, :string},
769 description: "MIME-type list of formats allowed to be posted (transformed into HTML)",
778 key: :extended_nickname_format,
781 "Enable to use extended local nicknames format (allows underscores/dashes)." <>
782 " This will break federation with older software for theses nicknames."
785 key: :cleanup_attachments,
788 Enable to remove associated attachments when status is removed.
789 This will not affect duplicates and attachments without status.
790 Enabling this will increase load to database when deleting statuses on larger instances.
794 key: :max_pinned_statuses,
796 description: "The maximum number of pinned statuses. 0 will disable the feature.",
804 key: :autofollowed_nicknames,
805 type: {:list, :string},
807 "Set to nicknames of (local) users that every new user should automatically follow",
816 key: :attachment_links,
818 description: "Enable to automatically add attachment link text to statuses"
821 key: :max_report_comment_size,
823 description: "The maximum size of the report comment. Default: 1000.",
829 key: :safe_dm_mentions,
830 label: "Safe DM mentions",
833 "If enabled, only mentions at the beginning of a post will be used to address people in direct messages." <>
834 " This is to prevent accidental mentioning of people when talking about them (e.g. \"@admin please keep an eye on @bad_actor\")." <>
840 description: "If enabled, system data will be shown on `/api/pleroma/healthcheck`"
843 key: :remote_post_retention_days,
846 "The default amount of days to retain remote posts when pruning the database",
852 key: :user_bio_length,
854 description: "A user bio maximum length. Default: 5000.",
860 key: :user_name_length,
862 description: "A user name maximum length. Default: 100.",
868 key: :skip_thread_containment,
870 description: "Skip filtering out broken threads. Default: enabled."
873 key: :limit_to_local_content,
874 type: {:dropdown, :atom},
876 "Limit unauthenticated users to search for local statutes and users only. Default: `:unauthenticated`.",
884 key: :max_account_fields,
886 description: "The maximum number of custom fields in the user profile. Default: 10.",
892 key: :max_remote_account_fields,
895 "The maximum number of custom fields in the remote user profile. Default: 20.",
901 key: :account_field_name_length,
903 description: "An account field name maximum length. Default: 512.",
909 key: :account_field_value_length,
911 description: "An account field value maximum length. Default: 2048.",
917 key: :registration_reason_length,
919 description: "Maximum registration reason length. Default: 500.",
925 key: :external_user_synchronization,
927 description: "Enabling following/followers counters synchronization for external users"
930 key: :multi_factor_authentication,
932 description: "Multi-factor authentication settings",
935 totp: [digits: 6, period: 30],
936 backup_codes: [number: 5, length: 16]
942 label: "TOTP settings",
944 description: "TOTP settings",
945 suggestions: [digits: 6, period: 30],
952 "Determines the length of a one-time pass-code, in characters. Defaults to 6 characters."
959 "A period for which the TOTP code will be valid, in seconds. Defaults to 30 seconds."
966 description: "MFA backup codes settings",
967 suggestions: [number: 5, length: 16],
973 description: "Number of backup codes to generate."
980 "Determines the length of backup one-time pass-codes, in characters. Defaults to 16 characters."
987 key: :instance_thumbnail,
988 type: {:string, :image},
990 "The instance thumbnail can be any image that represents your instance and is used by some apps or services when they display information about your instance.",
991 suggestions: ["/instance/thumbnail.jpeg"]
994 key: :show_reactions,
996 description: "Let favourites and emoji reactions be viewed through the API."
1004 description: "Welcome messages settings",
1007 key: :direct_message,
1009 descpiption: "Direct message settings",
1014 description: "Enables sending a direct message to newly registered users"
1019 description: "A message that will be sent to newly registered users",
1021 "Hi, @username! Welcome on board!"
1025 key: :sender_nickname,
1027 description: "The nickname of the local user that sends a welcome message",
1037 descpiption: "Chat message settings",
1042 description: "Enables sending a chat message to newly registered users"
1048 "A message that will be sent to newly registered users as a chat message",
1050 "Hello, welcome on board!"
1054 key: :sender_nickname,
1056 description: "The nickname of the local user that sends a welcome chat message",
1066 descpiption: "Email message settings",
1071 description: "Enables sending an email to newly registered users"
1075 type: [:string, :tuple],
1077 "Email address and/or nickname that will be used to send the welcome email.",
1079 {"Pleroma App", "welcome@pleroma.app"}
1086 "Subject of the welcome email. EEX template with user and instance_name variables can be used.",
1087 suggestions: ["Welcome to <%= instance_name%>"]
1093 "HTML content of the welcome email. EEX template with user and instance_name variables can be used.",
1094 suggestions: ["<h1>Hello <%= user.name%>. Welcome to <%= instance_name%></h1>"]
1100 "Text content of the welcome email. EEX template with user and instance_name variables can be used.",
1101 suggestions: ["Hello <%= user.name%>. \n Welcome to <%= instance_name%>\n"]
1110 description: "Logger-related settings",
1114 type: [:atom, :tuple, :module],
1116 "Where logs will be sent, :console - send logs to stdout, { ExSyslogger, :ex_syslogger } - to syslog, Quack.Logger - to Slack.",
1117 suggestions: [:console, {ExSyslogger, :ex_syslogger}, Quack.Logger]
1125 label: "ExSyslogger",
1126 description: "ExSyslogger-related settings",
1130 type: {:dropdown, :atom},
1131 description: "Log level",
1132 suggestions: [:debug, :info, :warn, :error]
1138 "A string that's prepended to every message, and is typically set to the app name",
1139 suggestions: ["pleroma"]
1144 description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\"",
1145 suggestions: ["$metadata[$level] $message"]
1149 type: {:list, :atom},
1150 suggestions: [:request_id]
1158 label: "Console Logger",
1159 description: "Console logger settings",
1163 type: {:dropdown, :atom},
1164 description: "Log level",
1165 suggestions: [:debug, :info, :warn, :error]
1170 description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\"",
1171 suggestions: ["$metadata[$level] $message"]
1175 type: {:list, :atom},
1176 suggestions: [:request_id]
1183 label: "Quack Logger",
1184 description: "Quack-related settings",
1188 type: {:dropdown, :atom},
1189 description: "Log level",
1190 suggestions: [:debug, :info, :warn, :error]
1194 type: {:list, :atom},
1195 description: "Configure which metadata you want to report on",
1212 label: "Webhook URL",
1214 description: "Configure the Slack incoming webhook",
1215 suggestions: ["https://hooks.slack.com/services/YOUR-KEY-HERE"]
1221 key: :frontend_configurations,
1224 "This form can be used to configure a keyword list that keeps the configuration data for any " <>
1225 "kind of frontend. By default, settings for pleroma_fe and masto_fe are configured. If you want to " <>
1226 "add your own configuration your settings all fields must be complete.",
1230 label: "Pleroma FE",
1232 description: "Settings for Pleroma FE",
1235 alwaysShowSubjectInput: true,
1236 background: "/static/aurora_borealis.jpg",
1237 collapseMessageWithSubject: false,
1240 hideFilteredStatuses: false,
1241 hideMutedPosts: false,
1242 hidePostStats: false,
1243 hideSitename: false,
1244 hideUserStats: false,
1245 loginMethod: "password",
1246 logo: "/static/logo.png",
1249 minimalScopesMode: false,
1250 noAttachmentLinks: false,
1251 nsfwCensorImage: "/static/img/nsfw.74818f9.png",
1252 postContentType: "text/plain",
1253 redirectRootLogin: "/main/friends",
1254 redirectRootNoLogin: "/main/all",
1256 sidebarRight: false,
1257 showFeaturesPanel: true,
1258 showInstanceSpecificPanel: false,
1259 subjectLineBehavior: "email",
1260 theme: "pleroma-dark",
1261 webPushNotifications: false
1266 key: :alwaysShowSubjectInput,
1267 label: "Always show subject input",
1269 description: "When disabled, auto-hide the subject field if it's empty"
1273 type: {:string, :image},
1275 "URL of the background, unless viewing a user profile with a background that is set",
1276 suggestions: ["/images/city.jpg"]
1279 key: :collapseMessageWithSubject,
1280 label: "Collapse message with subject",
1283 "When a message has a subject (aka Content Warning), collapse it by default"
1287 label: "PleromaFE Chat",
1289 description: "Disables PleromaFE Chat component"
1295 description: "Enables green text on lines prefixed with the > character"
1298 key: :hideFilteredStatuses,
1299 label: "Hide Filtered Statuses",
1301 description: "Hides filtered statuses from timelines"
1304 key: :hideMutedPosts,
1305 label: "Hide Muted Posts",
1307 description: "Hides muted statuses from timelines"
1310 key: :hidePostStats,
1311 label: "Hide post stats",
1313 description: "Hide notices statistics (repeats, favorites, ...)"
1317 label: "Hide Sitename",
1319 description: "Hides instance name from PleromaFE banner"
1322 key: :hideUserStats,
1323 label: "Hide user stats",
1326 "Hide profile statistics (posts, posts per day, followers, followings, ...)"
1330 type: {:string, :image},
1331 description: "URL of the logo, defaults to Pleroma's logo",
1332 suggestions: ["/static/logo.png"]
1336 label: "Logo margin",
1339 "Allows you to adjust vertical margins between logo boundary and navbar borders. " <>
1340 "The idea is that to have logo's image without any extra margins and instead adjust them to your need in layout.",
1341 suggestions: [".1em"]
1348 "By default it assumes logo used will be monochrome with alpha channel to be compatible with both light and dark themes. " <>
1349 "If you want a colorful logo you must disable logoMask."
1352 key: :minimalScopesMode,
1353 label: "Minimal scopes mode",
1356 "Limit scope selection to Direct, User default, and Scope of post replying to. " <>
1357 "Also prevents replying to a DM with a public post from PleromaFE."
1360 key: :nsfwCensorImage,
1361 label: "NSFW Censor Image",
1362 type: {:string, :image},
1364 "URL of the image to use for hiding NSFW media attachments in the timeline",
1365 suggestions: ["/static/img/nsfw.74818f9.png"]
1368 key: :postContentType,
1369 label: "Post Content Type",
1370 type: {:dropdown, :atom},
1371 description: "Default post formatting option",
1372 suggestions: ["text/plain", "text/html", "text/markdown", "text/bbcode"]
1375 key: :redirectRootNoLogin,
1376 label: "Redirect root no login",
1379 "Relative URL which indicates where to redirect when a user isn't logged in",
1380 suggestions: ["/main/all"]
1383 key: :redirectRootLogin,
1384 label: "Redirect root login",
1387 "Relative URL which indicates where to redirect when a user is logged in",
1388 suggestions: ["/main/friends"]
1392 label: "Scope copy",
1394 description: "Copy the scope (private/unlisted/public) in replies to posts by default"
1398 label: "Sidebar on Right",
1400 description: "Change alignment of sidebar and panels to the right"
1403 key: :showFeaturesPanel,
1404 label: "Show instance features panel",
1407 "Enables panel displaying functionality of the instance on the About page"
1410 key: :showInstanceSpecificPanel,
1411 label: "Show instance specific panel",
1413 description: "Whether to show the instance's custom panel"
1416 key: :subjectLineBehavior,
1417 label: "Subject line behavior",
1419 description: "Allows changing the default behaviour of subject lines in replies.
1420 `email`: copy and preprend re:, as in email,
1421 `masto`: copy verbatim, as in Mastodon,
1422 `noop`: don't copy the subject.",
1423 suggestions: ["email", "masto", "noop"]
1428 description: "Which theme to use. Available themes are defined in styles.json",
1429 suggestions: ["pleroma-dark"]
1437 description: "Settings for Masto FE",
1440 showInstanceSpecificPanel: true
1445 key: :showInstanceSpecificPanel,
1446 label: "Show instance specific panel",
1448 description: "Whenether to show the instance's specific panel"
1459 "This section configures assets to be used with various frontends. Currently the only option relates to mascots on the mastodon frontend",
1463 type: {:keyword, :map},
1465 "Keyword of mascots, each element must contain both an URL and a mime_type key",
1468 url: "/images/pleroma-fox-tan-smol.png",
1469 mime_type: "image/png"
1471 pleroma_fox_tan_shy: %{
1472 url: "/images/pleroma-fox-tan-shy.png",
1473 mime_type: "image/png"
1478 key: :default_mascot,
1481 "This will be used as the default mascot on MastoFE. Default: `:pleroma_fox_tan`",
1487 key: :default_user_avatar,
1488 type: {:string, :image},
1489 description: "URL of the default user avatar",
1490 suggestions: ["/images/avi.png"]
1499 "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE.",
1503 type: {:list, :map},
1504 description: "Describe the icons of the app",
1507 src: "/static/logo.png"
1510 src: "/static/icon.png",
1514 src: "/static/icon.ico",
1515 sizes: "72x72 96x96 128x128 256x256"
1522 description: "Describe the theme color of the app",
1523 suggestions: ["#282c37", "mediumpurple"]
1526 key: :background_color,
1528 description: "Describe the background color of the app",
1529 suggestions: ["#191b22", "aliceblue"]
1539 description: "General MRF settings",
1543 type: [:module, {:list, :module}],
1545 "A list of MRF policies enabled. Module names are shortened (removed leading `Pleroma.Web.ActivityPub.MRF.` part), but on adding custom module you need to use full name.",
1546 suggestions: {:list_behaviour_implementations, Pleroma.Web.ActivityPub.MRF}
1550 label: "MRF transparency",
1553 "Make the content of your Message Rewrite Facility settings public (via nodeinfo)"
1556 key: :transparency_exclusions,
1557 label: "MRF transparency exclusions",
1558 type: {:list, :string},
1560 "Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value.",
1571 related_policy: "Pleroma.Web.ActivityPub.MRF.SimplePolicy",
1572 label: "MRF Simple",
1574 description: "Simple ingress policies",
1577 key: :media_removal,
1578 type: {:list, :string},
1579 description: "List of instances to strip media attachments from",
1580 suggestions: ["example.com", "*.example.com"]
1584 label: "Media NSFW",
1585 type: {:list, :string},
1586 description: "List of instances to tag all media as NSFW (sensitive) from",
1587 suggestions: ["example.com", "*.example.com"]
1590 key: :federated_timeline_removal,
1591 type: {:list, :string},
1593 "List of instances to remove from the Federated (aka The Whole Known Network) Timeline",
1594 suggestions: ["example.com", "*.example.com"]
1598 type: {:list, :string},
1599 description: "List of instances to reject activities from (except deletes)",
1600 suggestions: ["example.com", "*.example.com"]
1604 type: {:list, :string},
1605 description: "List of instances to only accept activities from (except deletes)",
1606 suggestions: ["example.com", "*.example.com"]
1609 key: :followers_only,
1610 type: {:list, :string},
1611 description: "Force posts from the given instances to be visible by followers only",
1612 suggestions: ["example.com", "*.example.com"]
1615 key: :report_removal,
1616 type: {:list, :string},
1617 description: "List of instances to reject reports from",
1618 suggestions: ["example.com", "*.example.com"]
1621 key: :avatar_removal,
1622 type: {:list, :string},
1623 description: "List of instances to strip avatars from",
1624 suggestions: ["example.com", "*.example.com"]
1627 key: :banner_removal,
1628 type: {:list, :string},
1629 description: "List of instances to strip banners from",
1630 suggestions: ["example.com", "*.example.com"]
1633 key: :reject_deletes,
1634 type: {:list, :string},
1635 description: "List of instances to reject deletions from",
1636 suggestions: ["example.com", "*.example.com"]
1642 key: :mrf_activity_expiration,
1644 related_policy: "Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy",
1645 label: "MRF Activity Expiration Policy",
1647 description: "Adds automatic expiration to all local activities",
1652 description: "Default global expiration time for all local activities (in days)",
1653 suggestions: [90, 365]
1661 related_policy: "Pleroma.Web.ActivityPub.MRF.SubchainPolicy",
1662 label: "MRF Subchain",
1665 "This policy processes messages through an alternate pipeline when a given message matches certain criteria." <>
1666 " All criteria are configured as a map of regular expressions to lists of policy modules.",
1670 type: {:map, {:list, :string}},
1671 description: "Matches a series of regular expressions against the actor field",
1674 ~r/https:\/\/example.com/s => [Pleroma.Web.ActivityPub.MRF.DropPolicy]
1682 key: :mrf_rejectnonpublic,
1684 related_policy: "Pleroma.Web.ActivityPub.MRF.RejectNonPublic",
1685 description: "RejectNonPublic drops posts with non-public visibility settings.",
1686 label: "MRF Reject Non Public",
1690 key: :allow_followersonly,
1691 label: "Allow followers-only",
1693 description: "Whether to allow followers-only posts"
1698 description: "Whether to allow direct messages"
1704 key: :mrf_hellthread,
1706 related_policy: "Pleroma.Web.ActivityPub.MRF.HellthreadPolicy",
1707 label: "MRF Hellthread",
1709 description: "Block messages with excessive user mentions",
1712 key: :delist_threshold,
1715 "Number of mentioned users after which the message gets removed from timelines and" <>
1716 "disables notifications. Set to 0 to disable.",
1720 key: :reject_threshold,
1723 "Number of mentioned users after which the messaged gets rejected. Set to 0 to disable.",
1732 related_policy: "Pleroma.Web.ActivityPub.MRF.KeywordPolicy",
1733 label: "MRF Keyword",
1735 description: "Reject or Word-Replace messages with a keyword or regex",
1739 type: {:list, :string},
1741 "A list of patterns which result in message being rejected. Each pattern can be a string or a regular expression.",
1742 suggestions: ["foo", ~r/foo/iu]
1745 key: :federated_timeline_removal,
1746 type: {:list, :string},
1748 "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.",
1749 suggestions: ["foo", ~r/foo/iu]
1753 type: {:list, :tuple},
1755 "A list of tuples containing {pattern, replacement}. Each pattern can be a string or a regular expression.",
1756 suggestions: [{"foo", "bar"}, {~r/foo/iu, "bar"}]
1764 related_policy: "Pleroma.Web.ActivityPub.MRF.MentionPolicy",
1765 label: "MRF Mention",
1767 description: "Block messages which mention a specific user",
1771 type: {:list, :string},
1772 description: "A list of actors for which any post mentioning them will be dropped",
1773 suggestions: ["actor1", "actor2"]
1779 key: :mrf_vocabulary,
1781 related_policy: "Pleroma.Web.ActivityPub.MRF.VocabularyPolicy",
1782 label: "MRF Vocabulary",
1784 description: "Filter messages which belong to certain activity vocabularies",
1788 type: {:list, :string},
1790 "A list of ActivityStreams terms to accept. If empty, all supported messages are accepted.",
1791 suggestions: ["Create", "Follow", "Mention", "Announce", "Like"]
1795 type: {:list, :string},
1797 "A list of ActivityStreams terms to reject. If empty, no messages are rejected.",
1798 suggestions: ["Create", "Follow", "Mention", "Announce", "Like"]
1804 # key: :mrf_user_allowlist,
1806 # related_policy: "Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy",
1809 # "The keys in this section are the domain names that the policy should apply to." <>
1810 # " Each key should be assigned a list of users that should be allowed through by their ActivityPub ID",
1812 # %{"example.org" => ["https://example.org/users/admin"]}
1820 description: "Media proxy",
1825 description: "Enables proxying of remote media to the instance's proxy"
1832 "The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.",
1833 suggestions: ["https://example.com"]
1841 provider: Pleroma.Web.MediaProxy.Invalidation.Script
1847 description: "Enables media cache object invalidation."
1852 description: "Module which will be used to purge objects from the cache.",
1854 Pleroma.Web.MediaProxy.Invalidation.Script,
1855 Pleroma.Web.MediaProxy.Invalidation.Http
1862 label: "Proxy Options",
1864 description: "Options for Pleroma.ReverseProxy",
1866 redirect_on_failure: false,
1867 max_body_length: 25 * 1_048_576,
1869 follow_redirect: true,
1875 key: :redirect_on_failure,
1878 "Redirects the client to the real remote URL if there's any HTTP errors. " <>
1879 "Any error during body processing will not be redirected as the response is chunked."
1882 key: :max_body_length,
1885 "Limits the content length to be approximately the " <>
1886 "specified length. It is validated with the `content-length` header and also verified when proxying."
1892 description: "HTTP options",
1897 description: "Adapter specific options",
1902 label: "SSL Options",
1903 description: "SSL options for HTTP adapter",
1907 type: {:list, :atom},
1908 description: "List of TLS version to use",
1909 suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"]
1918 type: [:string, :tuple],
1919 description: "Proxy URL",
1920 suggestions: ["127.0.0.1:8123", {:socks5, :localhost, 9050}]
1928 type: {:list, :string},
1929 description: "List of hosts with scheme to bypass the mediaproxy",
1930 suggestions: ["http://example.com"]
1936 key: Pleroma.Web.MediaProxy.Invalidation.Http,
1938 description: "HTTP invalidate settings",
1943 description: "HTTP method of request. Default: :purge"
1947 type: {:keyword, :string},
1948 description: "HTTP headers of request",
1949 suggestions: [{"x-refresh", 1}]
1954 description: "Request options",
1958 type: {:map, :string}
1966 key: Pleroma.Web.MediaProxy.Invalidation.Script,
1968 description: "Script invalidate settings",
1973 description: "Path to shell script. Which will run purge cache.",
1974 suggestions: ["./installation/nginx-cache-purge.sh.example"]
1982 description: "Gopher settings",
1987 description: "Enables the gopher interface"
1993 description: "IP address to bind to",
1994 suggestions: [{0, 0, 0, 0}]
1999 description: "Port to bind to",
2005 description: "Port advertised in URLs (optional, defaults to port)",
2013 label: "ActivityPub",
2015 description: "ActivityPub-related settings",
2018 key: :unfollow_blocked,
2020 description: "Whether blocks result in people getting unfollowed"
2023 key: :outgoing_blocks,
2025 description: "Whether to federate blocks to other instances"
2028 key: :sign_object_fetches,
2030 description: "Sign object fetches with HTTP signatures"
2033 key: :note_replies_output_limit,
2036 "The number of Note replies' URIs to be included with outgoing federation (`5` to match Mastodon hardcoded value, `0` to disable the output)"
2039 key: :follow_handshake_timeout,
2041 description: "Following handshake timeout",
2048 key: :http_security,
2049 label: "HTTP security",
2051 description: "HTTP security settings",
2056 description: "Whether the managed content security policy is enabled"
2062 description: "Whether to additionally send a Strict-Transport-Security header"
2066 label: "STS max age",
2068 description: "The maximum age for the Strict-Transport-Security header if sent",
2069 suggestions: [31_536_000]
2073 label: "CT max age",
2075 description: "The maximum age for the Expect-CT header if sent",
2076 suggestions: [2_592_000]
2079 key: :referrer_policy,
2081 description: "The referrer policy to use, either \"same-origin\" or \"no-referrer\"",
2082 suggestions: ["same-origin", "no-referrer"]
2086 label: "Report URI",
2088 description: "Adds the specified URL to report-uri and report-to group in CSP header",
2089 suggestions: ["https://example.com/report-uri"]
2094 group: :web_push_encryption,
2095 key: :vapid_details,
2096 label: "Vapid Details",
2099 "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it.",
2105 "A mailto link for the administrative contact." <>
2106 " It's best if this email is not a personal email address, but rather a group email to the instance moderation team.",
2107 suggestions: ["mailto:moderators@pleroma.com"]
2112 description: "VAPID public key",
2113 suggestions: ["Public key"]
2118 description: "VAPID private key",
2119 suggestions: ["Private key"]
2125 key: Pleroma.Captcha,
2127 description: "Captcha-related settings",
2132 description: "Whether the captcha should be shown on registration"
2137 description: "The method/service to use for captcha",
2138 suggestions: [Pleroma.Captcha.Kocaptcha, Pleroma.Captcha.Native]
2141 key: :seconds_valid,
2143 description: "The time in seconds for which the captcha is valid",
2150 key: Pleroma.Captcha.Kocaptcha,
2153 "Kocaptcha is a very simple captcha service with a single API endpoint, the source code is" <>
2154 " here: https://github.com/koto-bank/kocaptcha. The default endpoint (https://captcha.kotobank.ch) is hosted by the developer.",
2159 description: "The kocaptcha endpoint to use",
2160 suggestions: ["https://captcha.kotobank.ch"]
2166 label: "Pleroma Admin Token",
2169 "Allows setting a token that can be used to authenticate requests with admin privileges without a normal user account token. Append the `admin_token` parameter to requests to utilize it. (Please reconsider using HTTP Basic Auth or OAuth-based authentication if possible)",
2174 description: "Admin token",
2176 "Please use a high entropy string or UUID"
2186 [Oban](https://github.com/sorentwo/oban) asynchronous job processor configuration.
2188 Note: if you are running PostgreSQL in [`silent_mode`](https://postgresqlco.nf/en/doc/param/silent_mode?version=9.1),
2189 it's advised to set [`log_destination`](https://postgresqlco.nf/en/doc/param/log_destination?version=9.1) to `syslog`,
2190 otherwise `postmaster.log` file may grow because of "you don't own a lock of type ShareLock" warnings
2191 (see https://github.com/sorentwo/oban/issues/52).
2196 type: {:dropdown, :atom},
2197 description: "Logs verbose mode",
2198 suggestions: [false, :error, :warn, :info, :debug]
2202 type: {:keyword, :integer},
2204 "Background jobs queues (keys: queues, values: max numbers of concurrent jobs)",
2206 activity_expiration: 10,
2207 attachments_cleanup: 5,
2209 federator_incoming: 50,
2210 federator_outgoing: 50,
2212 scheduled_activities: 10,
2218 key: :activity_expiration,
2220 description: "Activity expiration queue",
2224 key: :attachments_cleanup,
2226 description: "Attachment deletion queue",
2232 description: "Background queue",
2236 key: :federator_incoming,
2238 description: "Incoming federation queue",
2242 key: :federator_outgoing,
2244 description: "Outgoing federation queue",
2250 description: "Email sender queue, see Pleroma.Emails.Mailer",
2254 key: :scheduled_activities,
2256 description: "Scheduled activities queue, see Pleroma.ScheduledActivities",
2260 key: :transmogrifier,
2262 description: "Transmogrifier queue",
2268 description: "Web push notifications queue",
2275 type: {:list, :tuple},
2276 description: "Settings for cron background jobs",
2278 {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker},
2279 {"0 * * * *", Pleroma.Workers.Cron.StatsWorker},
2280 {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker},
2281 {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker},
2282 {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker}
2291 description: "Includes custom worker options not interpretable directly by `Oban`",
2295 type: {:keyword, :integer},
2296 description: "Max retry attempts for failed jobs, per `Oban` queue",
2298 federator_incoming: 5,
2299 federator_outgoing: 5
2306 key: Pleroma.Web.Metadata,
2308 description: "Metadata-related settings",
2312 type: {:list, :module},
2313 description: "List of metadata providers to enable",
2315 Pleroma.Web.Metadata.Providers.OpenGraph,
2316 Pleroma.Web.Metadata.Providers.TwitterCard,
2317 Pleroma.Web.Metadata.Providers.RelMe,
2318 Pleroma.Web.Metadata.Providers.Feed
2323 label: "Unfurl NSFW",
2325 description: "When enabled NSFW attachments will be shown in previews"
2334 "If enabled the instance will parse metadata from attached links to generate link previews",
2339 description: "Enables RichMedia parsing of URLs"
2343 type: {:list, :string},
2344 description: "List of hosts which will be ignored by the metadata parser",
2345 suggestions: ["accounts.google.com", "xss.website"]
2349 label: "Ignore TLD",
2350 type: {:list, :string},
2351 description: "List TLDs (top-level domains) which will ignore for parse metadata",
2352 suggestions: ["local", "localdomain", "lan"]
2356 type: {:list, :module},
2358 "List of Rich Media parsers. Module names are shortened (removed leading `Pleroma.Web.RichMedia.Parsers.` part), but on adding custom module you need to use full name.",
2360 Pleroma.Web.RichMedia.Parsers.OEmbed,
2361 Pleroma.Web.RichMedia.Parsers.TwitterCard
2366 label: "TTL setters",
2367 type: {:list, :module},
2369 "List of rich media TTL setters. Module names are shortened (removed leading `Pleroma.Web.RichMedia.Parser.` part), but on adding custom module you need to use full name.",
2371 Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl
2378 key: Pleroma.Formatter,
2379 label: "Auto Linker",
2382 "Configuration for Pleroma's link formatter which parses mentions, hashtags, and URLs.",
2386 type: [:string, :boolean],
2387 description: "Specify the class to be added to the generated link. Disable to clear.",
2388 suggestions: ["auto-linker", false]
2392 type: [:string, :boolean],
2393 description: "Override the rel attribute. Disable to clear.",
2394 suggestions: ["ugc", "noopener noreferrer", false]
2399 description: "Link URLs will open in a new window/tab."
2403 type: [:integer, :boolean],
2405 "Set to a number to truncate URLs longer than the number. Truncated URLs will end in `...`",
2406 suggestions: [15, false]
2411 description: "Strip the scheme prefix."
2416 description: "Link URLs with rarely used schemes (magnet, ipfs, irc, etc.)"
2420 type: [:atom, :boolean],
2422 "Set to false to disable TLD validation for URLs/emails. Can be set to :no_scheme to validate TLDs only for URLs without a scheme (e.g `example.com` will be validated, but `http://example.loki` won't)",
2423 suggestions: [:no_scheme, true]
2429 key: Pleroma.ScheduledActivity,
2431 description: "Scheduled activities settings",
2434 key: :daily_user_limit,
2437 "The number of scheduled activities a user is allowed to create in a single day. Default: 25.",
2441 key: :total_user_limit,
2444 "The number of scheduled activities a user is allowed to create in total. Default: 300.",
2450 description: "Whether scheduled activities are sent to the job queue to be executed"
2456 key: Pleroma.ActivityExpiration,
2458 description: "Expired activity settings",
2463 description: "Whether expired activities will be sent to the job queue to be deleted"
2469 label: "Pleroma Authenticator",
2471 description: "Authenticator",
2474 key: Pleroma.Web.Auth.Authenticator,
2476 suggestions: [Pleroma.Web.Auth.PleromaAuthenticator, Pleroma.Web.Auth.LDAPAuthenticator]
2486 "Use LDAP for user authentication. When a user logs in to the Pleroma instance, the name and password" <>
2487 " will be verified by trying to authenticate (bind) to a LDAP server." <>
2488 " If a user exists in the LDAP directory but there is no account with the same name yet on the" <>
2489 " Pleroma instance then a new Pleroma account will be created with the same name as the LDAP user name.",
2494 description: "Enables LDAP authentication"
2499 description: "LDAP server hostname",
2500 suggestions: ["localhosts"]
2505 description: "LDAP port, e.g. 389 or 636",
2506 suggestions: [389, 636]
2512 description: "Enable to use SSL, usually implies the port 636"
2516 label: "SSL options",
2518 description: "Additional SSL options",
2519 suggestions: [cacertfile: "path/to/file/with/PEM/cacerts", verify: :verify_peer],
2524 description: "Path to file with PEM encoded cacerts",
2525 suggestions: ["path/to/file/with/PEM/cacerts"]
2530 description: "Type of cert verification",
2531 suggestions: [:verify_peer]
2539 description: "Enable to use STARTTLS, usually implies the port 389"
2543 label: "TLS options",
2545 description: "Additional TLS options",
2546 suggestions: [cacertfile: "path/to/file/with/PEM/cacerts", verify: :verify_peer],
2551 description: "Path to file with PEM encoded cacerts",
2552 suggestions: ["path/to/file/with/PEM/cacerts"]
2557 description: "Type of cert verification",
2558 suggestions: [:verify_peer]
2565 description: "LDAP base, e.g. \"dc=example,dc=com\"",
2566 suggestions: ["dc=example,dc=com"]
2573 "LDAP attribute name to authenticate the user, e.g. when \"cn\", the filter will be \"cn=username,base\"",
2582 description: "Authentication / authorization settings",
2585 key: :enforce_oauth_admin_scope_usage,
2586 label: "Enforce OAuth admin scope usage",
2589 "OAuth admin scope requirement toggle. " <>
2590 "If enabled, admin actions explicitly demand admin OAuth scope(s) presence in OAuth token " <>
2591 "(client app must support admin scopes). If disabled and token doesn't have admin scope(s), " <>
2592 "`is_admin` user flag grants access to admin-specific actions."
2595 key: :auth_template,
2598 "Authentication form template. By default it's `show.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/show.html.ee`.",
2599 suggestions: ["show.html"]
2602 key: :oauth_consumer_template,
2603 label: "OAuth consumer template",
2606 "OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to" <>
2607 " `lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex`.",
2608 suggestions: ["consumer.html"]
2611 key: :oauth_consumer_strategies,
2612 label: "OAuth consumer strategies",
2613 type: {:list, :string},
2615 "The list of enabled OAuth consumer strategies. By default it's set by OAUTH_CONSUMER_STRATEGIES environment variable." <>
2616 " Each entry in this space-delimited string should be of format \"strategy\" or \"strategy:dependency\"" <>
2617 " (e.g. twitter or keycloak:ueberauth_keycloak_strategy in case dependency is named differently than ueberauth_<strategy>).",
2618 suggestions: ["twitter", "keycloak:ueberauth_keycloak_strategy"]
2624 key: :email_notifications,
2626 description: "Email notifications settings",
2632 "emails of \"what you've missed\" for users who have been inactive for a while",
2636 schedule: "0 0 * * 0",
2638 inactivity_threshold: 7
2646 description: "Globally enable or disable digest emails"
2652 "When to send digest email, in crontab format. \"0 0 0\" is the default, meaning \"once a week at midnight on Sunday morning\".",
2653 suggestions: ["0 0 * * 0"]
2658 description: "Minimum interval between digest emails to one user",
2662 key: :inactivity_threshold,
2664 description: "Minimum user inactivity threshold",
2673 key: Pleroma.Emails.UserEmail,
2675 description: "Email template settings",
2679 type: {:string, :image},
2680 description: "A path to a custom logo. Set it to `nil` to use the default Pleroma logo.",
2681 suggestions: ["some/path/logo.png"]
2686 description: "A map with color settings for email templates.",
2689 link_color: "#d8a070",
2690 background_color: "#2C3645",
2691 content_background_color: "#1B2635",
2692 header_color: "#d8a070",
2693 text_color: "#b9b9ba",
2694 text_muted_color: "#b9b9ba"
2701 suggestions: ["#d8a070"]
2704 key: :background_color,
2706 suggestions: ["#2C3645"]
2709 key: :content_background_color,
2711 suggestions: ["#1B2635"]
2716 suggestions: ["#d8a070"]
2721 suggestions: ["#b9b9ba"]
2724 key: :text_muted_color,
2726 suggestions: ["#b9b9ba"]
2734 key: Pleroma.Emails.NewUsersDigestEmail,
2736 description: "New users admin email digest",
2741 description: "Enables new users admin digest email when `true`"
2750 description: "Configure OAuth 2 provider capabilities",
2753 key: :token_expires_in,
2755 description: "The lifetime in seconds of the access token",
2759 key: :issue_new_refresh_token,
2762 "Keeps old refresh token or generate new refresh token when to obtain an access token"
2765 key: :clean_expired_tokens,
2767 description: "Enable a background job to clean expired OAuth tokens. Default: disabled."
2777 key: :shortcode_globs,
2778 type: {:list, :string},
2779 description: "Location of custom emoji files. * can be used as a wildcard.",
2780 suggestions: ["/emoji/custom/**/*.png"]
2783 key: :pack_extensions,
2784 type: {:list, :string},
2786 "A list of file extensions for emojis, when no emoji.txt for a pack is present",
2787 suggestions: [".png", ".gif"]
2791 type: {:keyword, {:list, :string}},
2793 "Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the group name" <>
2794 " and the value is the location or array of locations. * can be used as a wildcard.",
2796 Custom: ["/emoji/*.png", "/emoji/**/*.png"]
2800 key: :default_manifest,
2803 "Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download." <>
2804 " Currently only one manifest can be added (no arrays).",
2805 suggestions: ["https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json"]
2808 key: :shared_pack_cache_seconds_per_file,
2809 label: "Shared pack cache s/file",
2812 "When an emoji pack is shared, the archive is created and cached in memory" <>
2813 " for this amount of seconds multiplied by the number of files.",
2823 "Rate limit settings. This is an advanced feature enabled only for :authentication by default.",
2827 type: [:tuple, {:list, :tuple}],
2828 description: "For the search requests (account & status search etc.)",
2829 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2833 type: [:tuple, {:list, :tuple}],
2834 description: "For requests to timelines (each timeline has it's own limiter)",
2835 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2838 key: :app_account_creation,
2839 type: [:tuple, {:list, :tuple}],
2840 description: "For registering user accounts from the same IP address",
2841 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2844 key: :relations_actions,
2845 type: [:tuple, {:list, :tuple}],
2846 description: "For actions on relationships with all users (follow, unfollow)",
2847 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2850 key: :relation_id_action,
2851 label: "Relation ID action",
2852 type: [:tuple, {:list, :tuple}],
2853 description: "For actions on relation with a specific user (follow, unfollow)",
2854 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2857 key: :statuses_actions,
2858 type: [:tuple, {:list, :tuple}],
2860 "For create / delete / fav / unfav / reblog / unreblog actions on any statuses",
2861 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2864 key: :status_id_action,
2865 label: "Status ID action",
2866 type: [:tuple, {:list, :tuple}],
2868 "For fav / unfav or reblog / unreblog actions on the same status by the same user",
2869 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2872 key: :authentication,
2873 type: [:tuple, {:list, :tuple}],
2874 description: "For authentication create / password check / user existence check requests",
2875 suggestions: [{60_000, 15}]
2884 "Before enabling this you must add :esshd to mix.exs as one of the extra_applications " <>
2885 "and generate host keys in your priv dir with ssh-keygen -m PEM -N \"\" -b 2048 -t rsa -f ssh_host_rsa_key",
2890 description: "Enables SSH"
2895 description: "Dir with SSH keys",
2896 suggestions: ["/some/path/ssh_keys"]
2901 description: "Handler module",
2902 suggestions: ["Pleroma.BBS.Handler"]
2907 description: "Port to connect",
2908 suggestions: [10_022]
2911 key: :password_authenticator,
2913 description: "Authenticator module",
2914 suggestions: ["Pleroma.BBS.Authenticator"]
2920 label: "Mime Types",
2922 description: "Mime Types settings",
2929 "application/xml" => ["xml"],
2930 "application/xrd+xml" => ["xrd+xml"],
2931 "application/jrd+json" => ["jrd+json"],
2932 "application/activity+json" => ["activity+json"],
2933 "application/ld+json" => ["activity+json"]
2938 key: "application/xml",
2939 type: {:list, :string},
2940 suggestions: ["xml"]
2943 key: "application/xrd+xml",
2944 type: {:list, :string},
2945 suggestions: ["xrd+xml"]
2948 key: "application/jrd+json",
2949 type: {:list, :string},
2950 suggestions: ["jrd+json"]
2953 key: "application/activity+json",
2954 type: {:list, :string},
2955 suggestions: ["activity+json"]
2958 key: "application/ld+json",
2959 type: {:list, :string},
2960 suggestions: ["activity+json"]
2970 description: "Pleroma chat settings",
2983 description: "HTTP settings",
2988 type: [:string, :tuple],
2989 description: "Proxy URL",
2990 suggestions: ["localhost:9020", {:socks5, :localhost, 3090}]
2993 key: :send_user_agent,
2998 type: [:string, :atom],
3000 "What user agent to use. Must be a string or an atom `:default`. Default value is `:default`.",
3001 suggestions: ["Pleroma", :default]
3006 description: "Adapter specific options",
3012 label: "SSL Options",
3013 description: "SSL options for HTTP adapter",
3017 type: {:list, :atom},
3018 description: "List of TLS version to use",
3019 suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"]
3030 label: "Markup Settings",
3034 key: :allow_inline_images,
3038 key: :allow_headings,
3051 type: {:list, :module},
3053 "Module names are shortened (removed leading `Pleroma.HTML.` part), but on adding custom module you need to use full name.",
3054 suggestions: [Pleroma.HTML.Transform.MediaProxy, Pleroma.HTML.Scrubber.Default]
3064 key: :deny_follow_blocked,
3071 key: :mrf_normalize_markup,
3073 related_policy: "Pleroma.Web.ActivityPub.MRF.NormalizeMarkup",
3074 label: "MRF Normalize Markup",
3075 description: "MRF NormalizeMarkup settings. Scrub configured hypertext markup.",
3081 suggestions: [Pleroma.HTML.Scrubber.Default]
3091 key: :restricted_nicknames,
3092 type: {:list, :string},
3093 description: "List of nicknames users may not register with.",
3112 "ostatus_subscribe",
3128 key: :email_blacklist,
3129 type: {:list, :string},
3130 description: "List of email domains users may not register with.",
3131 suggestions: ["mailinator.com", "maildrop.cc"]
3137 label: "CORS plug config",
3143 suggestions: [86_400]
3147 type: {:list, :string},
3148 suggestions: ["POST", "PUT", "DELETE", "GET", "PATCH", "OPTIONS"]
3152 type: {:list, :string},
3155 "X-RateLimit-Reset",
3156 "X-RateLimit-Limit",
3157 "X-RateLimit-Remaining",
3168 type: {:list, :string},
3169 suggestions: ["Authorization", "Content-Type", "Idempotency-Key"]
3175 key: Pleroma.Plugs.RemoteIp,
3178 `Pleroma.Plugs.RemoteIp` is a shim to call [`RemoteIp`](https://git.pleroma.social/pleroma/remote_ip) but with runtime configuration.
3179 **If your instance is not behind at least one reverse proxy, you should not enable this plug.**
3185 description: "Enable/disable the plug. Default: disabled."
3189 type: {:list, :string},
3191 "A list of strings naming the `req_headers` to use when deriving the `remote_ip`. Order does not matter. Default: `~w[forwarded x-forwarded-for x-client-ip x-real-ip]`."
3195 type: {:list, :string},
3197 "A list of strings in [CIDR](https://en.wikipedia.org/wiki/CIDR) notation specifying the IPs of known proxies. Default: `[]`."
3201 type: {:list, :string},
3203 "Defaults to [localhost](https://en.wikipedia.org/wiki/Localhost) and [private network](https://en.wikipedia.org/wiki/Private_network)."
3209 key: :web_cache_ttl,
3210 label: "Web cache TTL",
3213 "The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration.",
3219 "Activity pub routes (except question activities). Default: `nil` (no expiration).",
3220 suggestions: [30_000, nil]
3223 key: :activity_pub_question,
3225 description: "Activity pub routes (question activities). Default: `30_000` (30 seconds).",
3226 suggestions: [30_000]
3236 "Render profiles and posts using server-generated HTML that is viewable without using JavaScript",
3241 description: "Enables the rendering of static HTML. Default: disabled."
3249 description: "Configure feed rendering",
3254 description: "Configure title rendering",
3259 description: "Maximum number of characters before truncating title",
3265 description: "Replacement which will be used after truncating string",
3266 suggestions: ["..."]
3274 key: :mrf_object_age,
3276 related_policy: "Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy",
3277 label: "MRF Object Age",
3280 "Rejects or delists posts based on their timestamp deviance from your server's clock.",
3285 description: "Required age (in seconds) of a post before actions are taken.",
3286 suggestions: [172_800]
3290 type: {:list, :atom},
3292 "A list of actions to apply to the post. `:delist` removes the post from public timelines; " <>
3293 "`:strip_followers` removes followers from the ActivityPub recipient list ensuring they won't be delivered to home timelines; " <>
3294 "`:reject` rejects the message entirely",
3295 suggestions: [:delist, :strip_followers, :reject]
3303 description: "Custom Runtime Modules",
3308 description: "A path to custom Elixir modules (such as MRF policies)."
3316 description: "Settings for notifications streamer",
3321 description: "Number of workers to send notifications",
3325 key: :overflow_workers,
3327 description: "Maximum number of workers created if pool is empty",
3334 key: :connections_pool,
3336 description: "Advanced settings for `Gun` connections pool",
3339 key: :connection_acquisition_wait,
3342 "Timeout to acquire a connection from pool. The total max time is this value multiplied by the number of retries. Default: 250ms.",
3346 key: :connection_acquisition_retries,
3349 "Number of attempts to acquire the connection from the pool if it is overloaded. Default: 5",
3353 key: :max_connections,
3355 description: "Maximum number of connections in the pool. Default: 250 connections.",
3359 key: :await_up_timeout,
3361 description: "Timeout while `gun` will wait until connection is up. Default: 5000ms.",
3365 key: :reclaim_multiplier,
3368 "Multiplier for the number of idle connection to be reclaimed if the pool is full. For example if the pool maxes out at 250 connections and this setting is set to 0.3, the pool will reclaim at most 75 idle connections if it's overloaded. Default: 0.1",
3377 description: "Advanced settings for `Gun` workers pools",
3379 Enum.map([:federation, :media, :upload, :default], fn pool_name ->
3383 description: "Settings for #{pool_name} pool.",
3388 description: "Maximum number of concurrent requests in the pool.",
3395 "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errrors when a new request is made",
3404 key: :hackney_pools,
3406 description: "Advanced settings for `Hackney` connections pools",
3411 description: "Settings for federation pool.",
3414 key: :max_connections,
3416 description: "Number workers in the pool.",
3422 description: "Timeout while `hackney` will wait for response.",
3423 suggestions: [150_000]
3430 description: "Settings for media pool.",
3433 key: :max_connections,
3435 description: "Number workers in the pool.",
3441 description: "Timeout while `hackney` will wait for response.",
3442 suggestions: [150_000]
3449 description: "Settings for upload pool.",
3452 key: :max_connections,
3454 description: "Number workers in the pool.",
3460 description: "Timeout while `hackney` will wait for response.",
3461 suggestions: [300_000]
3469 key: :restrict_unauthenticated,
3470 label: "Restrict Unauthenticated",
3473 "Disallow viewing timelines, user profiles and statuses for unauthenticated users.",
3478 description: "Settings for public and federated timelines.",
3483 description: "Disallow view public timeline."
3488 description: "Disallow view federated timeline."
3495 description: "Settings for user profiles.",
3500 description: "Disallow view local user profiles."
3505 description: "Disallow view remote user profiles."
3512 description: "Settings for statuses.",
3517 description: "Disallow view local statuses."
3522 description: "Disallow view remote statuses."
3530 key: Pleroma.Web.ApiSpec.CastAndValidate,
3537 "Enables strict input validation (useful in development, not recommended in production)"
3543 key: :instances_favicons,
3545 description: "Control favicons for instances",
3550 description: "Allow/disallow displaying and getting instances favicons"
3558 descriptions: "S3 service related settings",
3561 key: :access_key_id,
3563 description: "S3 access key ID",
3564 suggestions: ["AKIAQ8UKHTGIYN7DMWWJ"]
3567 key: :secret_access_key,
3569 description: "Secret access key",
3570 suggestions: ["JFGt+fgH1UQ7vLUQjpW+WvjTdV/UNzVxcwn7DkaeFKtBS5LvoXvIiME4NQBsT6ZZ"]
3575 description: "S3 host",
3576 suggestions: ["s3.eu-central-1.amazonaws.com"]
3584 description: "Installed frontends management",
3589 description: "Primary frontend, the one that is served for all pages by default",
3590 children: frontend_options
3595 description: "Admin frontend",
3596 children: frontend_options
3602 "A map containing available frontends and parameters for their installation.",
3611 key: Pleroma.Web.Preload,
3613 description: "Preload-related settings",
3617 type: {:list, :module},
3618 description: "List of preload providers to enable",
3620 Pleroma.Web.Preload.Providers.Instance,
3621 Pleroma.Web.Preload.Providers.User,
3622 Pleroma.Web.Preload.Providers.Timelines,
3623 Pleroma.Web.Preload.Providers.StatusNet