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.
- 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. Executesudo docker compose downpara parar todos os contêineres. Isso impede qualquer gravação no banco de dados enquanto você cria o backup. - Crie um arquivo compactado do diretório de dados do PDS
Executesudo 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. - Copie o arquivo para o novo servidor
Usescpoursyncpara 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. - Reinicie os contêineres PDS antigos
No servidor antigo, executesudo docker compose up -dpara colocar o PDS de volta online. Os usuários continuarão acessando o servidor antigo até que a mudança de DNS se propague. - 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 comscp. - 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. - Inicie os contêineres PDS no novo servidor
Executesudo docker compose up -d. Verifique os logs comsudo docker compose logs -fpara confirmar que o PDS inicia sem erros. Procure uma linha indicando que o servidor está ouvindo na porta 2583. - 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. - Verifique se o novo PDS está acessível
Aguarde a propagação do DNS e executecurl https://seu-dominio-pds.com/xrpc/_healthde 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.