A simple and efficient activitypub relay
To simply run the server, the command is as follows
bash
$ ./relay
To learn about any other tasks, the --help
flag can be passed
```bash
$ ./relay --help
relay 0.2.0
An activitypub relay
USAGE: relay [FLAGS] [OPTIONS]
FLAGS: -h, --help Prints help information -u, --undo Undo allowing or blocking domains -V, --version Prints version information
OPTIONS:
-a
To add domains to the blocklist, use the -b
flag and pass a list of domains
bash
$ ./relay -b asonix.dog blimps.xyz
To remove domains from the blocklist, simply pass the -u
flag along with -b
bash
$ ./relay -ub asonix.dog blimps.xyz
The same rules apply for allowing domains, although domains are allowed with the -a
flag
bash
$ ./relay -a asonix.dog blimps.xyz
$ ./relay -ua asonix.dog blimps.xyz
Allowed domains are only checked against incoming activities if RESTRICTED_MODE
is enabled.
Blocks can be published in the nodeinfo metadata by setting PUBLISH_BLOCKS
to true
For advanced setups, it may be useful to run the relay API and the background tasks in separate
processes, possibly on separate hosts. The -j
and -n
flags have been provided for this purpose.
By passing -n
, a relay can be spawned that handles no deliveries. By passing -j
, a relay will
not be spawned, but any deliveries existing in the database will be processed.
Mastodon admins can subscribe to this relay by adding the /inbox
route to their relay settings.
For example, if the server is https://relay.my.tld
, the correct URL would be
https://relay.my.tld/inbox
.
Pleroma admins can subscribe to this relay by adding the /actor
route to their relay settings. For
example, if the server is https://relay.my.tld
, the correct URL would be
https://relay.my.tld/actor
.
By default, all these values are set to development values. These are read from the environment, or
from the .env
file in the working directory.
env
HOSTNAME=localhost:8080
ADDR=127.0.0.1
PORT=8080
DEBUG=true
RESTRICTED_MODE=false
VALIDATE_SIGNATURES=false
HTTPS=false
DATABASE_URL=
PRETTY_LOG=true
PUBLISH_BLOCKS=false
To run this server in production, you'll likely want to set most of them
env
HOSTNAME=relay.my.tld
ADDR=0.0.0.0
PORT=8080
DEBUG=false
RESTRICTED_MODE=false
VALIDATE_SIGNATURES=true
HTTPS=true
DATABASE_URL=postgres://pg_user:pg_pass@pg_host:pg_port/pg_database
PRETTY_LOG=false
PUBLISH_BLOCKS=true
Unless otherwise stated, all contributions to this project will be licensed under the CSL with the exceptions listed in the License section of this file.
This work is licensed under the Cooperative Software License. This is not a Free Software License, but may be considered a "source-available License." For most hobbyists, self-employed developers, worker-owned companies, and cooperatives, this software can be used in most projects so long as this software is distributed under the terms of the CSL. For more information, see the provided LICENSE file. If none exists, the license can be found online here. If you are a free software project and wish to use this software under the terms of the GNU Affero General Public License, please contact me at asonix@asonix.dog and we can sort that out. If you wish to use this project under any other license, especially in proprietary software, the answer is likely no.