Бесплатный self-hosting (с оговорками!) с Oracle Cloud

https://blogs.oracle.com/developers/install-run-discourse-for-free-in-the-oracle-cloud

Эта статья в блоге была опубликована в прошлом году. Здесь я не увидел никаких упоминаний; полагаю, что Oracle как хостинг-провайдер для большинства людей находится вне поля зрения.

Поэтому перед публикацией я решил попробовать это сам, чтобы убедиться, что это действительно жизнеспособно. Я создал демонстрационный сайт:

https://www.opendiscussion.pw

Я зарегистрировал аккаунт в Oracle Cloud. Там было указано, что проверка аккаунта займёт 15 минут, но мне пришлось ждать два дня из-за проблемы с моей кредитной картой (для проверки требуется указать кредитную карту).

Я следовал инструкциям из статьи в блоге, а затем обычным инструкциям по установке Discourse через Docker. Почти всё получилось с первой попытки! У меня возникла проблема с настройкой электронной почты. Мне кажется, что это единственный момент, который в статье в блоге объяснён некорректно. Пришлось обратиться к документации. Документация Oracle очень хорошая.

Вот что входит в этот тарифный план:

  • 2 (две) ВМ
    У ВМ есть 1/8 процессорного ядра OCPU с возможностью использования дополнительных вычислительных ресурсов. VM.Standard.E2.1.Micro. 2.0 ГГц AMD EPYC 7551
    Оперативная память: 1 ГБ

  • Пропускная способность: 10 ТБ

  • Хранилище: блочный том объёмом 100 ГБ

  • Электронная почта: 1000 писем/месяц (SMTP не включён)

Стоит отметить, что конфигурация, предоставляемая Oracle, включает диск объемом около 40 ГБ (для ОС и пользовательских данных) плюс раздел подкачки объемом 8 ГБ. Файл подкачки не требуется. Поскольку в рамках уровня «всегда бесплатно» можно запустить две виртуальные машины, разделение контейнера базы данных становится вариантом масштабирования.

(По какой-то причине бесплатная PaaS-база данных там не Postgres. :wink: )

Спасибо за эту интересную информацию!

У меня тоже возникла проблема. Я пробовал несколько раз, но безрезультатно (сообщение от банка о «неверном криптограмме», хотя криптограмм был верным).
Я попробовал в другом браузере, и всё сработало — просто использовал другой адрес электронной почты… И теперь уже несколько часов я жду проверки своего аккаунта.

Это бесплатно, но процесс регистрации немного раздражает… :sweat_smile:

В чём именно была проблема с частью, связанной с электронной почтой? Мне удалось установить Discourse на Oracle Cloud, но я никак не могу заставить доставку писем работать. Когда я пытаюсь зарегистрировать пользователя-администратора на установленной версии Discourse, письмо так и не приходит.

Discourse-doctor успешно связывается с SMTP-сервером Oracle, но письмо не отправляется.

Я добавил множество одобренных отправителей на всякий случай: свой адрес администратора, noreply@[домен_форума] и noreply@[основной_домен]. Какой из них является ключевым?

Также я добавил TXT-запись в настройки DNS моего домена с рекомендуемой строкой SPF.

Это было непросто. Если я правильно помню, чтобы это заработало у меня, нужно было изменить файл containers/app.yml:

  ## Если вы хотите установить адрес электронной почты 'От кого' для вашей первой регистрации, раскомментируйте и измените:
  ## После получения первого письма с регистрацией закомментируйте эту строку обратно. Выполнять это нужно только один раз.
  - exec: rails r "SiteSetting.notification_email='noreply@opendiscussion.pw'"

Спасибо за ответ!

К сожалению, это не помогло (да и после пересборки приложения тоже).

Можно спросить, как выглядят ваши TXT-записи?

Вы тоже не раскомментировали настройку «START TLS»?

И что вы сделали с этим письмом? Нужно ли за него платить? (ведь вы говорили, что SMTP не включён)

SMTP включён. Раньше это было не так во всех регионах. Настроить его просто чёртовски сложно… :neutral_face:

Вы знаете, есть ли где-то в Oracle Cloud лог SMTP? Я хочу понять, почему письмо не отправляется, хотя я могу нормально подключиться к SMTP-серверу. Почему у меня нет авторизации или в чём ещё может быть проблема.

У Oracle Cloud есть SMTP-сервис, но он не входит в бесплатный тариф «Always Free». Он очень дешевый (0,085 доллара США за 1000 писем), поэтому я всё равно его использую. Мне пока ничего не начислили.

