"Pleroma"
]
},
+ %{
+ key: :languages,
+ type: {:list, :string},
+ description: "Languages the instance uses",
+ suggestions: [
+ "en",
+ "ja",
+ "fr"
+ ]
+ },
%{
key: :email,
label: "Admin Email Address",
key: :public,
type: :boolean,
description:
- "Makes the client API in authenticated mode-only except for user-profiles." <>
- " Useful for disabling the Local Timeline and The Whole Known Network. " <>
+ "Switching this on will allow unauthenticated users access to all public resources on your instance" <>
+ " Switching it off is useful for disabling the Local Timeline and The Whole Known Network. " <>
" Note: when setting to `false`, please also check `:restrict_unauthenticated` setting."
},
%{
"text/plain",
"text/html",
"text/markdown",
- "text/bbcode"
+ "text/bbcode",
+ "text/x.misskeymarkdown"
]
},
%{
type: {:list, :string},
description:
"List of instances that make up your local bubble (closely-related instances). Used to populate the 'bubble' timeline (domain only)."
+ },
+ %{
+ key: :export_prometheus_metrics,
+ type: :boolean,
+ description: "Enable prometheus metrics (at /api/v1/akkoma/metrics)"
}
]
},
}
]
},
- %{
- group: :quack,
- type: :group,
- label: "Quack Logger",
- description: "Quack-related settings",
- children: [
- %{
- key: :level,
- type: {:dropdown, :atom},
- description: "Log level",
- suggestions: [:debug, :info, :warn, :error]
- },
- %{
- key: :meta,
- type: {:list, :atom},
- description: "Configure which metadata you want to report on",
- suggestions: [
- :application,
- :module,
- :file,
- :function,
- :line,
- :pid,
- :crash_reason,
- :initial_call,
- :registered_name,
- :all,
- :none
- ]
- },
- %{
- key: :webhook_url,
- label: "Webhook URL",
- type: :string,
- description: "Configure the Slack incoming webhook",
- suggestions: ["https://hooks.slack.com/services/YOUR-KEY-HERE"]
- }
- ]
- },
%{
group: :pleroma,
key: :frontend_configurations,
hideFilteredStatuses: false,
hideMutedPosts: false,
hidePostStats: false,
- hideSitename: false,
hideUserStats: false,
loginMethod: "password",
logo: "/static/logo.svg",
type: :boolean,
description: "Enables green text on lines prefixed with the > character"
},
+ %{
+ key: :conversationDisplay,
+ label: "Conversation display style",
+ type: :string,
+ description: "How to display conversations (linear or tree)",
+ suggestions: ["linear", "tree"]
+ },
%{
key: :hideFilteredStatuses,
label: "Hide Filtered Statuses",
type: :boolean,
description: "Hide notices statistics (repeats, favorites, ...)"
},
- %{
- key: :hideSitename,
- label: "Hide Sitename",
- type: :boolean,
- description: "Hides instance name from PleromaFE banner"
- },
%{
key: :hideUserStats,
label: "Hide user stats",
"By default it assumes logo used will be monochrome with alpha channel to be compatible with both light and dark themes. " <>
"If you want a colorful logo you must disable logoMask."
},
- %{
- key: :minimalScopesMode,
- label: "Minimal scopes mode",
- type: :boolean,
- description:
- "Limit scope selection to Direct, User default, and Scope of post replying to. " <>
- "Also prevents replying to a DM with a public post from PleromaFE."
- },
%{
key: :nsfwCensorImage,
label: "NSFW Censor Image",
label: "Post Content Type",
type: {:dropdown, :atom},
description: "Default post formatting option",
- suggestions: ["text/plain", "text/html", "text/markdown", "text/bbcode"]
+ suggestions: [
+ "text/plain",
+ "text/html",
+ "text/markdown",
+ "text/bbcode",
+ "text/x.misskeymarkdown"
+ ]
},
%{
key: :redirectRootNoLogin,
type: :string,
description: "Which theme to use. Available themes are defined in styles.json",
suggestions: ["pleroma-dark"]
+ },
+ %{
+ key: :showPanelNavShortcuts,
+ label: "Show timeline panel nav shortcuts",
+ type: :boolean,
+ description: "Whether to put timeline nav tabs on the top of the panel"
+ },
+ %{
+ key: :showNavShortcuts,
+ label: "Show navbar shortcuts",
+ type: :boolean,
+ description: "Whether to put extra navigation options on the navbar"
+ },
+ %{
+ key: :showWiderShortcuts,
+ label: "Increase navbar shortcut spacing",
+ type: :boolean,
+ description: "Whether to add extra space between navbar icons"
+ },
+ %{
+ key: :hideSiteFavicon,
+ label: "Hide site favicon",
+ type: :boolean,
+ description: "Whether to hide the instance favicon from the navbar"
+ },
+ %{
+ key: :hideSiteName,
+ label: "Hide site name",
+ type: :boolean,
+ description: "Whether to hide the site name from the navbar"
+ },
+ %{
+ key: :renderMisskeyMarkdown,
+ label: "Render misskey markdown",
+ type: :boolean,
+ description: "Whether to render Misskey-flavoured markdown"
+ },
+ %{
+ key: :stopGifs,
+ label: "Stop Gifs",
+ type: :boolean,
+ description: "Whether to pause animated images until they're hovered on"
}
]
},
%{
key: :theme_color,
type: :string,
- description: "Describe the theme color of the app",
+ description: "Describe the theme color of the app - this is only used for mastodon-fe",
suggestions: ["#282c37", "mediumpurple"]
},
%{
key: :background_color,
type: :string,
- description: "Describe the background color of the app",
+ description:
+ "Describe the background color of the app - this is only used for mastodon-fe",
suggestions: ["#191b22", "aliceblue"]
}
]
label: "STS max age",
type: :integer,
description: "The maximum age for the Strict-Transport-Security header if sent",
- suggestions: [31_536_000]
- },
- %{
- key: :ct_max_age,
- label: "CT max age",
- type: :integer,
- description: "The maximum age for the Expect-CT header if sent",
- suggestions: [2_592_000]
+ suggestions: [63_072_000]
},
%{
key: :referrer_policy,
federator_incoming: 5,
federator_outgoing: 5
]
+ },
+ %{
+ key: :timeout,
+ type: {:keyword, :integer},
+ description: "Timeout for jobs, per `Oban` queue, in ms",
+ suggestions: [
+ activity_expiration: :timer.seconds(5),
+ token_expiration: :timer.seconds(5),
+ filter_expiration: :timer.seconds(5),
+ backup: :timer.seconds(900),
+ federator_incoming: :timer.seconds(10),
+ federator_outgoing: :timer.seconds(10),
+ ingestion_queue: :timer.seconds(5),
+ web_push: :timer.seconds(5),
+ mailer: :timer.seconds(5),
+ transmogrifier: :timer.seconds(5),
+ scheduled_activities: :timer.seconds(5),
+ poll_notifications: :timer.seconds(5),
+ background: :timer.seconds(5),
+ remote_fetcher: :timer.seconds(10),
+ attachments_cleanup: :timer.seconds(900),
+ new_users_digest: :timer.seconds(10),
+ mute_expire: :timer.seconds(5),
+ search_indexing: :timer.seconds(5),
+ nodeinfo_fetcher: :timer.seconds(10)
+ ]
}
]
},
type: :group,
description: "HTTP settings",
children: [
+ %{
+ key: :pool_timeout,
+ label: "HTTP Pool Request Timeout",
+ type: :integer,
+ description: "Timeout for initiating HTTP requests (in ms, default 5000)",
+ suggestions: [5000]
+ },
+ %{
+ key: :receive_timeout,
+ label: "HTTP Receive Timeout",
+ type: :integer,
+ description:
+ "Timeout for waiting on remote servers to respond to HTTP requests (in ms, default 15000)",
+ suggestions: [15000]
+ },
%{
key: :proxy_url,
label: "Proxy URL",
- type: [:string, :tuple],
- description: "Proxy URL",
- suggestions: ["localhost:9020", {:socks5, :localhost, 3090}]
+ type: :string,
+ description:
+ "Proxy URL - of the format http://host:port. Advise setting in .exs instead of admin-fe due to this being set at boot-time.",
+ suggestions: ["http://localhost:3128"]
},
%{
key: :user_agent,
key: :restrict_unauthenticated,
label: "Restrict Unauthenticated",
type: :group,
- description:
- "Disallow viewing timelines, user profiles and statuses for unauthenticated users.",
+ description: "Disallow unauthenticated viewing of timelines, user profiles and statuses.",
children: [
%{
key: :timelines,
%{
key: :local,
type: :boolean,
- description: "Disallow view public timeline."
+ description: "Disallow viewing the public timeline."
},
%{
key: :federated,
type: :boolean,
- description: "Disallow view federated timeline."
+ description: "Disallow viewing the whole known network timeline."
}
]
},
%{
key: :local,
type: :boolean,
- description: "Disallow view local user profiles."
+ description: "Disallow viewing local user profiles."
},
%{
key: :remote,
type: :boolean,
- description: "Disallow view remote user profiles."
+ description: "Disallow viewing remote user profiles."
}
]
},
%{
key: :activities,
type: :map,
- description: "Settings for statuses.",
+ description: "Settings for posts.",
children: [
%{
key: :local,
type: :boolean,
- description: "Disallow view local statuses."
+ description: "Disallow viewing local posts."
},
%{
key: :remote,
type: :boolean,
- description: "Disallow view remote statuses."
+ description: "Disallow viewing remote posts."
}
]
}
}
]
},
+ %{
+ group: :pleroma,
+ key: :instances_nodeinfo,
+ type: :group,
+ description: "Control favicons for instances",
+ children: [
+ %{
+ key: :enabled,
+ type: :boolean,
+ description: "Allow/disallow getting instance nodeinfo"
+ }
+ ]
+ },
%{
group: :ex_aws,
key: :s3,
group: :pleroma,
key: Pleroma.Search,
type: :group,
+ label: "Search",
description: "General search settings.",
children: [
%{
key: :module,
- type: :keyword,
+ type: :module,
description: "Selected search module.",
- suggestion: [Pleroma.Search.DatabaseSearch, Pleroma.Search.Meilisearch]
+ suggestions: {:list_behaviour_implementations, Pleroma.Search.SearchBackend}
}
]
},
},
%{
key: :initial_indexing_chunk_size,
- type: :int,
+ type: :integer,
description:
"Amount of posts in a batch when running the initial indexing operation. Should probably not be more than 100000" <>
" since there's a limit on maximum insert size",
%{
group: :pleroma,
key: Pleroma.Search.Elasticsearch.Cluster,
+ label: "Elasticsearch",
type: :group,
description: "Elasticsearch settings.",
children: [
},
%{
key: :bulk_page_size,
- type: :int,
+ type: :integer,
description: "Size for bulk put requests, mostly used on building the index",
suggestion: [5000]
},
%{
key: :bulk_wait_interval,
- type: :int,
+ type: :integer,
description: "Time to wait between bulk put requests (in ms)",
suggestion: [15_000]
}
]
}
]
+ },
+ %{
+ group: :pleroma,
+ key: :translator,
+ type: :group,
+ description: "Translation Settings",
+ children: [
+ %{
+ key: :enabled,
+ type: :boolean,
+ description: "Is translation enabled?",
+ suggestion: [true, false]
+ },
+ %{
+ key: :module,
+ type: :module,
+ description: "Translation module.",
+ suggestions: {:list_behaviour_implementations, Pleroma.Akkoma.Translator}
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :deepl,
+ label: "DeepL",
+ type: :group,
+ description: "DeepL Settings.",
+ children: [
+ %{
+ key: :tier,
+ type: {:dropdown, :atom},
+ description: "API Tier",
+ suggestions: [:free, :pro]
+ },
+ %{
+ key: :api_key,
+ type: :string,
+ description: "API key for DeepL",
+ suggestions: [nil]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :libre_translate,
+ type: :group,
+ description: "LibreTranslate Settings.",
+ children: [
+ %{
+ key: :url,
+ type: :string,
+ description: "URL for libretranslate",
+ suggestion: [nil]
+ },
+ %{
+ key: :api_key,
+ type: :string,
+ description: "API key for libretranslate",
+ suggestion: [nil]
+ }
+ ]
}
]