Fork of Pleroma with site-specific changes and feature branches https://git.pleroma.social/pleroma/pleroma
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

391 lines
9.4KB

  1. # This file is responsible for configuring your application
  2. # and its dependencies with the aid of the Mix.Config module.
  3. #
  4. # This configuration file is loaded before any dependency and
  5. # is restricted to this project.
  6. use Mix.Config
  7. # General application configuration
  8. config :pleroma, ecto_repos: [Pleroma.Repo]
  9. config :pleroma, Pleroma.Captcha,
  10. enabled: false,
  11. seconds_valid: 60,
  12. method: Pleroma.Captcha.Kocaptcha
  13. config :pleroma, :hackney_pools,
  14. federation: [
  15. max_connections: 50,
  16. timeout: 150_000
  17. ],
  18. media: [
  19. max_connections: 50,
  20. timeout: 150_000
  21. ],
  22. upload: [
  23. max_connections: 25,
  24. timeout: 300_000
  25. ]
  26. config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
  27. # Upload configuration
  28. config :pleroma, Pleroma.Upload,
  29. uploader: Pleroma.Uploaders.Local,
  30. filters: [Pleroma.Upload.Filter.Dedupe],
  31. link_name: true,
  32. proxy_remote: false,
  33. proxy_opts: [
  34. redirect_on_failure: false,
  35. max_body_length: 25 * 1_048_576,
  36. http: [
  37. follow_redirect: true,
  38. pool: :upload
  39. ]
  40. ]
  41. config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
  42. config :pleroma, Pleroma.Uploaders.S3,
  43. bucket: nil,
  44. public_endpoint: "https://s3.amazonaws.com"
  45. config :pleroma, Pleroma.Uploaders.MDII,
  46. cgi: "https://mdii.sakura.ne.jp/mdii-post.cgi",
  47. files: "https://mdii.sakura.ne.jp"
  48. config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"]
  49. config :pleroma, :uri_schemes,
  50. valid_schemes: [
  51. "https",
  52. "http",
  53. "dat",
  54. "dweb",
  55. "gopher",
  56. "ipfs",
  57. "ipns",
  58. "irc",
  59. "ircs",
  60. "magnet",
  61. "mailto",
  62. "mumble",
  63. "ssb",
  64. "xmpp"
  65. ]
  66. websocket_config = [
  67. path: "/websocket",
  68. serializer: [
  69. {Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"},
  70. {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}
  71. ],
  72. timeout: 60_000,
  73. transport_log: false,
  74. compress: false
  75. ]
  76. # Configures the endpoint
  77. config :pleroma, Pleroma.Web.Endpoint,
  78. url: [host: "localhost"],
  79. http: [
  80. dispatch: [
  81. {:_,
  82. [
  83. {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []},
  84. {"/websocket", Phoenix.Endpoint.CowboyWebSocket,
  85. {Phoenix.Transports.WebSocket,
  86. {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}},
  87. {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}}
  88. ]}
  89. ]
  90. ],
  91. protocol: "https",
  92. secret_key_base: "aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl",
  93. signing_salt: "CqaoopA2",
  94. render_errors: [view: Pleroma.Web.ErrorView, accepts: ~w(json)],
  95. pubsub: [name: Pleroma.PubSub, adapter: Phoenix.PubSub.PG2],
  96. secure_cookie_flag: true
  97. # Configures Elixir's Logger
  98. config :logger, :console,
  99. format: "$time $metadata[$level] $message\n",
  100. metadata: [:request_id]
  101. config :logger, :ex_syslogger,
  102. level: :debug,
  103. ident: "Pleroma",
  104. format: "$metadata[$level] $message",
  105. metadata: [:request_id]
  106. config :quack,
  107. level: :warn,
  108. meta: [:all],
  109. webhook_url: "https://hooks.slack.com/services/YOUR-KEY-HERE"
  110. config :mime, :types, %{
  111. "application/xml" => ["xml"],
  112. "application/xrd+xml" => ["xrd+xml"],
  113. "application/jrd+json" => ["jrd+json"],
  114. "application/activity+json" => ["activity+json"],
  115. "application/ld+json" => ["activity+json"]
  116. }
  117. config :pleroma, :websub, Pleroma.Web.Websub
  118. config :pleroma, :ostatus, Pleroma.Web.OStatus
  119. config :pleroma, :httpoison, Pleroma.HTTP
  120. config :tesla, adapter: Tesla.Adapter.Hackney
  121. # Configures http settings, upstream proxy etc.
  122. config :pleroma, :http,
  123. proxy_url: nil,
  124. adapter: [
  125. ssl_options: [
  126. # We don't support TLS v1.3 yet
  127. versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]
  128. ]
  129. ]
  130. config :pleroma, :instance,
  131. name: "Pleroma",
  132. email: "example@example.com",
  133. description: "A Pleroma instance, an alternative fediverse server",
  134. limit: 5_000,
  135. remote_limit: 100_000,
  136. upload_limit: 16_000_000,
  137. avatar_upload_limit: 2_000_000,
  138. background_upload_limit: 4_000_000,
  139. banner_upload_limit: 4_000_000,
  140. registrations_open: true,
  141. federating: true,
  142. federation_reachability_timeout_days: 7,
  143. allow_relay: true,
  144. rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,
  145. public: true,
  146. quarantined_instances: [],
  147. managed_config: true,
  148. static_dir: "instance/static/",
  149. allowed_post_formats: [
  150. "text/plain",
  151. "text/html",
  152. "text/markdown"
  153. ],
  154. finmoji_enabled: true,
  155. mrf_transparency: true,
  156. autofollowed_nicknames: [],
  157. max_pinned_statuses: 1,
  158. no_attachment_links: false,
  159. welcome_user_nickname: nil,
  160. welcome_message: nil,
  161. max_report_comment_size: 1000,
  162. safe_dm_mentions: false
  163. config :pleroma, :markup,
  164. # XXX - unfortunately, inline images must be enabled by default right now, because
  165. # of custom emoji. Issue #275 discusses defanging that somehow.
  166. allow_inline_images: true,
  167. allow_headings: false,
  168. allow_tables: false,
  169. allow_fonts: false,
  170. scrub_policy: [
  171. Pleroma.HTML.Transform.MediaProxy,
  172. Pleroma.HTML.Scrubber.Default
  173. ]
  174. # Deprecated, will be gone in 1.0
  175. config :pleroma, :fe,
  176. theme: "pleroma-dark",
  177. logo: "/static/logo.png",
  178. logo_mask: true,
  179. logo_margin: "0.1em",
  180. background: "/static/aurora_borealis.jpg",
  181. redirect_root_no_login: "/main/all",
  182. redirect_root_login: "/main/friends",
  183. show_instance_panel: true,
  184. scope_options_enabled: false,
  185. formatting_options_enabled: false,
  186. collapse_message_with_subject: false,
  187. hide_post_stats: false,
  188. hide_user_stats: false,
  189. scope_copy: true,
  190. subject_line_behavior: "email",
  191. always_show_subject_input: true
  192. config :pleroma, :frontend_configurations,
  193. pleroma_fe: %{
  194. theme: "pleroma-dark",
  195. logo: "/static/logo.png",
  196. background: "/images/city.jpg",
  197. redirectRootNoLogin: "/main/all",
  198. redirectRootLogin: "/main/friends",
  199. showInstanceSpecificPanel: true,
  200. scopeOptionsEnabled: false,
  201. formattingOptionsEnabled: false,
  202. collapseMessageWithSubject: false,
  203. hidePostStats: false,
  204. hideUserStats: false,
  205. scopeCopy: true,
  206. subjectLineBehavior: "email",
  207. alwaysShowSubjectInput: true
  208. },
  209. masto_fe: %{
  210. showInstanceSpecificPanel: true
  211. }
  212. config :pleroma, :activitypub,
  213. accept_blocks: true,
  214. unfollow_blocked: true,
  215. outgoing_blocks: true,
  216. follow_handshake_timeout: 500
  217. config :pleroma, :user, deny_follow_blocked: true
  218. config :pleroma, :mrf_normalize_markup, scrub_policy: Pleroma.HTML.Scrubber.Default
  219. config :pleroma, :mrf_rejectnonpublic,
  220. allow_followersonly: false,
  221. allow_direct: false
  222. config :pleroma, :mrf_hellthread,
  223. delist_threshold: 10,
  224. reject_threshold: 20
  225. config :pleroma, :mrf_simple,
  226. media_removal: [],
  227. media_nsfw: [],
  228. federated_timeline_removal: [],
  229. reject: [],
  230. accept: []
  231. config :pleroma, :mrf_keyword,
  232. reject: [],
  233. federated_timeline_removal: [],
  234. replace: []
  235. config :pleroma, :rich_media, enabled: true
  236. config :pleroma, :media_proxy,
  237. enabled: false,
  238. proxy_opts: [
  239. redirect_on_failure: false,
  240. max_body_length: 25 * 1_048_576,
  241. http: [
  242. follow_redirect: true,
  243. pool: :media
  244. ]
  245. ]
  246. config :pleroma, :chat, enabled: true
  247. config :phoenix, :format_encoders, json: Jason
  248. config :pleroma, :gopher,
  249. enabled: false,
  250. ip: {0, 0, 0, 0},
  251. port: 9999
  252. config :pleroma, Pleroma.Web.Metadata, providers: [], unfurl_nsfw: false
  253. config :pleroma, :suggestions,
  254. enabled: false,
  255. third_party_engine:
  256. "http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-suggestions-api.cgi?{{host}}+{{user}}",
  257. timeout: 300_000,
  258. limit: 23,
  259. web: "https://vinayaka.distsn.org/?{{host}}+{{user}}"
  260. config :pleroma, :http_security,
  261. enabled: true,
  262. sts: false,
  263. sts_max_age: 31_536_000,
  264. ct_max_age: 2_592_000,
  265. referrer_policy: "same-origin"
  266. config :cors_plug,
  267. max_age: 86_400,
  268. methods: ["POST", "PUT", "DELETE", "GET", "PATCH", "OPTIONS"],
  269. expose: [
  270. "Link",
  271. "X-RateLimit-Reset",
  272. "X-RateLimit-Limit",
  273. "X-RateLimit-Remaining",
  274. "X-Request-Id",
  275. "Idempotency-Key"
  276. ],
  277. credentials: true,
  278. headers: ["Authorization", "Content-Type", "Idempotency-Key"]
  279. config :pleroma, Pleroma.User,
  280. restricted_nicknames: [
  281. ".well-known",
  282. "~",
  283. "about",
  284. "activities",
  285. "api",
  286. "auth",
  287. "dev",
  288. "friend-requests",
  289. "inbox",
  290. "internal",
  291. "main",
  292. "media",
  293. "nodeinfo",
  294. "notice",
  295. "oauth",
  296. "objects",
  297. "ostatus_subscribe",
  298. "pleroma",
  299. "proxy",
  300. "push",
  301. "registration",
  302. "relay",
  303. "settings",
  304. "status",
  305. "tag",
  306. "user-search",
  307. "users",
  308. "web"
  309. ]
  310. config :pleroma, Pleroma.Web.Federator.RetryQueue,
  311. enabled: false,
  312. max_jobs: 20,
  313. initial_timeout: 30,
  314. max_retries: 5
  315. config :pleroma_job_queue, :queues,
  316. federator_incoming: 50,
  317. federator_outgoing: 50,
  318. mailer: 10
  319. config :pleroma, :fetch_initial_posts,
  320. enabled: false,
  321. pages: 5
  322. config :auto_linker,
  323. opts: [
  324. scheme: true,
  325. extra: true,
  326. class: false,
  327. strip_prefix: false,
  328. new_window: false,
  329. rel: false
  330. ]
  331. config :pleroma, :ldap,
  332. enabled: System.get_env("LDAP_ENABLED") == "true",
  333. host: System.get_env("LDAP_HOST") || "localhost",
  334. port: String.to_integer(System.get_env("LDAP_PORT") || "389"),
  335. ssl: System.get_env("LDAP_SSL") == "true",
  336. sslopts: [],
  337. tls: System.get_env("LDAP_TLS") == "true",
  338. tlsopts: [],
  339. base: System.get_env("LDAP_BASE") || "dc=example,dc=com",
  340. uid: System.get_env("LDAP_UID") || "cn"
  341. config :pleroma, Pleroma.Mailer, adapter: Swoosh.Adapters.Sendmail
  342. # Import environment specific config. This must remain at the bottom
  343. # of this file so it overrides the configuration defined above.
  344. import_config "#{Mix.env()}.exs"