技術メモ

プログラミングとか電子工作とか

リモートワーク蔓延る世の中になったので、改めてRedmineを導入してみる

f:id:ysmn_deus:20200503142752p:plain

学生の頃に団体でのタスクを管理するためにRedmineを導入していたのですが、正直活用しきれていなかったのとPassengerのエラーにおびえていたので今まで前向きにRedmineの活用を検討してきませんでした。
(正直作業も一人で完結することが多いので・・・)
しかし、昨今の情勢に有効活用できる対象の方々が増えてるんじゃないかと思い、防備録を兼ねて記事にしてみます。

そもそもRedmineとは?

もしかしたらRedmineを知らずに見て下さっている方の為にざっくりと説明しておきますと、Redmineとはブラウザ上で利用できるプロジェクト管理アプリケーションです。
具体的な説明などは公式サイトを一読して頂ければ有り難いです。

redmine.jp

デモなんかもあります

my.redmine.jp

どういう人におすすめ?

基本的に複数人で一つのプロジェクトを進める人は活用を検討するのが良さそうです。

一人での進捗管理にも使えるかもしれませんが、Redmine特有の癖というか運用に対して色々と学ばねばならない点がありますので、正直面倒だと思います。
(本記事では余り言及しない予定です)

導入

前提

基本的に

  • 複数人で使うので外部からアクセスできるサーバーにセットアップ
  • 小規模(2~10人程度?)のアクセスを想定

という想定でセットアップします。
小規模なので今回はAWSのLightsailを選定しました。
中規模や転送量が多い場合はさくらのVPSなどもいいかもしれませんが、外向けの転送量は1TBまでは込みで3.5ドル(初月は無料)なので試してみる分にはワンコイン以下で運用できると思います。

サーバーのセットアップ

LightsailにはBitnamiによるセットアップが可能となっています。
本来であればデータベースなどセットアップがいるんですが、この機能を利用することで基本的なセットアップに関しては何も考えなくてもよくなります。

※ ただし、2021年4月以降も含む長期運用まで考えている方はLightsailのBitnamiでセットアップされる環境がUbuntuの16.04なのでバックアップとリストアの方法も合わせて確認しておいた方が良いかもしれません。

Lightsailでインスタンスの作成

Lightsailのコンソールから「インスタンスの作成」からインスタンスの作成画面に映ります。

f:id:ysmn_deus:20200502183720p:plain

「設計図の選択」のところで「Redmine」を選択します。
ロケーションは日本の方を想定しているのでデフォルトの東京リージョンから変更してません。

f:id:ysmn_deus:20200502184215p:plain

初めてLightsailを利用する方はSSHキーペアが設定されていないと思いますので新規作成して下さい。

f:id:ysmn_deus:20200502184418p:plain

インスタンスプランは一番最小の3.5USDのプランを選択してます。
リソース名は分かりやすい名前を設定しておいて下さい。(よく分からない人はデフォルトの「Redmine-1」で問題無いかとおもいます。)

f:id:ysmn_deus:20200502184623p:plain

これで「インスタンスの作成」をすると、基本的なセットアップが全て完了します。
なんと便利な・・・

f:id:ysmn_deus:20200502185038p:plain

ホームに先ほど設定したリソース名のインスタンスが作成されていると思います。

IPの固定

今のままだとサーバーのIPが変わって鬱陶しいです。
IPを固定してドメインを割り当てる(割り当てなくても利用はできますが)場合にはIPを固定しておく必要があります。
LightsailでDNSゾーンを作成してドメインを割り当てる方法もありますが、今回DNSの設定は別途することとしてIPだけ固定します。

ホーム画面から作成したインスタンスの設定画面にいきます。

f:id:ysmn_deus:20200502190251p:plain

ネットワーキングのタブに移動します。

f:id:ysmn_deus:20200502190605p:plain

IPアドレス」と書いてある項目から「静的IPのアタッチ」を選択します。

f:id:ysmn_deus:20200502190905p:plain

他に静的IPのリソースが余っていない場合は「静的IPアドレスの作成」画面へ移動すると思います。
ロケーションはそのままで、インスタンスは先ほど設定したリソース名(ここでは「Redmine-1」)を選択して、「静的IPの指定」と書かれた項目のリソース名は分かりやすい名前を付けておきます。
画像では「StaticIp-1」となっていますが、「Redmine-1-StaticIp」などRedmine-1に利用している事を明示しておくのが良いと思います。

