2024-05-16 21:05:01 +02:00
|
|
|
|
# Federation
|
|
|
|
|
|
|
|
|
|
|
|
## Supported federation protocols and standards
|
|
|
|
|
|
|
|
|
|
|
|
- [ActivityPub](https://www.w3.org/TR/activitypub/) (Server-to-Server)
|
|
|
|
|
|
- [WebFinger](https://webfinger.net/)
|
|
|
|
|
|
- [Http Signatures](https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures)
|
|
|
|
|
|
- [NodeInfo](https://nodeinfo.diaspora.software/)
|
|
|
|
|
|
|
|
|
|
|
|
## Supported FEPs
|
|
|
|
|
|
|
|
|
|
|
|
- [FEP-67ff: FEDERATION](https://codeberg.org/fediverse/fep/src/branch/main/fep/67ff/fep-67ff.md)
|
2026-02-23 15:23:03 +00:00
|
|
|
|
- [FEP-2c59: Discovery of a Webfinger address from an ActivityPub actor](https://codeberg.org/fediverse/fep/src/branch/main/fep/2c59/fep-2c59.md)
|
2025-01-09 21:00:18 +01:00
|
|
|
|
- [FEP-dc88: Formatting Mathematics](https://codeberg.org/fediverse/fep/src/branch/main/fep/dc88/fep-dc88.md)
|
2024-05-16 21:05:01 +02:00
|
|
|
|
- [FEP-f1d5: NodeInfo in Fediverse Software](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md)
|
|
|
|
|
|
- [FEP-fffd: Proxy Objects](https://codeberg.org/fediverse/fep/src/branch/main/fep/fffd/fep-fffd.md)
|
2024-12-01 11:43:37 +01:00
|
|
|
|
- [FEP-c16b: Formatting MFM functions](https://codeberg.org/fediverse/fep/src/branch/main/fep/c16b/fep-c16b.md)
|
2024-05-16 21:05:01 +02:00
|
|
|
|
|
|
|
|
|
|
## ActivityPub
|
|
|
|
|
|
|
|
|
|
|
|
Akkoma mostly follows the server-to-server parts of the ActivityPub standard,
|
|
|
|
|
|
but implements quirks for Mastodon compatibility as well as Mastodon-specific
|
|
|
|
|
|
and custom extensions.
|
|
|
|
|
|
|
|
|
|
|
|
See our documentation and Mastodon’s federation information
|
|
|
|
|
|
linked further below for details on these quirks and extensions.
|
|
|
|
|
|
|
|
|
|
|
|
Akkoma does not perform JSON-LD processing.
|
|
|
|
|
|
|
|
|
|
|
|
### Required extensions
|
|
|
|
|
|
|
|
|
|
|
|
#### HTTP Signatures
|
|
|
|
|
|
All AP S2S POST requests to Akkoma instances MUST be signed.
|
|
|
|
|
|
Depending on instance configuration the same may be true for GET requests.
|
|
|
|
|
|
|
2024-12-01 11:43:37 +01:00
|
|
|
|
### FEP-c16b: Formatting MFM functions
|
|
|
|
|
|
|
2025-03-09 20:13:27 +01:00
|
|
|
|
We set the optional extension term `htmlMfm: true` when using content type "text/x.misskeymarkdown".
|
2025-04-30 11:52:07 +02:00
|
|
|
|
Incoming messages containing `htmlMfm: true` will not have their content re-parsed.
|
2024-12-01 11:43:37 +01:00
|
|
|
|
|
2026-03-13 00:00:00 +00:00
|
|
|
|
## WebFinger
|
|
|
|
|
|
|
|
|
|
|
|
Akkoma requires WebFinger implmentations to respond to queries about a given user both when
|
|
|
|
|
|
`acct:user@domain` or the canonical ActivityPub id of the actor is passed as the `resource`.
|
|
|
|
|
|
|
|
|
|
|
|
Akkoma strongly encourages ActivityPub implementations to include
|
|
|
|
|
|
a FEP-2c59-compliant WebFinger backlink in their actor documents.
|
|
|
|
|
|
|
|
|
|
|
|
Without FEP-2c59 and if different domains are used for ActivityPub and the Webfinger subject,
|
2026-03-21 00:00:00 +00:00
|
|
|
|
Akkoma relies on either the presence of an host-meta LRDD template on the ActivityPub domain
|
|
|
|
|
|
or a working WebFinger endpoint on the ActivityPub domain. Additionally all WebFinger endpoints
|
|
|
|
|
|
related to the ActivityPub and canonical WebFinger domain SHOULD also respond to queries about
|
|
|
|
|
|
an alternative acct URI constructed with the WebFinger domain passed as the resource.
|
2026-03-13 00:00:00 +00:00
|
|
|
|
Without FEP-2c59 Akkoma may not become aware of changes to the
|
|
|
|
|
|
preferred WebFinger `subject` domain for already discovered users.
|
|
|
|
|
|
|
2024-05-16 21:05:01 +02:00
|
|
|
|
## Nodeinfo
|
|
|
|
|
|
|
|
|
|
|
|
Akkoma provides many additional entries in its nodeinfo response,
|
|
|
|
|
|
see the documentation linked below for details.
|
|
|
|
|
|
|
|
|
|
|
|
## Additional documentation
|
|
|
|
|
|
|
|
|
|
|
|
- [Akkoma’s ActivityPub extensions](https://docs.akkoma.dev/develop/development/ap_extensions/)
|
|
|
|
|
|
- [Akkoma’s nodeinfo extensions](https://docs.akkoma.dev/develop/development/nodeinfo_extensions/)
|
|
|
|
|
|
- [Mastodon’s federation requirements](https://github.com/mastodon/mastodon/blob/main/FEDERATION.md)
|