Установка Discourse на Ubuntu 22.04

Discourse — это свободная платформа для обсуждений с открытым исходным кодом, рассчитанная на современные требования веба. Её можно использовать как список рассылки, форум и площадку для длительных обсуждений. Discourse предоставляет социальные функции, похожие на Twitter и Facebook, и подходит для сообществ команд, клиентов, фанатов или сторонников.
В этом руководстве показано, как установить Discourse на Ubuntu 22.04 и выполнить базовую настройку для публичного доступа.
Что нужно иметь заранее
- Сервер с Ubuntu 22.04.
- Доменное имя, указывающее на IP сервера.
- Настроенный пароль root (или доступ по sudo).
Краткая методология развёртывания
- Установить Docker CE и зависимости.
- Клонировать официальный репозиторий discourse_docker.
- Запустить скрипт настройки ./discourse-setup и ответить на вопросы.
- Проверить контейнер и доступ через браузер.
Эта последовательность минимизирует ручные правки конфигурации и использует проверённый контейнерный шаблон.
Установка Docker CE
Сначала установите необходимые пакеты:
apt-get install apt-transport-https ca-certificates git curl gnupg -yЗатем загрузите GPG-ключ Docker и сохраните его в /etc/apt/keyrings:
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpgДобавьте репозиторий Docker:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/nullОбновите кэш пакетов:
apt update -yУстановите Docker CE:
apt-get install docker-ce docker-ce-cli containerd.io -yПроверьте установку:
docker --versionОжидаемый пример вывода (на вашей машине версия может отличаться):
Docker version 20.10.18, build b40c2f6Важно: если у вас корпоративный прокси или ограниченный доступ к интернету, убедитесь, что сервер может получать пакеты с download.docker.com и github.com.
Установка Discourse
Создайте каталог для Discourse и клонируйте официальный репозиторий с шаблоном контейнера:
mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourseПерейдите в каталог и запустите скрипт настройки:
cd /var/discourse
./discourse-setupСкрипт задаст вопросы. Пример диалога (заполните своими значениями):
Hostname for your Discourse? [discourse.example.com]: discourse.example.com
Checking your domain name . . .
Connection to discourse.example.com succeeded.
Email address for admin account(s)? [[email protected],[email protected]]: [email protected]
SMTP server address? [smtp.example.com]: smtpl.localhost
SMTP port? [587]: 25
SMTP user name? [[email protected]]: root@localhost
SMTP password? [pa$$word]: password
notification email address? [[email protected]]:
Optional email address for Let's Encrypt warnings? (ENTER to skip) [[email protected]]: [email protected]
Optional Maxmind License key (ENTER to continue without MAXMIND GeoLite2 geolocation database) [1234567890123456]:
Does this look right?
Hostname : discourse.example.com
Email : [email protected]
SMTP address : smtpl.localhost
SMTP port : 25
SMTP username : root@localhost
SMTP password : jethva1981
Notification email: [email protected]
Let's Encrypt : [email protected]
Maxmind license: (unset)
ENTER to continue, 'n' to try again, Ctrl+C to exit: Совет: для публичного сервера используйте рабочие SMTP-данные (например, сервис SendGrid, Mailgun или SMTP-почту хостинга) — иначе регистрация пользователей и уведомления не будут работать.
Проверка контейнера
После успешного запуска проверьте работающие контейнеры:
docker psПример вывода:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb5d5d7b3619 local_discourse/app "/sbin/boot" 44 seconds ago Up 42 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp appЕсли контейнер не запускается, смотрите раздел «Отладка и распространённые ошибки» ниже.
Доступ к веб-интерфейсу
Откройте браузер по адресу http://discourse.example.com (замените на ваш домен). Вы увидите страницу приветствия.

Нажмите кнопку Register и заполните форму администратора.

После регистрации система отправит на указанный e‑mail письмо для подтверждения:

Подтвердите адрес, чтобы завершить создание аккаунта администратора.
Базовая настройка безопасности и сети
- Откройте порты 80 и 443 в брандмауэре (ufw):
ufw allow 80,443/tcp
ufw enable- Включите Let’s Encrypt в диалоге ./discourse-setup, чтобы получить бесплатный сертификат.
- Для корпоративной среды рекомендуется запустить Discourse за обратным прокси (nginx) только при необходимости. Стандартный шаблон уже настраивает порты 80/443.
Важно: резервное копирование — настраивайте автоматическое резервное копирование и храните его вне сервера.
Отладка и распространённые ошибки
- DNS не указывает на сервер — проверьте A/AAAA записи у регистратора.
- SMTP не доставляет письма — проверьте логины, порты и политику провайдера (часто блокируют порт 25).
- Контейнер падает при старте — смотрите логи:
docker logs app- Ошибки Let’s Encrypt — убедитесь, что домен доступен по HTTP и порты 80/443 не блокируются.
Ручное восстановление или откат
Если настройка ./discourse-setup прошла некорректно, можно пересоздать контейнеры:
cd /var/discourse
./launcher rebuild appЭто восстанавливает контейнер с текущей конфигурацией в файле containers/app.yml.
Рекомендации по безопасности
- Используйте отдельный почтовый SMTP-аккаунт с сильным паролем.
- Ограничьте доступ к серверу по SSH ключам. Отключите вход по паролю.
- Включите регулярные обновления ОС и Docker.
- Настройте резервное копирование базы данных и загрузок на внешнее хранилище (S3 или другое).
Роли и чеклисты (быстро)
Администратор:
- Зарегистрировать домен и привязать DNS.
- Установить Docker и Discourse.
- Настроить SMTP.
- Активировать Let’s Encrypt.
Оператор (DevOps):
- Настроить бэкапы и мониторинг.
- Обновлять Docker и контейнеры.
- Автоматизировать восстановление.
Модератор:
- Настроить правила сообщества.
- Проверить настройки уведомлений и входа.
Критерии приёмки
- Сайт доступен по указанному домену и отдаёт страницу Discourse.
- Административная регистрация проходит и подтверждается по e‑mail.
- Контейнер app отображается в docker ps и слушает порты 80/443.
- Ежедневное резервное копирование настроено и тестировано.
Тесты и приёмочные сценарии
- Открыть главную страницу — ожидается HTTP 200.
- Зарегистрировать нового пользователя и подтвердить почту.
- Отправить тестовое письмо через SMTP и убедиться в доставке.
- Проверить доступность статических файлов и изображений.
Короткий план действий для быстрой установки (playbook)
- Настроить сервер и DNS.
- Установить Docker (команды выше).
- Клонировать /var/discourse и запустить ./discourse-setup.
- Проверить docker ps и открыть сайт.
- Настроить резервное копирование.
Заключение
Поздравляем — вы установили Discourse на Ubuntu 22.04. Теперь можно настраивать категории, права доступа и темы сообщества. Регулярно проверяйте логи, обновляйте компоненты и делайте резервные копии.
Важно: если планируете крупное сообщество, рассмотрите выделение отдельной базы данных и вертикальное масштабирование (больше CPU/памяти, быстрые диски).
Ключевые ресурсы: официальный репозиторий https://github.com/discourse/discourse_docker и документация Discourse.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента