https://github.com/mastodon/mastodon Skip to content Sign up * Why GitHub? Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Issues - + Integrations - + GitHub Sponsors - + Customer stories- * Team * Enterprise * Explore + Explore GitHub - Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing Plans - + Compare plans - + Contact Sales - + Education - [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} mastodon / mastodon Public * * Notifications * Star 25k * Fork 4.2k * Your self-hosted, globally interconnected microblogging community joinmastodon.org AGPL-3.0 License 25k stars 4.2k forks Star Notifications * Code * Issues 1.9k * Pull requests 40 * Discussions * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 33 branches 163 tags Code Latest commit @ClearlyClaire ClearlyClaire Fix some link previews being incorrectly generated from other prior l... ... ec05931 Oct 21, 2021 Fix some link previews being incorrectly generated from other prior l... ...inks (#16885) * Add tests * Fix some link previews being incorrectly generated from different prior links PR #12403 added a cache to avoid redundant queries when the OEmbed endpoint can be guessed from the URL. This caching mechanism is not perfectly correct as there is no guarantee that all pages from a given domain share the same OEmbed provider endpoint. This PR prevents the FetchOEmbedService from caching OEmbed endpoint that cannot be generalized by replacing a fully-qualified URL from the endpoint's parameters, greatly reducing the number of incorrect cached generalizations. ec05931 Git stats * 10,843 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .circleci Improve CircleCI config (#16861) Oct 18, 2021 .github Change references to tootsuite/mastodon to mastodon/mastodon (#16491) Jul 13, 2021 app Fix some link previews being incorrectly generated from other prior l... Oct 21, 2021 bin Update Mastodon to Rails 6.1 (#15910) Mar 24, 2021 chart Update Helm release elasticsearch to v15.10.3 (#16651) Oct 14, 2021 config Add S3_FORCE_SINGLE_REQUEST env var to work around S3 compatibility i... Oct 18, 2021 db Add feature to automatically delete old toots (#16529) Aug 9, 2021 dist Make sure nginx always send HSTS header (#16633) Aug 20, 2021 lib Add S3_FORCE_SINGLE_REQUEST env var to work around S3 compatibility i... Oct 18, 2021 log Initial commit Feb 20, 2016 nanobox Resync Nanobox files with the 2.9.0 release (#11083) Jun 14, 2019 public Add assets from Twemoji 13.1.0 (#16345) Jun 1, 2021 spec Fix some link previews being incorrectly generated from other prior l... Oct 21, 2021 streaming fix(streaming): req.scopes can be nullable (#16823) Oct 13, 2021 vendor Increase files checked by ESLint (#9705) Jan 4, 2019 .buildpacks Remove nodejs buildpack from buildpacks (#14364) Jul 20, 2020 .codeclimate.yml Exclude locale files from Code Climate (#16863) Oct 18, 2021 .deepsource.toml Update .deepsource.toml (#15753) Feb 19, 2021 .dockerignore Ignore git related files from docker build (#16282) May 22, 2021 .editorconfig Add final newline to locale files (#2890) May 7, 2017 .env.nanobox New env variable: CAS_SECURITY_ASSUME_EMAIL_IS_VERIFIED (#16655) Aug 25, 2021 .env.production.sample Fix the wrong full documentation link (#14293) Jul 12, 2020 .env.test Bump webpacker from 4.0.7 to 4.2.0 (#12416) Nov 20, 2019 .env.vagrant Add a default DB_HOST to .env.vagrant for enable the streaming (# 14030) Jun 14, 2020 .eslintignore Increase files checked by ESLint (#9705) Jan 4, 2019 .eslintrc.js Enable promise/catch-or-return allowFinally (#14289) Jul 11, 2020 .foreman Replace sprockets/browserify with Webpack (#2617) May 3, 2017 .gitattributes Add .gitattributes file to avoid unwanted CRLF (#3954) Jun 26, 2017 .gitignore helm: pin versions, commit lockfile (#15749) Feb 19, 2021 .haml-lint.yml Added haml-lint and fix warnings (#2773) May 8, 2017 .nanoignore Remove Storybook (#4397) Jul 27, 2017 .nvmrc NodeJS 14 support - circleci/docker/.nvmrc (#16163) Aug 10, 2021 .profile Add ffmpeg and dependent packages as well as LD_LIBRARY_PATHs (#3276) May 24, 2017 .rspec Adding a Mention model, test stubs Feb 24, 2016 .rubocop.yml Fix rubocop config and warnings (#15503) Jan 7, 2021 .ruby-version Use ruby-2.7.4 (#16481) Jul 9, 2021 .sass-lint.yml Fix sass-lint config (#10982) Jun 6, 2019 .slugignore Remove Storybook (#4397) Jul 27, 2017 .yarnclean Replace from scss-lint to sass-lint (#10958) Jun 4, 2019 AUTHORS.md Change references to tootsuite/mastodon to mastodon/mastodon (#16491) Jul 13, 2021 Aptfile Use libvpx >= 5 (#15591) Jan 22, 2021 CHANGELOG.md Change references to tootsuite/mastodon to mastodon/mastodon (#16491) Jul 13, 2021 CODE_OF_CONDUCT.md Add code of conduct from GitHub generator (#5674) Nov 13, 2017 CONTRIBUTING.md Change references to tootsuite/mastodon to mastodon/mastodon (#16491) Jul 13, 2021 Capfile remove capistrano/faster_assets from Capfile (#2737) May 3, 2017 Dockerfile add bundle flag to suppress root warning (#16557) Oct 14, 2021 Gemfile Bump redis from 4.4.0 to 4.5.1 (#16868) Oct 20, 2021 Gemfile.lock Bump rubocop-rails from 2.12.3 to 2.12.4 (#16869) Oct 20, 2021 LICENSE Fix #49 - License changed from GPL-2.0 to AGPL-3.0 Sep 21, 2016 Procfile fix: make Procfile compatible with herokuish (#12685) Aug 29, 2020 Procfile.dev Set RAILS_ENV in Procfile.dev (#15502) Jan 7, 2021 README.md add Vagrant short guide to readme (#13009) Oct 14, 2021 Rakefile Initial commit Feb 20, 2016 SECURITY.md Fix security policy (#16248) May 16, 2021 Vagrantfile replace keys.gnupg.net with curl from rvm.io (#16568) Oct 14, 2021 app.json Change references to tootsuite/mastodon to mastodon/mastodon (#16491) Jul 13, 2021 babel.config.js Remove dependency for @babel/plugin-proposal-class-properties (#16155 ) May 4, 2021 boxfile.yml Fix to isolate the sidekiq process that runs the scheduler job (# 15314) Dec 15, 2020 config.ru Fix rubocop issues, introduce usage of frozen literal to improve perf... Nov 15, 2016 crowdin.yml Update Crowdin configuration file Sep 14, 2019 docker-compose.yml Update docker-compose.yml (#16489) Jul 11, 2021 ide-helper.js Add JS IDE helper (#13012) Apr 27, 2020 package.json Bump babel-jest from 27.2.5 to 27.3.1 (#16879) Oct 20, 2021 postcss.config.js Increase files checked by ESLint (#9705) Jan 4, 2019 priv-config TOR federation (#7875) Jun 26, 2018 scalingo.json Change references to tootsuite/mastodon to mastodon/mastodon (#16491) Jul 13, 2021 yarn.lock Bump babel-jest from 27.2.5 to 27.3.1 (#16879) Oct 20, 2021 View code Navigation Features Deployment Contributing License README.md Mastodon GitHub release Build Status Code Climate Crowdin Docker Pulls 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, 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)! Click below to learn more in a video: Screenshot Navigation * Project homepage * Support the development via Patreon * View sponsors * Blog * Documentation * Browse Mastodon servers * Browse Mastodon apps Features [68747470733a2f2f646] No vendor lock-in: Fully interoperable with any conforming platform It doesn't have to be Mastodon, whatever implements ActivityPub is part of the social network! Learn more Real-time, chronological timeline updates See the updates of people you're following appear in real-time in the UI via WebSockets. There's a firehose view as well! Media attachments like images and short videos Upload and view images and WebM/MP4 videos attached to the updates. Videos with no audio track are treated like GIFs; normal videos are looped - like vines! Safety and moderation tools Private posts, locked accounts, phrase filtering, muting, blocking and all sorts of other features, along with a reporting and moderation system. Learn more OAuth2 and a straightforward REST API Mastodon acts as an OAuth2 provider so 3rd party apps can use the REST and Streaming APIs, resulting in a rich app ecosystem with a lot of choices! Deployment Tech stack: * Ruby on Rails powers the REST API and other web pages * React.js and Redux are used for the dynamic parts of the interface * Node.js powers the streaming API Requirements: * PostgreSQL 9.5+ * Redis 4+ * Ruby 2.5+ * Node.js 12+ The repository includes deployment configurations for Docker and docker-compose, but also a few specific platforms like Heroku, Scalingo, and Nanobox. The stand-alone installation guide is available in the documentation. A Vagrant configuration is included for development purposes. To use it, complete following steps: * Install Vagrant and Virtualbox * Run vagrant up * Run vagrant ssh -c "cd /vagrant && foreman start" * Open http://mastodon.local in your browser Contributing Mastodon is free, open-source software licensed under AGPLv3. You can open issues for bugs you've found or features 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. If your contributions are accepted into Mastodon, you can request to be paid through our OpenCollective. IRC channel: #mastodon on irc.libera.chat License Copyright (C) 2016-2021 Eugen Rochko & other Mastodon contributors (see AUTHORS.md) 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/. About Your self-hosted, globally interconnected microblogging community joinmastodon.org Topics docker social-network activity-stream microblog mastodon webfinger activitypub Resources Readme License AGPL-3.0 License Releases 154 v3.4.1 Latest Jun 3, 2021 + 153 releases Sponsor this project * * patreon patreon.com/mastodon * open_collective opencollective.com/mastodon Learn more about GitHub Sponsors Packages 0 No packages published Contributors 649 * @Gargron * @dependabot[bot] * @ClearlyClaire * @dependabot-preview[bot] * @ykzts * @akihikodaki * @mjankowski * @noellabo * @unarist * @abcang * @mayaeh + 638 contributors Languages * Ruby 57.0% * JavaScript 27.4% * SCSS 9.1% * Haml 6.0% * HTML 0.3% * Dockerfile 0.1% * Other 0.1% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.