【Redmine】リバースプロキシ + Dockerを使ったインストールと初期設定

2024-02-10

前提条件

ストレージ容量を消費するため自宅サーバーで稼働(Docker Engineはインストール済み)。

VPSのYunohostでリバースプロキシ(SSL終端)

Redmineをインストールするサブドメイン、SSL証明書はYunoHostで設定を済ませておきます。

ポイント

プラグインやテーマのインストールを楽にしたいのでローカルボリュームをマウントしています。

VPSのNginxでリバースプロキシしてHTTPS接続。

手順

動作確認のため「1.DockerでRedmineコンテナの作成」→「2.HTTPで接続」→「3.リバースプロキシの設定」→「4.HTTPSで接続」と進めています。

事前準備

自宅サーバー

Ubuntu DesktopにDocker Engineをインストール。

ファイアウォールを有効にしている場合はRedmineのポート(今回は8080)を開放して下さい。

ワーキングディレクトリは適宜作成してください。

VPS

Redmineのドメイン設定(登録・Let’s Encrypt証明書の取得)

DockerでRedmineコンテナの作成

docker-compose.yml

基本的な部分は参考サイトのままで、ローカルボリュームのマウントと、configuration.ymlを作成してメールサーバーを設定しています。

version: '3.1'
services:
  redmine:
    restart: always
    image: redmine:5.0.4-bullseye
    container_name: redmine
    ports:
      - 8080:3000
    environment:
      REDMINE_DB_POSTGRES: redmine-db
      REDMINE_DB_DATABASE: redmine
      REDMINE_DB_USERNAME: redmine_user
      REDMINE_DB_PASSWORD: redmine_password
      REDMINE_SECRET_KEY_BASE: supersecretkey
      REDMINE_DB_PORT: 5432
      REDMINE_PLUGINS_MIGRATE: "true"
    volumes:
      - /var/www/redmine/files:/usr/src/redmine/files
      - /var/www/redmine/log:/usr/src/redmine/log
      - /var/www/redmine/plugins:/usr/src/redmine/plugins
      - /var/www/redmine/public/themes:/usr/src/redmine/public/themes
      - ./configuration.yml:/usr/src/redmine/config/configuration.yml
  redmine-db:
    restart: always
    image: postgres:15.1-bullseye
    container_name: redmine-postgresql
    ports:
      - 5432:5432
    environment:
      POSTGRES_DB: redmine
      POSTGRES_USER: redmine_user
      POSTGRES_PASSWORD: redmine_password
    volumes:
      - vol_redmine_db:/var/lib/postgresql/data
volumes:
  vol_redmine_db:

configuration.yml

メール設定だけですが、内容は適宜修正してください。

default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "メールサーバーのアドレス"
      port: ポート番号
      authentication: :login
      domain: 'メールサーバーのドメイン名'
      user_name: 'ログインアカウント'
      password: 'パスワード'

HTTPで接続(コンテナの動作確認)

コンテナ起動後、自宅サーバーのIPアドレス:8080で接続できる事を確認します。

configuration.ymlを作成せずに起動するとエラーになるので、事前に作成して下さい。

sudo docker compose up -d

リバースプロキシの設定(Nginx)

RedmineにアクセスするドメインにRedirectアプリをインストールします。

redirect.conf

/etc/nginx/conf.d/Redmineのドメイン.d/redirect****.confを修正します。

特に修正しなくても動作はしますが添付ファイルのサイズ上限は1MBのため、必要に応じてファイルサイズの上限を変更して下さい。

#sub_path_only rewrite ^/$ / permanent;
location / {

  proxy_pass        http://RedmineサーバーのIPアドレス:ポート番号;
  proxy_redirect    off;
  proxy_set_header  Host $host;
  proxy_set_header  X-Real-IP $remote_addr;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header  X-Forwarded-Host $server_name;
  proxy_set_header  X-Forwarded-Port $server_port;

  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";

  # Include SSOWAT user panel.
  include conf.d/yunohost_panel.conf.inc;
  more_clear_input_headers 'Accept-Encoding';

  #必要に応じて追記
  client_max_body_size 50M;
}

サブディレクトリでの動作確認はしていません。

HTTPSで接続

ブラウザでRedmineのドメイン名からHTTPSで接続できる事を確認します。

参考サイト

備考

自分用のガントチャートを簡単に作ることが目的のため現状ではプラグインもあまり入れていません。

OpenProjectを使おうと思っていましたが、リバースプロキシ構成では動作しなかったためRedmineに変更しました。