Skip to content

Reference

The following is a cheat sheet for the Mobilizon configuration files.

Instance

:instance

  • :name The fallback instance name if not configured into the admin UI
  • :description The fallback instance description if not configured into the admin UI
  • :hostname Your instance's hostname
  • :registrations_open The fallback instance setting to open registrations if not configured into the admin UI
  • :registration_email_allowlist A list of emails or emails domains for which the registration is allowed even if registration is closed
  • :registration_email_denylist A list of emails or emails domains for which the registration is always denied
  • :languages The fallback instance languages if not configured into the admin UI
  • :default_language The instance's default language if user's language can't be found
  • :demo Whether the instance is in demo mode
  • :extra_categories A list of %{id: :category_slug, label: "Category label"}, for instance %{id: :protest, label: "Protest"}.
  • :allow_relay Whether the instance can be subscribed to and can relay activites
  • :federating Completely stop federating with the exterior
  • :upload_limit The default maximum size for an upload
  • :avatar_upload_limit The maximum size for an avatar upload size
  • :banner_upload_limit The maximum size for a banner upload size
  • :remove_orphan_uploads Whether to clean orphan uploads (unattached to entities like events or posts)
  • :orphan_upload_grace_period_hours How long before an orphan upload can be removed
  • remove_unconfirmed_users Whether to remove unconfirmed users (unrelated to event participation)
  • unconfirmed_user_grace_period_hours How long before an unconfirmed user account can be removed (unrelated to event participation)
  • activity_expire_days How long before removing group activities
  • activity_keep_number How many activities to always keep
  • duration_of_long_event Duration, in days, to separate short events and long events (the activities). If zero, no separation and all events are showed in same type.
  • enable_instance_feeds Activate the instance-wide feeds, which provide all of the instance public events and posts
  • email_from The email for the From: header in emails
  • email_reply_to The email for the Reply-To: header in emails

:groups

  • :enabled Whether groups are enabled

:events

  • :enabled Whether events are enabled

:media_proxy

  • enabled enable the media proxy
  • proxy_opts options for the media proxy
    • redirect_on_failure whether to redirect to the original media if proxifying fails
    • max_body_length how big the media can be
    • max_read_duration how long we can wait for the remote media
    • http
      • follow_redirect whether we follow redirects

:html_hooks

Allows to inject raw HTML code into the app main page.

  • :app_index_html_head_first inject raw HTML code before the first node of head element
  • :app_index_html_head_last inject raw HTML code after the last node of head element
  • :app_index_html_body_first inject raw HTML code before the first node of body element
  • :app_index_html_body_last inject raw HTML code after the last node of body element

These hooks can by used to add custom styles, scripts or HTML elements to the webapp.

The value of the key must be of type string but can be defined by any Elixir code that return a string. It could be:

  • just a string like "<script>console.log(\"app_index_html_head_last\");</script>"
  • or a function call like File.read!("/path/to/a/html/snippet.html")

By default, html hooks are not defined. Hence nothing is injected into the app main page.

:restrictions

  • :only_admin_can_create_groups restrict the group creation possibility only to administrators
  • :only_groups_can_create_events restrict the event creation possibility only through groups

HTTP Server

Mobilizon.Web.Endpoint