f:id:ysmn_deus:20200502191238p:plain

「作成」を選択すると静的IPが作成完了します。
とりあえずホームに戻り、先ほどと同様「Redmine-1」の設定画面の「ネットワーキング」を確認します。

f:id:ysmn_deus:20200502191521p:plain

画像のように「静的IPのデタッチ」が表示されていれば、IPの固定は完了しています。

IPへドメインを設定する

ドメインを何で運用しているかによりますが、基本的にDNSレコードにAレコードとして該当するIPを設定すると良いかと思います。
自分はRoute53を利用していますが、基本的になんでもいいとは思います。
(要望がありましたら記事化しますが、ここでは割愛します。)

基本的にHTTPSでの運用を考えてない人はココまでで問題ないかと思います。
(基本設定は公式サイトのドキュメントなどをご参照ください。)

redmine.jp

Redmineのセットアップ

管理者ユーザーでログイン

とりあえずHTTPS化したいのでその準備をします。
まずは管理ユーザでログインします。ドメインを指定した場合はそのドメインに、指定していない場合は http://[固定したIPアドレス]/ にアクセスして下さい。

f:id:ysmn_deus:20200503134438p:plain

たぶんこんな画面が表示されると思います。
右上の「ログイン」からログインします。
上記のようにBitnamiの機能でセットアップした場合は、ログインIDは「user」、パスワードはSSHでログインしたホームディレクトリにある"bitnami_application_password"というファイルに記載されているものを利用します。
Windows10であれば、コマンドプロンプトからSSHが使えますので、下記で取得可能です。
(キーペアはユーザーフォルダC:\Users\ユーザー名の直下の.sshというディレクトリに保存したとします。)

C:\Users\username> ssh bitnami@[設定したドメインor固定したIPアドレス] -i .\.ssh\[保存したキーペア].pem
$ cat bitnami_application_password

取得したパスワードでログインします。

f:id:ysmn_deus:20200503135614p:plain

ログインが完了すると、左上の項目に「管理」などが追加されています。
この「管理」を選択し、管理画面を表示します。

f:id:ysmn_deus:20200503135733p:plain

管理画面の「設定」を選択します。

f:id:ysmn_deus:20200503135944p:plain

この画面の「プロトコル」をHTTPからHTTPSにしておきます。

Bitnami HTTPS Configuration Toolを利用したHTTPS化

勿論この設定だけでHTTPS運用できるわけではないです。今回はLet's Encryptを活用したSSLを想定していますが、一応AWS Certificate ManagerとAmazon CloudFrontを利用した運用もできると思います。AWS信者の自分としては後者の方が安心安全な気がしますが、極力ミニマムに始めるという想定でLightsail上で完結する方法を採っています。

基本的なツールはなんと最初から入っており、一発で自動更新コマンドまで追加してくれます。
SSHでセットアップしたサーバーにログインしてコマンドを実行します。

sudo /opt/bitnami/bncert-tool

最初にドメイン名を聞かれるのでSSL化したいドメイン名を入力します。

Domain list []: redmine.hogefuga.com

次にwwwの扱いをどうするか(マルチドメインとして運用するのか否か)を聞かれるのでnでキャンセルしておきます。
(あんまりwww.redmine.hogefuga.comのような運用をしたい人はいないと思いますので)

The following domains were not included: www.hogefuga.com. Do you want to add them? [Y/n]: n

次にHTTPへのアクセスがあった場合にHTTPSにリダイレクトするか聞かれますので、yで許諾しておきます。

Enable HTTP to HTTPS redirection [Y/n]: y

次に設定のステップが表示され「これでええんか?」と聞かれますのでyで許諾しておきます。

Do you agree to these changes? [Y/n]: y

次に期限切れになりそうなときに通知が来るメールアドレスを登録しておきます。

E-mail address []: hoge@hogefuga.com

ここまで来たら基本の設定は完了です。最後に利用規約に同意するか否か聞かれるのでyで許諾します。

Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: y

これでSSL化は完了です。
このツールは基本的に自動更新のコマンドも登録してくれています。一応確認する場合は、そのまま

crontab -e

とcronを確認するとコマンドが追加されていることが分かります。

オンラインでの外部とのやりとりが増えてきたので、GW中にチケット駆動など開発手法を学習しておきたいところです。
Redmineの運用に関してはド素人なので・・・(:3 」∠ )