🇨🇳 Официальное руководство по установке Discourse | Установка облачной платформы Discourse

Этот документ представляет собой перевод страницы по адресу discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub.

Оригинальный текст перевода опубликован на: Discourse 云平台安装 - Discourse - iSharkFly. Приглашаем принять участие в обсуждении.

Установка на облачной платформе

Установка Discourse на облачной платформе обычно занимает не более 30 минут, даже если у вас нет никаких знаний о Rails или Linux shell. Ниже описан процесс установки через провайдера DigitalOcean, однако все шаги могут быть выполнены на любой облачной платформе, совместимой с Docker, а также на локальном сервере.

:bell: Если у вас нет даже 30 минут? Вы можете обратиться в сообщество Discourse за помощью в установке. Сообщество Discourse взимает единовременную плату в размере 150 долларов США. Нажмите здесь, чтобы приобрести услугу.

Подготовка перед установкой

Доменное имя

:bell: Discourse не может работать по IP-адресу. У вас должно быть доменное имя или поддомен для установки, например example.com.

  • Если у вас уже есть доменное имя, вы можете выбрать любой поддомен для установки, например discourse.example.com, talk.example.com или forum.example.com, чтобы развернуть ваш экземпляр Discourse.
  • Если у вас еще нет доменного имени, вы можете посетить сайт NameCheap для поиска подходящего домена или просто выполните поиск в Google по запросу лучшие регистраторы доменных имен, чтобы выбрать регистратора на свой вкус.
  • У вас должен быть доступ к панели управления DNS. После покупки доменного имени вам также потребуется настроить DNS. Для вашего сайта Discourse вам нужно создать A-запись в вашем DNS, которая будет указывать ваше доменное имя на определенный IP-адрес. Обычно это IP-адрес сервера, который вы приобрели на первом шаге.

Электронная почта

:warning: Система электронной почты играет критически важную роль в процессе создания пользователей в Discourse. Если вы не настроили SMTP-сервер электронной почты до установки Discourse, ваш установленный Discourse не сможет работать, и вы не сможете войти в систему (У ВАС БУДЕТ НЕИСПРАВНЫЙ САЙТ)!

  • Если у вас уже есть свой SMTP-сервер электронной почты, вы можете сразу использовать имеющиеся у вас данные конфигурации.
  • У вас еще нет сервера электронной почты? Посетите страницу Рекомендуемые серверы электронной почты для Discourse.
  • Чтобы обеспечить корректную доставку ваших писем, вы должны добавить в DNS действительные записи SPF и DKIM. Обратитесь к документации вашего провайдера электронной почты, чтобы узнать, как настроить эту информацию.

Согласно нашему опыту, для установки Discourse необходимо наличие рабочего доменного имени и сервера электронной почты. В случае использования в Китае вы можете воспользоваться корпоративной почтой, предоставляемой Alibaba Cloud или Tencent Cloud. Обычно мы рекомендуем использовать зарубежные почтовые серверы, такие как AWS SES или MailGun — отличные сервисы, для которых может потребоваться международная кредитная карта для верификации. Однако этот шаг обязателен, иначе установка Discourse не будет завершена.

Установка

Создание нового облачного сервера

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

Если вы выберете сервер, расположенный внутри материкового Китая, скорее всего, вы столкнетесь с проблемами сети. В этот перевод добавлен отдельный раздел по решению проблем с сетью.

  • По умолчанию текущая LTS-версия операционной системы Ubuntu отлично работает. Минимальные требования: 64-битная операционная система Linux с ядром, обновленным до последней версии.
  • По умолчанию 1 ГБ оперативной памяти обычно достаточно для небольших сообществ Discourse. Однако для крупных сообществ мы рекомендуем 2 ГБ оперативной памяти.
  • По умолчанию центр обработки данных в Нью-Йорке является хорошим географическим выбором для пользователей из Северной Америки и Европы. Если ваши пользователи в основном находятся в других регионах, выберите центр обработки данных, расположенный ближе к ним.
  • Введите доменное имя discourse.example.com, чтобы создать Droplet (так DigitalOcean называет свои серверы) в DigitalOcean. Конечно, вы также можете купить и использовать свое собственное доменное имя. Обычно для установки Discourse требуется настоящее доменное имя, установка по IP-адресу невозможна, поэтому мы рекомендуем сначала приобрести доменное имя или использовать поддомен вашего существующего домена.

Создание нового Droplet — это процесс, аналогичный созданию сервера на DigitalOcean или VPS/сервера на других платформах. После завершения создания вы получите электронное письмо с паролем пользователя root. Однако мы рекомендуем настроить использование SSH-ключей для повышения безопасности доступа к вашему серверу.

