Commune lets you build free and open public communities on a Matrix server. It transforms a Matrix server into a publicly accessible community platform. The goal is to make it easy for existing homeserver operators to open up their Matrix instance (or a subset of it) to the web, and add extra community features using native Matrix functionality.
Conceptual Introduction: Communal Bonfires.
We're operating these live instances at the moment:
Commune opens up all spaces and underlying rooms to the web by reading data directly from the Synapse DB, bypassing Synapse's client-server API. Additional features such as discussion boards, threaded comments are rendered by the client. Commune makes use of many materialized views for querying Synapse events.
- Federation between Commune instances
- Social login support
- ActivityPub support for interacting with the fediverse
- Private spaces/boards and Encrypted DMs
- Simplify self-hosting deployment
- Synapse
- Redis
- S3-compatible object storage (optional)
- Email/SMTP provider (optional)
You'll need to set up a matrix/synapse server. Existing servers can be used too, but Commune is highly experimental at the moment, so it's best to set up a new homeserver.
- Clone this repo
- Run
make deps
to fetch dependencies. - Copy
config-sample.toml
toconfig.toml
. Update the config with your Synapse details. - Run
make
to build the app. - Run the
db/matrix/views/creates.sh
script to create materialized views. - Run
modd
to run app locally while developing. - To deploy, put the app behind
nginx
.
Finally, you'll need to go install the client and point it to your Commune backend.
Find us on #commune:commune.sh or on #commune:matrix.org.
Commune is operating in world_readable
mode. This means that everything on your matrix server has the potential to be accessible from the web. No work has been put into private spaces/rooms or encryption. Unless explicitly stated, assume that every event on a Commune-based matrix server will be public.