Movie reviews bot playground.
Find a file
2023-02-24 11:15:44 +00:00
.cargo Rewrite wallet address validator to work with non-ethereum addresses 2022-08-15 15:45:21 +00:00
contracts Enable contract feature detection 2022-06-30 12:20:14 +00:00
contrib Rename proxy_url config parameter to federation.proxy_url 2023-02-23 18:02:58 +00:00
docs Add empty spoiler_text property to Mastodon API Status object 2023-02-24 00:26:39 +00:00
files Add files directory, update readme 2021-11-26 22:39:54 +00:00
migrations Add OAuth authorization page 2023-02-11 23:30:46 +00:00
mitra-cli Bump version 2023-02-22 17:56:48 +00:00
mitra-config Rename proxy_url config parameter to federation.proxy_url 2023-02-23 18:02:58 +00:00
mitra-utils Bump version 2023-02-22 17:56:48 +00:00
scripts Add contracts to debian package 2022-06-03 20:33:46 +00:00
src Make webfinger response compatible with GNU Social account lookup 2023-02-24 11:15:44 +00:00
.editorconfig Create workspace and move mitractl to a separate crate 2023-01-22 20:50:28 +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 2023-02-22 17:56:48 +00:00
Cargo.toml Bump version 2023-02-22 17:56:48 +00:00
CHANGELOG.md Make webfinger response compatible with GNU Social account lookup 2023-02-24 11:15:44 +00:00
config.yaml.example Allow instance_uri configuration value to contain URI scheme 2023-02-10 11:55:05 +00:00
CONTRIBUTING.md Fix changelog 2022-12-27 21:07:34 +00:00
docker-compose.yaml Update monero containers 2022-12-12 22:54:48 +00:00
FEDERATION.md Add https://w3id.org/security/data-integrity/v1 to JSON-LD context 2023-01-28 22:43:15 +00:00
LICENSE Initial commit 2021-09-14 12:24:05 +00:00
README.md Update links to network stats 2023-02-12 01:25:37 +00:00

Mitra

Federated micro-blogging platform and content subscription service.

Built on ActivityPub protocol, self-hosted, lightweight. Part of the Fediverse.

Subscriptions provide a way to receive monthly payments from subscribers and to publish private content made exclusively for them.

Supported payment methods:

  • Monero.
  • ERC-20 tokens (on Ethereum and other EVM-compatible blockchains).

Other features:

Follow: @mitra@mitra.social

Matrix chat: #mitra:halogen.city

Network stats: FediList / Fediverse Observer

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

Code

Server: https://codeberg.org/silverpill/mitra (this repo)

Web client: https://codeberg.org/silverpill/mitra-web

Ethereum contracts: https://codeberg.org/silverpill/mitra-contracts

Requirements

  • Rust 1.56+ (when building from source)
  • PostgreSQL 12+

Optional:

  • Monero node and Monero wallet service
  • Ethereum node
  • IPFS node (see guide)

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 USER mitra WITH PASSWORD 'mitra';
CREATE DATABASE mitra OWNER mitra;

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.

Put any static files into the directory specified in configuration file. Building instructions for mitra-web frontend can be found at https://codeberg.org/silverpill/mitra-web#project-setup.

Start Mitra:

./mitra

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

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:

CREATE USER mitra WITH PASSWORD 'mitra';
CREATE DATABASE mitra OWNER mitra;

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. See the example of nginx configuration file.

Monero

Install Monero node or choose a public one.

Configure and start monero-wallet-rpc daemon. Add disable-rpc-login=1 to your monero-wallet-rpc config (currently RPC auth is not supported in Mitra).

Create a wallet for your instance.

Add blockchain configuration to blockchains array in your configuration file.

Ethereum

Install Ethereum client or choose a JSON-RPC API provider.

Deploy contracts on the blockchain. Instructions can be found at https://codeberg.org/silverpill/mitra-contracts.

Add blockchain configuration to blockchains array in your configuration file.

Development

See CONTRIBUTING.md

Start database server

docker-compose up -d

Test connection:

psql -h localhost -p 55432 -U mitra mitra

Start Monero node and wallet server

(this step is optional)

docker-compose --profile monero up -d

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

Federation

See FEDERATION.md

Client API

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

OpenAPI spec

CLI

mitractl is a command-line tool for performing instance maintenance.

Documentation

License

AGPL-3.0

Support

Monero: 8Ahza5RM4JQgtdqvpcF1U628NN5Q87eryXQad3Fy581YWTZU8o3EMbtScuioQZSkyNNEEE1Lkj2cSbG4VnVYCW5L1N4os5p