☁️くもをもくもくまなぶ

クラウドコンピューティングサービスの学んだことを中心につらつらと書いています

個人的なRedmineを立ち上げてみる

Redmine

知名度はプロジェクト管理ツールの中でも相当なものかと思いますが、公式サイトでは以下の機能が参考までに紹介されています。

  • Multiple projects support
  • Flexible role based access control
  • Flexible issue tracking system
  • Gantt chart and calendar
  • News, documents & files management
  • Feeds & email notifications
  • Per project wiki
  • Per project forums
  • Time tracking
  • Custom fields for issues, time-entries, projects and users
  • SCM integration (SVN, CVS, Git, Mercurial and Bazaar)
  • Issue creation via email
  • Multiple LDAP authentication support
  • User self-registration support
  • Multilanguage support
  • Multiple databases support
Redmineの日本語コミュニティ
Redmineのクラウドサービス
Redmineの有料プラグイン
Redmine以外に私の周囲で使っていると聞くサービス

Redmineのインストール方法

https://www.redmine.org/projects/redmine/wiki/HowTos

  • OSはUnix(Solaris, FreeBSD)からLinux(Debian, RHEL)、Windows, MacOSと幅広く対応

過去、起動しないかなと思いつつAWSのt2.micro( 1vCPU, 1GiB )でも起動したことがあります。
とはいえスペックは利用者数とメモリはあるに越したことはないので、4GBあたりはあると不便なく使えるかと思います。


プラットフォームの検討

上記のように、OSへネイティブにインストールするとインストールは楽な一方で、
そのサーバに依存してしまうことから、コンテナを使って移送を容易にできる環境がよいと思います。

Docker Image

Redmine

https://hub.docker.com/_/redmine


実際にやってみる

環境の用意

18.04 LTSは2023年4月にサポート終了しますが、
20.04 LTSは2025年4月にサポート終了となります。
今回Dockerを使うのでDockerが稼働する環境であれば、
OSは問いません。18.04 LTSが手元にあるOSなので使っています。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.6 LTS"
$

SSHで接続できるようにします。

sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install openssh-server -y
Docker-Engineのインストール

https://docs.docker.com/engine/install/ubuntu/

公式手順から抜粋して実行します。

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update -y
sudo apt-get install ca-certificates curl gnupg lsb-release git -y
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] <https://download.docker.com/linux/ubuntu> \\
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Docker Composeのインストール

複数のDockerコンテナを操作できるようにDocker Composeをインストールします。

sudo curl -L "<https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64>" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Docker/Docker-composeの確認
$ docker -v
Docker version 20.10.13, build a224086
$
$ docker-compose -v
Docker Compose version v2.3.3
$

Docker コンテナ作成

参考にするGithub リポジトリ

https://github.com/sameersbn/docker-redmine

作成
cd ~
mkdir docker-data
mkdir docker-data/postgresql
mkdir docker-data/redmine
mkdir docker-data/redmine-logs
git clone <https://github.com/sameersbn/docker-redmine.git>
cd docker-redmine
docker-compose.ymlの編集
vi docker-compose.yml

i : insert モードにして、[:] + [%] + [d] を入力して [Enter] で既に入っている情報を削除し、
貼り付けて [:] + [w] + [q] を入力して [Enter] で保存して終了します。

{{< message_box color="warning" >}}
入力を間違えたときは、 [:] + [q] + [!] を入力して [Enter] で保存しないで終了します。
{{< /message_box >}}

version: '2'

services:
  postgresql:
    image: sameersbn/postgresql:9.6-4
    environment:
    - DB_USER=redmine
    - DB_PASS=password
    - DB_NAME=redmine_production
    volumes:
    - /home/ubuntu/docker-data/postgresql:/var/lib/postgresql

  redmine:
    build: ./
    image: sameersbn/redmine:4.2.3-2
    depends_on:
    - postgresql
    environment:
    - TZ=Asia/Tokyo

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=redmine
    - DB_PASS=password
    - DB_NAME=redmine_production
    - DB_SSL_MODE=prefer

    - REDMINE_PORT=10083
    - REDMINE_HTTPS=false
    - REDMINE_RELATIVE_URL_ROOT=
    - REDMINE_SECRET_TOKEN=

    - REDMINE_SUDO_MODE_ENABLED=false
    - REDMINE_SUDO_MODE_TIMEOUT=15

    - REDMINE_CONCURRENT_UPLOADS=2

    - REDMINE_BACKUP_SCHEDULE=
    - REDMINE_BACKUP_EXPIRY=
    - REDMINE_BACKUP_TIME=

    - SMTP_ENABLED=false
    - SMTP_METHOD=smtp
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=mailer@example.com
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=:login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=mailer@example.com
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_INTERVAL=30

    ports:
    - "10083:80"
    volumes:
    - /home/ubuntu/docker-data/redmine:/home/redmine/data
    - /home/ubuntu/docker-data/redmine-logs:/var/log/redmine
