Telegram
+998 (71) 205-80-00

WordPress on serverplus in 10 minutes

Posted: 25.07.26
Share

You can get a WordPress site running on a serverplus VPS in literally 10 minutes. Below are two paths: via Docker Compose (the fastest and cleanest) and the classic LEMP stack (nginx + PHP + MariaDB) if you want to do everything "by hand". Plus a domain, free SSL and basic protection.

What you will need

  • A serverplus VPS: to start, 1–2 vCPU, 2 GB RAM and 20+ GB of disk are enough. Disk type — ssd-universal (a good balance for the site and the database).
  • OS: Ubuntu 24.04 LTS (or 22.04 LTS) — the recommended option.
  • A domain (preferably) — to enable HTTPS. You will need access to the domain's DNS.
  • SSH access to the server (via a key).

WordPress requirements (current). PHP 8.3+, MariaDB 10.6+ or MySQL 8.0+, HTTPS. Both methods below already account for these versions.

Method 1 — Docker Compose (fast and clean)

WordPress and the database come up with two files and a single command. Nothing "litters" the system, and it is easy to move and update.

1. Install Docker

# official Docker install script curl -fsSL https://get.docker.com | sudo sh # check sudo docker version

2. Create the project

mkdir -p ~/wordpress && cd ~/wordpress

Create a .env file with passwords (replace with your own, strong ones):

MYSQL_ROOT_PASSWORD=change_me_root MYSQL_DATABASE=wordpress MYSQL_USER=wp_user MYSQL_PASSWORD=change_me_strong

Create docker-compose.yml:

services:  db:    image: mariadb:11    restart: always    environment:      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}      MYSQL_DATABASE: ${MYSQL_DATABASE}      MYSQL_USER: ${MYSQL_USER}      MYSQL_PASSWORD: ${MYSQL_PASSWORD}    volumes:      - db_data:/var/lib/mysql  wordpress:    image: wordpress:php8.3-apache    restart: always    depends_on:      - db    ports:      - "80:80"    environment:      WORDPRESS_DB_HOST: db      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}      WORDPRESS_DB_USER: ${MYSQL_USER}      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}    volumes:      - wp_data:/var/www/html volumes:  db_data:  wp_data:

3. Start it

sudo docker compose up -d # container status sudo docker compose ps

Open http://your_server_IP in a browser — you will see the WordPress setup wizard. Done; next is the "First login" section.

Firewall. Open the needed ports: sudo ufw allow OpenSSH, sudo ufw allow 80, sudo ufw allow 443, then sudo ufw enable.

Method 2 — Classic LEMP (nginx + PHP + MariaDB)

If you prefer to install the components directly into the system. Commands are for Ubuntu 24.04.

1. Packages

sudo apt update sudo apt install -y nginx mariadb-server \  php-fpm php-mysql php-gd php-xml php-mbstring php-curl php-zip

2. Database

sudo mysql_secure_installation   # set the root password, answer Y to the questions sudo mysqlCREATE DATABASE wordpress CHARACTER SET utf8mb4; CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'change_me_strong'; GRANT ALL ON wordpress.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES; EXIT;

3. WordPress files

cd /tmp && curl -O https://wordpress.org/latest.tar.gz tar xzf latest.tar.gz sudo cp -r wordpress /var/www/mysite sudo chown -R www-data:www-data /var/www/mysite

4. nginx site

Create /etc/nginx/sites-available/mysite (replace the domain and PHP-FPM version if needed):

server {    listen 80;    server_name example.com www.example.com;    root /var/www/mysite;    index index.php;    location / { try_files $uri $uri/ /index.php?$args; }    location ~ \.php$ {        include snippets/fastcgi-php.conf;        fastcgi_pass unix:/run/php/php8.3-fpm.sock;    } }sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx

Then open the site by domain/IP and go through the setup wizard.

Domain and DNS

For the site to open by domain and for HTTPS to work, point the domain at the server's IP:

  • A record @ → your VPS IP.
  • A record www → the same IP (or a CNAME to the main domain).

A DNS update can take from a few minutes to a couple of hours. Check: dig +short example.com.

Free SSL (HTTPS) in a minute

Once the domain points at the server, enable HTTPS with a Let’s Encrypt certificate via certbot.

For LEMP (nginx)

sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com

Certbot will write HTTPS into the nginx config itself and set up auto-renewal.

For the Docker method. The easiest is to add a reverse proxy with automatic TLS in front of WordPress (for example Caddy or Nginx Proxy Manager) — it issues and renews the certificate itself. Or install certbot on the host and proxy to the container's port.

First login and basic setup

  • Open the site → WordPress wizard: choose the language, set the site name, the admin login (not admin!) and a strong password.
  • Go to /wp-admin → "Settings" → set the correct site address (with https://).
  • Delete demo content and unnecessary themes/plugins, install the theme you need.
  • Configure "Permalinks" (pretty URLs) in "Settings → Permalinks".

Basic protection

  • Do not use the login admin and come up with a long password; enable two-factor authentication with a plugin.
  • Update everything: the WordPress core, themes and plugins — most hacks go through outdated plugins.
  • Install plugins only from trusted sources and remove unused ones.
  • Firewall and SSH: outward — only 80/443 and SSH; log in over SSH by key, not by password.
  • Backups: keep backups separate from the server (a snapshot + upload to serverplus S3 object storage).
  • HTTPS is mandatory — it is both security and a plus for SEO.

Updates and backups

Docker method — updating images:

cd ~/wordpress sudo docker compose pull sudo docker compose up -d

Backup (Docker): save the volumes with files and a dump of the database:

# database dump sudo docker compose exec db \  sh -c 'mariadb-dump -u root -p"$MYSQL_ROOT_PASSWORD" wordpress' > wp-db.sql

The files (the wp-content directory with themes/plugins/uploads) and the database dump are all you need to restore. Keep them in S3 or on a separate server.

FAQ

Which method should I choose — Docker or LEMP?

For a quick and tidy start — Docker Compose: easier to install, update and move. Choose LEMP if you need full control over the configuration or are more used to it.

Is a minimal VPS enough?

For a small site/blog — yes: 1–2 vCPU and 2 GB RAM. For load and many plugins add RAM and take ssd-universal or nvme-fast for the database.

Can I do without a domain?

For testing — yes, by IP. But a real site needs a domain: without it you cannot issue SSL, and HTTPS is mandatory today.

How do I speed up the site?

A caching plugin, image optimization, a fresh PHP version (8.3+) and an ssd-universal/nvme-fast disk for the database. For traffic — a CDN.

The site does not open after installation.

Check the firewall (80/443 open), that the containers/services are running (docker compose ps or systemctl status nginx php8.3-fpm), and that DNS points to the right IP.

Recommended
Find the best solution for your project
Fill in the data and you will be contacted by the manager for confirmation
Technical support number
+998 (71) 205-80-00
Email for communication
info@serverplus.uz
Working hours
How would you prefer to receive a consultation?
What are you interested in? (optional)
Free consultation
The engineer will answer, not the operator
No spam or intrusive sales
Do you want to try it yourself first?Each new user is awarded 100,000 UZS of bonuses for testing VPS, Dedicated Server, S3 storage and Kubernetes.
Register and receive a bonus
We do not transfer your data to third parties
Subscribe to our newsletter

Be one of the first to hear news from the hosting industry.