Skip to main content

A python/fastAPI implementation of the ActivityPub protocol.

Requirements

  • Linux environment (tested on Mint/Ubuntu)

  • Python (3.12+)

Installation

  1. As a pip package:

If you want to build ActivityPub clients, you can use the software as a library.

pip install phederation
  1. For development of the library, clone the repository from codeberg:

git clone https://codeberg.org/feldie/phederation.git phederation
  1. Navigate to the root folder of the “phederation” repository, then set up a python environment with uv, e.g.:

cd phederation
uv sync
  1. You can start a debug/development version using:

source .venv/bin/activate
gunicorn -c=settings/gunicorn.conf.dev.py

This will start a local server (localhost), you can try to access the fastapi doc at “<localhost:port>/docs”.

Testing and profiling

There are unit tests in the tests/ folder. They can be run using pytest:

pytest tests/unit_tests/

For coverage:

coverage run -m pytest tests/
coverage html

Profiling can be done with the pytest plugin pytest-profiling. For pretty svg plots of the runtimes, we use the additional graphviz tool.

pip install pytest-profiling
sudo apt install graphviz
pytest tests/unit_tests/ --profile-svg

Production environment

For a production environment, you should set up proper web hosting. Minimal safeguards should be in place, at least proxy+load balancing+ddos safe; nginx+fail2ban are a good combination:

You should also use a proper WSGI webserver (e.g. gunicorn), see below. Phederation is set up to accommodate all of this, and is tested to work in a production environment. Example settings files for production can be found in the “settings” folder. After setting up fail2ban and nginx, you can start a production mode version like this:

source .venv/bin/activate
gunicorn -c=settings/gunicorn.conf.prod.py

The command above starts gunicorn workers and serves content on “127.0.0.1:8082” (localhost, then use proxy to serve on the web). It uses the settings file “settings/instance_config-prod.yaml” for production mode.

Of course, it is useful to convert this into a proper service that runs continuously. This can be done by containerization of the phederation server itself, building a docker image and then hosting it. It is important to first set the proper variables in the file settings/.env (an example file with dummy values is located in settings/.env.noignore), then build the docker image, and then start all docker images. Note that the docker compose file settings/compose.yaml will start a keycloak server, its postgres database, a mongo database for the phederation image, and the phederation image itself. If you have another keycloak server running already, you should disable the former in the settings/compose.yaml file and instead link to yours in the settings/.env file.

docker build -t phederation-0.5 .
docker compose up -d

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phederation-0.6.0.tar.gz (105.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phederation-0.6.0-py3-none-any.whl (139.7 kB view details)

Uploaded Python 3

File details

Details for the file phederation-0.6.0.tar.gz.

File metadata

  • Download URL: phederation-0.6.0.tar.gz
  • Upload date:
  • Size: 105.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.12

File hashes

Hashes for phederation-0.6.0.tar.gz
Algorithm Hash digest
SHA256 40f5ac33c621f912c0285da6c7c6a8258168b6d937831dc4b2384cd02d86e71f
MD5 1cb60be5bb559ea0788f0d80a238f660
BLAKE2b-256 57e3683f24a5c2db3ef69f353ffbf779c2e617a66c652d63cdb16db6c48068fd

See more details on using hashes here.

File details

Details for the file phederation-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: phederation-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 139.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.12

File hashes

Hashes for phederation-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c36b80b9088f381caf81b5f605cb701bb6cd5dd11200427d2aeded285eb6f62
MD5 8098155f5a59e6326dda138f30b0923f
BLAKE2b-256 5c2495db9d8803c163ecb213ead595a4b8e2a70dfe478d7d74df840244b2c9ec

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 files

0.5.1

2 files

0.5.0

2 files

0.4.8

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page