imoodsy.com and www.imoodsy.com only as examples. Replace every occurrence with your own domain and replace 123.123.123.123 with your VPS IP address. Copy buttons copy the example exactly as shown; edit the domain, IP address and passwords before running commands on your server.Installing WordPress on a Contabo VPS gives you significantly more control over your website than traditional shared hosting. You can choose your web server, configure PHP limits, manage databases, install caching systems, host multiple websites and optimize the server according to your requirements.
However, a fresh Contabo VPS is different from shared hosting. You normally won't have cPanel, a one-click WordPress installer or a preconfigured hosting environment. If you start with a fresh Ubuntu server, you need to install and configure the web server, PHP, database, WordPress and SSL certificate yourself.
In this complete guide, you'll learn how to install WordPress on Contabo VPS step by step using Ubuntu 24.04 LTS, Nginx, MySQL, PHP-FPM and Let's Encrypt SSL.
I've included all the commands required throughout the process, so you can follow the tutorial even if this is your first time configuring WordPress manually on a VPS.
By the end of this guide, your WordPress website should be available securely at:
https://yourdomain.comIf you haven't selected your hosting provider yet, you can first check our Top 10 Best Web Hosting Service Providers in 2026 comparison to understand how Contabo compares with other hosting options.
Quick Answer: How to Install WordPress on Contabo VPS
To install WordPress on Contabo, first deploy an Ubuntu VPS and connect to your server through SSH. Install Nginx, MySQL and PHP-FPM, create a database for WordPress, download the latest WordPress files and configure wp-config.php.
Next, create an Nginx server block for your domain, point the domain's DNS records to your Contabo VPS IP address and install a free Let's Encrypt SSL certificate using Certbot.
The complete setup will look like this:
Domain
↓
Contabo VPS
↓
Ubuntu 24.04
↓
Nginx
↓
PHP-FPM
↓
WordPress
↓
MySQLYou can optionally place Cloudflare in front of the server later for DNS, CDN and additional security.
What You Need Before Installing WordPress on Contabo
Before starting, make sure you have the following:
| Requirement | What You Need |
|---|---|
| VPS | Active Contabo VPS or Cloud VPS |
| Operating System | Ubuntu 24.04 LTS recommended |
| Server Access | Root or sudo access |
| Domain | Your registered domain name |
| DNS Access | Ability to edit A records |
| Computer | SSH-capable Windows, macOS or Linux computer |
| Web Stack | Nginx + PHP-FPM + MySQL |
Throughout this tutorial, we'll use:
imoodsy.comas the example domain.
Whenever you see imoodsy.com, replace it with your actual domain name.
We'll also use:
123.123.123.123as the example Contabo server IP.
Replace it with your actual VPS IP address.
Step 1: Create Your Contabo VPS
The first step is to have an active VPS.
When configuring a new Contabo server, choose:
Ubuntu 24.04 LTS
Ubuntu LTS releases are generally a good choice for production web servers because they receive long-term security maintenance.
Once your VPS has been provisioned, you'll receive or be able to access server information such as:
IP Address: 123.123.123.123
Username: root
Password: YourServerPasswordKeep this information secure because you'll need it to connect through SSH.
If you're planning to purchase a new Contabo server, you may also want to check our Contabo Promo Codes & Coupons 2026 guide before ordering.
Step 2: Connect to Your Contabo VPS Using SSH
SSH allows you to remotely manage your Linux VPS using the command line.
Windows 10 and Windows 11 users can use Windows Terminal or PowerShell without installing additional software.
Open PowerShell and enter:
Replace the IP with your Contabo VPS IP.
The first time you connect, you may see:
The authenticity of host can't be established.
Are you sure you want to continue connecting?Enter:
yesThen enter your root password.
After successful authentication, your terminal should look similar to:
root@contabo:~#You're now connected to the Contabo server.
Step 3: Update Your Ubuntu Server
Before installing WordPress, update your server's package information.
Run:
apt updateThen upgrade existing packages:
apt upgrade -yYou can also run both together:
apt update && apt upgrade -yKeeping Ubuntu updated is important because updates can contain security patches, bug fixes and newer stable package versions.
If Ubuntu informs you that a reboot is required, run:
rebootWait around 30–60 seconds and reconnect:
Step 4: Configure the Ubuntu Firewall
Before installing additional services, configure the Ubuntu UFW firewall.
First, allow SSH connections:
ufw allow OpenSSHThis is important because enabling the firewall without allowing SSH could lock you out of the server.
Next, we'll eventually need HTTP and HTTPS traffic. You can enable them using:
ufw allow 80/tcp
ufw allow 443/tcpNow enable UFW:
ufw enableConfirm when prompted.
Check its status:
ufw statusYou should see rules allowing SSH, port 80 and port 443.
Step 5: Install Nginx on Contabo VPS
WordPress requires a web server to process browser requests.
In this tutorial, we'll use Nginx.
Install Nginx:
apt install nginx -yStart Nginx:
systemctl start nginxEnable it automatically after server reboot:
systemctl enable nginxCheck the status:
systemctl status nginxYou should see:
active (running)Press:
qto exit the status screen.
Now open your server IP in a browser:
http://123.123.123.123You should see the default:
Welcome to nginx!page.
That confirms Nginx is running properly.
Step 6: Install MySQL for WordPress
WordPress requires a database to store information such as posts, pages, users, settings, comments and plugin data.
We'll use MySQL.
Install it:
apt install mysql-server -yStart MySQL:
systemctl start mysqlEnable it at startup:
systemctl enable mysqlVerify that it is running:
systemctl status mysqlYou should see:
active (running)Step 7: Secure MySQL
Run the MySQL security configuration:
mysql_secure_installationThe questions shown can vary slightly depending on your MySQL version.
For a normal WordPress server, you generally want to remove anonymous users, disable unnecessary remote root database access, remove the test database and reload the privilege tables.
Ubuntu uses socket authentication for the local MySQL root account by default. This tutorial runs commands as the Linux root user, so mysql opens the database shell without a database password. If you use a separate sudo user, run sudo mysql and sudo mysql_secure_installation. Keep socket authentication for local root access and use the separate password-protected wpuser account for WordPress. See the Ubuntu MySQL installation guide for details.
Step 8: Create a WordPress Database on Contabo
Now we need a dedicated database and database user for WordPress.
Open MySQL:
mysqlYou should see:
mysql>
Create the WordPress database:
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Create a WordPress database user:
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'YourVeryStrongPasswordHere!';Replace the example password with a strong password.
Now give the user access to the WordPress database:
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';Reload the permissions:
FLUSH PRIVILEGES;Exit MySQL:
EXIT;Your database details are now:
Database Name: wordpress
Database User: wpuser
Database Password: YourVeryStrongPasswordHere!
Database Host: localhostSave these details temporarily because we'll need them while configuring WordPress.
Step 9: Install PHP for WordPress
Nginx handles web requests, MySQL stores data, and PHP processes WordPress.
Install PHP-FPM and the commonly used WordPress extensions:
apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php-soap php-imagick curl unzip -yCheck your PHP version:
php -vOn a normal Ubuntu 24.04 installation, you'll typically be using PHP 8.3.
Check PHP-FPM:
systemctl status php8.3-fpmYou can also verify the available PHP socket:
ls /run/php/You may see:
php8.3-fpm.pid
php8.3-fpm.sockRemember the socket path:
/run/php/php8.3-fpm.sockWe will use it in our Nginx configuration.
If your server uses another PHP version, replace 8.3 in the commands throughout this tutorial.
Step 10: Download WordPress on Contabo VPS
Now we're ready to install WordPress itself.
Move to the temporary directory:
cd /tmpDownload the latest WordPress package:
curl -O https://wordpress.org/latest.tar.gzExtract it:
tar -xzf latest.tar.gzCreate your website directory:
mkdir -p /var/www/imoodsy.comCopy WordPress files into it:
cp -a /tmp/wordpress/. /var/www/imoodsy.com/Check that WordPress was copied successfully:
ls /var/www/imoodsy.comYou should see files such as:
index.php
wp-admin
wp-content
wp-includes
wp-config-sample.php
wp-login.phpWordPress is now physically installed on the server, but we still need to configure it.
Step 11: Configure WordPress File Permissions
Nginx and PHP typically operate using the www-data user on Ubuntu.
Set WordPress ownership:
chown -R www-data:www-data /var/www/imoodsy.comSet directory permissions:
find /var/www/imoodsy.com -type d -exec chmod 755 {} \;Set file permissions:
find /var/www/imoodsy.com -type f -exec chmod 644 {} \;These settings provide a practical starting point for a standard WordPress installation.
Avoid using permissions such as:
777on WordPress files or directories unless you fully understand why they are needed.
Step 12: Configure wp-config.php
Move into the WordPress directory:
cd /var/www/imoodsy.comCreate the main WordPress configuration file:
cp wp-config-sample.php wp-config.phpOpen it:
nano wp-config.phpFind:
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );Replace those values with your database information:
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'YourVeryStrongPasswordHere!' );
define( 'DB_HOST', 'localhost' );Make sure this remains:
define( 'DB_CHARSET', 'utf8mb4' );Normally, you can leave:
define( 'DB_COLLATE', '' );unchanged.
Add WordPress Security Keys
WordPress uses authentication keys and salts to strengthen login security.
Generate new ones with:
curl -s https://api.wordpress.org/secret-key/1.1/salt/You will receive output similar to:
define('AUTH_KEY', 'random-value');
define('SECURE_AUTH_KEY', 'random-value');
define('LOGGED_IN_KEY', 'random-value');
define('NONCE_KEY', 'random-value');
define('AUTH_SALT', 'random-value');
define('SECURE_AUTH_SALT', 'random-value');
define('LOGGED_IN_SALT', 'random-value');
define('NONCE_SALT', 'random-value');Copy the generated values and replace the default key section inside wp-config.php.
You can also add:
define( 'DISALLOW_FILE_EDIT', true );This prevents administrators from editing PHP files directly through the WordPress dashboard.
Save Nano using:
CTRL + OPress Enter.
Then exit:
CTRL + XStep 13: Configure Nginx for WordPress on Contabo
Now we need to tell Nginx how to serve your WordPress website.
Create a new server block:
nano /etc/nginx/sites-available/imoodsy.comPaste:
server {
listen 80;
listen [::]:80;
server_name imoodsy.com www.imoodsy.com;
root /var/www/imoodsy.com;
index index.php index.html index.htm;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}Replace:
imoodsy.comwith your actual domain.
If your PHP socket is different, change:
fastcgi_pass unix:/run/php/php8.3-fpm.sock;accordingly.
Save the file.
Step 14: Enable the WordPress Website in Nginx
Create a symbolic link:
ln -s /etc/nginx/sites-available/imoodsy.com /etc/nginx/sites-enabled/imoodsy.comIf the default Nginx website is still enabled, you can remove its symbolic link:
rm /etc/nginx/sites-enabled/defaultTest your Nginx configuration:
nginx -tYou should see something similar to:
nginx: configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulReload Nginx:
systemctl reload nginxYour server is now ready to serve WordPress.
Step 15: Point Your Domain to Contabo VPS
Your domain needs to point to your Contabo server before visitors can access WordPress.
Open the DNS management panel where your domain is registered.
Create an A record:
Type: A
Name: @
Value: 123.123.123.123Then create another one for www:
Type: A
Name: www
Value: 123.123.123.123Your DNS records will look approximately like:
@ A 123.123.123.123
www A 123.123.123.123DNS changes can begin working within minutes, although full propagation can sometimes take longer.
Check your domain using:
nslookup imoodsy.comIt should return your Contabo VPS IP address.
Step 16: Install Free SSL on Contabo WordPress
Your website should use HTTPS before going live.
We can install a free Let's Encrypt SSL certificate using Certbot.
Install Certbot:
apt install certbot python3-certbot-nginx -yRequest a certificate:
certbot --nginx -d imoodsy.com -d www.imoodsy.comCertbot will ask you for an email address and agreement to its terms.
If DNS is configured correctly, Certbot should obtain the certificate and automatically modify your Nginx configuration.
Now visit:
https://imoodsy.comYour browser should display the secure HTTPS connection.
Test automatic SSL renewal:
certbot renew --dry-runYou can also check Certbot's timer:
systemctl status certbot.timerStep 17: Complete the WordPress Installation
Open:
https://imoodsy.comYou should now see the WordPress installation screen.
Choose your preferred language and continue.
WordPress will ask you to enter your site title, administrator username, password and email address.
Avoid using:
adminas your administrator username.
Choose something less predictable and use a strong password.
Click:
Install WordPressAfter installation, your dashboard will be available at:
https://imoodsy.com/wp-admin/You have now successfully installed WordPress on your Contabo VPS.
Step 18: Increase WordPress PHP Limits
The default PHP limits may be too restrictive if you plan to upload large plugins, themes or backup files.
Open:
nano /etc/php/8.3/fpm/php.iniFind and adjust:
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300For WooCommerce or more resource-intensive WordPress installations, you may consider:
memory_limit = 512MSave the file.
Restart PHP-FPM:
systemctl restart php8.3-fpmReload Nginx:
systemctl reload nginxYour new PHP limits should now be active.
Step 19: Configure WordPress Permalinks
Log in to WordPress and navigate to:
Settings → PermalinksFor most blogs and business websites, Post name provides a clean URL structure.
Instead of:
imoodsy.com/?p=123you'll get:
imoodsy.com/how-to-install-wordpress/The Nginx configuration we created earlier already contains:
try_files $uri $uri/ /index.php?$args;which allows WordPress pretty permalinks to work correctly.
Step 20: Secure Your Contabo WordPress Server
When you use a self-managed VPS, server security becomes your responsibility.
At a minimum, regularly install Ubuntu security updates:
apt update && apt upgrade -yYou should also keep WordPress core, themes and plugins updated.
Installing Fail2ban can help reduce repeated SSH login attempts:
apt install fail2ban -yEnable it:
systemctl enable fail2banStart it:
systemctl start fail2banVerify:
systemctl status fail2banYou can also enable automatic Ubuntu security updates:
apt install unattended-upgrades -yThen:
dpkg-reconfigure --priority=low unattended-upgradesFor stronger SSH security, consider creating a separate sudo user and configuring SSH key authentication rather than relying permanently on root password login.
For example:
adduser serveradminThen:
usermod -aG sudo serveradminDo not disable root or password-based login until you have tested your new user and SSH key configuration successfully.
Step 21: Configure WordPress Backups
Running WordPress on your own VPS also means you're responsible for backups.
A complete WordPress backup needs both the database and website files.
To back up your WordPress database manually:
mysqldump wordpress > /root/wordpress-database-backup.sqlTo back up your WordPress files:
tar -czf /root/wordpress-files-backup.tar.gz /var/www/imoodsy.comHowever, you shouldn't keep your only backup on the same VPS.
If the entire VPS fails or becomes compromised, both the live website and local backups could be lost.
Use remote storage, another server, cloud object storage or a reputable WordPress backup service for important production websites.
Step 22: Use Cloudflare with Contabo WordPress
Cloudflare is optional, but it can be useful for WordPress websites hosted on a VPS.
It can provide DNS management, CDN caching, DDoS protection and additional security features.
A common architecture is:
Visitor
↓
Cloudflare
↓
Contabo VPS
↓
Nginx
↓
WordPressSince we've already installed a valid Let's Encrypt certificate on the Contabo server, use:
Cloudflare SSL/TLS → Full (Strict)where appropriate.
Avoid using Flexible SSL when your origin server already supports HTTPS because it does not provide encrypted HTTPS between Cloudflare and the origin and can create redirect problems.
How to Check Whether Your Contabo WordPress Server Is Working Properly
Several Linux commands are useful when managing your WordPress server.
Check Nginx:
systemctl status nginxCheck PHP:
systemctl status php8.3-fpmCheck MySQL:
systemctl status mysqlCheck RAM usage:
free -hCheck disk space:
df -hCheck running processes:
topCheck open ports:
ss -tulpnCheck firewall:
ufw statusTest your Nginx configuration:
nginx -tView Nginx errors:
tail -f /var/log/nginx/error.logThese commands can help you quickly identify common server problems.
Common WordPress Problems on Contabo VPS
502 Bad Gateway
One of the most common errors with Nginx and PHP-FPM is:
502 Bad Gateway
First, check PHP-FPM:
systemctl status php8.3-fpmThen check the available PHP socket:
ls /run/php/Make sure your Nginx configuration uses the correct path:
fastcgi_pass unix:/run/php/php8.3-fpm.sock;Test Nginx:
nginx -tRestart PHP:
systemctl restart php8.3-fpmReload Nginx:
systemctl reload nginxError Establishing a Database Connection
If WordPress displays:
Error establishing a database connection
check your wp-config.php values.
They should match the database details you created earlier:
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'YourVeryStrongPasswordHere!' );
define( 'DB_HOST', 'localhost' );You can manually test the database user:
mysql -u wpuser -pEnter the database password.
Then:
USE wordpress;If the database opens successfully, your user credentials are working.
Domain Shows Welcome to Nginx
If your domain displays:
Welcome to nginx!instead of WordPress, the default Nginx server may still be active.
Remove it:
rm /etc/nginx/sites-enabled/defaultConfirm your website configuration is enabled:
ls -l /etc/nginx/sites-enabled/Then:
nginx -t
systemctl reload nginxRefresh the domain.
WordPress Posts Return 404 Errors
If the homepage works but individual posts return 404 errors, check that your Nginx server block contains:
location / {
try_files $uri $uri/ /index.php?$args;
}Then log in to WordPress and go to:
Settings → PermalinksClick Save Changes again.
SSL Certificate Installation Fails
If Certbot cannot create your SSL certificate, first confirm that the domain points to your Contabo IP:
nslookup imoodsy.comCheck your firewall:
ufw statusPorts 80 and 443 should be accessible.
If you're already using Cloudflare and validation continues to fail, you can temporarily disable Cloudflare proxying for the affected DNS records, obtain the certificate and enable proxying again afterward.
WordPress Cannot Upload Images or Plugins
First, confirm your WordPress ownership:
chown -R www-data:www-data /var/www/imoodsy.comReset directory permissions:
find /var/www/imoodsy.com -type d -exec chmod 755 {} \;Reset file permissions:
find /var/www/imoodsy.com -type f -exec chmod 644 {} \;Also check:
upload_max_filesize
post_max_sizeinside your PHP configuration.
Nginx vs Apache for Contabo WordPress
Both Nginx and Apache can run WordPress successfully.
Apache is popular because WordPress has historically been associated with Apache and .htaccess files. Many beginners may also find Apache tutorials easier to follow.
Nginx, however, is an excellent choice for VPS hosting. It is lightweight, handles concurrent connections efficiently and gives you direct control over server-level routing and caching.
Our Contabo WordPress setup uses:
Nginx
+
PHP-FPM
+
MySQLwhich is a popular stack for self-managed WordPress servers.
Do You Need cPanel to Install WordPress on Contabo?
No.
You can install and run WordPress on Contabo without cPanel.
Everything in this guide is configured directly through Ubuntu.
Running WordPress without a paid control panel can reduce licensing costs and unnecessary software overhead.
However, it also means you are responsible for managing Nginx, databases, PHP, SSL certificates, security updates, backups and server troubleshooting yourself.
If you prefer a fully managed hosting experience, compare the alternatives in our Best Web Hosting Services for 2026 guide before deciding whether a self-managed VPS is right for you.
Can You Host Multiple WordPress Websites on One Contabo VPS?
Yes.
A single Contabo VPS can host multiple WordPress websites if it has sufficient CPU, RAM and storage resources.
For example:
/var/www/site1.com
/var/www/site2.com
/var/www/site3.comEach domain should have its own Nginx server block.
Ideally, each WordPress installation should also have its own database and database user.
For example:
site1_db
site2_db
site3_dbThis makes the server easier to manage and helps keep WordPress installations separated.
Is Contabo Good for WordPress Hosting?
Contabo can be attractive for users who want a large amount of VPS resources at competitive pricing.
A self-managed Contabo server also gives you control over PHP, Nginx, databases, caching, storage and server-level optimization.
This makes it possible to host blogs, company websites, WooCommerce stores and multiple WordPress installations.
The main disadvantage is that a VPS requires more technical knowledge than traditional shared hosting.
You are responsible for configuring and maintaining the server.
If you're comparing Contabo with another cloud provider, our DigitalOcean Promo Codes & Credits 2026 article also explains the current DigitalOcean signup offers and can help you evaluate another popular cloud hosting option.
Frequently Asked Questions
How do I install WordPress on Contabo?
To install WordPress on Contabo, create an Ubuntu VPS, connect through SSH, install Nginx, MySQL and PHP-FPM, create a WordPress database, download WordPress, configure wp-config.php, create an Nginx server block, point your domain to the VPS and install an SSL certificate.
Can I install WordPress on Contabo VPS without cPanel?
Yes. You don't need cPanel to install WordPress on Contabo. WordPress can run directly on Ubuntu using Nginx or Apache, PHP and MySQL.
Which Ubuntu version should I use for Contabo WordPress?
Ubuntu 24.04 LTS is a good choice for a new WordPress server. Ubuntu 22.04 LTS can also be used, although PHP package versions and configuration paths may differ.
Which PHP version does Ubuntu 24.04 use?
Ubuntu 24.04 commonly provides PHP 8.3 through its standard repositories. You can check your installed PHP version with:
php -vCan I use Cloudflare with Contabo?
Yes. Cloudflare can be used in front of a Contabo VPS for DNS, CDN and security features. When your Contabo origin has a valid SSL certificate, Full (Strict) is generally the appropriate Cloudflare SSL mode.
Is SSL free for Contabo WordPress?
You can install a free Let's Encrypt SSL certificate using Certbot. The certificate can then be automatically renewed on your VPS.
Can I host WooCommerce on Contabo VPS?
Yes. WooCommerce can run on a Contabo VPS provided the server has sufficient CPU, RAM, disk performance and properly configured PHP and database resources.
Can I host more than one WordPress website?
Yes. Multiple WordPress installations can be hosted on the same VPS using separate directories, databases and Nginx server blocks.
How do I restart WordPress on Contabo?
WordPress itself isn't a system service. If your WordPress site has a server-side issue, you may need to restart PHP-FPM, Nginx or MySQL:
systemctl restart php8.3-fpm
systemctl restart nginx
systemctl restart mysqlHow do I update my Contabo VPS?
Run:
apt update && apt upgrade -yYou should regularly install server security updates when managing your own VPS.
Final Thoughts
Installing WordPress on a Contabo VPS requires more configuration than using traditional shared hosting, but it also gives you much greater control over the server.
In this tutorial, we built the complete WordPress hosting environment using:
Contabo VPS
↓
Ubuntu 24.04 LTS
↓
Nginx
↓
PHP-FPM
↓
MySQL
↓
WordPress
↓
Let's Encrypt SSLThe full installation process can be summarized as:
Create Contabo VPS
↓
Connect Through SSH
↓
Update Ubuntu
↓
Configure Firewall
↓
Install Nginx
↓
Install MySQL
↓
Create WordPress Database
↓
Install PHP
↓
Download WordPress
↓
Configure wp-config.php
↓
Configure Nginx
↓
Point Your Domain
↓
Install SSL
↓
Complete WordPress Setup
↓
Secure and Back Up the ServerOnce the initial configuration is complete, you have a flexible WordPress environment where you can control server resources, PHP settings, caching, security and performance yourself.
If you're considering purchasing a new Contabo VPS, check our latest Contabo promo codes and coupons before placing your order.
And if you're still deciding which hosting company to use, see our Top 10 Best Web Hosting Service Providers in 2026 for a broader comparison.