Modern ActivityPub compliant server, designed for simplicity and accessibility. Includes calendar, news and sharing economy features to empower your federated community. We spent a year testing this for a hyper local indymedia codebase.
 
 
 
 
 
Go to file
Bob Mottram fe69210625 Server notes 2019-07-04 22:32:18 +01:00
img Name on logo 2019-07-04 21:56:04 +01:00
LICENSE Initial 2019-06-28 19:55:29 +01:00
Makefile Initial 2019-06-28 19:55:29 +01:00
README.md Server notes 2019-07-04 22:32:18 +01:00
acceptreject.py Option to use dat urls 2019-07-03 20:00:03 +01:00
announce.py Option to use dat urls 2019-07-03 20:00:03 +01:00
auth.py outbox post authentication 2019-07-04 10:00:53 +01:00
cache.py Fallbacks for GET and POST locking 2019-07-01 15:30:48 +01:00
daemon.py Fix network test 2019-07-04 21:25:19 +01:00
epicyon.py Move function 2019-07-04 20:34:28 +01:00
follow.py Option to use dat urls 2019-07-03 20:00:03 +01:00
httpsig.py Fixing public key lookup 2019-07-04 15:36:29 +01:00
inbox.py Fix network test 2019-07-04 21:25:19 +01:00
like.py Option to use dat urls 2019-07-03 20:00:03 +01:00
person.py Validate nicknames 2019-07-04 19:26:37 +01:00
posts.py Move function 2019-07-04 20:34:28 +01:00
session.py Package not needed 2019-07-04 21:42:05 +01:00
tests.py Check that inbox is updated 2019-07-04 21:36:12 +01:00
threads.py Move tests to their own file 2019-06-30 21:14:03 +01:00
utils.py Save posts to inbox to a queue 2019-07-04 11:02:56 +01:00
webfinger.py Fix posts option 2019-07-04 18:31:41 +01:00

README.md

A minimal ActivityPub server.

Based on the specification: https://www.w3.org/TR/activitypub

Also: https://raw.githubusercontent.com/w3c/activitypub/gh-pages/activitypub-tutorial.txt

This project is currently pre alpha and not recommended for any real world uses.

Goals

  • A minimal ActivityPub server, comparable to an email MTA.
  • Server-to-server and client-to-server protocols supported.
  • Implemented in a common language (Python 3)
  • Opt-in federation. Federate with a well-defined list of instances.
  • Resistant to flooding, hellthreads, etc.
  • Support content warnings, reporting and blocking.
  • http signatures and basic auth.
  • Compatible with http (onion addresses), https and dat.
  • Minimal dependencies.
  • Data minimization principle. Configurable post expiry time.
  • Commandline interface. If there's a GUI it should be a separate project.
  • Designed for intermittent connectivity. Assume network disruptions.
  • Suitable for single board computers.

Install

sudo pacman -S tor python-pip python-pysocks python-pycryptodome python-beautifulsoup4
sudo pip install commentjson

Running Tests

To run the unit tests:

python3 epicyon.py --tests

To run the network tests. These simulate instances exchanging messages.

python3 epicyon.py --testsnetwork

Running the Server

To run with defaults:

python3 epicyon.py

In a browser of choice (but not Tor browser) you can then navigate to:

http://localhost:8085/users/admin

If it's working then you should see the json actor for the default admin account.

For a more realistic installation you can run on a defined domain and port:

python3 epicyon.py --domain [name] --port 8000 --https

You will need to proxy port 8000 through your web server and set up CA certificates as needed.

By default data will be stored in the directory in which you run the server, but you can also specify a directory:

python3 epicyon.py --domain [name] --port 8000 --https --path [data directory]