All Projects → rustodon → Rustodon

rustodon / Rustodon

Licence: agpl-3.0
A Mastodon-compatible, ActivityPub-speaking server in Rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Rustodon

Aardwolf
Powering connected social communities with open software.
Stars: ✭ 379 (-12.67%)
Mutual labels:  activitypub, mastodon, federated, social-network
soundstorm
The Federated Social Audio Platform
Stars: ✭ 26 (-94.01%)
Mutual labels:  social-network, mastodon, federated, activitypub
awesome-alternatives
A list of alternative websites/software to popular proprietary services.
Stars: ✭ 123 (-71.66%)
Mutual labels:  social-network, mastodon, federated
mastodon
Your self-hosted, globally interconnected microblogging community
Stars: ✭ 29,949 (+6800.69%)
Mutual labels:  social-network, mastodon, activitypub
merveilles-town
Fork of Mastodon repository with modifications to make Merveilles a town of our own.
Stars: ✭ 23 (-94.7%)
Mutual labels:  social-network, mastodon, activitypub
Mastodon
Your self-hosted, globally interconnected microblogging community
Stars: ✭ 26,120 (+5918.43%)
Mutual labels:  activitypub, mastodon, social-network
wordpress-ostatus
An OStatus plugin for WordPress
Stars: ✭ 21 (-95.16%)
Mutual labels:  social-network, mastodon, federated
Wordpress Activitypub
ActivityPub for WordPress
Stars: ✭ 118 (-72.81%)
Mutual labels:  activitypub, mastodon, federated
Microstatus
Lightweight Mastodon- and GNU social-compatible ActivityPub and OStatus server implementation
Stars: ✭ 96 (-77.88%)
Mutual labels:  activitypub, mastodon, social-network
gotosocial
Golang fediverse server.
Stars: ✭ 400 (-7.83%)
Mutual labels:  social-network, mastodon, activitypub
Social
🎉 Social can be used for work, or to connect to the fediverse!
Stars: ✭ 302 (-30.41%)
Mutual labels:  activitypub, mastodon, social-network
mastodon ynh
Free, open-source social network for YunoHost
Stars: ✭ 67 (-84.56%)
Mutual labels:  social-network, mastodon
mastodo
A fork of the GNU Social/AP-compatible microblogging server
Stars: ✭ 29 (-93.32%)
Mutual labels:  mastodon, activitypub
pylodon
Flask-based ActivityPub server
Stars: ✭ 86 (-80.18%)
Mutual labels:  federated, activitypub
activity-pub
API Platform ActivityPub Support
Stars: ✭ 63 (-85.48%)
Mutual labels:  mastodon, activitypub
ligh7hau5
A Matrix (https://matrix.org/docs/spec/) to Fediverse / ActivityPub client / bridge. Also, some media proxying.
Stars: ✭ 26 (-94.01%)
Mutual labels:  mastodon, activitypub
Nautilus
Turn your website into an ActivityPub profile
Stars: ✭ 55 (-87.33%)
Mutual labels:  mastodon, activitypub
Ocelot-Social
Free and open-source social network for active citizenship.
Stars: ✭ 49 (-88.71%)
Mutual labels:  social-network, activitypub
mastodon-lite
Lightweight client for mastodon micro blogging service.
Stars: ✭ 12 (-97.24%)
Mutual labels:  mastodon, activitypub
Anfora
🏺 Self-hosted photo gallery social network. Under development
Stars: ✭ 197 (-54.61%)
Mutual labels:  activitypub, social-network

Rustodon

Build Status dependency status maintainance: actively developed Average time to resolve an issue Percentage of issues still open All Contributors

Rustodon is an Mastodon-compatible federated social microblogging server. It utilizes ActivityPub to federate with a constellation of other servers, connecting their communities with yours.

Current Status

You probably don't want to use this, yet. Federation is WIP, etc.

We currently have authentication, users, profiles, statuses, content warnings, actors and statuses published as both HTML and AS2, and timelines. We do not have a job system, status delivery, inboxes, outboxes, notifcations, mentions, post privacy, or account privacy.

If you want to work on making Rustodon feature-complete, check out the issue tracker! We're not just looking for Rust devs, either; CSS witches, documentarians, UI/UX aficionados, etc, are highly welcome 😃

Hacking on the code

You will need to install several base dependencies:

  1. Rust. Make sure you have followed the official instructions regarding your PATH variable.

    In the Rust development environment, all tools are installed to the ~/.cargo/bin directory, and this is where you will find the Rust toolchain, including rustc, cargo, and rustup. Accordingly, it is customary for Rust developers to include this directory in their PATH environment variable. During installation rustup will attempt to configure the PATH. Because of differences between platforms, command shells, and bugs in rustup, the modifications to PATH may not take effect until the console is restarted, or the user is logged out, or it may not succeed at all. If, after installation, running rustc --version in the console fails, this is the most likely reason.

  2. Postgres. If you don't have a Postgres instance available, you can use the supplied docker-compose configuration file to start an instance:
    docker-compose up -d
    
    The instance will be started in the background. The default username and password is rustodon. The corresponding connection string would be:
    export DATABASE_URL=postgres://rustodon:[email protected]/rustodon
    
    On some operating systems, you may need to separately install the Postgres client library:
    • Debian/Ubuntu/etc: apt install libpq-dev
    • Arch: pacman -S postgresql-libs
  3. SASS. To install, follow the official directions, and make sure the sass binary is somewhere in your PATH.

Once you have installed these base components, you should run scripts/setup to install the remainder of the application dependencies.

Running the application

To run the application once you have installed all dependencies, you should run either:

  • cargo run: Runs just the server
  • fors start: Runs the server and additional helper processes

Rustodon will launch on http://localhost:8000 by default; this can be overriden by setting certain environment variables.

Federation requires that the application know where it's hosted, and (thanks to Webfinger) also forces us to serve over HTTPS. To get around this in a development environment, you can use ngrok or a similar service. To make sure the app knows where it's serving from (used to compute, eg, AS2 UIDs), set DOMAIN in .env.

Running database migrations

diesel database setup

Running the tests

cargo test --all

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Erin Moon
Erin Moon

📝 🖋 💻 🤔 🚧 👀 📖
Measly Twerp
Measly Twerp

💻 🤔
David Yip
David Yip

💻 🤔
Gaelan D'costa
Gaelan D'costa

🚇 🤔
Chris Zelenak
Chris Zelenak

💻 📖
Hugh
Hugh

💻 🎨 🖋 🤔
Moritz Heiber
Moritz Heiber

📖 📦 🔧
iliana destroyer of worlds
iliana destroyer of worlds

💻
1011X
1011X

🚧
Christopher Silva
Christopher Silva

🚧 💻
utam0k
utam0k

🚧 📦
dexamphetamine
dexamphetamine

💻 🤔
ash lea
ash lea

💻 🤔 🚧

This project follows the all-contributors specification. Contributions of any kind welcome!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].