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.
Contact
Ping me at @fikran@thebag.social