Yahoo!PipeやIFTTTのように使える自動化ツール『Huginn』をUbuntu Server 16.04 LTSにインストールする

まえにStackStorm(St2)という、イベントドリブンな自動化ツール(特定のイベントが発生したら、指定された処理を自動で行ってくれるツール)を触ったことがあったのだが、それと同じように利用できそうな『Huggin』というツールを見かけた。 Yahoo!PipeやIFTTTのような利用ができるらしい。

今回は、この『Huggin』をUbuntu Server 16.04 LTSにインストールしてみる。 (Dockerもあるようなので、パッと試す場合はそちらでもいいだろう)

1. 前提パッケージのインストール

まずは、以下のコマンドでupdateを行っておこう。

sudo apt-get update -y
sudo apt-get upgrade -y

Node.jsやその他必要になるパッケージをまとめてインストールする。 なお、Rubyは2.3以降が必要になるようなので、インストール完了後もしバージョンが古かったら別途インストールしなおす。

curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
sudo dpkg-divert --local --rename --add /sbin/initctl
sudo ln -s /bin/true /sbin/initctl
sudo apt-get install -y runit build-essential git zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs graphviz ruby ruby.h ruby-dev
sudo gem install rake bundler foreman --no-ri --no-rdoc

2. システムユーザの作成

Huginnを動作させるシステムユーザを作成する。

sudo adduser --disabled-login --gecos 'Huginn' huginn

3. データベースの作成

次に、データベースの作成をする。最初にパッケージの導入を行う。

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

rootユーザのパスワード設定など、最低限のセキュリティ設定を行う。

sudo mysql_secure_installation

ユーザやデータベースの作成を行う。

mysql -u root -p -e '
    CREATE USER "huginn"@"localhost" IDENTIFIED BY "huginn";
    SET default_storage_engine=INNODB;
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `huginn_production`.* TO "huginn"@"localhost";'

この時点ではデータベースの作成は行わない。

4. Huginnのインストールを行う

ここまで終わったら、Huginnのインストールを行う。 以下のコマンドを実行し、ソースのダウンロード等を行う。

cd /home/huginn
sudo -u huginn -H git clone https://github.com/cantino/huginn.git -b master huginn
cd /home/huginn/huginn
sudo -u huginn -H cp .env.example .env
sudo -u huginn mkdir -p log tmp/pids tmp/sockets
sudo chown -R huginn log/ tmp/
sudo chmod -R u+rwX,go-w log/ tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/
sudo -u huginn -H chmod o-rwx .env
sudo -u huginn -H cp config/unicorn.rb.example config/unicorn.rb

設定ファイル『.env』を以下のように編集する。

DATABASE_ADAPTER=mysql2
DATABASE_RECONNECT=true
DATABASE_NAME=huginn_production
DATABASE_POOL=20
DATABASE_USERNAME=huginn
DATABASE_PASSWORD='$password'
#DATABASE_HOST=your-domain-here.com
#DATABASE_PORT=3306
#DATABASE_SOCKET=/tmp/mysql.sock

DATABASE_ENCODING=utf8
# MySQL only: If you are running a MySQL server >=5.5.3, you should
# set DATABASE_ENCODING to utf8mb4 instead of utf8 so that the
# database can hold 4-byte UTF-8 characters like emoji.
#DATABASE_ENCODING=utf8mb4

RAILS_ENV=production

設定ファイル編集後、必要になるGemのインストールを行う。

sudo -u huginn -H bundle install --deployment --without development test

その他、データベースの作成などを行う。

sudo -u huginn -H bundle exec rake db:create RAILS_ENV=production
sudo -u huginn -H bundle exec rake db:migrate RAILS_ENV=production
sudo -u huginn -H bundle exec rake db:seed RAILS_ENV=production SEED_USERNAME=admin SEED_PASSWORD=password
sudo -u huginn -H bundle exec rake assets:precompile RAILS_ENV=production

『Procfile』ファイルで、以下のようにコメントアウトする行を変更する。

/home/huginn/huginn/Procfile
# コメントアウトする # web: bundle exec rails server -p ${PORT-3000} -b ${IP-0.0.0.0} # jobs: bundle exec rails runner bin/threaded.rb # コメントアウト解除 web: bundle exec unicorn -c config/unicorn.rb jobs: bundle exec rails runner bin/threaded.rb

ファイル編集後、以下のコマンドを実行する。

sudo bundle exec rake production:export
sudo cp deployment/logrotate/huginn /etc/logrotate.d/huginn
sudo bundle exec rake production:status

5. Nginxをインストールする

最後に、フロントとして利用するNginxをインストールする。

sudo apt-get install -y nginx

aptでインストール後、以下のコマンドでHuginn用の設定ファイルを配置する。

sudo cp deployment/nginx/huginn /etc/nginx/sites-available/huginn
sudo ln -s /etc/nginx/sites-available/huginn /etc/nginx/sites-enabled/huginn
sudo rm /etc/nginx/sites-enabled/default

コンフィグテストを行い、サービスの起動を行う。

sudo nginx -t
sudo service nginx restart

6. ブラウザからアクセスする

さて、インストールや諸々の設定が終わったら、ブラウザからアクセスしてみよう。 「http://サーバのホスト名orIPアドレス」でアクセスできる。

初期ID/PWは「admin/password」になっている。 ひとまず、今回はインストールまで。次回以降、実際の設定などを行っていこう。