Meta descrição: Aprenda como instalar WordPress na VPS com Docker Compose, passo a passo, com banco de dados, Nginx e SSL para um site rápido e seguro.

Instalar o WordPress em uma VPS usando Docker Compose é uma forma prática de ter um ambiente organizado, reproduzível e fácil de manter. Em vez de instalar PHP, MySQL e servidor web manualmente, você sobe tudo em containers, com configurações versionáveis. Neste guia você verá como subir WordPress + banco, colocar Nginx na frente como reverse proxy e habilitar HTTPS com Let’s Encrypt.
Pré-requisitos: VPS, domínio e firewall
Antes de começar, garanta:
- VPS com Ubuntu 22.04/24.04 e acesso SSH
- Domínio apontado para o IP da VPS (registros A para raiz e www)
- Portas liberadas no firewall: 22, 80 e 443
Comandos úteis (Ubuntu):
$ sudo apt update && sudo apt -y upgrade
$ sudo apt -y install curl ca-certificates gnupg lsb-release ufw
$ sudo ufw allow OpenSSH
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw enable
$ sudo ufw status
🤖 Quer ir além? Automação e Agentes de IA (n8n)
Depois de colocar o WordPress no ar, automatize fluxos de leads, notificações e integrações. A Formação Agentes de IA (n8n) da Hora de Codar traz 11+ cursos, 200+ aulas e projetos práticos (inclui VPS e integrações). Link: https://app.horadecodar.com.br/lp/formacao-agentes-de-ia-n8n?utm_source=blog
Instalando Docker e Docker Compose
Instale o Docker pela fonte oficial e o plugin do Compose.
1) Remover possíveis pacotes antigos:
$ sudo apt -y remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc
2) Adicionar repositório oficial Docker (Ubuntu):
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg
$ echo “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3) Testar:
$ docker –version
$ docker compose version
4) (Opcional) rodar docker sem sudo:
$ sudo usermod -aG docker $USER
$ newgrp docker
Vídeo recomendado: instalação em VPS na prática
Assista um passo a passo prático de deploy em VPS (conceitos de DNS, domínio, portas e SSL que se aplicam ao WordPress): https://www.youtube.com/watch?v=VCKzXFk_XjM
Projeto WordPress + MariaDB com Docker Compose
Crie uma pasta do projeto e um docker-compose.yml.
Estrutura sugerida:
- /opt/wordpress
- nginx/conf.d
- certbot/www
- certbot/conf
Criar diretórios:
$ sudo mkdir -p /opt/wordpress/nginx/conf.d /opt/wordpress/certbot/www /opt/wordpress/certbot/conf
$ sudo chown -R $USER:$USER /opt/wordpress
$ cd /opt/wordpress
docker-compose.yml (exemplo):
services:
db:
image: mariadb:11
containername: wpdb
restart: unless-stopped
environment:
MARIADBDATABASE: wordpress
MARIADBUSER: wpuser
MARIADBPASSWORD: troqueessasenha
MARIADBROOTPASSWORD: troqueessarootsenha
volumes:
– db_data:/var/lib/mysql
networks:
– wpnet
wordpress:
image: wordpress:php8.2-apache
containername: wpapp
restart: unless-stopped
dependson:
– db
environment:
WORDPRESSDBHOST: db:3306
WORDPRESSDBNAME: wordpress
WORDPRESSDBUSER: wpuser
WORDPRESSDBPASSWORD: troqueessasenha
volumes:
– wpdata:/var/www/html
networks:
– wpnet
nginx:
image: nginx:1.27-alpine
containername: wpnginx
restart: unless-stopped
depends_on:
– wordpress
ports:
– 80:80
– 443:443
volumes:
– ./nginx/conf.d:/etc/nginx/conf.d:ro
– ./certbot/www:/var/www/certbot:ro
– ./certbot/conf:/etc/letsencrypt:ro
networks:
– wpnet
certbot:
image: certbot/certbot:latest
containername: wpcertbot
volumes:
– ./certbot/www:/var/www/certbot
– ./certbot/conf:/etc/letsencrypt
volumes:
dbdata:
wpdata:
networks:
wpnet:
driver: bridge
Subir serviços:
$ docker compose up -d
Nginx e SSL (Let’s Encrypt) para domínio
Crie o virtual host inicial (HTTP) em nginx/conf.d/wordpress.conf substituindo site.com e www.site.com:
server {
listen 80;
servername site.com www.site.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
proxysetheader Host $host;
proxysetheader X-Real-IP $remoteaddr;
proxysetheader X-Forwarded-For $proxyaddxforwardedfor;
proxysetheader X-Forwarded-Proto $scheme;
proxy_pass http://wordpress:80;
}
}
Recarregar:
$ docker compose up -d
Emitir certificados:
$ docker compose run –rm certbot certonly –webroot –webroot-path /var/www/certbot -d site.com -d www.site.com –email seuemail@dominio.com –agree-tos –no-eff-email
Atualizar nginx/conf.d/wordpress.conf para HTTPS e redireciono 80→443:
server {
listen 80;
servername site.com www.site.com;
location /.well-known/acme-challenge/ { root /var/www/certbot; }
location / { return 301 https://$host$requesturi; }
}
server {
listen 443 ssl;
servername site.com www.site.com;
sslcertificate /etc/letsencrypt/live/site.com/fullchain.pem;
sslcertificatekey /etc/letsencrypt/live/site.com/privkey.pem;
location / {
proxysetheader Host $host;
proxysetheader X-Real-IP $remoteaddr;
proxysetheader X-Forwarded-For $proxyaddxforwardedfor;
proxysetheader X-Forwarded-Proto https;
proxypass http://wordpress:80;
}
}
Reiniciar Nginx:
$ docker compose restart nginx
Renovação automática (cron simples, a cada dia):
$ docker compose run –rm certbot renew
Depois de renovar, reloaded do Nginx costuma ser necessário.
💻 VPS recomendada para Docker + WordPress
Para rodar WordPress com Docker Compose, considere uma VPS com NVMe, bom uptime e escala fácil. A VPS da Hostinger atende bem esse cenário e permite ajustar recursos conforme o site cresce. Link: https://www.hostinger.com.br/horadecodar — Cupom: HORADECODAR
Boas práticas: segurança, backups e performance
Segurança:
- Não exponha o banco de dados (sem ports no serviço db)
- Firewall apenas 22/80/443; se possível, restrinja SSH por IP
- Senhas fortes (DB e admin do WP)
- Atualizações periódicas de imagens e sistema
Backups:
- Banco: mysqldump periódico para arquivo fora do container
- Arquivos: backup do volume wp_data (uploads, temas, plugins)
- Envie cópias para storage externo; teste a restauração
Performance:
- Use plugin de cache de página
- Ative compressão e headers no Nginx quando estiver confortável
- Considere Redis para object cache se o site crescer
Monitoramento:
- Acompanhe uso de CPU, RAM e disco NVMe
- Planeje upgrades de VPS conforme o tráfego
O que é necessário para instalar WordPress na VPS com Docker Compose?
Para instalar o WordPress na VPS com Docker Compose, você precisa de um servidor VPS com acesso root, Docker e Docker Compose instalados, além de um domínio (opcional), e conhecimentos básicos de terminal. Também é recomendado configurar Nginx como proxy reverso e garantir que portas 80 e 443 estejam liberadas no firewall.
Como configurar o banco de dados para o WordPress usando Docker Compose?
No arquivo docker-compose.yml, você deve adicionar um serviço para o banco de dados (geralmente MySQL ou MariaDB), definindo variáveis de ambiente como MYSQLROOTPASSWORD, MYSQLDATABASE, MYSQLUSER e MYSQL_PASSWORD. O serviço do WordPress também deve ser configurado para se conectar ao banco de dados usando essas credenciais.
É possível utilizar HTTPS (SSL) no WordPress instalado via Docker Compose na VPS?
Sim, é possível utilizar HTTPS/SSL integrando um serviço como o Nginx ao seu ambiente Docker Compose e configurando certificados SSL, geralmente com o Let’s Encrypt. Isso garante uma conexão segura para o seu site WordPress.
Conclusão
Você aprendeu a preparar a VPS, instalar Docker/Compose, subir WordPress + MariaDB com volumes persistentes, configurar Nginx como reverse proxy e habilitar SSL com Let’s Encrypt. Com firewall enxuto, senhas fortes e backups testados, seu site fica pronto para produção. Próximos passos: cache, monitoramento e automações que aceleram seu dia a dia.

