Federated social network
  • Rust 99.8%
  • Shell 0.1%
Find a file
2026-01-10 10:46:39 +00:00
.cargo Move clippy config from rustflags to cargo manifest 2024-05-22 23:27:32 +00:00
apx_core Support wasm32-unknown-unknown compilation target in apx_sdk 2026-01-09 14:38:07 +00:00
apx_sdk Support wasm32-unknown-unknown compilation target in apx_sdk 2026-01-09 14:38:07 +00:00
contrib Update dockerfile example 2025-07-22 18:12:05 +00:00
docs Update Monero docs 2026-01-07 15:09:57 +00:00
files Add files directory, update readme 2021-11-26 22:39:54 +00:00
logo Fix Mitra custom emoji size 2023-06-19 12:57:28 +00:00
mitra_activitypub Fix LWS invoice creation via Offer activity 2026-01-06 10:20:14 +00:00
mitra_adapters Generate better error messages when Monero address is not valid 2026-01-07 08:46:00 +00:00
mitra_api Generate better error messages when Monero address is not valid 2026-01-07 14:21:09 +00:00
mitra_cli Add export-posts command 2025-12-31 17:59:52 +00:00
mitra_config Remove "multichain deployments are not recommended" warning 2026-01-07 09:14:14 +00:00
mitra_models Add support for conversation following 2025-12-30 22:20:45 +00:00
mitra_services Generate better error messages when Monero address is not valid 2026-01-07 08:46:00 +00:00
mitra_utils Move hashes module to crypto module 2025-10-15 20:17:20 +00:00
mitra_validators Move Origin type to mitra_models 2025-11-25 21:13:00 +00:00
mitra_workers Send payment notification to remote server when receving a payment for LWS invoice 2026-01-07 14:21:09 +00:00
scripts Generate completions for bash when creating deb package 2025-12-12 05:30:26 +00:00
.clippy.toml Disallow unwrap() 2024-02-01 12:57:01 +00:00
.editorconfig Create workspace and move mitractl to a separate crate 2023-01-22 20:50:28 +00:00
.env Don't change default config file path when production feature is enabled 2025-04-16 19:00:15 +00:00
.gitignore Add files directory, update readme 2021-11-26 22:39:54 +00:00
Cargo.lock Fix JSON signature generation on wasm32-unknown-unknown target 2026-01-08 22:43:22 +00:00
Cargo.toml Bump version 2026-01-07 14:21:02 +00:00
CHANGELOG.md Generate better error messages when Monero address is not valid 2026-01-07 14:21:09 +00:00
config.example.yaml Improve documentation of local limits 2026-01-10 10:46:39 +00:00
config_dev.example.yaml Rename instance_uri configuration parameter to instance_url 2025-10-06 10:24:20 +00:00
CONTRIBUTING.md Document versioning 2026-01-01 09:26:59 +00:00
docker-compose.yaml Limit monero-lws container restarts 2025-12-30 20:33:14 +00:00
FEDERATION.md Refer to new NodeInfo FEP 2025-11-13 11:29:14 +00:00
LICENSE Initial commit 2021-09-14 12:24:05 +00:00
README.md Clarify building from source instructions 2025-12-22 19:30:20 +00:00
SECURITY.md Add security policy 2025-08-12 18:52:42 +00:00

Mitra logo

About

Federated micro-blogging platform.

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

Features:

  • Micro-blogging service
    • Quote posts, custom emojis, reactions, polls and more.
    • Default character limit is 5000.
    • Support for markdown-style formatting.
  • Easy installation and small memory footprint (<50 MB).
  • Interoperable. Can show content from blogs, forums and other types of federated services.
  • Mastodon API.
  • Content subscription service. Subscriptions provide a way to receive monthly payments from subscribers and to publish private content made exclusively for them.
    • Supported payment methods: Monero, a peer to peer digital cash system where transactions are private by default.
  • Account migrations (from one server to another). Identity can be detached from the server.
  • Federation over Tor and/or I2P.

Follow: @mitra@mitra.social

Matrix chat: #mitra:unredacted.org

Instances

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

Supported clients

Requirements

  • PostgreSQL 15+
  • Rust 1.75+ (when building from source)
  • SSL certificates (i.e. ca-certificates package).

Minimum system requirements:

  • 256 MB RAM (1 GB for building from source)
  • 10 GB storage for average single user instance with default configuration

Installation

Debian package

Download package from the Releases page.

Install Mitra:

dpkg -i mitra_amd64.deb

Install PostgreSQL, then create the database:

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

Open configuration file /etc/mitra/config.yaml and configure the instance.

Create admin account:

su mitra -s $SHELL -c "mitra create-account <username> <password> admin"

Start Mitra:

systemctl enable --now mitra

An HTTP server will be needed to handle HTTPS requests. See examples of Nginx and Caddy configuration files.

Building from source

Install cargo.

Clone the git repository or download the source archive from the Releases page.

Navigate to the repository directory. Then run:

cargo build --release --features production

This command will produce a mitra binary in target/release directory.

Install PostgreSQL, then create the database:

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

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

Create data and web client directories at locations specified in the configuration file (storage_dir and web_client_dir parameters).

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

Create admin account:

./mitra create-account <username> <password> admin

Start Mitra:

./mitra server

An HTTP server will be needed to handle HTTPS requests. See examples of Nginx and Caddy configuration files.

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

Other installation methods

These images and packages are maintained by the community.

Docker image

https://hub.docker.com/r/bleakfuture0/mitra

Alpine Linux

Install from testing repository:

echo '@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
apk update
apk add -vi mitra@testing

Nix

https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/mi/mitra/package.nix

YunoHost

https://apps.yunohost.org/app/mitra

Upgrading

Mitra uses semantic versioning (major.minor.patch):

  • patch - bugfixes
  • minor - improvements and new features
  • major - breaking changes

Upgrade to a minor or a patch version is performed by replacing binaries and restarting the service.

Upgrade to a major version requires special migration steps that are documented in release notes.

Debian package

Install package:

dpkg -i mitra_amd64.deb

The server will be stopped automatically during installation. Do not overwrite existing configuration file if asked.

Start Mitra again when the installation is complete:

systemctl start mitra

Configuration

Environment variables

See defaults.

Tor/I2P federation

See Tor guide and I2P guide.

Payments

Subscriptions can be used without enabling Monero integration.

IPFS integration (experimental)

See guide.

IPFS integration is not actively maintained and may be removed in the future.

Administration

CLI

CLI is stable and breaking changes don't happen in minor releases.

Documentation

REST API

The majority of endpoints imitate Mastodon API. Some Pleroma extensions are supported as well. A number of additional endpoints exist for features that are unique to Mitra.

Client API is not stable and may change in minor releases.

OpenAPI spec

Federation

See FEDERATION.md

ActivityPub Client API

This API is not stable and may be removed in the future.

Documentation

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_dev.example.yaml config.yaml

Compile and run service:

cargo run server

Run CLI

cargo run

Run linter

cargo clippy

Run tests

cargo test

License

AGPL-3.0

Support

Monero: 8Ahza5RM4JQgtdqvpcF1U628NN5Q87eryXQad3Fy581YWTZU8o3EMbtScuioQZSkyNNEEE1Lkj2cSbG4VnVYCW5L1N4os5p