Гид по технологиям

Установка Discourse с Docker на Ubuntu 20.04

• 5 min read • DevOps • Обновлено 24 Nov 2025
Установка Discourse на Ubuntu 20.04 с Docker
Установка Discourse на Ubuntu 20.04 с Docker

Обложка: интерфейс Discourse

Discourse — бесплатная платформа с открытым исходным кодом для создания форумов и списков рассылки. Приложение написано с использованием Ember.js и Ruby on Rails и хранит данные в PostgreSQL. Discourse поддерживает модульную интеграцию, социальную авторизацию, двухфакторную аутентификацию, API и мощные инструменты модерирования.

В этой инструкции показан практический путь установки на сервер с Ubuntu 20.04 с использованием официального образа Discourse в Docker.

Краткий обзор процесса

  1. Установить Docker и необходимые утилиты.
  2. Клонировать репозиторий discourse_docker в /opt/discourse.
  3. Запустить скрипт ./discourse-setup и ввести hostname, данные SMTP и e‑mail для Let’s Encrypt.
  4. Проверить работу сайта по HTTPS и подтвердить учётную запись администратора.

Предварительные условия

  • Сервер с Ubuntu 20.04.
  • Доменное имя, указывающее на сервер (A/AAAA запись).
  • SMTP‑сервер для исходящей почты (например, Gmail SMTP можно использовать при тестировании).
  • Пароль root или привилегированный sudo-пользователь.

Важно: для успешной выдачи сертификата Let’s Encrypt должны быть открыты порты 80 и 443.

Установка Docker

Установите Docker из стандартного репозитория Ubuntu:

apt-get update
apt-get install docker.io -y

Запустите сервис Docker и включите автозапуск:

systemctl start docker
systemctl enable docker

Проверьте статус: systemctl status docker.

Загрузка Discourse

Создайте рабочую директорию и клонируйте официальный репозиторий контейнеров Discourse:

mkdir /opt/discourse
git clone https://github.com/discourse/discourse_docker.git /opt/discourse

Установите пакет net-tools (для удобства работы с сетевыми утилитами):

apt-get install net-tools -y

Установка и конфигурация Discourse

Перейдите в каталог и запустите установочный скрипт:

cd /opt/discourse
./discourse-setup

Скрипт проверит свободные порты и ресурсы, затем попросит ввести следующие данные:

  • Hostname для Discourse (полное доменное имя).
  • Email администратора.
  • Адрес SMTP, порт, имя пользователя и пароль.
  • Опциональный email для предупреждений Let’s Encrypt.

Пример интерактивного диалога, который покажет скрипт:

Hostname for your Discourse? [discourse.example.com]: discourse.example.com
Email address for admin account(s)? [[email protected]]: [email protected]
SMTP server address? [smtp.example.com]: smtp.gmail.com
SMTP port? [587]:
SMTP user name? [[email protected]]: [email protected]
SMTP password? [pa$$word]: your-smtp-password
Optional email address for Let's Encrypt warnings? (ENTER to skip) [[email protected]]:

После подтверждения скрипт запустит сборку и развертывание контейнера. В процессе вы увидите вывод Docker run и идентификатор запущенного контейнера.

Важно: скрипт генерирует файл конфигурации containers/app.yml внутри /opt/discourse. Для внесения изменений редактируйте /opt/discourse/containers/app.yml и применяйте команду ./launcher rebuild app.

Доступ к веб-интерфейсу

Откройте браузер и перейдите по адресу https://ваш-домен.

Страница Discourse после установки

Нажмите кнопку Register или Зарегистрироваться и создайте администратора.

Форма регистрации в Discourse

Введите имя пользователя, пароль и завершите регистрацию. На указанный e‑mail придёт письмо с подтверждением.

Подтверждение e-mail

Проверьте почту и активируйте аккаунт.

Критерии приёмки

  • Сайт доступен по HTTPS на вашем домене.
  • Сертификат Let’s Encrypt выдан и установлен без ошибок.
  • Администратор зарегистрирован и может войти в панель управления.
  • Отправка писем работает (регистрация/сброс пароля проходит успешно).

