Lightsail で Redmine を起動する!

クラウド

現在 SIer に転職して、とりあえず「案件」とやらの「プロジェクトマネージャー」というのをトライしています。
プロジェクト管理経験ないんですけど、さすがに SIer に入ってプロジェクト回したことないままはまずいでしょうということで、小さめの案件(自分から見たら小さくない)を担当しています。

で、結構カルチャーショックというか想像のギャップというか、社内プロセスとか社内文化に衝撃を受けてます。
はっきり言って、「昭和の世界」という感じ。前職もかなり昭和感あったのですが、SIer業界がそうなのか現職が特別なのか、前職よりも昭和です。
エクセルの進捗管理なんて当然で、ほぼすべてのドキュメントがエクセルで作成されています。

プロジェクトのプロセスも「ウォーターフォール以外ありえん」という状況で、すべてのプロセスがウォーターフォール前提で組まれています。
なので、WBSとか人月ベースの工数管理とか、私にとってはアレルギー反応が出そうなやり方が当然のように行われています。
まあそこで「アレルギー反応出るからそんなのやらない!」というわけにはいかないので、とりあえず規定に沿って一回やってみようの精神で現在トライしている感じです。

そんな中、いざWBSを作るにしても、エクセルかMSProjectとかいう石器時代のツールしか用意されておらず、頭がおかしくなりそうになったのでとりあえず Redmnine でWBS管理とガントチャート作るようにしたいということで、今回の話になります。

前置きが長くなりましたが、上記の背景より、Redmineをさくっと構築する方法を備忘録します。

背景

調べてみると、ECSとかのコンテナサービスで起動するよりも、そもそも AWS の Lightsail というサービスを使用すると安く簡単に環境が作れることが分かりました。

Lightsail を採用する主な理由

  • 簡単にさくっと作れるっぽい
  • 多分安い(月額$10固定的な)

今回の要件

  • HTTPS化ができること
    • →Let’s Encrypt で実現可能
      • ACM + ALB という構成も可能だが、ALBが高いので無料でできるLets’Encryptを採用
  • ドメインでアクセスでができること
    • →Route53 実現可能
  • プラグインの追加ができること
    • →Lightsail の機能で可能
      • Markdown、Easy Gantt など
  • IPアドレスでアクセス制御できること
    • →Lightsail の機能で可能
      • セキュリティ的に社内からのIPアドレスのみに制限したいという理由
  • できるだけ安くやりたい
    • →たぶんEC2インスタンスより安い
      • EC2の「t2.micro + 40GBストレージ」と同様のスペックで $5 で実現可能。EC2だったら約$20かかる(つけっぱなしが前提だけど)
      • EC2の場合は停止で課金が停止するが、Lightsailの場合は月額固定なので停止しても料金は安くならないというデメリットはある(が、今回はそんなに切入りをするつもりがない)
  • DBの定期バックアップ
    • →Lightsail の機能で可能
      • 料金はEBSのスナップショットと同じ
      • 注意:7世代バックアップとなるため、結構料金がかかる
        • そのため、1世代バックアップでよければ、S3へのバックアップを自分で構築したほうが良い
        • でも差分バックアップだからそこまで気にしなくていいかも

Lightsail の特徴

  • 月額固定料金
  • 上記の要件を満たす
  • あらかじめOSSがインストールされたパッケージを選択可能
    • 今回の場合で言うと、Bitnami Redmineがインストール済みの状態でインスタンスが起動できる
    • Bitnami なのでデータベースとかWebサーバーとか含まれているので、起動したらすぐにアクセスできる状態になっている
  • とにかく楽ちん!

参考サイト

[AWS] 安価で簡単にRedmineの環境を作成・管理できるよ!そうLightsailならね - Qiita
Redmine今更説明する必要もありませんが、Webベースのプロジェクト管理ツールです。AWSでは、DB(PostgreSQL、MySQL)や全文検索(Elasticsearch)、あるいはコン…
[AWS] LigthsailにBitnami版Redmine4.1を構築する - ねこの足跡R
新たにジョインしたプロジェクトでPM業務を担当することになりまして、古来から伝わりしRedmineを準備した際のメモです。……本当は今をときめくClickUpあたりを使いたかったんですが予算の兼ね合いで泣く泣くw Backlogは昔から肌に合わないのとカスタマイズが効かないので候補から外しました。 ゼロからRedmin...

