CentOS7上にWekanOnDocker環境を構築する

# Wekanとは
一言で言うとTrelloのクローンOSS
Kanbanによるタスク管理ができるWebアプリケーション

# 構築手順

基本的には下記の公式Wikiの通りに実施した。
https://github.com/wekan/wekan/wiki/Install-Wekan-Docker-in-production

## dockerのインストール
上記URLのリンク先は404なので、以下を参考にしてインストール
https://docs.docker.com/engine/installation/linux/centos/#/install-with-yum

どうもCentOS7じゃないといけないっぽい
URLのアンカーにつけたように、yumを使用してインストールした。
やってる内容としては、docker用のyumリポジトリを追加してそこから`yum install`してる

実際に実行したコマンドはこんな感じ
めんどくさがりなのでroot権限で実行したためsudoはなし

### yumリポジトリの追加

```
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
```

### 追加したリポジトリからdocker-engineをインストール

```
yum install docker-engine
```
インストールする？と聞かれるので`y`を押下してインストール

### インストールしたdockerをサービス起動

```
service docker start
```
CentOS7からservice系のコマンドが変わったけどまだserviceも使用出来る。
でも新しいやつにリダイレクトされている模様

### インストール完了

これでdockerのインストールは完了。
確認するには以下の`hello world`なdockerを起動

```
docker run hello-world
```
これで色々メッセージが出てきたらOK。詳細は上記URLの6.を参考のこと

## docker用ユーザグループの作成

> これを実施することによるメリットが今の所理解できていないので、分かり次第追記する

https://docs.docker.com/engine/installation/linux/centos/#/create-a-docker-group

### グループ作成とユーザ追加

```
groupadd docker
usermod -aG docker hogehoge
```

## dockerの自動起動設定

https://docs.docker.com/engine/installation/linux/centos/#/start-the-docker-daemon-at-boot

```
chkconfig docker on
```

## 完了

これでdockerのインストールと初期設定は完了

# Docker Compose のインストール

CentOS7の場合は別途docker-composeのインストールも必要だとのことなので実施。
以下を参照。
https://docs.docker.com/compose/install/#/install-docker-compose

## Githubから取得

いくつか方法はあるようだけど、Githubから取得する方法を選択。
Github上にあるものをそのまま/usr/local/bin/以下にもってくるという手法。

```
curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
```

## 実行権限付与

```
chmod +x /usr/local/bin/docker-compose
```

## 完了

以下のコマンドを実行してバージョン番号がでればOK

```
docker-compose --version
```

# Wekan用の設定

これでdockerの環境の準備ができたので、Wekanの設定を実施。

## Wekan用ユーザの追加

```
useradd -d /home/wekan -m -s /bin/bash wekan
```

## dockerグループにwekanを追加

```
usermod -aG docker wekan
```

## `docker-compose.yml`の作成

`/home/wekan/`配下に以下の内容の`docker-compose.yml`を作成

```
wekan:
  image: mquandalle/wekan
  restart: always
  links:
    - wekandb
  environment:
    - MONGO_URL=mongodb://wekandb/wekan
    - ROOT_URL=http://mytodo.org
    - MAIL_URL=smtp://user:pass@mailserver.example.com:25/
    - MAIL_FROM=wekan-admin@example.com
  ports:
    - 8081:80

wekandb:
   image: mongo
   restart: always
   volumes:
     - /home/wekan/data:/data/db
```

起動時にコンテナが自動起動するように`restart: always`を追加している。

## メールサーバの設定

今回は実施していないので、実施する場合は以下を参照のこと
https://github.com/wekan/wekan/wiki/Install-Wekan-Docker-in-production#3-configure-mail-server

## webserverの設定

https://github.com/wekan/wekan/wiki/Install-Wekan-Docker-in-production#4b-nginx

上記URLのアンカーにあるように、nginxでの設定を実施した。

nginxは`yum install nginx` でいけたハズ（違ったら追記）

Wekanの他に何もWebサーバがないので上記リンク通りに設定。
まとめるとこんな感じ。

```
upstream websocket {
    server 127.0.0.1:8081;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 123.45.67.89:80;
    server_name mytodo.org;

    access_log  /var/log/nginx/mytodo_access.log;
    error_log   /var/log/nginx/mytodo_error.log;

location / {
	   proxy_read_timeout      300;
	   proxy_connect_timeout   300;
	   proxy_redirect          off;
	
	   proxy_set_header    Host                $http_host;
	   proxy_set_header    X-Real-IP           $remote_addr;
	   proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
	   proxy_set_header    X-Forwarded-Proto   $scheme;
	
	   proxy_pass http://127.0.0.1:8081;
	 }
	
	location ~ websocket$ {
	   proxy_pass http://websocket;
	   proxy_http_version 1.1;
	   proxy_set_header Upgrade $http_upgrade;
	   proxy_set_header Connection $connection_upgrade;
	}

    [...]
}

```

### nginxの起動と自動起動設定

`service docker start`
`chkconfig docker on`


## Wekanの起動

### wekanユーザに切り替え

```
su - wekan
```

### `/home/wekan`に移動

すでに`/home/wekan/`にいると思うけど念のため
```
cd /home/wekan
```

### 起動

```
docker-compose up -d
```

### 起動確認

`http://server-ip`にアクセス

Wekanのログイン画面が出れば成功