Atualização falhou de forma espetacular

I have updated my several times over the years and mostly without issue. I got a message that my discourse needed to be updated. Initially i tried to use the web update but it said I needed to login and run ./launcher app rebuild. Which I did.

Below is the failure which appears to be related to the postgres upgrade. I searched the forum and see that there seems to be special instructions to upgrade postgres but not knowing that this was part of this update I did not follow them,. After the failure I tried to follow the steps but those fail as well.

this is the ouotput of the failed update:

wordsmith@digitalwind-ubuntu-20:/var/discourse$ sudo ./launcher rebuild app
[sudo] password for wordsmith:
Sorry, try again.
[sudo] password for wordsmith:
Sorry, try again.
[sudo] password for wordsmith:
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
remote: Enumerating objects: 765, done.
remote: Counting objects: 100% (299/299), done.
remote: Compressing objects: 100% (67/67), done.
remote: Total 765 (delta 252), reused 244 (delta 226), pack-reused 466 (from 4)
Receiving objects: 100% (765/765), 292.42 KiB | 9.75 MiB/s, done.
Resolving deltas: 100% (430/430), completed with 44 local objects.
From https://github.com/discourse/discourse_docker
   ffa8264..efd6bc8  main                               -> origin/main
 * [new branch]      consolidate_layers                 -> origin/consolidate_layers
 * [new branch]      dev-nginx-conf                     -> origin/dev-nginx-conf
 * [new branch]      docker-compose-generate            -> origin/docker-compose-generate
 * [new branch]      gh-action-upload-to-release        -> origin/gh-action-upload-to-release
 * [new branch]      nginx-conf-updates                 -> origin/nginx-conf-updates
 * [new branch]      parameterize-config-filename       -> origin/parameterize-config-filename
 * [new branch]      pento/dev-test-pnpm-10             -> origin/pento/dev-test-pnpm-10
 * [new branch]      revert_only_shipping_en_us_locales -> origin/revert_only_shipping_en_us_locales
 * [new branch]      slim-image-3                       -> origin/slim-image-3
 * [new branch]      update-build-compile-steps         -> origin/update-build-compile-steps
 * [new branch]      update-launcher                    -> origin/update-launcher
 * [new branch]      update_tag                         -> origin/update_tag
Updating Launcher...
Updating ffa8264..efd6bc8
Fast-forward
 .github/workflows/build.yml                   | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
 .gitignore                                    |   2 +
 discourse-setup                               |  23 ++++++----
 image/README.md                               |  12 +----
 image/auto_build.rb                           | 103 +++++++++++++++++++++++++++++++++---------
 image/base/Dockerfile                         | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 image/base/install-imagemagick                |  26 +++++------
 image/base/install-jemalloc                   |   6 +--
 image/base/install-nginx                      |  13 +++---
 image/base/install-oxipng                     |  35 ++++++++-------
 image/base/install-redis                      |   4 +-
 image/base/install-ruby                       |  16 -------
 image/base/install-rust                       |   2 +-
 image/base/nginx_public_keys.key              | 374 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 image/base/release.Dockerfile                 |  16 -------
 image/base/slim.Dockerfile                    | 128 ----------------------------------------------------
 image/discourse_bench/Dockerfile              |  34 --------------
 image/discourse_bench/run_bench.sh            |  19 --------
 image/discourse_dev/Dockerfile                |  38 ++++++++++++++--
 image/discourse_dev/postgres_dev.template.yml |  41 +++--------------
 image/discourse_fast_switch/Dockerfile        |  23 ----------
 image/discourse_fast_switch/create_switch.rb  |  24 ----------
 image/discourse_test/Dockerfile               |  10 ++---
 image/discourse_test/install-chrome           |   2 +-
 image/monitor/Dockerfile                      |  13 ------
 image/monitor/src/monitor.rb                  |  98 ----------------------------------------
 launcher                                      |   6 +--
 scripts/launcher-completion.bash              |  44 ++++++++++++++++++
 templates/import/mbox.template.yml            |   2 +-
 templates/import/mssql-dep.template.yml       |   2 +-
 templates/import/mysql-dep.template.yml       |   2 +-
 templates/import/phpbb3.template.yml          |   2 +-
 templates/import/vanilla.template.yml         |  30 +++++++------
 templates/postgres.10.template.yml            |   3 +-
 templates/postgres.12.template.yml            |   3 +-
 templates/postgres.13.template.yml            | 175 +++++++++++++++++++++++++++--------------------------------------------
 templates/postgres.15.template.yml            |  62 ++++++++++++++------------
 templates/postgres.9.5.template.yml           |   3 +-
 templates/postgres.template.yml               | 105 ++++++++++++++++++++++++++-----------------
 templates/redis.template.yml                  |   6 ++-
 templates/web.china.template.yml              |   3 +-
 templates/web.socketed.template.yml           |   4 +-
 templates/web.ssl.template.yml                |  32 ++++++-------
 templates/web.template.yml                    |  23 +++++-----
 44 files changed, 1186 insertions(+), 818 deletions(-)
 create mode 100644 image/base/Dockerfile
 delete mode 100755 image/base/install-ruby
 create mode 100644 image/base/nginx_public_keys.key
 delete mode 100644 image/base/release.Dockerfile
 delete mode 100644 image/base/slim.Dockerfile
 delete mode 100644 image/discourse_bench/Dockerfile
 delete mode 100644 image/discourse_bench/run_bench.sh
 delete mode 100644 image/discourse_fast_switch/Dockerfile
 delete mode 100644 image/discourse_fast_switch/create_switch.rb
 delete mode 100644 image/monitor/Dockerfile
 delete mode 100644 image/monitor/src/monitor.rb
 create mode 100644 scripts/launcher-completion.bash