手順説明

Lightsail から Redmine のインスタンスを起動

  • AWS で Lightsail のサービスを選択し、以下の画面より「Create Insatance」を選択する
  • 以下のように Redmine を選択
  • 「Change SSH key pair」からキーペアを作成し、プライベート鍵(***.pem)をダウンロードする(この際、鍵は忘れたらやばいので絶対保管する)
    また、「Enable Automatic Snapshot」をチェックする。これでバックアップが毎日実行される

  • サービスプランを選択する。
    とりあえず今回は「t2.micro」と同等のものを選んでみる。たぶん動くはず
    インスタンス名は適当でOK

以上で Redmine 入りのインスタンスが起動します。
超楽ちん。

固定IPを割り振る

ここがちょっと悩みどころです。
ドメインは固定にしたいけど、個人的には別にIPアドレスは固定じゃなくてもいいんです。
しかし、Route53でドメインとIPアドレスをマッピングさせる必要があるので、固定IPにしておかないとドメインからのアクセスができないっぽい。

そういう意味では、ALBがある場合は、Route53とALBをマッピングできるのでIPアドレスを固定にしなくてよいのだが・・・ALBがコスト高い(月額2000円以上?)ので静的IPアドレスを割り当てるのが多分最適解な気がします。

(追記:どっちにしてもhttps対応するなら、Route53使わないにしてもIPアドレスを固定にしないといけない)

ということで、IPアドレスを固定します。

  • 下記選択後、「manage」を選択する
  • 以下順に実施
  • 静的IPアドレスの名前を付けて、アタッチする

以上で固定IP割り振り完了です。

注意として、インスタンスを削除しても、固定IPは自動で削除されない。固定IPは残ったままだと課金対象となるので、手動で削除しないといけないです。
また、最大で1アカウントで1リージョンごとに5個までしか固定IPは作れないとのこと。(厳密にはAWSに申請したら上限解放されるとのこと)

ただし、EC2インスタンスにアタッチできる「Elastic IP アドレス」とは個数カウントは別枠のようなので、Elastic IP アドレス5個使用していても、Lightsail でも新しく最大5個の固定IPアドレスを割り振ることができるっぽいです。

ドメイン登録

Route53 を使用してドメイン登録します。

Lightsail からでもDNS設定できるっぽいけど、既に別のサービスでRoute53でドメイン登録しており、今回はそのサブドメインでRedmineを使用するつもりなので、私はRoute53で登録しました。

  • Route53 を開き、サブドメインを登録するためのホストゾーンを選択する
    • ちなみに今回使っているドメインは、freenomというサービスを使用して無料で取得しています。(.tkというドメイン)
  • レコードを作成を選択
  • レコード情報を入力
    • 「レコード名」はURLとなる任意のサブドメイン名
    • 「レコードタイプ」は「A」を選択
    • 「値」に、Lightsailで設定した固定IPアドレスを入力

この段階で、ドメイン名をURLに入力すると、redmineのトップページが表示されました。

すごい、もうできている・・・!

IPアドレスによるアクセス制御

社内からのみアクセスできるようにIPアドレスのフィルタリング設定をします。

  • 以下の画面から変更をします
    • SSH、HTTP、HTTPSの3パターンで設定が必要なので注意(運用によってはHTTPは潰してもいいかも)
    • アドレスレンジがある場合は、192.168.0.1-192.168.0.10 みたいに指定可能

これでOKなので、手元で社内からアクセスできてスマホからはアクセスできないことを確認します。

HTTPS 対応する

方針

HTTPSに対応するには、SSL証明書が必要になります。
ALBを使用する場合は、ACMで無料でSSL証明書を発行できてALBに証明書を適用することでHTTPSを実現できるのですが、ALBは料金が高いです。(ACMが無料でもALBが高いの意味ないです)
そのため、Let’s Encrypt という無料でSSL証明書を発行してくれるサービスを利用し、インスタンスに証明書を適用することでHTTPSを実現するようにします。

手順