コンテナの起動

sudo docker-compose up -d

$ sudo docker-compose up -d
[+] Running 3/3
 ⠿ Network docker-redmine_default         Created                                                                                                                                                    0.2s
 ⠿ Container docker-redmine-postgresql-1  Started                                                                                                                                                    1.1s
 ⠿ Container docker-redmine-redmine-1     Started                                                                                                                                                    2.1s
$
コンテナの確認

sudo docker-compose ps

$ sudo docker-compose ps
$ sudo docker-compose ps
NAME                          COMMAND                  SERVICE             STATUS              PORTS
docker-redmine-postgresql-1   "/sbin/entrypoint.sh"    postgresql          running             5432/tcp
docker-redmine-redmine-1      "/sbin/entrypoint.sh…"   redmine             running             0.0.0.0:10083->80/tcp, :::10083->80/tcp
$

起動しているサーバの port 10083 をコンテナ内部の port 80に転送しているので、http://xxx.xxx.xxx.xxx:10083/ へアクセスしてください。
user/passwordは admin/admin となっているので、ログイン後にパスワード変更してください。

コンテナの停止

sudo docker-compose stop

$ sudo docker-compose stop
[+] Running 2/2
 ⠿ Container docker-redmine-redmine-1     Stopped                                                                                                                                                    1.9s
 ⠿ Container docker-redmine-postgresql-1  Stopped                                                                                                                                                    0.3s
$
Redmineのプラグイン追加

一度、コンテナを起動しているとホスト側に
/home/ubuntu/docker-data/redmine/plugins が作成されているので、プラグインファイルを配置します。

$ pwd
/home/ubuntu/docker-data/redmine/plugins
$
$ ls -l
合計 0
$
  • Redmine Banner - Redmineの画面上部にバナーを表示
git clone <https://github.com/akiko-pusu/redmine_banner.git>
  • absolute_dates - 標準の相対表示(○日前)を絶対表示(yyyy/mm/dd)
git clone <https://github.com/suer/redmine_absolute_dates.git>
  • Redmine Issue Templates - チケットのテンプレートを作成
git clone <https://github.com/akiko-pusu/redmine_issue_templates.git>
  • Work Time Plugin - 工数管理
git clone <https://github.com/tkusukawa/redmine_work_time.git>
  • Redmine Japanese Help - ヘルプページを日本語サイトへ変更 ※標準では英語
git clone <https://github.com/suer/redmine_japanese_help.git>
  • Clipboard image paste - 画像をクリップボードから貼り付けることが可能
git clone <https://github.com/peclik/clipboard_image_paste.git>

プラグインフォルダにダウンロードしたそれぞれのディレクトリが作成されていることを確認し、
作業フォルダに戻り再度コンテナを起動します。

$ pwd
/home/ubuntu/docker-data/redmine/plugins
$
$ ls
clipboard_image_paste  redmine_absolute_dates  redmine_banner  redmine_issue_templates  redmine_japanese_help  redmine_work_time
$
$ cd ../../../docker-redmine/
$ pwd
/home/ubuntu/docker-redmine
$
$ ls
Changelog.md  LICENSE   README.md  assets                      docker-compose-mysql.yml    docker-compose-ssl.yml  entrypoint.sh    support
Dockerfile    Makefile  VERSION    docker-compose-mariadb.yml  docker-compose-sqlite3.yml  docker-compose.yml      make_release.sh  test
$
$ sudo docker-compose up -d
[+] Running 2/2
 ⠿ Container docker-redmine-postgresql-1  Started                                                                                                                                                    0.7s
 ⠿ Container docker-redmine-redmine-1     Started                                                                                                                                                    1.9s
$

http://xxx.xxx.xxx.xxx:10083/ にアクセスして、
管理 > プラグイン に移動すると、先程ダウンロードしたプラグインが読み込まれている状態になっているはずです。

Image in a image block

まとめ

Docker/Docker-Composeで起動するので、サーバOSに依存せずに管理できる点は一つのメリットになると思います。
また、Redmine/PostgreSQLのコンテナイメージはすでにありふれているので今回も既に形が出来上がっている状態からでした。

Dockerで運用になれてくれば、kubernetes(k8s)やクラウドが提供するコンテナ環境への移行も容易になります。
まずはサーバへのネイティブインストール、仮想環境(VMware, ESXi, Hyper-V)の依存から脱却に向けて一歩になると思います。

Docker Engineが稼働するホストのバックアップからリストアしても多くは復旧できるとは思いますが、
コンテナごとに保存することも可能なので、これらを組み合わせることでよりデータの保全、移行にも踏み込んで対応が可能になると思います。http://docs.docker.jp/v19.03/engine/reference/commandline/save.html

この記事が誰かの参考になれば幸いです。