Oracle Cloud infrastructure (OCI)の無料枠でRedmineを構築する

Docker

概要

Oracle Cloud Infrastructure (OCI)の Always Freeでは ArmベースのAmpereアーキテクチャのメモリ6GBのVMがなんと、インスタンスが最大4つまで立ち上げられます。

本手順ではOCIのApereのVM.Standard.A1.FlexインスタンスでRedmineサーバを構築する手順を記載します。

OCIの登録・インスタンスの作成

OCI のアカウント作成

OCIのAlways Freeが利用できるアカウントを作成ください。

リージョンは Japan central (大阪)を選択してください。東京リージョンではAmpereインスタンスが枯渇しており作成できないケースがあります。

インスタンスの作成

「コンピュート」→「インスタンスの作成」
「イメージとシェープ」 シェープ=Ampere, イメージ=Ubuntu で作成

メモリ6GBのインスタンスが無料で作成できてしまいます。

SSH用の秘密鍵ファイルはダウンロードしておいてください。SSH接続時に必要です。
※または、TeratermなどでSSH用の鍵を作成し公開鍵をアップロードしてください。

サブネットの編集

インスタンス情報からサブネットを選択し、TCP/UDP の 80 および 443を開放します。

サーバ構築

SSH接続

インスタンス作成時に設定した秘密鍵を利用し、インスタンスにSSH接続します。

私の環境ではなぜかTeratermで正常に接続できない事象があり、PuTTYで接続しました。

Docker, Docker-compose のインストール

Docker および Docker-compose をインストールしてください

参考 OCI + docker でWordPress環境を簡単構築する
https://qiita.com/Kai238/items/65f1bcc24084667e1a1f

フォルダの作成

/usr/docker/redmine

/usr/docker/redmine/redmine

/usr/docker/redmine/postgres

上記のフォルダを作成します。

docker-compose.ymlの作成

以下の通り、/usr/docker/redmine/docker-compose.ymlを作成します。

注意事項

・Ampereアーキテクチャではamd64系のイメージが正常に動作しないため、arm64向けのイメージを利用します。

・DNSの設定は別途実施してください(しない場合はIPアドレスでアクセス可能)


version: '3.7'

services:
    # Redmine
    redmine:
        image: arm64v8/redmine:4.2.8
        container_name: redmine
        ports:
            - '3000:3000'
        expose:
            - '3000'
        volumes:
            - ./redmine/files:/usr/src/redmine/files
            - ./redmine/log:/usr/src/redmine/log
            - ./redmine/plugins:/usr/src/redmine/plugins
            - ./redmine/public/themes:/usr/src/redmine/public/themes
        restart: always
        environment:
            REDMINE_DB_POSTGRES: postgres
            REDMINE_DB_PORT: 5432
            REDMINE_DB_DATABASE: redmine #Redmine用DBのインスタンス名
            REDMINE_DB_USERNAME: redmine #Redmine用ユーザー名
            REDMINE_DB_PASSWORD: xxxxx #DB user redmineのパスワード】
            TZ: Asia/Tokyo
        links:
            - postgres

    # DB
    postgres:
        image: arm64v8/postgres:14.5
        container_name: postgres_redmine
        volumes:
            - ./postgres/db-data:/var/lib/postgresql/data
            - ./postgres/initdb:/docker-entrypoint-initdb.d
        ports:
            - "5432:5432"
        restart: always
        environment:
            POSTGRES_ROOT_PASSWORD: ***** #DBのROOTパスワード
            POSTGRES_USER: redmine   #Redmine用ユーザー名
            POSTGRES_PASSWORD: ***** #DB user redmineのパスワード
            POSTGRES_DATABASE: redmine #Redmine用DBのインスタンス名
            TZ: Asia/Tokyo
       
volumes:
    redmine:
    postgres:

起動・動作確認

docker-compose up -d を実行し、起動

IPアドレスまたはドメイン名 ポート 3000で接続し表示されればOK(この時点ではSSL化していないため、httpでアクセスする)

SSL化

httpで正常にアクセスできることが確認できたら、SSL化します。

SSL化には、https-portalのコンテナを利用します。docker-compose.ymlに以下を追加し起動

最初は STAGE, FORCE_RENEWオプションをコメント化し、オレオレ証明書で接続できることを確認し、正規の証明書を取得するようにしてください。

Let’s encrypt の制限により週5回以上の更新を行うと取得できなくなります。

※DBのコンテナのTimezoneと、volumesの間に記載します。
   # SSL
    https-portal:
        image: steveltn/https-portal:latest
        ports:
            - '80:80'
            - '443:443'
        links:
            - redmine
        restart: always
        environment:
            DOMAINS: 'redmine.example.com -> http://redmine:3000'
            #STAGE: 'production'
            #FORCE_RENEW: 'true'

動作確認

httpsで接続し正常に起動することを確認します。

https-portalのSTAGE, FORCE_RENEWオプションをコメントアウトした場合は、オレオレ証明書の確認後にコメントを外しインスタンスを再起動してください

初期パスワードはadmin/adminです。できる限り早くパスワードの変更及びadminの無効化を推奨します。