📖Tutorial

Como instalar o WordPress em uma VPS

2026-07-30·5 min de leitura·Conteúdo e CMS

Executar o WordPress na sua própria VPS dá controle sobre o aplicativo, o banco de dados e os backups. Este tutorial implanta os contêineres oficiais do WordPress e MySQL com Docker Compose, coloca-os atrás de HTTPS e explica as primeiras tarefas de configuração e manutenção.

Pré-requisitos

Prepare uma VPS Ubuntu 22.04 ou 24.04 nova, com acesso SSH, IP público e pelo menos 2 GB de RAM. Reserve mais memória se esperar usar vários plugins, processar imagens com frequência ou ter editores trabalhando simultaneamente. Crie um registro A, como www.example.com, apontando para o servidor e confirme que o firewall do provedor permite SSH, HTTP e HTTPS.

Você também precisa de um cliente SSH local, conhecimentos de Docker e um destino de backup fora da VPS. É fácil iniciar o WordPress e também é fácil perdê-lo se o banco de dados e os uploads não forem copiados para outro local.

Etapa 1, conectando-se ao servidor

Conecte-se e atualize o servidor:

ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl

Crie um diretório dedicado com permissões restritas:

mkdir -p /opt/wordpress
cd /opt/wordpress
chmod 750 /opt/wordpress

Não execute o WordPress a partir do seu diretório pessoal se outras pessoas puderem acessá-lo. Restrinja a leitura do arquivo Compose e do arquivo de ambiente aos administradores.

Etapa 2, instalando o Docker e o Docker Compose

Instale o Docker Engine e o plugin Compose seguindo as instruções atuais do Docker para Ubuntu. Confira o ambiente de execução antes de criar o conjunto de serviços:

docker --version
docker compose version
systemctl enable --now docker

O plugin Compose é invocado com docker compose, não necessariamente com o binário antigo docker-compose. Prefira o comando atual para que o mesmo arquivo funcione em uma instalação Docker com suporte.

Etapa 3, executando o WordPress com Docker Compose

Crie um arquivo .env e substitua todos os marcadores de posição antes de iniciar. Mantenha esse arquivo fora do Git e use valores longos e aleatórios para as duas senhas do banco de dados:

MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=REPLACE_WITH_A_RANDOM_VALUE
MYSQL_ROOT_PASSWORD=REPLACE_WITH_ANOTHER_RANDOM_VALUE
WORDPRESS_DB_HOST=db:3306
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=REPLACE_WITH_A_RANDOM_VALUE

Crie compose.yaml:

services:
  db:
    image: mysql:8.0
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    restart: unless-stopped
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: ${WORDPRESS_DB_HOST}
      WORDPRESS_DB_NAME: ${WORDPRESS_DB_NAME}
      WORDPRESS_DB_USER: ${WORDPRESS_DB_USER}
      WORDPRESS_DB_PASSWORD: ${WORDPRESS_DB_PASSWORD}
    ports:
      - "127.0.0.1:8080:80"
    volumes:
      - wordpress_data:/var/www/html

volumes:
  db_data:
  wordpress_data:

A imagem padrão wordpress:latest inclui o Apache e é adequada para a maioria das configurações. Quem está começando deve usar essa imagem. A variante fpm exige um servidor web externo; se optar por ela, nunca publique a porta 9000 no servidor, pois expor o socket FPM é um risco de segurança.

Desde março de 2021, a imagem Docker oficial do WordPress gera automaticamente wp-config.php a partir das variáveis de ambiente fornecidas na primeira inicialização. Não crie nem edite esse arquivo dentro do contêiner, configure o WordPress inteiramente por meio de variáveis de ambiente.

Inicie o conjunto de serviços e confira o estado:

docker compose up -d
docker compose ps
docker compose logs --tail 100 wordpress

O banco de dados pode levar um instante para aceitar conexões. Não exclua db_data ao diagnosticar um erro de conexão.

Etapa 4, configurando o proxy reverso

O contêiner do WordPress escuta somente na porta localhost 8080, portanto não fica exposto diretamente à internet. Coloque-o atrás de um proxy no servidor, como Caddy ou Nginx, ou use o proxy fornecido pela plataforma da VPS. O proxy deve encaminhar as solicitações de www.example.com para 127.0.0.1:8080 e obter um certificado pelo fluxo ACME compatível.

Abra as portas 80 e 443 no firewall do provedor e no firewall do servidor. Mantenha a porta 8080 fechada para acesso público. Configure a URL do site WordPress com o endereço HTTPS final durante a configuração no navegador, caso contrário os cookies de login e os redirecionamentos podem usar o esquema errado. Se o WordPress estiver atrás de um proxy HTTPS, o proxy reverso precisa encaminhar o cabeçalho X-Forwarded-Proto para que o WordPress gere links HTTPS corretos. Sem esse cabeçalho, a página de login e os redirecionamentos do painel entram em ciclos infinitos.

Etapa 5, primeiro acesso e configuração inicial

Acesse https://www.example.com. Escolha o idioma, defina o título do site e crie a conta de administrador com uma senha exclusiva. Exclua qualquer conteúdo de exemplo não utilizado, atualize a estrutura de links permanentes e instale somente plugins que você tenha avaliado.

Defina o fuso horário correto e confira se o envio de arquivos de mídia funciona. Se o site estiver atrás de um proxy, confirme que o painel informa HTTPS e que os redirecionamentos canônicos não entram em ciclo. Crie uma conta de editor sem privilégios de administrador para as publicações do dia a dia.

Manutenção

Faça backup dos dois volumes nomeados, wordpress_data (temas, plugins e uploads) e db_data (banco de dados), além dos arquivos Compose e .env, por meio de um processo protegido. Teste a restauração do banco de dados e dos uploads em outra máquina. Atualize o WordPress, os plugins e as imagens em uma janela de manutenção e leia as notas de compatibilidade antes de mudar a versão principal do MySQL.

Monitore disco, memória e logs dos contêineres. Se o site ficar indisponível, confira docker compose ps, os logs do WordPress e os logs do banco de dados antes de reiniciar tudo. Uma reinicialização pode ocultar o primeiro erro útil.

Ferramentas mencionadas

WordPress

↗

CMS open source presente em grande parte da web, com plugins, temas e editor de blocos integrado

GratuitoSem cartãoOSS

Software auto-hospedado totalmente gratuito. Hospede em qualquer lugar com PHP e MySQL.

SOBRE NÓS

Transparência e independência, sem enrolação.

Sem espaços pagos. Apenas uma visão clara do que a ferramenta faz, quanto custa e o que você precisa saber antes de adotá-la.

Saiba mais→

DÚVIDAS FREQUENTES

Perguntas respondidas.

De quanta RAM um site WordPress pequeno precisa?+

Um site pequeno pode começar com 2 GB de RAM, mas o tráfego, os plugins e o processamento de imagens podem exigir mais. Monitore a memória antes de aumentar os limites.

O WordPress deve usar MySQL ou MariaDB?+

Use uma imagem de banco de dados compatível com a documentação atual do WordPress e fixe uma versão principal compatível. Não atualize o banco de dados sem verificar.

Onde os uploads do WordPress são armazenados?+

Armazene-os em um volume Docker persistente ou em um destino de backup separado. O sistema de arquivos do contêiner não é um backup.