Контрольный список перед запуском

  • DNS A/AAAA запись указывает на IP сервера.
  • Порты 80 и 443 открыты в firewall/маршрутизаторе.
  • Docker запущен и работает.
  • У вас есть учетные данные SMTP.
  • Резервная стратегия (backup) настроена.

Ролевые чек-листы

Администратор:

  • Создать учётную запись администратора.
  • Настроить основные категории и правила модерации.

DevOps:

  • Настроить автоматические бэкапы PostgreSQL и файлов /shared.
  • Обеспечить мониторинг диска и памяти.
  • Обновлять Docker и контейнеры по расписанию.

Модератор:

  • Проверить правило спама и группы доверия.
  • Настроить автоматические предупреждения и блокировки.

Мини-методология развёртывания (шаги)

  1. Подготовка сервера: обновление пакетов, установка Docker.
  2. Размещение репозитория /opt/discourse.
  3. Запуск ./discourse-setup и ввод конфигурации.
  4. Проверка логов ./launcher logs app при ошибках.
  5. Функциональное тестирование: регистрация, письма, вход.
  6. Настройка бэкапов и политики обновлений.

Когда установка может не сработать и как исправить

  • Проблема: Порты 80/443 заняты. Решение: остановите сервисы, использующие эти порты (nginx, apache) или смените их конфигурацию.
  • Проблема: DNS не указывает на сервер. Решение: проверьте записи DNS и дождитесь их распространения.
  • Проблема: SMTP не отправляет почту. Решение: проверьте правильность учетных данных, логирование почты и ограничения провайдера (Gmail может ограничивать доступ из нестандартных мест).
  • Проблема: Let’s Encrypt не выдаёт сертификат. Решение: убедитесь, что домен резолвится, и порты открыты; при необходимости используйте временно выключенный firewall.

Рекомендации по безопасности

  • Обновляйте хост и Docker регулярно.
  • Используйте firewall (ufw): откройте только 80 и 443 и SSH порт.
  • Настройте fail2ban для защиты SSH и панелей.
  • Храните бекапы вне хоста (облачное хранилище или отдельный сервер).
  • Отключите прямой доступ к базе данных из внешней сети.

Бэкапы и сопровождение

Discourse хранит данные в PostgreSQL и в директории /var/discourse/shared/standalone. План резервирования должен включать:

  • Полные регулярные дампы базы данных (pg_dump или горячие резервные копии).
  • Копирование каталога /var/discourse/shared/standalone (attachments, uploads, ssl).
  • Тест восстановления на отдельном стенде.

Альтернативные подходы

  • Хостинг Discourse у стороннего провайдера (Discourse.org предлагает платный хостинг) — быстро, но дороже.
  • Развёртывание на VPS с Docker Compose вместо стандартного скрипта — даёт больше контроля, но требует дополнительных настроек.

Резюме

Вы научились устанавливать Discourse на Ubuntu 20.04 с помощью официального Docker-скрипта. Основные шаги: подготовка сервера, установка Docker, клонирование репозитория, интерактивная настройка и проверка работы сайта. Не забудьте настроить бэкапы, мониторинг и базовые меры безопасности.

Важно: если что-то идёт не так, смотрите логи контейнера (./launcher logs app) и проверяйте состояние сети и DNS.

Часто задаваемые вопросы

Q: Можно ли использовать Gmail SMTP? A: Да, Gmail SMTP можно использовать, но учитывайте ограничения безопасности Google. При необходимости настройте пароль приложения и включите доступ для менее безопасных приложений или используйте OAuth.

Q: Как изменить память или число рабочих процессов? A: Отредактируйте /opt/discourse/containers/app.yml и измените параметры, затем выполните ./launcher rebuild app.

Q: Как сделать резервную копию? A: Используйте встроенные инструменты Discourse для бэкапов и дополнительно делайте дампы PostgreSQL и копии каталога /var/discourse/shared/standalone.


Автор: инструкция адаптирована для локальной установки на Ubuntu 20.04. Если нужны команды для автоматизации CI/CD или шаблон playbook Ansible — могу подготовить.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро