Установка Discourse на Debian

Шаг 1. Скачиваем Discourse

mkdir /usr/local/discourse
git clone https://github.com/discourse/discourse_docker.git /usr/local/discourse
cd /usr/local/discourse

Шаг 2. Меняем переносы строк c Windows на Unix

Если этого не сделать, то в дальнейшем при выполнении, например, команды ./launcher bootstrap app получим сбой «bad interpreter».

Шаг 3. Указываем в настроечных файлах нашу корневую папку

По умолчанию настройки рассчитаны на папку /var/discourse
Мы же делаем установку в папку /usr/local/discourse.

find . -type f -exec sed -i 's/\/var\/discourse/\/usr\/local\/discourse/g' {} +

Шаг 4. Настраиваем контейнеры

Шаблон-пример для контейнера: samples/standalone.yml
На основе него создаём по контейнеру на каждый сайт:

containers/discourse-forum.ru.yml

Подробная инструкция: Настройка файла YML для сайта

Шаг 5. Выполняем ./launcher bootstrap для каждого контейнера

Формат команды:

./launcher bootstrap <название файла YML без расширения>

Например, если файл с настройками называется discourse-forum.ru.yml, то команда будет такой:

./launcher bootstrap discourse-forum.ru

Эта команда обрабатывается несколько минут.
В результате будет создана папка, которую Вы указали в настройках секции «volumes» (например, /usr/local/discourse/shared/discourse-forum.ru).
Больше внутри папки /usr/local/discourse ничего не изменится.

Шаг 5. Выполняем ./launcher start для каждого контейнера

Формат команды:

./launcher start <название файла YML без расширения>

Например, если файл с настройками называется discourse-forum.ru.yml, то команда будет такой:

./launcher start discourse-forum.ru

Шаг 6. Настраиваем nginx

nginx надо настроить таким образом, чтобы он переадресовывал запросы в контейнер Docker.
У меня для этого сайта настройки следующие:

upstream discourse_forum_ru {
    server 127.0.0.1:4579;
}
server {
    listen 80;
    server_name discourse-forum.ru;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://discourse_forum_ru;
    }
}
server {
    server_name www.discourse-forum.ru;
    rewrite ^ http://discourse-forum.ru$request_uri? permanent;
}

Обратите внимание, что в секции upstream надо указывать тот же порт, который Вы указывали в секции «expose» файла YML.
После такой настройки и перезапуска nginx Ваш новый сайт на движке Discourse должен уже работать!

Шаг 7. Доступ в административную часть

Discourse отсылает пароль первого администратора по адресу, указанному в графе DISCOURSE_DEVELOPER_EMAILS секции «env» файла YML.
Обратите внимание, что если Вы настроили параметры подключения к почтовому серверу неправильно — то письмо с паролем (как и все другие) к Вам не придёт.
Если Вы используете почтовый сервер Яндекса: то письмо с паролем Вы не получите в любом случае, это нормально. Вам надо сейчас (именно после установки Discourse) указать в качестве почтового адреса отправителя писем-уведомлений реально существующий адрес на домене сайта.
Затем надо добавить администратора вручную.

1 лайк

Если Вы устанавливаете Discourse на маломощный дешёвый сервер (где менее 4 Гб оперативной памяти), то обязательно создайте файл подкачки.
Ваш дешёвый сервер от этого быстрее работать не станет, зато при ресурсоёмких операциях (в частности, при обновлении Discourse) Ваш сервер перестанет падать из-за нехватки оперативной памяти.

1 лайк