WebFinger lookup

WebFinger (RFC7033) allows to resolve names like alice@example.com to the ActivityPub Actor Profile or a human readable web page.

The http GET request to https://example.com/.well-known/webfinger?resource=acct:alice@example.com must respond with the proper JSON Resource Descriptor document.

#Seppo! sets this up automatically for Apache webservers and one participant per domain.

Advanced setup

If you want multiple participants on one domain (with a #Seppo! per participant),

  1. the participant names (alice@example.com) must be distinct,
  2. the <webroot>/.well-known/webfinger/.htaccess must dispatch accordingly.

This involves manual action, because #Seppo! never writes files outside it's directory (except updating the symlink below).

To achieve this, replace the symlink <webroot>/.well-known/webfinger/.htaccess with the content of all the local .well-known/webfinger/.htaccess files from each #Seppo! installation, e.g.:

$ cd <webroot>/.well-known/webfinger/
$ mv .htaccess .htaccess.bak
$ cat ../../*/.well-known/webfinger/.htaccess > .htaccess

The resulting <webroot>/.well-known/webfinger/.htaccess may look something like this:

# https://seppo.social/S1002
RewriteEngine On

RewriteCond %{QUERY_STRING} (?i)^(.+?&)?resource=acct:alice@(example\.com)$
RewriteRule ^$ https://%2/alice/.well-known/webfinger/index.jrd [qsdiscard,last,redirect=seeother]

RewriteCond %{QUERY_STRING} (?i)^(.+?&)?resource=acct:bob@(.+)$
RewriteRule ^$ https://%2/bob/.well-known/webfinger/index.jrd [qsdiscard,last,redirect=seeother]

There are sample webserver configs in contrib/etc/