Launcher updated, restarting...
WARNING: Docker version 20.10.7 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20250129-0720: Pulling from discourse/base
af302e5c37e9: Pull complete
ed49ab5c933d: Pull complete
7cb9e730d898: Pull complete
7c28a6b187b2: Pull complete
23222af7238f: Pull complete
59b87d9ed5c1: Pull complete
90d60b432298: Pull complete
d3b3135aa82b: Pull complete
94e7b594395d: Pull complete
cf15e2c89d00: Pull complete
2c0cccf9ec27: Pull complete
5d8ea2a8d564: Pull complete
020f04b42275: Pull complete
06e22604f387: Pull complete
8b0ecc579aad: Pull complete
4d577f7424c0: Pull complete
37ef4781925f: Pull complete
30d67d1af761: Pull complete
43eaf8c26af4: Pull complete
02f4cc50eabd: Pull complete
93896ee36e56: Pull complete
fadd5d615e0e: Pull complete
85f9459cb30e: Pull complete
eaddca2afacb: Pull complete
f54443d29a2d: Pull complete
ed6f0f133683: Pull complete
3d1894dc563f: Pull complete
51ca3f63c909: Pull complete
b87374db2274: Pull complete
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Downloaded newer image for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-06T00:07:56.208669 #1]  INFO -- : Reading from stdin
I, [2025-02-06T00:07:56.232158 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2025-02-06T00:07:56.237056 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2025-02-06T00:07:56.242252 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2025-02-06T00:07:56.246861 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown:
I, [2025-02-06T00:07:56.251666 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2025-02-06T00:07:56.253133 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.254477 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.255380 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.256084 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.256905 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.257717 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.258521 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.259186 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.265147 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T00:07:56.266734 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T00:07:56.267608 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T00:07:56.268347 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T00:07:56.268965 #1]  INFO -- : > if [ -f /root/install_postgres ]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

failed to set locale!
[error] character map file `UTF-8' not found: No such file or directory
failed to set locale!
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = "en_US.UTF-8",
	LC_ALL = "en_US.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
popen failure: Cannot allocate memory
initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
I, [2025-02-06T00:07:59.495629 #1]  INFO -- : Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
Upgrading PostgreSQL from version 13 to 15

I, [2025-02-06T00:07:59.496900 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
I, [2025-02-06T00:07:59.500783 #1]  INFO -- : Terminating async processes
2025-02-06 00:07:59.629 UTC [51] FATAL:  database files are incompatible with server
2025-02-06 00:07:59.629 UTC [51] DETAIL:  The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.10 (Debian 15.10-1.pgdg120+1).

Help!!!

4 curtidas

há uma atualização para a versão do banco de dados Postgre SQL nesta atualização.
Minha instalação é nova (6 meses), mas eu ainda estava apreensivo depois de acompanhar este fórum nos últimos dias. Vários relatos de que a atualização não funcionou perfeitamente, mas principalmente com bancos de dados mais antigos e/ou migrados

qual é o histórico da sua instalação? para mais dicas

Aqui estão mais informações sobre a atualização do banco de dados e informações de solução de problemas

Boas notícias, minha atualização funcionou perfeitamente, então a atualização funciona.

boa sorte, sim

Eu gostaria muito de ter enviado um backup para mim mesmo por e-mail antes de começar!
E testado se meus backups do Linode funcionam… Acabei de restaurar um e ele não contém o que eu pensava.

Você poderia compartilhar o conteúdo do seu arquivo app.yml? Remova qualquer informação sensível antes de postar. @Neptune

Confirme também a sua versão do Docker. Veja o tópico abaixo para um problema semelhante que foi resolvido atualizando o Docker.

1 curtida

Docker version 20.10.7, build f0df350

aqui está o meu app.yml

## este é o template de container Docker Discourse tudo-em-um e autônomo
##
## Após fazer alterações neste arquivo, VOCÊ DEVE reconstruir
## /var/discourse/launcher rebuild app
##
## TENHA *MUITO* CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário
templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"
## Descomente estas duas linhas se desejar adicionar Lets Encrypt (https)
## - "templates/web.ssl.template.yml"
## - "templates/web.letsencrypt.ssl.template.yml"

## quais portas TCP/IP este container deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## veja https://meta.discourse.org/t/17247 para detalhes
## expose:
##   - "8080:80"   # http
##   - "8443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Defina db_shared_buffers para um máximo de 25% da memória total.
  ## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
  db_shared_buffers: "256MB"

  ## pode melhorar o desempenho da ordenação, mas adiciona uso de memória por conexão
  #db_work_mem: "40MB"

  ## Qual revisão Git este container deve usar? (padrão: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Quantas requisições web concorrentes são suportadas? Depende da memória e dos núcleos da CPU.
  ## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode substituir
  UNICORN_WORKERS: 4

  ## TODO: O nome de domínio que esta instância do Discourse responderá
  ## Obrigatório. Discourse não funcionará com um número IP puro.
  DISCOURSE_HOSTNAME: wordsmiths.digitalwind.net

  ## Descomente se você quiser que o container seja iniciado com o mesmo
  ## nome de host (-h option) especificado acima (padrão "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de e-mails separados por vírgula que se tornarão administradores e desenvolvedores
  ## na inscrição inicial exemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'xxx@dev.null'

  ## TODO: O servidor de e-mail SMTP usado para validar novas contas e enviar notificações
  # ENDEREÇO SMTP, nome de usuário e senha são necessários
  # AVISO o caractere '#' na senha SMTP pode causar problemas!
  DISCOURSE_SMTP_ADDRESS: dev.null
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: xxx@dev.null
  DISCOURSE_SMTP_PASSWORD: "not-here"
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: nope
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, padrão true)
  DISCOURSE_SMTP_DOMAIN: dev.null
  DISCOURSE_NOTIFICATION_EMAIL: xxx@dev.null

  ## Se você adicionou o template Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: xxx@dev.null

  ## O endereço CDN http ou https para esta instância do Discourse (configurado para puxar)
  ## veja https://meta.discourse.org/t/14857 para detalhes
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  
  ## A chave de endereço IP do Maxmind geolocation para consulta de endereço IP
  ## veja https://meta.discourse.org/t/-/137387/23 para detalhes
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## O container Docker é stateless; todos os dados são armazenados em /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins vão aqui
## veja https://meta.discourse.org/t/19157 para detalhes
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/wp-discourse.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-bbcode-color.git 
          - git clone https://github.com/discourse/discourse-calendar
          - git clone https://github.com/discourse/discourse-checklist
          - git clone https://github.com/discourse/discourse-reactions
          - git clone https://github.com/discourse/discourse-policy

## Quaisquer comandos personalizados para executar após a construção
run:
  - exec: echo "Início dos comandos personalizados"
  ## Se você quiser definir o endereço de e-mail 'De' para seu primeiro registro, descomente e altere:
  ## Após receber o primeiro e-mail de inscrição, comente a linha novamente. Ela só precisa ser executada uma vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fim dos comandos personalizados"

Atualizei o docker e tentei executar novamente:

wordsmith@digitalwind-ubuntu-20:/var/discourse/containers$ docker --version
Docker version 27.5.1, build 9f9e405
wordsmith@digitalwind-ubuntu-20:/var/discourse/containers$ cd ..
wordsmith@digitalwind-ubuntu-20:/var/discourse$ sudo ./launcher app rebuild
x86_64 arch detected.
ERROR: containers/rebuild.yml does not exist or is not readable.

Available configs ( app )
wordsmith@digitalwind-ubuntu-20:/var/discourse$

Você deve finalizar a atualização em um console executando ./launcher rebuild app.

Lá fora há uma nova versão estável.

Foi o que eu fiz acima?

1 curtida

Alguém pode me ajudar aqui? Minha instalação ainda está inativa e não sei mais o que fazer.

Sou novato, mas farei o meu melhor para ajudar. Li em uma postagem anterior que você disse

Você está no diretório certo?
Esta é a tentativa mais recente e a mensagem de erro atual?

Você reiniciou seu contêiner como sugerido?

Eu reiniciaria, faria um backup e moveria para uma nova VM com um sistema operacional atualizado.

1 curtida

Acho que deveria ser sudo ./launcher rebuild app

4 curtidas

Uma atualização da GUI não atualizará seu banco de dados, ou, para colocar de outra forma: você deve, nesta ocasião, atualizar pela linha de comando para obter mais atualizações.

2 curtidas

Isso não vai acontecer.
Posso ter lido errado ou estar me lembrando mal, mas tenho quase certeza de que seu Docker e seu sistema operacional não são mais suportados, então simplesmente pare de atualizar tudo.

Apenas não atualize. Recentemente, ajudei alguém que não tinha atualizado por seis anos. Eles ainda estavam usando Ubuntu 14.04.

1 curtida

E ainda assim é uma atualização. E você não pode fazê-la via GUI por causa da atualização do banco de dados :man_shrugging:

1 curtida

Será exatamente o mesmo. Você ainda precisará atualizar o Docker. Você ainda precisará atualizar o banco de dados. Há uma versão estável disponível agora, se eu me lembro corretamente da sua versão.

1 curtida

Essa talvez seja uma afirmação muito ousada. Com as habilidades que alguns têm aqui, provavelmente conseguiriam corrigir o problema. Embora sempre se lembre do primeiro mandamento ao atualizar. Sempre faça um backup.

Eles fazem. Em seu arquivo app.yml, você pode configurar o Discourse para o Ramo Estável. No entanto, você ainda precisa fazer login no servidor de vez em quando e atualizar.

Este é o benefício de pagar por um plano hospedado, pois você não precisa se preocupar com travamentos, já que o provedor do plano de hospedagem cuida disso.

O Auto-Hospedado tem benefícios, mas você pode ter problemas e, se não conseguir corrigi-los, pode precisar pagar alguém para corrigir o(s) problema(s). É por isso que fazer backups é importante. Especialmente com uma atualização importante. Seu provedor de VPS também tem uma opção para fazer um snapshot do seu servidor que você pode restaurar se uma atualização, digamos, via linha de comando falhar “espetacularmente”.

Em minha jornada de pouco mais de 7 anos, tive que aprender muitas coisas novas. Mais recentemente, configurei um novo servidor e usei o Rsync para mover meu fórum para um servidor Ubuntu totalmente atualizado e atual. O antigo era, se não me engano, Ubuntu 20.x. Agora estou executando a versão mais recente, se não me engano, Ubuntu 24.x. Se eu não tivesse dedicado tempo para aprender e concluir isso, eventualmente teria tido uma atualização “espetacularmente” falha.

1 curtida

Por que você acha isso?
Beta não significa “não pronto para uso em produção”. Estável significa menos alterações, o que resulta em menos bugs novos. No entanto, também significa menos correções de bugs e novos recursos, pois apenas correções de bugs de segurança são retroportadas.

1 curtida

Você teve sorte por vários anos. Como Jay mencionou, seu Docker está desatualizado e requer uma atualização forçada em vez de uma atualização suave pela GUI.

Os criadores do Discourse afirmam explicitamente que você precisa fazer atualizações pela linha de comando de tempos em tempos. Em meus mais de 7 anos de uso, nos primeiros dias, observei a GUI da web me dizer especificamente que preciso fazer uma atualização pela linha de comando. E você também precisa, às vezes, realizar uma atualização do sistema operacional (ou criar um novo servidor para atualizar o sistema operacional e migrar o Discourse para ele).

Este é um dos contras de auto-hospedagem: você, como o auto-hospedeiro, tem que manter o backend e corrigir as coisas quando necessário ou ir para o Marketplace e pagar alguém que tenha as habilidades necessárias.

1 curtida