2022-06-09 22:25:23 +02:00
< h1 > < picture >
< source media = "(prefers-color-scheme: dark)" srcset = "./lib/assets/wordmark.dark.png?raw=true" >
< source media = "(prefers-color-scheme: light)" srcset = "./lib/assets/wordmark.light.png?raw=true" >
2022-06-10 17:37:25 +02:00
< img alt = "Mastodon" src = "./lib/assets/wordmark.light.png?raw=true" height = "34" >
2022-06-09 22:25:23 +02:00
< / picture > < / h1 >
2016-02-23 13:08:01 +01:00
2021-07-13 15:46:20 +02:00
[![GitHub release ](https://img.shields.io/github/release/mastodon/mastodon.svg )][releases]
2023-03-06 22:49:43 -05:00
[![Ruby Testing ](https://github.com/mastodon/mastodon/actions/workflows/test-ruby.yml/badge.svg )](https://github.com/mastodon/mastodon/actions/workflows/test-ruby.yml)
2019-06-12 15:56:41 +02:00
[![Crowdin ](https://d322cqt584bo4o.cloudfront.net/mastodon/localized.svg )][crowdin]
2016-03-18 23:23:19 +01:00
2021-07-13 15:46:20 +02:00
[releases]: https://github.com/mastodon/mastodon/releases
2019-06-12 15:56:41 +02:00
[crowdin]: https://crowdin.com/project/mastodon
2016-03-21 09:19:16 +01:00
2023-07-29 02:39:19 +05:30
Mastodon is a **free, open-source social network server** based on ActivityPub where users can follow friends and discover new ones. On Mastodon, users can publish anything they want: links, pictures, text, and video. All Mastodon servers are interoperable as a federated network (users on one server can seamlessly communicate with users from another one, including non-Mastodon software that implements ActivityPub!)
2016-10-24 12:37:06 +02:00
2018-10-19 18:49:35 +02:00
Click below to **learn more** in a video:
2016-10-05 13:37:47 +02:00
2018-10-19 18:49:35 +02:00
[![Screenshot ](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/ezgif-2-60f1b00403.gif )][youtube_demo]
2016-10-05 13:37:47 +02:00
2018-07-05 21:02:21 +02:00
[youtube_demo]: https://www.youtube.com/watch?v=IPSbNdBmWKE
2016-09-24 20:44:47 +02:00
2019-01-28 04:17:11 +01:00
## Navigation
2016-09-02 14:07:21 +02:00
2018-10-19 18:49:35 +02:00
- [Project homepage 🐘 ](https://joinmastodon.org )
- [Support the development via Patreon][patreon]
- [View sponsors ](https://joinmastodon.org/sponsors )
- [Blog ](https://blog.joinmastodon.org )
- [Documentation ](https://docs.joinmastodon.org )
2023-03-31 13:20:11 -04:00
- [Roadmap ](https://joinmastodon.org/roadmap )
2023-03-15 16:41:13 +01:00
- [Official Docker image ](https://github.com/mastodon/mastodon/pkgs/container/mastodon )
2022-03-15 08:16:45 +01:00
- [Browse Mastodon servers ](https://joinmastodon.org/communities )
2018-10-19 18:49:35 +02:00
- [Browse Mastodon apps ](https://joinmastodon.org/apps )
2016-09-02 14:07:21 +02:00
2018-09-02 18:32:25 +02:00
[patreon]: https://www.patreon.com/mastodon
2016-09-02 14:07:21 +02:00
2016-09-21 23:32:53 +02:00
## Features
2022-06-09 22:25:23 +02:00
< img src = "/app/javascript/images/elephant_ui_working.svg?raw=true" align = "right" width = "30%" / >
2018-10-19 18:49:35 +02:00
2021-12-25 16:55:31 -05:00
### No vendor lock-in: Fully interoperable with any conforming platform
2017-10-07 21:20:59 +02:00
2021-12-25 16:55:31 -05:00
It doesn't have to be Mastodon; whatever implements ActivityPub is part of the social network! [Learn more ](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/ )
2017-10-07 21:20:59 +02:00
2021-12-25 16:55:31 -05:00
### Real-time, chronological timeline updates
2017-10-07 21:20:59 +02:00
2021-12-25 16:55:31 -05:00
Updates of people you're following appear in real-time in the UI via WebSockets. There's a firehose view as well!
2017-10-07 21:20:59 +02:00
2021-12-25 16:55:31 -05:00
### Media attachments like images and short videos
2017-10-07 21:20:59 +02:00
2021-12-25 16:55:31 -05:00
Upload and view images and WebM/MP4 videos attached to the updates. Videos with no audio track are treated like GIFs; normal videos loop continuously!
2017-10-07 21:20:59 +02:00
2021-12-25 16:55:31 -05:00
### Safety and moderation tools
2017-10-07 21:20:59 +02:00
2023-07-29 02:39:19 +05:30
Mastodon includes private posts, locked accounts, phrase filtering, muting, blocking, and all sorts of other features, along with a reporting and moderation system. [Learn more ](https://blog.joinmastodon.org/2018/07/cage-the-mastodon/ )
2017-10-07 21:20:59 +02:00
2021-12-25 16:55:31 -05:00
### OAuth2 and a straightforward REST API
2017-10-07 21:20:59 +02:00
2021-12-25 16:55:31 -05:00
Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Streaming APIs. This results in a rich app ecosystem with a lot of choices!
2017-10-07 21:20:59 +02:00
2018-10-19 18:49:35 +02:00
## Deployment
2017-10-07 21:20:59 +02:00
2023-08-29 10:20:36 +02:00
### Tech stack
2017-10-07 21:20:59 +02:00
2018-10-19 18:49:35 +02:00
- **Ruby on Rails** powers the REST API and other web pages
2024-06-12 19:18:30 +05:30
- **React.js** and **Redux** are used for the dynamic parts of the interface
2018-10-19 18:49:35 +02:00
- **Node.js** powers the streaming API
2017-10-07 21:20:59 +02:00
2023-08-29 10:20:36 +02:00
### Requirements
2017-05-04 09:50:36 -04:00
2023-10-26 16:35:15 -04:00
- **PostgreSQL** 12+
2020-03-21 10:10:24 +08:00
- **Redis** 4+
2024-04-15 06:19:23 -04:00
- **Ruby** 3.1+
2024-05-10 22:34:32 +10:00
- **Node.js** 18+
2016-03-06 13:00:38 +01:00
2024-06-04 13:29:08 -04:00
The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku** , and **Scalingo** . For Helm charts, reference the [mastodon/chart repository ](https://github.com/mastodon/chart ). The [**standalone** installation guide ](https://docs.joinmastodon.org/admin/install/ ) is available in the documentation.
2017-04-16 16:42:46 +02:00
2023-08-29 10:20:36 +02:00
## Development
### Vagrant
2023-07-29 02:39:19 +05:30
A **Vagrant** configuration is included for development purposes. To use it, complete the following steps:
2021-10-15 05:06:19 +10:00
- Install Vagrant and Virtualbox
2022-01-16 16:55:41 +01:00
- Install the `vagrant-hostsupdater` plugin: `vagrant plugin install vagrant-hostsupdater`
2021-10-15 05:06:19 +10:00
- Run `vagrant up`
2024-03-02 13:31:43 -05:00
- Run `vagrant ssh -c "cd /vagrant && bin/dev"`
2021-10-15 05:06:19 +10:00
- Open `http://mastodon.local` in your browser
2017-01-07 23:22:24 +11:00
2024-06-10 11:22:26 -04:00
### macOS
2023-08-29 10:20:36 +02:00
2024-06-10 11:22:26 -04:00
To set up **macOS** for native development, complete the following steps:
2023-07-18 08:02:45 +01:00
2024-06-10 11:22:26 -04:00
- Install [Homebrew] and run `brew install postgresql@14 redis imagemagick
libidn nvm` to install the required project dependencies
- Use a Ruby version manager to activate the ruby in `.ruby-version` and run
`nvm use` to activate the node version from `.nvmrc`
- Run the `bin/setup` script, which will install the required ruby gems and node
packages and prepare the database for local development
- Finally, run the `bin/dev` script which will launch services via `overmind`
(if installed) or `foreman`
2023-07-18 08:02:45 +01:00
2023-08-29 10:20:36 +02:00
### Docker
2024-06-05 19:54:59 -04:00
For production hosting and deployment with **Docker** , use the `Dockerfile` and
2024-06-07 16:18:02 -04:00
`docker-compose.yml` in the project root directory.
2023-08-29 10:20:36 +02:00
2024-06-07 16:18:02 -04:00
For local development, install and launch [Docker], and run:
2023-03-04 15:35:00 -08:00
2024-06-07 16:18:02 -04:00
```shell
docker compose -f .devcontainer/compose.yaml up -d
docker compose -f .devcontainer/compose.yaml exec app bin/setup
docker compose -f .devcontainer/compose.yaml exec app bin/dev
```
### Dev Containers
Within IDEs that support the [Development Containers] specification, start the
"Mastodon on local machine" container from the editor. The necessary `docker
compose` commands to build and setup the container should run automatically. For
**Visual Studio Code** this requires installing the [Dev Container extension].
2023-03-04 15:35:00 -08:00
2023-08-29 10:20:36 +02:00
### GitHub Codespaces
2023-03-04 15:35:00 -08:00
2024-06-07 16:18:02 -04:00
[GitHub Codespaces] provides a web-based version of VS Code and a cloud hosted
development environment configured with the software needed for this project.
2023-03-04 15:35:00 -08:00
2024-06-07 16:18:02 -04:00
[![Open in GitHub Codespaces ](https://github.com/codespaces/badge.svg )][codespace]
- Click the button to create a new codespace, and confirm the options
- Wait for the environment to build (takes a few minutes)
- When the editor is ready, run `bin/dev` in the terminal
- Wait for an _Open in Browser_ prompt. This will open Mastodon
- On the _Ports_ tab "stream" setting change _Port visibility_ → _Public_
2023-03-04 15:35:00 -08:00
2016-12-02 14:21:19 +01:00
## Contributing
2016-10-05 13:37:47 +02:00
2019-10-25 02:18:21 +05:30
Mastodon is **free, open-source software** licensed under **AGPLv3** .
2018-10-19 18:49:35 +02:00
2021-12-25 16:55:31 -05:00
You can open issues for bugs you've found or f eatures you think are missing. You can also submit pull requests to this repository or submit translations using Crowdin. To get started, take a look at [CONTRIBUTING.md ](CONTRIBUTING.md ). If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective ](https://opencollective.com/mastodon ).
2016-11-08 23:33:59 +01:00
2021-05-24 05:16:45 +02:00
**IRC channel**: #mastodon on irc.libera.chat
2016-11-28 13:40:33 +01:00
2018-03-11 07:12:23 -07:00
## License
2024-01-01 22:08:01 +03:00
Copyright (C) 2016-2024 Eugen Rochko & other Mastodon contributors (see [AUTHORS.md ](AUTHORS.md ))
2018-03-11 07:12:23 -07:00
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see < https: / / www . gnu . org / licenses / > .
2024-06-07 16:18:02 -04:00
[codespace]: https://codespaces.new/mastodon/mastodon?quickstart=1& devcontainer_path=.devcontainer%2Fcodespaces%2Fdevcontainer.json
[Dev Container extension]: https://containers.dev/supporting#dev -containers
[Development Containers]: https://containers.dev/supporting
[Docker]: https://docs.docker.com
[GitHub Codespaces]: https://docs.github.com/en/codespaces
2024-06-10 11:22:26 -04:00
[Homebrew]: https://brew.sh