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
Demo instance: https://public.mitra.social/ (invite-only)
- mitra-web (Web)
- Bloat (Web, NoJS)
- Phanpy (Web)
- pl-fe (Web)
- Husky (Android)
- Fedilab (Android)
- Fedicat (iOS)
- toot (CLI)
- PostgreSQL 15+
- Rust 1.75+ (when building from source)
- SSL certificates (i.e.
ca-certificatespackage).
Minimum system requirements:
- 256 MB RAM (1 GB for building from source)
- 10 GB storage for average single user instance with default configuration
Download package from the Releases page.
Install Mitra:
dpkg -i mitra_amd64.debInstall 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 mitraAn HTTP server will be needed to handle HTTPS requests. See examples of Nginx and Caddy configuration files.
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 productionThis 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> adminStart Mitra:
./mitra serverAn 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.
These images and packages are maintained by the community.
https://hub.docker.com/r/bleakfuture0/mitra
Install from testing repository:
echo '@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
apk update
apk add -vi mitra@testinghttps://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/mi/mitra/package.nix
https://apps.yunohost.org/app/mitra
Mitra uses semantic versioning (major.minor.patch):
patch- bugfixesminor- improvements and new featuresmajor- 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.
Install package:
dpkg -i mitra_amd64.debThe 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
See defaults.
Subscriptions can be used without enabling Monero integration.
See guide.
IPFS integration is not actively maintained and may be removed in the future.
CLI is stable and breaking changes don't happen in minor releases.
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.
See FEDERATION.md
This API is not stable and may be removed in the future.
See CONTRIBUTING.md
docker-compose up -dTest connection:
psql -h localhost -p 55432 -U mitra mitra(this step is optional)
docker-compose --profile monero up -dCreate config file, adjust settings if needed:
cp config_dev.example.yaml config.yamlCompile and run service:
cargo run servercargo runcargo clippycargo testMonero: 8Ahza5RM4JQgtdqvpcF1U628NN5Q87eryXQad3Fy581YWTZU8o3EMbtScuioQZSkyNNEEE1Lkj2cSbG4VnVYCW5L1N4os5p