Mova sua instância do Discourse para um servidor diferente

:bookmark: Este é um guia para mover sua instância do Discourse de um servidor para outro, incluindo todas as configurações e dados. Este guia se aplica a instâncias do Discourse auto-hospedadas que usam Docker.

:person_raising_hand: Nível de usuário necessário: Administrador do Sistema

:warning: Este procedimento envolve alterações de domínio e DNS. Certifique-se de ter acesso tanto ao servidor de origem quanto ao de destino.

Este guia o orientará no processo de migração de sua instância do Discourse de um servidor para outro, garantindo que seus dados, configurações e estrutura sejam preservados.

Isenção de responsabilidade adicionada por @pfaffman 2025-09-12T05:00:00Z.

Essas instruções não funcionam bem agora porque você está usando https e Let’s Encrypt, o que exige que o novo servidor tenha o DNS apontado para ele para que possa solicitar chaves. O que eu recomendo é seguir o Mover um site Discourse para outro VPS com rsync (talvez usando --exclude postgres* e depois fazendo backup e restaurando o banco de dados pela linha de comando.) Isso é interessante, pois se você souber como, poderá ajustar seu DNS local para apontar para o novo servidor para que possa testar se está funcionando enquanto o resto da internet ainda vê o site antigo.

Resumo

Você executará as seguintes etapas principais neste guia:

  1. Faça backup de sua instância atual do Discourse (servidor de origem).
  2. Transfira o arquivo de backup para sua instância de destino do Discourse (servidor de destino).
  3. Restaure o backup no servidor de destino.
  4. Atualize as configurações de DNS (se aplicável).

Ajustando as configurações de DNS (quando necessário)

Se você estiver usando o mesmo domínio para o novo servidor, reduza o TTL (tempo de vida) em sua entrada de DNS com antecedência. Isso garante o tempo de inatividade mínimo durante a propagação dos registros de DNS atualizados. Se você for usar um novo domínio, esta etapa pode ser ignorada.

Fazendo login e preparando o servidor de origem

  1. Faça login em sua instância de origem do Discourse com uma conta que tenha permissões de administrador.
  2. Certifique-se de que tanto o servidor de origem quanto o de destino estejam usando:
    • A mesma versão do Discourse.
    • O mesmo conjunto de plugins.
  3. Atualize a versão do Discourse em ambos os servidores visitando /admin/upgrade.

:exclamation: Evite restaurar um backup mais recente em uma versão mais antiga do Discourse, ou versões incompatíveis do PostgreSQL, pois isso pode causar erros.

Criando e baixando o backup

  1. Navegue até /admin/backups em sua instância de origem do Discourse.
  2. Clique no botão Backup para criar um backup:
  3. Quando solicitado, confirme clicando em Yes (Sim).
  4. Assim que o backup for concluído, vá para a aba Backup files (Arquivos de backup) e localize o backup recém-criado.
  5. Clique em Download (Baixar) para receber um e-mail com um link para download. Clique no link no e-mail para salvar o arquivo de backup localmente.

:warning: Antes de prosseguir, revise seu arquivo app.yml para garantir que quaisquer configurações opcionais, como configurações de CDN, plugins instalados ou suporte a HTTPS, sejam consistentes entre os servidores de origem e destino.

Restaurando o backup no servidor de destino

:bulb: Para restaurar o backup pela linha de comando, consulte a documentação relevante.

  1. Faça login como administrador em sua instância de destino do Discourse.
  2. Navegue até /admin/backups/settings e ative a configuração allow restore (permitir restauração).
  3. Vá para /admin/backups e clique na aba Backup files (Arquivos de backup). Carregue o arquivo de backup que você baixou anteriormente clicando no botão Upload (Carregar):
  4. Após o carregamento ser concluído, clique no menu ⋮ (mais opções) ao lado do backup carregado e, em seguida, clique em Restore (Restaurar):
  5. Confirme clicando em Yes (Sim) quando solicitado.

O processo de restauração começará. Isso pode levar algum tempo, dependendo do tamanho do seu banco de dados. Após a conclusão do processo, você será desconectado automaticamente.

Finalizando e fazendo login

  1. Faça login em sua instância de destino do Discourse com suas credenciais de administrador.
  2. Se o site foi feito backup usando HTTPS, certifique-se de que o HTTPS esteja ativado no novo servidor. Se não estiver configurado corretamente, use o console do Rails para desativar temporariamente a configuração “force https” (forçar https).
  3. Reative quaisquer configurações opcionais editando o arquivo app.yml e reconstruindo sua instância. Isso pode incluir:
    • Ativação do suporte a CDN.
    • Instalação de plugins adicionais.
    • Configuração de HTTPS.

Problemas comuns e soluções

O arquivo de backup não está restaurando

  • Verifique se as versões do Discourse e do PostgreSQL correspondem entre os servidores de origem e de destino.

Impossível fazer login após a restauração (com HTTPS ativado)

  • Use o console do Rails para desativar force_https temporariamente executando:
    SiteSetting.force_https = false
    
