Установка Discourse на выделенном VPS. Процесс с FAQ

Пошаговое руководство для новичков по установке Discourse. От выбора подходящего сервера до его настройки, SMTP, DNS и выполнения всего в правильном порядке. Из-за такого ручного процесса с множеством ветвлений и опций у меня много сомнений, и я слышал, что многие настройки идут не так, если не действовать осторожно. Я хочу сделать всё правильно и буду признателен, если кто-нибудь сможет меня поправить. Я пройду через столько шагов, сколько смогу, и остановлюсь, если застряну. Эта страница может быть полезной, если собрать все основные сомнения в одном месте

Цель: Установка Discourse на самохостинговом VPS для форума, начинающего с 100 пользователей/мес

1) Из двух доступных официальных руководств я выбираю простое. С какими проблемами я могу столкнуться? Неужели это плохо для будущей гибкости/масштабирования?
Простая базовая установка за 10 минут: Руководство по установке Docker для новичков
Мощная, гибкая установка на большом/нескольких серверах: Продвинутое руководство по установке Docker

2) Это хороший порядок настройки? i) Настройка и аренда VPS > ii) SMTP > iii) Домен и DNS > iv) Установка Discourse

3.1) Насчёт домена и DNS, у меня уже есть сайт с моим кастомным доменом. Не уверен, что выбрать; поддомен или дочерний nameserver? Посмотрел, но не понимаю

3.2) Хотя сейчас нет, если потребуется, форум Discourse можно подключить к чистому домену, например example.com, верно (если он, конечно, не используется)? Не обязательно использовать поддомен, например forum.example.com, верно? Почему в руководстве Discourse сказано только “Создайте DNS-запись A, указывающую ваш поддомен (например, forum.example.com) на IP-адрес вашего сервера”

4.1) Насчёт SMTP: Полностью запутался. Насчёт входа пользователей, вот моя цель Connect User logins from my Wix site for my Discourse forum Чтобы это обеспечить, что мне нужно сделать?
4.2) Я ещё не настроил бизнес-почту, но могу сделать это сейчас через Hostinger. Имеет ли это большое отношение к SMTP? Насчёт SMTP я слышал на этом форуме про MailGun, MailJet и Brevo. Что это значит?

5) Выбор и настройка VPS: Contabo и Hetzner были самыми дешёвыми, при этом казались довольно надёжными. Если я выберу более дешёвый Contabo, не упущу ли я что-то полезное? Они безопасны, верно? (Я хотел сравнить всю конфигурацию с Hetzner, но там даже не показывают опции конфигурации без ввода данных, дебетовой карты и проверки AC?? Максимум, что у меня есть, это скриншоты от @Lilly)
5.1) Панель: Contabo показывает, что включены Webmin и Webmin + LAMP. cPanel показан как платная добавка. Я слышал про cPanel, мне это не нужно, верно?
5.2) ОС: Contabo показывает, что включён Ubuntu, без каких-либо уточнений, этого достаточно? (Конфигурация Digital Ocean показывает опции рядом с их Ubuntu, например 24.04 (LTS) x64

5.3) Показано множество приложений как включённых. Если вы найдёте проблемы с чем-то, дайте знать

5.4) Подходят ли следующие настройки по умолчанию? Я могу обойтись без добавок, верно?

5.5) IPv6 не показан в конфигурации, хотя на странице их плана VPS рекламируется следующее: “Выделенные IPv4 и IPv6 адреса включены в каждый план”. Интересно, есть ли это или нет
5.6) Слышал немного негатива насчёт Contabo, что думают люди здесь, которые пользовались Contabo?

5.7) Следующие хорошие характеристики являются минимально доступными и по отличным ценам! Просто чтобы знать, (на случай смены VPS) раз Discourse рекомендует 2GB, разве 4 не лишние? Что такое снимок?

Screenshot 2026-07-18 004447

Если вы новичок, следуйте руководству для начинающих. Не забегайте вперед.

Лично я сначала убеждаюсь, что мой SMTP работает корректно (у меня есть ключи API и прочее), а DNS указывает на мой IP, и только потом завершаю настройку Discourse, потому что мастер установки будет ругаться, если DNS настроен не на 100% правильно, и тогда вы останетесь ни с чем.

