pleroma/config/config.exs

931 lines
24 KiB
Elixir
Raw Normal View History

# .i;;;;i.
# iYcviii;vXY:
# .YXi .i1c.
# .YC. . in7.
# .vc. ...... ;1c.
# i7, .. .;1;
# i7, .. ... .Y1i
# ,7v .6MMM@; .YX,
# .7;. ..IMMMMMM1 :t7.
# .;Y. ;$MMMMMM9. :tc.
# vY. .. .nMMM@MMU. ;1v.
# i7i ... .#MM@M@C. .....:71i
# it: .... $MMM@9;.,i;;;i,;tti
# :t7. ..... 0MMMWv.,iii:::,,;St.
# .nC. ..... IMMMQ..,::::::,.,czX.
# .ct: ....... .ZMMMI..,:::::::,,:76Y.
# c2: ......,i..Y$M@t..:::::::,,..inZY
# vov ......:ii..c$MBc..,,,,,,,,,,..iI9i
# i9Y ......iii:..7@MA,..,,,,,,,,,....;AA:
# iIS. ......:ii::..;@MI....,............;Ez.
# .I9. ......:i::::...8M1..................C0z.
# .z9; ......:i::::,.. .i:...................zWX.
# vbv ......,i::::,,. ................. :AQY
# c6Y. .,...,::::,,..:t0@@QY. ................ :8bi
# :6S. ..,,...,:::,,,..EMMMMMMI. ............... .;bZ,
# :6o, .,,,,..:::,,,..i#MMMMMM#v................. YW2.
# .n8i ..,,,,,,,::,,,,.. tMMMMM@C:.................. .1Wn
# 7Uc. .:::,,,,,::,,,,.. i1t;,..................... .UEi
# 7C...::::::::::::,,,,.. .................... vSi.
# ;1;...,,::::::,......... .................. Yz:
# v97,......... .voC.
# izAotX7777777777777777777777777777777777777777Y7n92:
# .;CoIIIIIUAA666666699999ZZZZZZZZZZZZZZZZZZZZ6ov.
#
# !!! ATTENTION !!!
# DO NOT EDIT THIS FILE! THIS FILE CONTAINS THE DEFAULT VALUES FOR THE CON-
# FIGURATION! EDIT YOUR SECRET FILE (either prod.secret.exs, dev.secret.exs).
#
2017-03-17 09:09:58 -07:00
# This file is responsible for configuring your application
# and its dependencies with the aid of the Config module.
2017-03-17 09:09:58 -07:00
#
# This configuration file is loaded before any dependency and
# is restricted to this project.
import Config
2017-03-17 09:09:58 -07:00
# General application configuration
2018-03-30 06:01:53 -07:00
config :pleroma, ecto_repos: [Pleroma.Repo]
2017-03-17 09:09:58 -07:00
2019-01-30 07:32:30 -08:00
config :pleroma, Pleroma.Repo,
2019-05-17 02:30:35 -07:00
telemetry_event: [Pleroma.Repo.Instrumenter],
2020-03-01 22:22:34 -08:00
migration_lock: nil
2019-01-30 07:32:30 -08:00
config :pleroma, Pleroma.Captcha,
enabled: true,
seconds_valid: 300,
method: Pleroma.Captcha.Native
2019-12-16 04:35:10 -08:00
config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
2018-11-29 12:11:45 -08:00
# Upload configuration
2018-06-26 13:49:57 -07:00
config :pleroma, Pleroma.Upload,
2018-08-27 18:45:53 -07:00
uploader: Pleroma.Uploaders.Local,
2019-03-15 02:11:13 -07:00
filters: [Pleroma.Upload.Filter.Dedupe],
link_name: false,
2018-11-23 08:40:45 -08:00
proxy_remote: false,
filename_display_max_length: 30,
default_description: nil,
base_url: nil
2018-11-29 12:11:45 -08:00
2018-11-23 08:40:45 -08:00
config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
2018-08-27 18:20:54 -07:00
config :pleroma, Pleroma.Uploaders.S3,
bucket: nil,
bucket_namespace: nil,
truncated_namespace: nil,
streaming_enabled: true
config :ex_aws, :s3,
# host: "s3.wasabisys.com", # required if not Amazon AWS
access_key_id: nil,
secret_access_key: nil,
2021-01-20 14:39:39 -08:00
# region: "us-east-1", # may be required for Amazon AWS
scheme: "https://"
2017-03-28 16:39:01 -07:00
config :pleroma, :emoji,
shortcode_globs: ["/emoji/custom/**/*.png"],
pack_extensions: [".png", ".gif"],
groups: [
Custom: ["/emoji/*.png", "/emoji/**/*.png"]
],
2019-08-12 03:13:01 -07:00
default_manifest: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json",
shared_pack_cache_seconds_per_file: 60
config :pleroma, :uri_schemes,
valid_schemes: [
"https",
"http",
"dat",
"dweb",
"gopher",
2020-07-07 00:05:54 -07:00
"hyper",
"ipfs",
"ipns",
"irc",
"ircs",
"magnet",
"mailto",
"mumble",
"ssb",
"xmpp"
]
2017-03-17 09:09:58 -07:00
# Configures the endpoint
config :pleroma, Pleroma.Web.Endpoint,
url: [host: "localhost"],
2018-12-17 05:39:59 -08:00
http: [
ip: {127, 0, 0, 1}
2018-12-17 05:39:59 -08:00
],
2017-03-28 17:05:51 -07:00
protocol: "https",
2017-03-17 09:09:58 -07:00
secret_key_base: "aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl",
live_view: [signing_salt: "U5ELgdEwTD3n1+D5s0rY0AMg8/y1STxZ3Zvsl3bWh+oBcGrYdil0rXqPMRd3Glcq"],
2018-11-16 12:35:08 -08:00
signing_salt: "CqaoopA2",
2017-03-17 09:09:58 -07:00
render_errors: [view: Pleroma.Web.ErrorView, accepts: ~w(json)],
pubsub_server: Pleroma.PubSub,
secure_cookie_flag: true,
extra_cookie_attrs: [
"SameSite=Lax"
]
2017-03-17 09:09:58 -07:00
# Configures Elixir's Logger
config :logger, :console,
level: :debug,
format: "\n$time $metadata[$level] $message\n",
2017-03-17 09:09:58 -07:00
metadata: [:request_id]
2019-01-02 14:07:48 -08:00
config :logger, :ex_syslogger,
level: :debug,
ident: "pleroma",
format: "$metadata[$level] $message",
2019-01-02 14:07:48 -08:00
metadata: [:request_id]
2017-04-17 04:44:41 -07:00
config :mime, :types, %{
"application/xml" => ["xml"],
2017-12-11 01:37:22 -08:00
"application/xrd+xml" => ["xrd+xml"],
"application/jrd+json" => ["jrd+json"],
2018-04-01 05:58:01 -07:00
"application/activity+json" => ["activity+json"],
"application/ld+json" => ["activity+json"]
2017-04-17 04:44:41 -07:00
}
config :tesla, adapter: Tesla.Adapter.Hackney
2017-12-30 10:02:51 -08:00
# Configures http settings, upstream proxy etc.
config :pleroma, :http,
proxy_url: nil,
send_user_agent: true,
user_agent: :default,
2020-02-10 23:12:57 -08:00
adapter: []
2017-09-15 01:26:28 -07:00
config :pleroma, :instance,
name: "Pleroma",
email: "example@example.com",
notify_email: "noreply@example.com",
2020-05-27 22:49:49 -07:00
description: "Pleroma: An efficient and flexible fediverse server",
short_description: "",
background_image: "/images/city.jpg",
instance_thumbnail: "/instance/thumbnail.jpeg",
favicon: "/favicon.png",
limit: 5_000,
2020-07-06 02:08:13 -07:00
description_limit: 5_000,
2018-12-28 10:57:50 -08:00
remote_limit: 100_000,
upload_limit: 16_000_000,
avatar_upload_limit: 2_000_000,
background_upload_limit: 4_000_000,
banner_upload_limit: 4_000_000,
poll_limits: %{
max_options: 20,
max_option_chars: 200,
min_expiration: 0,
max_expiration: 365 * 24 * 60 * 60
},
2018-03-05 00:26:24 -08:00
registrations_open: true,
invites_enabled: false,
account_activation_required: false,
account_approval_required: false,
federating: true,
2019-06-30 05:58:50 -07:00
federation_incoming_replies_max_depth: 100,
federation_reachability_timeout_days: 7,
2018-08-05 23:18:15 -07:00
allow_relay: true,
public: true,
quarantined_instances: [],
static_dir: "instance/static/",
allowed_post_formats: [
"text/plain",
"text/html",
2019-04-26 03:17:57 -07:00
"text/markdown",
"text/bbcode"
],
autofollowed_nicknames: [],
autofollowing_nicknames: [],
2019-01-17 07:50:34 -08:00
max_pinned_statuses: 1,
attachment_links: false,
2019-03-20 13:09:36 -07:00
max_report_comment_size: 1000,
report_strip_status: true,
safe_dm_mentions: false,
healthcheck: false,
2019-06-03 06:04:39 -07:00
remote_post_retention_days: 90,
skip_thread_containment: true,
limit_to_local_content: :unauthenticated,
user_bio_length: 5000,
user_name_length: 100,
2019-08-07 23:20:35 -07:00
max_account_fields: 10,
max_remote_account_fields: 20,
account_field_name_length: 512,
account_field_value_length: 2048,
registration_reason_length: 500,
external_user_synchronization: true,
2020-01-30 14:20:37 -08:00
extended_nickname_format: true,
cleanup_attachments: false,
multi_factor_authentication: [
totp: [
# digits 6 or 8
digits: 6,
period: 30
],
backup_codes: [
number: 5,
length: 16
]
],
show_reactions: true,
2021-12-25 18:35:17 -08:00
password_reset_token_validity: 60 * 60 * 24,
profile_directory: true,
2022-05-26 07:41:48 -07:00
admin_privileges: [
:users_read,
:users_manage_invites,
:users_manage_activation_state,
:users_manage_tags,
:users_manage_credentials,
:users_delete,
:messages_read,
:messages_delete,
:instances_delete,
:reports_manage_reports,
:moderation_log_read,
2022-07-13 23:40:26 -07:00
:announcements_manage_announcements,
:emoji_manage_emoji,
:statistics_read
2022-05-26 07:41:48 -07:00
],
moderator_privileges: [:messages_delete, :reports_manage_reports],
max_endorsed_users: 20,
2022-01-22 11:21:55 -08:00
birthday_required: false,
birthday_min_age: 0,
max_media_attachments: 1_000
2017-09-15 01:26:28 -07:00
2020-07-20 23:25:53 -07:00
config :pleroma, :welcome,
direct_message: [
enabled: false,
sender_nickname: nil,
message: nil
],
chat_message: [
enabled: false,
sender_nickname: nil,
message: nil
],
2020-07-20 23:25:53 -07:00
email: [
enabled: false,
2020-07-22 05:34:47 -07:00
sender: nil,
2020-07-20 23:25:53 -07:00
subject: "Welcome to <%= instance_name %>",
html: "Welcome to <%= instance_name %>",
text: "Welcome to <%= instance_name %>"
]
2019-11-07 22:23:24 -08:00
config :pleroma, :feed,
post_title: %{
max_length: 100,
2019-11-10 03:02:34 -08:00
omission: "..."
2019-11-07 22:23:24 -08:00
}
config :pleroma, :markup,
# XXX - unfortunately, inline images must be enabled by default right now, because
# of custom emoji. Issue #275 discusses defanging that somehow.
allow_inline_images: true,
allow_headings: false,
allow_tables: false,
allow_fonts: false,
scrub_policy: [
Pleroma.HTML.Scrubber.Default,
Pleroma.HTML.Transform.MediaProxy
]
2019-01-23 03:40:57 -08:00
config :pleroma, :frontend_configurations,
pleroma_fe: %{
2020-05-19 14:05:39 -07:00
alwaysShowSubjectInput: true,
background: "/images/city.jpg",
2019-01-23 03:40:57 -08:00
collapseMessageWithSubject: false,
2020-05-19 14:05:39 -07:00
disableChat: false,
greentext: false,
hideFilteredStatuses: false,
hideMutedPosts: false,
2019-01-23 03:40:57 -08:00
hidePostStats: false,
2020-05-19 14:05:39 -07:00
hideSitename: false,
2019-01-23 03:40:57 -08:00
hideUserStats: false,
2020-05-19 14:05:39 -07:00
loginMethod: "password",
logo: "/static/logo.svg",
2020-05-19 14:05:39 -07:00
logoMargin: ".1em",
logoMask: true,
minimalScopesMode: false,
noAttachmentLinks: false,
nsfwCensorImage: "",
postContentType: "text/plain",
redirectRootLogin: "/main/friends",
redirectRootNoLogin: "/main/all",
2019-01-23 03:40:57 -08:00
scopeCopy: true,
2020-05-20 10:22:31 -07:00
sidebarRight: false,
2020-05-19 14:05:39 -07:00
showFeaturesPanel: true,
showInstanceSpecificPanel: false,
2019-01-23 03:40:57 -08:00
subjectLineBehavior: "email",
2020-05-19 14:05:39 -07:00
theme: "pleroma-dark",
webPushNotifications: false
2019-01-23 03:40:57 -08:00
}
config :pleroma, :assets,
mascots: [
pleroma_fox_tan: %{
url: "/images/pleroma-fox-tan-smol.png",
mime_type: "image/png"
},
pleroma_fox_tan_shy: %{
url: "/images/pleroma-fox-tan-shy.png",
mime_type: "image/png"
}
],
default_mascot: :pleroma_fox_tan
2019-10-11 05:48:01 -07:00
config :pleroma, :manifest,
icons: [
%{
src: "/static/logo.svg",
sizes: "144x144",
purpose: "any",
type: "image/svg+xml"
2019-10-11 05:48:01 -07:00
}
],
theme_color: "#282c37",
background_color: "#191b22"
config :pleroma, :activitypub,
unfollow_blocked: true,
outgoing_blocks: true,
2020-10-09 23:29:41 -07:00
blockers_visible: true,
2019-07-17 14:38:06 -07:00
follow_handshake_timeout: 500,
note_replies_output_limit: 5,
sign_object_fetches: true,
authorized_fetch_mode: false
config :pleroma, :streamer,
workers: 3,
overflow_workers: 2
2018-06-08 21:28:11 -07:00
config :pleroma, :user, deny_follow_blocked: true
config :pleroma, :mrf_normalize_markup, scrub_policy: Pleroma.HTML.Scrubber.Default
config :pleroma, :mrf_rejectnonpublic,
allow_followersonly: false,
allow_direct: false
2019-02-03 11:12:23 -08:00
config :pleroma, :mrf_hellthread,
delist_threshold: 10,
reject_threshold: 20
2018-12-22 14:18:31 -08:00
config :pleroma, :mrf_simple,
media_removal: [],
media_nsfw: [],
federated_timeline_removal: [],
report_removal: [],
reject: [],
followers_only: [],
accept: [],
avatar_removal: [],
banner_removal: [],
reject_deletes: []
2019-01-31 07:18:20 -08:00
2019-02-08 01:48:39 -08:00
config :pleroma, :mrf_keyword,
reject: [],
federated_timeline_removal: [],
2019-02-08 01:48:39 -08:00
replace: []
config :pleroma, :mrf_emoji,
remove_url: [],
remove_shortcode: [],
federated_timeline_removal_url: [],
federated_timeline_removal_shortcode: []
config :pleroma, :mrf_hashtag,
sensitive: ["nsfw"],
reject: [],
federated_timeline_removal: []
2019-06-02 03:29:15 -07:00
config :pleroma, :mrf_subchain, match_actor: %{}
2019-06-02 02:50:16 -07:00
2020-02-11 01:53:24 -08:00
config :pleroma, :mrf_activity_expiration, days: 365
2019-08-13 13:28:59 -07:00
config :pleroma, :mrf_vocabulary,
accept: [],
reject: []
# threshold of 7 days
config :pleroma, :mrf_object_age,
threshold: 604_800,
actions: [:delist, :strip_followers]
config :pleroma, :mrf_follow_bot, follower_nickname: nil
config :pleroma, :mrf_inline_quote, template: "<bdi>RT:</bdi> {url}"
config :pleroma, :mrf_force_mention,
mention_parent: true,
mention_quoted: true
config :pleroma, :rich_media,
enabled: true,
ignore_hosts: [],
2019-07-11 06:04:42 -07:00
ignore_tld: ["local", "localdomain", "lan"],
parsers: [
Pleroma.Web.RichMedia.Parsers.TwitterCard,
Pleroma.Web.RichMedia.Parsers.OEmbed
],
2020-09-02 04:21:28 -07:00
failure_backoff: 60_000,
ttl_setters: [
Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl,
Pleroma.Web.RichMedia.Parser.TTL.Opengraph
],
max_body: 5_000_000
config :pleroma, :media_proxy,
enabled: false,
2020-05-15 11:34:46 -07:00
invalidation: [
enabled: false,
2020-05-17 20:48:19 -07:00
provider: Pleroma.Web.MediaProxy.Invalidation.Script
2020-05-15 11:34:46 -07:00
],
proxy_opts: [
redirect_on_failure: false,
max_body_length: 25 * 1_048_576,
# Note: max_read_duration defaults to Pleroma.ReverseProxy.max_read_duration_default/1
max_read_duration: 30_000,
http: [
follow_redirect: true,
pool: :media
]
2019-04-25 16:11:47 -07:00
],
whitelist: []
2018-03-30 06:01:53 -07:00
2020-06-14 11:02:57 -07:00
config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http,
method: :purge,
headers: [],
options: []
config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Script,
script_path: nil,
url_format: nil
2020-06-14 11:02:57 -07:00
# Note: media preview proxy depends on media proxy to be enabled
config :pleroma, :media_preview_proxy,
enabled: false,
thumbnail_max_width: 600,
thumbnail_max_height: 600,
image_quality: 85,
min_content_length: 100 * 1024
config :pleroma, :shout,
enabled: true,
limit: 5_000
config :phoenix, :format_encoders, json: Jason, "activity+json": Jason
config :phoenix, :json_library, Jason
2020-02-27 20:27:50 -08:00
config :phoenix, :filter_parameters, ["password", "confirm"]
2018-03-31 08:51:33 -07:00
config :pleroma, :gopher,
enabled: false,
ip: {0, 0, 0, 0},
port: 9999
2019-04-19 00:50:21 -07:00
config :pleroma, Pleroma.Web.Metadata,
providers: [
Pleroma.Web.Metadata.Providers.OpenGraph,
Pleroma.Web.Metadata.Providers.TwitterCard
],
2019-04-19 00:50:21 -07:00
unfurl_nsfw: false
2020-05-12 08:08:00 -07:00
config :pleroma, Pleroma.Web.Preload,
providers: [
2020-07-06 03:25:25 -07:00
Pleroma.Web.Preload.Providers.Instance
2020-05-12 08:08:00 -07:00
]
2018-11-12 07:08:02 -08:00
config :pleroma, :http_security,
enabled: true,
sts: false,
sts_max_age: 31_536_000,
ct_max_age: 2_592_000,
referrer_policy: "same-origin"
2018-11-10 21:40:55 -08:00
config :cors_plug,
max_age: 86_400,
methods: ["POST", "PUT", "DELETE", "GET", "PATCH", "OPTIONS"],
expose: [
"Link",
"X-RateLimit-Reset",
"X-RateLimit-Limit",
"X-RateLimit-Remaining",
"X-Request-Id",
"Idempotency-Key"
],
credentials: true,
headers: ["Authorization", "Content-Type", "Idempotency-Key"]
config :pleroma, Pleroma.User,
restricted_nicknames: [
2019-01-09 16:06:03 -08:00
".well-known",
2018-12-26 05:16:41 -08:00
"~",
2019-01-09 16:06:03 -08:00
"about",
"activities",
"api",
2019-01-09 16:06:03 -08:00
"auth",
2019-05-20 15:18:59 -07:00
"check_password",
2019-01-09 16:06:03 -08:00
"dev",
"friend-requests",
"inbox",
"internal",
"main",
"media",
"nodeinfo",
"notice",
"oauth",
2019-01-09 16:06:03 -08:00
"objects",
"ostatus_subscribe",
"pleroma",
"proxy",
"push",
2019-01-09 16:06:03 -08:00
"registration",
"relay",
2019-01-09 16:06:03 -08:00
"settings",
"status",
"tag",
"user-search",
2019-05-20 15:18:59 -07:00
"user_exists",
2019-01-09 16:06:03 -08:00
"users",
"web",
"verify_credentials",
"update_credentials",
"relationships",
"search",
"confirmation_resend",
"mfa"
2020-08-02 12:53:42 -07:00
],
email_blacklist: []
config :pleroma, Oban,
repo: Pleroma.Repo,
2020-06-23 05:09:01 -07:00
log: false,
queues: [
activity_expiration: 10,
2020-09-05 08:35:01 -07:00
token_expiration: 5,
filter_expiration: 1,
2020-09-02 10:45:22 -07:00
backup: 1,
federator_incoming: 5,
federator_outgoing: 5,
ingestion_queue: 50,
web_push: 50,
mailer: 10,
transmogrifier: 20,
scheduled_activities: 10,
2021-07-17 18:35:35 -07:00
poll_notifications: 10,
2020-01-21 08:48:14 -08:00
background: 5,
remote_fetcher: 2,
attachments_cleanup: 1,
2020-09-08 03:26:44 -07:00
new_users_digest: 1,
2022-01-22 04:23:11 -08:00
mute_expire: 5,
RichMedia refactor Rich Media parsing was previously handled on-demand with a 2 second HTTP request timeout and retained only in Cachex. Every time a Pleroma instance is restarted it will have to request and parse the data for each status with a URL detected. When fetching a batch of statuses they were processed in parallel to attempt to keep the maximum latency at 2 seconds, but often resulted in a timeline appearing to hang during loading due to a URL that could not be successfully reached. URLs which had images links that expire (Amazon AWS) were parsed and inserted with a TTL to ensure the image link would not break. Rich Media data is now cached in the database and fetched asynchronously. Cachex is used as a read-through cache. When the data becomes available we stream an update to the clients. If the result is returned quickly the experience is almost seamless. Activities were already processed for their Rich Media data during ingestion to warm the cache, so users should not normally encounter the asynchronous loading of the Rich Media data. Implementation notes: - The async worker is a Task with a globally unique process name to prevent duplicate processing of the same URL - The Task will attempt to fetch the data 3 times with increasing sleep time between attempts - The HTTP request obeys the default HTTP request timeout value instead of 2 seconds - URLs that cannot be successfully parsed due to an unexpected error receives a negative cache entry for 15 minutes - URLs that fail with an expected error will receive a negative cache with no TTL - Activities that have no detected URLs insert a nil value in the Cachex :scrubber_cache so we do not repeat parsing the object content with Floki every time the activity is rendered - Expiring image URLs are handled with an Oban job - There is no automatic cleanup of the Rich Media data in the database, but it is safe to delete at any time - The post draft/preview feature makes the URL processing synchronous so the rendered post preview will have an accurate rendering Overall performance of timelines and creating new posts which contain URLs is greatly improved.
2024-02-11 13:11:52 -08:00
search_indexing: 10,
rich_media_expiration: 2
],
plugins: [Oban.Plugins.Pruner],
crontab: [
{"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker},
2020-02-11 11:33:05 -08:00
{"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker}
]
2019-01-28 07:17:17 -08:00
config :pleroma, :workers,
retries: [
federator_incoming: 5,
federator_outgoing: 5,
search_indexing: 2
]
config :pleroma, Pleroma.Formatter,
class: false,
rel: "ugc",
new_window: false,
truncate: false,
strip_prefix: false,
extra: true,
validate_tld: :no_scheme
2019-02-26 15:32:26 -08:00
2019-02-22 05:03:43 -08:00
config :pleroma, :ldap,
enabled: System.get_env("LDAP_ENABLED") == "true",
host: System.get_env("LDAP_HOST") || "localhost",
port: String.to_integer(System.get_env("LDAP_PORT") || "389"),
ssl: System.get_env("LDAP_SSL") == "true",
sslopts: [],
2019-03-12 09:20:02 -07:00
tls: System.get_env("LDAP_TLS") == "true",
tlsopts: [],
2019-02-22 05:03:43 -08:00
base: System.get_env("LDAP_BASE") || "dc=example,dc=com",
uid: System.get_env("LDAP_UID") || "cn"
oauth_consumer_strategies =
System.get_env("OAUTH_CONSUMER_STRATEGIES")
|> to_string()
|> String.split()
|> Enum.map(&hd(String.split(&1, ":")))
ueberauth_providers =
for strategy <- oauth_consumer_strategies do
strategy_module_name = "Elixir.Ueberauth.Strategy.#{String.capitalize(strategy)}"
strategy_module = String.to_atom(strategy_module_name)
{String.to_atom(strategy), {strategy_module, [callback_params: ["state"]]}}
end
2019-03-11 10:37:26 -07:00
config :ueberauth,
Ueberauth,
base_path: "/oauth",
providers: ueberauth_providers
config :pleroma, :auth, oauth_consumer_strategies: oauth_consumer_strategies
2019-03-11 10:37:26 -07:00
config :pleroma, Pleroma.Emails.Mailer, adapter: Swoosh.Adapters.Sendmail, enabled: false
config :pleroma, Pleroma.Emails.UserEmail,
logo: nil,
styling: %{
link_color: "#d8a070",
background_color: "#2C3645",
content_background_color: "#1B2635",
header_color: "#d8a070",
text_color: "#b9b9ba",
text_muted_color: "#b9b9ba"
}
2020-01-22 08:53:06 -08:00
config :pleroma, Pleroma.Emails.NewUsersDigestEmail, enabled: false
config :pleroma, Pleroma.PromEx,
disabled: false,
manual_metrics_start_delay: :no_delay,
drop_metrics_groups: [],
grafana: [
host: System.get_env("GRAFANA_HOST", "http://localhost:3000"),
auth_token: System.get_env("GRAFANA_TOKEN"),
upload_dashboards_on_start: false,
folder_name: "BEAM",
annotate_app_lifecycle: true
],
metrics_server: [
port: 4021,
path: "/metrics",
protocol: :http,
pool_size: 5,
cowboy_opts: [],
auth_strategy: :none
],
datasource: "Prometheus"
config :pleroma, Pleroma.ScheduledActivity,
daily_user_limit: 25,
total_user_limit: 300,
enabled: true
2019-04-17 02:59:05 -07:00
config :pleroma, :email_notifications,
digest: %{
2019-06-06 15:22:35 -07:00
active: false,
2019-04-17 02:59:05 -07:00
interval: 7,
inactivity_threshold: 7
}
config :pleroma, :oauth2,
token_expires_in: 3600 * 24 * 365 * 100,
issue_new_refresh_token: true,
clean_expired_tokens: false
config :pleroma, :database, rum_enabled: false
config :pleroma, :features, improved_hashtag_timeline: :auto
config :pleroma, :populate_hashtags_table, fault_rate_allowance: 0.01
config :pleroma, :delete_context_objects, fault_rate_allowance: 0.01
config :pleroma, :env, Mix.env()
config :http_signatures,
adapter: Pleroma.Signature
config :pleroma, :rate_limit,
authentication: {60_000, 15},
timeline: {500, 3},
search: [{1000, 10}, {1000, 30}],
app_account_creation: {1_800_000, 25},
relations_actions: {10_000, 10},
relation_id_action: {60_000, 2},
statuses_actions: {10_000, 15},
status_id_action: {60_000, 3},
password_reset: {1_800_000, 5},
account_confirmation_resend: {8_640_000, 5},
ap_routes: {60_000, 15}
2019-06-11 00:28:39 -07:00
config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600
2019-06-11 00:28:39 -07:00
2020-06-23 23:30:32 -07:00
config :pleroma, Pleroma.Web.Plugs.RemoteIp,
enabled: true,
headers: ["x-forwarded-for"],
proxies: [],
reserved: [
"127.0.0.0/8",
"::1/128",
"fc00::/7",
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
]
2019-09-27 14:59:23 -07:00
config :pleroma, :static_fe, enabled: false
# Example of frontend configuration
# This example will make us serve the primary frontend from the
# frontends directory within your `:pleroma, :instance, static_dir`.
# e.g., instance/static/frontends/pleroma/develop/
#
# With no frontend configuration, the bundled files from the `static` directory will
# be used.
#
# config :pleroma, :frontends,
# primary: %{"name" => "pleroma-fe", "ref" => "develop"},
# admin: %{"name" => "admin-fe", "ref" => "stable"},
2020-07-30 05:14:58 -07:00
# available: %{...}
config :pleroma, :frontends,
available: %{
"kenoma" => %{
"name" => "kenoma",
"git" => "https://git.pleroma.social/lambadalambda/kenoma",
"build_url" =>
"https://git.pleroma.social/lambadalambda/kenoma/-/jobs/artifacts/${ref}/download?job=build",
"ref" => "master"
},
"pleroma-fe" => %{
"name" => "pleroma-fe",
2020-07-30 05:14:58 -07:00
"git" => "https://git.pleroma.social/pleroma/pleroma-fe",
"build_url" =>
"https://git.pleroma.social/pleroma/pleroma-fe/-/jobs/artifacts/${ref}/download?job=build",
"ref" => "develop"
},
"fedi-fe" => %{
"name" => "fedi-fe",
"git" => "https://git.pleroma.social/pleroma/fedi-fe",
"build_url" =>
2022-08-24 22:39:02 -07:00
"https://git.pleroma.social/pleroma/fedi-fe/-/jobs/artifacts/${ref}/download?job=build_release",
"ref" => "master",
"custom-http-headers" => [
{"service-worker-allowed", "/"}
]
2020-07-30 05:14:58 -07:00
},
"admin-fe" => %{
"name" => "admin-fe",
"git" => "https://git.pleroma.social/pleroma/admin-fe",
"build_url" =>
"https://git.pleroma.social/pleroma/admin-fe/-/jobs/artifacts/${ref}/download?job=build",
"ref" => "develop"
},
"soapbox" => %{
"name" => "soapbox",
"git" => "https://gitlab.com/soapbox-pub/soapbox",
2020-07-30 05:14:58 -07:00
"build_url" =>
"https://gitlab.com/soapbox-pub/soapbox/-/jobs/artifacts/${ref}/download?job=build-production",
"ref" => "v3.0.0-beta.1",
2020-07-30 05:14:58 -07:00
"build_dir" => "static"
},
"glitch-lily" => %{
"name" => "glitch-lily",
"git" => "https://lily-is.land/infra/glitch-lily",
"build_url" =>
"https://lily-is.land/infra/glitch-lily/-/jobs/artifacts/${ref}/download?job=build",
"ref" => "servant",
"build_dir" => "public"
2020-07-30 05:14:58 -07:00
}
}
2019-09-09 11:53:08 -07:00
config :pleroma, :web_cache_ttl,
activity_pub: nil,
activity_pub_question: 30_000
config :pleroma, :modules, runtime_dir: "instance/modules"
config :pleroma, configurable_from_database: false
config :pleroma, Pleroma.Repo,
parameters: [gin_fuzzy_search_limit: "500", jit: "off"],
prepare: :unnamed
2020-03-01 22:22:34 -08:00
2020-02-10 23:12:57 -08:00
config :pleroma, :connections_pool,
reclaim_multiplier: 0.1,
2020-05-17 12:16:02 -07:00
connection_acquisition_wait: 250,
connection_acquisition_retries: 5,
2020-02-10 23:12:57 -08:00
max_connections: 250,
max_idle_time: 30_000,
retry: 0,
connect_timeout: 5_000
2020-02-10 23:12:57 -08:00
config :pleroma, :pools,
federation: [
size: 50,
max_waiting: 10,
recv_timeout: 10_000
2020-02-10 23:12:57 -08:00
],
media: [
size: 50,
max_waiting: 20,
recv_timeout: 15_000
2020-02-10 23:12:57 -08:00
],
upload: [
size: 25,
max_waiting: 5,
recv_timeout: 15_000
2020-02-10 23:12:57 -08:00
],
default: [
size: 10,
max_waiting: 2,
recv_timeout: 5_000
2020-02-10 23:12:57 -08:00
]
config :pleroma, :hackney_pools,
federation: [
max_connections: 50,
timeout: 150_000
],
media: [
max_connections: 50,
timeout: 150_000
],
upload: [
max_connections: 25,
timeout: 300_000
]
config :pleroma, :majic_pool, size: 2
2020-05-14 12:36:31 -07:00
private_instance? = :if_instance_is_private
2020-03-20 03:04:37 -07:00
config :pleroma, :restrict_unauthenticated,
timelines: %{local: private_instance?, federated: private_instance?},
profiles: %{local: private_instance?, remote: private_instance?},
activities: %{local: private_instance?, remote: private_instance?}
2020-03-20 03:04:37 -07:00
config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false
config :pleroma, :mrf,
2022-01-27 13:01:20 -08:00
policies: [
Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy,
Pleroma.Web.ActivityPub.MRF.TagPolicy,
Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy
],
transparency: true,
transparency_exclusions: []
config :tzdata, :http_client, Pleroma.HTTP.Tzdata
config :ex_aws, http_client: Pleroma.HTTP.ExAws
2020-10-01 03:32:11 -07:00
config :web_push_encryption, http_client: Pleroma.HTTP.WebPush
config :pleroma, :instances_favicons, enabled: false
2020-02-10 13:29:25 -08:00
config :floki, :html_parser, Floki.HTMLParser.FastHtml
config :pleroma, Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.PleromaAuthenticator
config :pleroma, Pleroma.User.Backup,
2020-09-04 07:30:39 -07:00
purge_after_days: 30,
2020-09-16 12:21:13 -07:00
limit_days: 7,
2022-12-23 21:17:17 -08:00
dir: nil,
process_wait_time: 30_000,
process_chunk_size: 100
2020-09-04 07:30:39 -07:00
config :pleroma, ConcurrentLimiter, [
{Pleroma.Web.RichMedia.Helpers, [max_running: 5, max_waiting: 5]},
{Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, [max_running: 5, max_waiting: 5]},
2021-10-28 14:38:00 -07:00
{Pleroma.Search, [max_running: 30, max_waiting: 50]}
]
2021-03-04 02:06:12 -08:00
config :pleroma, Pleroma.Web.WebFinger, domain: nil, update_nickname_on_user_fetch: true
config :pleroma, Pleroma.Search, module: Pleroma.Search.DatabaseSearch
2021-12-20 07:48:52 -08:00
config :pleroma, Pleroma.Search.Meilisearch,
url: "http://127.0.0.1:7700/",
private_key: nil,
initial_indexing_chunk_size: 100_000
2024-01-20 15:14:27 -08:00
config :pleroma, Pleroma.Application,
background_migrators: true,
internal_fetch: true,
load_custom_modules: true,
max_restarts: 3,
streamer_registry: true
2024-01-20 15:14:27 -08:00
config :pleroma, Pleroma.Uploaders.Uploader, timeout: 30_000
2024-05-14 03:13:37 -07:00
config :pleroma, Pleroma.Search.QdrantSearch,
qdrant_url: "http://127.0.0.1:6333/",
2024-05-19 01:17:46 -07:00
qdrant_api_key: "",
openai_url: "http://127.0.0.1:11345",
openai_model: "snowflake/snowflake-arctic-embed-xs",
2024-05-19 01:17:46 -07:00
openai_api_key: "",
2024-05-14 03:13:37 -07:00
qdrant_index_configuration: %{
vectors: %{size: 384, distance: "Cosine"}
}
2017-03-17 09:09:58 -07:00
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
2018-03-30 06:01:53 -07:00
import_config "#{Mix.env()}.exs"