はてな村定点観測所

運動、瞑想、睡眠、野菜350g

オープンソースの議論型掲示板「discourse」を導入してみた&謝辞

   

オープンソースの議論型掲示板「discourse」

最近個人的な相談があり、discourseというオープンソースの掲示板の導入を行いました。

discourseは、Ruby on Railsで開発されたフォーラム、掲示板、チャットルーム、メーリングリスト管理などの機能を備えた議論に特化したコミュニケーションツールです。リロードなくコンテンツが更新され、複数のプラットフォームに対応しています。月100ドル〜のエンタープライズ版が存在しますが、オープンソース化もされているので誰でも自分のサーバーにインストールできます。日本語化もできます。

www.discourse.org

オープンソース版のdiscourseは、Twitter社などでも導入されています。Twitter DevelopersはTwitter社が運営する公式の開発コミュニティですが、Twitter Developersもdiscourseを使って構築されています。

f:id:netcraft3:20170602111338p:plain

twittercommunity.com

discourseのソースコードはGitHubで共有されていて頻繁にアップデートされています。

github.com

discourseのインストール要件

discourseはマストドンなどのOSSと同様にDockerでのインストールが推奨されています。ハードウェア要件とソフトウェア要件は以下の通りです。

ハードウェア要件
1コアCPU以上(2コア以上推奨)
メモリ1GB以上(2GB以上推奨)
Kernel 3.10以降の64ビットLinux OS(Ubuntu16.04推奨)
10 GBのディスクスペース

 

ソフトウェア要件
Postgres 9.5以降
Redis 2.6以降
Ruby 2.3以降 (2.3.1以降推奨)

当初、Dockerを使わないインストールを試行してみたのですが、変更しなければならない箇所が多く茨の道でした。Dockerを使ってインストールしましょう。

discourseのインストール

素のUbuntu16.04へのインストール方法です。

DockerとGitをインストールします。

sudo wget -qO- https://get.docker.com/ | sh

ディレクトリを作成してdiscourseのDockerイメージをダウンロードします。

sudo mkdir /var/discourse
sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse

セットアップツールを起動させます。ここでサーバーのメモリが1GB未満だとエラーで終了します。

cd /var/discourse
sudo ./discourse-setup

ウィザードが始まり質問に答えていきます。discourseはSMTPサーバー必須です。Postfixで新規に立てるのが面倒だったので、月間6,000通までのメール送信が無料のMailjetというサービスをSMTPサーバーとして利用しました。

Hostname for your Discourse? [discourse.example.com]: 
Email address for admin account? [me@example.com]: 
SMTP server address? [smtp.example.com]: 
SMTP user name? [postmaster@discourse.example.com]: 
SMTP port [587]:
SMTP password? []:

containers/app.ymlが作成されます。次にBootstrapを実行します。

sudo ./launcher bootstrap app

これでDockerイメージが準備できました。以下のコマンドでdiscourseを起動させます。

sudo ./launcher start app

ブラウザでサーバーにアクセスすると管理者ユーザーの登録画面が出てきます(最初にメール認証あり)。質問に答えながら進めていけばdiscourseを開始できます。

f:id:netcraft3:20170602111051p:plain

discourseの開始・停止・containers/app.ymlを変更してのDockerの再構成は以下のコマンドで行います。

sudo ./launcher start app
sudo ./launcher stop app
sudo ./launcher rebuild app

管理者の画面には詳細な分析機能もあります。

謝辞

discourseの導入を私に相談されたのは、Twitterの私のフォロワーさんです。

その方から、私が本当にピンチだった時にはてなアカウントを取って、私宛に言及記事を書かれていたことを後から伺いました。その話を聞いた時には「あの記事の!」と驚きました。

1記事だけのはてな女子。あの記事は私の宝です。ありがとうございます。あの記事のアドバイスを忘れぬように歩みます。

こういう形でお役に立てて嬉しいです。