Sim, mudamos para o WordPress!

Pessoal,

Migrei para o WordPress e mudei o endereço do blog de “jaymebc.blogspot.com” para este atual: “chicletes.jaymebc.com“.

 1. Por Que Saí do Blogger?

Desde 2010 eu usava o Blogger para fazer meu blog pessoal (o que é exatamente o propósito dele). Fácil de editar, mais fácil ainda de manter, totalmente de graça.

Só que há umas duas semanas eu fui fazer um post sobre o Windows 95 que está completando 30 anos. Pesquisei, escrevi, corrigi, tudo com muito detalhe (do jeito que eu gosto). Tinha instalação em VM, migração para o Proxmox, tudo funcionando. De repente deu um erro e: o post sumiu.

Tentei recuperar:
– Fui em Configurações → Outros → Fazer backup do conteúdo → baixei o arquivo, mas o post não estava lá.
– Tentei cache do Google → vazio.
– Tentei Wayback Machine → não tinha arquivado.

Perdi o post de vez.

Aí, junto com a puteza e frustração, vieram outras motivações para mudar a hospedagem do blog:

  • No Blogger não dá pra mexer no código da página 404 (aquela de página não encontrada).
  • Não dá pra fazer upload de fonte personalizada.
  • Não dá pra ter controle total.
  • É do Google. Se apagar, não tem volta.
  • O WordPress tem como salvar as revisões e recuperar a m*erda.

Resolvi, então! Vou migrar!

Procurei vários serviços mas ou eram pagos, ou eram complicados, ou eram proprietários. Resolvi então aproveitar a infra que já tenho aqui em casa, instalar o WordPress local, self-hosted, 100% meu, usar o meu domínio “jaymebc.com” e aprender pra c*aralho com isso! Ora, se o WP é o serviço utilizado por mais de 40% de TODOS os sites da internet, talvez seja o momento de migrar para essa plataforma…

2. Criação da VM “chicletes” no Proxmox para hospedar os serviços e instalação do WordPress e dependências

Entrei no Proxmox pelo IP local (192.168.1.100), cliquei em Create VM e configurei:

– Node: o meu servidor
– VM ID: 100
– Name: chicletes
– OS Type: Linux 5.x – 2.6 Kernel
– ISO image: Ubuntu Server 22.04 LTS (já tinha baixado do site oficial, aqui)
– Disk size: 20 GB
– CPU: 2 cores
– Memory: 2048 MB
– Network: Bridge `vmbr0`, modelo VirtIO

Iniciei a VM e instalei o Ubuntu:
– Usuário: <username> (recomendo que não use admin ou muito menos root, por segurança!)
– Senha: <senha segura>
– Marquei <OpenSSH server> para acessar por SSH

Depois de instalar, abri o terminal do Mac e, via SSH, e atualizei e instalei tudo o que precisava:

sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y

Desativei o login com o “root” por ssh:

sudo nano /etc/ssh/sshd_config

e, dentro do arquivo, mudei isso:

PermitRootLogin no
PasswordAuthentication no
sudo systemctl restart ssh

Também criei uma chave SSH no meu Mac para conectar com a VM que hospeda o site e agora só entra com chave criptografada:

ssh-keygen -t ed25519 -C "jayme@chicletes"
ssh-copy-id [email protected]

Depois instalei o Fail2ban.

Ele é um sistema que monitora logs de login (SSH, Apache, etc.) e bloqueia IPs que tentam muitas senhas erradas. Exemplo: alguém tentando brute-force no SSH, após 5 tentativas, o IP é  bloqueado por 10 minutos. Serve para evitar ataques automatizados.

sudo apt install fail2ban -y

Também configurei o UFW (Uncomplicated Firewall), firewall básico e simples do Ubuntu. Basicamente liberei as portas que preciso e bloqueei todas as outras:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

E também desativei o IPv6 (que não uso):

