2017-12-08 09:58:14 +01: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.
|
2019-10-05 19:07:50 +02:00
|
|
|
import Config
|
2017-12-08 09:58:14 +01:00
|
|
|
|
|
|
|
# General application configuration
|
2018-10-11 17:37:39 +02:00
|
|
|
config :mobilizon,
|
2019-10-12 13:16:36 +02:00
|
|
|
ecto_repos: [Mobilizon.Storage.Repo],
|
2021-02-01 14:57:58 +01:00
|
|
|
env: config_env()
|
2017-12-08 09:58:14 +01:00
|
|
|
|
2020-01-30 20:27:25 +01:00
|
|
|
config :mobilizon, Mobilizon.Storage.Repo, types: Mobilizon.Storage.PostgresTypes
|
|
|
|
|
2018-10-11 17:37:39 +02:00
|
|
|
config :mobilizon, :instance,
|
2020-01-30 20:27:25 +01:00
|
|
|
name: "My Mobilizon Instance",
|
|
|
|
description: "Change this to a proper description of your instance",
|
|
|
|
hostname: "localhost",
|
|
|
|
registrations_open: false,
|
2020-09-29 09:53:48 +02:00
|
|
|
registration_email_allowlist: [],
|
2021-08-08 19:46:39 +02:00
|
|
|
registration_email_denylist: [],
|
2020-10-07 15:37:23 +02:00
|
|
|
languages: [],
|
2020-10-09 12:17:33 +02:00
|
|
|
default_language: "en",
|
2020-01-30 20:27:25 +01:00
|
|
|
demo: false,
|
2019-05-22 14:12:11 +02:00
|
|
|
repository: Mix.Project.config()[:source_url],
|
2019-07-30 16:40:59 +02:00
|
|
|
allow_relay: true,
|
2019-12-03 11:29:51 +01:00
|
|
|
federating: true,
|
2019-05-22 14:12:11 +02:00
|
|
|
remote_limit: 100_000,
|
2021-04-12 10:13:11 +02:00
|
|
|
upload_limit: 10_485_760,
|
|
|
|
avatar_upload_limit: 2_097_152,
|
|
|
|
banner_upload_limit: 4_194_304,
|
2020-11-26 11:41:13 +01:00
|
|
|
remove_orphan_uploads: true,
|
|
|
|
orphan_upload_grace_period_hours: 48,
|
2020-11-26 14:48:10 +01:00
|
|
|
remove_unconfirmed_users: true,
|
|
|
|
unconfirmed_user_grace_period_hours: 48,
|
2021-03-02 14:34:52 +01:00
|
|
|
activity_expire_days: 365,
|
|
|
|
activity_keep_number: 100,
|
2021-03-26 15:40:10 +01:00
|
|
|
enable_instance_feeds: false,
|
2020-01-30 20:27:25 +01:00
|
|
|
email_from: "noreply@localhost",
|
|
|
|
email_reply_to: "noreply@localhost"
|
2018-05-17 11:32:23 +02:00
|
|
|
|
2020-09-29 09:53:48 +02:00
|
|
|
config :mobilizon, :groups, enabled: true
|
2020-09-02 15:08:47 +02:00
|
|
|
config :mobilizon, :events, creation: true
|
2018-05-17 11:32:23 +02:00
|
|
|
|
2021-10-06 18:00:50 +02:00
|
|
|
config :mobilizon, :restrictions, only_admin_can_create_groups: false
|
|
|
|
config :mobilizon, :restrictions, only_groups_can_create_events: false
|
|
|
|
|
2017-12-08 09:58:14 +01:00
|
|
|
# Configures the endpoint
|
2020-01-26 21:36:50 +01:00
|
|
|
config :mobilizon, Mobilizon.Web.Endpoint,
|
2020-01-30 20:27:25 +01:00
|
|
|
url: [
|
|
|
|
host: "mobilizon.local",
|
|
|
|
scheme: "https"
|
|
|
|
],
|
2017-12-08 09:58:14 +01:00
|
|
|
secret_key_base: "1yOazsoE0Wqu4kXk3uC5gu3jDbShOimTCzyFL3OjCdBmOXMyHX87Qmf3+Tu9s0iM",
|
2020-01-26 21:36:50 +01:00
|
|
|
render_errors: [view: Mobilizon.Web.ErrorView, accepts: ~w(html json)],
|
2020-02-18 08:57:00 +01:00
|
|
|
pubsub_server: Mobilizon.PubSub,
|
2020-08-27 15:42:09 +02:00
|
|
|
cache_static_manifest: "priv/static/manifest.json",
|
|
|
|
has_reverse_proxy: true
|
2017-12-08 09:58:14 +01:00
|
|
|
|
2020-09-02 15:08:47 +02:00
|
|
|
config :mime, :types, %{
|
|
|
|
"application/activity+json" => ["activity-json"],
|
2020-09-23 09:23:06 +02:00
|
|
|
"application/ld+json" => ["activity-json"],
|
2021-03-23 19:28:19 +01:00
|
|
|
"application/jrd+json" => ["jrd-json"],
|
|
|
|
"application/xrd+xml" => ["xrd-xml"]
|
2020-09-02 15:08:47 +02:00
|
|
|
}
|
|
|
|
|
2019-05-22 14:12:11 +02:00
|
|
|
# Upload configuration
|
2020-01-26 21:36:50 +01:00
|
|
|
config :mobilizon, Mobilizon.Web.Upload,
|
|
|
|
uploader: Mobilizon.Web.Upload.Uploader.Local,
|
2019-10-21 13:42:45 +02:00
|
|
|
filters: [
|
2021-06-10 09:36:25 +02:00
|
|
|
Mobilizon.Web.Upload.Filter.AnalyzeMetadata,
|
2021-08-05 12:48:22 +02:00
|
|
|
Mobilizon.Web.Upload.Filter.Resize,
|
2021-08-12 10:29:40 +02:00
|
|
|
Mobilizon.Web.Upload.Filter.Optimize,
|
|
|
|
Mobilizon.Web.Upload.Filter.BlurHash,
|
|
|
|
Mobilizon.Web.Upload.Filter.Dedupe
|
2019-10-21 13:42:45 +02:00
|
|
|
],
|
2020-10-09 19:29:12 +02:00
|
|
|
allow_list_mime_types: ["image/gif", "image/jpeg", "image/png", "image/webp"],
|
2019-05-22 14:12:11 +02:00
|
|
|
link_name: true,
|
|
|
|
proxy_remote: false,
|
|
|
|
proxy_opts: [
|
|
|
|
redirect_on_failure: false,
|
|
|
|
max_body_length: 25 * 1_048_576,
|
|
|
|
http: [
|
|
|
|
follow_redirect: true,
|
|
|
|
pool: :upload
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
2021-03-11 19:50:54 +01:00
|
|
|
config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "/var/lib/mobilizon/uploads"
|
2019-05-22 14:12:11 +02:00
|
|
|
|
2021-11-08 20:27:13 +01:00
|
|
|
config :tz_world, data_dir: "/var/lib/mobilizon/timezones"
|
|
|
|
|
2021-11-13 18:45:01 +01:00
|
|
|
config :mobilizon, Timex.Gettext, default_locale: "en"
|
|
|
|
|
2021-01-26 10:05:01 +01:00
|
|
|
config :mobilizon, :media_proxy,
|
|
|
|
enabled: true,
|
|
|
|
proxy_opts: [
|
|
|
|
redirect_on_failure: false,
|
|
|
|
max_body_length: 25 * 1_048_576,
|
|
|
|
# Note: max_read_duration defaults to Mobilizon.Web.ReverseProxy.max_read_duration_default/1
|
|
|
|
max_read_duration: 30_000,
|
|
|
|
http: [
|
|
|
|
follow_redirect: true,
|
|
|
|
pool: :media
|
|
|
|
]
|
2021-01-28 10:56:43 +01:00
|
|
|
]
|
2021-01-26 10:05:01 +01:00
|
|
|
|
2020-01-30 20:27:25 +01:00
|
|
|
config :mobilizon, Mobilizon.Web.Email.Mailer,
|
2022-04-05 12:16:22 +02:00
|
|
|
adapter: Swoosh.Adapters.SMTP,
|
|
|
|
relay: "localhost",
|
2020-10-21 10:10:44 +02:00
|
|
|
# usually 25, 465 or 587
|
2020-01-30 20:27:25 +01:00
|
|
|
port: 25,
|
2022-04-05 15:57:30 +02:00
|
|
|
username: "",
|
|
|
|
password: "",
|
|
|
|
# can be `:always` or `:never`
|
|
|
|
auth: :if_available,
|
|
|
|
# can be `true`
|
|
|
|
ssl: false,
|
2020-01-30 20:27:25 +01:00
|
|
|
# can be `:always` or `:never`
|
|
|
|
tls: :if_available,
|
|
|
|
allowed_tls_versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"],
|
|
|
|
retries: 1,
|
|
|
|
# can be `true`
|
|
|
|
no_mx_lookups: false
|
|
|
|
|
2017-12-08 09:58:14 +01:00
|
|
|
# Configures Elixir's Logger
|
|
|
|
config :logger, :console,
|
2021-06-27 13:15:24 +02:00
|
|
|
backends: [:console],
|
2017-12-08 09:58:14 +01:00
|
|
|
format: "$time $metadata[$level] $message\n",
|
|
|
|
metadata: [:request_id]
|
|
|
|
|
2021-02-04 18:57:26 +01:00
|
|
|
config :logger, Sentry.LoggerBackend,
|
|
|
|
level: :warn,
|
|
|
|
capture_log_messages: true
|
|
|
|
|
2021-05-25 11:00:46 +02:00
|
|
|
config :mobilizon, Mobilizon.Web.Auth.Guardian,
|
|
|
|
issuer: "mobilizon",
|
|
|
|
token_ttl: %{
|
|
|
|
"access" => {15, :minutes},
|
|
|
|
"refresh" => {60, :days}
|
|
|
|
}
|
2018-01-13 23:33:03 +01:00
|
|
|
|
|
|
|
config :guardian, Guardian.DB,
|
2019-09-08 01:49:56 +02:00
|
|
|
repo: Mobilizon.Storage.Repo,
|
2018-07-27 10:45:35 +02:00
|
|
|
# default
|
|
|
|
schema_name: "guardian_tokens",
|
|
|
|
# store all token types if not set
|
2021-05-25 11:00:46 +02:00
|
|
|
token_types: ["refresh"],
|
2018-07-27 10:45:35 +02:00
|
|
|
# default: 60 minutes
|
|
|
|
sweep_interval: 60
|
2018-07-09 14:19:24 +02:00
|
|
|
|
2020-02-18 08:57:00 +01:00
|
|
|
config :elixir, :time_zone_database, Tzdata.TimeZoneDatabase
|
|
|
|
|
2020-06-27 19:12:45 +02:00
|
|
|
config :mobilizon,
|
|
|
|
Mobilizon.Service.Auth.Authenticator,
|
|
|
|
Mobilizon.Service.Auth.MobilizonAuthenticator
|
|
|
|
|
|
|
|
config :ueberauth,
|
|
|
|
Ueberauth,
|
|
|
|
providers: []
|
|
|
|
|
|
|
|
config :mobilizon, :auth, oauth_consumer_strategies: []
|
|
|
|
|
2018-07-09 14:19:24 +02:00
|
|
|
config :geolix,
|
2018-07-27 10:45:35 +02:00
|
|
|
databases: [
|
|
|
|
%{
|
|
|
|
id: :city,
|
|
|
|
adapter: Geolix.Adapter.MMDB2,
|
2021-03-11 19:50:54 +01:00
|
|
|
source: "/var/lib/mobilizon/geo/GeoLite2-City.mmdb"
|
2018-07-27 10:45:35 +02:00
|
|
|
}
|
|
|
|
]
|
2018-11-06 10:30:27 +01:00
|
|
|
|
2020-11-30 12:22:05 +01:00
|
|
|
config :mobilizon, Mobilizon.Service.Formatter,
|
|
|
|
class: false,
|
|
|
|
rel: "noopener noreferrer ugc",
|
|
|
|
new_window: true,
|
|
|
|
truncate: false,
|
|
|
|
strip_prefix: false,
|
|
|
|
extra: true,
|
|
|
|
validate_tld: :no_scheme
|
2019-07-26 11:30:28 +02:00
|
|
|
|
2020-07-09 17:24:28 +02:00
|
|
|
config :tesla, adapter: Tesla.Adapter.Hackney
|
|
|
|
|
2019-05-02 13:04:21 +02:00
|
|
|
config :phoenix, :format_encoders, json: Jason, "activity-json": Jason
|
2019-07-03 17:30:22 +02:00
|
|
|
config :phoenix, :json_library, Jason
|
2020-11-16 12:30:06 +01:00
|
|
|
config :phoenix, :filter_parameters, ["password", "token"]
|
2019-03-12 11:52:28 +01:00
|
|
|
|
2021-05-20 10:15:32 +02:00
|
|
|
config :absinthe, schema: Mobilizon.GraphQL.Schema
|
|
|
|
config :absinthe, Absinthe.Logger, filter_variables: ["token", "password", "secret"]
|
|
|
|
|
2022-01-18 12:47:45 +01:00
|
|
|
config :codepagex, :encodings, [
|
|
|
|
:ascii,
|
|
|
|
~r[iso8859]i,
|
|
|
|
:"VENDORS/MICSFT/WINDOWS/CP1252"
|
|
|
|
]
|
|
|
|
|
2021-12-21 19:47:38 +01:00
|
|
|
config :mobilizon, Mobilizon.Web.Gettext, split_module_by: [:locale, :domain]
|
2021-09-10 11:28:38 +02:00
|
|
|
|
2019-09-30 18:18:04 +02:00
|
|
|
config :ex_cldr,
|
|
|
|
default_locale: "en",
|
|
|
|
default_backend: Mobilizon.Cldr
|
|
|
|
|
2019-07-30 16:40:59 +02:00
|
|
|
config :http_signatures,
|
2020-01-22 02:14:42 +01:00
|
|
|
adapter: Mobilizon.Federation.HTTPSignatures.Signature
|
2019-07-30 16:40:59 +02:00
|
|
|
|
2020-11-06 11:25:58 +01:00
|
|
|
config :mobilizon, :cldr,
|
|
|
|
locales: [
|
|
|
|
"fr",
|
2021-09-24 16:46:57 +02:00
|
|
|
"en",
|
2021-11-10 16:39:03 +01:00
|
|
|
"ru",
|
|
|
|
"ar"
|
2020-11-06 11:25:58 +01:00
|
|
|
]
|
|
|
|
|
2020-02-14 17:56:36 +01:00
|
|
|
config :mobilizon, :activitypub,
|
|
|
|
# One day
|
|
|
|
actor_stale_period: 3_600 * 48,
|
|
|
|
actor_key_rotation_delay: 3_600 * 48,
|
2022-04-01 16:48:46 +02:00
|
|
|
sign_object_fetches: true,
|
|
|
|
stale_actor_search_exclusion_after: 3_600 * 24 * 7
|
2019-12-03 11:29:51 +01:00
|
|
|
|
2020-01-30 20:27:25 +01:00
|
|
|
config :mobilizon, Mobilizon.Service.Geospatial, service: Mobilizon.Service.Geospatial.Nominatim
|
|
|
|
|
2019-03-12 11:52:28 +01:00
|
|
|
config :mobilizon, Mobilizon.Service.Geospatial.Nominatim,
|
2020-01-30 20:27:25 +01:00
|
|
|
endpoint: "https://nominatim.openstreetmap.org",
|
|
|
|
api_key: nil
|
2019-03-12 11:52:28 +01:00
|
|
|
|
|
|
|
config :mobilizon, Mobilizon.Service.Geospatial.Addok,
|
2020-01-30 20:27:25 +01:00
|
|
|
endpoint: "https://api-adresse.data.gouv.fr"
|
2019-03-12 11:52:28 +01:00
|
|
|
|
2020-01-30 20:27:25 +01:00
|
|
|
config :mobilizon, Mobilizon.Service.Geospatial.Photon, endpoint: "https://photon.komoot.de"
|
2019-03-12 11:52:28 +01:00
|
|
|
|
|
|
|
config :mobilizon, Mobilizon.Service.Geospatial.GoogleMaps,
|
2020-01-30 20:27:25 +01:00
|
|
|
api_key: nil,
|
|
|
|
fetch_place_details: true
|
2019-03-12 11:52:28 +01:00
|
|
|
|
2020-01-30 20:27:25 +01:00
|
|
|
config :mobilizon, Mobilizon.Service.Geospatial.MapQuest, api_key: nil
|
2019-10-05 19:07:50 +02:00
|
|
|
|
2020-01-30 20:27:25 +01:00
|
|
|
config :mobilizon, Mobilizon.Service.Geospatial.Mimirsbrunn, endpoint: nil
|
2019-11-08 19:37:14 +01:00
|
|
|
|
2020-01-30 20:27:25 +01:00
|
|
|
config :mobilizon, Mobilizon.Service.Geospatial.Pelias, endpoint: nil
|
2019-11-19 17:59:04 +01:00
|
|
|
|
2019-11-20 13:49:57 +01:00
|
|
|
config :mobilizon, :maps,
|
|
|
|
tiles: [
|
2020-01-30 20:27:25 +01:00
|
|
|
endpoint: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
|
|
|
attribution: "© The OpenStreetMap Contributors"
|
2020-12-17 11:26:25 +01:00
|
|
|
],
|
|
|
|
routing: [
|
|
|
|
type: :openstreetmap
|
2019-11-20 13:49:57 +01:00
|
|
|
]
|
|
|
|
|
2021-01-25 15:55:52 +01:00
|
|
|
config :mobilizon, :http_security,
|
|
|
|
enabled: true,
|
|
|
|
sts: false,
|
|
|
|
sts_max_age: 31_536_000,
|
|
|
|
csp_policy: [
|
|
|
|
script_src: [],
|
|
|
|
style_src: [],
|
|
|
|
connect_src: [],
|
|
|
|
font_src: [],
|
|
|
|
img_src: ["*.tile.openstreetmap.org"],
|
|
|
|
manifest_src: [],
|
|
|
|
media_src: [],
|
|
|
|
object_src: [],
|
|
|
|
frame_src: [],
|
|
|
|
frame_ancestors: []
|
|
|
|
],
|
|
|
|
referrer_policy: "same-origin"
|
|
|
|
|
2019-12-20 13:04:34 +01:00
|
|
|
config :mobilizon, :anonymous,
|
|
|
|
participation: [
|
|
|
|
allowed: true,
|
|
|
|
validation: %{
|
|
|
|
email: [
|
|
|
|
enabled: true,
|
|
|
|
confirmation_required: true
|
|
|
|
],
|
|
|
|
captcha: [enabled: false]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
event_creation: [
|
|
|
|
allowed: false,
|
|
|
|
validation: %{
|
|
|
|
email: [
|
|
|
|
enabled: true,
|
|
|
|
confirmation_required: true
|
|
|
|
],
|
|
|
|
captcha: [enabled: false]
|
|
|
|
}
|
2020-06-09 14:07:49 +02:00
|
|
|
],
|
|
|
|
reports: [
|
|
|
|
allowed: false
|
2019-12-20 13:04:34 +01:00
|
|
|
]
|
|
|
|
|
2019-11-04 15:10:58 +01:00
|
|
|
config :mobilizon, Oban,
|
|
|
|
repo: Mobilizon.Storage.Repo,
|
2020-08-12 14:34:19 +02:00
|
|
|
log: false,
|
2021-03-23 15:18:03 +01:00
|
|
|
queues: [default: 10, search: 5, mailers: 10, background: 5, activity: 5, notifications: 5],
|
2021-01-27 16:37:59 +01:00
|
|
|
plugins: [
|
|
|
|
{Oban.Plugins.Cron,
|
|
|
|
crontab: [
|
|
|
|
{"@hourly", Mobilizon.Service.Workers.BuildSiteMap, queue: :background},
|
2021-04-28 18:06:27 +02:00
|
|
|
{"17 4 * * *", Mobilizon.Service.Workers.RefreshGroups, queue: :background},
|
2021-12-28 11:42:08 +01:00
|
|
|
{"36 * * * *", Mobilizon.Service.Workers.RefreshInstances, queue: :background},
|
2021-06-26 15:23:22 +02:00
|
|
|
{"@hourly", Mobilizon.Service.Workers.CleanOrphanMediaWorker, queue: :background},
|
2021-03-02 14:34:52 +01:00
|
|
|
{"@hourly", Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker, queue: :background},
|
2021-10-04 18:59:41 +02:00
|
|
|
{"@hourly", Mobilizon.Service.Workers.ExportCleanerWorker, queue: :background},
|
2021-06-26 15:23:22 +02:00
|
|
|
{"@hourly", Mobilizon.Service.Workers.SendActivityRecapWorker, queue: :notifications},
|
2021-03-02 14:34:52 +01:00
|
|
|
{"@daily", Mobilizon.Service.Workers.CleanOldActivityWorker, queue: :background}
|
2021-01-27 16:43:34 +01:00
|
|
|
]},
|
|
|
|
{Oban.Plugins.Pruner, max_age: 300}
|
2020-08-12 16:05:34 +02:00
|
|
|
]
|
2020-02-18 08:57:00 +01:00
|
|
|
|
|
|
|
config :mobilizon, :rich_media,
|
|
|
|
parsers: [
|
|
|
|
Mobilizon.Service.RichMedia.Parsers.OEmbed,
|
|
|
|
Mobilizon.Service.RichMedia.Parsers.OGP,
|
|
|
|
Mobilizon.Service.RichMedia.Parsers.TwitterCard,
|
|
|
|
Mobilizon.Service.RichMedia.Parsers.Fallback
|
|
|
|
]
|
|
|
|
|
|
|
|
config :mobilizon, Mobilizon.Service.ResourceProviders,
|
|
|
|
types: [],
|
|
|
|
providers: %{}
|
|
|
|
|
|
|
|
config :mobilizon, :external_resource_providers, %{
|
|
|
|
"https://drive.google.com/" => :google_drive,
|
|
|
|
"https://docs.google.com/document/" => :google_docs,
|
|
|
|
"https://docs.google.com/presentation/" => :google_presentation,
|
|
|
|
"https://docs.google.com/spreadsheets/" => :google_spreadsheets
|
|
|
|
}
|
2019-11-04 15:10:58 +01:00
|
|
|
|
2021-03-23 15:18:03 +01:00
|
|
|
config :mobilizon, Mobilizon.Service.Notifier,
|
|
|
|
notifiers: [
|
|
|
|
Mobilizon.Service.Notifier.Email,
|
|
|
|
Mobilizon.Service.Notifier.Push
|
|
|
|
]
|
|
|
|
|
2021-06-03 17:17:13 +02:00
|
|
|
config :mobilizon, Mobilizon.Service.Notifier.Email, enabled: true
|
|
|
|
|
|
|
|
config :mobilizon, Mobilizon.Service.Notifier.Push, enabled: true
|
|
|
|
|
2021-10-04 18:59:41 +02:00
|
|
|
config :mobilizon, :exports,
|
2021-11-22 18:43:59 +01:00
|
|
|
path: "/var/lib/mobilizon/uploads/exports",
|
2021-10-04 18:59:41 +02:00
|
|
|
formats: [
|
|
|
|
Mobilizon.Service.Export.Participants.CSV
|
|
|
|
]
|
|
|
|
|
2022-04-06 12:26:54 +02:00
|
|
|
config :mobilizon, :analytics, providers: []
|
|
|
|
|
2019-10-05 19:07:50 +02:00
|
|
|
# Import environment specific config. This must remain at the bottom
|
|
|
|
# of this file so it overrides the configuration defined above.
|
2021-02-01 14:57:58 +01:00
|
|
|
import_config "#{config_env()}.exs"
|