Atualize manualmente o Discourse e a imagem Docker para a mais recente

:bookmark: Este guia fornece instruções passo a passo para atualizar manualmente o Discourse, o contêiner Docker e o sistema operacional Ubuntu em uma instalação auto-hospedada.

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

:warning: Acesso SSH ao servidor.

Se você hospeda o Discourse por conta própria, ocasionalmente precisa executar uma atualização manual via linha de comando para obter os lançamentos de segurança mais recentes e as bibliotecas mais novas.

Essas atualizações não são capturadas em admin/upgrade, é por isso que ocasionalmente você precisará fazer estas etapas adicionais:

Atualizando o Discourse

  1. O próprio Discourse deve ser atualizado cerca de duas vezes por mês, clicando no botão “Update to Latest Version” (Atualizar para a versão mais recente) no seu painel de administração (admin/upgrade).

  2. A cada dois meses, recomendamos fazer SSH no seu servidor web (usando putty ou seu cliente SSH preferido) e executar os seguintes comandos, especialmente se a página de atualização não aparecer ou se você tiver algum problema ao tentar atualizar.

cd /var/discourse
./launcher rebuild app

Atualizando a imagem Docker e o SO Ubuntu

Para atualizações do Ubuntu, certifique-se de que as atualizações de segurança automáticas estejam ativadas para o seu Ubuntu! O comando é:

dpkg-reconfigure -plow unattended-upgrades

No entanto, isso cobre apenas as atualizações de segurança críticas. De tempos em tempos, você deve obter todas as atualizações do SO como esta:

apt-get update
apt-get dist-upgrade

Isso também manterá o Docker atualizado através dos pacotes padrão docker-ce.

Para resumir:

  • atualize o Discourse duas vezes por mês via atualizador web
  • atualize o contêiner a cada dois meses
  • atualize o SO a cada seis meses

Você poderia dobrar esses números e ainda estaria razoavelmente seguro, por exemplo, atualize o Discourse uma vez por mês, o contêiner a cada 4 meses, o SO uma vez a cada 12 meses, e assim por diante.

Mas você realmente, realmente quer ter as atualizações de segurança automáticas ativadas no Ubuntu, conforme listado acima.

FAQ

Qual é o momento certo para atualizar?

Depende apenas do tempo que você tem disponível e de quão atualizado você quer estar. Se você tiver plugins não oficiais, é altamente recomendável usar um site de teste/staging. Se você não tiver nenhum plugin não oficial, você provavelmente pode atualizar imediatamente, mas mesmo assim, alguns plugins podem falhar por alguns dias enquanto a equipe os corrige (há muitos deles).

Qual é a prática comum ao atualizar com muitos plugins instalados?

Se você tem muitos plugins, testar localmente ou em um servidor de teste é altamente aconselhável. Especialmente se você tiver plugins não oficiais, pois algo pode ter quebrado. Se você descobrir que algo quebrou, então é uma questão de: você tem tempo para consertar? O autor original do plugin tem tempo para consertar? Qualquer uma dessas coisas pode levar semanas. Então, pelo menos desta forma, você simplesmente tem um site de teste quebrado e não um site de produção quebrado.

Estou com pouco espaço em disco

Se você está com pouco espaço em disco (verifique com df), tente limpar imagens antigas usando:

./launcher cleanup
apt-get autoclean
apt-get autoremove

A atualização da versão real do Ubuntu importa já que o Discourse sempre opera no Docker?

Importa muito menos. Mas você deve estar em pelo menos uma versão LTS suportada atualmente do Ubuntu server. Um sistema operacional Linux de 64 bits com uma versão de kernel moderna é necessário.