sudo nano /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
sudo sysctl -p

Pronto! Agora é instalar o WP e dependências:

3. Instalei o WordPress do Zero (com Segurança em Cada Etapa)
Instalei o LAMP:

LAMP (Linux + Apache + MySQL + PHP) é o conjunto básico para rodar o WordPress.

  • Apache: servidor web (entrega páginas)
  • MySQL: banco de dados (guarda posts, usuários)
  • PHP: linguagem que roda o WordPress
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-bcmath php-zip php-imagick -y
Configurei o MySQL com segurança:

Rodei o script oficial de segurança:

sudo mysql_secure_installation

O script pergunta várias coisas. Aqui está exatamente o que respondi:

    • Enter current password for root (enter for none): → [Enter] (não tinha senha ainda)
    • Set root password? [Y/n]Y → Digitei uma senha forte de 32 caracteres (gerei em passwordsgenerator.net, com letras maiúsculas, minúsculas, números e símbolos — ex.: X7pQ9rT2vW5yZ8mA3bC6dF9gH1jK4lN7oP0qR)
    • Remove anonymous users? [Y/n]YRemoveu o usuário anônimo que vem por padrão (evita acesso sem senha)
    • Disallow root login remotely? [Y/n]YDesativou login do root pela rede (só localhost, para evitar ataques remotos)
    • Remove test database and access to it? [Y/n]YRemoveu o banco “test” que vem vazio (evita vazamentos em testes)
    • Reload privilege tables now? [Y/n]YAplicou todas as mudanças imediatamente

Resultado: MySQL agora está seguro, sem brechas comuns. O script mysql_secure_installation é oficial do MySQL e limpa configurações perigosas que vêm por padrão.

Criei o banco de dados:
sudo mysql -u root
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'senha_aleatoria_32_caracteres';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Baixei o WordPress com verificação:
cd /tmp
wget https://wordpress.org/latest.tar.gz
wget https://wordpress.org/latest.tar.gz.asc
gpg --verify latest.tar.gz.asc latest.tar.gz

Saída: Good signature → tudo certo.

