2 alias Pleroma.Docs.Generator
7 {Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"},
8 {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}
15 installed_frontend_options = [
21 "Name of the installed frontend. Valid config must include both `Name` and `Reference` values."
28 "Reference of the installed frontend to be used. Valid config must include both `Name` and `Reference` values."
37 description: "Name of the frontend."
43 description: "Reference of the frontend to be used."
48 description: "URL of the git repository of the frontend"
54 "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`.",
55 example: "https://some.url/builds/${ref}.zip"
60 description: "The directory inside the zip file "
64 config :pleroma, :config_description, [
69 description: "Upload general settings",
74 description: "Module which will be used for uploads",
75 suggestions: {:list_behaviour_implementations, Pleroma.Uploaders.Uploader}
79 type: {:list, :module},
81 "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.",
82 suggestions: {:list_behaviour_implementations, Pleroma.Upload.Filter}
88 "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`."
94 description: "Base URL for the uploads, needed if you use CDN",
96 "https://cdn-host.com"
103 "If enabled, requests to media stored using a remote uploader will be proxied instead of being redirected"
107 label: "Proxy Options",
109 description: "Options for Pleroma.ReverseProxy",
111 redirect_on_failure: false,
112 max_body_length: 25 * 1_048_576,
114 follow_redirect: true,
120 key: :redirect_on_failure,
123 "Redirects the client to the real remote URL if there's any HTTP errors. " <>
124 "Any error during body processing will not be redirected as the response is chunked."
127 key: :max_body_length,
130 "Limits the content length to be approximately the " <>
131 "specified length. It is validated with the `content-length` header and also verified when proxying."
137 description: "HTTP options",
142 description: "Adapter specific options",
147 label: "SSL Options",
148 description: "SSL options for HTTP adapter",
152 type: {:list, :atom},
153 description: "List of TLS versions to use",
154 suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"]
163 type: [:string, :tuple],
164 description: "Proxy URL",
165 suggestions: ["127.0.0.1:8123", {:socks5, :localhost, 9050}]
172 key: :filename_display_max_length,
174 description: "Set max length of a filename to display. 0 = no limit. Default: 30"
180 key: Pleroma.Uploaders.Local,
182 description: "Local uploader-related settings",
187 description: "Path where user's uploads will be saved",
196 key: Pleroma.Uploaders.S3,
198 description: "S3 uploader-related settings",
203 description: "S3 bucket",
209 key: :bucket_namespace,
211 description: "S3 bucket namespace",
212 suggestions: ["pleroma"]
215 key: :public_endpoint,
217 description: "S3 endpoint",
218 suggestions: ["https://s3.amazonaws.com"]
221 key: :truncated_namespace,
224 "If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or \"\" etc." <>
225 " For example, when using CDN to S3 virtual host format, set \"\". At this time, write CNAME to CDN in public_endpoint."
228 key: :streaming_enabled,
231 "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."
237 key: Pleroma.Upload.Filter.Mogrify,
239 description: "Uploads mogrify filter settings",
243 type: [:string, {:list, :string}, {:list, :tuple}],
245 "List of actions for the mogrify command. It's possible to add self-written settings as string. " <>
246 "For example `auto-orient, strip, {\"resize\", \"3840x1080>\"}` value will be parsed into valid list of the settings.",
257 key: Pleroma.Upload.Filter.AnonymizeFilename,
259 description: "Filter replaces the filename of the upload",
265 "Text to replace filenames in links. If no setting, {random}.extension will be used. You can get the original" <>
266 " filename extension by using {extension}, for example custom-file-name.{extension}.",
268 "custom-file-name.{extension}"
277 description: "Websocket based federation",
282 description: "Enable FedSockets"
288 key: Pleroma.Emails.Mailer,
290 description: "Mailer-related settings",
296 "One of the mail adapters listed in [Swoosh readme](https://github.com/swoosh/swoosh#adapters)," <>
297 " or Swoosh.Adapters.Local for in-memory mailbox",
299 Swoosh.Adapters.SMTP,
300 Swoosh.Adapters.Sendgrid,
301 Swoosh.Adapters.Sendmail,
302 Swoosh.Adapters.Mandrill,
303 Swoosh.Adapters.Mailgun,
304 Swoosh.Adapters.Mailjet,
305 Swoosh.Adapters.Postmark,
306 Swoosh.Adapters.SparkPost,
307 Swoosh.Adapters.AmazonSES,
309 Swoosh.Adapters.SocketLabs,
310 Swoosh.Adapters.Gmail,
311 Swoosh.Adapters.Local
317 description: "Allow/disallow send emails"
320 group: {:subgroup, Swoosh.Adapters.SMTP},
323 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
324 suggestions: ["smtp.gmail.com"]
327 group: {:subgroup, Swoosh.Adapters.SMTP},
330 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
331 suggestions: ["pleroma"]
334 group: {:subgroup, Swoosh.Adapters.SMTP},
337 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
338 suggestions: ["password"]
341 group: {:subgroup, Swoosh.Adapters.SMTP},
345 description: "`Swoosh.Adapters.SMTP` adapter specific setting"
348 group: {:subgroup, Swoosh.Adapters.SMTP},
352 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
353 suggestions: [:always, :never, :if_available]
356 group: {:subgroup, Swoosh.Adapters.SMTP},
359 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
360 suggestions: [:always, :never, :if_available]
363 group: {:subgroup, Swoosh.Adapters.SMTP},
366 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
370 group: {:subgroup, Swoosh.Adapters.SMTP},
373 description: "`Swoosh.Adapters.SMTP` adapter specific setting",
377 group: {:subgroup, Swoosh.Adapters.SMTP},
379 label: "No MX lookups",
381 description: "`Swoosh.Adapters.SMTP` adapter specific setting"
384 group: {:subgroup, Swoosh.Adapters.Sendgrid},
388 description: "`Swoosh.Adapters.Sendgrid` adapter specific setting",
389 suggestions: ["my-api-key"]
392 group: {:subgroup, Swoosh.Adapters.Sendmail},
395 description: "`Swoosh.Adapters.Sendmail` adapter specific setting",
396 suggestions: ["/usr/bin/sendmail"]
399 group: {:subgroup, Swoosh.Adapters.Sendmail},
402 description: "`Swoosh.Adapters.Sendmail` adapter specific setting",
403 suggestions: ["-N delay,failure,success"]
406 group: {:subgroup, Swoosh.Adapters.Sendmail},
409 description: "`Swoosh.Adapters.Sendmail` adapter specific setting"
412 group: {:subgroup, Swoosh.Adapters.Mandrill},
416 description: "`Swoosh.Adapters.Mandrill` adapter specific setting",
417 suggestions: ["my-api-key"]
420 group: {:subgroup, Swoosh.Adapters.Mailgun},
424 description: "`Swoosh.Adapters.Mailgun` adapter specific setting",
425 suggestions: ["my-api-key"]
428 group: {:subgroup, Swoosh.Adapters.Mailgun},
431 description: "`Swoosh.Adapters.Mailgun` adapter specific setting",
432 suggestions: ["pleroma.com"]
435 group: {:subgroup, Swoosh.Adapters.Mailjet},
439 description: "`Swoosh.Adapters.Mailjet` adapter specific setting",
440 suggestions: ["my-api-key"]
443 group: {:subgroup, Swoosh.Adapters.Mailjet},
446 description: "`Swoosh.Adapters.Mailjet` adapter specific setting",
447 suggestions: ["my-secret-key"]
450 group: {:subgroup, Swoosh.Adapters.Postmark},
454 description: "`Swoosh.Adapters.Postmark` adapter specific setting",
455 suggestions: ["my-api-key"]
458 group: {:subgroup, Swoosh.Adapters.SparkPost},
462 description: "`Swoosh.Adapters.SparkPost` adapter specific setting",
463 suggestions: ["my-api-key"]
466 group: {:subgroup, Swoosh.Adapters.SparkPost},
469 description: "`Swoosh.Adapters.SparkPost` adapter specific setting",
470 suggestions: ["https://api.sparkpost.com/api/v1"]
473 group: {:subgroup, Swoosh.Adapters.AmazonSES},
476 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
477 suggestions: ["us-east-1", "us-east-2"]
480 group: {:subgroup, Swoosh.Adapters.AmazonSES},
483 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
484 suggestions: ["aws-access-key"]
487 group: {:subgroup, Swoosh.Adapters.AmazonSES},
490 description: "`Swoosh.Adapters.AmazonSES` adapter specific setting",
491 suggestions: ["aws-secret-key"]
494 group: {:subgroup, Swoosh.Adapters.Dyn},
498 description: "`Swoosh.Adapters.Dyn` adapter specific setting",
499 suggestions: ["my-api-key"]
502 group: {:subgroup, Swoosh.Adapters.SocketLabs},
505 description: "`Swoosh.Adapters.SocketLabs` adapter specific setting"
508 group: {:subgroup, Swoosh.Adapters.SocketLabs},
512 description: "`Swoosh.Adapters.SocketLabs` adapter specific setting"
515 group: {:subgroup, Swoosh.Adapters.Gmail},
518 description: "`Swoosh.Adapters.Gmail` adapter specific setting"
525 description: "`Swoosh.Adapters.Local` adapter specific settings",
528 group: {:subgroup, Swoosh.Adapters.Local},
531 description: "Run the preview server together as part of your app"
534 group: {:subgroup, Swoosh.Adapters.Local},
537 description: "The preview server port",
545 label: "URI Schemes",
547 description: "URI schemes related settings",
551 type: {:list, :string},
552 description: "List of the scheme part that is considered valid to be an URL",
577 description: "Instance-related settings",
582 description: "Name of the instance",
589 label: "Admin Email Address",
591 description: "Email used to reach an Administrator/Moderator of the instance",
598 label: "Sender Email Address",
600 description: "Envelope FROM address for mail sent via Pleroma",
609 "The instance's description. It can be seen in nodeinfo and `/api/v1/instance`",
617 description: "Posts character limit (CW/Subject included in the counter)",
625 description: "Character limit of the instance chat messages",
633 description: "Hard character limit beyond which remote posts will be dropped",
641 description: "File size limit of uploads (except for avatar, background, banner)",
647 key: :avatar_upload_limit,
649 description: "File size limit of user's profile avatars",
655 key: :background_upload_limit,
657 description: "File size limit of user's profile backgrounds",
663 key: :banner_upload_limit,
665 description: "File size limit of user's profile banners",
673 description: "A map with poll limits for local polls",
677 max_option_chars: 200,
679 max_expiration: 31_536_000
686 description: "Maximum number of options",
690 key: :max_option_chars,
692 description: "Maximum number of characters per option",
696 key: :min_expiration,
698 description: "Minimum expiration time (in seconds)",
702 key: :max_expiration,
704 description: "Maximum expiration time (in seconds)",
710 key: :registrations_open,
713 "Enable registrations for anyone. Invitations require this setting to be disabled."
716 key: :invites_enabled,
719 "Enable user invitations for admins (depends on `registrations_open` being disabled)"
722 key: :account_activation_required,
724 description: "Require users to confirm their emails before signing in"
727 key: :account_approval_required,
729 description: "Require users to be manually approved by an admin before signing in"
734 description: "Enable federation with other instances"
737 key: :federation_incoming_replies_max_depth,
738 label: "Fed. incoming replies max depth",
741 "Max. depth of reply-to and reply activities fetching on incoming federation, to prevent out-of-memory situations while" <>
742 " 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.",
748 key: :federation_reachability_timeout_days,
749 label: "Fed. reachability timeout days",
752 "Timeout (in days) of each external federation target being unreachable prior to pausing federating to it",
760 description: "Enable Pleroma's Relay, which makes it possible to follow a whole instance"
766 "Makes the client API in authenticated mode-only except for user-profiles." <>
767 " Useful for disabling the Local Timeline and The Whole Known Network. " <>
768 " Note: when setting to `false`, please also check `:restrict_unauthenticated` setting."
771 key: :quarantined_instances,
772 type: {:list, :string},
774 "List of ActivityPub instances where private (DMs, followers-only) activities will not be sent",
783 description: "Instance static directory",
789 key: :allowed_post_formats,
790 type: {:list, :string},
791 description: "MIME-type list of formats allowed to be posted (transformed into HTML)",
800 key: :extended_nickname_format,
803 "Enable to use extended local nicknames format (allows underscores/dashes)." <>
804 " This will break federation with older software for theses nicknames."
807 key: :cleanup_attachments,
810 Enable to remove associated attachments when status is removed.
811 This will not affect duplicates and attachments without status.
812 Enabling this will increase load to database when deleting statuses on larger instances.
816 key: :max_pinned_statuses,
818 description: "The maximum number of pinned statuses. 0 will disable the feature.",
826 key: :autofollowed_nicknames,
827 type: {:list, :string},
829 "Set to nicknames of (local) users that every new user should automatically follow",
838 key: :attachment_links,
840 description: "Enable to automatically add attachment link text to statuses"
843 key: :max_report_comment_size,
845 description: "The maximum size of the report comment. Default: 1000.",
851 key: :safe_dm_mentions,
852 label: "Safe DM mentions",
855 "If enabled, only mentions at the beginning of a post will be used to address people in direct messages." <>
856 " This is to prevent accidental mentioning of people when talking about them (e.g. \"@admin please keep an eye on @bad_actor\")." <>
862 description: "If enabled, system data will be shown on `/api/pleroma/healthcheck`"
865 key: :remote_post_retention_days,
868 "The default amount of days to retain remote posts when pruning the database",
874 key: :user_bio_length,
876 description: "A user bio maximum length. Default: 5000.",
882 key: :user_name_length,
884 description: "A user name maximum length. Default: 100.",
890 key: :skip_thread_containment,
892 description: "Skip filtering out broken threads. Default: enabled."
895 key: :limit_to_local_content,
896 type: {:dropdown, :atom},
898 "Limit unauthenticated users to search for local statutes and users only. Default: `:unauthenticated`.",
906 key: :max_account_fields,
908 description: "The maximum number of custom fields in the user profile. Default: 10.",
914 key: :max_remote_account_fields,
917 "The maximum number of custom fields in the remote user profile. Default: 20.",
923 key: :account_field_name_length,
925 description: "An account field name maximum length. Default: 512.",
931 key: :account_field_value_length,
933 description: "An account field value maximum length. Default: 2048.",
939 key: :registration_reason_length,
941 description: "Maximum registration reason length. Default: 500.",
947 key: :external_user_synchronization,
949 description: "Enabling following/followers counters synchronization for external users"
952 key: :multi_factor_authentication,
954 description: "Multi-factor authentication settings",
957 totp: [digits: 6, period: 30],
958 backup_codes: [number: 5, length: 16]
964 label: "TOTP settings",
966 description: "TOTP settings",
967 suggestions: [digits: 6, period: 30],
974 "Determines the length of a one-time pass-code, in characters. Defaults to 6 characters."
981 "A period for which the TOTP code will be valid, in seconds. Defaults to 30 seconds."
988 description: "MFA backup codes settings",
989 suggestions: [number: 5, length: 16],
995 description: "Number of backup codes to generate."
1002 "Determines the length of backup one-time pass-codes, in characters. Defaults to 16 characters."
1009 key: :instance_thumbnail,
1010 type: {:string, :image},
1012 "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.",
1013 suggestions: ["/instance/thumbnail.jpeg"]
1016 key: :show_reactions,
1018 description: "Let favourites and emoji reactions be viewed through the API."
1026 description: "Welcome messages settings",
1029 key: :direct_message,
1031 descpiption: "Direct message settings",
1036 description: "Enables sending a direct message to newly registered users"
1041 description: "A message that will be sent to newly registered users",
1043 "Hi, @username! Welcome on board!"
1047 key: :sender_nickname,
1049 description: "The nickname of the local user that sends a welcome message",
1059 descpiption: "Chat message settings",
1064 description: "Enables sending a chat message to newly registered users"
1070 "A message that will be sent to newly registered users as a chat message",
1072 "Hello, welcome on board!"
1076 key: :sender_nickname,
1078 description: "The nickname of the local user that sends a welcome chat message",
1088 descpiption: "Email message settings",
1093 description: "Enables sending an email to newly registered users"
1097 type: [:string, :tuple],
1099 "Email address and/or nickname that will be used to send the welcome email.",
1101 {"Pleroma App", "welcome@pleroma.app"}
1108 "Subject of the welcome email. EEX template with user and instance_name variables can be used.",
1109 suggestions: ["Welcome to <%= instance_name%>"]
1115 "HTML content of the welcome email. EEX template with user and instance_name variables can be used.",
1116 suggestions: ["<h1>Hello <%= user.name%>. Welcome to <%= instance_name%></h1>"]
1122 "Text content of the welcome email. EEX template with user and instance_name variables can be used.",
1123 suggestions: ["Hello <%= user.name%>. \n Welcome to <%= instance_name%>\n"]
1132 description: "Logger-related settings",
1136 type: [:atom, :tuple, :module],
1138 "Where logs will be sent, :console - send logs to stdout, { ExSyslogger, :ex_syslogger } - to syslog, Quack.Logger - to Slack.",
1139 suggestions: [:console, {ExSyslogger, :ex_syslogger}, Quack.Logger]
1147 label: "ExSyslogger",
1148 description: "ExSyslogger-related settings",
1152 type: {:dropdown, :atom},
1153 description: "Log level",
1154 suggestions: [:debug, :info, :warn, :error]
1160 "A string that's prepended to every message, and is typically set to the app name",
1161 suggestions: ["pleroma"]
1166 description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\"",
1167 suggestions: ["$metadata[$level] $message"]
1171 type: {:list, :atom},
1172 suggestions: [:request_id]
1180 label: "Console Logger",
1181 description: "Console logger settings",
1185 type: {:dropdown, :atom},
1186 description: "Log level",
1187 suggestions: [:debug, :info, :warn, :error]
1192 description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\"",
1193 suggestions: ["$metadata[$level] $message"]
1197 type: {:list, :atom},
1198 suggestions: [:request_id]
1205 label: "Quack Logger",
1206 description: "Quack-related settings",
1210 type: {:dropdown, :atom},
1211 description: "Log level",
1212 suggestions: [:debug, :info, :warn, :error]
1216 type: {:list, :atom},
1217 description: "Configure which metadata you want to report on",
1234 label: "Webhook URL",
1236 description: "Configure the Slack incoming webhook",
1237 suggestions: ["https://hooks.slack.com/services/YOUR-KEY-HERE"]
1243 key: :frontend_configurations,
1246 "This form can be used to configure a keyword list that keeps the configuration data for any " <>
1247 "kind of frontend. By default, settings for pleroma_fe and masto_fe are configured. If you want to " <>
1248 "add your own configuration your settings all fields must be complete.",
1252 label: "Pleroma FE",
1254 description: "Settings for Pleroma FE",
1257 alwaysShowSubjectInput: true,
1258 background: "/static/aurora_borealis.jpg",
1259 collapseMessageWithSubject: false,
1262 hideFilteredStatuses: false,
1263 hideMutedPosts: false,
1264 hidePostStats: false,
1265 hideSitename: false,
1266 hideUserStats: false,
1267 loginMethod: "password",
1268 logo: "/static/logo.png",
1271 minimalScopesMode: false,
1272 noAttachmentLinks: false,
1273 nsfwCensorImage: "/static/img/nsfw.74818f9.png",
1274 postContentType: "text/plain",
1275 redirectRootLogin: "/main/friends",
1276 redirectRootNoLogin: "/main/all",
1278 sidebarRight: false,
1279 showFeaturesPanel: true,
1280 showInstanceSpecificPanel: false,
1281 subjectLineBehavior: "email",
1282 theme: "pleroma-dark",
1283 webPushNotifications: false
1288 key: :alwaysShowSubjectInput,
1289 label: "Always show subject input",
1291 description: "When disabled, auto-hide the subject field if it's empty"
1295 type: {:string, :image},
1297 "URL of the background, unless viewing a user profile with a background that is set",
1298 suggestions: ["/images/city.jpg"]
1301 key: :collapseMessageWithSubject,
1302 label: "Collapse message with subject",
1305 "When a message has a subject (aka Content Warning), collapse it by default"
1309 label: "PleromaFE Chat",
1311 description: "Disables PleromaFE Chat component"
1317 description: "Enables green text on lines prefixed with the > character"
1320 key: :hideFilteredStatuses,
1321 label: "Hide Filtered Statuses",
1323 description: "Hides filtered statuses from timelines"
1326 key: :hideMutedPosts,
1327 label: "Hide Muted Posts",
1329 description: "Hides muted statuses from timelines"
1332 key: :hidePostStats,
1333 label: "Hide post stats",
1335 description: "Hide notices statistics (repeats, favorites, ...)"
1339 label: "Hide Sitename",
1341 description: "Hides instance name from PleromaFE banner"
1344 key: :hideUserStats,
1345 label: "Hide user stats",
1348 "Hide profile statistics (posts, posts per day, followers, followings, ...)"
1352 type: {:string, :image},
1353 description: "URL of the logo, defaults to Pleroma's logo",
1354 suggestions: ["/static/logo.png"]
1358 label: "Logo margin",
1361 "Allows you to adjust vertical margins between logo boundary and navbar borders. " <>
1362 "The idea is that to have logo's image without any extra margins and instead adjust them to your need in layout.",
1363 suggestions: [".1em"]
1370 "By default it assumes logo used will be monochrome with alpha channel to be compatible with both light and dark themes. " <>
1371 "If you want a colorful logo you must disable logoMask."
1374 key: :minimalScopesMode,
1375 label: "Minimal scopes mode",
1378 "Limit scope selection to Direct, User default, and Scope of post replying to. " <>
1379 "Also prevents replying to a DM with a public post from PleromaFE."
1382 key: :nsfwCensorImage,
1383 label: "NSFW Censor Image",
1384 type: {:string, :image},
1386 "URL of the image to use for hiding NSFW media attachments in the timeline",
1387 suggestions: ["/static/img/nsfw.74818f9.png"]
1390 key: :postContentType,
1391 label: "Post Content Type",
1392 type: {:dropdown, :atom},
1393 description: "Default post formatting option",
1394 suggestions: ["text/plain", "text/html", "text/markdown", "text/bbcode"]
1397 key: :redirectRootNoLogin,
1398 label: "Redirect root no login",
1401 "Relative URL which indicates where to redirect when a user isn't logged in",
1402 suggestions: ["/main/all"]
1405 key: :redirectRootLogin,
1406 label: "Redirect root login",
1409 "Relative URL which indicates where to redirect when a user is logged in",
1410 suggestions: ["/main/friends"]
1414 label: "Scope copy",
1416 description: "Copy the scope (private/unlisted/public) in replies to posts by default"
1420 label: "Sidebar on Right",
1422 description: "Change alignment of sidebar and panels to the right"
1425 key: :showFeaturesPanel,
1426 label: "Show instance features panel",
1429 "Enables panel displaying functionality of the instance on the About page"
1432 key: :showInstanceSpecificPanel,
1433 label: "Show instance specific panel",
1435 description: "Whether to show the instance's custom panel"
1438 key: :subjectLineBehavior,
1439 label: "Subject line behavior",
1441 description: "Allows changing the default behaviour of subject lines in replies.
1442 `email`: copy and preprend re:, as in email,
1443 `masto`: copy verbatim, as in Mastodon,
1444 `noop`: don't copy the subject.",
1445 suggestions: ["email", "masto", "noop"]
1450 description: "Which theme to use. Available themes are defined in styles.json",
1451 suggestions: ["pleroma-dark"]
1459 description: "Settings for Masto FE",
1462 showInstanceSpecificPanel: true
1467 key: :showInstanceSpecificPanel,
1468 label: "Show instance specific panel",
1470 description: "Whenether to show the instance's specific panel"
1481 "This section configures assets to be used with various frontends. Currently the only option relates to mascots on the mastodon frontend",
1485 type: {:keyword, :map},
1487 "Keyword of mascots, each element must contain both an URL and a mime_type key",
1490 url: "/images/pleroma-fox-tan-smol.png",
1491 mime_type: "image/png"
1493 pleroma_fox_tan_shy: %{
1494 url: "/images/pleroma-fox-tan-shy.png",
1495 mime_type: "image/png"
1500 key: :default_mascot,
1503 "This will be used as the default mascot on MastoFE. Default: `:pleroma_fox_tan`",
1509 key: :default_user_avatar,
1510 type: {:string, :image},
1511 description: "URL of the default user avatar",
1512 suggestions: ["/images/avi.png"]
1521 "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE.",
1525 type: {:list, :map},
1526 description: "Describe the icons of the app",
1529 src: "/static/logo.png"
1532 src: "/static/icon.png",
1536 src: "/static/icon.ico",
1537 sizes: "72x72 96x96 128x128 256x256"
1544 description: "Describe the theme color of the app",
1545 suggestions: ["#282c37", "mediumpurple"]
1548 key: :background_color,
1550 description: "Describe the background color of the app",
1551 suggestions: ["#191b22", "aliceblue"]
1561 description: "General MRF settings",
1565 type: [:module, {:list, :module}],
1567 "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.",
1568 suggestions: {:list_behaviour_implementations, Pleroma.Web.ActivityPub.MRF}
1572 label: "MRF transparency",
1575 "Make the content of your Message Rewrite Facility settings public (via nodeinfo)"
1578 key: :transparency_exclusions,
1579 label: "MRF transparency exclusions",
1580 type: {:list, :string},
1582 "Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value.",
1593 related_policy: "Pleroma.Web.ActivityPub.MRF.SimplePolicy",
1594 label: "MRF Simple",
1596 description: "Simple ingress policies",
1599 key: :media_removal,
1600 type: {:list, :string},
1601 description: "List of instances to strip media attachments from",
1602 suggestions: ["example.com", "*.example.com"]
1606 label: "Media NSFW",
1607 type: {:list, :string},
1608 description: "List of instances to tag all media as NSFW (sensitive) from",
1609 suggestions: ["example.com", "*.example.com"]
1612 key: :federated_timeline_removal,
1613 type: {:list, :string},
1615 "List of instances to remove from the Federated (aka The Whole Known Network) Timeline",
1616 suggestions: ["example.com", "*.example.com"]
1620 type: {:list, :string},
1621 description: "List of instances to reject activities from (except deletes)",
1622 suggestions: ["example.com", "*.example.com"]
1626 type: {:list, :string},
1627 description: "List of instances to only accept activities from (except deletes)",
1628 suggestions: ["example.com", "*.example.com"]
1631 key: :followers_only,
1632 type: {:list, :string},
1633 description: "Force posts from the given instances to be visible by followers only",
1634 suggestions: ["example.com", "*.example.com"]
1637 key: :report_removal,
1638 type: {:list, :string},
1639 description: "List of instances to reject reports from",
1640 suggestions: ["example.com", "*.example.com"]
1643 key: :avatar_removal,
1644 type: {:list, :string},
1645 description: "List of instances to strip avatars from",
1646 suggestions: ["example.com", "*.example.com"]
1649 key: :banner_removal,
1650 type: {:list, :string},
1651 description: "List of instances to strip banners from",
1652 suggestions: ["example.com", "*.example.com"]
1655 key: :reject_deletes,
1656 type: {:list, :string},
1657 description: "List of instances to reject deletions from",
1658 suggestions: ["example.com", "*.example.com"]
1664 key: :mrf_activity_expiration,
1666 related_policy: "Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy",
1667 label: "MRF Activity Expiration Policy",
1669 description: "Adds automatic expiration to all local activities",
1674 description: "Default global expiration time for all local activities (in days)",
1675 suggestions: [90, 365]
1683 related_policy: "Pleroma.Web.ActivityPub.MRF.SubchainPolicy",
1684 label: "MRF Subchain",
1687 "This policy processes messages through an alternate pipeline when a given message matches certain criteria." <>
1688 " All criteria are configured as a map of regular expressions to lists of policy modules.",
1692 type: {:map, {:list, :string}},
1693 description: "Matches a series of regular expressions against the actor field",
1696 ~r/https:\/\/example.com/s => [Pleroma.Web.ActivityPub.MRF.DropPolicy]
1704 key: :mrf_rejectnonpublic,
1706 related_policy: "Pleroma.Web.ActivityPub.MRF.RejectNonPublic",
1707 description: "RejectNonPublic drops posts with non-public visibility settings.",
1708 label: "MRF Reject Non Public",
1712 key: :allow_followersonly,
1713 label: "Allow followers-only",
1715 description: "Whether to allow followers-only posts"
1720 description: "Whether to allow direct messages"
1726 key: :mrf_hellthread,
1728 related_policy: "Pleroma.Web.ActivityPub.MRF.HellthreadPolicy",
1729 label: "MRF Hellthread",
1731 description: "Block messages with excessive user mentions",
1734 key: :delist_threshold,
1737 "Number of mentioned users after which the message gets removed from timelines and" <>
1738 "disables notifications. Set to 0 to disable.",
1742 key: :reject_threshold,
1745 "Number of mentioned users after which the messaged gets rejected. Set to 0 to disable.",
1754 related_policy: "Pleroma.Web.ActivityPub.MRF.KeywordPolicy",
1755 label: "MRF Keyword",
1757 description: "Reject or Word-Replace messages with a keyword or regex",
1761 type: {:list, :string},
1763 "A list of patterns which result in message being rejected. Each pattern can be a string or a regular expression.",
1764 suggestions: ["foo", ~r/foo/iu]
1767 key: :federated_timeline_removal,
1768 type: {:list, :string},
1770 "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.",
1771 suggestions: ["foo", ~r/foo/iu]
1775 type: {:list, :tuple},
1777 "A list of tuples containing {pattern, replacement}. Each pattern can be a string or a regular expression.",
1778 suggestions: [{"foo", "bar"}, {~r/foo/iu, "bar"}]
1786 related_policy: "Pleroma.Web.ActivityPub.MRF.MentionPolicy",
1787 label: "MRF Mention",
1789 description: "Block messages which mention a specific user",
1793 type: {:list, :string},
1794 description: "A list of actors for which any post mentioning them will be dropped",
1795 suggestions: ["actor1", "actor2"]
1801 key: :mrf_vocabulary,
1803 related_policy: "Pleroma.Web.ActivityPub.MRF.VocabularyPolicy",
1804 label: "MRF Vocabulary",
1806 description: "Filter messages which belong to certain activity vocabularies",
1810 type: {:list, :string},
1812 "A list of ActivityStreams terms to accept. If empty, all supported messages are accepted.",
1813 suggestions: ["Create", "Follow", "Mention", "Announce", "Like"]
1817 type: {:list, :string},
1819 "A list of ActivityStreams terms to reject. If empty, no messages are rejected.",
1820 suggestions: ["Create", "Follow", "Mention", "Announce", "Like"]
1826 # key: :mrf_user_allowlist,
1828 # related_policy: "Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy",
1831 # "The keys in this section are the domain names that the policy should apply to." <>
1832 # " Each key should be assigned a list of users that should be allowed through by their ActivityPub ID",
1834 # %{"example.org" => ["https://example.org/users/admin"]}
1842 description: "Media proxy",
1847 description: "Enables proxying of remote media to the instance's proxy"
1854 "The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.",
1855 suggestions: ["https://example.com"]
1863 provider: Pleroma.Web.MediaProxy.Invalidation.Script
1869 description: "Enables media cache object invalidation."
1874 description: "Module which will be used to purge objects from the cache.",
1876 Pleroma.Web.MediaProxy.Invalidation.Script,
1877 Pleroma.Web.MediaProxy.Invalidation.Http
1884 label: "Proxy Options",
1886 description: "Options for Pleroma.ReverseProxy",
1888 redirect_on_failure: false,
1889 max_body_length: 25 * 1_048_576,
1890 max_read_duration: 30_000,
1892 follow_redirect: true,
1898 key: :redirect_on_failure,
1901 "Redirects the client to the real remote URL if there's any HTTP errors. " <>
1902 "Any error during body processing will not be redirected as the response is chunked."
1905 key: :max_body_length,
1908 "Limits the content length to be approximately the " <>
1909 "specified length. It is validated with the `content-length` header and also verified when proxying."
1912 key: :max_read_duration,
1914 description: "Timeout (in milliseconds) of GET request to remote URI."
1920 description: "HTTP options",
1925 description: "Adapter specific options",
1930 label: "SSL Options",
1931 description: "SSL options for HTTP adapter",
1935 type: {:list, :atom},
1936 description: "List of TLS version to use",
1937 suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"]
1946 type: [:string, :tuple],
1947 description: "Proxy URL",
1948 suggestions: ["127.0.0.1:8123", {:socks5, :localhost, 9050}]
1956 type: {:list, :string},
1957 description: "List of hosts with scheme to bypass the mediaproxy",
1958 suggestions: ["http://example.com"]
1964 key: :media_preview_proxy,
1966 description: "Media preview proxy",
1972 "Enables proxying of remote media preview to the instance's proxy. Requires enabled media proxy."
1975 key: :thumbnail_max_width,
1978 "Max width of preview thumbnail for images (video preview always has original dimensions)."
1981 key: :thumbnail_max_height,
1984 "Max height of preview thumbnail for images (video preview always has original dimensions)."
1987 key: :image_quality,
1989 description: "Quality of the output. Ranges from 0 (min quality) to 100 (max quality)."
1992 key: :min_content_length,
1995 "Min content length to perform preview, in bytes. If greater than 0, media smaller in size will be served as is, without thumbnailing."
2001 key: Pleroma.Web.MediaProxy.Invalidation.Http,
2003 description: "HTTP invalidate settings",
2008 description: "HTTP method of request. Default: :purge"
2012 type: {:keyword, :string},
2013 description: "HTTP headers of request",
2014 suggestions: [{"x-refresh", 1}]
2019 description: "Request options",
2023 type: {:map, :string}
2031 key: Pleroma.Web.MediaProxy.Invalidation.Script,
2033 description: "Script invalidate settings",
2038 description: "Path to shell script. Which will run purge cache.",
2039 suggestions: ["./installation/nginx-cache-purge.sh.example"]
2047 description: "Gopher settings",
2052 description: "Enables the gopher interface"
2058 description: "IP address to bind to",
2059 suggestions: [{0, 0, 0, 0}]
2064 description: "Port to bind to",
2070 description: "Port advertised in URLs (optional, defaults to port)",
2078 label: "ActivityPub",
2080 description: "ActivityPub-related settings",
2083 key: :unfollow_blocked,
2085 description: "Whether blocks result in people getting unfollowed"
2088 key: :outgoing_blocks,
2090 description: "Whether to federate blocks to other instances"
2093 key: :sign_object_fetches,
2095 description: "Sign object fetches with HTTP signatures"
2098 key: :note_replies_output_limit,
2101 "The number of Note replies' URIs to be included with outgoing federation (`5` to match Mastodon hardcoded value, `0` to disable the output)"
2104 key: :follow_handshake_timeout,
2106 description: "Following handshake timeout",
2113 key: :http_security,
2114 label: "HTTP security",
2116 description: "HTTP security settings",
2121 description: "Whether the managed content security policy is enabled"
2127 description: "Whether to additionally send a Strict-Transport-Security header"
2131 label: "STS max age",
2133 description: "The maximum age for the Strict-Transport-Security header if sent",
2134 suggestions: [31_536_000]
2138 label: "CT max age",
2140 description: "The maximum age for the Expect-CT header if sent",
2141 suggestions: [2_592_000]
2144 key: :referrer_policy,
2146 description: "The referrer policy to use, either \"same-origin\" or \"no-referrer\"",
2147 suggestions: ["same-origin", "no-referrer"]
2151 label: "Report URI",
2153 description: "Adds the specified URL to report-uri and report-to group in CSP header",
2154 suggestions: ["https://example.com/report-uri"]
2159 group: :web_push_encryption,
2160 key: :vapid_details,
2161 label: "Vapid Details",
2164 "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it.",
2170 "A mailto link for the administrative contact." <>
2171 " It's best if this email is not a personal email address, but rather a group email to the instance moderation team.",
2172 suggestions: ["mailto:moderators@pleroma.com"]
2177 description: "VAPID public key",
2178 suggestions: ["Public key"]
2183 description: "VAPID private key",
2184 suggestions: ["Private key"]
2190 key: Pleroma.Captcha,
2192 description: "Captcha-related settings",
2197 description: "Whether the captcha should be shown on registration"
2202 description: "The method/service to use for captcha",
2203 suggestions: [Pleroma.Captcha.Kocaptcha, Pleroma.Captcha.Native]
2206 key: :seconds_valid,
2208 description: "The time in seconds for which the captcha is valid",
2215 key: Pleroma.Captcha.Kocaptcha,
2218 "Kocaptcha is a very simple captcha service with a single API endpoint, the source code is" <>
2219 " here: https://github.com/koto-bank/kocaptcha. The default endpoint (https://captcha.kotobank.ch) is hosted by the developer.",
2224 description: "The kocaptcha endpoint to use",
2225 suggestions: ["https://captcha.kotobank.ch"]
2231 label: "Pleroma Admin Token",
2234 "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)",
2239 description: "Admin token",
2241 "Please use a high entropy string or UUID"
2251 [Oban](https://github.com/sorentwo/oban) asynchronous job processor configuration.
2253 Note: if you are running PostgreSQL in [`silent_mode`](https://postgresqlco.nf/en/doc/param/silent_mode?version=9.1),
2254 it's advised to set [`log_destination`](https://postgresqlco.nf/en/doc/param/log_destination?version=9.1) to `syslog`,
2255 otherwise `postmaster.log` file may grow because of "you don't own a lock of type ShareLock" warnings
2256 (see https://github.com/sorentwo/oban/issues/52).
2261 type: {:dropdown, :atom},
2262 description: "Logs verbose mode",
2263 suggestions: [false, :error, :warn, :info, :debug]
2267 type: {:keyword, :integer},
2269 "Background jobs queues (keys: queues, values: max numbers of concurrent jobs)",
2271 activity_expiration: 10,
2272 attachments_cleanup: 5,
2274 federator_incoming: 50,
2275 federator_outgoing: 50,
2277 scheduled_activities: 10,
2283 key: :activity_expiration,
2285 description: "Activity expiration queue",
2289 key: :attachments_cleanup,
2291 description: "Attachment deletion queue",
2297 description: "Background queue",
2301 key: :federator_incoming,
2303 description: "Incoming federation queue",
2307 key: :federator_outgoing,
2309 description: "Outgoing federation queue",
2315 description: "Email sender queue, see Pleroma.Emails.Mailer",
2319 key: :scheduled_activities,
2321 description: "Scheduled activities queue, see Pleroma.ScheduledActivities",
2325 key: :transmogrifier,
2327 description: "Transmogrifier queue",
2333 description: "Web push notifications queue",
2340 type: {:list, :tuple},
2341 description: "Settings for cron background jobs",
2343 {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker},
2344 {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker}
2353 description: "Includes custom worker options not interpretable directly by `Oban`",
2357 type: {:keyword, :integer},
2358 description: "Max retry attempts for failed jobs, per `Oban` queue",
2360 federator_incoming: 5,
2361 federator_outgoing: 5
2368 key: Pleroma.Web.Metadata,
2370 description: "Metadata-related settings",
2374 type: {:list, :module},
2375 description: "List of metadata providers to enable",
2377 Pleroma.Web.Metadata.Providers.OpenGraph,
2378 Pleroma.Web.Metadata.Providers.TwitterCard,
2379 Pleroma.Web.Metadata.Providers.RelMe,
2380 Pleroma.Web.Metadata.Providers.Feed
2385 label: "Unfurl NSFW",
2387 description: "When enabled NSFW attachments will be shown in previews"
2396 "If enabled the instance will parse metadata from attached links to generate link previews",
2401 description: "Enables RichMedia parsing of URLs"
2405 type: {:list, :string},
2406 description: "List of hosts which will be ignored by the metadata parser",
2407 suggestions: ["accounts.google.com", "xss.website"]
2411 label: "Ignore TLD",
2412 type: {:list, :string},
2413 description: "List TLDs (top-level domains) which will ignore for parse metadata",
2414 suggestions: ["local", "localdomain", "lan"]
2418 type: {:list, :module},
2420 "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.",
2422 Pleroma.Web.RichMedia.Parsers.OEmbed,
2423 Pleroma.Web.RichMedia.Parsers.TwitterCard
2428 label: "TTL setters",
2429 type: {:list, :module},
2431 "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.",
2433 Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl
2437 key: :failure_backoff,
2440 "Amount of milliseconds after request failure, during which the request will not be retried.",
2441 suggestions: [60_000]
2447 key: Pleroma.Formatter,
2451 "Configuration for Pleroma's link formatter which parses mentions, hashtags, and URLs.",
2455 type: [:string, :boolean],
2456 description: "Specify the class to be added to the generated link. Disable to clear.",
2457 suggestions: ["auto-linker", false]
2461 type: [:string, :boolean],
2462 description: "Override the rel attribute. Disable to clear.",
2463 suggestions: ["ugc", "noopener noreferrer", false]
2468 description: "Link URLs will open in a new window/tab."
2472 type: [:integer, :boolean],
2474 "Set to a number to truncate URLs longer than the number. Truncated URLs will end in `...`",
2475 suggestions: [15, false]
2480 description: "Strip the scheme prefix."
2485 description: "Link URLs with rarely used schemes (magnet, ipfs, irc, etc.)"
2489 type: [:atom, :boolean],
2491 "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)",
2492 suggestions: [:no_scheme, true]
2498 key: Pleroma.ScheduledActivity,
2500 description: "Scheduled activities settings",
2503 key: :daily_user_limit,
2506 "The number of scheduled activities a user is allowed to create in a single day. Default: 25.",
2510 key: :total_user_limit,
2513 "The number of scheduled activities a user is allowed to create in total. Default: 300.",
2519 description: "Whether scheduled activities are sent to the job queue to be executed"
2525 key: Pleroma.Workers.PurgeExpiredActivity,
2527 description: "Expired activities settings",
2532 description: "Enables expired activities addition & deletion"
2537 description: "Minimum lifetime for ephemeral activity (in seconds)",
2544 label: "Pleroma Authenticator",
2546 description: "Authenticator",
2549 key: Pleroma.Web.Auth.Authenticator,
2551 suggestions: [Pleroma.Web.Auth.PleromaAuthenticator, Pleroma.Web.Auth.LDAPAuthenticator]
2561 "Use LDAP for user authentication. When a user logs in to the Pleroma instance, the name and password" <>
2562 " will be verified by trying to authenticate (bind) to a LDAP server." <>
2563 " If a user exists in the LDAP directory but there is no account with the same name yet on the" <>
2564 " Pleroma instance then a new Pleroma account will be created with the same name as the LDAP user name.",
2569 description: "Enables LDAP authentication"
2574 description: "LDAP server hostname",
2575 suggestions: ["localhosts"]
2580 description: "LDAP port, e.g. 389 or 636",
2581 suggestions: [389, 636]
2587 description: "Enable to use SSL, usually implies the port 636"
2591 label: "SSL options",
2593 description: "Additional SSL options",
2594 suggestions: [cacertfile: "path/to/file/with/PEM/cacerts", verify: :verify_peer],
2599 description: "Path to file with PEM encoded cacerts",
2600 suggestions: ["path/to/file/with/PEM/cacerts"]
2605 description: "Type of cert verification",
2606 suggestions: [:verify_peer]
2614 description: "Enable to use STARTTLS, usually implies the port 389"
2618 label: "TLS options",
2620 description: "Additional TLS options",
2621 suggestions: [cacertfile: "path/to/file/with/PEM/cacerts", verify: :verify_peer],
2626 description: "Path to file with PEM encoded cacerts",
2627 suggestions: ["path/to/file/with/PEM/cacerts"]
2632 description: "Type of cert verification",
2633 suggestions: [:verify_peer]
2640 description: "LDAP base, e.g. \"dc=example,dc=com\"",
2641 suggestions: ["dc=example,dc=com"]
2648 "LDAP attribute name to authenticate the user, e.g. when \"cn\", the filter will be \"cn=username,base\"",
2657 description: "Authentication / authorization settings",
2660 key: :enforce_oauth_admin_scope_usage,
2661 label: "Enforce OAuth admin scope usage",
2664 "OAuth admin scope requirement toggle. " <>
2665 "If enabled, admin actions explicitly demand admin OAuth scope(s) presence in OAuth token " <>
2666 "(client app must support admin scopes). If disabled and token doesn't have admin scope(s), " <>
2667 "`is_admin` user flag grants access to admin-specific actions."
2670 key: :auth_template,
2673 "Authentication form template. By default it's `show.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/show.html.ee`.",
2674 suggestions: ["show.html"]
2677 key: :oauth_consumer_template,
2678 label: "OAuth consumer template",
2681 "OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to" <>
2682 " `lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex`.",
2683 suggestions: ["consumer.html"]
2686 key: :oauth_consumer_strategies,
2687 label: "OAuth consumer strategies",
2688 type: {:list, :string},
2690 "The list of enabled OAuth consumer strategies. By default it's set by OAUTH_CONSUMER_STRATEGIES environment variable." <>
2691 " Each entry in this space-delimited string should be of format \"strategy\" or \"strategy:dependency\"" <>
2692 " (e.g. twitter or keycloak:ueberauth_keycloak_strategy in case dependency is named differently than ueberauth_<strategy>).",
2693 suggestions: ["twitter", "keycloak:ueberauth_keycloak_strategy"]
2699 key: :email_notifications,
2701 description: "Email notifications settings",
2707 "emails of \"what you've missed\" for users who have been inactive for a while",
2711 schedule: "0 0 * * 0",
2713 inactivity_threshold: 7
2721 description: "Globally enable or disable digest emails"
2727 "When to send digest email, in crontab format. \"0 0 0\" is the default, meaning \"once a week at midnight on Sunday morning\".",
2728 suggestions: ["0 0 * * 0"]
2733 description: "Minimum interval between digest emails to one user",
2737 key: :inactivity_threshold,
2739 description: "Minimum user inactivity threshold",
2748 key: Pleroma.Emails.UserEmail,
2750 description: "Email template settings",
2754 type: {:string, :image},
2755 description: "A path to a custom logo. Set it to `nil` to use the default Pleroma logo.",
2756 suggestions: ["some/path/logo.png"]
2761 description: "A map with color settings for email templates.",
2764 link_color: "#d8a070",
2765 background_color: "#2C3645",
2766 content_background_color: "#1B2635",
2767 header_color: "#d8a070",
2768 text_color: "#b9b9ba",
2769 text_muted_color: "#b9b9ba"
2776 suggestions: ["#d8a070"]
2779 key: :background_color,
2781 suggestions: ["#2C3645"]
2784 key: :content_background_color,
2786 suggestions: ["#1B2635"]
2791 suggestions: ["#d8a070"]
2796 suggestions: ["#b9b9ba"]
2799 key: :text_muted_color,
2801 suggestions: ["#b9b9ba"]
2809 key: Pleroma.Emails.NewUsersDigestEmail,
2811 description: "New users admin email digest",
2816 description: "Enables new users admin digest email when `true`"
2825 description: "Configure OAuth 2 provider capabilities",
2828 key: :token_expires_in,
2830 description: "The lifetime in seconds of the access token",
2834 key: :issue_new_refresh_token,
2837 "Keeps old refresh token or generate new refresh token when to obtain an access token"
2840 key: :clean_expired_tokens,
2842 description: "Enable a background job to clean expired OAuth tokens. Default: disabled."
2852 key: :shortcode_globs,
2853 type: {:list, :string},
2854 description: "Location of custom emoji files. * can be used as a wildcard.",
2855 suggestions: ["/emoji/custom/**/*.png"]
2858 key: :pack_extensions,
2859 type: {:list, :string},
2861 "A list of file extensions for emojis, when no emoji.txt for a pack is present",
2862 suggestions: [".png", ".gif"]
2866 type: {:keyword, {:list, :string}},
2868 "Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the group name" <>
2869 " and the value is the location or array of locations. * can be used as a wildcard.",
2871 Custom: ["/emoji/*.png", "/emoji/**/*.png"]
2875 key: :default_manifest,
2878 "Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download." <>
2879 " Currently only one manifest can be added (no arrays).",
2880 suggestions: ["https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json"]
2883 key: :shared_pack_cache_seconds_per_file,
2884 label: "Shared pack cache s/file",
2887 "When an emoji pack is shared, the archive is created and cached in memory" <>
2888 " for this amount of seconds multiplied by the number of files.",
2898 "Rate limit settings. This is an advanced feature enabled only for :authentication by default.",
2902 type: [:tuple, {:list, :tuple}],
2903 description: "For the search requests (account & status search etc.)",
2904 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2908 type: [:tuple, {:list, :tuple}],
2909 description: "For requests to timelines (each timeline has it's own limiter)",
2910 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2913 key: :app_account_creation,
2914 type: [:tuple, {:list, :tuple}],
2915 description: "For registering user accounts from the same IP address",
2916 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2919 key: :relations_actions,
2920 type: [:tuple, {:list, :tuple}],
2921 description: "For actions on relationships with all users (follow, unfollow)",
2922 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2925 key: :relation_id_action,
2926 label: "Relation ID action",
2927 type: [:tuple, {:list, :tuple}],
2928 description: "For actions on relation with a specific user (follow, unfollow)",
2929 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2932 key: :statuses_actions,
2933 type: [:tuple, {:list, :tuple}],
2935 "For create / delete / fav / unfav / reblog / unreblog actions on any statuses",
2936 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2939 key: :status_id_action,
2940 label: "Status ID action",
2941 type: [:tuple, {:list, :tuple}],
2943 "For fav / unfav or reblog / unreblog actions on the same status by the same user",
2944 suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
2947 key: :authentication,
2948 type: [:tuple, {:list, :tuple}],
2949 description: "For authentication create / password check / user existence check requests",
2950 suggestions: [{60_000, 15}]
2959 "Before enabling this you must add :esshd to mix.exs as one of the extra_applications " <>
2960 "and generate host keys in your priv dir with ssh-keygen -m PEM -N \"\" -b 2048 -t rsa -f ssh_host_rsa_key",
2965 description: "Enables SSH"
2970 description: "Dir with SSH keys",
2971 suggestions: ["/some/path/ssh_keys"]
2976 description: "Handler module",
2977 suggestions: ["Pleroma.BBS.Handler"]
2982 description: "Port to connect",
2983 suggestions: [10_022]
2986 key: :password_authenticator,
2988 description: "Authenticator module",
2989 suggestions: ["Pleroma.BBS.Authenticator"]
2995 label: "Mime Types",
2997 description: "Mime Types settings",
3004 "application/xml" => ["xml"],
3005 "application/xrd+xml" => ["xrd+xml"],
3006 "application/jrd+json" => ["jrd+json"],
3007 "application/activity+json" => ["activity+json"],
3008 "application/ld+json" => ["activity+json"]
3013 key: "application/xml",
3014 type: {:list, :string},
3015 suggestions: ["xml"]
3018 key: "application/xrd+xml",
3019 type: {:list, :string},
3020 suggestions: ["xrd+xml"]
3023 key: "application/jrd+json",
3024 type: {:list, :string},
3025 suggestions: ["jrd+json"]
3028 key: "application/activity+json",
3029 type: {:list, :string},
3030 suggestions: ["activity+json"]
3033 key: "application/ld+json",
3034 type: {:list, :string},
3035 suggestions: ["activity+json"]
3045 description: "Pleroma chat settings",
3058 description: "HTTP settings",
3063 type: [:string, :tuple],
3064 description: "Proxy URL",
3065 suggestions: ["localhost:9020", {:socks5, :localhost, 3090}]
3068 key: :send_user_agent,
3073 type: [:string, :atom],
3075 "What user agent to use. Must be a string or an atom `:default`. Default value is `:default`.",
3076 suggestions: ["Pleroma", :default]
3081 description: "Adapter specific options",
3087 label: "SSL Options",
3088 description: "SSL options for HTTP adapter",
3092 type: {:list, :atom},
3093 description: "List of TLS version to use",
3094 suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"]
3105 label: "Markup Settings",
3109 key: :allow_inline_images,
3113 key: :allow_headings,
3126 type: {:list, :module},
3128 "Module names are shortened (removed leading `Pleroma.HTML.` part), but on adding custom module you need to use full name.",
3129 suggestions: [Pleroma.HTML.Transform.MediaProxy, Pleroma.HTML.Scrubber.Default]
3139 key: :deny_follow_blocked,
3146 key: :mrf_normalize_markup,
3148 related_policy: "Pleroma.Web.ActivityPub.MRF.NormalizeMarkup",
3149 label: "MRF Normalize Markup",
3150 description: "MRF NormalizeMarkup settings. Scrub configured hypertext markup.",
3156 suggestions: [Pleroma.HTML.Scrubber.Default]
3166 key: :restricted_nicknames,
3167 type: {:list, :string},
3168 description: "List of nicknames users may not register with.",
3187 "ostatus_subscribe",
3203 key: :email_blacklist,
3204 type: {:list, :string},
3205 description: "List of email domains users may not register with.",
3206 suggestions: ["mailinator.com", "maildrop.cc"]
3212 label: "CORS plug config",
3218 suggestions: [86_400]
3222 type: {:list, :string},
3223 suggestions: ["POST", "PUT", "DELETE", "GET", "PATCH", "OPTIONS"]
3227 type: {:list, :string},
3230 "X-RateLimit-Reset",
3231 "X-RateLimit-Limit",
3232 "X-RateLimit-Remaining",
3243 type: {:list, :string},
3244 suggestions: ["Authorization", "Content-Type", "Idempotency-Key"]
3250 key: Pleroma.Plugs.RemoteIp,
3253 `Pleroma.Plugs.RemoteIp` is a shim to call [`RemoteIp`](https://git.pleroma.social/pleroma/remote_ip) but with runtime configuration.
3254 **If your instance is not behind at least one reverse proxy, you should not enable this plug.**
3260 description: "Enable/disable the plug. Default: disabled."
3264 type: {:list, :string},
3266 "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]`."
3270 type: {:list, :string},
3272 "A list of strings in [CIDR](https://en.wikipedia.org/wiki/CIDR) notation specifying the IPs of known proxies. Default: `[]`."
3276 type: {:list, :string},
3278 "Defaults to [localhost](https://en.wikipedia.org/wiki/Localhost) and [private network](https://en.wikipedia.org/wiki/Private_network)."
3284 key: :web_cache_ttl,
3285 label: "Web cache TTL",
3288 "The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration.",
3294 "Activity pub routes (except question activities). Default: `nil` (no expiration).",
3295 suggestions: [30_000, nil]
3298 key: :activity_pub_question,
3300 description: "Activity pub routes (question activities). Default: `30_000` (30 seconds).",
3301 suggestions: [30_000]
3311 "Render profiles and posts using server-generated HTML that is viewable without using JavaScript",
3316 description: "Enables the rendering of static HTML. Default: disabled."
3324 description: "Configure feed rendering",
3329 description: "Configure title rendering",
3334 description: "Maximum number of characters before truncating title",
3340 description: "Replacement which will be used after truncating string",
3341 suggestions: ["..."]
3349 key: :mrf_object_age,
3351 related_policy: "Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy",
3352 label: "MRF Object Age",
3355 "Rejects or delists posts based on their timestamp deviance from your server's clock.",
3360 description: "Required age (in seconds) of a post before actions are taken.",
3361 suggestions: [172_800]
3365 type: {:list, :atom},
3367 "A list of actions to apply to the post. `:delist` removes the post from public timelines; " <>
3368 "`:strip_followers` removes followers from the ActivityPub recipient list ensuring they won't be delivered to home timelines; " <>
3369 "`:reject` rejects the message entirely",
3370 suggestions: [:delist, :strip_followers, :reject]
3378 description: "Custom Runtime Modules",
3383 description: "A path to custom Elixir modules (such as MRF policies)."
3391 description: "Settings for notifications streamer",
3396 description: "Number of workers to send notifications",
3400 key: :overflow_workers,
3402 description: "Maximum number of workers created if pool is empty",
3409 key: :connections_pool,
3411 description: "Advanced settings for `Gun` connections pool",
3414 key: :connection_acquisition_wait,
3417 "Timeout to acquire a connection from pool. The total max time is this value multiplied by the number of retries. Default: 250ms.",
3421 key: :connection_acquisition_retries,
3424 "Number of attempts to acquire the connection from the pool if it is overloaded. Default: 5",
3428 key: :max_connections,
3430 description: "Maximum number of connections in the pool. Default: 250 connections.",
3434 key: :connect_timeout,
3436 description: "Timeout while `gun` will wait until connection is up. Default: 5000ms.",
3440 key: :reclaim_multiplier,
3443 "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",
3452 description: "Advanced settings for `Gun` workers pools",
3454 Enum.map([:federation, :media, :upload, :default], fn pool_name ->
3458 description: "Settings for #{pool_name} pool.",
3463 description: "Maximum number of concurrent requests in the pool.",
3470 "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",
3476 description: "Timeout for the pool while gun will wait for response",
3477 suggestions: [10_000]
3485 key: :hackney_pools,
3487 description: "Advanced settings for `Hackney` connections pools",
3492 description: "Settings for federation pool.",
3495 key: :max_connections,
3497 description: "Number workers in the pool.",
3503 description: "Timeout while `hackney` will wait for response.",
3504 suggestions: [150_000]
3511 description: "Settings for media pool.",
3514 key: :max_connections,
3516 description: "Number workers in the pool.",
3522 description: "Timeout while `hackney` will wait for response.",
3523 suggestions: [150_000]
3530 description: "Settings for upload pool.",
3533 key: :max_connections,
3535 description: "Number workers in the pool.",
3541 description: "Timeout while `hackney` will wait for response.",
3542 suggestions: [300_000]
3550 key: :restrict_unauthenticated,
3551 label: "Restrict Unauthenticated",
3554 "Disallow viewing timelines, user profiles and statuses for unauthenticated users.",
3559 description: "Settings for public and federated timelines.",
3564 description: "Disallow view public timeline."
3569 description: "Disallow view federated timeline."
3576 description: "Settings for user profiles.",
3581 description: "Disallow view local user profiles."
3586 description: "Disallow view remote user profiles."
3593 description: "Settings for statuses.",
3598 description: "Disallow view local statuses."
3603 description: "Disallow view remote statuses."
3611 key: Pleroma.Web.ApiSpec.CastAndValidate,
3618 "Enables strict input validation (useful in development, not recommended in production)"
3624 key: :instances_favicons,
3626 description: "Control favicons for instances",
3631 description: "Allow/disallow displaying and getting instances favicons"
3639 descriptions: "S3 service related settings",
3642 key: :access_key_id,
3644 description: "S3 access key ID",
3645 suggestions: ["AKIAQ8UKHTGIYN7DMWWJ"]
3648 key: :secret_access_key,
3650 description: "Secret access key",
3651 suggestions: ["JFGt+fgH1UQ7vLUQjpW+WvjTdV/UNzVxcwn7DkaeFKtBS5LvoXvIiME4NQBsT6ZZ"]
3656 description: "S3 host",
3657 suggestions: ["s3.eu-central-1.amazonaws.com"]
3665 description: "Installed frontends management",
3670 description: "Primary frontend, the one that is served for all pages by default",
3671 children: installed_frontend_options
3676 description: "Admin frontend",
3677 children: installed_frontend_options
3683 "A map containing available frontends and parameters for their installation.",
3692 key: Pleroma.Web.Preload,
3694 description: "Preload-related settings",
3698 type: {:list, :module},
3699 description: "List of preload providers to enable",
3701 Pleroma.Web.Preload.Providers.Instance,
3702 Pleroma.Web.Preload.Providers.User,
3703 Pleroma.Web.Preload.Providers.Timelines,
3704 Pleroma.Web.Preload.Providers.StatusNet