- Rust 99.8%
- Shell 0.1%
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 and more.
- Default character limit is 5000.
- Support for a limited subset of markdown-style formatting.
- Easy installation and small memory footprint (<50 MB).
- 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:hackliberty.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-certificatespackage).
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:
CREATEUSERmitraWITHPASSWORD'mitra';CREATEDATABASEmitraOWNERmitraENCODING'UTF8';Open configuration file /etc/mitra/config.yaml and configure the instance.
Create admin account:
su mitra -s $SHELL -c "mitractl create-account <username> <password> admin"
Start Mitra:
systemctl start mitra
An HTTP server will be needed to handle HTTPS requests. See examples of Nginx and Caddy configuration files.
Building from source
Clone the git repository or download the source archive from the Releases page.
Install cargo. Then run:
cargo build --release --features production
This command will produce two binaries in target/release directory, mitra and mitractl.
Install PostgreSQL, then create the database:
CREATEUSERmitraWITHPASSWORD'mitra';CREATEDATABASEmitraOWNERmitraENCODING'UTF8';Create configuration file by copying config.example.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.
Create admin account:
./mitractl create-account <username> <password> admin
Start Mitra:
./mitra
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
Hosting providers
Upgrading
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.
Configuration
Environment variables
See defaults.
Tor/I2P federation
Payments
IPFS integration (experimental)
See guide.
Administration
CLI
mitractl is a command-line tool for performing instance maintenance.
Client API
The majority of endpoints imitate Mastodon API. A number of additional endpoints exist for features that are not supported by Mastodon.
Client API is not stable and may change in minor releases.
Federation
See FEDERATION.md
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
Run CLI
cargo run --bin mitractl
Run linter
cargo clippy
Run tests
cargo test
License
Support
Monero: 8Ahza5RM4JQgtdqvpcF1U628NN5Q87eryXQad3Fy581YWTZU8o3EMbtScuioQZSkyNNEEE1Lkj2cSbG4VnVYCW5L1N4os5p