Я развернул собственный экземпляр Discourse по адресу https://forum.embeetle.com.
Вчера автоматическое обновление через браузер не удалось, поэтому я зашел на сервер и выполнил команду ./launcher rebuild app.
Это тоже не сработало, выдав следующую ошибку:
I, [2024-08-01T20:46:09.837292 #1] INFO -- :
I, [2024-08-01T20:46:09.837631 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
warning Resolution field "unset-value@2.0.1" is incompatible with requested version "unset-value@^1.0.0"
error Error: https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz: ESOCKETTIMEDOUT
at ClientRequest.<anonymous> (/usr/share/yarn/lib/cli.js:142037:19)
at Object.onceWrapper (node:events:631:28)
at ClientRequest.emit (node:events:517:28)
at TLSSocket.emitRequestTimeout (node:_http_client:847:9)
at Object.onceWrapper (node:events:631:28)
at TLSSocket.emit (node:events:529:35)
at Socket._onTimeout (node:net:598:8)
at listOnTimeout (node:internal/timers:569:17)
at process.processTimers (node:internal/timers:512:7)
После этого команда, похоже, зависла (ничего не происходило как минимум 10 минут), поэтому я прервал её и попытался снова. Результат тот же.
Проблем с сетью нет: изнутри контейнера Docker (./launcher enter app) команда wget https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz выполняется успешно менее чем за 0,1 секунды.
Я проверил похожую проблему: Error during the update ESOCKETTIMEDOUT registry.yarnpkg.com - #4 by jericson. Там предлагается увеличить таймаут, отредактировав файл /var/discourse/templates/web.template.yml.
К сожалению, в моей установке этот путь не существует (изнутри контейнера Docker нет директории /var/discourse; есть папка var/www/discourse, которая является рабочей директорией по умолчанию при входе в приложение, но в ней нет подпапки templates; я искал файл web.template.yml, но не смог найти его нигде).
Также я не уверен, что увеличение таймаута решит проблему, учитывая очень быструю загрузку файла https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz.
В итоге я восстановил резервную копию от нескольких дней назад с более старой версией Discourse и скопировал в неё самую свежую версию discourse/shared. Это сработало, и форум снова доступен.
Что-то не так с последней версией в главной ветке? Я действительно снова попытался выполнить ./launcher rebuild app, и она снова не сработала тем же образом, поэтому мне пришлось снова восстановить форум из резервной копии.