2019-04-15 07:45:15 -06:00
|
|
|
# .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 10:09:58 -06:00
|
|
|
# This file is responsible for configuring your application
|
|
|
|
# and its dependencies with the aid of the Mix.Config module.
|
|
|
|
#
|
|
|
|
# This configuration file is loaded before any dependency and
|
|
|
|
# is restricted to this project.
|
2021-05-20 12:55:37 -06:00
|
|
|
import Config
|
2017-03-17 10:09:58 -06:00
|
|
|
|
|
|
|
# General application configuration
|
2018-03-30 07:01:53 -06:00
|
|
|
config :pleroma, ecto_repos: [Pleroma.Repo]
|
2017-03-17 10:09:58 -06:00
|
|
|
|
2019-01-30 08:32:30 -07:00
|
|
|
config :pleroma, Pleroma.Repo,
|
2019-05-17 03:30:35 -06:00
|
|
|
telemetry_event: [Pleroma.Repo.Instrumenter],
|
2022-09-16 07:23:31 -06:00
|
|
|
queue_target: 20_000,
|
2019-05-17 03:30:35 -06:00
|
|
|
migration_lock: nil
|
2019-01-30 08:32:30 -07:00
|
|
|
|
2018-12-14 15:31:19 -07:00
|
|
|
config :pleroma, Pleroma.Captcha,
|
2019-12-11 08:29:31 -07:00
|
|
|
enabled: true,
|
2020-01-09 14:45:46 -07:00
|
|
|
seconds_valid: 300,
|
2019-12-11 08:29:31 -07:00
|
|
|
method: Pleroma.Captcha.Native
|
2018-12-14 15:31:19 -07:00
|
|
|
|
2019-12-16 05:35:10 -07:00
|
|
|
config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
|
|
|
|
|
2018-11-29 13:11:45 -07:00
|
|
|
# Upload configuration
|
2018-06-26 14:49:57 -06:00
|
|
|
config :pleroma, Pleroma.Upload,
|
2018-08-27 19:45:53 -06:00
|
|
|
uploader: Pleroma.Uploaders.Local,
|
2024-03-04 10:39:08 -07:00
|
|
|
filters: [],
|
2019-11-10 05:02:47 -07:00
|
|
|
link_name: false,
|
2018-11-23 09:40:45 -07:00
|
|
|
proxy_remote: false,
|
2020-08-18 05:21:30 -06:00
|
|
|
filename_display_max_length: 30,
|
Sanitise Content-Type of uploads
The lack thereof enables spoofing ActivityPub objects.
A malicious user could upload fake activities as attachments
and (if having access to remote search) trick local and remote
fedi instances into fetching and processing it as a valid object.
If uploads are hosted on the same domain as the instance itself,
it is possible for anyone with upload access to impersonate(!)
other users of the same instance.
If uploads are exclusively hosted on a different domain, even the most
basic check of domain of the object id and fetch url matching should
prevent impersonation. However, it may still be possible to trick
servers into accepting bogus users on the upload (sub)domain and bogus
notes attributed to such users.
Instances which later migrated to a different domain and have a
permissive redirect rule in place can still be vulnerable.
If — like Akkoma — the fetching server is overly permissive with
redirects, impersonation still works.
This was possible because Plug.Static also uses our custom
MIME type mappings used for actually authentic AP objects.
Provided external storage providers don’t somehow return ActivityStream
Content-Types on their own, instances using those are also safe against
their users being spoofed via uploads.
Akkoma instances using the OnlyMedia upload filter
cannot be exploited as a vector in this way — IF the
fetching server validates the Content-Type of
fetched objects (Akkoma itself does this already).
However, restricting uploads to only multimedia files may be a bit too
heavy-handed. Instead this commit will restrict the returned
Content-Type headers for user uploaded files to a safe subset, falling
back to generic 'application/octet-stream' for anything else.
This will also protect against non-AP payloads as e.g. used in
past frontend code injection attacks.
It’s a slight regression in user comfort, if say PDFs are uploaded,
but this trade-off seems fairly acceptable.
(Note, just excluding our own custom types would offer no protection
against non-AP payloads and bear a (perhaps small) risk of a silent
regression should MIME ever decide to add a canonical extension for
ActivityPub objects)
Now, one might expect there to be other defence mechanisms
besides Content-Type preventing counterfeits from being accepted,
like e.g. validation of the queried URL and AP ID matching.
Inserting a self-reference into our uploads is hard, but unfortunately
*oma does not verify the id in such a way and happily accepts _anything_
from the same domain (without even considering redirects).
E.g. Sharkey (and possibly other *keys) seem to attempt to guard
against this by immediately refetching the object from its ID, but
this is easily circumvented by just uploading two payloads with the
ID of one linking to the other.
Unfortunately *oma is thus _both_ a vector for spoofing and
vulnerable to those spoof payloads, resulting in an easy way
to impersonate our users.
Similar flaws exists for emoji and media proxy.
Subsequent commits will fix this by rigorously sanitising
content types in more areas, hardening our checks, improving
the default config and discouraging insecure config options.
2024-03-04 09:50:21 -07:00
|
|
|
base_url: nil,
|
|
|
|
allowed_mime_types: ["image", "audio", "video"]
|
2018-11-29 13:11:45 -07:00
|
|
|
|
2018-11-23 09:40:45 -07:00
|
|
|
config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
|
2018-08-27 19:20:54 -06:00
|
|
|
|
2018-08-30 22:43:15 -06:00
|
|
|
config :pleroma, Pleroma.Uploaders.S3,
|
|
|
|
bucket: nil,
|
2021-01-12 15:31:35 -07:00
|
|
|
bucket_namespace: nil,
|
2021-01-13 10:54:00 -07:00
|
|
|
truncated_namespace: nil,
|
2021-01-12 15:31:35 -07:00
|
|
|
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 15:39:39 -07:00
|
|
|
# region: "us-east-1", # may be required for Amazon AWS
|
2021-01-12 15:31:35 -07:00
|
|
|
scheme: "https://"
|
2017-03-28 17:39:01 -06:00
|
|
|
|
2019-04-01 04:17:57 -06:00
|
|
|
config :pleroma, :emoji,
|
|
|
|
shortcode_globs: ["/emoji/custom/**/*.png"],
|
2019-06-25 21:48:59 -06:00
|
|
|
pack_extensions: [".png", ".gif"],
|
2019-04-02 02:44:56 -06:00
|
|
|
groups: [
|
2019-04-20 06:34:45 -06:00
|
|
|
Custom: ["/emoji/*.png", "/emoji/**/*.png"]
|
2019-04-18 11:48:57 -06:00
|
|
|
],
|
2019-08-12 04:13:01 -06:00
|
|
|
default_manifest: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json",
|
|
|
|
shared_pack_cache_seconds_per_file: 60
|
2018-06-30 15:20:08 -06:00
|
|
|
|
2018-10-17 23:36:58 -06:00
|
|
|
config :pleroma, :uri_schemes,
|
|
|
|
valid_schemes: [
|
|
|
|
"https",
|
|
|
|
"http",
|
|
|
|
"dat",
|
|
|
|
"dweb",
|
2022-06-29 05:12:48 -06:00
|
|
|
"gopher",
|
2020-07-07 01:05:54 -06:00
|
|
|
"hyper",
|
2018-10-17 23:36:58 -06:00
|
|
|
"ipfs",
|
|
|
|
"ipns",
|
|
|
|
"irc",
|
|
|
|
"ircs",
|
|
|
|
"magnet",
|
|
|
|
"mailto",
|
|
|
|
"mumble",
|
|
|
|
"ssb",
|
|
|
|
"xmpp"
|
|
|
|
]
|
2018-07-30 13:59:04 -06:00
|
|
|
|
2017-03-17 10:09:58 -06:00
|
|
|
# Configures the endpoint
|
|
|
|
config :pleroma, Pleroma.Web.Endpoint,
|
|
|
|
url: [host: "localhost"],
|
2018-12-17 06:39:59 -07:00
|
|
|
http: [
|
2019-06-23 00:31:39 -06:00
|
|
|
ip: {127, 0, 0, 1},
|
2018-12-17 06:39:59 -07:00
|
|
|
dispatch: [
|
|
|
|
{:_,
|
|
|
|
[
|
2019-02-28 08:43:38 -07:00
|
|
|
{"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []},
|
2023-08-15 04:22:18 -06:00
|
|
|
{:_, Plug.Cowboy.Handler, {Pleroma.Web.Endpoint, []}}
|
2018-12-17 06:39:59 -07:00
|
|
|
]}
|
|
|
|
]
|
|
|
|
],
|
2017-03-28 18:05:51 -06:00
|
|
|
protocol: "https",
|
2017-03-17 10:09:58 -06:00
|
|
|
secret_key_base: "aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl",
|
2021-12-15 14:17:11 -07:00
|
|
|
live_view: [signing_salt: "U5ELgdEwTD3n1+D5s0rY0AMg8/y1STxZ3Zvsl3bWh+oBcGrYdil0rXqPMRd3Glcq"],
|
2018-11-16 13:35:08 -07:00
|
|
|
signing_salt: "CqaoopA2",
|
2017-03-17 10:09:58 -06:00
|
|
|
render_errors: [view: Pleroma.Web.ErrorView, accepts: ~w(json)],
|
2020-10-07 09:34:24 -06:00
|
|
|
pubsub_server: Pleroma.PubSub,
|
2019-04-14 22:31:37 -06:00
|
|
|
secure_cookie_flag: true,
|
|
|
|
extra_cookie_attrs: [
|
|
|
|
"SameSite=Lax"
|
|
|
|
]
|
2017-03-17 10:09:58 -06:00
|
|
|
|
|
|
|
# Configures Elixir's Logger
|
2022-06-29 05:12:48 -06:00
|
|
|
config :logger, truncate: 65_536
|
2021-12-26 12:49:00 -07:00
|
|
|
|
2017-03-17 10:09:58 -06:00
|
|
|
config :logger, :console,
|
2022-06-11 09:14:22 -06:00
|
|
|
level: :info,
|
2019-11-20 10:18:42 -07:00
|
|
|
format: "\n$time $metadata[$level] $message\n",
|
2017-03-17 10:09:58 -06:00
|
|
|
metadata: [:request_id]
|
|
|
|
|
2019-01-02 15:07:48 -07:00
|
|
|
config :logger, :ex_syslogger,
|
2022-06-11 09:14:22 -06:00
|
|
|
level: :info,
|
2019-06-27 12:00:22 -06:00
|
|
|
ident: "pleroma",
|
2019-02-06 10:34:09 -07:00
|
|
|
format: "$metadata[$level] $message",
|
2019-01-02 15:07:48 -07:00
|
|
|
metadata: [:request_id]
|
|
|
|
|
2024-03-06 19:02:32 -07:00
|
|
|
# ———————————————————————————————————————————————————————————————
|
|
|
|
# W A R N I N G
|
|
|
|
# ———————————————————————————————————————————————————————————————
|
|
|
|
#
|
|
|
|
# Whenever adding a privileged new custom type for e.g.
|
|
|
|
# ActivityPub objects, ALWAYS map their extension back
|
|
|
|
# to "application/octet-stream".
|
|
|
|
# Else files served by us can automatically end up with
|
|
|
|
# those privileged types causing severe security hazards.
|
|
|
|
# (We need those mappings so Phoenix can assoiate its format
|
|
|
|
# (the "extension") to incoming requests of those MIME types)
|
|
|
|
#
|
|
|
|
# ———————————————————————————————————————————————————————————————
|
2017-04-17 05:44:41 -06:00
|
|
|
config :mime, :types, %{
|
2018-06-17 22:57:59 -06:00
|
|
|
"application/xml" => ["xml"],
|
2017-12-11 02:37:22 -07:00
|
|
|
"application/xrd+xml" => ["xrd+xml"],
|
2018-12-15 07:58:51 -07:00
|
|
|
"application/jrd+json" => ["jrd+json"],
|
2018-04-01 06:58:01 -06:00
|
|
|
"application/activity+json" => ["activity+json"],
|
2024-03-26 10:44:44 -06:00
|
|
|
"application/ld+json" => ["activity+json"],
|
|
|
|
# Can be removed when bumping MIME past 2.0.5
|
|
|
|
# see https://akkoma.dev/AkkomaGang/akkoma/issues/657
|
|
|
|
"image/apng" => ["apng"]
|
2017-04-17 05:44:41 -06:00
|
|
|
}
|
|
|
|
|
2023-08-06 21:07:42 -06:00
|
|
|
config :mime, :extensions, %{
|
2024-03-06 19:02:32 -07:00
|
|
|
"xrd+xml" => "text/plain",
|
|
|
|
"jrd+json" => "text/plain",
|
|
|
|
"activity+json" => "text/plain"
|
2023-08-06 21:07:42 -06:00
|
|
|
}
|
|
|
|
|
2024-03-06 19:02:32 -07:00
|
|
|
# ———————————————————————————————————————————————————————————————
|
|
|
|
|
2022-07-04 10:30:38 -06:00
|
|
|
config :tesla, :adapter, {Tesla.Adapter.Finch, name: MyFinch}
|
2020-06-01 05:35:39 -06:00
|
|
|
|
2017-12-30 11:02:51 -07:00
|
|
|
# Configures http settings, upstream proxy etc.
|
2019-03-03 10:33:02 -07:00
|
|
|
config :pleroma, :http,
|
2022-11-24 05:27:16 -07:00
|
|
|
pool_timeout: :timer.seconds(5),
|
|
|
|
receive_timeout: :timer.seconds(15),
|
2019-03-03 10:33:02 -07:00
|
|
|
proxy_url: nil,
|
2019-11-25 02:53:11 -07:00
|
|
|
user_agent: :default,
|
2022-12-16 11:33:00 -07:00
|
|
|
pool_size: 50,
|
2020-02-11 00:12:57 -07:00
|
|
|
adapter: []
|
2017-12-30 09:35:53 -07:00
|
|
|
|
2017-09-15 02:26:28 -06:00
|
|
|
config :pleroma, :instance,
|
2022-11-01 14:52:17 -06:00
|
|
|
name: "Akkoma",
|
2017-09-15 06:17:36 -06:00
|
|
|
email: "example@example.com",
|
2019-04-10 04:57:41 -06:00
|
|
|
notify_email: "noreply@example.com",
|
2022-06-29 05:12:48 -06:00
|
|
|
description: "Akkoma: The cooler fediverse server",
|
2020-05-18 05:28:50 -06:00
|
|
|
background_image: "/images/city.jpg",
|
2020-06-22 16:35:02 -06:00
|
|
|
instance_thumbnail: "/instance/thumbnail.jpeg",
|
2018-12-26 04:39:35 -07:00
|
|
|
limit: 5_000,
|
2020-07-06 03:08:13 -06:00
|
|
|
description_limit: 5_000,
|
2018-12-28 11:57:50 -07:00
|
|
|
remote_limit: 100_000,
|
2018-03-31 17:43:03 -06:00
|
|
|
upload_limit: 16_000_000,
|
2018-10-29 10:30:12 -06:00
|
|
|
avatar_upload_limit: 2_000_000,
|
|
|
|
background_upload_limit: 4_000_000,
|
|
|
|
banner_upload_limit: 4_000_000,
|
2022-08-25 10:11:21 -06:00
|
|
|
languages: ["en"],
|
2019-05-21 00:13:10 -06:00
|
|
|
poll_limits: %{
|
|
|
|
max_options: 20,
|
|
|
|
max_option_chars: 200,
|
|
|
|
min_expiration: 0,
|
|
|
|
max_expiration: 365 * 24 * 60 * 60
|
|
|
|
},
|
2018-03-05 01:26:24 -07:00
|
|
|
registrations_open: true,
|
2020-02-22 08:29:05 -07:00
|
|
|
invites_enabled: false,
|
|
|
|
account_activation_required: false,
|
2020-07-12 19:14:57 -06:00
|
|
|
account_approval_required: false,
|
2018-04-14 03:20:18 -06:00
|
|
|
federating: true,
|
2019-06-30 06:58:50 -06:00
|
|
|
federation_incoming_replies_max_depth: 100,
|
2019-01-28 05:25:06 -07:00
|
|
|
federation_reachability_timeout_days: 7,
|
2019-05-11 21:55:17 -06:00
|
|
|
federation_publisher_modules: [
|
2019-10-17 16:31:20 -06:00
|
|
|
Pleroma.Web.ActivityPub.Publisher
|
2019-05-11 21:55:17 -06:00
|
|
|
],
|
2022-11-24 17:45:32 -07:00
|
|
|
allow_relay: false,
|
2018-06-06 21:26:41 -06:00
|
|
|
public: true,
|
2018-12-17 14:50:59 -07:00
|
|
|
static_dir: "instance/static/",
|
2018-10-05 15:02:17 -06:00
|
|
|
allowed_post_formats: [
|
|
|
|
"text/plain",
|
|
|
|
"text/html",
|
2019-04-26 04:17:57 -06:00
|
|
|
"text/markdown",
|
2022-06-14 08:56:12 -06:00
|
|
|
"text/bbcode",
|
|
|
|
"text/x.misskeymarkdown"
|
2018-10-06 19:23:38 -06:00
|
|
|
],
|
2020-01-16 09:13:51 -07:00
|
|
|
staff_transparency: [],
|
2019-01-09 03:02:30 -07:00
|
|
|
autofollowed_nicknames: [],
|
2020-10-16 11:32:05 -06:00
|
|
|
autofollowing_nicknames: [],
|
2019-01-17 08:50:34 -07:00
|
|
|
max_pinned_statuses: 1,
|
2020-02-11 14:39:19 -07:00
|
|
|
attachment_links: false,
|
2019-03-20 14:09:36 -06:00
|
|
|
max_report_comment_size: 1000,
|
2019-04-22 04:00:06 -06:00
|
|
|
safe_dm_mentions: false,
|
2019-05-20 19:21:28 -06:00
|
|
|
healthcheck: false,
|
2019-06-03 07:04:39 -06:00
|
|
|
remote_post_retention_days: 90,
|
2019-06-07 06:28:14 -06:00
|
|
|
skip_thread_containment: true,
|
2019-06-14 09:45:05 -06:00
|
|
|
limit_to_local_content: :unauthenticated,
|
2019-08-01 02:53:37 -06:00
|
|
|
user_bio_length: 5000,
|
|
|
|
user_name_length: 100,
|
2019-08-08 00:20:35 -06:00
|
|
|
max_account_fields: 10,
|
|
|
|
max_remote_account_fields: 20,
|
2019-08-23 15:28:52 -06:00
|
|
|
account_field_name_length: 512,
|
2019-09-16 08:48:01 -06:00
|
|
|
account_field_value_length: 2048,
|
2020-07-27 14:13:34 -06:00
|
|
|
registration_reason_length: 500,
|
2019-10-03 09:40:49 -06:00
|
|
|
external_user_synchronization: true,
|
2020-01-30 15:20:37 -07:00
|
|
|
extended_nickname_format: true,
|
2020-05-07 02:14:54 -06:00
|
|
|
cleanup_attachments: false,
|
|
|
|
multi_factor_authentication: [
|
|
|
|
totp: [
|
|
|
|
# digits 6 or 8
|
|
|
|
digits: 6,
|
|
|
|
period: 30
|
|
|
|
],
|
|
|
|
backup_codes: [
|
|
|
|
number: 5,
|
|
|
|
length: 16
|
|
|
|
]
|
2020-07-28 13:49:49 -06:00
|
|
|
],
|
2020-11-19 04:27:06 -07:00
|
|
|
show_reactions: true,
|
2021-12-25 19:35:17 -07:00
|
|
|
password_reset_token_validity: 60 * 60 * 24,
|
2021-12-26 16:27:48 -07:00
|
|
|
profile_directory: true,
|
2022-07-22 08:55:38 -06:00
|
|
|
privileged_staff: false,
|
2022-10-06 10:22:15 -06:00
|
|
|
local_bubble: [],
|
2022-12-16 04:17:04 -07:00
|
|
|
max_frontend_settings_json_chars: 100_000,
|
2023-03-17 09:33:28 -06:00
|
|
|
export_prometheus_metrics: true,
|
|
|
|
federated_timeline_available: true
|
2017-09-15 02:26:28 -06:00
|
|
|
|
2020-07-21 00:25:53 -06:00
|
|
|
config :pleroma, :welcome,
|
|
|
|
direct_message: [
|
|
|
|
enabled: false,
|
|
|
|
sender_nickname: nil,
|
|
|
|
message: nil
|
|
|
|
],
|
|
|
|
email: [
|
|
|
|
enabled: false,
|
2020-07-22 06:34:47 -06:00
|
|
|
sender: nil,
|
2020-07-21 00:25:53 -06:00
|
|
|
subject: "Welcome to <%= instance_name %>",
|
|
|
|
html: "Welcome to <%= instance_name %>",
|
|
|
|
text: "Welcome to <%= instance_name %>"
|
2020-05-07 02:14:54 -06:00
|
|
|
]
|
2017-09-15 02:26:28 -06:00
|
|
|
|
2019-11-07 23:23:24 -07:00
|
|
|
config :pleroma, :feed,
|
|
|
|
post_title: %{
|
|
|
|
max_length: 100,
|
2019-11-10 04:02:34 -07:00
|
|
|
omission: "..."
|
2019-11-07 23:23:24 -07:00
|
|
|
}
|
|
|
|
|
2018-09-09 17:29:00 -06:00
|
|
|
config :pleroma, :markup,
|
2018-09-09 18:23:23 -06:00
|
|
|
# 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,
|
2018-09-09 18:05:26 -06:00
|
|
|
allow_headings: false,
|
|
|
|
allow_tables: false,
|
|
|
|
allow_fonts: false,
|
2018-09-15 20:13:54 -06:00
|
|
|
scrub_policy: [
|
2019-10-28 16:15:28 -06:00
|
|
|
Pleroma.HTML.Scrubber.Default,
|
|
|
|
Pleroma.HTML.Transform.MediaProxy
|
2018-09-15 20:13:54 -06:00
|
|
|
]
|
2018-09-09 17:29:00 -06:00
|
|
|
|
2019-01-23 04:40:57 -07:00
|
|
|
config :pleroma, :frontend_configurations,
|
|
|
|
pleroma_fe: %{
|
2020-05-19 15:05:39 -06:00
|
|
|
alwaysShowSubjectInput: true,
|
2019-01-28 05:04:51 -07:00
|
|
|
background: "/images/city.jpg",
|
2019-01-23 04:40:57 -07:00
|
|
|
collapseMessageWithSubject: false,
|
2020-05-19 15:05:39 -06:00
|
|
|
greentext: false,
|
|
|
|
hideFilteredStatuses: false,
|
|
|
|
hideMutedPosts: false,
|
2019-01-23 04:40:57 -07:00
|
|
|
hidePostStats: false,
|
2020-05-19 15:05:39 -06:00
|
|
|
hideSitename: false,
|
2019-01-23 04:40:57 -07:00
|
|
|
hideUserStats: false,
|
2020-05-19 15:05:39 -06:00
|
|
|
loginMethod: "password",
|
2020-12-12 07:30:08 -07:00
|
|
|
logo: "/static/logo.svg",
|
2020-05-19 15:05:39 -06:00
|
|
|
logoMargin: ".1em",
|
|
|
|
logoMask: true,
|
|
|
|
noAttachmentLinks: false,
|
|
|
|
nsfwCensorImage: "",
|
|
|
|
postContentType: "text/plain",
|
|
|
|
redirectRootLogin: "/main/friends",
|
2022-11-13 01:43:12 -07:00
|
|
|
redirectRootNoLogin: "/main/public",
|
2019-01-23 04:40:57 -07:00
|
|
|
scopeCopy: true,
|
2020-05-20 11:22:31 -06:00
|
|
|
sidebarRight: false,
|
2020-05-19 15:05:39 -06:00
|
|
|
showFeaturesPanel: true,
|
|
|
|
showInstanceSpecificPanel: false,
|
2019-01-23 04:40:57 -07:00
|
|
|
subjectLineBehavior: "email",
|
2020-05-19 15:05:39 -06:00
|
|
|
theme: "pleroma-dark",
|
2022-11-20 15:21:56 -07:00
|
|
|
webPushNotifications: false,
|
|
|
|
conversationDisplay: "linear"
|
2022-01-08 14:44:37 -07:00
|
|
|
},
|
|
|
|
masto_fe: %{
|
|
|
|
showInstanceSpecificPanel: true
|
2019-01-23 04:40:57 -07:00
|
|
|
}
|
|
|
|
|
2019-05-20 09:12:55 -06: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 06:48:01 -06:00
|
|
|
config :pleroma, :manifest,
|
|
|
|
icons: [
|
|
|
|
%{
|
2020-12-12 07:30:08 -07:00
|
|
|
src: "/static/logo.svg",
|
|
|
|
type: "image/svg+xml"
|
2019-10-11 06:48:01 -06:00
|
|
|
}
|
|
|
|
],
|
|
|
|
theme_color: "#282c37",
|
|
|
|
background_color: "#191b22"
|
|
|
|
|
2018-06-08 18:12:16 -06:00
|
|
|
config :pleroma, :activitypub,
|
|
|
|
unfollow_blocked: true,
|
2023-01-26 22:41:27 -07:00
|
|
|
outgoing_blocks: false,
|
2020-10-10 00:29:41 -06:00
|
|
|
blockers_visible: true,
|
2019-07-17 15:38:06 -06:00
|
|
|
follow_handshake_timeout: 500,
|
2020-02-08 09:58:02 -07:00
|
|
|
note_replies_output_limit: 5,
|
2019-12-16 08:24:03 -07:00
|
|
|
sign_object_fetches: true,
|
2022-07-03 12:20:59 -06:00
|
|
|
authorized_fetch_mode: false,
|
|
|
|
max_collection_objects: 50
|
2018-05-26 02:24:50 -06:00
|
|
|
|
2019-09-16 04:03:37 -06:00
|
|
|
config :pleroma, :streamer,
|
|
|
|
workers: 3,
|
|
|
|
overflow_workers: 2
|
|
|
|
|
2018-06-08 22:28:11 -06:00
|
|
|
config :pleroma, :user, deny_follow_blocked: true
|
2018-05-26 02:24:50 -06:00
|
|
|
|
2018-09-09 18:48:28 -06:00
|
|
|
config :pleroma, :mrf_normalize_markup, scrub_policy: Pleroma.HTML.Scrubber.Default
|
|
|
|
|
2018-06-10 17:40:51 -06:00
|
|
|
config :pleroma, :mrf_rejectnonpublic,
|
|
|
|
allow_followersonly: false,
|
|
|
|
allow_direct: false
|
|
|
|
|
2019-02-03 12:12:23 -07:00
|
|
|
config :pleroma, :mrf_hellthread,
|
2019-02-15 04:47:50 -07:00
|
|
|
delist_threshold: 10,
|
|
|
|
reject_threshold: 20
|
2018-12-22 15:18:31 -07:00
|
|
|
|
2018-04-14 05:31:12 -06:00
|
|
|
config :pleroma, :mrf_simple,
|
|
|
|
media_removal: [],
|
|
|
|
media_nsfw: [],
|
|
|
|
federated_timeline_removal: [],
|
2019-05-19 16:02:50 -06:00
|
|
|
report_removal: [],
|
2018-06-19 15:23:37 -06:00
|
|
|
reject: [],
|
2020-08-01 15:08:29 -06:00
|
|
|
followers_only: [],
|
2019-05-21 22:55:16 -06:00
|
|
|
accept: [],
|
|
|
|
avatar_removal: [],
|
2020-04-13 12:48:32 -06:00
|
|
|
banner_removal: [],
|
2024-02-16 18:59:50 -07:00
|
|
|
background_removal: [],
|
2022-12-09 12:57:29 -07:00
|
|
|
reject_deletes: [],
|
|
|
|
handle_threads: true
|
2019-01-31 08:18:20 -07:00
|
|
|
|
2019-02-08 02:48:39 -07:00
|
|
|
config :pleroma, :mrf_keyword,
|
|
|
|
reject: [],
|
2019-02-08 03:12:09 -07:00
|
|
|
federated_timeline_removal: [],
|
2019-02-08 02:48:39 -07:00
|
|
|
replace: []
|
|
|
|
|
2020-12-28 15:21:53 -07:00
|
|
|
config :pleroma, :mrf_hashtag,
|
|
|
|
sensitive: ["nsfw"],
|
|
|
|
reject: [],
|
|
|
|
federated_timeline_removal: []
|
|
|
|
|
2019-06-02 04:29:15 -06:00
|
|
|
config :pleroma, :mrf_subchain, match_actor: %{}
|
2019-06-02 03:50:16 -06:00
|
|
|
|
2020-02-11 02:53:24 -07:00
|
|
|
config :pleroma, :mrf_activity_expiration, days: 365
|
|
|
|
|
2019-08-13 14:28:59 -06:00
|
|
|
config :pleroma, :mrf_vocabulary,
|
|
|
|
accept: [],
|
|
|
|
reject: []
|
|
|
|
|
2022-07-25 10:30:06 -06:00
|
|
|
config :pleroma, :mrf_inline_quote, prefix: "RE"
|
|
|
|
|
2020-07-30 10:49:48 -06:00
|
|
|
# threshold of 7 days
|
2019-11-14 17:26:06 -07:00
|
|
|
config :pleroma, :mrf_object_age,
|
2020-07-30 10:49:48 -06:00
|
|
|
threshold: 604_800,
|
2019-11-14 17:26:06 -07:00
|
|
|
actions: [:delist, :strip_followers]
|
|
|
|
|
2023-05-23 06:16:20 -06:00
|
|
|
config :pleroma, :mrf_reject_newly_created_account_notes, age: 86_400
|
|
|
|
|
2019-06-25 13:25:37 -06:00
|
|
|
config :pleroma, :rich_media,
|
|
|
|
enabled: true,
|
|
|
|
ignore_hosts: [],
|
2019-07-11 07:04:42 -06:00
|
|
|
ignore_tld: ["local", "localdomain", "lan"],
|
|
|
|
parsers: [
|
|
|
|
Pleroma.Web.RichMedia.Parsers.TwitterCard,
|
|
|
|
Pleroma.Web.RichMedia.Parsers.OEmbed
|
2019-07-16 10:52:36 -06:00
|
|
|
],
|
2022-12-16 10:31:04 -07:00
|
|
|
failure_backoff: :timer.minutes(20),
|
2019-07-16 10:52:36 -06:00
|
|
|
ttl_setters: [Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl]
|
2018-04-14 05:31:12 -06:00
|
|
|
|
2019-01-30 04:38:38 -07:00
|
|
|
config :pleroma, :media_proxy,
|
|
|
|
enabled: false,
|
2020-05-15 12:34:46 -06:00
|
|
|
invalidation: [
|
|
|
|
enabled: false,
|
2020-05-17 21:48:19 -06:00
|
|
|
provider: Pleroma.Web.MediaProxy.Invalidation.Script
|
2020-05-15 12:34:46 -06:00
|
|
|
],
|
2019-01-30 04:38:38 -07:00
|
|
|
proxy_opts: [
|
|
|
|
redirect_on_failure: false,
|
|
|
|
max_body_length: 25 * 1_048_576,
|
2020-05-11 14:21:53 -06:00
|
|
|
# Note: max_read_duration defaults to Pleroma.ReverseProxy.max_read_duration_default/1
|
2022-07-04 10:30:38 -06:00
|
|
|
max_read_duration: 30_000
|
2019-04-25 17:11:47 -06:00
|
|
|
],
|
2023-06-26 07:18:31 -06:00
|
|
|
whitelist: [],
|
|
|
|
blocklist: []
|
2018-03-30 07:01:53 -06:00
|
|
|
|
2020-06-14 12:02:57 -06:00
|
|
|
config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http,
|
|
|
|
method: :purge,
|
|
|
|
headers: [],
|
|
|
|
options: []
|
|
|
|
|
2021-01-21 13:20:13 -07:00
|
|
|
config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Script,
|
|
|
|
script_path: nil,
|
|
|
|
url_format: nil
|
2020-06-14 12:02:57 -06:00
|
|
|
|
2020-05-11 14:21:53 -06:00
|
|
|
# Note: media preview proxy depends on media proxy to be enabled
|
2020-05-08 14:06:47 -06:00
|
|
|
config :pleroma, :media_preview_proxy,
|
|
|
|
enabled: false,
|
2020-08-20 23:59:08 -06:00
|
|
|
thumbnail_max_width: 600,
|
|
|
|
thumbnail_max_height: 600,
|
2020-09-17 08:13:40 -06:00
|
|
|
image_quality: 85,
|
|
|
|
min_content_length: 100 * 1024
|
2020-05-08 14:06:47 -06:00
|
|
|
|
2021-07-27 07:28:52 -06:00
|
|
|
config :phoenix, :format_encoders, json: Jason, "activity+json": Jason
|
2018-03-27 08:09:08 -06:00
|
|
|
|
2019-09-11 14:04:01 -06:00
|
|
|
config :phoenix, :json_library, Jason
|
|
|
|
|
2020-02-27 21:27:50 -07:00
|
|
|
config :phoenix, :filter_parameters, ["password", "confirm"]
|
|
|
|
|
2019-04-19 01:50:21 -06:00
|
|
|
config :pleroma, Pleroma.Web.Metadata,
|
2019-07-08 04:00:45 -06:00
|
|
|
providers: [
|
|
|
|
Pleroma.Web.Metadata.Providers.OpenGraph,
|
2020-08-31 13:48:22 -06:00
|
|
|
Pleroma.Web.Metadata.Providers.TwitterCard
|
2019-07-08 04:00:45 -06:00
|
|
|
],
|
2019-04-19 01:50:21 -06:00
|
|
|
unfurl_nsfw: false
|
2018-12-12 12:37:00 -07:00
|
|
|
|
2022-07-06 14:00:43 -06:00
|
|
|
config :pleroma, Pleroma.Web.Metadata.Providers.Theme, theme_color: "#593196"
|
|
|
|
|
2020-05-12 09:08:00 -06:00
|
|
|
config :pleroma, Pleroma.Web.Preload,
|
|
|
|
providers: [
|
2020-07-06 04:25:25 -06:00
|
|
|
Pleroma.Web.Preload.Providers.Instance
|
2020-05-12 09:08:00 -06:00
|
|
|
]
|
|
|
|
|
2018-11-12 08:08:02 -07:00
|
|
|
config :pleroma, :http_security,
|
2018-11-10 23:37:18 -07:00
|
|
|
enabled: true,
|
|
|
|
sts: false,
|
2022-11-20 14:20:06 -07:00
|
|
|
sts_max_age: 63_072_000,
|
2018-11-12 08:14:46 -07:00
|
|
|
referrer_policy: "same-origin"
|
2018-11-10 23:37:18 -07:00
|
|
|
|
2018-11-10 22:40:55 -07: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"]
|
|
|
|
|
2018-12-25 12:09:27 -07:00
|
|
|
config :pleroma, Pleroma.User,
|
|
|
|
restricted_nicknames: [
|
2019-01-09 17:06:03 -07:00
|
|
|
".well-known",
|
2018-12-26 06:16:41 -07:00
|
|
|
"~",
|
2019-01-09 17:06:03 -07:00
|
|
|
"about",
|
2018-12-25 12:09:27 -07:00
|
|
|
"activities",
|
|
|
|
"api",
|
2019-01-09 17:06:03 -07:00
|
|
|
"auth",
|
2019-05-20 16:18:59 -06:00
|
|
|
"check_password",
|
2019-01-09 17:06:03 -07:00
|
|
|
"dev",
|
|
|
|
"friend-requests",
|
|
|
|
"inbox",
|
|
|
|
"internal",
|
|
|
|
"main",
|
|
|
|
"media",
|
|
|
|
"nodeinfo",
|
2018-12-25 12:09:27 -07:00
|
|
|
"notice",
|
|
|
|
"oauth",
|
2019-01-09 17:06:03 -07:00
|
|
|
"objects",
|
|
|
|
"ostatus_subscribe",
|
|
|
|
"pleroma",
|
|
|
|
"proxy",
|
2018-12-25 12:09:27 -07:00
|
|
|
"push",
|
2019-01-09 17:06:03 -07:00
|
|
|
"registration",
|
2018-12-25 12:09:27 -07:00
|
|
|
"relay",
|
2019-01-09 17:06:03 -07:00
|
|
|
"settings",
|
|
|
|
"status",
|
|
|
|
"tag",
|
|
|
|
"user-search",
|
2019-05-20 16:18:59 -06:00
|
|
|
"user_exists",
|
2019-01-09 17:06:03 -07:00
|
|
|
"users",
|
2020-08-06 17:01:29 -06:00
|
|
|
"web",
|
|
|
|
"verify_credentials",
|
|
|
|
"update_credentials",
|
|
|
|
"relationships",
|
|
|
|
"search",
|
|
|
|
"confirmation_resend",
|
|
|
|
"mfa"
|
2020-08-02 13:53:42 -06:00
|
|
|
],
|
|
|
|
email_blacklist: []
|
2018-12-25 12:09:27 -07:00
|
|
|
|
2019-08-01 08:28:00 -06:00
|
|
|
config :pleroma, Oban,
|
|
|
|
repo: Pleroma.Repo,
|
2020-06-23 06:09:01 -06:00
|
|
|
log: false,
|
2019-08-23 09:28:23 -06:00
|
|
|
queues: [
|
2019-08-31 05:25:43 -06:00
|
|
|
activity_expiration: 10,
|
2020-09-05 09:35:01 -06:00
|
|
|
token_expiration: 5,
|
2021-01-25 05:34:59 -07:00
|
|
|
filter_expiration: 1,
|
2020-09-02 11:45:22 -06:00
|
|
|
backup: 1,
|
2019-08-23 09:28:23 -06:00
|
|
|
federator_incoming: 50,
|
|
|
|
federator_outgoing: 50,
|
2020-09-18 05:58:22 -06:00
|
|
|
ingestion_queue: 50,
|
2019-08-23 09:28:23 -06:00
|
|
|
web_push: 50,
|
|
|
|
mailer: 10,
|
|
|
|
transmogrifier: 20,
|
|
|
|
scheduled_activities: 10,
|
2021-07-17 19:35:35 -06:00
|
|
|
poll_notifications: 10,
|
2020-01-21 09:48:14 -07:00
|
|
|
background: 5,
|
2020-01-25 00:47:30 -07:00
|
|
|
remote_fetcher: 2,
|
2021-01-15 13:50:32 -07:00
|
|
|
attachments_cleanup: 1,
|
2020-09-08 04:26:44 -06:00
|
|
|
new_users_digest: 1,
|
2022-01-22 05:23:11 -07:00
|
|
|
mute_expire: 5,
|
2022-11-06 15:49:39 -07:00
|
|
|
search_indexing: 10,
|
2022-12-01 08:00:53 -07:00
|
|
|
nodeinfo_fetcher: 1,
|
|
|
|
database_prune: 1
|
2019-11-25 04:32:20 -07:00
|
|
|
],
|
2022-10-11 07:30:08 -06:00
|
|
|
plugins: [
|
|
|
|
Oban.Plugins.Pruner,
|
|
|
|
{Oban.Plugins.Reindexer, schedule: "@weekly"}
|
|
|
|
],
|
2019-11-25 04:32:20 -07:00
|
|
|
crontab: [
|
2020-02-11 02:54:55 -07:00
|
|
|
{"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker},
|
2022-12-01 08:00:53 -07:00
|
|
|
{"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker},
|
|
|
|
{"0 3 * * *", Pleroma.Workers.Cron.PruneDatabaseWorker}
|
2019-08-23 09:28:23 -06:00
|
|
|
]
|
2019-01-28 08:17:17 -07:00
|
|
|
|
2019-08-09 11:08:01 -06:00
|
|
|
config :pleroma, :workers,
|
|
|
|
retries: [
|
|
|
|
federator_incoming: 5,
|
2022-01-22 07:17:43 -07:00
|
|
|
federator_outgoing: 5,
|
|
|
|
search_indexing: 2
|
2022-11-13 16:55:51 -07:00
|
|
|
],
|
|
|
|
timeout: [
|
|
|
|
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),
|
2022-12-01 08:00:53 -07:00
|
|
|
nodeinfo_fetcher: :timer.seconds(10),
|
|
|
|
database_prune: :timer.minutes(10)
|
2019-08-09 11:08:01 -06:00
|
|
|
]
|
|
|
|
|
2020-07-21 16:18:17 -06:00
|
|
|
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 16:32:26 -07:00
|
|
|
|
2022-07-27 15:48:13 -06: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: [],
|
|
|
|
tls: System.get_env("LDAP_TLS") == "true",
|
|
|
|
tlsopts: [],
|
|
|
|
base: System.get_env("LDAP_BASE") || "dc=example,dc=com",
|
|
|
|
uid: System.get_env("LDAP_UID") || "cn"
|
|
|
|
|
2019-06-02 08:45:32 -06:00
|
|
|
oauth_consumer_strategies =
|
2022-06-29 05:12:48 -06:00
|
|
|
"OAUTH_CONSUMER_STRATEGIES"
|
|
|
|
|> System.get_env()
|
2019-06-02 08:45:32 -06:00
|
|
|
|> to_string()
|
|
|
|
|> String.split()
|
|
|
|
|> Enum.map(&hd(String.split(&1, ":")))
|
2019-03-20 11:25:48 -06:00
|
|
|
|
|
|
|
ueberauth_providers =
|
|
|
|
for strategy <- oauth_consumer_strategies do
|
2019-03-27 06:39:35 -06:00
|
|
|
strategy_module_name = "Elixir.Ueberauth.Strategy.#{String.capitalize(strategy)}"
|
2019-03-20 11:25:48 -06:00
|
|
|
strategy_module = String.to_atom(strategy_module_name)
|
|
|
|
{String.to_atom(strategy), {strategy_module, [callback_params: ["state"]]}}
|
|
|
|
end
|
2019-03-15 08:08:03 -06:00
|
|
|
|
2019-03-11 11:37:26 -06:00
|
|
|
config :ueberauth,
|
|
|
|
Ueberauth,
|
|
|
|
base_path: "/oauth",
|
2019-03-20 11:25:48 -06:00
|
|
|
providers: ueberauth_providers
|
|
|
|
|
2021-02-17 10:47:38 -07:00
|
|
|
config :pleroma, :auth, oauth_consumer_strategies: oauth_consumer_strategies
|
2019-03-11 11:37:26 -06:00
|
|
|
|
2019-07-09 23:34:21 -06:00
|
|
|
config :pleroma, Pleroma.Emails.Mailer, adapter: Swoosh.Adapters.Sendmail, enabled: false
|
2019-03-31 16:46:17 -06:00
|
|
|
|
2022-12-11 12:19:31 -07:00
|
|
|
config :swoosh,
|
|
|
|
api_client: Swoosh.ApiClient.Finch,
|
|
|
|
finch_name: MyFinch
|
|
|
|
|
2019-08-16 05:32:25 -06:00
|
|
|
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 09:53:06 -07:00
|
|
|
config :pleroma, Pleroma.Emails.NewUsersDigestEmail, enabled: false
|
|
|
|
|
2019-04-03 09:55:04 -06:00
|
|
|
config :pleroma, Pleroma.ScheduledActivity,
|
|
|
|
daily_user_limit: 25,
|
|
|
|
total_user_limit: 300,
|
|
|
|
enabled: true
|
|
|
|
|
2019-04-17 03:59:05 -06:00
|
|
|
config :pleroma, :email_notifications,
|
|
|
|
digest: %{
|
2019-06-06 16:22:35 -06:00
|
|
|
active: false,
|
2019-04-17 03:59:05 -06:00
|
|
|
interval: 7,
|
|
|
|
inactivity_threshold: 7
|
|
|
|
}
|
|
|
|
|
2019-05-06 11:51:03 -06:00
|
|
|
config :pleroma, :oauth2,
|
2020-12-17 10:49:00 -07:00
|
|
|
token_expires_in: 3600 * 24 * 365 * 100,
|
2019-05-22 09:44:50 -06:00
|
|
|
issue_new_refresh_token: true,
|
2019-11-25 04:32:20 -07:00
|
|
|
clean_expired_tokens: false
|
2019-05-06 11:51:03 -06:00
|
|
|
|
2019-05-15 07:28:01 -06:00
|
|
|
config :pleroma, :database, rum_enabled: false
|
|
|
|
|
2021-02-23 03:52:28 -07:00
|
|
|
config :pleroma, :features, improved_hashtag_timeline: :auto
|
|
|
|
|
2021-02-18 10:40:10 -07:00
|
|
|
config :pleroma, :populate_hashtags_table, fault_rate_allowance: 0.01
|
|
|
|
|
2019-06-06 14:59:51 -06:00
|
|
|
config :pleroma, :env, Mix.env()
|
|
|
|
|
2019-05-14 14:03:13 -06:00
|
|
|
config :http_signatures,
|
|
|
|
adapter: Pleroma.Signature
|
|
|
|
|
2020-01-29 13:58:15 -07:00
|
|
|
config :pleroma, :rate_limit,
|
|
|
|
authentication: {60_000, 15},
|
2020-02-28 07:44:59 -07:00
|
|
|
timeline: {500, 3},
|
2020-01-29 13:58:15 -07:00
|
|
|
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 01:28:39 -06:00
|
|
|
|
2020-09-07 11:57:38 -06:00
|
|
|
config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600
|
2019-06-11 01:28:39 -06:00
|
|
|
|
2020-06-24 00:30:32 -06:00
|
|
|
config :pleroma, Pleroma.Web.Plugs.RemoteIp,
|
2020-10-06 16:02:46 -06:00
|
|
|
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 15:59:23 -06:00
|
|
|
|
2022-06-29 05:16:00 -06:00
|
|
|
config :pleroma, :static_fe, enabled: false
|
2019-11-07 20:31:28 -07:00
|
|
|
|
2020-07-28 09:46:37 -06:00
|
|
|
# Example of frontend configuration
|
|
|
|
# This example will make us serve the primary frontend from the
|
2020-07-28 11:10:04 -06:00
|
|
|
# frontends directory within your `:pleroma, :instance, static_dir`.
|
|
|
|
# e.g., instance/static/frontends/pleroma/develop/
|
2020-07-28 09:46:37 -06:00
|
|
|
#
|
|
|
|
# With no frontend configuration, the bundled files from the `static` directory will
|
|
|
|
# be used.
|
|
|
|
#
|
2020-09-06 03:13:26 -06:00
|
|
|
# config :pleroma, :frontends,
|
2020-07-30 06:17:58 -06:00
|
|
|
# primary: %{"name" => "pleroma-fe", "ref" => "develop"},
|
|
|
|
# admin: %{"name" => "admin-fe", "ref" => "stable"},
|
2022-06-29 05:12:48 -06:00
|
|
|
# mastodon: %{"enabled" => true, "name" => "mastodon-fe", "ref" => "develop"}
|
2020-07-30 06:14:58 -06:00
|
|
|
# available: %{...}
|
|
|
|
|
|
|
|
config :pleroma, :frontends,
|
2022-07-15 06:27:16 -06:00
|
|
|
primary: %{"name" => "pleroma-fe", "ref" => "stable"},
|
|
|
|
admin: %{"name" => "admin-fe", "ref" => "stable"},
|
2022-07-20 14:13:50 -06:00
|
|
|
mastodon: %{"name" => "mastodon-fe", "ref" => "akkoma"},
|
2023-03-12 17:24:07 -06:00
|
|
|
pickable: [
|
|
|
|
"pleroma-fe/stable"
|
|
|
|
],
|
2022-07-13 09:09:35 -06:00
|
|
|
swagger: %{
|
|
|
|
"name" => "swagger-ui",
|
|
|
|
"ref" => "stable",
|
|
|
|
"enabled" => false
|
|
|
|
},
|
2020-07-30 06:14:58 -06:00
|
|
|
available: %{
|
2020-07-30 06:17:58 -06:00
|
|
|
"pleroma-fe" => %{
|
|
|
|
"name" => "pleroma-fe",
|
2022-06-15 11:18:23 -06:00
|
|
|
"git" => "https://akkoma.dev/AkkomaGang/pleroma-fe",
|
2022-07-15 06:27:16 -06:00
|
|
|
"build_url" =>
|
|
|
|
"https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/${ref}/akkoma-fe.zip",
|
|
|
|
"ref" => "stable",
|
2022-06-15 11:18:23 -06:00
|
|
|
"build_dir" => "dist"
|
2020-07-30 06:14:58 -06:00
|
|
|
},
|
2022-07-08 07:03:18 -06:00
|
|
|
# Mastodon-Fe cannot be set as a primary - this is only here so we can update this seperately
|
2022-06-29 05:12:48 -06:00
|
|
|
"mastodon-fe" => %{
|
|
|
|
"name" => "mastodon-fe",
|
|
|
|
"git" => "https://akkoma.dev/AkkomaGang/masto-fe",
|
2022-07-21 04:29:28 -06:00
|
|
|
"build_url" =>
|
|
|
|
"https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/${ref}/masto-fe.zip",
|
2022-06-29 05:12:48 -06:00
|
|
|
"build_dir" => "distribution",
|
2022-07-20 14:13:50 -06:00
|
|
|
"ref" => "akkoma"
|
2020-07-30 06:14:58 -06:00
|
|
|
},
|
2022-08-16 18:22:59 -06:00
|
|
|
"fedibird-fe" => %{
|
|
|
|
"name" => "fedibird-fe",
|
|
|
|
"git" => "https://akkoma.dev/AkkomaGang/fedibird-fe",
|
|
|
|
"build_url" =>
|
|
|
|
"https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/${ref}/fedibird-fe.zip",
|
|
|
|
"build_dir" => "distribution",
|
|
|
|
"ref" => "akkoma"
|
|
|
|
},
|
2020-07-30 06:14:58 -06:00
|
|
|
"admin-fe" => %{
|
|
|
|
"name" => "admin-fe",
|
2022-06-29 05:12:48 -06:00
|
|
|
"git" => "https://akkoma.dev/AkkomaGang/admin-fe",
|
2022-07-15 06:27:16 -06:00
|
|
|
"build_url" =>
|
|
|
|
"https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/${ref}/admin-fe.zip",
|
|
|
|
"ref" => "stable"
|
2020-07-30 06:14:58 -06:00
|
|
|
},
|
2022-07-13 09:09:35 -06:00
|
|
|
# For developers - enables a swagger frontend to view the openapi spec
|
|
|
|
"swagger-ui" => %{
|
|
|
|
"name" => "swagger-ui",
|
|
|
|
"git" => "https://github.com/swagger-api/swagger-ui",
|
|
|
|
"build_url" => "https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/swagger-ui.zip",
|
|
|
|
"build_dir" => "dist",
|
|
|
|
"ref" => "stable"
|
2020-07-30 06:14:58 -06:00
|
|
|
}
|
|
|
|
}
|
2020-07-28 09:46:37 -06:00
|
|
|
|
2019-09-09 12:53:08 -06:00
|
|
|
config :pleroma, :web_cache_ttl,
|
|
|
|
activity_pub: nil,
|
|
|
|
activity_pub_question: 30_000
|
|
|
|
|
2019-12-06 01:04:46 -07:00
|
|
|
config :pleroma, :modules, runtime_dir: "instance/modules"
|
|
|
|
|
2020-01-10 09:34:19 -07:00
|
|
|
config :pleroma, configurable_from_database: false
|
|
|
|
|
2020-02-25 03:17:51 -07:00
|
|
|
config :pleroma, Pleroma.Repo,
|
|
|
|
parameters: [gin_fuzzy_search_limit: "500"],
|
|
|
|
prepare: :unnamed
|
2020-02-20 14:34:10 -07:00
|
|
|
|
2020-06-16 07:11:45 -06:00
|
|
|
config :pleroma, :majic_pool, size: 2
|
2020-05-14 13:36:31 -06:00
|
|
|
|
2020-08-14 11:55:45 -06:00
|
|
|
private_instance? = :if_instance_is_private
|
|
|
|
|
2020-03-20 04:04:37 -06:00
|
|
|
config :pleroma, :restrict_unauthenticated,
|
2023-03-17 09:33:28 -06:00
|
|
|
timelines: %{local: private_instance?, federated: private_instance?, bubble: true},
|
2020-08-14 11:55:45 -06:00
|
|
|
profiles: %{local: private_instance?, remote: private_instance?},
|
|
|
|
activities: %{local: private_instance?, remote: private_instance?}
|
2020-03-20 04:04:37 -06:00
|
|
|
|
2020-05-04 12:33:05 -06:00
|
|
|
config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false
|
|
|
|
|
2020-03-21 00:47:05 -06:00
|
|
|
config :pleroma, :mrf,
|
2020-08-02 11:24:40 -06:00
|
|
|
policies: [Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy, Pleroma.Web.ActivityPub.MRF.TagPolicy],
|
2020-03-21 00:47:05 -06:00
|
|
|
transparency: true,
|
2022-08-27 04:57:57 -06:00
|
|
|
transparency_exclusions: [],
|
|
|
|
transparency_obfuscate_domains: []
|
2020-03-21 00:47:05 -06:00
|
|
|
|
2020-06-24 22:12:29 -06:00
|
|
|
config :ex_aws, http_client: Pleroma.HTTP.ExAws
|
|
|
|
|
2020-10-01 04:32:11 -06:00
|
|
|
config :web_push_encryption, http_client: Pleroma.HTTP.WebPush
|
2020-09-17 14:04:47 -06:00
|
|
|
|
2022-11-06 15:49:39 -07:00
|
|
|
config :pleroma, :instances_favicons, enabled: true
|
|
|
|
config :pleroma, :instances_nodeinfo, enabled: true
|
2020-07-07 21:56:24 -06:00
|
|
|
|
2020-02-10 14:29:25 -07:00
|
|
|
config :floki, :html_parser, Floki.HTMLParser.FastHtml
|
|
|
|
|
2020-08-05 08:41:17 -06:00
|
|
|
config :pleroma, Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.PleromaAuthenticator
|
|
|
|
|
2020-10-20 07:16:58 -06:00
|
|
|
config :pleroma, Pleroma.User.Backup,
|
2020-09-04 08:30:39 -06:00
|
|
|
purge_after_days: 30,
|
2020-09-16 13:21:13 -06:00
|
|
|
limit_days: 7,
|
|
|
|
dir: nil
|
2020-09-04 08:30:39 -06:00
|
|
|
|
2021-01-09 08:52:40 -07:00
|
|
|
config :pleroma, ConcurrentLimiter, [
|
|
|
|
{Pleroma.Web.RichMedia.Helpers, [max_running: 5, max_waiting: 5]},
|
2021-08-15 12:53:04 -06:00
|
|
|
{Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, [max_running: 5, max_waiting: 5]},
|
2021-10-28 15:38:00 -06:00
|
|
|
{Pleroma.Search, [max_running: 30, max_waiting: 50]}
|
2021-01-09 08:52:40 -07:00
|
|
|
]
|
|
|
|
|
2022-08-02 07:54:22 -06:00
|
|
|
config :pleroma, Pleroma.Web.WebFinger, domain: nil, update_nickname_on_user_fetch: true
|
|
|
|
|
2021-11-17 12:29:49 -07:00
|
|
|
config :pleroma, Pleroma.Search, module: Pleroma.Search.DatabaseSearch
|
|
|
|
|
2021-12-20 08:48:52 -07:00
|
|
|
config :pleroma, Pleroma.Search.Meilisearch,
|
|
|
|
url: "http://127.0.0.1:7700/",
|
|
|
|
private_key: nil,
|
|
|
|
initial_indexing_chunk_size: 100_000
|
2021-12-26 12:49:00 -07:00
|
|
|
|
2022-06-30 09:28:31 -06:00
|
|
|
config :pleroma, Pleroma.Search.Elasticsearch.Cluster,
|
|
|
|
url: "http://localhost:9200",
|
|
|
|
username: "elastic",
|
|
|
|
password: "changeme",
|
|
|
|
api: Elasticsearch.API.HTTP,
|
|
|
|
json_library: Jason,
|
|
|
|
indexes: %{
|
|
|
|
activities: %{
|
|
|
|
settings: "priv/es-mappings/activity.json",
|
|
|
|
store: Pleroma.Search.Elasticsearch.Store,
|
|
|
|
sources: [Pleroma.Activity],
|
2022-06-30 12:44:31 -06:00
|
|
|
bulk_page_size: 1000,
|
2022-06-30 09:28:31 -06:00
|
|
|
bulk_wait_interval: 15_000
|
|
|
|
}
|
|
|
|
}
|
2021-12-26 12:49:00 -07:00
|
|
|
|
2022-08-29 13:42:22 -06:00
|
|
|
config :pleroma, :translator,
|
|
|
|
enabled: false,
|
2022-08-29 15:20:47 -06:00
|
|
|
module: Pleroma.Akkoma.Translators.DeepL
|
2022-08-29 13:42:22 -06:00
|
|
|
|
|
|
|
config :pleroma, :deepl,
|
|
|
|
# either :free or :pro
|
|
|
|
tier: :free,
|
|
|
|
api_key: ""
|
|
|
|
|
|
|
|
config :pleroma, :libre_translate,
|
|
|
|
url: "http://127.0.0.1:5000",
|
|
|
|
api_key: nil
|
|
|
|
|
2022-12-19 06:06:39 -07:00
|
|
|
config :pleroma, :argos_translate,
|
|
|
|
command_argos_translate: "argos-translate",
|
|
|
|
command_argospm: "argospm",
|
|
|
|
strip_html: true
|
|
|
|
|
2017-03-17 10:09:58 -06:00
|
|
|
# Import environment specific config. This must remain at the bottom
|
|
|
|
# of this file so it overrides the configuration defined above.
|
2018-03-30 07:01:53 -06:00
|
|
|
import_config "#{Mix.env()}.exs"
|