Migração do PDS do Bluesky com Docker Compose: Guia Passo a Passo
🔍 WiseChecker

Migração do PDS do Bluesky com Docker Compose: Guia Passo a Passo

Rodar seu próprio PDS do Bluesky dá controle total sobre seus dados e moderação. Migrar esse PDS para um novo servidor pode parecer arriscado, pois é necessário mover o banco de dados, o armazenamento e os arquivos de configuração sem perder dados ou quebrar a federação. Este artigo guia você por uma migração completa do PDS usando Docker Compose, desde o backup do servidor antigo até a verificação de que a nova instância está no ar. Você precisará de acesso SSH a ambos os servidores e conhecimento básico de comandos Docker.

Principais Pontos: Etapas da Migração do PDS com Docker Compose

  • Faça backup da stack PDS: Pare os contêineres e copie o diretório pds-data, incluindo o banco de dados SQLite e os blobs de armazenamento.
  • Restaure no novo servidor: Copie o arquivo de backup, coloque-o no mesmo caminho relativo e reinicie os contêineres.
  • Atualize os registros DNS: Altere os registros A e AAAA do seu domínio PDS para apontar para o novo IP do servidor.

O que uma Migração de PDS Envolve

Um PDS do Bluesky armazena três componentes críticos: o banco de dados SQLite com todos os dados da conta, o diretório de armazenamento com imagens e mídias enviadas, e as variáveis de ambiente no arquivo .env. O Docker Compose agrupa esses componentes em uma stack portátil. Ao migrar, você move todo o diretório pds-data e o arquivo .env para a nova máquina. O software PDS é baixado da mesma imagem de contêiner, então não são necessárias alterações de código. A única mudança externa é atualizar os registros DNS para que a rede Bluesky encontre seu PDS no novo endereço IP.

O processo de migração pressupõe que ambos os servidores, antigo e novo, executam o mesmo sistema operacional e versão do Docker. Se o novo servidor usar uma arquitetura diferente, como migrar de x86_64 para ARM64, verifique se a imagem do contêiner do PDS do Bluesky é compatível. No momento desta escrita, a imagem oficial suporta ambas as arquiteturas.

Pré-requisitos

Antes de começar, confirme que você tem o seguinte:

  • Acesso SSH ao servidor PDS antigo e ao novo servidor PDS
  • Docker e Docker Compose instalados em ambas as máquinas
  • Privilégios de root ou sudo em ambas as máquinas
  • Um provedor de DNS onde você possa alterar os registros A e AAAA do seu domínio PDS
  • Espaço em disco suficiente no novo servidor para armazenar o diretório pds-data

Passos para Migrar o PDS do Bluesky para um Novo Servidor

A migração segue três fases: backup no servidor antigo, transferência e restauração no novo servidor, e atualização do DNS. Execute estas etapas em ordem para evitar perda de dados.

  1. Pare os contêineres PDS no servidor antigo
    Conecte-se via SSH ao servidor antigo e navegue até o diretório que contém seu arquivo docker-compose.yml. Execute sudo docker compose down para parar todos os contêineres. Isso impede qualquer gravação no banco de dados enquanto você cria o backup.
  2. Crie um arquivo compactado do diretório de dados do PDS
    Execute sudo tar -czf pds-backup.tar.gz pds-data/ no mesmo diretório do arquivo docker-compose.yml. O diretório pds-data contém o banco de dados SQLite e os blobs de armazenamento. Se seu arquivo .env não estiver dentro de pds-data, inclua-o separadamente: sudo tar -czf pds-backup.tar.gz pds-data/ .env.
  3. Copie o arquivo para o novo servidor
    Use scp ou rsync para transferir o arquivo. Por exemplo: scp pds-backup.tar.gz usuario@novo-servidor-ip:/home/usuario/. Certifique-se de que o diretório de destino existe e tem espaço livre suficiente.
  4. Reinicie os contêineres PDS antigos
    No servidor antigo, execute sudo docker compose up -d para colocar o PDS de volta online. Os usuários continuarão acessando o servidor antigo até que a mudança de DNS se propague.
  5. Prepare a estrutura de diretórios do novo servidor
    Conecte-se via SSH ao novo servidor. Crie o diretório onde o PDS será executado: mkdir -p /opt/bluesky-pds. Copie o arquivo docker-compose.yml do servidor antigo para este diretório. Você também pode transferi-lo com scp.
  6. Extraia o arquivo de backup no novo servidor
    Mova o arquivo para o diretório do PDS: sudo mv pds-backup.tar.gz /opt/bluesky-pds/. Em seguida, extraia: sudo tar -xzf pds-backup.tar.gz. Verifique se o diretório pds-data e o arquivo .env estão presentes.
  7. Inicie os contêineres PDS no novo servidor
    Execute sudo docker compose up -d. Verifique os logs com sudo docker compose logs -f para confirmar que o PDS inicia sem erros. Procure uma linha indicando que o servidor está ouvindo na porta 2583.
  8. Atualize os registros DNS do seu domínio PDS
    Faça login no seu provedor de DNS e altere o registro A do seu domínio PDS para o novo endereço IP do servidor. Se seu PDS usar IPv6, atualize também o registro AAAA. O valor de TTL determina a rapidez com que a mudança se propaga. Defina um TTL baixo de 300 segundos antes da migração para acelerar a troca.
  9. Verifique se o novo PDS está acessível
    Aguarde a propagação do DNS e execute curl https://seu-dominio-pds.com/xrpc/_health de qualquer máquina. Uma resposta saudável retorna um objeto JSON com "version": "...". Você também pode abrir a URL em um navegador para confirmar.

Se a Migração Apresentar Problemas Após a Reinicialização

Vários problemas podem aparecer após mover o PDS. As etapas abaixo abordam os mais comuns.

O contêiner PDS falha ao iniciar com erro de permissão

O diretório pds-data e os arquivos podem ter proprietário incorreto no novo servidor. Execute sudo chown -R 1000:1000 pds-data/ dentro do diretório do PDS. O contêiner PDS é executado como ID de usuário 1000 por padrão. Se o arquivo .env definir um UID diferente, use esse valor.

Contas existentes não conseguem fazer login após a migração

Isso geralmente significa que o banco de dados não foi copiado corretamente. Verifique se o tamanho do arquivo pds-backup.tar.gz corresponde ao tamanho do diretório pds-data original. Repita a etapa de backup e verifique a integridade do arquivo com tar -tzf pds-backup.tar.gz para listar o conteúdo.

O endpoint de saúde retorna 503 Service Unavailable

O PDS não consegue se conectar ao relay do Bluesky ou ao diretório PLC. Confirme que o arquivo .env contém os valores corretos para PDS_HOST e PLC_ROTATION_KEY. Verifique também se o novo servidor pode fazer requisições HTTPS de saída para a rede Bluesky.

Servidor Antigo vs Novo Servidor: Principais Diferenças Após a Migração

Item Servidor Antigo Novo Servidor
Endereço IP IP original Novo IP atribuído ao servidor
Registros DNS Apontando para o IP antigo Atualizados para o novo IP
Versão do PDS Versão antes da migração Mesma versão se a tag da imagem estiver fixada; caso contrário, a mais recente
Dados Banco de dados e blobs originais Cópia dos dados do arquivo de backup

Agora você tem um PDS do Bluesky totalmente migrado rodando no novo servidor. Teste sua conta publicando uma nova mensagem e verificando se ela aparece na timeline pública. Como próximo passo, considere habilitar backups diários automatizados do diretório pds-data para um local remoto usando um cron job e rsync. Isso protege contra falhas de hardware no novo servidor.