- Rust 99.7%
- Shell 0.2%
About
Federated micro-blogging platform.
Built on ActivityPub protocol, self-hosted, lightweight. Part of the Fediverse.
Features:
- Micro-blogging service (includes support for quote posts, custom emojis and more).
- Mastodon API.
- Content subscription service. Subscriptions provide a way to receive monthly payments from subscribers and to publish private content made exclusively for them.
- Sign-in with a wallet.
- Donation buttons.
- 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:halogen.city
Instances
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
- PostgreSQL 12+
- Rust 1.57+ (when building from source)
Mininum system requirements:
- 256 MB RAM (1 GB for building from source)
- 10 GB storage for average single user instance with default configuration
Optional integrations:
- Monero wallet service and Monero node
- 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:
CREATEUSERmitraWITHPASSWORD'mitra';CREATEDATABASEmitraOWNERmitra;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:
CREATEUSERmitraWITHPASSWORD'mitra';CREATEDATABASEmitraOWNERmitra;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.
Docker image
This image is maintained by the community and has not been verified:
https://hub.docker.com/r/bleakfuture0/mitra
Configuration
Tor federation
See guide.
Blockchain integrations
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.
CLI
mitractl is a command-line tool for performing instance maintenance.
License
Support
Monero: 8Ahza5RM4JQgtdqvpcF1U628NN5Q87eryXQad3Fy581YWTZU8o3EMbtScuioQZSkyNNEEE1Lkj2cSbG4VnVYCW5L1N4os5p