%{
key: :reject,
type: {:list, :string},
- description: "List of instances to reject any activities from",
+ description: "List of instances to reject activities from (except deletes)",
suggestions: ["example.com", "*.example.com"]
},
%{
key: :accept,
type: {:list, :string},
- description: "List of instances to accept any activities from",
+ description: "List of instances to only accept activities from (except deletes)",
suggestions: ["example.com", "*.example.com"]
},
%{
type: {:list, :string},
description: "List of instances to strip banners from",
suggestions: ["example.com", "*.example.com"]
+ },
+ %{
+ key: :reject_deletes,
+ type: {:list, :string},
+ description: "List of instances to reject deletions from",
+ suggestions: ["example.com", "*.example.com"]
}
]
},
}
]
},
- %{
- group: :pleroma_job_queue,
- key: :queues,
- type: :group,
- description: "[Deprecated] Replaced with `Oban`/`:queues` (keeping the same format)"
- },
- %{
- group: :pleroma,
- key: Pleroma.Web.Federator.RetryQueue,
- type: :group,
- description: "[Deprecated] See `Oban` and `:workers` sections for configuration notes",
- children: [
- %{
- key: :max_retries,
- type: :integer,
- description: "[Deprecated] Replaced as `Oban`/`:queues`/`:outgoing_federation` value"
- }
- ]
- },
%{
group: :pleroma,
key: Oban,
suggestions: [50]
}
]
+ },
+ %{
+ key: :crontab,
+ type: {:list, :tuple},
+ description: "Settings for cron background jobs",
+ suggestions: [
+ {"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}
+ ]
}
]
},
}
]
},
- %{
- group: :pleroma,
- key: :fetch_initial_posts,
- type: :group,
- description: "Fetching initial posts settings",
- children: [
- %{
- key: :enabled,
- type: :boolean,
- description: "Fetch posts when a new user is federated with"
- },
- %{
- key: :pages,
- type: :integer,
- description: "The amount of pages to fetch",
- suggestions: [5]
- }
- ]
- },
%{
group: :auto_linker,
key: :opts,
children: [
%{
key: :active,
+ label: "Enabled",
type: :boolean,
description: "Globally enable or disable digest emails"
},
description: "For the search requests (account & status search etc.)",
suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
},
+ %{
+ key: :timeline,
+ type: [:tuple, {:list, :tuple}],
+ description: "For requests to timelines (each timeline has it's own limiter)",
+ suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
+ },
%{
key: :app_account_creation,
type: [:tuple, {:list, :tuple}],
%{
key: :relations_actions,
type: [:tuple, {:list, :tuple}],
- description: "For actions on relations with all users (follow, unfollow)",
+ description: "For actions on relationships with all users (follow, unfollow)",
suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
},
%{
}
]
},
- %{
- group: :tesla,
- type: :group,
- description: "Tesla settings",
- children: [
- %{
- key: :adapter,
- type: :module,
- description: "Tesla adapter",
- suggestions: [Tesla.Adapter.Hackney]
- }
- ]
- },
%{
group: :pleroma,
key: :chat,
description: "A path to custom Elixir modules (such as MRF policies)."
}
]
+ },
+ %{
+ group: :pleroma,
+ key: :streamer,
+ type: :group,
+ description: "Settings for notifications streamer",
+ children: [
+ %{
+ key: :workers,
+ type: :integer,
+ description: "Number of workers to send notifications.",
+ suggestions: [3]
+ },
+ %{
+ key: :overflow_workers,
+ type: :integer,
+ description: "Maximum number of workers created if pool is empty.",
+ suggestions: [2]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :connections_pool,
+ type: :group,
+ description: "Advanced settings for `gun` connections pool",
+ children: [
+ %{
+ key: :checkin_timeout,
+ type: :integer,
+ description: "Timeout to checkin connection from pool. Default: 250ms.",
+ suggestions: [250]
+ },
+ %{
+ key: :max_connections,
+ type: :integer,
+ description: "Maximum number of connections in the pool. Default: 250 connections.",
+ suggestions: [250]
+ },
+ %{
+ key: :retry,
+ type: :integer,
+ description:
+ "Number of retries, while `gun` will try to reconnect if connection goes down. Default: 1.",
+ suggestions: [1]
+ },
+ %{
+ key: :retry_timeout,
+ type: :integer,
+ description:
+ "Time between retries when `gun` will try to reconnect in milliseconds. Default: 1000ms.",
+ suggestions: [1000]
+ },
+ %{
+ key: :await_up_timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait until connection is up. Default: 5000ms.",
+ suggestions: [5000]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :pools,
+ type: :group,
+ description: "Advanced settings for `gun` workers pools",
+ children: [
+ %{
+ key: :federation,
+ type: :keyword,
+ description: "Settings for federation pool.",
+ children: [
+ %{
+ key: :size,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [50]
+ },
+ %{
+ key: :max_overflow,
+ type: :integer,
+ description: "Number of additional workers if pool is under load.",
+ suggestions: [10]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait for response.",
+ suggestions: [150_000]
+ }
+ ]
+ },
+ %{
+ key: :media,
+ type: :keyword,
+ description: "Settings for media pool.",
+ children: [
+ %{
+ key: :size,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [50]
+ },
+ %{
+ key: :max_overflow,
+ type: :integer,
+ description: "Number of additional workers if pool is under load.",
+ suggestions: [10]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait for response.",
+ suggestions: [150_000]
+ }
+ ]
+ },
+ %{
+ key: :upload,
+ type: :keyword,
+ description: "Settings for upload pool.",
+ children: [
+ %{
+ key: :size,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [25]
+ },
+ %{
+ key: :max_overflow,
+ type: :integer,
+ description: "Number of additional workers if pool is under load.",
+ suggestions: [5]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait for response.",
+ suggestions: [300_000]
+ }
+ ]
+ },
+ %{
+ key: :default,
+ type: :keyword,
+ description: "Settings for default pool.",
+ children: [
+ %{
+ key: :size,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [10]
+ },
+ %{
+ key: :max_overflow,
+ type: :integer,
+ description: "Number of additional workers if pool is under load.",
+ suggestions: [2]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait for response.",
+ suggestions: [10_000]
+ }
+ ]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :hackney_pools,
+ type: :group,
+ description: "Advanced settings for `hackney` connections pools",
+ children: [
+ %{
+ key: :federation,
+ type: :keyword,
+ description: "Settings for federation pool.",
+ children: [
+ %{
+ key: :max_connections,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [50]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `hackney` will wait for response.",
+ suggestions: [150_000]
+ }
+ ]
+ },
+ %{
+ key: :media,
+ type: :keyword,
+ description: "Settings for media pool.",
+ children: [
+ %{
+ key: :max_connections,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [50]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `hackney` will wait for response.",
+ suggestions: [150_000]
+ }
+ ]
+ },
+ %{
+ key: :upload,
+ type: :keyword,
+ description: "Settings for upload pool.",
+ children: [
+ %{
+ key: :max_connections,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [25]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `hackney` will wait for response.",
+ suggestions: [300_000]
+ }
+ ]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :restrict_unauthenticated,
+ type: :group,
+ description:
+ "Disallow viewing timelines, user profiles and statuses for unauthenticated users.",
+ children: [
+ %{
+ key: :timelines,
+ type: :map,
+ description: "Settings for public and federated timelines.",
+ children: [
+ %{
+ key: :local,
+ type: :boolean,
+ description: "Disallow view public timeline."
+ },
+ %{
+ key: :federated,
+ type: :boolean,
+ description: "Disallow view federated timeline."
+ }
+ ]
+ },
+ %{
+ key: :profiles,
+ type: :map,
+ description: "Settings for user profiles.",
+ children: [
+ %{
+ key: :local,
+ type: :boolean,
+ description: "Disallow view local user profiles."
+ },
+ %{
+ key: :remote,
+ type: :boolean,
+ description: "Disallow view remote user profiles."
+ }
+ ]
+ },
+ %{
+ key: :activities,
+ type: :map,
+ description: "Settings for statuses.",
+ children: [
+ %{
+ key: :local,
+ type: :boolean,
+ description: "Disallow view local statuses."
+ },
+ %{
+ key: :remote,
+ type: :boolean,
+ description: "Disallow view remote statuses."
+ }
+ ]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: Pleroma.Web.ApiSpec.CastAndValidate,
+ type: :group,
+ children: [
+ %{
+ key: :strict,
+ type: :boolean,
+ description:
+ "Enables strict input validation (useful in development, not recommended in production)",
+ suggestions: [false]
+ }
+ ]
}
]