Movie reviews bot playground.
Find a file
2022-06-01 17:03:29 +00:00
.cargo Use profile importer in verify_http_signature function 2021-12-28 20:54:21 +00:00
contracts Update contracts to version 0.3.0 2022-05-25 20:19:42 +00:00
contrib Update index.html modification time when installing debian package 2022-05-13 21:53:23 +00:00
docs Add blockchain ID to instance API response 2022-05-28 22:43:38 +00:00
files Add files directory, update readme 2021-11-26 22:39:54 +00:00
migrations Handle Update(Note) activities 2022-05-11 13:31:08 +00:00
scripts Add default configuration file to debian package 2022-05-12 14:53:37 +00:00
src Define common return type for activity handlers 2022-06-01 17:03:29 +00:00
.editorconfig Set indent size in JSON files to 2 2021-09-14 13:35:41 +00:00
.env Add cargo feature for making production build 2022-05-04 22:06:12 +00:00
.gitignore Add files directory, update readme 2021-11-26 22:39:54 +00:00
Cargo.lock Bump version to 0.6.2 2022-05-24 20:40:08 +00:00
Cargo.toml Bump version to 0.6.2 2022-05-24 20:40:08 +00:00
config.yaml.example Update dev config example 2022-05-17 19:50:21 +00:00
docker-compose.yaml Change default PostgreSQL port 2022-03-09 20:41:56 +00:00
FEDERATION.md Add info about identity proofs to FEDERATION.md 2022-04-28 16:19:59 +00:00
LICENSE Initial commit 2021-09-14 12:24:05 +00:00
README.md Add blockchain ID to instance API response 2022-05-28 22:43:38 +00:00

Mitra

Federated social network with smart contracts.

Built on ActivityPub protocol, self-hosted, lightweight.

Unique features enabled by blockchain integration:

  • Sign-in with a wallet.
  • Donations.
  • Paid subscriptions.
  • Proving membership with a token.
  • Converting posts into NFTs.

Currently only Ethereum and other EVM-compatible blockchains are supported.

Smart contracts repo: https://codeberg.org/silverpill/mitra-contracts

Frontend repo: https://codeberg.org/silverpill/mitra-web

Demo instance: https://mitra.social/ (invite-only)

Matrix chat: #mitra:halogen.city

Requirements

  • Rust 1.54+ (when building from source)
  • PostgreSQL 12+
  • IPFS node (optional, see guide)
  • Ethereum node (optional)

Installation

Building from source

Run:

cargo build --release --features production

This command will produce two binaries in target/release directory, mitra and mitractl.

Install PostgreSQL and create the database.

Create configuration file by copying contrib/mitra_config.yaml and configure the instance. Default config file path is /etc/mitra/config.yaml, but it can be changed using CONFIG_PATH environment variable.

Start Mitra:

./mitra

An HTTP server will be needed to handle HTTPS requests and serve the frontend. See the example of nginx configuration file.

Building instructions for mitra-web frontend can be found at https://codeberg.org/silverpill/mitra-web#project-setup.

To run Mitra as a systemd service, check out the systemd unit file example.

Debian package

Download and install Mitra package:

dpkg -i mitra.deb

Install PostgreSQL and create the database. Open configuration file /etc/mitra/config.yaml and configure the instance.

Start Mitra:

systemctl start mitra

An HTTP server will be needed to handle HTTPS requests and serve the frontend. See the example of nginx configuration file.

Development

Create database

docker-compose up

Test connection:

psql -h localhost -p 55432 -U mitra mitra

Run web service

Create config file, adjust settings if needed:

cp config.yaml.example config.yaml

Compile and run service:

cargo run

Run CLI

cargo run --bin mitractl

Run linter

cargo clippy

Run tests

cargo test

Build for production

cargo build --release

Federation

See FEDERATION.md

Client API

Mastodon API

Most methods are similar to Mastodon API, but Mitra is not fully compatible.

OpenAPI spec (incomplete)

CLI commands

Generate RSA private key:

mitractl generate-rsa-key

Generate invite code:

mitractl generate-invite-code

List generated invites:

mitractl list-invite-codes

Delete profile:

mitractl delete-profile -i 55a3005f-f293-4168-ab70-6ab09a879679

Delete post:

mitractl delete-post -i 55a3005f-f293-4168-ab70-6ab09a879679

Remove remote posts and media older than 30 days:

mitractl delete-extraneous-posts -d 30

Delete attachments that doesn't belong to any post:

mitractl delete-unused-attachments -d 5

Generate ethereum address:

mitractl generate-ethereum-address

License

AGPL-3.0

Support

Monero: 8Ahza5RM4JQgtdqvpcF1U628NN5Q87eryXQad3Fy581YWTZU8o3EMbtScuioQZSkyNNEEE1Lkj2cSbG4VnVYCW5L1N4os5p