Self-host Flarum
A lightweight, MIT-licensed forum written in PHP (on Laravel components) with a Mithril.js front end. Most features, from tags and mentions to likes and moderation, are extensions you can switch off. The 1.x stable line runs on MySQL or MariaDB behind Apache or Nginx and installs with Composer; upstream publishes no Docker image, and PostgreSQL and SQLite support arrive with 2.0, still in release candidates.
Key facts
Pick Flarum when you want a fast, minimal, MIT-licensed forum that runs on ordinary PHP hosting: a PHP back end built on Laravel components, a Mithril.js front end, and MySQL or MariaDB. Most features are extensions — tags, mentions, likes, flags, approval, sticky, lock, suspend, subscriptions, Markdown, BBCode and emoji ship in the default install and can be switched off — and the community ecosystem is Composer packages you add from the command line or, with the Extension Manager, from the admin panel. Install the stable 1.x line with `composer create-project flarum/flarum:^1.8.0`; upstream publishes no Docker image. Flarum publishes no RAM figure; our 512 MB floor is an estimate. If you want chat, polls and importers built in and are happy to run a Docker container, Discourse is the catalog's other forum.
What you need
- Any VPS with at least 512 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- About an afternoon — budget time for troubleshooting
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Flarum 1.x stable — Composer on a PHP host, per docs.flarum.org (1.x install guide); upstream publishes no Docker image
# needs Apache (mod_rewrite) or Nginx, PHP 7.3+ with curl dom fileinfo gd json mbstring openssl pdo_mysql tokenizer zip, and MySQL 5.6+/8.0.23+ or MariaDB 10.0.5+
mkdir -p /var/www/flarum && cd /var/www/flarum
composer create-project flarum/flarum:^1.8.0 .
# set the web root to /var/www/flarum/public; Nginx: add include /var/www/flarum/.nginx.conf; to the server block (Apache uses the bundled .htaccess)
# the PHP user needs write access to this directory, storage/ and assets/; then open the site to finish the web installer
# scheduler for extensions that use it (crontab -e):
* * * * * cd /var/www/flarum && php flarum schedule:run >> /dev/null 2>&1What you take on
Flarum is simple to run once the web stack is right, and its docs are clear about what that stack is: