Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
To install Bolt CMS 5.2 on Ubuntu 24.04, create the project with Composer, initialize it with bin/console bolt:setup, then configure Apache and PHP-FPM to serve only the project’s public/ directory. This guide uses SQLite for the shortest setup, with an optional MySQL/MariaDB path. Bolt’s installation documentation identifies 5.2 as the stable release; check its current installation guide if you are following this later.
What you’ll install
This is a Composer-based installation of Bolt CMS 5.2 on Ubuntu 24.04, using Apache 2.4 and PHP-FPM. Bolt is a Symfony-based PHP application. Apache’s document root must be the project’s public/ directory—not the project root—so configuration, environment files, and other application files are not exposed to web requests. Bolt’s installation guide documents this layout and the standard /bolt administration path.
You’ll need an Ubuntu server, an SSH-capable account with sudo, and a domain or hostname that resolves to the server. For local testing, use a hostname you have configured on your computer; Bolt’s requirements documentation says authentication needs a hostname or FQDN, with localhost supported for development. A raw IP address is not a good substitute for this test.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Choose a database
SQLite is the quickest route because Bolt can use it by default without a separate database server. It can suit development and some smaller, single-server sites, but workload, write frequency, filesystem reliability, backup practices, and future scaling all matter. MySQL or MariaDB is a more conventional choice for production operations or multiple application instances. Bolt lists supported databases and minimum versions in its requirements guide.
#1 Best Overall
- COMPATIBILITY ☞ Single Computer monitor mount free standing Desk Stand Riser fitting screens for 13,15,17,19,21,23,27,30,32 inch LCD LED Plasma flat screens TV with 50x50mm,75x75mm or 100x100mm backside mounting holes, Includes cable management to keep cords clean and organized
- ERGONOMIC VIEWING ☞ designed to elevate your monitor to a better viewing angle encouraging better posture for your neck and back while working long desk hours
- FUNCTIONAL DESIGN☞ Adjustable bracket offers -15°to +10° tilt, -50° to +50° swivel, 360° rotation, and 4 level height adjustment along the center tube. Monitor can be placed in portrait or landscape shapes
- EASY INSTALLATION – Mounting your monitor is a simple process with an open top slot VESA plate. you can install it within 15 minutes according to the instruction manual, We provide all the necessary tools and hardware for easy assembly
- SAFETY USE: 1/3" inch Tempered safety glass can bear Maximum weight capacity 77Lbs
| Option | Useful when | Trade-off |
|---|---|---|
| SQLite | You want a simple single-server setup without a database service. | The database file must be writable and backed up with uploaded files; file locking and filesystem behavior matter, and it is less suited to high-write or horizontally scaled deployments. |
| MySQL/MariaDB | You want a conventional database service, a separate or managed database, or support for multiple application instances. | You must provision credentials and configure a connection string whose server version matches the installed database. |
Install Apache, PHP, and extensions
Ubuntu packages may provide extensions in shared packages or include them in PHP itself; not every PHP module has a package of its own. Bolt documents PHP 7.2.9 or newer, a minimum PHP memory limit of 32 MB, and required extensions. Those are documented minimums, not a sizing recommendation for a production server: Composer, image processing, traffic, and other services need additional resources. Check the current Bolt requirements as well as the PHP version available on your target Ubuntu system.
sudo apt update
sudo apt install -y
apache2 curl unzip git
php php-cli php-fpm php-common
php-curl php-gd php-intl php-mbstring
php-mysql php-sqlite3 php-xml php-zip
php -v
apache2 -v
php -m
php-sqlite3 is for the SQLite route; php-mysql is for MySQL or MariaDB. Bolt recommends extensions including intl, mbstring, and OPcache; package availability and defaults vary, so inspect php -m and the installed PHP configuration rather than assuming each extension maps to a separate package.
php -m | grep -E 'curl|dom|fileinfo|gd|intl|mbstring|openssl|pdo|posix|simplexml|tokenizer|xml|zip'
Install Composer and create the project
Bolt’s Composer installation instructions use Composer for installation. The following verifies the installer checksum before running it, rather than piping an unverified download directly into PHP. Run Composer as your deployment user, not as root.
cd /tmp
curl -sS https://getcomposer.org/installer -o composer-setup.php
EXPECTED_CHECKSUM="$(curl -sS https://composer.github.io/installer.sig)"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
>&2 echo 'ERROR: Invalid Composer installer checksum'
rm composer-setup.php
exit 1
fi
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
composer --version
Make a directory for the application and let your deployment account write there:
sudo mkdir -p /var/www
sudo chown "$USER":"$USER" /var/www
cd /var/www
composer create-project bolt/project bolt-site
cd /var/www/bolt-site
ls -la
ls -la public
The current project command is composer create-project bolt/project myprojectname; here bolt-site is the chosen directory name. The project files live above the web root, while the public front controller and public assets are under public/. Avoid older Bolt 2 or 3 tutorials: their directory layouts and Apache snippets are not interchangeable with Bolt 5.2.
Configure the database
SQLite
For SQLite, Bolt’s default database can be used without installing a database server. If you need to set the connection explicitly, use this value in the project’s .env:
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/bolt.sqlite
Create the data directory before setup:
mkdir -p var/data
The account running Bolt’s setup must be able to write to this directory. Later, the account used by PHP-FPM must also be able to write the database file and its containing directory as required by SQLite.
Free tools Windows power users keep installed
One-click scans. No signup required.
MySQL or MariaDB
For a database server, create a database and a dedicated user. This example uses a local MySQL-style server; adapt the connection and server version for your actual MySQL or MariaDB release.
Rank #2
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
CREATE DATABASE bolt_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'bolt_user'@'127.0.0.1'
IDENTIFIED BY 'CHANGE_THIS_PASSWORD';
GRANT ALL PRIVILEGES ON bolt_db.* TO 'bolt_user'@'127.0.0.1';
FLUSH PRIVILEGES;
Set the connection in the project’s .env file, substituting a strong password and the correct serverVersion for the database actually installed:
DATABASE_URL="mysql://bolt_user:[email protected]:3306/bolt_db?serverVersion=8.0"
Do not use the MySQL 8.0 example unchanged for MariaDB. Keep .env outside the web root and out of Git; Bolt’s project package lists example connection formats for supported database configurations.
Initialize Bolt and create the administrator
From /var/www/bolt-site, run Bolt’s setup command:
bin/console bolt:setup
This initializes the database and creates the first administrator; setup may also offer fixture content. Fixtures are sample material, not a required part of a live site. Do not load demo content on production unless you deliberately want it. Bolt’s package documentation also lists a more explicit database and user sequence, and bolt:info for checking an installation:
bin/console doctrine:database:create
bin/console doctrine:schema:create
bin/console bolt:add-user --admin
# Optional sample data; do not run on production unless wanted.
bin/console doctrine:fixtures:load
bin/console bolt:info
Use either the setup path or the explicit sequence as appropriate; do not blindly repeat database-creation commands after setup has already initialized the database.
Connect Apache to PHP-FPM
Enable Apache’s rewrite and FastCGI proxy modules. Then start the FPM service and enable its matching Apache configuration based on the PHP version installed on this server:
sudo a2enmod rewrite proxy_fcgi setenvif
PHP_FPM_VERSION="$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')"
sudo systemctl enable --now "php${PHP_FPM_VERSION}-fpm"
sudo a2enconf "php${PHP_FPM_VERSION}-fpm"
sudo systemctl reload apache2
If the CLI version does not correspond to an installed FPM service, list available services and use the matching version explicitly:
Recommended Free Tools
systemctl list-unit-files 'php*-fpm.service'
# Example only if PHP 8.3 FPM is installed:
sudo systemctl enable --now php8.3-fpm
sudo a2enconf php8.3-fpm
Do not assume PHP 8.3 merely because the server runs Ubuntu 24.04; confirm what is installed and that the Apache FPM configuration matches it.
Rank #3
- Ultrawide Compatibility: The ErGear heavy-duty monitor arm is compatible with most 13″–34″ flat or curved monitors up to 19.8 lbs with VESA mounting patterns 75x75mm or 100x100mm. Please verify the screen size, weight, and VESA pattern of your monitor before purchase.
- Engineered for Lasting Performance: This adjustable monitor arm features a 40% wider VESA head and a tighter-fitting VESA panel to enhance stability and keep your monitor firmly in place. The high-performance durable core has been tested through 20,000+ cycles, delivering smooth, effortless adjustments and dependable performance for years of daily use.
- Full Motion Flexibility: This premium VESA monitor mount delivers precise height adjustment up to 17.5″ and reach up to 18.1″, helping you achieve the perfect eye-level position to reduce neck and shoulder strain. It features +80°/-50° tilt, ±90° swivel, and 360° rotation, so you can always find your ideal viewing angle.
- Streamlined Finish with Cable Management: The upgraded cable clips open easily with no tools required, making cable organization faster and more convenient. This monitor arm lifts your screen to free up desk space while keeping cables tidy, helping you stay focused and productive in a clean, clutter-free workspace.
- Quick Setup with Tool-Free VESA Mounting: Set up in just three easy steps! Our computer monitor mount upgraded VESA plate enables tool-free mounting, saving time and avoiding complex installation. We offer two desk mounting options: C-clamp mounting for desks 0.39″–2.56″ thick, or grommet base mounting for desks 0.39″–2.95″ thick.
Create the Apache virtual host
Replace example.com with the hostname configured in DNS, or with the hostname you set up for a local test. The document root and directory block must both point to Bolt’s public/ directory.
sudo nano /etc/apache2/sites-available/bolt-site.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/bolt-site/public
<Directory /var/www/bolt-site/public>
AllowOverride All
Options FollowSymLinks
Require all granted
DirectoryIndex index.php
</Directory>
ErrorLog ${APACHE_LOG_DIR}/bolt-site-error.log
CustomLog ${APACHE_LOG_DIR}/bolt-site-access.log combined
</VirtualHost>
AllowOverride All lets Apache use Bolt’s bundled .htaccess rules; mod_rewrite must be enabled for those rules to route normal URLs. Bolt’s current Apache guidance explains the rewrite behavior. Do not copy an old Bolt 2 or 3 rewrite snippet over the current project file.
sudo a2ensite bolt-site.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
apache2ctl configtest should report Syntax OK. If you already host another site on this server, do not disable its default or active virtual host without checking which hostname it serves. Public DNS for the site must point to this server. For a private test, add the hostname and server IP to the client machine’s hosts file rather than relying on a raw IP.
Set targeted file permissions
Apache and PHP-FPM need to read the application, while Bolt needs write access to specific runtime and content directories. Bolt’s permissions guide identifies writable locations including config/, public/files/, public/theme/, public/thumbs/, and var/. Ownership depends on which account deploys the code and which account runs PHP-FPM; the following is one common shared-group pattern, not a universal policy.
cd /var/www/bolt-site
sudo chown -R "$USER":www-data .
sudo find . -type d -exec chmod 755 {} ;
sudo find . -type f -exec chmod 644 {} ;
sudo chmod -R 775 config public/files public/theme public/thumbs var
If your deployment account needs group access through www-data, add it to that group and start a new login session for the change to take effect:
sudo usermod -aG www-data "$USER"
Confirm that your PHP-FPM worker runs with the expected user and group before applying an ownership scheme. Never use blanket chmod -R 777 to solve write errors: it grants broad access instead of fixing ownership and targeted permissions.
Test the site and administration panel
Once DNS or the local hostname is configured, visit:
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →http://example.com/for the site.http://example.com/boltfor the administration panel.
Bolt documents /bolt as the administration path for a standard installation. Test a normal nested content URL as well as the homepage: this verifies that Apache rewrites are functioning. After logging in, check an image upload and an administrative action that writes data. Add HTTPS before sending credentials over a public network.
Rank #4
- Fits 13" to 27" Screens: Freestanding dual monitor mount holds two screens 13” to 27” and up to 22 lbs with 75x75mm or 100x100mm backside mounting holes. Keep power and AV cables clean and organized with detachable cable clips on the arms and center pole
- Full Articulation: Adjustable mount offers +90° to -90° tilt, 180° swivel, 360° rotation, and height adjustment along the center pole for convenient, customizable viewing angles
- Heavy Duty Extra Large Base: Measures 13" x 10.5" providing solid stability while monitors are held within its center of gravity. The bottom of the base features padding to protect your desk from scratches
- Easy Installation with Detachable VESA Plate: Mounting your monitors is a simple process with detachable VESA bracket plates. We provide the hardware and easy-to-follow instructions for assembly
- Best Practices: Please do not pull monitors too far forward or backward unless the stand is bolted down, as this will cause stability issues. Additionallly, please check to make sure the base size fits your available desk space
Enable HTTPS and harden a production server
HTTPS
Bolt does not itself provide TLS. After the domain resolves to the server and HTTP is reachable, an ACME client such as Certbot can configure Apache:
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
Certificate validation generally needs the hostname to resolve correctly and may require port 80 to be reachable. Confirm renewal is scheduled and test that HTTP redirects to HTTPS as intended.
Firewall and operational safeguards
Allow SSH before enabling UFW, or you can lock yourself out of the server. Then permit web traffic:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
- Use a strong administrator password and keep Ubuntu security updates current.
- Keep debug output disabled on a public production site and restrict SSH access.
- Configure a real SMTP transport if the site needs to send email.
- Monitor Apache, PHP-FPM, and Bolt logs.
- Back up both the database and uploaded files, especially
public/files/; a database-only backup cannot restore local uploads. - Keep project-specific configuration and custom extensions in the backup plan, and test restoration rather than assuming a backup is usable.
Troubleshoot common installation problems
composer: command not found
Check whether Composer is on the path and whether the global binary exists:
which composer
composer --version
ls -l /usr/local/bin/composer
If you installed a local PHAR instead, invoke it with PHP, for example php composer.phar create-project bolt/project bolt-site.
Composer reports missing extensions
Inspect the CLI PHP modules and loaded configuration, then install the missing Ubuntu package and retry:
php -m
php --ini
sudo apt install -y php-curl php-xml php-mbstring php-zip php-gd php-intl php-sqlite3
The required package depends on which extension is missing and which database you chose.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallApache downloads PHP or displays source code
Apache is not handing PHP requests to a working FPM service. Check service status and loaded modules:
Best Value
- 【Ample Storage Space】The dual monitor stand features two magnetic pen holders and a drawer, allowing you to easily organize your desk accessories and office supplies, keeping your workspace clear and tidy for easier access.
- 【Work with ease】The Gianotter monitor stand for desk can adjust the monitor height to eye level, reducing neck and eye strain, improving posture, and enhancing focus and work efficiency.
- 【Maximize desktop space】By raising the monitor height, the space underneath the computer stand can be utilized for storing your mouse, keyboard, or other office supplies, maximizing your desktop area.
- 【No Assembly Required】This monitor riser allows you to skip the hassle of assembly—just unbox it and effortlessly transform cluttered desktop areas, decorating your desktop to enhance your workspace aesthetics!
- 【Quality Assurance】This desk shelf for monitor is meticulously crafted with a perfect design ratio and high-strength metal materials, ensuring exceptional support performance to easily meet your needs. Whether you're raising your monitor or optimizing your workspace, it's the ideal choice to revitalize your desktop! (USPTO patented product)
systemctl status apache2
systemctl status 'php*-fpm'
apache2ctl -M | grep -E 'proxy_fcgi|rewrite'
Confirm that the matching PHP-FPM service and Apache configuration are enabled, then reload Apache.
Homepage loads but routes or /bolt return 404
Check the rewrite module, virtual-host override setting, and bundled rules:
sudo a2enmod rewrite
sudo apache2ctl configtest
ls -la /var/www/bolt-site/public/.htaccess
Verify that the virtual host’s matching <Directory> block contains AllowOverride All. Bolt’s Apache documentation describes its current .htaccess rules. If the file is missing, obtain the version linked from that guide instead of using an old tutorial. A RewriteBase is layout-dependent—for example, Bolt documents RewriteBase /test/ for a subdirectory setup—so do not add one automatically.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesApache returns “Forbidden”
Confirm the document root and directory block both target /var/www/bolt-site/public, that Require all granted is present, and that Apache can traverse every parent directory. Check the site error log:
sudo tail -f /var/log/apache2/bolt-site-error.log
Bolt cannot write files
Inspect each directory’s permissions and the path’s parent permissions before changing ownership:
namei -l /var/www/bolt-site/public/files
ls -ld config public/files public/theme public/thumbs var
Correct the ownership or group access for the PHP-FPM account and deployment model. Bolt’s permissions guide explains the writable paths and why broad 777 permissions are not recommended.
Database connection fails
Inspect the connection setting and confirm the relevant PHP driver is loaded:
grep DATABASE_URL .env
php -m | grep -E 'pdo|mysql|sqlite'
For MySQL or MariaDB, check hostname and port, username, password, database name, actual server version in serverVersion, and whether the database user is permitted from 127.0.0.1 rather than only localhost.
Login or authentication behaves unexpectedly
Access the site using its configured hostname or FQDN. Bolt’s requirements guide notes that authentication requires a hostname or FQDN, with localhost supported for development.
Redirect loop involving /index.php
Check the current public/.htaccess, verify rewrite support, and inspect whether a proxy or upstream server changes REDIRECT_STATUS. Bolt’s Apache notes discuss front-controller redirect behavior. Disabling that redirect can be a temporary diagnostic step, but do not replace the entire current file with a legacy snippet.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

