環境構築:GitLab+Rocket.Chat+Taiga on Docker - Taiga編
はじめに言っておきますが、失敗しました。
なんで失敗すんだよ、俺が教えてやんよ、っていう方はご教示いただけると幸いです。
Taigaとは
かんばん方式のプロジェクト管理ツールです。
スクラム開発に適している、という評判を聞いて採用しました。
Docker-Composeでいれる
公式では、Dockerイメージはありません。
ただ、公式ページには、以下のような記載があります。
Docker is not officially supported by the Taiga development team but a docker script has been developed by Iván Pedrazas,
another docker script has been developed by Hylke Visser, and yet another docker script has been developed by Benjamin Hutchins.
Taiga: Other ways to setup initial environment
というわけで、頑張って作ってくれた人がいるので、それを参考にすることにしました。
※ちなみに、Vagrantイメージはあるらしく、そっちの方が確実かもしれません。
# git clone https://github.com/htdvisser/taiga-docker.git # cd taiga-docker # vi taiga.yml data: image: tianon/true volumes: - /var/lib/postgresql/data - /usr/local/taiga/media - /usr/local/taiga/static - /usr/local/taiga/logs db: image: postgres environment: POSTGRES_USER: taiga POSTGRES_PASSWORD: password volumes_from: - data taigaback: build: taiga-back hostname: $HOSTNAME # ホスト名を入れる environment: SECRET_KEY: examplesecretkey EMAIL_USE_TLS: 'True' EMAIL_HOST: smtp.gmail.com EMAIL_PORT: 587 EMAIL_HOST_USER: hoge@gmail.com #自分のgmailアドレス EMAIL_HOST_PASSWORD: password #パスワードを入力 links: - db:postgres volumes_from: - data ports: - 0.0.0.0:8000:8000 taigafront: build: taiga-front-dist hostname: $HOSTNAME links: - taigaback volumes_from: - data ports: - 0.0.0.0:8080:80
LDAP連携用の設定をいれる
これをしないと好きなだけアカウント作られてしまうんじゃないか、と思って設定。
# cd taiga-back #taiga-dockerの直下にあるtaigaのバックエンド # vi Dockerfile FROM python:3.4 MAINTAINER Hylke Visser <htdvisser@gmail.com> # Install dependencies RUN \ apt-get update -qq && \ apt-get install -y netcat && \ rm -rf /var/lib/apt/lists/* && \ pip install circus gunicorn # Install taiga-back RUN \ mkdir -p /usr/local/taiga && \ useradd -d /usr/local/taiga taiga && \ git clone https://github.com/taigaio/taiga-back.git /usr/local/taiga/taiga-back && \ mkdir /usr/local/taiga/media /usr/local/taiga/static /usr/local/taiga/logs && \ cd /usr/local/taiga/taiga-back && \ git checkout stable && \ pip install -r requirements.txt && \ pip install taiga-contrib-ldap-auth && \ # <- これを追加 touch /usr/local/taiga/taiga-back/settings/dockerenv.py && \ touch /usr/local/taiga/circus.ini # Add Taiga Configuration ADD ./local.py /usr/local/taiga/taiga-back/settings/local.py # Configure and Start scripts ADD ./configure /usr/local/taiga/configure ADD ./start /usr/local/taiga/start RUN chmod +x /usr/local/taiga/configure /usr/local/taiga/start VOLUME /usr/local/taiga/media VOLUME /usr/local/taiga/static VOLUME /usr/local/taiga/logs EXPOSE 8000 CMD ["/usr/local/taiga/start"] ---------------------------------- # vi local.py from .common import * from .dockerenv import * # THROTTLING #REST_FRAMEWORK["DEFAULT_THROTTLE_RATES"] = { # "anon": "20/min", # "user": "200/min", # "import-mode": "20/sec" #} ## 以下追記 INSTALLED_APPS += ["taiga_contrib_ldap_auth"] LDAP_SERVER = 'ldap://LDAPHOST' LDAP_PORT = 389 # Full DN of the service account use to connect to LDAP server and search for login user's account entry # If LDAP_BIND_DN is not specified, or is blank, then an anonymous bind is attempated LDAP_BIND_DN = 'CN=admin,DC=hoge,DC=com' LDAP_BIND_PASSWORD = 'PASSWD' # eg. # Starting point within LDAP structure to search for login user LDAP_SEARCH_BASE = 'OU=People,DC=hoge,DC=com' # LDAP property used for searching, ie. login username needs to match value in sAMAccountName property in LDAP LDAP_SEARCH_PROPERTY = 'uid' LDAP_SEARCH_SUFFIX = None # '@example.com' # Names of LDAP properties on user account to get email and full name LDAP_EMAIL_PROPERTY = 'mail' LDAP_FULL_NAME_PROPERTY = 'cn' ------------------------------------------- # cd ../taiga-front-dist # vi configure # cat configure #!/bin/bash cat > /etc/nginx/upstream.conf <<EOL upstream taiga-back { server ${TAIGABACK_PORT_8000_TCP_ADDR}:8000; } EOL # Configure HTTP or HTTPS for nginx proxy WEB_CONFIG=web-${SCHEME:-http}.conf sed -i "/include .*.conf;/c\ include ${WEB_CONFIG};" /etc/nginx/nginx.conf mkdir -p /etc/nginx/ssl [ ! -z "${SSL_CRT}" ] && echo "${SSL_CRT}" > /etc/nginx/ssl/ssl.crt [ ! -z "${SSL_KEY}" ] && echo "${SSL_KEY}" > /etc/nginx/ssl/ssl.key PUBLIC_REGISTER_ENABLED=${PUBLIC_REGISTER_ENABLED:-true} API=${API:-/api/v1/} DEBUG=${DEBUG:-false} cat > /usr/local/taiga/taiga-front-dist/dist/conf.json <<EOL { "api": "${API}", "eventsUrl": null, "eventsMaxMissedHeartbeats": 5, "eventsHeartbeatIntervalTime": 60000, "debug": $DEBUG, "debugInfo": false, "defaultLanguage": "en", "themes": ["taiga"], "defaultTheme": "taiga", "publicRegisterEnabled": ${PUBLIC_REGISTER_ENABLED}, "feedbackEnabled": true, "privacyPolicyUrl": null, "termsOfServiceUrl": null, "maxUploadFileSize": null, "contribPlugins": [], "loginFormType": "ldap" # ここを追加 } EOL ------------------------------- # cd ../ # docker-compose -f taiga.yml build # dokcer-compose -f taiga.yml up -d
はい。簡単。
あ、Gmailをメールサーバとして使用する場合、Gmailの「セキュリティの低いアプリからのログイン許可」みたいな設定をしないとダメです。
で。ここから、hostname:8080
にアクセスするわけですが、、、
ダメポイント
1.新規プロジェクトが作れない
本当に笑うしかなかった。何度やって500エラー。
ログをみないとわからない。ボタンが無反応なだけだから。
新規ユーザだと作れない、というissueが出ていたように見える。
でもクローズされてたみたいだけど。。。
2.2度目のログインでNG
これな。
一回ログアウトして、再度入り直そうとすると、
「あんたのメアド、すでに使われてまっせ」と言われる。
そりゃ、そうだ、新規ユーザじゃないんだから。
でも、新規ユーザ登録のフローに入ってしまうらしく、NG。
LDAPのユーザ情報にTaiga用ユーザ情報で必須なものが抜けているのかな。
いや、「もう登録されている」という判定になるんだから、問題ないはずか。
そんなこんなで諦めました。
GMAILのアカウントとパスワードを設定ファイルに書くのも、なんか怖いし。
誰かにSSHで不正ログインされたら、もう、アウトでしょ。
Kanboardに切り替えます。
こっちは実績ありなので。