See also the configuration reference for Phoenix.Endpoint.

  • :url configuration for generating URLs throughout the app
    • :host Your instance's hostname
    • :scheme http or https
  • :secret_key_base A secret key used as a base to generate secrets for encrypting and signing data
  • :render_errors defines the view that will be used to render errors
  • :pubsub_server the name of the pubsub server to use in channels
  • :cache_static_manifest a path to a json manifest file that contains static files and their digested version
  • :has_reverse_proxy whether you use a reverse proxy (useful to get the user's real IP)

:http_security

  • :enabled Whether to add security-related HTTP headers
  • :sts Whether to add an HSTS header
  • :sts_max_age the max-age for the HSTS header
  • :csp_policy a keyword-list of CSP components, made from domain lists
  • :referrer_policy a value for the Referrer-Policy header

Uploads

Mobilizon.Web.Upload

  • :uploader The module that handles the upload. See uploaders
  • :filters A list of modules performing various tasks on uploads. See filters
  • :allow_list_mime_types a list of allowed MIME types
  • :link_name Whether to add the original file name at the end of the URL

Uploaders

  • Mobilizon.Web.Upload.Uploader.Local Uploads to the server in the uploads folder

Mobilizon.Web.Upload.Uploader.Local

  • :uploads the folder where to put uploads in, relative to Mobilizon's working directory

Filters

  • Mobilizon.Web.Upload.Filter.Dedupe Depupes duplicate files by comparing their hash
  • Mobilizon.Web.Upload.Filter.Optimize Performs multiple optimization tools on medias (see ExOptimizer)

Email

Mobilizon.Web.Email.Mailer

See each adapter's documentation for extra parameters.

Example for the SMTP adapter:

config :mobilizon, Mobilizon.Web.Email.Mailer,
  adapter: Bamboo.SMTPAdapter,
  server: "smtp.domain",
  username: "your.name@your.domain"
  password: "pa55word",
  port: 465,
  ssl: true,
  auth: :always

Example for the Sendgrid adapter:

config :mobilizon, Mobilizon.Web.Email.Mailer,
  adapter: Bamboo.SendGridAdapter,
  api_key: "YOUR_API_KEY"

:logger

See also the configuration reference for Logger.

  • :backends A list of logger backends. See logger backends.
  • :format Log format template
  • :metadata What to include in the log

Logger Backends

  • :console Sends the logs to stdout.
  • Sentry.LoggerBackend sends the logs to Sentry, which needs to be configured.

Authentication

Mobilizon.Service.Auth.Authenticator

The module to perform the authentification, must be one of:

  • Mobilizon.Service.Auth.MobilizonAuthenticator Mobilizon's default database authenticator
  • Mobilizon.Service.Auth.LDAPAuthenticator LDAP authentication

Authenticators always fallback on MobilizonAuthenticator if user is not found.

:ldap

See the LDAP configuration.

:auth

  • :oauth_consumer_strategies A list of auth methods to be displayed on the login page

See the OAuth configuration.

Mobilizon.Service.Formatter

Configuration for Mobilizon's link formatter which parses mentions, hashtags, and URLs.

  • :class specify the class to be added to the generated link
  • :rel The rel attribute value
  • :new_window adds target="_blank" attribute
  • :truncate Set to a number to truncate URLs longer then the number. Truncated URLs will end in ...
  • :strip_prefix Strip the scheme prefix
  • :extra link URLs with rarely used schemes (magnet, ipfs, irc, etc.)
  • :validate_tld Set to false to disable TLD validation for URLs/emails. Can be set to :no_scheme to validate TLDs only for urls without a scheme (e.g example.com will be validated, but http://example.loki won't)

Locales

:cldr

Configuration for CLDR data, used to format & handle datetimes, numbers,… according to the user's locale

  • :locales A list of CLDR-locales

Federation

:activitypub

  • :actor_stale_period how long before an actor needs to be refreshed
  • :actor_key_rotation_delay how long before an actor can rotate their keys
  • :sign_object_fetches whether to sign object fetches

Geospatial

Mobilizon.Service.Geospatial

See Geocoders.

:maps

  • :tiles defines the tiles server endpoint
    • :endpoint The templated tile endpoint URL. If you change this from the default value (openstreetmap.org), you might consider editing the default CSP policy to allow your tiles to be displayed.
    • :attribution A string to give proper map credits attribution
  • :routing
    • :type one of :openstreetmap or google_maps

Anonymous options

:anonymous

:participation

  • :allowed if anonymous participation is allowed
  • :validation a map of validation methods. See validation methods.

:reports

  • :allowed if anonymous reporting is allowed

Validation methods

  • :email

    • :enabled if validation through email is enabled
    • :confirmation_required if email confirmation is required (clicking on a link in a sent email)
  • :captcha

    • :enabled if validation through captcha is enabled

Background jobs

Oban

See the configuration reference for Oban.

Queues

Mobilizon has the following queues: * search inserts the events into the search database * mailers sends the emails * background perform background tasks * default everything else

Periodic jobs

  • Mobilizon.Service.Workers.BuildSiteMap builds a sitemap.xml file
  • Mobilizon.Service.Workers.RefreshGroups refreshes remote groups to make sure we didn't miss any content
  • Mobilizon.Service.Workers.CleanOrphanMediaWorker clean orphan media
  • Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker clean unconfirmed users

Resources

:rich_media

Metadata parsers

  • Mobilizon.Service.RichMedia.Parsers.OEmbed
  • Mobilizon.Service.RichMedia.Parsers.OGP
  • Mobilizon.Service.RichMedia.Parsers.TwitterCard
  • Mobilizon.Service.RichMedia.Parsers.Fallback (just <title> and <meta name="description">)

Mobilizon.Service.ResourceProviders

See Resource Providers.

:external_resource_providers

See Resource Providers.

Exports

See Exports

Analytics

See Analytics

Pictures

See Pictures

See Global search

Anti Spam

Currently, only Akmiset service is implemented.

config :mobilizon, Mobilizon.Service.AntiSpam,
  service: Mobilizon.Service.AntiSpam.Akismet

Which requires an api key that can be obtain from the profider.

config :mobilizon, Mobilizon.Service.AntiSpam.Akismet,
  key: "somekeyhere"

There is also a mock provider used for tests.

config :mobilizon, Mobilizon.Service.AntiSpam,
  service: Mobilizon.Service.AntiSpam.Mock

Last update: June 16, 2025