github linuxserver/docker-mastodon v4.5.0-ls167

latest release: glitch-v4.5.0-ls306
4 hours ago

CI Report:

N/A

LinuxServer Changes:

Full Changelog: v4.4.8-ls166...v4.5.0-ls167

Remote Changes:

Mastodon

For a user-focused highlight of these changes, see https://blog.joinmastodon.org/2025/11/mastodon-4.5/
For changes of particular interest to application developers, see https://blog.joinmastodon.org/2025/10/mastodon-4-5-for-devs/
For a more detailed run-down on the changes, see the Changelog section below!

Upgrade overview

This release contains upgrade notes that deviate from the norm:

⚠️ The minimum supported version for Redis has been bumped to 7.0
⚠️ The minimum supported version for PostgreSQL has been bumped to PostgreSQL 14
⚠️ Rolling updates from versions earlier than Mastodon 4.3 are not supported
⚠️ Import jobs from Mastodon versions earlier than Mastodon 4.2 are not supported
ℹ️ Sidekiq has been updated, which may require you to change health check or monitoring code
ℹ️ Requires streaming server restart
ℹ️ Requires database migrations

For more information, view the complete release notes and scroll down to the upgrade instructions section.

Changelog

Added

  • Add support for allowing and authoring quotes (#35355, #35578, #35614, #35618, #35624, #35626, #35652, #35629, #35665, #35653, #35670, #35677, #35690, #35697, #35689, #35699, #35700, #35701, #35709, #35714, #35713, #35715, #35725, #35749, #35769, #35780, #35762, #35804, #35808, #35805, #35819, #35824, #35828, #35822, #35835, #35865, #35860, #35832, #35891, #35894, #35895, #35820, #35917, #35924, #35925, #35914, #35930, #35941, #35939, #35948, #35955, #35967, #35990, #35991, #35975, #35971, #36002, #35986, #36031, #36034, #36038, #36054, #36052, #36055, #36065, #36068, #36083, #36087, #36080, #36091, #36090, #36118, #36119, #36128, #36094, #36129, #36138, #36132, #36151, #36158, #36171, #36194, #36220, #36169, #36130, #36249, #36153, #36299, #36291, #36301, #36315, #36317, #36364, #36383, #36381, #36459, #36464, #36461, #36516, #36528, #36549, #36550, #36559, #36693, #36704, #36690, #36689, #36696, #36721, #36695 and #36736 by @ChaosExAnima, @ClearlyClaire, @Lycolia, @diondiondion, and @tribela)
    This includes a revamp of the composer interface.
    See https://blog.joinmastodon.org/2025/09/introducing-quote-posts/ for a user-centric overview of the feature, and https://docs.joinmastodon.org/client/quotes/ for API documentation.
  • Add support for fetching and refreshing replies to the web UI (#35210, #35496, #35575, #35500, #35577, #35602, #35603, #35654, #36141, #36237, #36172, #36256, #36271, #36334, #36382, #36239, #36484, #36481, #36583, #36627 and #36547 by @ClearlyClaire, @diondiondion, @Gargron and @renchap)
  • Add ability to block words in usernames (#35407, #35655, and #35806 by @ClearlyClaire and @Gargron)
  • Add ability to individually disable local or remote feeds for visitors or logged-in users disabled value to server setting for live and topic feeds, as well as user permission to bypass that (#36338, #36467, #36497, #36563, #36577, #36585, #36607 and #36703 by @ClearlyClaire)
    This splits the timeline_preview setting into four more granular settings controlling live feeds and topic (hashtag, trending link) feeds.
    The setting for local topic feeds has 2 values: public and authenticated. Every other setting has 3 values: public, authenticated, disabled.
    When disabled, users with the “View live and topic feeds” will still be able to view them.
  • Add support for displaying of quote posts in Moderator UI (#35964 by @ThisIsMissEm)
  • Add support for displaying link previews for Admin UI (#35958 by @ThisIsMissEm)
  • Add a new server setting to choose the server landing page (#36588 and #36602 by @ClearlyClaire and @renchap)
  • Add support for Update activities on converted object types (#36322 by @ClearlyClaire)
  • Add support for dynamic viewport height (#36272 by @e1berd)
  • Add support for numeric-based URIs for new local accounts (#32724, #36304, #36316, and #36365 by @ClearlyClaire)
  • Add default visualizer for audio upload without poster (#36734 by @ChaosExAnima)
  • Add Traditional Mongolian to posting languages (#36196 by @shimon1024)
  • Add example post with manual quote approval policy to dev:populate_sample_data (#36099 by @ClearlyClaire)
  • Add server-side support for handling posts with a quote policy allowing followers to quote (#36093 and #36127 by @ClearlyClaire)
  • Add schema.org markup to SEO-enabled posts (#36075 by @Gargron)
  • Add migration to fill unset default quote policy based on default post privacy (#36041 by @ClearlyClaire)
  • Add “Posting defaults” setting page, moving existing settings from “Other” (#35896, #36033, #35966, #35969, and #36084 by @ClearlyClaire and @diondiondion)
  • Added emoji from Twemoji v16 (#36501 and #36530 by @ChaosExAnima)
  • Add feature to select custom emoji rendering (#35229, #35282, #35253, #35424, #35473, #35483, #35505, #35568, #35605, #35659, #35664, #35739, #35985, #36051, #36071, #36137, #36165, #36248, #36262, #36275, #36293, #36341, #36342, #36366, #36377, #36378, #36385, #36393, #36397, #36403, #36413, #36410, #36454, #36402, #36503, #36502, #36532, #36603, #36409, #36638 and #36750 by @ChaosExAnima, @ClearlyClaire and @braddunbar)
    This also completely reworks the processing and rendering of emojis and server-rendered HTML in statuses and other places.
  • Add support for exposing conversation context for new public conversations according to FEP-7888 (#35959 and #36064 by @ClearlyClaire and @jesseplusplus)
  • Add digest re-check before removing followers in synchronization mechanism (#34273 by @ClearlyClaire)
  • Add support for displaying Valkey version on admin dashboard (#35785 by @ykzts)
  • Add delivery failure tracking and handling to FASP jobs (#35625, #35628, and #35723 by @oneiros)
  • Add example of quote post with a preview card to development sample data (#35616 by @ClearlyClaire)
  • Add second set of blocked text that applies to accounts regardless of account age for spam-blocking (#35563 by @ClearlyClaire)

Changed

  • Change confirmation dialogs for follow button actions “unfollow”, “unblock”, and “withdraw request” (#36289 by @diondiondion)
  • Change “Follow” button labels (#36264 by @diondiondion)
  • Change appearance settings to introduce new Advanced settings section (#36496 and #36506 by @diondiondion)
  • Change display of blocked and muted quoted users (#36619 by @ClearlyClaire)
    This adds blocked_account, blocked_domain and muted_account values to the state attribute of Quote and ShallowQuote REST API entities.
  • Change submitting an empty post to show an error rather than failing silently (#36650 by @diondiondion)
  • Change "Privacy and reach" settings from "Public profile" to their own top-level category (#27294 by @ChaelCodes)
  • Change number of times quote verification is retried to better deal with temporary failures (#36698 by @ClearlyClaire)
  • Change display of content warnings in Admin UI (#35935 by @ThisIsMissEm)
  • Change styling of column banners (#36531 by @ClearlyClaire)
  • Change recommended Node version to 24 (LTS) (#36539 by @renchap)
  • Change min. characters required for logged-out account search from 5 to 3 (#36487 by @Gargron)
  • Change browser target to Vite legacy plugin defaults (#36611 by @larouxn)
  • Change index on follows table to improve performance of some queries (#36374 by @ClearlyClaire)
  • Change links to accounts in settings and moderation views to link to local view unless account is suspended (#36340 by @diondiondion)
  • Change redirection for denied registration from web app to sign-in page with error message (#36384 by @ClearlyClaire)
  • Change support for RFC9421 HTTP signatures to be enabled unconditionally (#36610 by @oneiros)
  • Change wording and design of interaction dialog to simplify it (#36124 by @diondiondion)
  • Change dropdown menus to allow disabled items to be focused (#36078 by @diondiondion)
  • Change modal background colours in light mode (#36069 by @diondiondion)
  • Change “Posting defaults” settings page to enforce nobody quote policy for private default visibility (#36040 by @ClearlyClaire)
  • Change description of “Quiet public” (#36032 by @ClearlyClaire)
  • Change “Boost with original visibility” to “Share again with your followers” (#36035 by @ClearlyClaire)
  • Change handling of push subscriptions to automatically delete invalid ones on delivery (#35987 by @ThisIsMissEm)
  • Change design of quote posts in web UI (#35584 and #35834 by @Gargron)
  • Change auditable accounts to be sorted by username in admin action logs interface (#35272 by @breadtk)
  • Change order of translation restoration and service credit on post card (#33619 by @colindean)
  • Change position of ‘add more’ to be inside table toolbar on reports (#35963 by @ThisIsMissEm)
  • Change docker-compose.yml sidekiq health check to work for both 4.4 and 4.5 (#36498 by @ClearlyClaire)

Fixed

  • Fix relationship not being fetched to evaluate whether to show a quote post (#36517 by @ClearlyClaire)
  • Fix rendering of poll options in status history modal (#35633 by @ThisIsMissEm)
  • Fix “mute” button being displayed to unauthenticated visitors in hashtag dropdown (#36353 by @mkljczk)
  • Fix initially selected language in Rules panel, hide selector when no alternative translations exist (#36672 by @diondiondion)
  • Fix URL comparison for mentions in case of empty path (#36613 and #36626 by @ClearlyClaire)
  • Fix hashtags not being picked up when full-width hash sign is used (#36103 and #36625 by @ClearlyClaire and @Gargron)
  • Fix layout of severed relationships when purged events are listed (#36593 by @mejofi)
  • Fix Skeleton placeholders being animated when setting to reduce animations is enabled (#36716 by @ClearlyClaire)
  • Fix vacuum tasks being interrupted by a single batch failure (#36606 by @Gargron)
  • Fix handling of unreachable network error for search services (#36587 by @mjankowski)
  • Fix bookmarks export when a bookmarked status is soft-deleted (#36576 by @ClearlyClaire)
  • Fix text overflow alignment for long author names in News (#36562 by @diondiondion)
  • Fix discovery preamble missing word in admin settings (#36560 by @belatedly)
  • Fix overflow handling of .more-from-author (#36310 by @edent)
  • Fix unfortunate action button wrapping in admin area (#36247 by @diondiondion)
  • Fix translate button width in Safari (#36164 and #36216 by @diondiondion)
  • Fix login page linking to other pages within OAuth authorization flow (#36115 by @Gargron)
  • Fix stale search results being displayed in Web UI while new query is in progress (#36053 by @ChaosExAnima)
  • Fix YouTube iframe not being able to start at a defined time (#26584 by @BrunoViveiros)
  • Fix banned text being able to be circumvented via unicode (#35978 by @Gargron)
  • Fix batch table toolbar displaying under status media (#35962 by @ThisIsMissEm)
  • Fix incorrect RSS feed MIME type in gzip_types directive (#35562 by @iioflow)
  • Fix 404 error after deleting status from detail view (#35800) (#35881 by @crafkaz)
  • Fix feeds keyboard navigation issues (#35853, #35864, and #36267 by @braddunbar and @diondiondion)
  • Fix layout shift caused by “Who to follow” widget (#35861 by @diondiondion)
  • Fix Vagrantfile (#35765 by @ClearlyClaire)
  • Fix reply indicator displaying wrong avatar in rare cases (#35756 by @ClearlyClaire)
  • Fix Chewy::UndefinedUpdateStrategy in dev:populate_sample_data task when Elasticsearch is enabled (#35615 by @ClearlyClaire)
  • Fix unnecessary account note addition for already-muted moved-to users (#35566 by @mjankowski)
  • Fix seeded admin user creation failing on specific configurations (#35565 by @oneiros)
  • Fix media modal images in Web UI having redundant title attribute (#35468 by @mayank99)
  • Fix inconsistent default privacy post setting when unset in settings (#35422 by @oneiros)
  • Fix glitchy status keyboard navigation (#35455 and #35504 by @diondiondion)
  • Fix post being submitted when pressing “Enter” in the CW field (#35445 by @diondiondion)

Removed

  • Remove support for PostgreSQL 13 (#36540 by @renchap)

Upgrade notes

To get the code for v4.5.0, use git fetch && git checkout v4.5.0.

Note

As always, make sure you have backups of the database before performing any upgrades. If you are using docker-compose, this is how a backup command might look: docker exec mastodon_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump

Dependencies

External dependencies have changed since v4.4.0, with the Redis and PostgreSQL minimum version being higher.

  • Ruby: 3.2 or newer
  • PostgreSQL: 14 or newer
  • Elasticsearch (recommended, for full-text search): 7.x (OpenSearch should also work)
  • LibreTranslate (optional, for translations): 1.3.3 or newer
  • Redis: 7.0 or newer
  • Node: 20 or newer
  • libvips (optional, instead of ImageMagick): 8.13 or newer
  • ImageMagick (optional if using libvips): 6.9.7-7 or newer

Sidekiq update and health checks

We have updated Sidekiq from Sidekiq 7 to Sidekiq 8, but the health check we used to provide in docker-compose.ymlspecifically checks for Sidekiq 7. If you use docker-compose.yml from the release, it has already been updated. But if you copied or adapted the old health check, you will need to update it to test for Sidekiq 8.

Instead of the following line:

test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 7' || false"]

It should read:

test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 8' || false"]

Update steps

The following instructions are for updating from 4.4.8.

If you are upgrading directly from an earlier release, please carefully read the upgrade notes for the skipped releases as well, as they often require extra steps such as database migrations. If you are upgrading from a pre-4.3 version, please fully update to Mastodon 4.3 first or stop all Mastodon processes before updating, and please have a look at the “Ongoing import jobs from Mastodon 4.1 and earlier” section of Mastodon 4.4.0's release notes if you are updating from a pre-4.2 version.

Non-Docker

Tip

The charlock_holmes gem may fail to build on some systems with recent versions of gcc.
If you run into this issue, try BUNDLE_BUILD__CHARLOCK_HOLMES="--with-cxxflags=-std=c++17" bundle install.

  1. If you are using rbenv, update the list of available versions and install the proper Ruby version by doing RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install in the Mastodon install directory (e.g. /home/mastodon/live)
  2. Install dependencies with bundle install and yarn install --immutable
  3. Precompile the assets: RAILS_ENV=production bundle exec rails assets:precompile
  4. Run the pre-deployment database migrations by specifying the SKIP_POST_DEPLOYMENT_MIGRATIONS=true environment variable: SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate
  5. Restart all Mastodon processes.
  6. Run the post-deployment database migrations: RAILS_ENV=production bundle exec rails db:migrate

When using Docker

  1. Run the pre-deployment database migrations by specifying the SKIP_POST_DEPLOYMENT_MIGRATIONS=true environment variable: docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web bundle exec rails db:migrate
  2. Restart all Mastodon processes.
  3. Run the post-deployment database migrations: docker-compose run --rm web bundle exec rails db:migrate

Update steps from a Mastodon 4.5 pre-release

The following instructions are for updating from a Mastodon 4.5 pre-release (4.5.0-beta.1, 4.5.0-beta.2, 4.5.0-rc.1, v4.5.0-rc.2 or v4.5.0-rc.3). See the section above if you are updating from an older version.

Non-Docker

Tip

The charlock_holmes gem may fail to build on some systems with recent versions of gcc.
If you run into this issue, try BUNDLE_BUILD__CHARLOCK_HOLMES="--with-cxxflags=-std=c++17" bundle install.

  1. Install dependencies with bundle install and yarn install --immutable
  2. Precompile the assets: RAILS_ENV=production bundle exec rails assets:precompile
  3. Run database migrations: RAILS_ENV=production bundle exec rails db:migrate
  4. Restart all Mastodon processes.

When using Docker

  1. Run database migrations: RAILS_ENV=production bundle exec rails db:migrate
  2. Restart all Mastodon processes.

Don't miss a new docker-mastodon release

NewReleases is sending notifications on new releases.