Не совсем понятно, что ваш провайдер имеет в виду. Возможно, они имеют в виду “поддомен”? В этом случае добавьте IPv4 вашего VPS в него.

Да, адрес есть адрес. Это может быть x.example.com, example.com, x.y.example.com или даже example.com/x/ (при некоторой продвинутой настройке).

Вам понадобится SMTP для сводок, уведомлений администратора и т. д., независимо от использования DiscourseConnect.

Выглядит нормально.

Если вы используете Cloudflare, IPv6, вероятно, не важен. Если вы не используете никаких прокси, то пользователи с сетью только IPv6 не смогут зайти на ваш сайт, но это относительно редкость в наши дни (многие провайдеры дают “выделенный” IPv6 и общий IPv4, через который они все равно могут маршрутизировать трафик).

200 Мбит/с — это не очень быстро, но остальное идеально подходит для форума малого-среднего размера. Рекомендация в 2 ГБ RAM выглядит довольно странно, поэтому 8 ГБ вам послужат хорошо. Я запускаю свой небольшой сайт на LXC (меньше накладных расходов) с 8 ГБ/6 vCPU, и использование ресурсов у меня низкое, скачки CPU достигают около 50-60% во время пересборки.

Снимки (snapshots) — это по сути точки восстановления для вашей ВМ, так что если что-то пойдет не так, вы сможете откатиться. Не очень полезны, когда у вас есть частые резервные копии Discourse на внешнем хранилище (например, на R2 или чем-то подобном), но это все равно “приятная опция” на всякий случай.

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

удачи в вашем новом начинании.

Пока даже не подходите к этому. Ограничьтесь основами.

  1. Зарегистрируйте доменное имя с DNS-серверами, например, на Namecheap. Или, раз у вас уже есть домен, который вы хотите использовать:

Используйте поддомен — это стандартный способ установки Discourse, чтобы адрес выглядел примерно как forum.yoursite.com.

  1. Если вы не хотите использовать DiscourseID, подключите сервис для отправки транзакционных писем по SMTP (например, Mailgun или Resend). Resend бесплатный, и я использую его.

  1. Настройте VPS-сервер (дроплет) с доступом по SSH у выбранного вами провайдера VPS.
  2. Установите Discourse, следуя скрипту из руководства.

Как уже говорилось в других местах, скорее всего, вы не сможете этого сделать, так как у вас нет корпоративного аккаунта Wix. Пожалуйста, сначала проведите исследование и ознакомьтесь с темой. Умение читать — обязательное требование для хорошего администратора Discourse.

Единым входом (SSO) вам сейчас даже думать не стоит, так как вы все еще учитесь настраивать самую базовую самохостинговую установку.

Чтобы отредактировать файл app.yml после завершения первоначальной настройки, введите следующие команды в терминале SSH на сервере:

cd /var/discourse
nano containers/app.yml

Пример файла app.yml находится здесь:

Я бы сказал, что не стоит опускаться до нижнего предела в 2 ГБ, если только вы не запускаете небольшой форум с не очень большим количеством пользователей.

Нет, cPanel не требуется.

Предоставляет ли ваша корпоративная почта сервис для отправки транзакционных писем? Я знаю, что некоторые этого не делают. Безопаснее использовать такие сервисы, как Mailgun, Brevo, Amazon SES и т. д.

Другие уже подробно расписали этот вопрос, но я приведу ссылку на документацию по этой теме: Configure your hosted Discourse site to run at the root or apex domain (e.g. example.com)

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

Снимок — это по сути полная резервная копия всего VPS. Вы по-прежнему можете регулярно создавать резервные копии Discourse на случай возникновения проблем, если на VPS размещен только Discourse.

