Mbin is a fork of kbin, community-focused. Feel free to discuss on Matrix and to create Pull Requests.
Important: Mbin is focused on what the community wants, pull requests can be merged by any repo member. Discussions take place on Matrix then consensus has to be reached by the community. If approved by the community, no additional reviews are required on the PR. It's built entirely on trust.
Mbin is a decentralized content aggregator, voting, discussion and microblogging platform running on the fediverse network. It can communicate with many other ActivityPub services, including Kbin, Mastodon, Lemmy, Pleroma, Peertube. The initiative aims to promote a free and open internet.
Unique Features of Mbin:
- Support of all ActivityPub Actor Types (including also "Service" accounts, which are robot accounts)
- Tons of GUI improvements
- Various bug fixes, additional error checking and more to come soon!
- Improved admin guide and setup
- Support for
application/json
Accept request header on all ActivityPub end-points - Up-to-date PHP (Composer) dependency packages and security/vulnerability fixes
- Enabled: GitHub Security advisories, vulnerability reporting, Dependabot and code scanning
- Improved code documentation, making the code easier to understand and contribute
- Tight integration with Mbin Webplate project for translations (Two way sync)
- Last but not least, a community-focus project embracing the Collective Code Construction Contract (C4). No single maintainer.
- Official repository on GitHub
- Matrix Space for discussions
- Translations
- Contribution guidelines - please read first, including before opening an issue!
If you want to migrate from Kbin to Mbin (on bare metal), just follow the easy steps below (default branch is main
):
cd /var/www/your-instance
git remote set-url origin https://github.com/MbinOrg/mbin.git
git fetch
git checkout main
./bin/post-upgrade
Done!
- PHP version: 8.2 or higher
- GD or Imagemagick PHP extension
- NGINX / Apache / Caddy
- PostgreSQL
- Redis (optional)
- Mercure (optional)
- RabbitMQ (optional)
- User Guide
- Admin Bare Metal/VM Guide
- Admin Docker Guide
- Frequently Asked Questions (FAQ)
- Mbin REST API Swagger Docs
- Mbin ActivityPub Reference
Requirements:
- PHP v8.2
- NodeJS + Yarn
- Redis
- PostgreSQL
- Optionally: Mercure
- Increase execution time in PHP config file:
/etc/php/8.2/fpm/php.ini
:
max_execution_time = 60
- Restart the PHP-FPM service:
sudo systemctl restart php8.2-fpm.service
- Connect to PostgreSQL using the postgres user:
sudo -u postgres psql
- Create new mbin database user:
sudo -u postgres createuser --createdb --createrole --pwprompt mbin
- Correctly configured
.env
file (cp .env.example .env
), these are only the changes you need to pay attention to:
#Redis (without password)
REDIS_DNS=redis://127.0.0.1:6379
# Set App configs
APP_ENV=dev
APP_SECRET=427f5e2940e5b2472c1b44b2d06e0525
# Configure PostgreSQL
POSTGRES_DB=mbin
POSTGRES_USER=mbin
POSTGRES_PASSWORD=<password>
# Set messenger to Doctrine (= PostgresQL DB)
MESSENGER_TRANSPORT_DSN=doctrine://default
- If you are using
127.0.0.1
to connect to the PostgreSQL server, edit the following file:/etc/postgresql/<VERSION>/main/pg_hba.conf
and add:
local mbin mbin md5
- Restart the PostgreSQL server:
sudo systemctl restart postgresql
- Create database:
php bin/console doctrine:database:create
- Create tables and database structure:
php bin/console doctrine:migrations:migrate
- Build frontend assets:
yarn && yarn build
Starting the server:
- Install Symfony CLI:
wget https://get.symfony.com/cli/installer -O - | bash
- Check the requirements:
symfony check:requirements
- Install depedencies:
composer install
- Dump
.env
into.env.local.php
via:composer dump-env dev
- Clear cache:
APP_ENV=dev APP_DEBUG=1 php bin/console cache:clear -n
- Start Mbin:
symfony server:start
- Go to: http://127.0.0.1:8000
This will give you a minimal working frontend with PostgreSQL setup. Keep in mind: this will not start federating, for that you also need to setup Mercure to test the full Mbin setup.
Optionally: you could also setup RabbitMQ, but the Doctrine messenger configuration will be sufficient for local development.
More info: Symfony Local Web Server
Install tooling via:
composer -d tools install
Try to automatically fix linting errors:
tools/vendor/bin/php-cs-fixer fix
- A highly opinionated guide to learning about ActivityPub
- ActivityPub as it has been understood
- Schema Generator 3: A Step Towards Redecentralizing the Web!
- API Platform ActivityPub
Following languages are currently supported/translated:
- English
- German
- Greek
- Esperanto
- Spanish
- French
- Italian
- Japanese
- Dutch
- Polish
- Turkish
- Chinese