.cargo | ||
contracts | ||
contrib | ||
docs | ||
files | ||
migrations | ||
scripts | ||
src | ||
.editorconfig | ||
.env | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
config.yaml.example | ||
CONTRIBUTING.md | ||
docker-compose.yaml | ||
FEDERATION.md | ||
LICENSE | ||
README.md |
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:
Other features:
- Sign-in with a wallet.
- Account migrations (from one server to another).
- Donation buttons.
- Token-gated registration (can be used to verify membership in some group or to stop bots).
- Converting posts into NFTs.
- Saving posts to IPFS.
Demo instance: https://public.mitra.social/ (invite-only)
Network stats: https://the-federation.info/mitra
Matrix chat: #mitra:halogen.city
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+
- IPFS node (optional, see guide)
- Ethereum node (optional)
- Monero node and Monero wallet (optional)
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.
CLI
mitractl
is a command-line tool for performing instance maintenance.
License
Support
Monero: 8Ahza5RM4JQgtdqvpcF1U628NN5Q87eryXQad3Fy581YWTZU8o3EMbtScuioQZSkyNNEEE1Lkj2cSbG4VnVYCW5L1N4os5p