Ох… это было очень важно для меня и стало одной из причин, по которой я выбрал самостоятельный хостинг. Если это можно будет решить позже без особых трудностей, то ладно, но я беспокоюсь, не станет ли эта стандартная настройка препятствием для этого в будущем? Нужно ли мне делать что-то по-другому уже сейчас, чтобы обеспечить такую функциональность, даже если я не буду настраивать её прямо сейчас?
Форум — это лишь расширение моего основного сайта, и они должны быть объединены. Если они будут разделены, это создаст у меня множество проблем.
Не знаю, является ли SSO единственным решением, но я хочу минимизировать разделение между моим сайтом на Wix и форумом Discourse.

Как я уже сказал выше:

а здесь вы написали:

Что вы знаете о MiniOrange? Бесплатный план, похоже, ограничен лишь несколькими пользователями, поэтому он может оказаться для вас дорогим — $49 в месяц за базовый план:

Исследование и внимательное чтение документации имеют решающее значение при планировании того, чего вы хотите достичь.

Вы умеете писать скрипты Velo для Wix?

возможно, решение на JavaScript

Думаю, вам потребуется настроить собственный конечный пункт API (endpoint) непосредственно на вашем сайте Wix для получения запросов на вход от Discourse. Похоже, что это потребует JavaScript-кода в модуле Velo в файле с именем http-functions.js.

Этот код будет перехватывать пользователя из Discourse, перенаправлять и проверять его активную сессию входа в Wix, генерировать подписанный пакет данных и, надеюсь, безопасно возвращать его на форум.

Что-то вроде этого, возможно:

import { ok, redirect, badRequest } from 'wix-http-functions';
import { currentMember } from 'wix-members-backend';
import crypto from 'crypto';

// выберите безопасную случайную строку в качестве секрета 

const DISCOURSE_SECRET = "YOUR_SUPER_SECRET_STRING_HERE"; 

export async function get_discourseSso(request) {
    const query = request.query;
    const payload = query.sso;
    const sig = query.sig;

    if (!payload || !sig) {
        return badRequest({ body: "Отсутствуют параметры SSO" });
    }

    // проверяем входящую подпись от Discourse

    const computedSig = crypto.createHmac('sha256', DISCOURSE_SECRET).update(payload).digest('hex');
    if (computedSig !== sig) {
        return badRequest({ body: "Неверная криптографическая подпись" });
    }

    // проверяем, вошел ли пользователь в Wix

    const member = await currentMember.getMember({ fieldsets: ['FULL'] });
    
    // разбираем входящий пакет данных, чтобы получить уникальный трекер nonce

    const decodedPayload = Buffer.from(payload, 'base64').toString('ascii');
    const params = new URLSearchParams(decodedPayload);
    const nonce = params.get('nonce');

    if (!member) {
        // Если не вошел, заставляем его сначала войти в Wix, а затем вернуться сюда
        const loginUrl = `https://yourwixsite.com{encodeURIComponent(request.url)}`;
        return redirect(loginUrl);
    }

    // формируем пакет данных пользователя для Discourse

    const userPayload = `nonce=${nonce}&email=${encodeURIComponent(member.loginEmail)}&external_id=${member._id}&username=${encodeURIComponent(member.profile.nickname || member._id)}&name=${encodeURIComponent(member.contactDetails.firstName + ' ' + member.contactDetails.lastName)}`;

    // шифруем и подписываем пакет данных пользователя
    const base64Payload = Buffer.from(userPayload).toString('base64');
    const returnSig = crypto.createHmac('sha256', DISCOURSE_SECRET).update(base64Payload).digest('hex');

    // перенаправляем его обратно в Discourse как вошедшего пользователя
    const discourseReturnUrl = `https://yourforum.com{encodeURIComponent(base64Payload)}&sig=${returnSig}`;
    return redirect(discourseReturnUrl);
}

Вам также нужно будет заменить там URL вашего форума.

Также потребуется некоторая конфигурация DiscourseConnect, но не делайте ничего из этого, пока у вас не будет запущенного и работающего без ошибок собственного self-hosted форума.

Я не эксперт в этих вещах и почти ничего не знаю о Wix, поэтому никаких гарантий, что это рабочее решение. Я просто привожу пример предложенного метода, чтобы продемонстрировать сложность задачи.

Какое бы ИИ ни писало это, оно явно не понимает, что OpenID/SAML и Discourse Connect — это совершенно разные вещи, поэтому я бы не доверял и остальному, что оно говорит.

