JohnCMS is an open-source PHP community CMS. It includes a forum, news, library, downloads, private messages, photo albums, and more — all in one package.
- Forum — CKEditor-based editor with image upload, SEO-friendly URLs for sections and topics, polls, file attachments, topic pinning and closing
- News — unlimited nested sections, scheduled publishing, tags, comments, ratings
- Library — unlimited nested sections, user-submitted articles, moderation
- Downloads — file catalog with ratings and comments
- Private messages — with file attachments
- Photo albums — personal user albums
- Guestbook — site-wide and personal guestbooks
- Notifications — notification center with per-user settings
- Dark theme — built-in light/dark theme switch
- Multilingual — full i18n support via Crowdin
- Sitemap — automatic XML sitemap generation
- PHP 8.2 or higher
- MySQL 5.6.4 or higher (MySQL Native Driver
mysqlndrequired) - Apache with
.htaccesssupport - PHP extensions:
imagickorgd,mbstring,pdo,simplexml
- Download the latest release archive from the releases page.
- Extract and upload the files to your server's web root.
- Open
http://your.site/installin a browser and follow the installer steps. - Delete the
/installdirectory after installation is complete.
- Make sure you have Composer and Node.js installed.
- Install PHP dependencies:
composer install
- Install Node.js dependencies and build the frontend:
npm install npm run build
- Open
http://your.site/installin a browser and follow the installer steps. - Delete the
/installdirectory after installation is complete. - Set up a cron job to run the scheduler every minute:
* * * * * php /path/to/system/bin/console schedule:run --no-interaction
- Copy the environment file and adjust the values if needed:
cp .env.example .env
- Build and start the containers:
make build make up
- Install PHP dependencies:
make composer-install
- Build the frontend on the host (the containers do not include Node.js):
npm install npm run build
- Open
http://your.site/installin a browser and follow the installer steps. - Delete the
/installdirectory after installation is complete.
The Docker setup includes Nginx, PHP-FPM, MariaDB, and Ofelia for running the scheduler automatically every minute.
| Command | Description |
|---|---|
make up |
Start containers |
make stop |
Stop containers |
make restart |
Restart containers |
make rebuild |
Rebuild and restart containers |
make shell |
Open shell inside the PHP-FPM container |
make composer-install |
Run composer install inside the container |
make composer-update |
Run composer update inside the container |
make backup-db |
Dump the database to a SQL file |
make restore-db |
Restore the database from a SQL file |
For detailed Docker configuration instructions see .docker/readme.md.
- If
composer.jsonchanged — re-runcomposer install. - If
package.jsonchanged — re-runnpm install && npm run build. - If only
.scss/.js/.vuefiles changed — re-runnpm run build. - During development, use
npm run devto start the Vite dev server with hot module replacement.
Full documentation is available at docs.johncms.com.
Translations are managed on Crowdin. Feel free to contribute or report issues on GitHub.