178 curtidas
"Upgrade all" button is awesome!
Ubuntu 16.04 LTS - upgrade or migrate?
Cannot upgrade due to old version of docker
Daily performance reports keep asking to rebuild container
No longer getting notifications for out of date containers
Discourse stopping working - CPU/RAM load?
Manual upgrade fails
Upgrade container - keeping config and data
Installed OK. Working fine for one day. Suddenly stopped working
Issues upgrading from 1.6.0.Beta10+9 to 2.3.0.beta6
Upgrade link no longer works
Update error, website unavailable, possibly plugin related?
How to optimize storage?
Why do I need a block storage?
Digital Ocean hosting: Do I need a system admin?
Will not load, no access to installation, aufs not installed - my fix
Upgrade V2.1 Beta 2 to Beta 4 Require ./launcher rebuild app Twice
Some trouble updating (many bugs)
What makes a successful volunteer Discourse sysadmin?
Searching locks up the server for a while
Link-image not shown
Oops - Error 500 After Update From Admin Dashboard
Crash After Recent Update
Edit CSS/HTML editor cursor offset makes it unusable due to CSS font override
Oops The software powering this discussion forum encountered an unexpected problem
Upgrades via UI disabled - and not being re-enabled after SSH upgrade
Error upgrading, failed to bootstrap
Help after updating from ssh site goes down
My Discourse is Down. Certificate Issue?
Unable to update Discourse...help?
Reset password link error
Empty update page?
My website is always down
Upgrade container - keeping config and data
Failed to update Discourse new version
Unable to upgrade docker_manager
Undefined method `timeout=' for Regexp:Class
How often should I update Discourse?
Migration failed: relation "user_required_fields_versions" already exists
Kernel version upgrade required when manually updating discourse
Cannot rebuild following site failure: "postgres already running"
Visiting /admin/upgrade may lead to a server error
Updating I get a "Configuring openssh-server" message about the "sshd_config" file
Update Not Completing
Problem with api version when updating docker manager
Problem with Upgrade [error 137]
Problem updating my installation
Update in browser vs Terminal
Docker update to latest version
How often should I update Discourse?
Self hosted Reply by Email stopped working after latest update
Error 500 how to fix?
Site down after UI update
Docker update to latest version
Selectable avatars upload broken (Missing required UppyUpload config: id)
Discourse broken after failed upgrade
How to tell whether to upgrade via web or console?
Oops The software powering this discussion forum encountered an unexpected problem
Determining whether my VPS needs any upgrades (generally)
Kernel version upgrade required when manually updating discourse
Upgrade button is 500-ing for me
1.4.3 Upgrade Oddity?
Add path to cookie
Your Docker installation is not working correctly - no space left on device - safe to use ./launcher cleanup?
PNG's a no show
Upgrade from v2.0.0.beta10 +37 to 2.1.0.beta1 does fail
Kernel Panic after droplet reboot... What now?
Failed to bootstrap 1.6.0.beta 8 with out of date docker
Problem with category style = box under firefox
Site fails to load with js errors
ERROR: You are running an old version of the Discourse image
Service not available | Update Error due to broken plugin
What do you want to do about modified configuration file grub?
Failed Upgrade Discourse and Plugins
Insert Date Timezone is always UTC ; my Timezone is ignored
Admin upgrade page does not exist
Upgrading from 2.9.0.beta8 broke the site, unrecoverable
Error when upgrading and would like to solve or reset
Update failed - Not starting
Failed to rebuild: no such file /usr/local/etc/ImageMagick-6/policy.xml
Upgrade ends with FAILED TO BOOTSTRAP
"400 Bad Request" error after upgrading
Hello, after clicking login, it takes 20 seconds to load before you can enter my page. why?

Os guias são revisados e atualizados com bastante frequência (este parece ter tido um pequeno ajuste em fevereiro). :+1:

O único que eu pessoalmente não conheço é o do docker:

Mas posso garantir a precisão do resto. :slight_smile:

3 curtidas

Acabei de executar todos esses comandos no meu site de teste, incluindo a atualização do Docker, e eles funcionaram sem problemas.

5 curtidas

Recebi um relato de que isso causou um problema ao ser executado. Acho que nunca o usei nos últimos dois anos em que tive um site de teste DO.

Alguém tem alguma experiência recente com isso para dizer se ainda é um conselho relevante ou não?


Acabei de dar uma olhada nas postagens excluídas e encontrei algumas onde essa parte do guia foi levantada antes [1] e parece que @MarkDoerr a executou sem problemas.

Embora eu ainda não tenha certeza se/em quais circunstâncias você seria obrigado a executá-lo? Tenho muita fé no Docker Manager?


  1. Eu as restaurei ↩︎

2 curtidas

2 posts foram divididos para um novo tópico: Quando atualizar o contêiner de dados de uma configuração de dois contêineres?

Um post foi dividido em um novo tópico: Atualizando o fórum v2.2.0.beta4 com alterações locais desconhecidas

Tentei executar esse comando (wget -qO- https://get.docker.com/ | sh) agora e ele relata:

Não é possível conectar ao daemon do Docker em unix:///var/run/docker.sock. O daemon do docker está em execução?

Parece que isso não funcionou para atualizar o docker.

Também parece ter causado a falha completa do site, e o aplicativo não pode ser reconstruído, relatando:

Não é possível conectar ao daemon do docker - verifique se ele está em execução e se você tem acesso

Após reiniciar o servidor, o site voltou a ficar online.

Então, talvez ele tenha feito o upgrade, mas falhou ao reiniciar o docker. Você pode verificar com

docker --version

Acontece que meu laptop tinha um docker antigo e eu executei o comando recomendado e não precisei reiniciar para que ele funcionasse. Veja o que obtenho para a versão:

$ docker --version
Docker version 26.1.4, build 5650f9b
1 curtida

Tenha a mesma versão do Docker:

Docker version 26.1.4, build 5650f9b
1 curtida

Então você está atualizado e tudo está bem!

3 curtidas

Eu sabia que tinha visto este documento cobrindo a cadência de atualização do Discourse, mas tive dificuldade em encontrá-lo novamente porque está em Documentation em “Usando Docker” e intitulado “Atualizar Docker manualmente”.

Como ele cobre as atualizações do Discourse e do Ubuntu, ele poderia ter outro lugar ou dois no menu?

1 curtida

Quando o Discourse recomenda que você atualize uma imagem (de modo que não seja possível atualizar pela interface do usuário), ele informa para fazer o seguinte:

    cd /var/discourse
    git pull
    ./launcher rebuild app

Para que serve esse git pull adicional e por que você não o recomenda no manual?

3 curtidas

É uma relíquia antiga e não é mais necessária. O Rebuild faz isso.

2 curtidas

Eu faço um PR?

3 curtidas
6 curtidas

Mesclado, obrigado @tvavrda!

6 curtidas