telemetry_event: [Pleroma.Repo.Instrumenter],
migration_lock: nil
-scheduled_jobs =
- with digest_config <- Application.get_env(:pleroma, :email_notifications)[:digest],
- true <- digest_config[:active] do
- [{digest_config[:schedule], {Pleroma.Daemons.DigestEmailDaemon, :perform, []}}]
- else
- _ -> []
- end
-
-config :pleroma, Pleroma.Scheduler,
- global: true,
- overlap: true,
- timezone: :utc,
- jobs: scheduled_jobs
-
config :pleroma, Pleroma.Captcha,
enabled: true,
seconds_valid: 300,
config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
-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
- ]
-
# Upload configuration
config :pleroma, Pleroma.Upload,
uploader: Pleroma.Uploaders.Local,
follow_redirect: true,
pool: :upload
]
- ]
+ ],
+ filename_display_max_length: 30
config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
shortcode_globs: ["/emoji/custom/**/*.png"],
pack_extensions: [".png", ".gif"],
groups: [
- # Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md`
Custom: ["/emoji/*.png", "/emoji/**/*.png"]
],
default_manifest: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json",
"dat",
"dweb",
"gopher",
+ "hyper",
"ipfs",
"ipns",
"irc",
proxy_url: nil,
send_user_agent: true,
user_agent: :default,
- adapter: [
- ssl_options: [
- # Workaround for remote server certificate chain issues
- partial_chain: &:hackney_connect.partial_chain/1,
- # We don't support TLS v1.3 yet
- versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]
- ]
- ]
+ adapter: []
config :pleroma, :instance,
name: "Pleroma",
email: "example@example.com",
notify_email: "noreply@example.com",
- description: "A Pleroma instance, an alternative fediverse server",
+ description: "Pleroma: An efficient and flexible fediverse server",
+ background_image: "/images/city.jpg",
+ instance_thumbnail: "/instance/thumbnail.jpeg",
limit: 5_000,
+ description_limit: 5_000,
chat_limit: 5_000,
remote_limit: 100_000,
upload_limit: 16_000_000,
max_expiration: 365 * 24 * 60 * 60
},
registrations_open: true,
+ invites_enabled: false,
+ account_activation_required: false,
+ account_approval_required: false,
federating: true,
federation_incoming_replies_max_depth: 100,
federation_reachability_timeout_days: 7,
Pleroma.Web.ActivityPub.Publisher
],
allow_relay: true,
- rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,
public: true,
quarantined_instances: [],
managed_config: true,
],
mrf_transparency: true,
mrf_transparency_exclusions: [],
+ staff_transparency: [],
autofollowed_nicknames: [],
max_pinned_statuses: 1,
- no_attachment_links: true,
- welcome_user_nickname: nil,
- welcome_message: nil,
+ attachment_links: false,
max_report_comment_size: 1000,
safe_dm_mentions: false,
healthcheck: false,
remote_post_retention_days: 90,
skip_thread_containment: true,
limit_to_local_content: :unauthenticated,
- dynamic_configuration: false,
user_bio_length: 5000,
user_name_length: 100,
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,
- extended_nickname_format: true
+ 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
+
+config :pleroma, :welcome,
+ direct_message: [
+ enabled: false,
+ sender_nickname: nil,
+ message: nil
+ ],
+ email: [
+ enabled: false,
+ sender: nil,
+ subject: "Welcome to <%= instance_name %>",
+ html: "Welcome to <%= instance_name %>",
+ text: "Welcome to <%= instance_name %>"
+ ]
config :pleroma, :feed,
post_title: %{
config :pleroma, :frontend_configurations,
pleroma_fe: %{
- theme: "pleroma-dark",
- logo: "/static/logo.png",
+ alwaysShowSubjectInput: true,
background: "/images/city.jpg",
- redirectRootNoLogin: "/main/all",
- redirectRootLogin: "/main/friends",
- showInstanceSpecificPanel: true,
- scopeOptionsEnabled: false,
- formattingOptionsEnabled: false,
collapseMessageWithSubject: false,
+ disableChat: false,
+ greentext: false,
+ hideFilteredStatuses: false,
+ hideMutedPosts: false,
hidePostStats: false,
+ hideSitename: false,
hideUserStats: false,
+ loginMethod: "password",
+ logo: "/static/logo.png",
+ logoMargin: ".1em",
+ logoMask: true,
+ minimalScopesMode: false,
+ noAttachmentLinks: false,
+ nsfwCensorImage: "",
+ postContentType: "text/plain",
+ redirectRootLogin: "/main/friends",
+ redirectRootNoLogin: "/main/all",
scopeCopy: true,
+ sidebarRight: false,
+ showFeaturesPanel: true,
+ showInstanceSpecificPanel: false,
subjectLineBehavior: "email",
- alwaysShowSubjectInput: true
+ theme: "pleroma-dark",
+ webPushNotifications: false
},
masto_fe: %{
showInstanceSpecificPanel: true
unfollow_blocked: true,
outgoing_blocks: true,
follow_handshake_timeout: 500,
- sign_object_fetches: true
+ note_replies_output_limit: 5,
+ sign_object_fetches: true,
+ authorized_fetch_mode: false
config :pleroma, :streamer,
workers: 3,
reject: [],
accept: [],
avatar_removal: [],
- banner_removal: []
+ banner_removal: [],
+ reject_deletes: []
config :pleroma, :mrf_keyword,
reject: [],
config :pleroma, :mrf_subchain, match_actor: %{}
+config :pleroma, :mrf_activity_expiration, days: 365
+
config :pleroma, :mrf_vocabulary,
accept: [],
reject: []
ignore_tld: ["local", "localdomain", "lan"],
parsers: [
Pleroma.Web.RichMedia.Parsers.TwitterCard,
- Pleroma.Web.RichMedia.Parsers.OGP,
Pleroma.Web.RichMedia.Parsers.OEmbed
],
ttl_setters: [Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl]
config :pleroma, :media_proxy,
enabled: false,
+ invalidation: [
+ enabled: false,
+ provider: Pleroma.Web.MediaProxy.Invalidation.Script
+ ],
proxy_opts: [
redirect_on_failure: false,
max_body_length: 25 * 1_048_576,
],
whitelist: []
+config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http,
+ method: :purge,
+ headers: [],
+ options: []
+
+config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Script, script_path: nil
+
config :pleroma, :chat, enabled: true
config :phoenix, :format_encoders, json: Jason
config :phoenix, :json_library, Jason
+config :phoenix, :filter_parameters, ["password", "confirm"]
+
config :pleroma, :gopher,
enabled: false,
ip: {0, 0, 0, 0},
],
unfurl_nsfw: false
-config :pleroma, :suggestions,
- enabled: false,
- third_party_engine:
- "http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-suggestions-api.cgi?{{host}}+{{user}}",
- timeout: 300_000,
- limit: 40,
- web: "https://vinayaka.distsn.org"
+config :pleroma, Pleroma.Web.Preload,
+ providers: [
+ Pleroma.Web.Preload.Providers.Instance
+ ]
config :pleroma, :http_security,
enabled: true,
config :pleroma, Oban,
repo: Pleroma.Repo,
- verbose: false,
- prune: {:maxlen, 1500},
+ log: false,
queues: [
activity_expiration: 10,
federator_incoming: 50,
transmogrifier: 20,
scheduled_activities: 10,
background: 5,
- attachments_cleanup: 5
+ remote_fetcher: 2,
+ attachments_cleanup: 5,
+ new_users_digest: 1
+ ],
+ plugins: [Oban.Plugins.Pruner],
+ crontab: [
+ {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker},
+ {"0 * * * *", Pleroma.Workers.Cron.StatsWorker},
+ {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker},
+ {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker},
+ {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker}
]
config :pleroma, :workers,
federator_outgoing: 5
]
-config :pleroma, :fetch_initial_posts,
- enabled: false,
- pages: 5
-
-config :auto_linker,
- opts: [
- scheme: true,
- extra: true,
- # TODO: Set to :no_scheme when it works properly
- validate_tld: true,
- class: false,
- strip_prefix: false,
- new_window: false,
- rel: "ugc"
- ]
+config :pleroma, Pleroma.Formatter,
+ class: false,
+ rel: "ugc",
+ new_window: false,
+ truncate: false,
+ strip_prefix: false,
+ extra: true,
+ validate_tld: :no_scheme
config :pleroma, :ldap,
enabled: System.get_env("LDAP_ENABLED") == "true",
text_muted_color: "#b9b9ba"
}
+config :pleroma, Pleroma.Emails.NewUsersDigestEmail, enabled: false
+
config :prometheus, Pleroma.Web.Endpoint.MetricsExporter, path: "/api/pleroma/app_metrics"
config :pleroma, Pleroma.ScheduledActivity,
config :pleroma, :email_notifications,
digest: %{
active: false,
- schedule: "0 0 * * 0",
interval: 7,
inactivity_threshold: 7
}
config :pleroma, :oauth2,
token_expires_in: 600,
issue_new_refresh_token: true,
- clean_expired_tokens: false,
- clean_expired_tokens_interval: 86_400_000
+ clean_expired_tokens: false
config :pleroma, :database, rum_enabled: false
config :http_signatures,
adapter: Pleroma.Signature
-config :pleroma, :rate_limit, authentication: {60_000, 15}
+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}
config :pleroma, Pleroma.ActivityExpiration, enabled: true
-config :pleroma, Pleroma.Plugs.RemoteIp, enabled: false
+config :pleroma, Pleroma.Plugs.RemoteIp, enabled: true
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", "ref" => "develop"}
+
config :pleroma, :web_cache_ttl,
activity_pub: nil,
activity_pub_question: 30_000
config :pleroma, :modules, runtime_dir: "instance/modules"
-config :swarm, node_blacklist: [~r/myhtml_.*$/]
+config :pleroma, configurable_from_database: false
+
+config :pleroma, Pleroma.Repo,
+ parameters: [gin_fuzzy_search_limit: "500"],
+ prepare: :unnamed
+
+config :pleroma, :connections_pool,
+ reclaim_multiplier: 0.1,
+ connection_acquisition_wait: 250,
+ connection_acquisition_retries: 5,
+ max_connections: 250,
+ max_idle_time: 30_000,
+ retry: 0,
+ await_up_timeout: 5_000
+
+config :pleroma, :pools,
+ federation: [
+ size: 50,
+ max_waiting: 10
+ ],
+ media: [
+ size: 50,
+ max_waiting: 10
+ ],
+ upload: [
+ size: 25,
+ max_waiting: 5
+ ],
+ default: [
+ size: 10,
+ max_waiting: 2
+ ]
+
+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, :restrict_unauthenticated,
+ timelines: %{local: false, federated: false},
+ profiles: %{local: false, remote: false},
+ activities: %{local: false, remote: false}
+
+config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false
+
+config :pleroma, :mrf,
+ policies: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,
+ transparency: true,
+ transparency_exclusions: []
+
+config :tzdata, :http_client, Pleroma.HTTP.Tzdata
+
+config :ex_aws, http_client: Pleroma.HTTP.ExAws
+
+config :pleroma, :instances_favicons, enabled: false
+
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{Mix.env()}.exs"