結構複雑です。インスタンスにSSH接続して、コマンドでいろいろやる必要があります。

1. SSH 接続する

大まかに、①ブラウザからアクセスする方法と、②ローカルのssh接続クライアント(TeratermとかPowershellとか)からアクセスする方法の2通りがあります。
①の場合は接続元はAWSを経由することになりますので、今回はIPアドレスでアクセス制御をしている都合上、②のやり方で接続します。

Powershell で以下のように入力することでアクセスができます。

ssh bitnami@<インスタンスのIPアドレスまたはドメイン> -i <秘密鍵(***.pme)のパス>
2. Bitnami HTTPS Configration tool(bncert-tool)で設定する
訂正

どうやら Let’s Encrypt の設定をする際には、IPアドレス制限をしていると設定がうまくいかないみたいです。なので、事前にHTTPとIPアドレス制限は外すか、この作業の後にIPアドレス制限をする必要があります。

さらに追記

Let’s Encrypt がSSL証明書の発行する際にはHTTPを使用するらしい。なので、HTTPについてはIPアドレス制限を外すのがよいかも。RedmineをHTTPSで公開するなら、HTTPでアクセスできるものは存在しないため。
もしそれでもIPアドレス制限をかけたい場合は、こちらが参考になる。

どうやら Bitnami で Let’s Encrypt を導入アシストするツールがデフォルトで入っているらしく、それを使用します。

sudo /opt/bitnami/bncert-tool

以下、ウィザード形式で設定していきます。

----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.

----------------------------------------------------------------------------
Domains

Please provide a valid space-separated list of domains for which you wish to
configure your web server.

Domain list []: #ここにドメインを入力する

The following domains were not included: www.xxx.tk. Do you want to add them? [Y/n]: # www を付加してもアクセスできるようにするか。とりあえず今回はnにした

Warning: No www domains (e.g. www.example.com) or non-www domains (e.g.
www.example.com) have been provided, so the following redirections will be
disabled: non-www to www, www to non-www.
Press [Enter] to continue: # Enterを押すだけ
----------------------------------------------------------------------------
Enable/disable redirections

Please select the redirections you wish to enable or disable on your Bitnami
installation.

Enable HTTP to HTTPS redirection [Y/n]: # httpアクセスされたときにhttpsにリダイレクトするかどうか。Yにします。
----------------------------------------------------------------------------
Changes to perform

The following changes will be performed to your Bitnami installation:

1. Stop web server
2. Configure web server to use a free Let's Encrypt certificate for the domains:
xxx.tk
3. Configure a cron job to automatically renew the certificate each month
4. Configure web server name to: xxx.tk
5. Enable HTTP to HTTPS redirection (example: redirect
http://xxx.tk
to https://xxx.tk) 6. Start web server once all changes have been performed Do you agree to these changes? [Y/n]: # 確認OKならY ---------------------------------------------------------------------------- Create a free HTTPS certificate with Let's Encrypt Please provide a valid e-mail address for which to associate your Let's Encrypt certificate. Domain list: xxx.tk Server name: xxx.tk E-mail address []: # Let's Encrypt に登録するメールアドレス The Let's Encrypt Subscriber Agreement can be found at: https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: # Y

これで https アクセスできるようになりました。
また、http でアクセスしても https へリダイレクトされます。

なお、Let’s Encrypt は証明書の期限が3か月とのことですが、bitnami には更新用のcronが存在しているらしく、毎日定期的に更新してくれるそうです。

Redmine に初回ログインする

どうやら初回ログイン用のIDとパスワードは、ssh接続してインスタンスの中身を除くことで確認できる仕様とのことです。

ssh接続し、以下を実行します。

cat ~/bitnami_credentials
Welcome to the Redmine packaged by Bitnami

******************************************************************************
The default username and password is 'user' and 'xxxxxxxx'.
******************************************************************************

You can also use this password to access the databases and any other component the stack includes.

Please refer to https://docs.bitnami.com/ for more details.

上記の user がユーザーIDで、 xxxxxxxx がパスワードになります。

ここまででいったんRedmineを使用できるようになったので終了します。

次はプラグインとか入れたり初回設定します。

コメント

タイトルとURLをコピーしました