Спасибо всем за ответы пока что :folded_hands:

При наличии более 2 представителей я проверил и подтвердил это. Их бизнес-почта покрывает SMTP-потребности Discourse, без необходимости использования провайдера вроде MailGun. Они также сделали оговорку, указав, что это не предназначено для маркетинга или массовой рассылки.
Основные ограничения их тарифа Business Starter (годовой договор по 0,79/мес):

  • Лимит отправки в день: 500 писем в день.
  • Максимальное количество получателей на письмо: 200 получателей.
  • Лимит отправки в месяц: Нет, только дневной лимит.
    Полные спецификации, включая ограничения IMAP/SMTP: Параметры и ограничения почты Hostinger
Краткое резюме чата по этому поводу 👆 с деталями, если кто-то хочет проверить подробнее

Вижу, что вы рассматриваете тариф бизнес-почты Hostinger для ваших SMTP-потребностей Discourse и хотите убедиться, что он покрывает всё необходимое, без необходимости использовать Mailgun. С удовольствием разберусь в этом…
Вы можете использовать SMTP бизнес-почты Hostinger для настройки вашего Discourse, и для обычной деловой переписки и стандартных уведомлений форума вам не понадобится отдельный провайдер, такой как MailGun.
Однако важно иметь в виду, что наш SMTP не предназначен для маркетинга или массовой рассылки. Он в основном предназначен для деловой переписки. Если вы планируете отправлять высоконагруженные маркетинговые кампании или крупные транзакционные рассылки, специализированный сервис, такой как MailGun, всё же будет лучшим выбором для этих конкретных нужд.

Если я настрою бизнес-почту через Hostinger, но в будущем мне понадобится массовая рассылка, смогу ли я просто использовать, например, MailGun, не перемещая и не регистрируя новый адрес электронной почты в MailGun?

Это будет зависеть от необходимой настройки Mailgun. Дайте мне уточнить…
Если вы будете отправлять письма только через SMTP от Mailgun, вам потребуется добавить дополнительные TXT-записи. MX-записи не изменятся, поэтому вы сможете продолжать получать письма на тариф бизнес-почты Hostinger, пока используете его.

Не совсем понял это, можете, пожалуйста, объяснить подробнее?

Представьте вашу почту как физический почтовый ящик:
Получение (сам ящик): Ваши письма приходят в Hostinger благодаря вашим MX-записям. Вы оставите их в точности такими же, поэтому вы продолжите получать всю свою почту в своем почтовом ящике Hostinger.
Отправка (почтальон): У вас может быть более одного способа отправки почты. Добавив TXT-запись (в частности, для SPF и DKIM) к вашему домену, вы по сути даете Mailgun «разрешение» отправлять почту от вашего имени.
Это означает, что вам не нужно перемещать/регистрировать новый адрес электронной почты в Mailgun. Вы можете оставить свой профессиональный почтовый ящик в Hostinger для ежедневной деловой переписки и просто использовать Mailgun как «двигатель отправки» для высоконагруженных уведомлений форума или маркетинговых писем, когда будете готовы.


Да.. MiniOrange, вероятно, не то, что я ищу, исходя с их сайта, это кажется сторонним IdP. Я пытаюсь использовать свою существующую базу данных Wix в качестве IdP.

[quote=“Lilly, post:8, topic:407922”]
знаете ли вы, как писать Velo-скрипт для Wix?
[/quote]\nНе совсем уверен, что вы имеете в виду под скриптом, но я много занимался фронтенд- и бэкенд-кодингом на Velo в Wix, создал множество функций с помощью кода Velo самостоятельно, с помощью ИИ и туториалов, но я новичок. Я бросил взгляд на ваш код, мне бы очень хотелось попробовать его после установки. Что касается форума Wix, он хорош (хотя и не такой живой, как здесь), и на этот вопрос пока не дан ответ.

Пока что я: :check_mark: настроил почту через Hostinger для SMTP (обновил DNS-записи для этого, такие как MX, CNAME и TXT на моем Wix) :check_mark: заказал VPS и жду его настройки.

