Просто добавляю сюда крайний случай миграции, с которым я столкнулся, на случай, если это поможет кому-то ещё.
Я столкнулся с крайним случаем Let’s Encrypt/SSL при переносе автономного экземпляра Discourse на новый VPS, поэтому я записал точные шаги по диагностике и восстановлению, на случай, если они будут полезны кому-то ещё, следующему этому руководству.
В моём случае nginx внутри app не запускался, потому что оба файла .cer в /var/discourse/shared/standalone/ssl/ превратились в файлы нулевого размера:
PEM_read_bio_X509_AUX() failed
Пересборка снова попыталась выпустить сертификат, и после нескольких попыток я уперся в лимит скорости выпуска сертификатов Let’s Encrypt. Копирование всё ещё действительных файлов сертификатов со старого сервера само по себе не помогло, потому что запуск app снова заменял их на файлы нулевого размера.
Что в итоге помогло, так это остановка app и копирование как рабочей директории /var/discourse/shared/standalone/ssl/, так и соответствующего состояния /var/discourse/shared/standalone/letsencrypt/ со старого сервера, а затем повторный запуск контейнера.
Я задокументировал полную последовательность действий здесь:
Это диагностические/восстановительные заметки по данной конкретной миграции, а не замена официальной документации по миграции или HTTPS.
Также существует более старая тема на Meta, описывающая связанную проблему с файлами .cer нулевого размера: