diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/benchmark.exs | 8 | ||||
-rw-r--r-- | config/config.exs | 79 | ||||
-rw-r--r-- | config/description.exs | 277 | ||||
-rw-r--r-- | config/dev.exs | 7 | ||||
-rw-r--r-- | config/docker.exs | 1 | ||||
-rw-r--r-- | config/dokku.exs | 2 | ||||
-rw-r--r-- | config/prod.exs | 9 | ||||
-rw-r--r-- | config/test.exs | 14 |
8 files changed, 238 insertions, 159 deletions
diff --git a/config/benchmark.exs b/config/benchmark.exs index 5567ff26e..870ead150 100644 --- a/config/benchmark.exs +++ b/config/benchmark.exs @@ -1,11 +1,10 @@ -use Mix.Config +import Config # We don't run a server during test. If one is required, # you can enable the server option below. config :pleroma, Pleroma.Web.Endpoint, http: [port: 4001], - url: [port: 4001], - server: true + url: [port: 4001] # Disable captha for tests config :pleroma, Pleroma.Captcha, @@ -41,10 +40,11 @@ config :pleroma, Pleroma.Repo, password: "postgres", database: "pleroma_benchmark", hostname: System.get_env("DB_HOST") || "localhost", + port: System.get_env("DB_PORT") || "5432", pool_size: 10 # Reduce hash rounds for testing -config :pbkdf2_elixir, rounds: 1 +config :pleroma, :password, iterations: 1 config :tesla, adapter: Tesla.Mock diff --git a/config/config.exs b/config/config.exs index 4381068ac..178b6be99 100644 --- a/config/config.exs +++ b/config/config.exs @@ -37,11 +37,11 @@ # FIGURATION! EDIT YOUR SECRET FILE (either prod.secret.exs, dev.secret.exs). # # This file is responsible for configuring your application -# and its dependencies with the aid of the Mix.Config module. +# and its dependencies with the aid of the Config module. # # This configuration file is loaded before any dependency and # is restricted to this project. -use Mix.Config +import Config # General application configuration config :pleroma, ecto_repos: [Pleroma.Repo] @@ -139,6 +139,7 @@ config :pleroma, Pleroma.Web.Endpoint, ], protocol: "https", secret_key_base: "aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl", + live_view: [signing_salt: "U5ELgdEwTD3n1+D5s0rY0AMg8/y1STxZ3Zvsl3bWh+oBcGrYdil0rXqPMRd3Glcq"], signing_salt: "CqaoopA2", render_errors: [view: Pleroma.Web.ErrorView, accepts: ~w(json)], pubsub_server: Pleroma.PubSub, @@ -159,11 +160,6 @@ config :logger, :ex_syslogger, format: "$metadata[$level] $message", metadata: [:request_id] -config :quack, - level: :warn, - meta: [:all], - webhook_url: "https://hooks.slack.com/services/YOUR-KEY-HERE" - config :mime, :types, %{ "application/xml" => ["xml"], "application/xrd+xml" => ["xrd+xml"], @@ -186,11 +182,11 @@ config :pleroma, :instance, email: "example@example.com", notify_email: "noreply@example.com", description: "Pleroma: An efficient and flexible fediverse server", + short_description: "", 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, avatar_upload_limit: 2_000_000, @@ -227,6 +223,7 @@ config :pleroma, :instance, max_pinned_statuses: 1, attachment_links: false, max_report_comment_size: 1000, + report_strip_status: true, safe_dm_mentions: false, healthcheck: false, remote_post_retention_days: 90, @@ -254,7 +251,29 @@ config :pleroma, :instance, ] ], show_reactions: true, - password_reset_token_validity: 60 * 60 * 24 + password_reset_token_validity: 60 * 60 * 24, + profile_directory: true, + 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, + :announcements_manage_announcements, + :emoji_manage_emoji, + :statistics_read + ], + moderator_privileges: [:messages_delete, :reports_manage_reports], + max_endorsed_users: 20, + birthday_required: false, + birthday_min_age: 0, + max_media_attachments: 1_000 config :pleroma, :welcome, direct_message: [ @@ -322,9 +341,6 @@ config :pleroma, :frontend_configurations, subjectLineBehavior: "email", theme: "pleroma-dark", webPushNotifications: false - }, - masto_fe: %{ - showInstanceSpecificPanel: true } config :pleroma, :assets, @@ -353,6 +369,7 @@ config :pleroma, :manifest, config :pleroma, :activitypub, unfollow_blocked: true, outgoing_blocks: true, + blockers_visible: true, follow_handshake_timeout: 500, note_replies_output_limit: 5, sign_object_fetches: true, @@ -457,9 +474,11 @@ config :pleroma, :media_preview_proxy, image_quality: 85, min_content_length: 100 * 1024 -config :pleroma, :chat, enabled: true +config :pleroma, :shout, + enabled: true, + limit: 5_000 -config :phoenix, :format_encoders, json: Jason +config :phoenix, :format_encoders, json: Jason, "activity+json": Jason config :phoenix, :json_library, Jason @@ -552,13 +571,14 @@ config :pleroma, Oban, token_expiration: 5, filter_expiration: 1, backup: 1, - federator_incoming: 50, - federator_outgoing: 50, + federator_incoming: 5, + federator_outgoing: 5, ingestion_queue: 50, web_push: 50, mailer: 10, transmogrifier: 20, scheduled_activities: 10, + poll_notifications: 10, background: 5, remote_fetcher: 2, attachments_cleanup: 1, @@ -597,9 +617,6 @@ config :pleroma, :ldap, base: System.get_env("LDAP_BASE") || "dc=example,dc=com", uid: System.get_env("LDAP_UID") || "cn" -config :esshd, - enabled: false - oauth_consumer_strategies = System.get_env("OAUTH_CONSUMER_STRATEGIES") |> to_string() @@ -665,6 +682,8 @@ 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, @@ -733,7 +752,7 @@ config :pleroma, :frontends, "name" => "fedi-fe", "git" => "https://git.pleroma.social/pleroma/fedi-fe", "build_url" => - "https://git.pleroma.social/pleroma/fedi-fe/-/jobs/artifacts/${ref}/download?job=build", + "https://git.pleroma.social/pleroma/fedi-fe/-/jobs/artifacts/${ref}/download?job=build_release", "ref" => "master", "custom-http-headers" => [ {"service-worker-allowed", "/"} @@ -746,13 +765,21 @@ config :pleroma, :frontends, "https://git.pleroma.social/pleroma/admin-fe/-/jobs/artifacts/${ref}/download?job=build", "ref" => "develop" }, - "soapbox-fe" => %{ - "name" => "soapbox-fe", - "git" => "https://gitlab.com/soapbox-pub/soapbox-fe", + "soapbox" => %{ + "name" => "soapbox", + "git" => "https://gitlab.com/soapbox-pub/soapbox", "build_url" => - "https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/${ref}/download?job=build-production", - "ref" => "v1.0.0", + "https://gitlab.com/soapbox-pub/soapbox/-/jobs/artifacts/${ref}/download?job=build-production", + "ref" => "v3.0.0-beta.1", "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" } } @@ -851,6 +878,8 @@ config :pleroma, ConcurrentLimiter, [ {Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, [max_running: 5, max_waiting: 5]} ] +config :pleroma, Pleroma.Web.WebFinger, domain: nil, update_nickname_on_user_fetch: true + # 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" diff --git a/config/description.exs b/config/description.exs index bb1f43305..5f8add8a4 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config websocket_config = [ path: "/websocket", @@ -497,6 +497,27 @@ config :pleroma, :config_description, [ }, %{ group: :pleroma, + key: :delete_context_objects, + type: :group, + description: "`delete_context_objects` background migration settings", + children: [ + %{ + key: :fault_rate_allowance, + type: :float, + description: + "Max accepted rate of objects that failed in the migration. Any value from 0.0 which tolerates no errors to 1.0 which will enable the feature even if context object deletion failed for all records.", + suggestions: [0.01] + }, + %{ + key: :sleep_interval_ms, + type: :integer, + description: + "Sleep interval between each chunk of processed records in order to decrease the load on the system (defaults to 0 and should be keep default on most instances)." + } + ] + }, + %{ + group: :pleroma, key: :instance, type: :group, description: "Instance-related settings", @@ -537,17 +558,18 @@ config :pleroma, :config_description, [ ] }, %{ - key: :limit, - type: :integer, - description: "Posts character limit (CW/Subject included in the counter)", + key: :short_description, + type: :string, + description: + "Shorter version of instance description. It can be seen on `/api/v1/instance`", suggestions: [ - 5_000 + "Cool instance" ] }, %{ - key: :chat_limit, + key: :limit, type: :integer, - description: "Character limit of the instance chat messages", + description: "Posts character limit (CW/Subject included in the counter)", suggestions: [ 5_000 ] @@ -561,6 +583,14 @@ config :pleroma, :config_description, [ ] }, %{ + key: :max_media_attachments, + type: :integer, + description: "Maximum number of post media attachments", + suggestions: [ + 1_000_000 + ] + }, + %{ key: :upload_limit, type: :integer, description: "File size limit of uploads (except for avatar, background, banner)", @@ -682,7 +712,8 @@ config :pleroma, :config_description, [ %{ key: :allow_relay, type: :boolean, - description: "Enable Pleroma's Relay, which makes it possible to follow a whole instance" + description: + "Permits remote instances to subscribe to all public posts of your instance. (Important!) This may increase the visibility of your instance." }, %{ key: :public, @@ -694,12 +725,14 @@ config :pleroma, :config_description, [ }, %{ key: :quarantined_instances, - type: {:list, :string}, + type: {:list, :tuple}, + key_placeholder: "instance", + value_placeholder: "reason", description: - "List of ActivityPub instances where private (DMs, followers-only) activities will not be sent", + "List of ActivityPub instances where private (DMs, followers-only) activities will not be sent and the reason for doing so", suggestions: [ - "quarantined.com", - "*.quarantined.com" + {"quarantined.com", "Reason"}, + {"*.quarantined.com", "Reason"} ] }, %{ @@ -748,6 +781,16 @@ config :pleroma, :config_description, [ ] }, %{ + key: :max_endorsed_users, + type: :integer, + description: "The maximum number of recommended accounts. 0 will disable the feature.", + suggestions: [ + 0, + 1, + 3 + ] + }, + %{ key: :autofollowed_nicknames, type: {:list, :string}, description: @@ -773,6 +816,13 @@ config :pleroma, :config_description, [ ] }, %{ + key: :report_strip_status, + label: "Report strip status", + type: :boolean, + description: + "Strip associated statuses in reports to ids when closed/resolved, otherwise keep a copy" + }, + %{ key: :safe_dm_mentions, label: "Safe DM mentions", type: :boolean, @@ -941,6 +991,76 @@ config :pleroma, :config_description, [ key: :show_reactions, type: :boolean, description: "Let favourites and emoji reactions be viewed through the API." + }, + %{ + key: :profile_directory, + type: :boolean, + description: "Enable profile directory." + }, + %{ + key: :admin_privileges, + type: {:list, :atom}, + suggestions: [ + :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, + :announcements_manage_announcements, + :emoji_manage_emoji, + :statistics_read + ], + description: + "What extra privileges to allow admins (e.g. updating user credentials, get password reset token, delete users, index and read private statuses and chats)" + }, + %{ + key: :moderator_privileges, + type: {:list, :atom}, + suggestions: [ + :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, + :announcements_manage_announcements, + :emoji_manage_emoji, + :statistics_read + ], + description: + "What extra privileges to allow moderators (e.g. updating user credentials, get password reset token, delete users, index and read private statuses and chats)" + }, + %{ + key: :birthday_required, + type: :boolean, + description: "Require users to enter their birthday." + }, + %{ + key: :birthday_min_age, + type: :integer, + description: + "Minimum required age (in days) for users to create account. Only used if birthday is required.", + suggestions: [6570] + }, + %{ + key: :languages, + type: {:list, :string}, + description: + "Languages to be exposed in /api/v1/instance. Should be in the format of BCP47 language codes.", + suggestions: [ + "en" + ] } ] }, @@ -1125,51 +1245,12 @@ config :pleroma, :config_description, [ ] }, %{ - 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, type: :group, description: "This form can be used to configure a keyword list that keeps the configuration data for any " <> - "kind of frontend. By default, settings for pleroma_fe and masto_fe are configured. If you want to " <> + "kind of frontend. By default, settings for pleroma_fe are configured. If you want to " <> "add your own configuration your settings all fields must be complete.", children: [ %{ @@ -1182,7 +1263,6 @@ config :pleroma, :config_description, [ alwaysShowSubjectInput: true, background: "/static/aurora_borealis.jpg", collapseMessageWithSubject: false, - disableChat: false, greentext: false, hideFilteredStatuses: false, hideMutedPosts: false, @@ -1230,12 +1310,6 @@ config :pleroma, :config_description, [ "When a message has a subject (aka Content Warning), collapse it by default" }, %{ - key: :disableChat, - label: "PleromaFE Chat", - type: :boolean, - description: "Disables PleromaFE Chat component" - }, - %{ key: :greentext, label: "Greentext", type: :boolean, @@ -1376,25 +1450,6 @@ config :pleroma, :config_description, [ suggestions: ["pleroma-dark"] } ] - }, - %{ - key: :masto_fe, - label: "Masto FE", - type: :map, - description: "Settings for Masto FE", - suggestions: [ - %{ - showInstanceSpecificPanel: true - } - ], - children: [ - %{ - key: :showInstanceSpecificPanel, - label: "Show instance specific panel", - type: :boolean, - description: "Whenether to show the instance's specific panel" - } - ] } ] }, @@ -1702,11 +1757,21 @@ config :pleroma, :config_description, [ description: "Whether to federate blocks to other instances" }, %{ + key: :blockers_visible, + type: :boolean, + description: "Whether a user can see someone who has blocked them" + }, + %{ key: :sign_object_fetches, type: :boolean, description: "Sign object fetches with HTTP signatures" }, %{ + key: :authorized_fetch_mode, + type: :boolean, + description: "Require HTTP signatures for AP fetches" + }, + %{ key: :note_replies_output_limit, type: :integer, description: @@ -2564,45 +2629,6 @@ config :pleroma, :config_description, [ ] }, %{ - group: :esshd, - label: "ESSHD", - type: :group, - description: - "Before enabling this you must add :esshd to mix.exs as one of the extra_applications " <> - "and generate host keys in your priv dir with ssh-keygen -m PEM -N \"\" -b 2048 -t rsa -f ssh_host_rsa_key", - children: [ - %{ - key: :enabled, - type: :boolean, - description: "Enables SSH" - }, - %{ - key: :priv_dir, - type: :string, - description: "Dir with SSH keys", - suggestions: ["/some/path/ssh_keys"] - }, - %{ - key: :handler, - type: :string, - description: "Handler module", - suggestions: ["Pleroma.BBS.Handler"] - }, - %{ - key: :port, - type: :integer, - description: "Port to connect", - suggestions: [10_022] - }, - %{ - key: :password_authenticator, - type: :string, - description: "Authenticator module", - suggestions: ["Pleroma.BBS.Authenticator"] - } - ] - }, - %{ group: :mime, label: "Mime Types", type: :group, @@ -2652,13 +2678,22 @@ config :pleroma, :config_description, [ }, %{ group: :pleroma, - key: :chat, + key: :shout, type: :group, - description: "Pleroma chat settings", + description: "Pleroma shout settings", children: [ %{ key: :enabled, - type: :boolean + type: :boolean, + description: "Enables the backend Shoutbox chat feature." + }, + %{ + key: :limit, + type: :integer, + description: "Shout message character limit.", + suggestions: [ + 5_000 + ] } ] }, @@ -2703,7 +2738,7 @@ config :pleroma, :config_description, [ key: :versions, type: {:list, :atom}, description: "List of TLS version to use", - suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"] + suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2", ":tlsv1.3"] } ] } diff --git a/config/dev.exs b/config/dev.exs index 4faaeff5b..ab3e83c12 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # For development, we disable any cache and enable # debugging and code reloading. @@ -54,10 +54,15 @@ config :pleroma, Pleroma.Repo, config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true +# Reduce recompilation time +# https://dashbit.co/blog/speeding-up-re-compilation-of-elixir-projects +config :phoenix, :plug_init_mode, :runtime + if File.exists?("./config/dev.secret.exs") do import_config "dev.secret.exs" else IO.puts( + :stderr, "!!! RUNNING IN LOCALHOST DEV MODE! !!!\nFEDERATION WON'T WORK UNTIL YOU CONFIGURE A dev.secret.exs" ) end diff --git a/config/docker.exs b/config/docker.exs index f9f27d141..5db222485 100644 --- a/config/docker.exs +++ b/config/docker.exs @@ -18,6 +18,7 @@ config :pleroma, Pleroma.Repo, password: System.fetch_env!("DB_PASS"), database: System.get_env("DB_NAME", "pleroma"), hostname: System.get_env("DB_HOST", "db"), + port: System.get_env("DB_PORT", "5432"), pool_size: 10 # Configure web push notifications diff --git a/config/dokku.exs b/config/dokku.exs index 9ea0ec450..1cc396c3d 100644 --- a/config/dokku.exs +++ b/config/dokku.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :pleroma, Pleroma.Web.Endpoint, http: [ diff --git a/config/prod.exs b/config/prod.exs index adbce5606..968f596e0 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # For production, we often load configuration from external # sources, such as your system environment. For this reason, @@ -63,7 +63,12 @@ config :logger, :ex_syslogger, level: :info # Finally import the config/prod.secret.exs # which should be versioned separately. -import_config "prod.secret.exs" +if File.exists?("./config/prod.secret.exs") do + import_config "prod.secret.exs" +else + "`config/prod.secret.exs` not found. You may want to create one by running `mix pleroma.instance gen`" + |> IO.warn([]) +end if File.exists?("./config/prod.exported_from_db.secret.exs"), do: import_config("prod.exported_from_db.secret.exs") diff --git a/config/test.exs b/config/test.exs index 87396a88d..78303eb1d 100644 --- a/config/test.exs +++ b/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # We don't run a server during test. If one is required, # you can enable the server option below. @@ -47,6 +47,7 @@ config :pleroma, Pleroma.Repo, password: "postgres", database: "pleroma_test", hostname: System.get_env("DB_HOST") || "localhost", + port: System.get_env("DB_PORT") || "5432", pool: Ecto.Adapters.SQL.Sandbox, pool_size: 50 @@ -81,10 +82,7 @@ config :web_push_encryption, :vapid_details, "BLH1qVhJItRGCfxgTtONfsOKDc9VRAraXw-3NsmjMngWSh7NxOizN6bkuRA7iLTMPS82PjwJAr3UoK9EC1IFrz4", private_key: "_-XZ0iebPrRfZ_o0-IatTdszYa8VCH1yLN-JauK7HHA" -config :pleroma, Oban, - queues: false, - crontab: false, - plugins: false +config :pleroma, Oban, testing: :manual config :pleroma, Pleroma.ScheduledActivity, daily_user_limit: 2, @@ -129,10 +127,16 @@ config :pleroma, :pipeline, config :pleroma, :cachex, provider: Pleroma.CachexMock +config :pleroma, Pleroma.Web.WebFinger, update_nickname_on_user_fetch: false + config :pleroma, :side_effects, ap_streamer: Pleroma.Web.ActivityPub.ActivityPubMock, logger: Pleroma.LoggerMock +# Reduce recompilation time +# https://dashbit.co/blog/speeding-up-re-compilation-of-elixir-projects +config :phoenix, :plug_init_mode, :runtime + if File.exists?("./config/test.secret.exs") do import_config "test.secret.exs" else |