Modern ActivityPub compliant server, designed for simplicity and accessibility. Includes calendar, news and sharing economy features to empower your federated community. We are using it for a hyper local indymedia codebase.
 
 
 
 
Go to file
Bob Mottram f213517de6 Config information 2019-08-29 11:37:31 +00:00
emoji We don't really need national flags, or nationalism 2019-08-26 09:13:36 +01:00
img Change colors 2019-08-28 15:19:41 +01:00
LICENSE Initial 2019-06-28 19:55:29 +01:00
Makefile Run test in its own subdirectory 2019-08-09 10:46:33 +01:00
README.md Config information 2019-08-29 11:37:31 +00:00
README_commandline.md Commandline readme 2019-08-29 11:09:16 +00:00
README_customizations.md Separate customizations information 2019-08-29 11:23:58 +00:00
README_goals.md Link to goals 2019-08-29 11:16:33 +00:00
acceptreject.py @context headers 2019-08-18 12:07:06 +01:00
announce.py Preferred name becomes display name - less ambiguous 2019-08-22 19:36:07 +01:00
auth.py Reduce some line lengths 2019-07-06 18:00:22 +01:00
availability.py Preferred name becomes display name - less ambiguous 2019-08-22 19:36:07 +01:00
blocking.py Preferred name becomes display name - less ambiguous 2019-08-22 19:36:07 +01:00
blurhash.py Functions for image attachments 2019-07-12 20:08:46 +01:00
cache.py Check for presence of cache directory 2019-08-20 22:26:24 +01:00
capabilities.py Check for no actor 2019-08-18 21:43:10 +01:00
code-of-conduct.md Add CoC 2019-07-04 22:52:39 +01:00
config.py Configuration file functions 2019-07-05 10:20:54 +01:00
content.py s 2019-08-21 13:29:30 +01:00
daemon.py Max number of skills results 2019-08-28 11:11:06 +01:00
default_about.txt About screen 2019-08-26 17:02:47 +01:00
default_tos.txt Not all emojis 2019-08-19 14:56:47 +01:00
delete.py Preferred name becomes display name - less ambiguous 2019-08-22 19:36:07 +01:00
epicyon-follow.css Follow style 2019-08-28 16:45:37 +01:00
epicyon-login.css Login screen style for mobile 2019-08-27 15:34:27 +01:00
epicyon-profile.css Different page icon size for mobile 2019-08-28 13:11:50 +01:00
epicyon-suspended.css Submit button spacing 2019-08-13 11:04:18 +01:00
epicyon.py Optionally limit skills searches to the instance 2019-08-28 10:59:19 +01:00
filters.py Use not 2019-07-14 22:00:33 +01:00
follow.py Check if already a follower 2019-08-26 23:38:09 +01:00
httpsig.py Tidying 2019-08-23 12:39:16 +01:00
inbox.py Application activity 2019-08-23 21:09:00 +01:00
like.py Preferred name becomes display name - less ambiguous 2019-08-22 19:36:07 +01:00
manualapprove.py Ensure that followers are updated when accepting follow request 2019-08-26 23:22:01 +01:00
media.py Ensure port numbers are attached when needed 2019-08-16 21:35:11 +01:00
ocaps.md Separate ocaps document 2019-07-19 10:06:55 +01:00
person.py Instance actor url 2019-08-26 16:20:14 +01:00
posts.py with 2019-08-26 18:44:21 +01:00
roles.py Preferred name becomes display name - less ambiguous 2019-08-22 19:36:07 +01:00
session.py Set user agent for commands 2019-08-26 15:08:41 +01:00
shares.py Shared inbox actor on @domain@domain 2019-08-23 14:47:29 +01:00
skills.py Preferred name becomes display name - less ambiguous 2019-08-22 19:36:07 +01:00
tests.py Optionally limit skills searches to the instance 2019-08-28 10:59:19 +01:00
threads.py Move tests to their own file 2019-06-30 21:14:03 +01:00
utils.py Timeline for DMs 2019-08-25 17:09:56 +01:00
webfinger.py Instance actor url 2019-08-26 16:20:14 +01:00
webinterface.py Embedded videos appear inside of cw 2019-08-29 09:49:22 +01:00

README.md

A minimal ActivityPub server.

Commandline interface.

W3C Specification

Includes emojis designed by OpenMoji the open-source emoji and icon project. License: CC BY-SA 4.0

Project Goals

Customizations

Install

On Arch/Parabola:

sudo pacman -S tor python-pip python-pysocks python-pycryptodome python-beautifulsoup4 imagemagick python-pillow python-numpy python-dateutil
sudo pip install commentjson

Or on Debian:

sudo apt-get -y install tor python3-pip python3-socks imagemagick python3-numpy python3-setuptools python3-crypto python3-dateutil python3-pil.imagetk
sudo pip3 install commentjson beautifulsoup4 pycryptodome

Running the Server

In the most common case you'll be using systemd to set up a daemon to run the server.

Add a dedicated user so that we don't have to run as root.

adduser --system --home=/etc/epicyon --group epicyon

Edit /etc/systemd/system/epicyon.service and add the following:

[Unit]
Description=epicyon
After=syslog.target
After=network.target
Documentation=$EPICYON_REPO";

[Service]
Type=simple
User=epicyon
Group=epicyon
WorkingDirectory=/etc/epicyon
ExecStart=/usr/bin/python3 /etc/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --debug";
Environment=USER=epicyon
Restart=always
StandardError=syslog

[Install]
WantedBy=multi-user.target }

Here the server was installed to /etc/epicyon, but you can change that to wherever you installed it.

Then run the daemon:

systemctl enable epicyon
chown -R epicyon:epicyon /etc/epicyon
systemctl start epicyon

Check the status of the daemon with:

systemctl status epicyon

If it's not running then you can also look at the log:

journalctl -u epicyon

You'll also need to set up a web server configuration. An Nginx example is as follows:

Object Capabilities Security

A description of the proposed object capabilities model is here.

Running Unit Tests

To run the unit tests:

python3 epicyon.py --tests

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

python3 epicyon.py --testsnetwork