Доступ к вашему облачному серверу

Подключитесь к созданному серверу, используя IP-адрес и SSH, или, если вы используете Windows, установите Putty и выполните следующую команду для подключения:

ssh root@192.168.1.1

Если вы не настроили SSH-ключ, вы можете войти, используя пароль, указанный в электронном письме от DigitalOcean, или подключиться, используя ваш локальный SSH-ключ.

Установка Docker / Git (опционально)

sudo apt install docker.io
sudo apt install git

Если вы хотите использовать собственную версию Docker, вы можете установить её на свой новый сервер прямо сейчас. Если Docker не установлен по умолчанию на вашем сервере, утилита discourse-setup автоматически скачает и установит его с get.docker.com.

Установка Discourse

Склонируйте репозиторий официальной Docker-установки Discourse на локальный компьютер в директорию /var/discourse.

sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse

Вам нужно выполнить только вышеуказанные команды. Для установки Discourse требуются права root.

Добавление зеркал Docker (только для серверов в материковом Китае)

Если ваш сервер находится в материковом Китае, на этапе работы с Docker вы, скорее всего, столкнетесь с проблемами. Попробуйте добавить зеркала Docker.

На примере Tencent Cloud: откройте файл /etc/docker/daemon.json в Linux с помощью вашего любимого текстового редактора и добавьте следующее содержимое. Вы можете заменить https://mirror.ccs.tencentyun.com на URL зеркала Docker, предоставляемый вашим провайдером облачных серверов:

{
   "registry-mirrors": [
   "https://mirror.ccs.tencentyun.com"
  ]
}

После добавления зеркал Docker перезапустите службу Docker командой sudo systemctl restart docker, чтобы применить изменения.

Редактирование конфигурации Discourse

Запустите утилиту настройки следующей командой:

./discourse-setup

Вам нужно будет ввести все параметры согласно подсказкам:

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

Введенные выше данные создадут файл app.yml для вашего экземпляра Discourse, который будет использоваться для конфигурации после завершения установки. Весь процесс запуска установки может занять 2–8 минут. Если возникнет ошибка установки или вам потребуется изменить конфигурацию после её завершения, вы можете снова запустить команду ./discourse-setup (эта команда перезагрузит существующий файл app.yml). Либо вы можете вручную отредактировать файл /containers/app.yml, а затем снова выполнить команду ./launcher rebuild app, иначе ваши изменения не вступят в силу.

Оптимизация для сетевого окружения Китая

Если ваш облачный сервер находится в материковом Китае, вы, скорее всего, столкнетесь с проблемами сети при выполнении команд ./discourse-setup или ./launcher rebuild app. Discourse уже подготовил зеркала для всех образов, кроме Docker. Вам нужно просто добавить одну строку в файл containers/app.yml в следующем месте:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.china.template.yml" # Добавьте эту строку для настройки зеркал пакетных менеджеров npm, rubygems и др.

Это решит проблему.

Запуск Discourse

После завершения начальной настройки ваш экземпляр Discourse должен быть доступен в браузере по настроенному вами доменному имени discourse.example.com.

Для серверов, расположенных в материковом Китае, возможно, вам сначала потребуется пройти процедуру ICP-регистрации (备案) согласно инструкциям вашего провайдера облачных услуг, прежде чем продолжить.

Регистрация новой учетной записи администратора

Зарегистрируйте учетную запись администратора, используя адрес электронной почты, указанный вами на этапе начальной настройки.

(Если вы не можете зарегистрировать учетную запись администратора, проверьте логи по пути /var/discourse/shared/standalone/log/rails/production.log или ознакомьтесь со списком проверки проблем с электронной почтой.)

После регистрации учетной записи администратора запустится мастер настройки, который проведет вас через процесс конфигурации вашего экземпляра Discourse.

После завершения всех шагов мастера настройки вы увидите темы для сотрудников (Staff topics) и READ ME FIRST: Admin Quick Start Guide. Этот мастер настройки содержит рекомендации по дальнейшей конфигурации и инструкции по кастомизации вашего экземпляра Discourse.

Обслуживание после установки

  • Мы настоятельно рекомендуем включить автоматические обновления безопасности вашей операционной системы. В Ubuntu используйте команду dpkg-reconfigure -plow unattended-upgrades. В CentOS/RHEL используйте пакет yum-cron.
  • Если вы входите в операционную систему с помощью пароля, а не SSH-ключа, убедитесь, что вы используете надежный пароль. В Ubuntu установите пакет apt-get install libpam-cracklib. Мы рекомендуем использовать fail2ban, который будет блокировать IP-адреса, совершившие 3 неудачные попытки входа, на 10 минут.
    • Ubuntu: apt-get install fail2ban
    • CentOS/RHEL: sudo yum install fail2ban (требуется EPEL)
  • Если вы хотите установить брандмауэр по умолчанию, для Ubuntu включите ufw, а для CentOS/RHEL 7 и более поздних версий используйте firewalld.

