All checks were successful
continuous-integration/drone/push Build is passing
- Add `blocked_actors` config/env and moderation matcher (domain/url/fqn/regex) - Drop blocked interactions at ingestion and filter at render time - Document configuration and add unit tests
228 lines
8.8 KiB
YAML
228 lines
8.8 KiB
YAML
# Example configuration file for Madblog
|
|
# All the fields can also be specified via environment variables (prefixed with
|
|
# MADBLOG_, all uppercase, and with underscores, e.g. MADBLOG_TITLE for the
|
|
# "title" field)
|
|
|
|
# The title of the blog (*strongly* recommended)
|
|
title: My Blog
|
|
|
|
# The description of the blog (recommended)
|
|
description: A blog about various topics.
|
|
|
|
# The base external link to the blog (*strongly* recommended, required for
|
|
# Webmentions)
|
|
link: https://myblog.example.com
|
|
|
|
# The home link that will be rendered in the header, if different from the main
|
|
# link (optional, but useful for blogs hosted on a different domain)
|
|
# home_link: https://myblog.example.com/home
|
|
|
|
# External links to social media profiles (optional)
|
|
# These will be rendered on each page as <link rel="me" href="...">
|
|
# These can also be specified via the MADBLOG_EXTERNAL_LINKS environment
|
|
# variable as a comma-separated list of URLs
|
|
# external_links:
|
|
# - https://x.com/myprofile
|
|
# - https://mastodon.social/@myprofile
|
|
|
|
# Listening address for the built-in web server (optional, default: "0.0.0.0")
|
|
# host: 0.0.0.0
|
|
|
|
# Listening port for the built-in web server (optional, default: 8000)
|
|
# port: 8000
|
|
|
|
# The path to the directory that contains the blog posts (optional, default:
|
|
# ".", the current directory)
|
|
# content_dir: .
|
|
|
|
# A link to a logo image (optional)
|
|
# logo: https://myblog.example.com/logo.png
|
|
|
|
# The language of the blog (optional, default: "en-US")
|
|
# NOTE: The language can also be overridden on a per-article basis by
|
|
# specifying e.g. `[//]: # (language: en-US)` in the Markdown file
|
|
# language: en-US
|
|
|
|
# Default author name to be used when no author is specified (optional)
|
|
# author: Your Name
|
|
|
|
# Default author URL to be used when no author URL is specified (optional)
|
|
# mailto: links are also supported
|
|
# author_url: https://myblog.example.com
|
|
|
|
# Default author photo to be used when no author photo is specified (optional)
|
|
# author_photo: https://myblog.example.com/author.png
|
|
|
|
# View mode for the blog home page (optional, default: "cards")
|
|
# Supported values: "cards" (grid of article cards), "list" (compact title/date/description),
|
|
# "full" (scrollable WordPress-like view with full article content)
|
|
# view_mode: cards
|
|
|
|
# Whether to show the blog header in the generated pages (optional, default: true)
|
|
# header: true
|
|
|
|
# If set to true then the RSS/Atom feed will contain only short summaries
|
|
# of each post (optional, default: false)
|
|
# short_feed: false
|
|
|
|
# Max number of entries returned by the RSS/Atom feeds (optional, default: 10)
|
|
# max_entries_per_feed: 10
|
|
|
|
# Whether to enable Webmentions support (optional, default: true)
|
|
# enable_webmentions: true
|
|
|
|
# If set to true, then deleted Webmentions will be hard-deleted (their stored files
|
|
# will be removed) instead of being marked as deleted (optional, default: false)
|
|
# webmentions_hard_delete: false
|
|
|
|
# Default status for incoming Webmentions (if Webmentions are enabled) (optional,
|
|
# default: "confirmed"). If set to "pending" then the Webmention will be stored
|
|
# under the `mentions` directory as a Markdown file, with metadata header `status`
|
|
# set to "pending". If set to "confirmed" then the Webmention will be displayed
|
|
# on the site.
|
|
# webmentions_default_status: "confirmed"
|
|
|
|
# A list of categories for the blog (optional)
|
|
# categories:
|
|
# - Technology
|
|
# - Lifestyle
|
|
# - Travel
|
|
# - Food
|
|
|
|
#### (Optional) Feed aggregator mode ####
|
|
# A list of external RSS/Atom URLs that should also be rendered in the blog
|
|
# external_feeds:
|
|
# - https://example.com/atom.xml
|
|
# - https://example.com/rss.xml
|
|
#
|
|
# How often cached external feeds should be refreshed (in seconds).
|
|
# This prevents frequent requests to the external feed URLs.
|
|
# A value of zero disables the cache.
|
|
# feeds_cache_expiry_secs: 300
|
|
|
|
#### (Optional) Email Settings ####
|
|
|
|
# The email address of the author. Mention notifications will be delivered here
|
|
# author_email: 0q9aA@example.com
|
|
# Outgoing mail server configuration (optional)
|
|
# smtp_server: smtp.example.com
|
|
# smtp_port: 587
|
|
# smtp_username: username
|
|
# smtp_password: password
|
|
# smtp_starttls: true
|
|
# smtp_enable_starttls_auto: true
|
|
|
|
#### (Optional) ActivityPub Federation ####
|
|
# Requires: pip install 'madblog[activitypub]'
|
|
|
|
# Enable ActivityPub federation (optional, default: false)
|
|
# enable_activitypub: false
|
|
|
|
# The username for the ActivityPub actor (optional, default: "blog")
|
|
# The full handle will be @username@yourdomain.com
|
|
# activitypub_username: blog
|
|
|
|
# Override the base URL used for ActivityPub actor/object IDs (optional).
|
|
#
|
|
# By default, Madblog uses `link` as the ActivityPub base URL, so actor ID will
|
|
# be like: <link>/ap/actor.
|
|
#
|
|
# If you want your blog to be served at one hostname (e.g. https://blog.example.com)
|
|
# but you want ActivityPub actor IDs to live on another hostname (e.g. https://example.com)
|
|
# you can set this.
|
|
#
|
|
# Note: If you set this, you must ensure that the ActivityPub endpoints are
|
|
# reachable on that hostname (at least `/ap/*` and the `.well-known` endpoints).
|
|
# activitypub_link: https://example.com
|
|
|
|
# Override the domain used in WebFinger `acct:` identifiers (optional).
|
|
# This is useful if you serve the blog at one hostname (e.g.
|
|
# https://blog.example.com) but you want to advertise the fediverse handle as
|
|
# @username@example.com.
|
|
#
|
|
# Note: this only affects WebFinger `acct:` domain. It does NOT change where the
|
|
# actor and objects are hosted; those still use `link`.
|
|
# activitypub_domain: example.com
|
|
|
|
# Display name for the ActivityPub actor (optional, falls back to author or title)
|
|
# activitypub_name: My Blog
|
|
|
|
# Summary/bio for the ActivityPub actor (optional, falls back to description)
|
|
# activitypub_summary: A blog about various topics.
|
|
|
|
# Avatar URL for the ActivityPub actor (optional, falls back to author_photo)
|
|
# activitypub_icon_url: https://myblog.example.com/img/avatar.png
|
|
|
|
# Label used for the primary profile field that points to your blog URL.
|
|
# This will be advertised as a Mastodon-compatible "verified" profile field.
|
|
# (optional, default: "Blog")
|
|
# activitypub_profile_field_name: Blog
|
|
|
|
# Additional profile fields to advertise via ActivityPub.
|
|
# This is a mapping of field name -> field value.
|
|
# If the value is an http(s) URL, it will be rendered as a rel="me" link.
|
|
# (optional)
|
|
# activitypub_profile_fields:
|
|
# Git repository: https://git.example.com/myblog
|
|
# Donate: https://liberapay.com/myprofile
|
|
# About: A personal blog about technology
|
|
|
|
# Path to the RSA private key PEM file (optional).
|
|
# If not set, a keypair will be auto-generated on first start.
|
|
# The file must be readable only by the owner (chmod 600).
|
|
# activitypub_private_key_path: /path/to/private_key.pem
|
|
|
|
# Whether to require manual approval for new followers (optional, default: false)
|
|
# activitypub_manually_approves_followers: false
|
|
|
|
# Whether to send email notifications to the blog's author email when
|
|
# new ActivityPub activities occur, if ActivityPub is enabled, an email
|
|
# address is provided, and an SMTP server is configured (optional, default: true)
|
|
# activitypub_email_notifications: true
|
|
|
|
# ActivityPub object type: "Note" (default) renders content inline on
|
|
# Mastodon/Pleroma. "Article" only shows as a link preview card.
|
|
# activitypub_object_type: Note
|
|
|
|
# If true, only send the article description (not the full body) in
|
|
# ActivityPub posts (default: false).
|
|
# activitypub_description_only: false
|
|
|
|
# If true, the article title is sent as the ActivityPub "summary" field,
|
|
# which Mastodon/Pleroma render as a Content Warning / spoiler header
|
|
# that must be clicked to reveal the body. The description is kept as
|
|
# bold text at the top of the body. When false (default), title and
|
|
# description are both rendered inline in the post body with no CW.
|
|
# activitypub_posts_content_wrapped: false
|
|
|
|
# Quote policy for ActivityPub posts (optional, default: "public").
|
|
# Mastodon will refuse quote-boosts unless this is set to "public".
|
|
# activitypub_quote_control: public
|
|
|
|
# Automatically send a QuoteAuthorization when a remote actor quotes one
|
|
# of your posts. Without this, Mastodon keeps quotes in "pending" state.
|
|
# (optional, default: true)
|
|
# activitypub_auto_approve_quotes: true
|
|
|
|
#### (Optional) Moderation ####
|
|
|
|
# A list of blocked actors whose Webmentions and ActivityPub interactions
|
|
# will be silently rejected and not stored or rendered.
|
|
#
|
|
# Each entry can be one of:
|
|
# - A domain name: e.g. "spammer.example.com"
|
|
# Blocks all URLs/actors from that domain.
|
|
# - A full URL: e.g. "https://mastodon.social/users/spammer"
|
|
# Blocks that exact actor/source.
|
|
# - An ActivityPub FQN: e.g. "@spammer@mastodon.social" or "spammer@mastodon.social"
|
|
# Blocks that specific federated identity by matching domain + username.
|
|
# - A regular expression: delimited by "/", e.g. "/spammer\.example\..*/"
|
|
# Matched against the full source URL / actor ID.
|
|
#
|
|
# Can also be specified via the MADBLOG_BLOCKED_ACTORS environment variable
|
|
# as a comma- or space-separated list.
|
|
#
|
|
# blocked_actors:
|
|
# - spammer.example.com
|
|
# - "@troll@evil.social"
|
|
# - /spam-ring\.example\..*/
|