epicyon/README.md

141 lines
5.2 KiB
Markdown
Raw Normal View History

2019-07-04 20:50:46 +00:00
<img src="https://code.freedombone.net/bashrc/epicyon/raw/master/img/logo.png?raw=true" width=256/>
2019-07-04 21:20:26 +00:00
A minimal ActivityPub server.
2019-06-28 18:55:29 +00:00
2019-08-29 11:09:16 +00:00
[Commandline interface](README_commandline.md).
2019-08-29 11:09:16 +00:00
[W3C Specification](https://www.w3.org/TR/activitypub)
2019-06-29 10:08:59 +00:00
2019-08-29 11:09:16 +00:00
Includes emojis designed by [OpenMoji](https://openmoji.org) the open-source emoji and icon project. License: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0)
2019-08-09 12:52:52 +00:00
2019-07-04 21:21:10 +00:00
## Goals
2019-07-04 21:20:26 +00:00
2019-07-20 21:13:36 +00:00
* A minimal ActivityPub server, comparable to an email MTA
2019-07-04 21:40:30 +00:00
* AGPLv3+
2019-07-20 21:13:36 +00:00
* Server-to-server and client-to-server protocols supported
2019-07-04 21:32:18 +00:00
* Implemented in a common language (Python 3)
2019-07-04 22:11:56 +00:00
* Keyword filtering.
2019-07-24 13:30:53 +00:00
* Remove metadata from attached images, avatars and backgrounds
2019-07-14 13:50:31 +00:00
* Being able to build crowdsouced organizations with roles and skills
2019-07-06 09:07:24 +00:00
* Sharings collection, similar to the gnusocial sharings plugin
2019-07-15 09:37:59 +00:00
* Quotas for received posts per day, per domain and per account
* Hellthread detection and removal
2019-08-02 12:22:56 +00:00
* Instance and account level federation lists
2019-07-20 21:13:36 +00:00
* Support content warnings, reporting and blocking
* http signatures and basic auth
* Compatible with http (onion addresses), https and dat
2019-07-04 21:20:26 +00:00
* Minimal dependencies.
2019-07-05 20:32:21 +00:00
* Capabilities based security
2019-07-14 11:30:15 +00:00
* Support image blurhashes
2019-07-20 21:13:36 +00:00
* Data minimization principle. Configurable post expiry time
2019-07-12 12:47:06 +00:00
* Likes and repeats only visible to authorized viewers
2019-07-14 11:30:15 +00:00
* ReplyGuy mitigation - maxmimum replies per post or posts per day
* Ability to delete or hide specific conversation threads
2019-07-20 21:13:36 +00:00
* Commandline interface
* Simple web interface
* Designed for intermittent connectivity. Assume network disruptions
2019-07-19 08:52:10 +00:00
* Limited visibility of follows/followers
2019-07-20 21:13:36 +00:00
* Suitable for single board computers
2019-07-04 21:20:26 +00:00
2019-07-25 08:42:15 +00:00
## Features which won't be implemented
The following are considered antifeatures of other social network systems, since they encourage dysfunctional social interactions.
* Trending hashtags, or trending anything
2019-07-25 08:43:46 +00:00
* Ranking, rating or recommending mechanisms for posts or people (other than likes or repeats/boosts)
2019-07-25 08:42:15 +00:00
* Geolocation features
* Algorithmic timelines (i.e. non-chronological)
* Direct payment mechanisms, although integration with other services may be possible
* Any variety of blockchain
* Sponsored posts
2019-06-28 18:55:29 +00:00
## Install
2019-07-13 13:39:52 +00:00
On Arch/Parabola:
2019-06-28 18:55:29 +00:00
``` bash
2019-08-21 16:35:46 +00:00
sudo pacman -S tor python-pip python-pysocks python-pycryptodome python-beautifulsoup4 imagemagick python-pillow python-numpy python-dateutil
2019-07-02 17:11:59 +00:00
sudo pip install commentjson
2019-07-04 20:44:03 +00:00
```
2019-07-13 13:39:52 +00:00
Or on Debian:
``` bash
2019-08-21 16:35:46 +00:00
sudo apt-get -y install tor python3-pip python3-socks imagemagick python3-numpy python3-setuptools python3-crypto python3-dateutil python3-pil.imagetk
2019-07-13 13:39:52 +00:00
sudo pip3 install commentjson beautifulsoup4 pycryptodome
```
2019-07-04 20:44:03 +00:00
## Running Tests
To run the unit tests:
``` bash
python3 epicyon.py --tests
```
To run the network tests. These simulate instances exchanging messages.
``` bash
python3 epicyon.py --testsnetwork
```
2019-07-04 21:32:18 +00:00
2019-07-12 14:42:43 +00:00
2019-07-04 21:32:18 +00:00
## Running the Server
To run with defaults:
``` bash
python3 epicyon.py
```
In a browser of choice (but not Tor browser) you can then navigate to:
``` text
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:
``` bash
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:
``` bash
python3 epicyon.py --domain [name] --port 8000 --https --path [data directory]
```
2019-07-04 21:40:30 +00:00
2019-07-17 12:31:10 +00:00
2019-07-19 09:01:39 +00:00
## Culling follower numbers
In this system the number of followers which an account has will only be visible to the account holder. Other viewers will see a made up number. Which accounts are followed or followed by a person will also only have limited visibility.
The intention is to prevent the construction of detailed social graphs by adversaries, and to frustrate attempts to build celebrity status based on number of followers, which on sites like Twitter creates a dubious economy of fake accounts and the trading thereof.
If you are the account holder though you will be able to see exactly who you're following or being followed by.
2019-07-23 22:00:17 +00:00
2019-07-19 09:06:55 +00:00
## Object Capabilities Security
2019-08-11 16:55:22 +00:00
A description of the proposed object capabilities model [is here](ocaps.md).
## Customizations
2019-08-11 17:36:21 +00:00
You can customize the terms of service by editing **accounts/tos.txt**. If it doesn't already exist then you can use **default_tos.txt** as a template.
2019-08-11 16:55:22 +00:00
On the login screen you can provide a custom welcome message by creating the file **accounts/login.txt**. This could be used to show a motd or scheduled maintenance information.
You can customize the image on the login screen by saving your instance logo to **accounts/login.png**. A background image can also be set for the login screen by adding **accounts/login-background.png**
A custom background image can be supplied for the search screen by adding **accounts/search-background.png**
When a moderator report is created the message at the top of the screen can be customized to provide any additional information, advice or alerts. Edit **accounts/report.txt** and add your text.
Extra emoji can be added to the *emoji* directory and you should then update the **emoji/emoji.json** file, which maps the name to the filename (without the .png extension).
2019-08-11 16:55:22 +00:00