cd /var/www/html
sudo tar -xvzf /tmp/latest.tar.gz
sudo mv wordpress/* .
sudo rmdir wordpress
sudo rm /tmp/latest*
Permissões corretas:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
sudo find /var/www/html -type f -exec chmod 644 {} \;
Configurei o wp-config.php:
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php

Preenchi:

define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'senha_aleatoria_32_caracteres');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');

O WordPress precisa de algumas chaves de segurança para o banco de dados. O site do WP tem um serviço quer gera essas chaves automaticamente (aqui). É só copiar e colar:

// Chaves de segurança (gerei em https://api.wordpress.org/secret-key/1.1/salt/)
define('AUTH_KEY',         'coloca-aqui');
...
define('DISALLOW_FILE_EDIT', true);
Apache seguro:
sudo nano /etc/apache2/sites-available/000-default.conf

Dentro do <VirtualHost>:

ServerSignature Off
ServerTokens Prod
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
sudo a2enmod headers
sudo a2enmod ssl
sudo a2enmod rewrite
sudo systemctl restart apache2
Instalei pelo navegador:

Acessei: http://192.168.1.100/chicletes

      • Título: Chicletes para o Cérebro
      • Usuário: admin
      • Senha: 20+ caracteres, aleatória
      • Email: [meu email]
      • Desmarquei “Permitir que mecanismos de busca indexem”

Agora que o WP, o Apache e o MySQL estão instalados e funcionando, é hora de instalar os famosos “plugins” do WP!

4. Instalando os Plugins

Se tem uma coisa que o WP faz muito e faz bem é abrir espaço para você usar plugins. Esse plugins deixam o WP extremamente seguro (ou não) e altamente flexível!

Fui em Plugins → Adicionar novo:

Plugin Função Configuração
Astra Tema leve Ativei, configurei cabeçalho branco
Classic Editor Editar HTML puro Ativei
404page Usar 404-3 como 404 Ativei
WP File Manager Upload de arquivos Ativei, criei pasta /fonts/
Redirection Redirecionar links Ativei
Wordfence Firewall, login seguro Ativei, configurei 2FA, bloqueio de IP
UpdraftPlus Backup diário Ativei, configurei backup no Google Drive

São milhares de plugins no WP. Muitos gratuitos, muitos fremiuns, muitos pagos! Escolha os que você precisa. A internet está aí para ajudá-lo!

5. Migrei o Conteúdo do Blogger

O Google, por óbvio, que criar dificuldades para que a gente saia do Blogger. Se há algum tempo atrás o próprio Blogger tinha uma ferramenta para “portar” o seu blog para o WP, essa ferramenta já deixou de existir. Assim, dentro do Blogger, fui em Configurações -> Gerenciar blog -> Fazer backup do conteúdo -> Fazer Download e baixei todo o conteúdo do blog.

É claro que isso vai demorar e ocupar espaço a depender do tamanho do blog, número de postagens, fotos e vídeos presentes, etc. Comigo foi quase uma hora!

O importante, para a migração, é um arquivo que tem no download: feed.atom. Lá dentro tem o texto dos posts, dados sobre categorias, tags e links para imagens e vídeos.

Para importar o conteúdo do Blogger, usei o plugin nativo do WordPress — nada extra. Ele vem embutido no núcleo do WP e suporta RSS/Atom perfeitamente.

No WordPress:

    • Fui em Ferramentas → Importar
    • Cliquei em RSS (última opção da lista)
    • Cliquei em Instalar agora (se não estiver ativo)
    • Depois em Executar Importador
    • Fiz upload do arquivo feed.atom
    • Marquei “Baixar e importar anexos” (as imagens, categorias, tags e quase todos os vídeos vieram certinho, mas alguns vídeos eu tive que subir depois)
    • Cliquei em Enviar

Resultado: Todos os posts, categorias, tags e datas vieram perfeitamente. O post do Windows 95 não apareceu — já estava perdido no Blogger 🙁  Comentários não vieram (usei Disqus depois).

Importante lembrar que o importador RSS do WordPress é leve, seguro e não precisa de plugin extra. Funciona com qualquer feed Atom/RSS válido.

Depois foi ajustar algumas coisas:

  • Imagens: vieram todas
  • Vídeos: alguns faltaram, ainda estou subindo o que faltou
  • Comentários: Disqus com mesmo ID → comentários voltaram
  • Links internos: usei Search & Replace no banco (plugin)
  • Categorias/Tags: vieram, mas corrigi manualmente alguns

Por fim, foi redirecionar os post. Como blog no Blogger não será mais atualizado, fiz um redirecionamento para que, quem procurá-lo no Google seja reencaminhado automaticamente para o chicletes.jaymebc.com! O plano é fazer o seguinte redirecionamento:

Do Blogger:
jaymebc.blogspot.com/2023/01/titulo-do-post.html

Para o WordPress:
chicletes.jaymebc.com/2023/01/titulo-do-post/

Ou seja, mantive o ano, o mês e o título do post, só removi o .html e troquei por uma barra / no final (já que o WP não usa .html no final).

Usei o plugin Redirection com uma expressão regular (regex) para fazer isso automaticamente em todos os posts:

  1. Fui em Ferramentas → Redirection
  2. Cliquei em Add new redirection
  3. Preenchi assim:
    • Source URL (URL de origem):
      ^/([0-9]{4})/([0-9]{2})/(.*)\.html$

      (Explicação: captura ano, mês e o resto do título até o .html)

    • Target URL (URL de destino):
      /$1/$2/$3/

      (Reconstrói: /ano/mês/título/)

    • Regex: marcado
    • Match: URL only
    • Action: Redirect to URL
    • Code: 301 Moved Permanently

Exemplo real:
/2023/01/como-instalar-ms-dos.html/2023/01/como-instalar-ms-dos/

Testei com 15 posts antigos (de 2021 a 2024) e todos redirecionam corretamente!

Importante: Como o domínio mudou de jaymebc.blogspot.com para chicletes.jaymebc.com, configurei isso no servidor (DNS/Apache), e o Redirection só trata o caminho. Funciona 100%.

Com a VM funcionando, o WP, Apache e MySQL configurados e funcionando, os posts migrados e o redirecionamento concluído, foi a hora de criar a famosa página 404, aquela que aparece quando o site não é encontrado.

A idéia era criar uma página com uma mensagem divertida, relembrando o MSX.

Para isso:

  • Baixei a fonte: https://www.ateijelo.com/assets/misc/MSX-Screen0.ttf
  • Criei pasta: /wp-content/uploads/fonts/ via WP File Manager
  • Fiz upload do MSX-Screen0.ttf

Criei uma página estática:  404-msx.html

<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>404 - MSX BASIC</title>
  <style>
    @font-face {
      font-family: 'MSX Screen 0';
      src: url('/wp-content/uploads/fonts/MSX-Screen0.ttf') format('truetype');
      font-weight: normal;
      font-style: normal;
      font-display: swap;
    }
    * { margin: 0; padding: 0; box-sizing: border-box; }
    html, body {
      background: #000;
      color: #FFFFFF;
      font-family: 'MSX Screen 0', monospace !important;
      font-size: 22px;
      line-height: 1.4;
      display: flex;
      justify-content: center;
      align-items: center;
      min-height: 100vh;
    }
    .msx {
      background: #0000AA;
      color: #FFFFFF;
      border: 60px solid #00FFFF;
      padding: 50px;
      white-space: pre;
      max-width: 800px;
      box-shadow: 0 0 60px rgba(0, 255, 255, 1);
    }
    .error { color: #FF5555; font-weight: bold; text-shadow: 0 0 8px #FF5555; }
    .cursor {
      display: inline-block;
      width: 12px;
      height: 1.4em;
      background: #00FFFF;
      animation: blink 1s infinite;
      vertical-align: middle;
    }
    @keyframes blink { 0%,50%{opacity:1} 51%,100%{opacity:0} }
  </style>
</head>
<body>
<pre class="msx">MSX BASIC version 3.0
Copyright 1983 by Microsoft
23414 Bytes free
Disk BASIC version 1.0
Ok

10 print "? SYNTAX ERROR IN LINE <span class="error">404</span>"<span class="cursor"></span>

color   auto   goto   list   run
</pre>
</body>
</html>

E criei o CSS para esta página:

<style>
  .entry-title, .page-title, h1.entry-title, .ast-title, .entry-header, .page-header, .ast-page-header { display: none !important; visibility: hidden !important; }
  html, body, .site, .page, .site-content, .ast-container, .site-main, .entry-content, body.page { background: #000 !important; padding: 0 !important; margin: 0 !important; min-height: 100vh !important; }
  .site-header { background: #FFF !important; color: #000 !important; }
</style>

<iframe src="/404-msx.html" frameborder="0" scrolling="no" style="width:100%; height:calc(100vh - 80px); border:none; margin:0; padding:0; display:block; position:absolute; top:80px; left:0;"></iframe>

No plugin 404page, escolhi esta página como página de erro.

Resultado Final:
  • Site: https://chicletes.jaymebc.com
  • Seguro: SSL, firewall, 2FA, backups diários
  • Links redirecionados com 301
  • 404 com MSX, fonte real, borda ciano, cursor piscando
  • Nada some
  • Controle total

Essa foi a confusão que o Blogger me fez passar!

Agora é aprender a usar direito isso aqui e escrever sobre o Windows 95!

É isso por enquanto, pessoal!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima