Как разместить более 1 форума Discourse на 1 VPS?

Привет! Я хотел бы узнать, можно ли разместить более одного экземпляра Discourse на одном VPS. Так как я новичок, не могли бы вы дать чёткие пошаговые инструкции? Спасибо.

Да, вы можете!

Однако это продвинутая тема, и вам необходимо знать следующие базовые концепции:

  • Что такое обратный прокси?
  • Какой обратный прокси мне использовать?
  • Как настроить виртуальный хост на обратном прокси?
  • Как настроить виртуальный хост в качестве обратного прокси для моего веб-приложения?
  • Как настроить веб-приложение для работы с обратным прокси?
  • Как настроить SSL при использовании обратного прокси?

@Aiden12114, знакомы ли вы с этими концепциями?

Если да, то вы точно готовы к работе!

К сожалению, я понятия не имею, что это всё означает :rofl:

У вас есть два варианта:

  • Мультисайт — более сложный: Multisite configuration with Docker
  • Несколько контейнеров — чуть сложнее (требует обратного прокси и т. д., как упоминалось выше), дороже.
    Следуйте инструкциям по настройке Discourse без использования скрипта ./discourse-setup (cp samples/standalone.yml containers/app2.yml) и переименуйте volumes в что-то отличное от standalone.

Я считаю важным поделиться несколькими техническими фактами с теми, кто заинтересован в этой теме или принимает решение по ней:

  • Один контейнер Discourse с несколькими «сайтами» в одном контейнере или
  • Отдельные контейнеры для каждого «сайта» Discourse.

Если вы используете подход «один контейнер, несколько сайтов» и у вас запущено 5 сайтов Discourse (или даже 10), то при пересборке вашего контейнера или возникновении любой проблемы с контейнером все 5 (или 10) сайтов Discourse одновременно перестанут работать (станут недоступны). Это происходит потому, что один контейнер поддерживает все «сайты».

Если вы используете подход «несколько контейнеров» и у вас запущено 5 сайтов Discourse (или 10), то при пересборке контейнера для одного из ваших сайтов или возникновении любой проблемы с контейнером сайта перестанет работать только 1 сайт Discourse (станет недоступен). Это происходит потому, что один контейнер поддерживает один «сайт» (или два, если вы запускаете отдельные контейнеры для данных и приложения для каждого сайта, как это делаем мы).

Кроме того, благодаря тому, как Docker использует наложения и разделяет все неизменяемые слои для каждого контейнера (при использовании рекомендуемого драйвера хранения Docker — overlay2) между контейнерами, уникальным для каждого контейнера остаётся лишь тонкий слой для записи (для файлов журналов, кэша и т. д.), поэтому использование нескольких контейнеров не требует значительного дополнительного дискового пространства благодаря принципу работы OverlayFS.

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

Очевидно, что выбор подхода остаётся за каждым системным администратором. На основе нашего анализа мы всегда выбираем подход с несколькими контейнерами по причинам, изложенным выше (а также по некоторым другим, которые ещё не обсуждались).

Надеюсь, это поможет.