74 curtidas
How to migrate Discourse to new server
How to migrate my Discourse instance to a fresh new install
Move Discourse to a new server without setting up the web UI first?
Transfer from bitnami to normal discourse
How to migrate the discourse container to another machine
Can I restore backups from older Discourse versions?
Exporting an AWS instance
Postgres failing to update?
Images lost when migrating to self-hosting
How to downgrade a Digital Ocean Virtual
Preserving user sessions when migrating between hosts
How to migrate Discourse from one server to another with the same DNS name
Migrate from VPS to a Dedicated
Update from 2.9.0 beta2 to beta4 failed (my site is down)
Site migration and plugins
How to backup and restore a whole /var/discourse app folder?
How to migrate Discourse Forum data (Topics, Chat, and Configuration) to another server
How to clone Discourse server to a new server?
Moving to New Server woes
Move from standalone container to separate web and data containers
How do I move the discourse installed server to another server without loss?
Migrate a phpBB3 forum to Discourse
Migrate a vBulletin 4 forum to Discourse
Migrate a NodeBB forum with Redis to Discourse
Migrate a MyBB forum to Discourse
Migrate a NodeBB forum with MongoDB to Discourse
Migrate a Ning forum to Discourse
Migrate a Phorum forum to Discourse
Migrate a PunBB forum to Discourse
Migrate from another forum to Discourse
Migrate a Kunena 3 forum to Discourse
Preserve user sessions when migrating to a new host
Issues while migrating from Kunena
How do I move the discourse installed server to another server without loss?
Can snapshots be used when upgrading the host OS?
Unknown Primary Key
Seeing "welcome to nginx" after backup restore
Move Digital Ocean 1-Click install to Standard supported install
How to switch Discourse servers?
" undefined method `deprecated?' for nil:NilClass" on rebuild
How to switch Discourse servers?
Some settings aren't saving
Steps involved to downgrade from 2GB to 1GB on DO?
Moving to Another VPS Provider
Trouble with postgre(maybe)
Getting "permission denied" on new VPS install
How Do I transfer Discourse between servers?
Multi-instance migration failed when adding a new instance
Plesk server migration
How might we better structure #howto?
Help Needed Migrating Discourse Forum to New Shanghai Server – db:migrate Error
How to migrate from one Digitalocean Droplet to a another Droplet in a different Digitalocean account
Can I retain my forum content if I change its original IP?
Server upgrade from ubuntu 18 to 20
Migrate from GetSatisfaction to Discourse
How to move Discourse to a different server when using Digital Ocean's Volumes (Block Storage)
Error: Can't notify admin while restoring backup during a migration to a fresh install

Este guia ainda é válido 11 anos depois?

Estou executando meu Discourse no Ubuntu e quero atualizar o sistema operacional de 20.04 LTS para 24.04 LTS com o mínimo de tempo de inatividade. Está na AWS.

Isso é um pouco pessimista :wink: :slight_smile:

Ou é… realista? Ou seja, por causa desse tipo de coisas:

Acho válido se preocupar e perguntar se isso é como a documentação. Recentemente, atualizei meu fórum Discourse e tive alguns problemas que quebraram o sistema, eu estava apenas atualizando de uma versão para a mais recente. Algo sobre novos plugins que agora estão no sistema principal do Discourse.

Acho que mudar para uma instância diferente com um sistema operacional mais novo é uma grande mudança. Se eu for tentar essa abordagem, gostaria de ter todo o feedback possível.

Agradeço quaisquer comentários úteis. Obrigado.

Este guia está um pouco fora do escopo dessa alteração específica.

obrigado pelos seus comentários.

Se você ainda estiver no Ubuntu 20.04, você está usando Docker e aufs?

Se sim, você deve ler isto antes de prosseguir:

Acredito que sim, embora eu não tenha olhado com muita atenção. Não. O novo site falhará em obter chaves do Let’s Encrypt se o DNS não apontar para ele. Portanto, você precisaria fazer backup, transferir o backup, mudar o DNS para o novo servidor e, em seguida, reconstruir.

Se você quiser minimizar o tempo de inatividade, o que recomendo é Mover um site Discourse para outro VPS com rsync. Isso copia suas chaves SSL para que o novo servidor esteja pronto quando você reconstruir.

A menos que você já tenha atualizado para o Postgres 15 (e talvez mesmo assim), o que eu recomendaria (o que eu faço) é --exclude postgres*, reconstruir e, em seguida, fazer backup do site principal e restaurar esse backup no novo servidor. Quando isso for restaurado, mude o DNS. As instruções do rsync pedem para você desligar o banco de dados para que possa copiar os arquivos brutos do banco de dados. Existem alguns casos em que isso não funcionará muito bem, então, na maioria das vezes, faço um backup apenas do banco de dados e o restaure.

EDIT: Adicionei isso ao OP.

1 curtida

Obrigado, Jay! Eu me perguntei por que fiquei um pouco preso com a questão de URL / DNS / LetsEncrypt no passado (recente) ao tentar seguir as instruções no OP.

No final, consegui usando um subdomínio para o novo site, garantindo que meu site restaurado no novo servidor estivesse funcionando e, em seguida, fazendo uma troca rápida de DNS / URLs. Mas tudo isso foi um pouco precário / doloroso (especialmente o jogo de “remap whack-a-mole” depois!).

Agora faz sentido por que precisei fazer tudo isso. E é bom saber que o rsync pode contornar alguns dos pontos problemáticos.

Acho que algumas instruções claras aqui realmente ajudariam os outros, pois é um pouco confuso no momento - e não tenho certeza da melhor maneira de fazer isso no futuro. Seu aviso poderia ser incorporado ao OP como uma reescrita (talvez por @SaraDev?).

É por isso que sugeri não seguir estas instruções. :rofl:

Acho que ignorar ou excluir estas instruções e seguir o tópico rsync que eu linkei é o que ajudaria as pessoas.

Estou perdendo alguma coisa?