https://www.oracle.com/cloud/networking/email-delivery.html#pricing

https://docs.cloud.oracle.com/en-us/iaas/Content/Email/Concepts/overview.htm

Извините, вы правы. Я не осознавал, что меня поместили на испытательный срок для платной версии, так как я зарегистрировался на бесплатный тариф.

Есть ли какие-либо бесплатные альтернативные SMTP-сервисы, которые работают с Discourse, при этом оставаясь на Oracle Cloud?

Думаю, остался только Pricing | Mailjet. Очень жаль, что мафия из Кремниевой долины украла бесплатную почту у интернета :smiley:

После 1 месяца попыток запустить пробный аккаунт, когда чат-поддержка заявила, что не может помочь, а поддержка по электронной почте тоже не оказала содействия и ответила лишь один раз, пообещав собрать информацию о моём аккаунте и связаться, но так и не сделала этого…

Я попросил друга создать аккаунт, и всё заработало как по волшебству менее чем за 15 минут.

Затем я попытался установить Discourse и столкнулся с множеством трудностей. Я следовал руководству Oracle по установке Discourse, но по каким-то причинам не мог подключиться к порту 443.

Я попробовал установить Discourse на стандартный образ Ubuntu, но по неизвестным причинам не смог подключиться ни через порт 80, ни через порт 443.

Я вернулся к официальным инструкциям: сначала они не сработали (подключение к обоим портам не удалось), но после перезапуска Docker всё чудесным образом заработало, и подключение к обоим портам установилось.

Таким образом, мой опыт нельзя назвать идеальным, независимо от того, были ли проблемы из-за меня или из-за Oracle.

Но в итоге у меня теперь есть бесплатная, онлайн-версия Discourse, которая, безусловно, не самая быстрая, но работает. :+1:t6:

Для тех, кто хочет следовать тому же руководству, есть небольшая ошибка в части настройки брандмауэра сервера.

Вместо:
sudo firewall-cmd —reload
нужно написать:
sudo firewall-cmd --reload

По умолчанию установка Discourse невозможна, так как подключения к портам 80 и 443 не разрешены. Необходимо разрешить их как в списке безопасности (в панели управления Oracle), так и в брандмауэре экземпляра (через SSH).

Вот как это сделать на стандартной установке Ubuntu (это немного отличается от официального руководства, где используется другой образ Linux).

В панели Oracle:

После создания экземпляра Ubuntu перейдите в Подробности экземпляра и нажмите на ссылку Подсеть:

Нажмите на Список безопасности:

Нажмите Добавить правила входящего трафика, выберите протокол TCP, укажите источник CIDR как 0.0.0.0/0, а диапазон портов назначения как 80,443.
Подтвердите, нажав «Добавить правила входящего трафика».

Проверьте, что правила добавлены в список безопасности:

В командной строке вашего сервера через SSH:

Добавьте эти правила в iptables:

iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

Команда добавит правила в нужное место. Если вы просто добавите их к существующим правилам, не указав номер строки (5), это не сработает, так как они будут перезаписаны предыдущим правилом «отклонить всё».

Сохраните правила, чтобы они остались после перезагрузки:

netfilter-persistent save

Теперь вы можете установить Discourse! :tada:

Привет! Рекомендуете ли вы Oracle Cloud для продакшн-сайта с высокой нагрузкой?
Спасибо.

Я думаю, вы можете разместить небольшое сообщество, если вам и вашим пользователям не так важна скорость работы форума. Но я бы не рекомендовал это, так как можно найти дешевый хостинг (~5 $ в месяц) с гораздо более высокими характеристиками.

@Hector, https://www.opendiscussion.pw всё ещё размещён на бесплатном сервере?

Привет, под дешёвым хостингом за ~5 в месяц вы имеете в виду Droplet от DigitalOcean за 5 ?

Да, например.

Лично мне нравится Hetzner, потому что они недорогие, а их серверы оплачиваются почасово, что отлично подходит для краткосрочных тестов. Но, насколько я знаю, у них есть серверы только в Европе.

Да, всё ещё на бесплатном сервере. Трафик там нулевой, поэтому я не могу сказать, на что он способен. Я также использую его для разработки. Пока всё хорошо.

Для Hetzner VPS мне тоже придется устанавливать LAMP, обновлять сервер и беспокоиться о хакерах и т. д.?

С другой стороны, на Digital Ocean всё уже готово, мне не нужно защищать сервер, верно? Мне нужно только установить и управлять Discourse? В этом ли реальное различие между Digital Ocean и любым другим VPS?

Digital Ocean — это управляемый VPS?

Спасибо!
Деб