Joomla World

CMS of the Month for March 2022 - Part 1 of 2 - Typo3 CMS Installation

Introduction to Typo3 CMS

Typo3 CMS is an open source PHP driven content management system that has been around all the way since 1998. It originated in Germany, so that might explain why its popularity is much greater in European countries than the United States. It doesn’t fair too bad overall on a global scale, at it is currently in 16th place in terms of usage according to W3Techs. Upon some initial research, it seems like they pride themselves in being an enterprise class CMS that is very secure. Let’s keep these so called strengths in mind as we do this overview to see if we can confirm them or the opposite.

My Experience with Typo3 CMS

I’ve actually never installed or used this CMS, which is a bit surprising, because PHP and Opensource are things that typically catch my interest, and this CMS has both, and it’s been around forever. I’ve seen it come up plenty of times over the years when I was searching for things, but I might have gotten as far as their home page but never to actually downloading and trying it out.. well, until today :)

I tried to find a popular website built with Typo3 that I was also familiar with and couldn’t find any. I think the closest was, which I may have flown with at some point in my life. That site does look nice, although it’s a bit strange why they’re using the “.html” extensions, like was common decades ago. I ran that site through Google PageSpeed Insights to get an idea of performance, and it’s 78% on desktop and 44% on mobile, so not great. And, core web vitals failed on both desktop and mobile.

So, hopefully I didn’t totally kill your interest in Typo3 with my less than exciting introduction! At this point I’m hoping it’s one of those sleeper CMSs that keeps a low profile but is really cool when you get to know it. I can assure you, though, this article probably wouldn’t exist if I somewhere during this writing I ended up really thinking this CMS wasn’t worth the effort to review So, please read along!

Getting More Acquainted with Typo3 CMS

Since I pretty much crashed and burned for the first couple of hours last month trying to setup a fresh Joomla site for the CMS of the Month of February, I wanted to do a little bit more preparation here before starting with the initial install. Plus, while it’s been years before my previous work with that CMS, I have 0 experience with Typo3.

Installation Requirements

I clicked the orange button in the header on the Typo3 home page “get typo3”, which then took me to a page with the following requirements for the latest version of the CMS:


This was great. I followed along and reviewed the different options for installing things and decided to proceed with composer. They did note v2+ is required.

Common Installation Issues

Missing PHP packages

Incorrect server settings

Installation Process

I’m going to follow along their website instructions after clicking “Getting Started” and “Installation”. The only install tool that you should need is composer. Most of these steps will need to be run from the command line and require an admin user account created, so for Linux, this means either a root user login or sudo privileges to access the root user from an existing user’s login if disallow root login remotely, which isn’t a bad idea to do.

Web Server Environment

NGINX or Apache HTTP Server and PHP Version

So, I am starting the Typo3 setup on my Linux Ubuntu development server I have at SkySilk hosting, which is running NGINX and PHP 8.0. One thing to note here, that while Joomla seemed OK on PHP 8.1, the installation requirements of Typo3 clearly say ≤8.0, so I’m going to use that version, which I also have installed already on my server, so it shouldn’t be too much of an issue. I only had composer v1 installed, so I ran “composer self-update” to update to v2 per the Typo3 requirements documentation. If your system environment is different, you will probably need to alter at least some of the steps I’m covering here, but the general setup should be the same.

Type of Relational Database

I installed the latest stable release of MariaDB , which is compatible with MySQL. I’ve been using a MariaDB installation instead of standard MySQL for a couple years now, as I read it has some additional features over MySQL but is fully compatible with it.

Before proceeding with the installation process, I created a new database and user for the website. You can make the new database name whatever you want, but I typically use the convention [site name]_[cms name], so in this case “optimalcms_typo3”. You probably will want to test database access with your new user before proceeding further. Sometimes I need to flush privileges before the new user can authenticate properly.

Download and Install the Content Management System

You will want to ssh into your remote server to my server and changed to the directory where my site will be located and ran the following command:

composer create-project "typo3/cms-base-distribution:^11.5"

This downloaded all the files to my server. I had to make a few updates to the NGINX config, which was expected, as the web root directory ended up being “public”, and I had it set to “web”.

