114 lines
2.9 KiB
Markdown
114 lines
2.9 KiB
Markdown
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
|
|
[![Go Report Card](https://goreportcard.com/badge/git.farhan.codes/farhan/fedilogue)](https://goreportcard.com/report/git.farhan.codes/farhan/fedilogue)
|
|
|
|
|
|
# Fedilogue
|
|
|
|
Fedilogue is a fediverse cataloging and search platform. The intention is to create a centralized search
|
|
system for use by fediverse users and APIs.
|
|
|
|
## How does Fedilogue gather data?
|
|
|
|
Fedilogue employs multiple methods to gather post and account data.
|
|
* Through publicly accessible timelines
|
|
* Through publicly accessible relays
|
|
* Through privately accessible timelines, requiring an account on a given instance (untested)
|
|
* Through followed users using a mass following agent (planned)
|
|
|
|
## Supported Instances
|
|
|
|
Fedilogue can retrieve Notes (posts) from any instance that supports the ActivityPub protocol. However, it can only pull from Mastodon and Pleroma.
|
|
|
|
## How to run
|
|
|
|
### Go version
|
|
|
|
This code was written on Go 1.17.
|
|
|
|
### Build Fedilogue
|
|
|
|
```
|
|
git clone https://git.farhan.codes/farhan/fedilogue
|
|
cd fedilogue/fedilogue
|
|
go build
|
|
```
|
|
|
|
This will produce a fedilogue executable in the project directory.
|
|
|
|
### Prepopulate the Database
|
|
|
|
Create the `fedilogue` database and the user fedilogue. The exact process for this is outside of the scope of this document
|
|
|
|
|
|
```
|
|
CREATE USER fedilogue WITH PASSWORD 'yoursecurepassword';
|
|
CREATE DATABASE fedilogue OWNER fedilogue;
|
|
```
|
|
|
|
Set the environment variable
|
|
|
|
```
|
|
export DATABASE_URL="postgres://fedilogue:yoursecurepassword@localhost/fedilogue"
|
|
```
|
|
|
|
Change accordingly if your username, hostname and database are different.
|
|
|
|
```
|
|
cd fedilogue/fedilogue
|
|
psql -U fedilogue -h localhost < tables.sql
|
|
```
|
|
|
|
### Generate private and public key
|
|
|
|
This is only necessary if you are receiving posts from a relay.
|
|
|
|
```
|
|
cd fedilogue
|
|
mkdir -p keys
|
|
openssl genrsa -out keys/private.pem 3072
|
|
openssl rsa -in keys/private.pem -pubout -out keys/public.pem
|
|
```
|
|
|
|
### Configuration
|
|
|
|
Fedilogue is configured by the `config.jsonc` file. Start by copying the `config.jsonc.sample` file to
|
|
`config.jsonc` and edit the file with your use-case values. The configuration file is written in jsonc and
|
|
has enclosed explanations that should be self-explanatory.
|
|
|
|
Over time, all configuration will be done through the database.
|
|
|
|
|
|
## Starting Fedilogue
|
|
|
|
### Starting the retrieval daemon
|
|
|
|
```
|
|
cd fedilogue
|
|
./fedilogue
|
|
```
|
|
|
|
### Subscribe to a relay
|
|
|
|
Make sure that the `hostname` variable is set to a host that points to your fedilogue instance. Forward port
|
|
SSL/443 to port 8042.
|
|
|
|
```
|
|
./fedictl -follow https://relay.social.tigwali.fr/inbox
|
|
```
|
|
|
|
### Starting the RestAPI service
|
|
|
|
Start the RestAPI service to make the data accessible to external services, such as the web interface (which is currently not written).
|
|
|
|
```
|
|
cd restapi
|
|
go build .
|
|
./restapi
|
|
```
|
|
|
|
For documentation on how the API is located [here](restapi/RESTAPI.md).
|
|
|
|
## Contact
|
|
|
|
Ping me at [@fikran@thebag.social](https://thebag.social/@fikran)
|