adsens1

2017年9月2日土曜日

カンバンツールtaigaをWindows上のVirtualboxにインストールして外部PCからアクセスする

Taigaはオープンソースのアジャイルかんばんツールです.


プロダクトバックロブの管理や,スプリント,かんばんなどの管理をサポートしてくれます. できてしまえば簡単なのですが,結構苦労したのでできたのでインストールメモを書いておきます.

目標(やりたいこと)
プライベートネットワークのWindows PCをtaigaのサーバーにして,プライベートネットワーク内の他の端末からアクセスしたい.

方法
Windows PCにVM環境であるVirtual boxをインストールし, その中にUbuntu Linuxをインストールし, その中にdocker環境を構築し,そこにtaigaをインストールする.
Virtual boxはブリッジ接続ではなく,NATで接続することでネットワーク環境への影響は最小限にしたい.

(Windows PCのIPアドレス 192.168.0.10とします.)

ここでは
VMの設定というとVirtualBoxのソフトウエアの設定
ゲストOSの設定をいうとUbunutのOSの設定
ホストOSの設定はWindowsのOSの設定を指します.

手順1 VM環境のインストール

Windows PCにVirtualBoxをインストールします.
Downloadはこちらからどうぞ.
(念のためVirtualBoxはOracleが開発しているVirtual Machineでオープンソースのフリーソフトです.)
ここでインストールするWindows OSをホストOS, VirtualBox内にインストールするOSをゲストOSと呼びます.

手順2 ゲストOSのインストール

今回はゲストOSにはUbuntuを使います.
UbuntuはこちらからUbuntu16.4.3 LTSをダウンロードしてください.
(前のバージョンだとCore dumpしてうまくdockerがインストールできない場合がありました)
インストールはVirtualBox内のメニューから行います.
その際にゲストOSの種類はUbuntu 64bitを選び,メモリは1.4GB程度, HDDは可変で30GB程度割り当てておきます.(ここら辺はお好みで)

手順3 VirtualBoxのネットワーク設定

次にVirtualBox内のメニューからネットワークの設定を行います.この設定はUbuntu内から外部,外部からUbuntu内への通信をどのように行うかを指定するものです.
今回はネットワークの種類としてNATを選びます.
NATはホストOS(ここではWindowsのこと)に割り当てられたIPアドレスを使って外部にアクセスを行います.ゲストOS(ここではUbuntuのこと)から外部のWebサーバをみることができます.一方で外部からはWindowsしか見えません.そこでポートフォワードをおこない,Windowsの特定のポートにアクセスしたばあい,ゲストOSの特定のポートに転送する設定を行う方法をとります.
(別にホストOSとIPアドレスを共通化しなくても良い場合は素直にブリッジ接続を選べば良いと思いますが,制約がある場合NATの方がよいでしょう)
ここではWindowsの8080ポートを受け付けるようにし,受け付けたデータをUbuntuの80番ポートにフォワードするように設定します.フォワードの設定は変更後すぐ適用されるようなので,VMの再起動などはありません.よってあとで適用しても構いません.
この8080ポートは後でtaigaの設定に使います
(始め80を80にフォワードするようにしたのですが,どうしてもパケットがVMに通じませんでした.)

手順4 Ubuntuへのdockerのインストール

次にゲストOS(ここではUbuntu)にdockerをインストールします.
最近docker は無償のCEと有償のEEに別れたようなのでここでCEをインストールします.
インストール方法は公式ページのこちらにあります.
ここでは必要な部分を使ってUbuntuのターミナルを開いて以下のコマンドを実行します
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
エラーが出なければこれでdockerがうまくインストールできたと思います.

手順5 taigaのインストール

次にゲストOSにdockerを使ってtaigaをインストールします.
taigaのdocker環境を用意してくださっている方がいるのでこちらを使用します.
https://hub.docker.com/r/accon/taiga/
を参考にします.
docker run -d -p 80:80 -t -i -h taiga --name taiga accon/taiga
と入力すればインストールは完了です.

試しにUbuntu内のブラウザから
http://localhost/install.html
にアクセスしてください.しばらくするとインストールが完了して
「PROGRESS_[INSTALLATION_COMPLETE]」
と表示されていればOKです.次に
http://localhost/
にアクセスしてログイン画面が表示されるのでID admin Password 123123と
入力してログインしてください.
試しにいくつかプロジェクトを作って,データベースに書き込みができているかも確認しておきましょう.
無事操作ができればインストールは完了です.
(このインストール方法ではUbuntuへのポート80へのアクセスをdocker環境のポート80へ接続しています)

手順6 taigaの設定変更

ここからが本番です. このままだとネットワーク上の他のパソコンからtaigaを呼び出すことができないので, taigaの設定を変更します.
変更するファイルはdocker環境内にあるので
まずUbuntuのターミナルを開き,
docker exec -it taiga bash
と入力してdocker環境内に入ります.変更するファイルは2つあります.
一つ目は/develop/www/conf.json です.
ファイル内にあるlocalhostをWindowsのIPアドレス:8080に置き換えます. ここでWindowsのIPアドレスは192.168.0.10なので 設定ファイルを
root@taiga:/develop/www# more conf.json 
{
    "api": "http://192.168.0.10:8080/api/v1/",
    "eventsUrl": "ws://192.168.0.10:8080/events",
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "eventsReconnectTryInterval": 10000,
    "debug": true,
    "debugInfo": false,
    "defaultLanguage": "en",
    "themes": ["taiga"],
    "defaultTheme": "taiga",
    "publicRegisterEnabled": true,
    "feedbackEnabled": true,
    "privacyPolicyUrl": null,
    "termsOfServiceUrl": null,
    "maxUploadFileSize": null,
    "contribPlugins": [],
    "tribeHost": null,
    "importers": [],
    "gravatar": true
}
と書き換えます. 次に /develop/workspace/taiga-back/settings/local.py の前半部分のアドレスを次のように書き換えます.
from .common import *
from .celery import *

MEDIA_URL = "http://192.168.0.10:8080/media/"
STATIC_URL = "http://192.168.0.10:8080/static/"
ADMIN_MEDIA_PREFIX = "http://192.168.0.10:8080/static/admin/"
SITES["front"]["scheme"] = "http"
SITES["front"]["domain"] = "192.168.0.10:8080"

SECRET_KEY = "mysecret"

DEBUG = False
TEMPLATE_DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "no-reply@example.com"
SERVER_EMAIL = DEFAULT_FROM_EMAIL

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_USE_TLS = False
EMAIL_HOST = "127.0.0.1"
EMAIL_PORT = 25

BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ENABLED = True

EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:PASSWORD@localhost:5672/taig
a"}

これで設定は完了です.
exit
でdocker環境から出たあと
docker restart taiga
としてtaigaを再起動します.
 次にUbuntuの中のブラウザからhttp://192.168.0.10:8080/にアクセスしてみます.
うまくアクセスできれば次に Windowsのブラウザからhttp://192.168.0.10:8080/にアクセスします.
これでアクセスできていれば,プライベートネットワーク内の別のPCからhttp://192.168.0.10:8080/にアクセスします.
これでアクセスできれば完了です.

なおWindowsのFirewallを設定している場合はポート登録を行い8080ポートを受け付けるように設定します.

運用関連

ログイン画面が現れない

再起動後すぐにアクセスするとlogin画面が表示されないことがありますが,データベースの起動のライムラグによるもののようです.
しばらく待つとアクセスできるので ちょっと待ちましょう.

内容は随時更新していきます.