Burr is an opinionated WIP federated social networking server.
docker-compose up
The config.yaml
file defines Burr's configuration.
Burr is a backend-only social network server and does not implement a frontend.
In production, Burr requires on the following external services:
- Vault for secrets management
- Faktory for job queuing
- Postgresql for the database
- S3 (external) for internet-facing file hosting
- S3 (internal) for worker-process file mutations
- Redis for worker cache
For development and very small instances, in-memory and on-disk implementations are included within the app so that it may be run with zero dependencies. However, only the production "stack" of dependencies is supported. Performance issues, instability, race conditions, and other issues are present within the builtin implementation that do not exist within the full production stack.
To provide compatibility with existing federated UIs, such as Soapbox, Burr will implement the Mastodon and Pleroma HTTP APIs.
The aim of v1.0 is to implement the Mastodon API.
v1.1 will implement the Pleroma API.
v1.2 will implement a GraphQL API so that new frontends can be created more easily.
Due to deficiencies and the W3C's abandonment of the spec, this project does not seek to implement the C2S ActivityPub spec at this time.
ent is used as the database driver. Multiple database drivers exist, however postgresql is the only supported production database driver.
I've done my best to implement opportunistic locking for sqlite where possible, but for both performance and reliability reasons only postgresql is supported.
Test:
make test
Run:
make run
Build ./burr
:
make build
Build (and test) ghcr.io/eriner/burr:latest
:
make docker
- Sep 13, 2022: The start