Привет!
Я уже чуть не сошел с ума.
Следую стандартным инструкциям по установке, настроил Mailjet и т.д., но процесс инициализации (bootstrap) завершается ошибкой каждый раз.
Вот моя конфигурация, но я не вижу, что упускаю.
Есть какие-то идеи?
ОШИБКА
--------------------
Pups::ExecError: /bin/bash -c "if [[ ! \"$LETSENCRYPT_ACCOUNT_EMAIL\" =~ ([^@]+)@([^\.]+) ]]; then echo \"LETSENCRYPT_ACCOUNT_EMAIL is not a valid email address\"; exit 1; fi" завершилась с ошибкой, код возврата #<Process::Status: pid 5329 exit 1>
Место возникновения ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
Выполнение не удалось с параметрами {"cmd"=>["if [ -z \"$LETSENCRYPT_ACCOUNT_EMAIL\" ]; then echo \"LETSENCRYPT_ACCOUNT_EMAIL ENV variable is required and has not been set.\"; exit 1; fi", "/bin/bash -c \"if [[ ! \\\"$LETSENCRYPT_ACCOUNT_EMAIL\\\" =~ ([^@]+)@([^\\.]+) ]]; then echo \\\"LETSENCRYPT_ACCOUNT_EMAIL is not a valid email address\\\"; exit 1; fi\""]}
** НЕ УДАЛОСЬ ЗАПУСТИТЬСЯ ** Пожалуйста, прокрутите вверх и поищите сообщения об ошибках, возникших ранее; их может быть больше одного.
./discourse-doctor может помочь диагностировать проблему.
Да, похоже, что это переменная Let’s Encrypt, но, как я уже говорил выше, скрипт установки не предоставляет возможности указать адрес электронной почты. Как только получен пароль SMTP, процесс, кажется, пропускает этот этап и выдаёт ошибку.
Вы можете увидеть это здесь…
Имя хоста для вашего Discourse? [forum.uaptn.com]:
Адрес электронной почты для учётных записей администратора? [forumadmin@uaptn.com]: xxxxxxxxe@protonmail.com
Адрес SMTP-сервера? [in-v3.mailjet.com]:
Порт SMTP? [587]:
Имя пользователя SMTP? [b91xxxxxxxxxxxxxxxxxxde52d]:
Пароль SMTP? [1d2xxxxxxxxxxxxxxxxxxxxxxxxxxxx903]:
./discourse-setup: строка 438: [: слишком много аргументов
Проверка вашего доменного имени . . .
Соединение с forum.uaptn.com успешно установлено.
Всё ли выглядит правильно?
Имя хоста : forum.uaptn.com
Электронная почта : xxxxxxxxx@protonmail.com
Адрес SMTP : in-v3.mailjet.com
Порт SMTP : 587
Имя пользователя SMTP : b91xxxxxxxxxxxxxxxxxxxxxe52d
Пароль SMTP : 1d2cxxxxxxxxxxxxxxxxxxx5086903
Let's Encrypt : ПАРОЛЬ (СЕКРЕТНЫЙ КЛЮЧ)
Нажмите Enter, чтобы продолжить, 'n', чтобы попробовать снова, Ctrl+C для выхода:
Дело не в этом. Скрипт просто проскакивает этап Let’s Encrypt: как только я ввожу пароль, появляется ошибка «line 438: [: too many arguments», и он продолжает работу.
Имеет ли ваш пароль специальные символы? Попробуйте ввести поддельный пароль без специальных символов, например 123456, и посмотрите, запросит ли система адрес электронной почты Let’s Encrypt.
Возможно, скрипт не запрашивает данные, потому что они уже указаны в вашем файле app.yml, а ошибка возникает из-за этой причины (поскольку в файле app.yml адрес электронной почты уже указан неверно).
Попробуйте вручную изменить адрес электронной почты в файле и проверить, поможет ли это (nano containers/app.yml).
Строка, вызвавшая ошибку, проверяет, не пуст ли адрес электронной почты для Let’s Encrypt, чтобы отобразить его и спросить, хотите ли вы его изменить. Однако, поскольку условие не заключает переменную в двойные кавычки, значение из вашего файла app.yml подставляется напрямую, что приводит к ошибке Too many arguments.
Кажется, что если бы команда Discourse заключила переменную в двойные кавычки, это помогло бы избежать подобных случаев, хотя такие ситуации, вероятно, редки (скорее всего, это произошло при первом запуске настройки, когда значение было задано неверно).