Typo3 CMS Setup

I opened up the site in my browser, which redirected me to the installation script. The first message thanked me for running the install and then asked that I create an empty file called FIRST_INSTALL in the site root. This is a bit unique for an installation, but maybe it’s a good thing, as it might be be a security measure where someone needs to have server access to write this file in order to control the ability to run the installation from the browser. I don’t know why they didn’t just include this file in the initial composer package install, though.


I created the file and tried reloading the install page in my browser:

root@ss-dev:/var/www/ ls
LICENSE  composer.json  composer.lock  config  logs  public  var  vendor
root@ss-dev:/var/www/ cd public/
root@ss-dev:/var/www/ touch FIRST_INSTALL

Ok, after the reload, I get a few errors, which really were expected, because while I reviewed some of the installation requirements before doing the install and saw they mentioned to make sure you have the necessary PHP libraries installed, I didn’t actually go look which ones were needed.. so, now we know :)


So, I expected that INTL package to actually be available like the others I typically install, but I don’t see it listed on my Ubuntu:

root@ss-dev:/var/www/ apt install php8.0-php8.0-apcu      php8.0-cli       php8.0-curl      php8.0-gd        php8.0-mysql     php8.0-readline  php8.0-xml       php8.0-zip       php8.0-cgi       php8.0-common    php8.0-fpm       php8.0-mbstring  php8.0-opcache   php8.0-tidy      php8.0-xmlrpc

There is a “php-intl” package, but as we see this one is only for PHP 7.4:

root@ss-dev:/var/www/ apt install php-intl Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
php-intl : Depends: php7.4-intl but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Ok, so I’m not going to spend more time on this module for now, because I suspect it’ll only be really needed for setting up a multi-cultural website, which I’m not planning on doing at the moment. For anyone who tries this install and gets the same error and does need or want to install that module under Ubuntu, I would suggest trying to add the ppa:ondrej/php repository, which I’ve used in the past without issue, but apparently I haven’t added that repo on this server and don’t really want to just for this minor issue.

The other errors I resolved by setting PHP variables to the values Typo3 suggested, and they appear to have now gone away, so onward we go.

The next 2 screens are for setting up the DB for which I kept all default values, except specifying the username, password for authentication, and then on the 2nd screen selecting the actual database. I like how this install actually connected first and then let me pick one of the existing databases instead of having me just type the name in a text field.

The next screen allowed me to create a user and name the site.

The final screen gave me options to go to the backend or to create an empty page. I selected the first and go this:


Back to the installation guide and troubleshooting steps on their website, and I found Typo3 apparently requires custom server parameters. They do provide a template for Apache2 and NGINX, which I’m using, so I just copied and pasted that whole thing into my virtualhost file. The only thing I’m changing are the way they had the PHP proxy setup. I’m using the socket approach, while they use port 9000. I like the socket approach, because from my experience it allows more flexibility to run other sites on the same server, where each can have its own socket file. With port 9000, one application locks it, and then the others can’t use it.

So, the line I’m replacing:

fastcgi_pass         php-fpm:9000;


fastcgi_pass    unix:/var/run/php/typo3.sock;

As you can see my socket file is specifically named for this website.

So, after that virtual host change, the site finally comes up! I logged into the backend and am going to try and actually build something.

Access Control

I did want to mention file permissions and how I set those for the database and new website. In a production environment you might want to take additional measures, but here’s what I did on my development server:

File Security

It appears that composer already installed the files with specific permissions, so I left those alone. I did setup all the files under a specific Linux user I called “typo3”. I then specified this user in the PHP FPM pool, so that this is the same user the PHP process runs under.

Upon completion of the CMS installation process I found a tool on the backend to test the environment to ensure everything was installed and configured properly. It also provides details on the system environment and other admin details on the web server.

Next Steps

We hope you’re enjoying this part of the CMS of the month review, which covered the installation of Typo3. Part 2 will cover the actual website setup and and content creation.

Share on:

Leave a Comment

Your email address will not be published, required fields are marked with *.


No comments yet.