Когда выйдет новая версия Discourse, вы получите уведомление по электронной почте. Всегда обновляйте свой экземпляр Discourse до последней версии, чтобы исправить все проблемы безопасности. You will get email reminders as new versions of Discourse are released. Please stay current to get the latest features and security fixes. Чтобы обновить Discourse до последней версии, откройте в браузере /admin/upgrade и нажмите кнопку обновления.

Команда launcher, находящаяся в директории /var/discourse, используется для выполнения некоторых системных задач обслуживания:

Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Commands:
    start:      Start/initialize a container (Запуск/инициализация контейнера)
    stop:       Stop a running container (Остановка работающего контейнера)
    restart:    Restart a container (Перезапуск контейнера)
    destroy:    Stop and remove a container (Остановка и удаление контейнера)
    enter:      Use nsenter to get a shell into a container (Использование nsenter для доступа к оболочке внутри контейнера)
    logs:       View the Docker logs for a container (Просмотр логов Docker для контейнера)
    bootstrap:  Bootstrap a container for the config based on a template (Инициализация конфигурации контейнера на основе шаблона)
    rebuild:    Rebuild a container (destroy old, bootstrap, start new) (Пересборка контейнера: удаление старого, инициализация и запуск нового)
    cleanup:    Remove all containers that have stopped for > 24 hours (Удаление всех контейнеров, остановленных более чем на 24 часа)

Options:
    --skip-prereqs             Don't check launcher prerequisites (Пропустить проверку предварительных требований для запуска)
    --docker-args              Extra arguments to pass when running docker (Дополнительные аргументы, передаваемые при запуске docker)
5 лайков

Перевод отличный, ставлю лайк! Надеюсь, у официалов появится возможность выбора языка.

1 лайк

Спасибо.

Мы тоже заметили, что на платформе Discourse слишком мало контента на китайском языке, но сама платформа очень хороша.

Установка имеет некоторые сложности и требует выполнения предварительных условий, поэтому нельзя просто установить её на любую машину.

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

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

Постепенно мы будем передавать в официальный репозиторий и другие наши существующие статьи.

3 лайка

Раньше был китайский форум, но, кажется, в начале года он закрылся

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

Возможно, у прежнего модератора просто не осталось времени на поддержку, ведь ведение сайта требует значительных усилий и финансовых затрат.

Поскольку мы не очень хорошо разбирались в Discourse, мы долго использовали Discuz. Но после того как Tencent выкупила DISCUZ, она не обновлялась уже много лет, возникло множество проблем, и обновить её стало невозможно.

Мы решили найти альтернативу, так и наткнулись на Discourse. Установили, начали использовать — и результат нас порадовал.

Мы разместили свои наблюдения и опыт в соответствующем разделе нашего сайта: iSharkFly - 飞鲨

Со временем мы поняли, что материалов на китайском языке крайне мало, и решили поделиться частью своего опыта с официальным сообществом.

Поддерживать сайт в рабочем состоянии — задача не из лёгких. :slight_smile:

Надеемся, что Discourse будет использоваться всё чаще: чем больше пользователей, тем живее сообщество и тем интереснее становится работа с платформой.

1 лайк

@fantasticfears Похоже, это был админ китайского сайта… Но последний визит был в 2019 году. Неясно, забыл ли он продлить сервер или по какой-то другой причине, но китайский сайт внезапно исчез.

Возможно, просто не было времени этим заняться.

Ничего страшного, погуляйте по официальному форуму. Ха-ха.

Для китайскоязычного сообщества, где большинство пользователей — из Китая, локализация Discourse всё ещё оставляет желать лучшего. Ведь привычки пользователей различаются.

Это чистая правда, эта проблема есть у всех, кто использует перевод через сопоставление строк.

Переведённые строки и их сортировка выглядят странно.

Но, на мой взгляд, Discourse — это очень круто, особенно загрузка вложений: невероятно удобно.

Контент в формате Markdown. Хотя для обычного пользователя есть небольшой порог входа, этого вполне достаточно.

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

1 лайк

Сообщество OSSEZ изменило доменное имя, и эта статья была опубликована по адресу: Discourse 云平台安装 - Discourse - iSharkFly.

1 лайк

Я добавил главу «Оптимизация для сетевой среды Китая».

3 лайка