This guide installs TYPO3 on a self-hosted Linux server using Composer.
| Component | Minimum | Recommended |
|---|---|---|
| PHP | 8.2 | 8.3+ |
| MySQL | 8.0.17 | 8.0+ |
| MariaDB | 10.4.3 | 10.6+ |
| RAM | 256MB | 512MB+ |
| Disk | 1GB | 5GB+ |
| Composer | 2.1 | 2.6+ |
mysqlipdo_mysqlxmlmbstringcurlzipintlgdsoap (optional)imagick (optional, for better image processing)Install a LAMP (Linux, Apache, MySQL, PHP) or LEMP (Linux, Nginx, MySQL, PHP) stack:
Ubuntu/Debian (LEMP):
sudo apt update
sudo apt install nginx mariadb-server php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-intl php-gd php-soap composer unzip
RHEL/CentOS:
sudo dnf install nginx mariadb-server php-fpm php-mysqlnd php-xml php-mbstring php-curl php-zip php-intl php-gd php-soap composer unzip
Create a MySQL database and user for TYPO3:
mysql -u root -p
CREATE DATABASE typo3 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'typo3'@'localhost' IDENTIFIED BY 'strong-password-here';
GRANT ALL PRIVILEGES ON typo3.* TO 'typo3'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Navigate to your web root and create a new TYPO3 project:
cd /var/www
composer create-project typo3/cms-base-distribution typo3-site
cd typo3-site
Set correct ownership and permissions:
# Set ownership (adjust for your web server user)
sudo chown -R www-data:www-data /var/www/typo3-site
# Set directory permissions
find /var/www/typo3-site -type d -exec chmod 755 {} \;
# Set file permissions
find /var/www/typo3-site -type f -exec chmod 644 {} \;
Apache: Create a virtual host pointing to /var/www/typo3-site/public
Nginx: Configure server block with PHP-FPM, root pointing to /var/www/typo3-site/public
Open http://YOUR-SERVER/typo3-site in your browser.
The TYPO3 Install Tool will guide you through:
See TYPO3 Configuration for configuration guidance.
See TYPO3 Security for hardening guidance.
Prefer automation? See these Ansible setup options:
Prefer containers? See TYPO3 Docker Setup.
Setting up Typo3 can be complex. We offer consulting services for:
Contact us at office@linux-server-admin.com or visit our contact page.