Releases: MbinOrg/mbin
v1.10.0-rc1
This is the first release candidate for the upcoming 1.10 release.
As some parts of the UI/UX and admin features were notably changed, we decided for the RC to get more widespread feedback.
It includes new features for users and admins, bug fixes, performance fixes and some breaking changes of the REST API.
Comparison to previous stable version v1.9.0:
| DB migrations | New ENV vars | Renamed ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|---|
| ☑️ | ☑️ | ❌ | ☑️ | ☑️ | ☑️ |
We have 3 different summaries below. One for end-users, one for server admins, and finally a summary for developers.
Summary for Users
- Add support for lists of keyword filters of content; they can be scoped to content, comments and profile-overviews and can have an expiration-date
- Show the custom title of users and add the option to set one for yourself
- Add the option to also show content which was boosted by people you follow in the Combined view (still needs polishing)
- Pagination is now done by "anchors" (like that date of the last thread on the page) instead of page-numbers, to improve performance
- Add an indicator when a user has their "cake day"
- Fix search not returning most of Lemmy users and magazines
- Fix the search when searching content, users or magazines by their URL
- The date field of the search form now has a preset value
- Small UI improvements to make the elements of posts and threads more consistent
- Prevent opening a thread or post when touching interactive elements (buttons, spoilers, ...) on mobile
- Suppress notification for added content if it is more than two days old (for example after delayed federation)
Summary for Server Admins
- Introduces monitoring: record a variety of metrics and show statistics what causes performance-issues on your server
- Uploaded images now get compressed to fit the size limit (see the docs)
- Cached images can be removed with a command
- A new command for deleting orphaned media
- Extend the "check duplicate magazines" command to find and delete duplicate users in the database (which might block DB migrations)
- Fix list of inactive users always being empty
Summary for developers
Mbin:
- PHP updated to 8.4
- Symfony updated to 7.4
App:
- New API endpoints to retrieve content, boosts and list moderated magazines of a user
- New or extended API endpoints listing who liked and boosted content
- New API endpoints for managing mod and owner requests of magazines
- Add filter 'abandoned' for /api/magazines
- New OAuth permissions
- Breaking API changes:
- Schema of the DTO for notifications on user signup
/api/combined/{collectionType}changed from PUT to GET- Reworked response of the search API
Fediverse:
- Fix federation issues of some activities by adding the
publishedproperty to the Instance actor - Fix federation of link+image threads to Lemmy
- Send Delete activities to all known instances (instead of only ones the user interacted with)
- Honor the "application/ld+json" type in endpoint requests
- Periodic updates of user actors will also update their username
- Fix parsing of actors from PeerTube
Upgrade Instructions
For Docker
- Get the official image or checkout the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d
For Bare Metal
- Ensure you have PHP 8.4 installed
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.10.0-rc1 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - clear your opcache by reloading php fpm
systemctl restart php8.4-fpm - Restart the messengers:
supervisorctl restart messenger:*
Warning
Executing the migrations might fail. If that is the case and the error message says something like "Unique violation: 7 ERROR: could not create unique index [...]", we prepared a command to fix these duplications.
Bare metal (as the mbin/kbin user): php bin/console mbin:check:duplicates-users-magazines
Docker: docker compose exec php php bin/console mbin:check:duplicates-users-magazines
This command will start a guided tour to delete all duplicated users.
What's Changed
- API for getting who upvoted / boosted content by @blued-gear in #1998
- add API for managing moderator and ownership requests by @blued-gear in #2006
- Translations update from Hosted Weblate by @weblate in #2011
- make the vote button of posts the same size as on entries by @blued-gear in #2009
- API endpoints to get the content of a user and their moderated magazines by @blued-gear in #2012
- Fix most lemmy users and magazines missing from search by @BentiGorlich in #2014
- Use Debian Trixie as our Docker CI/CD image by @melroy89 in #2005
- add API endpoint to get moderator and ownership requests by @blued-gear in #2010
- use apId as URL for crossposts of remote entries by @blued-gear in #2016
- Update symfony to 7.4 by @BentiGorlich in #1966
- Instance actor: add
publishedproperty by @BentiGorlich in #2019 - use DateType instead of DateTimeType in search and label the field by @blued-gear in #2017
- docs(contributor): contributors readme action update by @github-actions[bot] in #2022
- Abbreviate numbers by @BentiGorlich in #2021
- Fix criteria missing when rendering for front xml request by @BentiGorlich in #2025
- Fix composer audit: firebase/php-jwt use v7.0.2 as 6.11.1 by @BentiGorlich in #2027
- Fix the inactive user list by @BentiGorlich in #2024
- Improve performance of random panels by @BentiGorlich in #2018
- Translations update from Hosted Weblate by @weblate in #2031
- Put the link first in the attachments for lemmy compatibility by @BentiGorlich in #2029
- Send delete to all known instances by @BentiGorlich in #2028
- Fix responding with html to ActivityStreams profile by @BentiGorlich in #2032
- add filter 'abandoned' for /api/magazines by @blued-gear in #2000
- Fix a bunch of deprecations by @blued-gear in #1968
- docs(contributor): contributors readme action update by @github-actions[bot] in #2038
- suppress opening subject on touch for interactive elements by @blued-gear in #2037
- change DTO of signup notifications by @blued-gear in #2039
- fix layout of posts on startpage if combined mode is used by @blued-gear in #2020
- Fix notifications from old threads by @BentiGorlich in #2035
- Add a command to delete orphaned media by @BentiGorlich in #2033
- Bump predis/predis from 3.2.0 to 3.3.0 by @dependabot[bot] in #2001
- Bump twig/cssinliner-extra from 3.22.0 to 3.23.0 by @dependabot[bot] in #2002
- Introducing monitoring by @BentiGorlich in #1960
- Change user clause to use user_id instead of user by @TheVillageGuy in #2042
- Bump league/commonmark from 2.7.1 to 2.8.1 in the php group across 1 directory by @dependabot[bot] in #2044
- Bump symfonycasts/verify-email-bundle from 1.17.4 to 1.18.0 by @dependabot[bot] in #2045
- Translations update from Hosted Weblate by @weblate in #2046
- Bump nelmio/cors-bundle from 2.6.0 to 2.6.1 by @dependabot[bot] in #1981
- add icon what a user account has its "birthday" by @blued-gear in #2049
- Doctrine Upgrade by @BentiGorlich in #2026
- show boosts for followed users by @blued-gear in #2054
- Implement support for custom usernames by @blued-gear in #2036
- Bump minishlink/web-push from 9.0.2 to 10.0.3 by @dependabot[bot] in #2052
- Bump knplabs/knp-time-bundle from 2.4.0 to 2.5.0 by @dependabot[bot] in #2051
- Bump symfony/maker-bundle from 1.63.0 to 1.66.0 by @dependabot[bot] in #2050
- Bump phpseclib/phpseclib from 3.0.47 to 3.0.50 in the php group across 1 directory by @dependabot[bot] in https://github.com/Mbi...
v1.9.1
This is our v1.9.1 stable release of Mbin. This release includes bug fixes, performance improvements, ActivityPub compatibility improvements, thread and microblog locking, usability improvements and more...
Comparison to previous stable version v1.9.0:
| DB migrations | New ENV vars | Renamed ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|---|
| ☑️ | ☑️ | ❌ | ☑️ | ☑️ | ☑️ |
We have 3 different summaries below. One for end-users, one for server admins, and finally a summary for developers.
Summary for Users
- Improve the RSS feeds: they should be faster, you can also get a combined feed of threads and microblogs now
- The search should be a lot faster now and you can also search for magazines and users by their URL again (previously you could only search for their handle)
- Likes, dislikes and boosts of Mastodon posts can now be extracted, however Mastodon does not sent us updates if these values change
- We added a discoverability setting for users and magazines. This setting is activated by default. If disabled you and your content cannot be found by searching and do not appear on /all
- Fix comments from Mastodon posts not appearing
- Threads and microblogs can now be locked
- The combined view should look more coherent. We adjusted the way microblog posts are displayed in this view
- The notification switches now have a tooltip
- We added an indexable setting for users and magazines. This setting is also activated by default. If disabled, search engines are advised to not index the corresponding threads and microblogs. Because you can only set this on a page to page basis and your comments appear on the page of threads or microblogs, the indexability of comments is dependent on the thread or microblog you're commenting on
- The random magazine is now pre-selected when creating a microblog
- Each magazine has a Tags page in which moderators of the magazine can set the hashtags by which microblogs are put in this magazine. Previously we used the name as a tag as well, without telling the user and without a way to disable it. We now add the name of each magazine to its tags page to make this behavior clear and to provide a way to disable it. When creating a magazine, we added a checkbox to add the name as a hashtag
- Infinite scroll is now working on the search page and the profile pages
- The magazine rules field is now officially deprecated. If a magazine currently has this field populated, it will still be editable, otherwise this field is removed. It will be removed in the future, as there is not a good way to federate this field to other servers. At the moment we just append it to the description with a
### Rulesin front of it
Summary for Server Admins
- Signup notifications should be created correctly again. We previously introduced a bug preventing these notifications from being sent
- Add some problematic paths to the robots.txt, which should result in fewer hits by crawlers (like, dislike, boost, search, ...)
- We removed some indexes from the DB which should result in some size savings
- We also added some missing indexes, which resulted in some performance hits. If you run in any conflicts, we created a command to fix errors for duplicate users or magazines (see documentation)
- We reduced the amount of requests to other instances in the background jobs -> should run faster
Summary for developers
Mbin:
- Improve CI by just doing nothing in some actions if there are no relevant files changes -> the required actions still run, they just don't do anything
App:
- The subject of the magazine log API is now correctly set in case of a pinned, unpinned, banned, unbanned, moderator add and moderator removed "events". The documentation should reflect that now. See #1951
- When supplying a rules value in the MagazineUpdateApi, but the magazine did not already have rules defined, the API will throw an error, because this field is now deprecated
- There are new endpoints to lock a thread and a microblog post
- There also are new OAuth scopes for locking and we added a missing one for pinning microblog posts
Fediverse:
- Having a single URL instead of an array of URLs in the
toandccfield are now supported. JSON-LD allows this for array fields - Like Activities use the magazine id instead of followers collection in the
tofield - We no longer include the activity streams namespace twice (once in the
@contextand once in the/context.json)
Upgrade Instructions
For Docker
- Get the official image or checkout the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d
For Bare Metal
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.9.1 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers:
supervisorctl restart messenger:*
Warning
Executing the migrations might fail. If that is the case and the error message says something like "Unique violation: 7 ERROR: could not create unique index [...]", we prepared a command to fix these duplications.
Bare metal (as the mbin/kbin user): php bin/console mbin:check:duplicates-users-magazines
Docker: docker compose exec php php bin/console mbin:check:duplicates-users-magazines
This command will start a guided tour to delete all duplicated users or magazines. If you are unsure, you can just run it twice: once for magazines and once for users
What's Changed
- Add safe directory before get composer cache steps by @melroy89 in #1920
- use bigger PHP limits for devcontainer by @blued-gear in #1927
- Update aws sdk php dependency (security) by @melroy89 in #1928
- Update php config for Docker by @jwr1 in #1929
- Translations update from Hosted Weblate by @weblate in #1925
- Translations update from Hosted Weblate by @weblate in #1932
- fix post_controller comment element handling by @blued-gear in #1926
- skip tests on non-code paths but keep the GitHub action by @blued-gear in #1919
- Adding the documentation of the
Deleteactivity for accounts by @BentiGorlich in #1921 - Clear old push subscriptions by @BentiGorlich in #1943
- fix wrong nav URLs when on /people, /magazines and /search by @blued-gear in #1939
- docs(contributor): contributors readme action update by @github-actions[bot] in #1945
- Fix signup notifications by @BentiGorlich in #1942
- Improve our RSS feed by @BentiGorlich in #1941
- Fix MessageManager#createMessage to properly access 'to' & 'cc' properties by @grahhnt in #1930
- docs(contributor): contributors readme action update by @github-actions[bot] in #1950
- Small fixes by @BentiGorlich in #1948
- Fix magazine log api subject by @BentiGorlich in #1951
- Improve search by @BentiGorlich in #1949
- Fix like, dislike, shares collection extraction if it is an array by @BentiGorlich in #1953
- Add discoverable setting for users and magazines by @BentiGorlich in #1947
- Fixing Mastodon mentions again again again by @BentiGorlich in #1954
- Introducing thread/microblog locking by @BentiGorlich in #1773
- Harmonize posts and threads in combined view by @blued-gear in #1888
- Improve MagazinePeopleFrontController by @BentiGorlich in #1957
- AP bots may boost by @blued-gear in #1955
- Add missing oauth user consent and translation by @BentiGorlich in #1959
- improve logs and fix some warnings by @blued-gear in #1936
- Fix combined post compact view by @blued-gear in #1961
- catch all exceptions in ImageManager::getMimetype() by @blued-gear in #1962
- Translations update from Hosted Weblate by @weblate in #1964
- DeleteUserHandler: roll back nested transaction if any exception occurs. by @blued-gear in #1963
- add tooltip to thread / magazine notification switches by @blued-gear in #1965
- Disallow vote, boost, report, crosspost in robots.txt by @BentiGorlich in #1971
- Remove duplicate indexes by @BentiGorlich in #1970
- ...
v1.9.0
This is our v1.9.0 stable release of Mbin. This release includes security patches of upstream dependencies, documentation improvements, various performance improvements, new features, bug fixes, design improvements, Docker improvements and so much more...
Comparison to previous stable version v1.8.4 (ignoring the previous RC releases):
| DB migrations | New ENV vars | Renamed ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|---|
| ☑️ | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
We have 3 different summaries below. One for end-users, one for server admins, and finally a summary for Mbin developers.
Below the summaries you will find the upgrade instructions. Please read the instructions very carefully, since we did introduce backwards incomparable changes.
Summary for Users
This release contains numerous improvements and changes that we can't list everything here, so we'll stick to the highlights (in random order).
We enhanced security so that after a user changes their password or 2FA, all the current sessions of that user will be invalid and the user will need to log in again.
A new combined front page. You could make the combined front page the default in your profile settings. Which means you see both threads and microblogs combined on the homepage.
We also introduced a new feature under general settings, where you can select "Who can send you a direct message" (defaults to everybody).
We added support for magazine banners in Mbin (which is also compatible with Lemmy Communities).
Mbin combines the thread form into just one form (instead of having article, link, and photo having a separate form). Mbin now also federates bans correctly (both incoming and outgoing bans).
Global mods can now manage (view, approve and/or deny) account signups. Global mods can now also receive signup notifications, which will also come with a new menu item in the drop-down menu.
Plus various other bug fixes and CSS layout improvements, ban notification fixes, and too many other fixes to mention here.
Summary for Server Admins
Multiple Docker setup enhancements, we upgraded to Debian Trixie images. We also upgraded to use Node v24 (current LTS release) within our Mbin Docker images. Plus we added a new amqproxy service to the docker compose file. See upgrade instructions for Docker below for more info.
We now added two different server settings:
- Restrict "Random Threads/Posts" sidebar sections to local only
- Restrict "Active people" sidebar section to local only
The first option has been known to cause SQL performance issues (we recommended NOT enabling this first option), hence we gave you the two options. The second option shows local only active users, which does NOT impact performance (so feel free to enable that option if you wish).
Mbin now comes with new moderation log filter capabilities.
We also documented Anubis setup for Mbin, setup is optional. However, Anubis could protect your server from DDoS attacks or other unwanted traffic towards your server.
Mbin now also has a command to rotate the private keys for one user or all the local users.
We renamed an existing environment variable: MAX_IMAGE_BYTES to: MBIN_MAX_IMAGE_BYTES, please rename the variable if you have set it. On top of that we also added a new environment variable: MBIN_USE_FEDERATION_ALLOW_LIST (default value: false) for in the .env file. We also added MBIN_NEW_USERS_NEED_APPROVAL (also default value: false) several months ago, in case you didn't added that variable yet. Although both variables are optional to add. See the latest .env.example file.
Finally, we upgraded several Composer dependency packages plus Symfony recipe updates as well as NPM package updates. So like always be sure to run: ./bin/post-upgrade to install all the updated Composer packages (on bare metal). Which should fix security vulnerabilities in our composer & npm depedency packages. And clear all caches.
Summary for developers
We extended and improved the getting started guide, documenting how to leverage dev containers to get started. Please follow the full "Docker as a dev server" guide if you wish to help with development.
We also created a new Fediverse developer page that lists all our ActivityPub messages.
Upgrade Instructions
For Docker
Changes to Docker compose.yaml file (ATTENTION!)
Take a look at the latest compose.yaml file and compare it with your local version:
- We added a new
amqproxyservice, do not forget to adddepends_onamqproxy. AMQProxy will improve performance and reduce TCP overhead of the AMQ protocol, used by RabbitMQ. - After that, you will need to update your
.envfile to use the hostamqproxy:5673(instead ofrabbitmq:5672) in yourMESSENGER_TRANSPORT_DSNvariable. - We upgraded the Debian version used in the Docker images from
bookwormtotrixie. - We renamed
MAX_IMAGE_BYTEStoMBIN_MAX_IMAGE_BYTESin the.envfile. Please change this variable in case you are using it.
Docker Instructions
- Get the official image or check out the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d - Since the Debian version of the PostgreSQL Docker image was upgraded, you will need to run the commands below to get rid of the "collation version mismatch" warning. Note that re-indexing your entire database could take a very long time, depending on the size of your database.
docker compose exec -it postgres psql mbin mbin -c 'REINDEX DATABASE mbin;'
docker compose exec -it postgres psql mbin mbin -c 'ALTER DATABASE mbin REFRESH COLLATION VERSION;'For Bare Metal
Admin guide changes (ATTENTION!)
- For Bare Metal admins, we advise you to look into the RabbitMQ APT sources, since the RabbitMQ team changed their APT repositories recently. Be sure to update your
rabbitmq.listfile accordingly.
If you applied the latest change by running the commands mentioned in the guide, be sure to run the APT update command as well as the APT install/upgrade command for therabbitmq-serverpackage.
In case of an upgrade, you will need to enable all feature flags after the rabbitmq-server upgrade by executing the following command:sudo rabbitmqctl enable_feature_flag all. - We now documented AMQProxy (in case you are not yet using AMQProxy). We strongly advise to install & run AMQProxy (follow this guide) after that you will also need to update the
.envfile by changing theMESSENGER_TRANSPORT_DSN.
You will need to update the default RabbitMQ port (5672) to the AMQProxy port of5673(keep the rest of theMESSENGER_TRANSPORT_DSNthe same, only change the port number).
In case you have AMQProxy configured and made your changes to the.envfile, always remember to run:./bin/post-upgradecommand (which will also executecomposer dump-env prodfor you). - The
set_permissioncommand was not correctly documented, please run the following command:sudo rabbitmqctl set_permissions -p / mbin ".*" ".*" ".*"(changembintokbinuser in case you your rabbitmq user is calledkbin).
Then monitor your messenger logs and if you still experience "channel error: 404" or "message: NOT_FOUND" errors on one or more queues (you will see errors messages if that is the case every ~10 minutes), we recommend removing that queue manually (eg. via the RabbitMQ Web interface). Mbin will then automatically recreate the missing queue with the correct permissions again. - We also changed some
php.iniconfigurations, by mainly increasing thememory_limitto 512MB. If you have sufficient RAM available, you can decide to increase the memory limit if you wish (this limit is per child). Again, this is optional but can be part of better fine-tuning of your server, which heavily depends on your server resources. - We also updated the Setup Supervisor section of the documentation. You can save storage and reduce disk I/O by adding
stdout_logfile=NONEandredirect_stderr=trueto your supervisormessenger-worker.conffile. Because most of the messages will be logged to the Mbin production log as well. - Finally, we renamed
MAX_IMAGE_BYTEStoMBIN_MAX_IMAGE_BYTESin the.envconfiguration. Please rename the variable as well in case you use it.
Bare metal Instructions
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.9.0 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - Clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers: `supervisorctl restar...
v1.9.0 Release Candidate 3
This is our v1.9.0 Release Candidate 3 (also known as a pre-release) of Mbin. This release includes security patches of upstream dependencies, documentation improvements, various performance improvements, new features, bug fixes, design improvements, Docker improvements and so much more...
Comparison to previous stable version v1.8.4 (ignoring the previous RC1 and RC2 releases):
| DB migrations | New ENV vars | Renamed ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|---|
| ☑️ | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
We have 3 different summaries below. One for end-users, one for server admins, and finally a summary for Mbin developers.
Below the summaries you will find the upgrade instructions. Please read the instructions very carefully, since we did introduce backwards incomparable changes.
Summary for Users
This release contains numerous improvements and changes that we can't list everything here, so we'll stick to the highlights (in random order).
We enhanced security so that after a user changes their password or 2FA, all the current sessions of that user will be invalid and the user will need to log in again.
A new combined front page. You could make the combined front page the default in your profile settings. Which means you see both threads and microblogs combined on the homepage.
We also introduced a new feature under general settings, where you can select "Who can send you a direct message" (defaults to everybody).
We added support for magazine banners in Mbin (which is also compatible with Lemmy Communities).
Mbin combines the thread form into just one form (instead of having article, link, and photo having a separate form). Mbin now also federates bans correctly (both incoming and outgoing bans).
Global mods can now manage (view, approve and/or deny) account signups. Global mods can now also receive signup notifications, which will also come with a new menu item in the drop-down menu.
Plus various other bug fixes and CSS layout improvements, ban notification fixes, and too many other fixes to mention here.
Summary for Server Admins
Multiple Docker setup enhancements, we upgraded to Debian Trixie images. We also upgraded to use Node v24 (current LTS release) within our Mbin Docker images. Plus we added a new amqproxy service to the docker compose file. See upgrade instructions for Docker below for more info.
We now added two different server settings:
- Restrict "Random Threads/Posts" sidebar sections to local only
- Restrict "Active people" sidebar section to local only
The first option has been known to cause SQL performance issues (we recommended NOT enabling this first option), hence we gave you the two options. The second option shows local only active users, which does NOT impact performance (so feel free to enable that option if you wish).
Mbin now comes with new moderation log filter capabilities.
We also documented Anubis setup for Mbin, setup is optional. However, Anubis could protect your server from DDoS attacks or other unwanted traffic towards your server.
Mbin now also has a command to rotate the private keys for one user or all the local users.
We renamed an existing environment variable: MAX_IMAGE_BYTES to: MBIN_MAX_IMAGE_BYTES, please rename the variable if you have set it. On top of that we also added a new environment variable: MBIN_USE_FEDERATION_ALLOW_LIST (default value: false) for in the .env file. We also added MBIN_NEW_USERS_NEED_APPROVAL (also default value: false) several months ago, in case you didn't added that variable yet. Although both variables are optional to add. See the latest .env.example file.
Finally, we upgraded several Composer dependency packages plus Symfony recipe updates as well as NPM package updates. So like always be sure to run: ./bin/post-upgrade to install all the updated Composer packages (on bare metal). Which should fix security vulnerabilities in our composer & npm depedency packages. And clear all caches.
Summary for developers
We extended and improved the getting started guide, documenting how to leverage dev containers to get started. Please follow the full "Docker as a dev server" guide if you wish to help with development.
We also created a new Fediverse developer page that lists all our ActivityPub messages.
Upgrade Instructions
For Docker
Changes to Docker compose.yaml file (ATTENTION!)
Take a look at the latest compose.yaml file and compare it with your local version:
- We added a new
amqproxyservice, do not forget to adddepends_onamqproxy. AMQProxy will improve performance and reduce TCP overhead of the AMQ protocol, used by RabbitMQ. - After that, you will need to update your
.envfile to use the hostamqproxy:5673(instead ofrabbitmq:5672) in yourMESSENGER_TRANSPORT_DSNvariable. - We upgraded the Debian version used in the Docker images from
bookwormtotrixie. - We renamed
MAX_IMAGE_BYTEStoMBIN_MAX_IMAGE_BYTESin the.envfile. Please change this variable in case you are using it.
Docker Instructions
- Get the official image or check out the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d - Since the Debian version of the PostgreSQL Docker image was upgraded, you will need to run the command below to get rid of the "collation version mismatch" warning. Note that re-indexing your entire database could take a very long time, depending on the size of your database.
docker compose exec -it postgres psql mbin mbin -c \
'REINDEX DATABASE mbin; ALTER DATABASE mbin REFRESH COLLATION VERSION;'For Bare Metal
Admin guide changes (ATTENTION!)
- For Bare Metal admins, we advise you to look into the RabbitMQ APT sources, since the RabbitMQ team changed their APT repositories recently. Be sure to update your
rabbitmq.listfile accordingly.
If you applied the latest change by running the commands mentioned in the guide, be sure to run the APT update command as well as the APT install/upgrade command for therabbitmq-serverpackage.
In case of an upgrade, you will need to enable all feature flags after the rabbitmq-server upgrade by executing the following command:sudo rabbitmqctl enable_feature_flag all. - We now documented AMQProxy (in case you are not yet using AMQProxy). We strongly advise to install & run AMQProxy (follow this guide) after that you will also need to update the
.envfile by changing theMESSENGER_TRANSPORT_DSN.
You will need to update the default RabbitMQ port (5672) to the AMQProxy port of5673(keep the rest of theMESSENGER_TRANSPORT_DSNthe same, only change the port number).
In case you have AMQProxy configured and made your changes to the.envfile, always remember to run:./bin/post-upgradecommand (which will also executecomposer dump-env prodfor you). - The
set_permissioncommand was not correctly documented, please run the following command:sudo rabbitmqctl set_permissions -p / mbin ".*" ".*" ".*"(changembintokbinuser in case you your rabbitmq user is calledkbin).
Then monitor your messenger logs and if you still experience "channel error: 404" or "message: NOT_FOUND" errors on one or more queues (you will see errors messages if that is the case every ~10 minutes), we recommend removing that queue manually (eg. via the RabbitMQ Web interface). Mbin will then automatically recreate the missing queue with the correct permissions again. - We also changed some
php.iniconfigurations, by mainly increasing thememory_limitto 512MB. If you have sufficient RAM available, you can decide to increase the memory limit if you wish (this limit is per child). Again, this is optional but can be part of better fine-tuning of your server, which heavily depends on your server resources. - We also updated the Setup Supervisor section of the documentation. You can save storage and reduce disk I/O by adding
stdout_logfile=NONEandredirect_stderr=trueto your supervisormessenger-worker.conffile. Because most of the messages will be logged to the Mbin production log as well. - Finally, we renamed
MAX_IMAGE_BYTEStoMBIN_MAX_IMAGE_BYTESin the.envconfiguration. Please rename the variable as well in case you use it.
Bare metal Instructions
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.9.0-rc3 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - Clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers: `supervisorctl res...
v1.9.0 Release Candidate 2
This is our v1.9.0 Release Candidate 2 (also known as a pre-release) of Mbin. This release includes security patches of upstream dependencies, documentation improvements, various performance improvements, new features, bug fixes, design improvements, Docker improvements and so much more...
Comparison to previous stable version v1.8.4 (ignoring the previous RC1):
| DB migrations | New ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|
| ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
We have 3 different summaries below. One for end-users, one for server admins, and finally a summary for Mbin developers.
Below the summaries you will find the upgrade instructions. Please read the instructions very carefully, since we did introduce backwards incomparable changes.
Summary for Users
This release contains numerous improvements and changes that we can't list everything here, so we'll stick to the highlights (in random order).
We enhanced security so that after a user changes their password or 2FA, all the current sessions of that user will be invalid and the user will need to log in again.
A new combined front page. You could make the combined front page the default in your profile settings. Which means you see both threads and microblogs combined on the homepage.
We also introduced a new feature under general settings, where you can select "Who can send you a direct message" (defaults to everybody).
We added support for magazine banners in Mbin (which is also compatible with Lemmy Communities).
Mbin combines the thread form into just one form (instead of having article, link, and photo having a separate form). Mbin now also federates bans correctly (both incoming and outgoing bans).
Global mods can now manage (view, approve and/or deny) account signups. Global mods can now also receive signup notifications, which will also come with a new menu item in the drop-down menu.
Plus various other bug fixes and CSS layout improvements, ban notification fixes, and too many other fixes to mention here.
Summary for Admins
Multiple Docker setup enhancements, we upgraded to Debian Trixie images. We also upgraded to use Node v24 (current LTS release) within our Mbin Docker images. Plus we added a new amqproxy service to the docker compose file. See upgrade instructions for Docker below for more info.
We now added two different server settings:
- Restrict "Random Threads/Posts" sidebar sections to local only
- Restrict "Active people" sidebar section to local only
The first option has been known to cause SQL performance issues (we recommended NOT enabling this first option), hence we gave you the two options. The second option shows local only active users, which does NOT impact performance (so feel free to enable that option if you wish).
Mbin now comes with new moderation log filter capabilities.
We also documented Anubis setup for Mbin, setup is optional. However, Anubis could protect your server from DDoS attacks or other unwanted traffic towards your server.
Mbin now also has a command to rotate the private keys for one user or all the local users.
We renamed an existing environment variable: MAX_IMAGE_BYTES to: MBIN_MAX_IMAGE_BYTES, please rename the variable if you have set it. On top of that we also added a new environment variable: MBIN_USE_FEDERATION_ALLOW_LIST (default value: false) for in the .env file. We also added MBIN_NEW_USERS_NEED_APPROVAL (also default value: false) several months ago, in case you didn't added that variable yet. Although both variables are optional to add. See the latest .env.example file.
Finally, we upgraded several Composer dependency packages plus Symfony recipe updates as well as NPM package updates. So like always be sure to run: ./bin/post-upgrade to install all the updated Composer packages (on bare metal). Which should fix security vulnerabilities in our composer & npm depedency packages. And clear all caches.
Summary for developers
We extended and improved the getting started guide, documenting how to leverage dev containers to get started. Please follow the full "Docker as a dev server" guide if you wish to help with development.
We also created a new Fediverse developer page that lists all our ActivityPub messages.
Upgrade Instructions
For Docker
Changes to Docker compose.yaml file (ATTENTION!)
Take a look at the latest compose.yaml file and compare it with your local version:
- We added a new
amqproxyservice, do not forget to adddepends_onamqproxy. AMQProxy will improve performance and reduce TCP overhead of the AMQ protocol, used by RabbitMQ. - After that, you will need to update your
.envfile to use the hostamqproxy:5673(instead ofrabbitmq:5672) in yourMESSENGER_TRANSPORT_DSNvariable. - We upgraded the Debian version used in the Docker images from
bookwormtotrixie. - We renamed
MAX_IMAGE_BYTEStoMBIN_MAX_IMAGE_BYTESin the.envfile. Please change this variable in case you are using it.
Docker Instructions
- Get the official image or check out the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d - Since the Debian version of the PostgreSQL Docker image was upgraded, you will need to run the command below to get rid of the "collation version mismatch" warning. Note that re-indexing your entire database could take a very long time, depending on the size of your database.
docker compose exec -it postgres psql mbin mbin -c \
'REINDEX DATABASE mbin; ALTER DATABASE mbin REFRESH COLLATION VERSION;'For Bare Metal
Admin guide changes (ATTENTION!)
- For Bare Metal admins, we advise you to look into the RabbitMQ APT sources, since the RabbitMQ team changed their APT repositories recently. Be sure to update your
rabbitmq.listfile accordingly.
If you applied the latest change by running the commands mentioned in the guide, be sure to run the APT update command as well as the APT install/upgrade command for therabbitmq-serverpackage.
In case of an upgrade, you will need to enable all feature flags after the rabbitmq-server upgrade by executing the following command:sudo rabbitmqctl enable_feature_flag all. - We now documented AMQProxy (in case you are not yet using AMQProxy). We strongly advise to install & run AMQProxy (follow this guide) after that you will also need to update the
.envfile by changing theMESSENGER_TRANSPORT_DSN.
You will need to update the default RabbitMQ port (5672) to the AMQProxy port of5673(keep the rest of theMESSENGER_TRANSPORT_DSNthe same, only change the port number).
In case you have AMQProxy configured and made your changes to the.envfile, always remember to run:./bin/post-upgradecommand (which will also executecomposer dump-env prodfor you). - The
set_permissioncommand was not correctly documented, please run the following command:sudo rabbitmqctl set_permissions -p / mbin ".*" ".*" ".*"(changembintokbinuser in case you your rabbitmq user is calledkbin).
Then monitor your messenger logs and if you still experience "channel error: 404" or "message: NOT_FOUND" errors on one or more queues (you will see errors messages if that is the case every ~10 minutes), we recommend removing that queue manually (eg. via the RabbitMQ Web interface). Mbin will then automatically recreate the missing queue with the correct permissions again. - We also changed some
php.iniconfigurations, by mainly increasing thememory_limitto 512MB. If you have sufficient RAM available, you can decide to increase the memory limit if you wish (this limit is per child). Again, this is optional but can be part of better fine-tuning of your server, which heavily depends on your server resources. - We also updated the Setup Supervisor section of the documentation. You can save storage and reduce disk I/O by adding
stdout_logfile=NONEandredirect_stderr=trueto your supervisormessenger-worker.conffile. Because most of the messages will be logged to the Mbin production log as well. - Finally, we renamed
MAX_IMAGE_BYTEStoMBIN_MAX_IMAGE_BYTESin the.envconfiguration. Please rename the variable as well in case you use it.
Bare metal Instructions
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.9.0-rc2 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - Clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers:
supervisorctl restart messenger:*
What's Changed
- Fix A logged in user is required to resolve the authorization requ...
v1.9.0 Release Candidate 1
This is our v1.9.0 Release Candidate 1 (also known as a pre-release) of Mbin. This release includes security patches of upstream dependencies, documentation improvements, new features, bug fixes, design improvements, Docker improvements and so much more...
Comparison to previous stable version v1.8.4:
| DB migrations | New ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|
| ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
I have 3 different summaries below. One for end-users, one for server admins, and finally a summary for Mbin developers.
Below the summaries you will find the upgrade instructions.
Summary for Users
This release contains numerous improvements and changes that we can't list everything here, so we'll stick to the highlights (in random order).
We enhanced security so that after a user changes their password or 2FA, all the current sessions of that user will be invalid and the user will need to log in again.
New combined frontpage, which means you see both microblogs and threads combined on the homepage.
We also introduced a new feature under general settings, where you can select "Who can send you a direct message" (defaults to everybody).
We added support for magazine banners in Mbin (which is also compatible with Lemmy Communities).
Mbin combines the thread form into just one form (instead of having article, link, and photo having a separate form). Mbin now also federates bans correctly (both incoming and outgoing bans).
Global mods can now manage (view, approve and/or deny) account signups. Global mods can now also receive signup notifications, which will also come with a new menu item in the drop-down menu.
Plus various other bug fixes and CSS layout improvements, too many to mention here.
Summary for Admins
Multiple Docker setup enhancements, we upgraded to Debian Trixie images. We also upgraded to use Node v24 (current LTS release) within our Mbin Docker images. Plus we added a new amqproxy service to the docker compose file. See upgrade instructions for Docker below for more info.
Mbin now comes with new moderation log filter capabilities.
We also documented Anubis setup for Mbin, setup is optional. However, Anubis could protect your server from DDoS attacks or other unwanted traffic towards your server.
Mbin now also has a command to rotate the private keys for one user or all the local users.
New environment variable is added: MBIN_USE_FEDERATION_ALLOW_LIST (default value: false) for in the .env file. We also added MBIN_NEW_USERS_NEED_APPROVAL (also default value: false) several months ago, in case you didn't added that variable yet. Although both variables are optional to add.
Finally, we upgraded several Composer dependency packages plus Symfony recipe updates as well as NPM package updates. So like always be sure to run: ./bin/post-upgrade to install all the updated Composer packages (on bare metal). Which should fix security vulnerabilities in our composer & npm depedency packages. And clear all caches.
Summary for developers
We extended and improved the getting started guide, documenting how to leverage dev containers to get started. Please follow the full "Docker as a dev server" guide if you wish to help with development.
We also created a new Fediverse developer page that lists all our ActivityPub messages.
Upgrade Instructions
For Docker
Changes to Docker compose.yaml file (ATTENTION!)
Take a look at the latest compose.yaml file and compare it with your local version:
- We added a new
amqproxyservice, do not forget to adddepends_onamqproxy. AMQProxy will improve performance and reduce TCP overhead of the AMQ protocol, used by RabbitMQ. - After that, you will need to update your
.envfile to use the hostamqproxy:5673(instead ofrabbitmq:5672) in yourMESSENGER_TRANSPORT_DSNvariable. - We upgraded the Debian version used in the Docker images from
bookwormtotrixie.
Docker Instructions
- Get the official image or check out the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d - Since the Debian version of the PostgreSQL Docker image was upgraded, you will need to run the command below to get rid of the "collation version mismatch" warning. Note that re-indexing your entire database could take a very long time, depending on the size of your database.
docker compose exec -it postgres psql mbin mbin -c \
'REINDEX DATABASE mbin; ALTER DATABASE mbin REFRESH COLLATION VERSION;'For Bare Metal
Admin guide changes (ATTENTION!)
- For Bare Metal admins, we advise you to look into the RabbitMQ APT sources, since the RabbitMQ team changed their APT repositories recently. Be sure to update your
rabbitmq.listfile accordingly.
If you applied the latest change by running the commands mentioned in the guide, be sure to run the APT update command as well as the APT install/upgrade command for therabbitmq-serverpackage.
In case of an upgrade, you will need to enable all feature flags after the rabbitmq-server upgrade by executing the following command:sudo rabbitmqctl enable_feature_flag all. - We now documented AMQProxy (in case you are not yet using AMQProxy). We strongly advise to install & run AMQProxy (follow this guide) after that you will also need to update the
.envfile by changing theMESSENGER_TRANSPORT_DSN.
You will need to update the default RabbitMQ port (5672) to the AMQProxy port of5673(keep the rest of theMESSENGER_TRANSPORT_DSNthe same, only change the port number).
In case you have AMQProxy configured and made your changes to the.envfile, always remember to run:./bin/post-upgradecommand (which will also executecomposer dump-env prodfor you). - The
set_permissioncommand was not correctly documented, please run the following command:sudo rabbitmqctl set_permissions -p / mbin ".*" ".*" ".*"(changembintokbinuser in case you your rabbitmq user is calledkbin).
Then monitor your messenger logs and if you still experience "channel error: 404" or "message: NOT_FOUND" errors on one or more queues (you will see errors messages if that is the case every ~10 minutes), we recommend removing that queue manually (eg. via the RabbitMQ Web interface). Mbin will then automatically recreate the missing queue with the correct permissions again. - Finally, we also changed some
php.iniconfigurations, by mainly increasing thememory_limitto 512MB. If you have sufficient RAM available, you can decide to increase the memory limit if you wish (this limit is per child). Again, this is optional but can be part of better fine-tuning of your server, which heavily depends on your server resources.
Bare metal Instructions
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.9.0-rc1 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - Clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers:
supervisorctl restart messenger:*
What's Changed
- Add the nodeinfo endpoints to the allowlist by @BentiGorlich in #1717
- Add
$includeContextparameter by @BentiGorlich in #1718 - Create federation documentation by @BentiGorlich in #1720
- Improve the contributing docs by @BentiGorlich in #1719
- Update npm packages by @BentiGorlich in #1721
- Add a type filter to the modlogs by @BentiGorlich in #1714
- Properly logout user after changing the password or 2fa by @BentiGorlich in #1724
- Increase memory limit to 512M (and slightly increase post_max_size) by @melroy89 in #1726
- Implement a combined front page by @BentiGorlich in #1696
- Edit anubis docs by @BentiGorlich in #1730
- docs for devcontainer by @blued-gear in #1729
- Translations update from Hosted Weblate by @weblate in #1732
- Remove crosspost information from list API endpoints by @BentiGorlich in #1731
- Change internal error Mbin servers link to joinmbin.org by @jwr1 in #1734
- Performance Improvements for the new combined front page by @BentiGorlich in #1697
- docs(contributor): contributors readme action update by @github-actions[bot] in #1739
- docs(contributor): contributors readme action upd...
v1.8.4
This is our v1.8.4 release of Mbin. It includes one very important security patch and some improvements to the API and the handling of dead instances.
Comparison to previous stable version v1.8.3:
| DB migrations | New ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|
| ☑️ | ❌ | ☑️ | ❌ | ❌ |
Upgrade Instructions
For Docker
- Get the official image or checkout the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d
For Bare Metal
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.8.4 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers:
supervisorctl restart messenger:*
What's Changed
- Fix DeleteHandler and add tests by @BentiGorlich in #1692
- Add a useful logging command to the docs by @BentiGorlich in #1699
- Translations update from Hosted Weblate by @weblate in #1691
- Create documentation for setting up anubis to protect mbin by @BentiGorlich in #1706
- Add column for created_at to the activity table by @BentiGorlich in #1701
- Translations update from Hosted Weblate by @weblate in #1708
- Improve marking instances as dead by @BentiGorlich in #1707
- Add
new_signupnotification to api docs and fix them by @BentiGorlich in #1702 - Add property
crosspostedEntriesto API by @BentiGorlich in #1705 - Add property
isAuthorModeratorInMagazineto all API content DTOs by @BentiGorlich in #1704 - Add user reputation to the API by @BentiGorlich in #1703
- Fix symfony generating http URLs with anubis by @BentiGorlich in #1709
- Add instance actor test and remove url field by @BentiGorlich in #1698
- Fix user outbox by @BentiGorlich in #1715
- Security Patch by @BentiGorlich in #1716
Full Changelog: v1.8.3...v1.8.4
v1.8.3
This is our release v1.8.3. We did a lot of changes to our activity pub code and started to add testing of it. We did a lot of improvements on the UI and added more options for the user. Finally, we also improved the search and added an emoji picker. But we did even more, which you can check out down below.
Comparison to previous stable version v1.8.2:
| DB migrations | New ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|
| ☑️ | ❌ | ❌ | ☑️ | ☑️ |
Upgrade Instructions
For Docker
- Get the official image or checkout the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d
For Bare Metal
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.8.3 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - flush your redis db by running
redis-cli, type inAUTH [YOUR PASSWORD]and thenFLUSHDB - clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers:
supervisorctl restart messenger:*
What's Changed
- Bump robots.txt ban list version. by @melroy89 in #1570
- Check whether the actor is a User by @BentiGorlich in #1573
- Bump league/commonmark from 2.6.1 to 2.6.2 by @dependabot[bot] in #1572
- Bump phpstan/phpstan from 2.1.11 to 2.1.12 by @dependabot[bot] in #1571
- Bump gumlet/php-image-resize from 2.0.4 to 2.1.0 by @dependabot[bot] in #1574
- Translations update from Hosted Weblate by @weblate in #1569
- Sort and filter comment replies the same as root comments by @BentiGorlich in #1563
- WHen you enter a space during the search I was getting 500 error by @melroy89 in #1578
- Bump league/commonmark from 2.6.2 to 2.7.0 in the php group by @dependabot[bot] in #1585
- Translations update from Hosted Weblate by @weblate in #1586
- Bump symfony/yaml from 7.2.5 to 7.2.6 by @dependabot[bot] in #1582
- Bump symfony/maker-bundle from 1.62.1 to 1.63.0 by @dependabot[bot] in #1581
- Improve SSO documentation for privacy portal by @robertolopezlopez in #1580
- docs(contributor): contributors readme action update by @github-actions[bot] in #1587
- Display the bookmark icon on trashed content by @BentiGorlich in #1576
- Display the 2FA secret upon setup by @BentiGorlich in #1575
- Url Ids should not be extracted as a hashtag by @BentiGorlich in #1577
- Add emoji picker by @melroy89 in #1588
- Bump embed/embed from 4.4.15 to 4.4.17 by @dependabot[bot] in #1598
- Bump twig/extra-bundle from 3.20.0 to 3.21.0 by @dependabot[bot] in #1590
- Translations update from Hosted Weblate by @weblate in #1593
- Bump doctrine/orm from 2.20.2 to 2.20.3 by @dependabot[bot] in #1592
- Reduce the number of db calls on the login page by @BentiGorlich in #1599
- Translations update from Hosted Weblate by @weblate in #1600
- Bump symfony/ux-twig-component from 2.24.0 to 2.25.1 in the php group by @dependabot[bot] in #1601
- Adding missing command in the docs by @MakaryGo in #1604
- Bump symfony/ux-twig-component from 2.25.1 to 2.25.2 by @dependabot[bot] in #1606
- Fix the post comment expanding not working by @BentiGorlich in #1613
- Translations update from Hosted Weblate by @weblate in #1602
- docs(contributor): contributors readme action update by @github-actions[bot] in #1614
- Bump symfony/ux-chartjs from 2.24.0 to 2.25.2 by @dependabot[bot] in #1607
- Bump twig/cssinliner-extra from 3.20.0 to 3.21.0 by @dependabot[bot] in #1608
- Add
federationquery parameter to the post and entry retrieve API by @BentiGorlich in #1618 - docs(contributor): contributors readme action update by @github-actions[bot] in #1620
- Fix
npm cierror by @BentiGorlich in #1621 - Update 01-first_setup.md by @MakaryGo in #1622
- docs(contributor): contributors readme action update by @github-actions[bot] in #1623
- Add classes for move subscription panel arrows by @TheVillageGuy in #1632
- Bump symfony/dotenv from 7.2.0 to 7.3.0 by @dependabot[bot] in #1626
- Bump symfony/scheduler from 7.2.3 to 7.3.0 by @dependabot[bot] in #1625
- Bump symfony/debug-bundle from 7.2.0 to 7.3.0 by @dependabot[bot] in #1624
- Fix getting bookmarks from a bookmark list. by @olorin99 in #1646
- Translations update from Hosted Weblate by @weblate in #1648
- docs(contributor): contributors readme action update by @github-actions[bot] in #1649
- Bump twig/html-extra from 3.20.0 to 3.21.0 by @dependabot[bot] in #1640
- Bump symfony/ux-chartjs from 2.25.2 to 2.26.1 by @dependabot[bot] in #1642
- Bump symfony/translation from 7.2.4 to 7.3.0 by @dependabot[bot] in #1641
- Bump predis/predis from 2.3.0 to 3.0.1 by @dependabot[bot] in #1643
- Translations update from Hosted Weblate by @weblate in #1651
- Expose instance admins and moderators by @BentiGorlich in #1657
- Bump symfony/lock from 7.2.5 to 7.3.0 by @dependabot[bot] in #1652
- Bump symfony/runtime from 7.2.3 to 7.3.1 by @dependabot[bot] in #1655
- Bump symfony/property-info from 7.2.5 to 7.3.1 by @dependabot[bot] in #1654
- Bump symfony/ux-chartjs from 2.26.1 to 2.27.0 by @dependabot[bot] in #1653
- Fix
npm cierror by @BentiGorlich in #1660 - Fix template error on figure by @BentiGorlich in #1659
- Fix SSO auth not redirecting to /authorize by @BentiGorlich in #1638
- Improve admin user list by @BentiGorlich in #1634
- Improve entry editing by @BentiGorlich in #1658
- Fix the reputation list not counting upvotes by @BentiGorlich in #1633
- Add options for rendering rich markdown by @BentiGorlich in #1619
- Move from default
COUNT_CODEPOINTSunit toCOUNT_GRAPHEMESby @BentiGorlich in #1617 - Take federation status into account when creating content by @BentiGorlich in #1636
- Add Attitude to admin user list and user info by @BentiGorlich in #1635
- Remove openssl error and deprecation by @BentiGorlich in #1665
- Fix reading the wrong
magazineproperty by @BentiGorlich in #1666 - Fix reading the wrong magazine property II by @BentiGorlich in #1669
- Translations update from Hosted Weblate by @weblate in #1667
- Add header bread crumb for mobile by @BentiGorlich in #1671
- Translations update from Hosted Weblate by @weblate in #1672
- Rollback symfony packages to 7.2 by @BentiGorlich in #1668
- Translations update from Hosted Weblate by @weblate in #1673
- Improve the generic search and add users and magazines to it by @BentiGorlich in #1670
- Fix header crumb squashing on smaller devices by @BentiGorlich in #1679
- Translations update from Hosted Weblate by @weblate in #1681
- Fix header full width on desktop by @BentiGorlich in #1680
- Introduce the activity table by @BentiGorlich in #1173
- Fix the if statement for $content variable in ApHttpClient.php by @melroy89 in https://github.com...
v1.8.3-rc1
This is a release candidate for the upcoming version v1.8.3. It might not yet be production ready, hence it's a RC.
Comparison to previous stable version v1.8.2:
| DB migrations | New ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|
| ☑️ | ❌ | ❌ | ☑️ | ☑️ |
Upgrade Instructions
For Docker
- Get the official image or checkout the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d
For Bare Metal
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.8.3-rc1 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - flush your redis db by running
redis-cli, type inAUTH [YOUR PASSWORD]and thenFLUSHDB - clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers:
supervisorctl restart messenger:* - Login as the mbin/kbin user:
su mbinagain - Run the command to remove the default domain from entries that are not local:
php bin/console mbin:update:local-domain
What's Changed
- Bump robots.txt ban list version. by @melroy89 in #1570
- Check whether the actor is a User by @BentiGorlich in #1573
- Bump league/commonmark from 2.6.1 to 2.6.2 by @dependabot[bot] in #1572
- Bump phpstan/phpstan from 2.1.11 to 2.1.12 by @dependabot[bot] in #1571
- Bump gumlet/php-image-resize from 2.0.4 to 2.1.0 by @dependabot[bot] in #1574
- Translations update from Hosted Weblate by @weblate in #1569
- Sort and filter comment replies the same as root comments by @BentiGorlich in #1563
- WHen you enter a space during the search I was getting 500 error by @melroy89 in #1578
- Bump league/commonmark from 2.6.2 to 2.7.0 in the php group by @dependabot[bot] in #1585
- Translations update from Hosted Weblate by @weblate in #1586
- Bump symfony/yaml from 7.2.5 to 7.2.6 by @dependabot[bot] in #1582
- Bump symfony/maker-bundle from 1.62.1 to 1.63.0 by @dependabot[bot] in #1581
- Improve SSO documentation for privacy portal by @robertolopezlopez in #1580
- docs(contributor): contributors readme action update by @github-actions[bot] in #1587
- Display the bookmark icon on trashed content by @BentiGorlich in #1576
- Display the 2FA secret upon setup by @BentiGorlich in #1575
- Url Ids should not be extracted as a hashtag by @BentiGorlich in #1577
- Add emoji picker by @melroy89 in #1588
- Bump embed/embed from 4.4.15 to 4.4.17 by @dependabot[bot] in #1598
- Bump twig/extra-bundle from 3.20.0 to 3.21.0 by @dependabot[bot] in #1590
- Translations update from Hosted Weblate by @weblate in #1593
- Bump doctrine/orm from 2.20.2 to 2.20.3 by @dependabot[bot] in #1592
- Reduce the number of db calls on the login page by @BentiGorlich in #1599
- Translations update from Hosted Weblate by @weblate in #1600
- Bump symfony/ux-twig-component from 2.24.0 to 2.25.1 in the php group by @dependabot[bot] in #1601
- Adding missing command in the docs by @MakaryGo in #1604
- Bump symfony/ux-twig-component from 2.25.1 to 2.25.2 by @dependabot[bot] in #1606
- Fix the post comment expanding not working by @BentiGorlich in #1613
- Translations update from Hosted Weblate by @weblate in #1602
- docs(contributor): contributors readme action update by @github-actions[bot] in #1614
- Bump symfony/ux-chartjs from 2.24.0 to 2.25.2 by @dependabot[bot] in #1607
- Bump twig/cssinliner-extra from 3.20.0 to 3.21.0 by @dependabot[bot] in #1608
- Add
federationquery parameter to the post and entry retrieve API by @BentiGorlich in #1618 - docs(contributor): contributors readme action update by @github-actions[bot] in #1620
- Fix
npm cierror by @BentiGorlich in #1621 - Update 01-first_setup.md by @MakaryGo in #1622
- docs(contributor): contributors readme action update by @github-actions[bot] in #1623
- Add classes for move subscription panel arrows by @TheVillageGuy in #1632
- Bump symfony/dotenv from 7.2.0 to 7.3.0 by @dependabot[bot] in #1626
- Bump symfony/scheduler from 7.2.3 to 7.3.0 by @dependabot[bot] in #1625
- Bump symfony/debug-bundle from 7.2.0 to 7.3.0 by @dependabot[bot] in #1624
- Fix getting bookmarks from a bookmark list. by @olorin99 in #1646
- Translations update from Hosted Weblate by @weblate in #1648
- docs(contributor): contributors readme action update by @github-actions[bot] in #1649
- Bump twig/html-extra from 3.20.0 to 3.21.0 by @dependabot[bot] in #1640
- Bump symfony/ux-chartjs from 2.25.2 to 2.26.1 by @dependabot[bot] in #1642
- Bump symfony/translation from 7.2.4 to 7.3.0 by @dependabot[bot] in #1641
- Bump predis/predis from 2.3.0 to 3.0.1 by @dependabot[bot] in #1643
- Translations update from Hosted Weblate by @weblate in #1651
- Expose instance admins and moderators by @BentiGorlich in #1657
- Bump symfony/lock from 7.2.5 to 7.3.0 by @dependabot[bot] in #1652
- Bump symfony/runtime from 7.2.3 to 7.3.1 by @dependabot[bot] in #1655
- Bump symfony/property-info from 7.2.5 to 7.3.1 by @dependabot[bot] in #1654
- Bump symfony/ux-chartjs from 2.26.1 to 2.27.0 by @dependabot[bot] in #1653
- Fix
npm cierror by @BentiGorlich in #1660 - Fix template error on figure by @BentiGorlich in #1659
- Fix SSO auth not redirecting to /authorize by @BentiGorlich in #1638
- Improve admin user list by @BentiGorlich in #1634
- Improve entry editing by @BentiGorlich in #1658
- Fix the reputation list not counting upvotes by @BentiGorlich in #1633
- Add options for rendering rich markdown by @BentiGorlich in #1619
- Move from default
COUNT_CODEPOINTSunit toCOUNT_GRAPHEMESby @BentiGorlich in #1617 - Take federation status into account when creating content by @BentiGorlich in #1636
- Add Attitude to admin user list and user info by @BentiGorlich in #1635
- Remove openssl error and deprecation by @BentiGorlich in #1665
- Fix reading the wrong
magazineproperty by @BentiGorlich in #1666 - Fix reading the wrong magazine property II by @BentiGorlich in #1669
- Translations update from Hosted Weblate by @weblate in #1667
- Add header bread crumb for mobile by @BentiGorlich in #1671
- Translations update from Hosted Weblate by @weblate in #1672
- Rollback symfony packages to 7.2 by @BentiGorlich in #1668
- Translations update from Hosted Weblate by @weblate in #1673
- Improve the generic search and add users and magazines to it by @BentiGorlich in #1670
- Fix header crumb squashing on smaller devices by @BentiGorlich in #1679
- Translations update from Hosted Weblate by @weblate in #1681
- Fix header full width on desktop by @BentiGorlich in #1680
- Introduce the activity table by @BentiGorlich in #1173
- Fix the if statement for $content variable in ApHttpClient.php by @melroy89 in https://github.com/MbinOrg/mbin...
v1.8.2 🚢
This release is a bit earlier than usual, but we created this new release because of our new Docker setup 🚢.
For bare metal deployments have no backwards incompatible changes. So upgrading is easy for bare metal.
However, if you were running the Docker setup before, this release is important to you. Take note and follow the upgrade instructions carefully for Docker!
And.. we fixed some bugs as well :)
Comparison to previous stable version v1.8.1 (Docker related mainly):
| DB migrations | New ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|
| ❌ | ☑️ | ☑️ | ☑️ | ☑️ |
Upgrade Instructions
For Docker
Changes to Docker setup
- Additional
.envvariables are now required in the new Docker setup. Mainly these two variable names:
# Docker specific variables
MBIN_USER=1000:1000
# Possible values: debug, info, notice, warning, error, critical, alert, emergency
PHP_LOG_LEVEL=error- Dockerfile is completely overhauled
- Meaning the published Docker image is now also changed!
- Updated composer.yaml
- Updated
compose.override.yaml, see also: https://docs.joinmbin.org/admin/installation/docker#docker-image-preparation docker/storageis moved to just:storage/(including OAuth keys) on the root.- And the
.envandcompose.*files are also moved to the root directory. - There is no
wwwservice anymore dbcontainer service is renamed topostgresservice. So update your.envaccordingly as well to use postgres has the name inDATABASE_URL- Moved from Redis to Valkey, so the new service name is now also called
valkeyinstead ofredis.- Include a Valkey config with recommended default.
- The default PostgresSQL version has been bumped to
17. - The new Docker setup (with frankenphp and Caddy) can now be used directly as your main reverse proxy (including TLS certificate for HTTPS). NO need for Nginx anymore.
- RabbitMQ now correctly persists data.
- All containers are now set up to work with non-root users.
- There's a new bash script (
./docker/setup.sh) that automates the setup of the docker environment. - The default user for all services has changed from
kbintombin. - Automatically enable the S3 FS adapter when an
S3_KEYis provided. - Enable permanent image redirect responses (
301status code) by default. - Includes a development server, making contributing / development much easier.
Migration Guide
Use these steps to migrate from the old Docker setup to this one. The big thing to keep in mind is that all your server data is now in one of three locations: .env, compose.override.yaml, and storage/. So, all server data will be going under here from now on.
Additionally, this new setup does not require a reverse proxy (and actually recommends not using one), as the PHP server it's using comes with built-in HTTPS support via Let's Encrypt and Caddy. You will need to ensure ports 80 and 443 are directly exposed and available on your server in order for this migration guide to work.
- Keep your old Mbin directory for now; just create a new one by cloning Mbin again (
git clone https://github.com/MbinOrg/mbin.git)! I'll referenceoldas your old Mbin directory andnewas your new one. - Run the auto setup script in
new(with this docker branch of course):./docker/setup.sh prod DOMAINHERE. - Run
docker compose downinold/dockerif you haven't already. - Copy your Postgres database from
old/docker/storage/postgrestonew/storage/postgres. - Copy your media files from
old/docker/storage/mediatonew/storage/media. - Copy your OAuth keys from
old/config/oauth2tonew/storage/oauth(bothprivate.pemandpublic.pem). - Open
old/docker/.envandnew/.envside by side so you can copy values from the old.envfile to the new one as needed. - You'll want to copy over most
.envvalues, includingKBIN_*,MBIN_*,MAX_IMAGE_BYTES,HCAPTCHA_*,S3_*, the SSO fields,EXIF_*,APP_SECRET,POSTGRES_*,MAILER_DSN,MERCURE_JWT_SECRET,OAUTH_PASSPHRASE, andOAUTH_ENCRYPTION_KEY. Everything else, you can leave alone; feel free to ask if you have any questions about this. - Now that non-root containers are supported, you'll have to update the permissions of the files in
new/storage/to matchMBIN_USERin.env. Runchown -R 1000:1000 new/storage/if yourMBIN_USERis1000:1000. Running the new setup under root has not been tested yet, but you will likely not need to change any file permissions if you were running as root previously. - In
new/compose.override.yaml, uncomment the section that enables you to build the Docker image locally. - In
new, rundocker compose up -dto build and start the Docker containers. - If all goes well, then you should be able to access your Mbin instance from your domain!
And of course finally :
- Get the official image from ghrc.io (v1.8.2 is the first version that delivers this new docker setup) or checkout the code and build it locally by overriding the
pull_policy - Stop all containers
docker compose down - Start all containers
docker compose up -d
Quick Start Guide
Use these steps to install Mbin on a new server. It is assumed that docker is already installed and set up.
- Clone Mbin and change directories:
git clone https://github.com/MbinOrg/mbin.git && cd mbin(make sure to switch to this docker branch). - Run the auto setup script:
./docker/setup.sh prod DOMAINHERE(uselocalhostfor the domain if you want to test locally). - Optionally configure SMTP, hCaptcha, S3, and/or SSO in
.env. - Use
docker build -t mbin -f docker/Dockerfile .to build the Docker image. - Run
docker compose up -dto start the Docker containers. - Assuming your DNS and firewall (ports
80and443allowed) are correctly configured, then you should be able to access your new Mbin instance from your domain (or https://localhost_ if you usedlocalhost)! - Don't forget to follow the Mbin first setup instructions!
For Bare Metal
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.8.2 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put asudoin front of every command) - Clear your OPcache by reloading php fpm
systemctl restart php8.4-fpm(or restartphp8.2-fpmin case of PHP 8.2) - Optional: Flush your Redis DB by running
redis-cli, type inAUTH [YOUR PASSWORD]and thenFLUSHDB - Restart the messengers:
supervisorctl restart messenger:*
What's Changed
- Fix SendApplicationAnswerMailHandler not supplying enough parameters by @BentiGorlich in #1538
- Docs: Update Docker nginx example with the existing nginx example by @melroy89 in #1540
- Add cs2pr to our Dockerfile (phase 1) by @melroy89 in #1547
- Use checkstyle GitHub actions (phase 2) by @melroy89 in #1546
- Translations update from Hosted Weblate by @weblate in #1536
- docs(contributor): contributors readme action update by @github-actions in #1549
- Fix warnings in logging + Update php-cs-fixer by @melroy89 in #1543
- Revert "sync file from server by hand" by @jwr1 in #1552
- docs(contributor): contributors readme action update by @github-actions in #1553
- Translations update from Hosted Weblate by @weblate in #1551
- Add missing $logger in ApActivityRepository + init $apActivity with null by @melroy89 in #1560
- Rework docker setup by @jwr1 in #1542
- docs(contributor): contributors readme action update by @github-actions in #1562
- Translations update from Hosted Weblate by @weblate in #1561
- Move complex regexes to dedicated regpatterns util by @melroy89 in #1550
- Pin docker images to version tags by @melroy89 in #1565
- Change leftover Redis reference to Valkey in Docker install docs by @jwr1 in #1566
- Left-over 'v' in front of our docker tags by @melroy89 in #1567
- Dump version to 1.8.2 by @melroy89 in #1568
Full Changelog: v1.8.1...v1.8.2