Не как установка какого-то мобильного приложения, ха-ха.

И вам действительно, действительно стоит делать собственные резервные копии. И хранить эти копии вне площадки. Это часть работы системного администратора. Если вы оставляете всё на усмотрение хостинг-провайдера, вы рискуете потерять всё, а ценность вашего бизнеса для провайдера минимальна. Ценность ваших данных для вас и вашего сообщества значительна, если вы строите настоящее сообщество, где людям небезразличны их сообщения и отношения.

Создание сообщества — это принятие ответственности: если у вас нет навыков для этой ответственности, вы должны передать их на аутсорсинг. Это означает оплату услуг уважаемой компании, которая будет заботиться о вас: безопасность, обслуживание, непрерывность, ремонт и восстановление.

Как часто, по-вашему, следует делать снимки состояния? Раз в месяц с еженедельными резервными копиями или два раза в неделю? Или это избыточно?

Лично я никогда не использовал снимки (снапшоты). (Мне кажется, что это услуга за дополнительную плату, и я не уверен в её полезности, когда работает активная база данных.)

Я думаю о частоте резервного копирования так: как я буду себя чувствовать в момент, когда мне придётся восстанавливать данные из резервной копии? Если бы я потерял месяц переписок и материалов участников? Это было бы очень неприятно. Я чувствовал бы ответственность перед сообществом, ведь я позволил их работе пропасть.

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

Из-за негативного опыта с услугами Contabo я рассматриваю альтернативу VPS от OVHcloud. Но если это не подойдет, мне придется остаться с Contabo.

1) Если выбрать дистрибутив с приложением, отображается только этот ограниченный вариант. Docker без Ubuntu как опции. Так что мне стоит избегать этого и выбрать дистрибутив, показывающий только Ubuntu? Значит ли это, что я смогу позже установить Docker, или это слишком сложно для меня? (если это решающий фактор, проигнорируйте следующие вопросы)

2) Что касается резервных копий, это очень привлекательно: управляемые бесплатные ежедневные бэкапы? здорово, правда?

  1. Вопросы по спецификациям OVHcloud по сравнению с Contabo:
    3.1) Достаточно ли 2 vCores?
    3.2) Стоит ли уточнить про порт? (у Contabo было 200 Мбит/с)
3.3) Достаточно ли пропускной способности? Что касается этого, вот сравнение Contabo и OVH:

Я использую OVHcloud с этими точными характеристиками для запуска своего небольшого форума, и я использую Debian, и это работает как швейцарские часы.

Ого! Приятно это слышать :slight_smile: Пока что я видел так много Ubuntu, что оно казалось обязательным. В официальном руководстве также рекомендуется именно Ubuntu, поэтому я задумался, не вызовет ли Debian больше трудностей для новичка, такого как я (в настройках/модификациях/последних обновлениях/обеспечении совместимости)? Или это не проблема?

Упростите себе жизнь. Используйте Ubuntu.

Стандартная установка занимает 30 минут :slight_smile:

(сообщение удалено автором)

(сообщение удалено автором)

Не выбирайте образ с предварительно установленным Docker. Просто возьмите стандартный Ubuntu или Debian, скрипт сделает всё остальное.

Я очень не люблю Ubuntu, и, честно говоря, не уверен, в чём разница с Debian (кроме того, что он гораздо более перегружен), и почему его так настоятельно рекомендуют для Discourse вместо обычного Debian. Раз у вас, судя по всему, мало опыта, просто следуйте стандартному руководству по установке Ubuntu.

Спасибо за разъяснения. Будет ли всё в порядке, если я

[quote=“Gid, post:15, topic:407922”]
выберу дистрибутив, в котором показан только Ubuntu? Значит ли это, что позже я смогу установить Docker, или это слишком сложно для меня?
[/quote]\nПросто тот факт, что Docker не установлен заранее, не должен создавать мне дополнительных затрат или проблем с его обслуживанием в будущем, верно?

Почти забыл упомянуть ещё одну вещь: в отличие от других VPS, здесь нет панели управления. Можно ли это исправить быстро и бесплатно?