Docker で Redmine をラズパイの自宅サーバーにお手軽構築

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

前回は SoftEther VPN を Raspberry Pi の自宅サーバーにインストールして、自宅ネットワーク環境内のサーバー群にアクセスできるようにしました。今回は、 Redmine をインストールしようと思います。環境は、 Rapberry Pi OS + Docker ですね。

Why Redmine?

Redmine JP の公式サイトによると、Redmineは、

「プロジェクトの進捗を管理したい」、「チームのタスクをメンバーと共有したい」、「順調に進捗しているのかチームで共有したい」、このような会社やチームで取り組むべき業務やプロジェクトの作業を記録・管理したり社内で情報共有ができます。

となっています。タスク管理ツールとしては、カンバン方式の Trello とか、オンプレミスであれば当サイトでも紹介した Wekan なんかがあります。もちろん、Outlook やら Gmail やらについているシンプルな Todo や、 Todoist なんかもあります。それはそれで、素晴らしいツール群です。

ただこれらのツールはどうしても視点が「個人」によってしまいます。カンバン方式の Trello や Wekan なんかは、複数人のタスクを俯瞰したり、自発的にタスクを引き取るような業務フローではいいのですが、全体的な順序の管理やらなんやらが難しいです。

一言で言うと、タスク管理ツールは定常業務のタスクを管理するのに向いていて、 Redmine はプロジェクト全体のタスクを管理するのに向いているからです。プロジェクト管理ツールとしては、 Backlog など他に有名なものもありますが、無料で好き勝手に使えるのが Redmine くらいなので、余り悩む余地はないでしょう(Lychee などの有料プラグインを入れるかどうか、はどこまで業務で使うかにもよるでしょう)。

定常業務とプロジェクト業務

毎日、マニュアル化できるようなタスクを行う業務で、企業が存続する限り業務が継続し、収益を獲得するのが定常業務。

一方、業務に期限や終着点が存在して成果物を定常業務に引き渡すのがプロジェクト。

企業によっては、ほぼプロジェクトしかない企業もあれば、定常業務以外がほぼなく、発生した場合は外部に委託する企業もある。コンサルタントや受託開発企業、大工さんなんかはほぼ全ての業務がプロジェクトとなる(営業活動やバックオフィス部分などは定常業務)。

楽介個人の感覚としては、「営業向き」とか、「バックオフィス向き」とか以前に、プロジェクト向きか定常業務向きかで適性を見てから人員を振るといいと思っています。楽介なんかは、完璧にプロジェクト業務向きで、定常業務が大嫌いですが、定常業務の方が「下」というわけでは絶対になく、大体の企業においては定常業務が収益の源泉であるため、軽視したり差別したりしてはいけません。

すでにタスク管理ツールを入れていて、「使いづらいな~」と思っていたら、自分の業務が「プロジェクト業務」であれば Redmine に乗り換えればいいと思います。しかし、特に不満がなかったり、定常業務の整理に苦労していたりするのであれば、 Redmine は向いていないと思います。個人のタスク管理と効率化には、 Taskchute もなかなかいいです。

タスク・スケジュール管理の決定版で生産性向上 TaskChute Cloud

Docker のインストール

※まだインストールしていない場合、インストールします。Dockerについて詳しくは、

sudo apt-get install docker.io
sudo usermod docker -aG $USER
sudo apt-get install docker-compose
sudo reboot

Redmine のインストール

docker-compose.yml のひな形がありますが、そのままだと設定に色々と不備があるので、変更します。

まずは、 Redmine の Docker イメージや永続化のためのファイルを格納するディレクトリを作成します。

mkdir redmine
cd redmine
touch docker-compose.yml

Raspberry Pi OSのデフォルトユーザーを使用しているので、 /home/pi/redmine ディレクトリが作成され、空の docker-compose.yml が作成されました。

version: '3.1'

services:
  redmine:
    image: redmine
    restart: always
    ports:
      - 3000:3000
    environment:
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PASSWORD: example
      REDMINE_SECRET_KEY_BASE: supersecretkey
    volumes:
      - /home/pi/redmine/plugins:/usr/src/redmine/plugins
      - /home/pi/redmine/themes:/usr/src/redmine/public/themes

  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: redmine
    volumes:
      - /home/pi/redmine/db:/var/lib/mysql 
  • ports は 3000:3000に変更しました。楽介の環境では 8080 ポートでは Nextcloud のコンテナが待ち受けているので、競合防止です(いくら Docker でも、host 側のportでは競合すると思います)。
  • データベースは公式では MySQL でしたが、 Nextcloud をMariaDBで動かしているのと、コミュニティベースの開発なのでMariaDBとしています。
  • DBのパスワードとDBのROOT パスワードは、セキュリティ上重要なので、16文字以上にします。
  • REDMINE_SECRET_KEY_BASE は、セッションcookie のエンコードに使われる? というようなことが書かれているので、これも適当に指定します。
  •  volumes にはそれぞれ作成した redmine ディレクトリの中に位置するようにマウントします。
    • redmine の plugins ディレクトリ
    • redmine の themes ディレクトリ
    • mariadb の mysql ディレクトリ
nano docker-compose.yml
docker-compose up -d

お好みのエディタで、 docker-compose.yml に書き込んだら、docker-compose up -d でDockerを起動します。

初回起動時には、イメージのダウンロードが行われるのでしばらく待ちます。

https://raspberrypi.local:3000/ にアクセスして、 Redmine のホーム画面が表示されれば、インストールは成功です。

Redmine の初期設定

Redmine は歴史が古く、ソフトウェア開発のプロジェクト管理に用いられてきたためか、他のモダンな Web アプリケーションと比べると素っ気なく、親切なチュートリアルもありません。インストールしたものの、「で?」となってしまうこともあると思います。

まずは、最初のユーザーとして、 admin の設定を行いましょう。メインメニューの右上にある「ログイン」から、admin アカウントにログインします。

初期のパスワードは「admin」です。ログインすると、パスワードの変更を求められるので、強固なパスワードに変更しましょう。パスワードを変更すると、続いてユーザーの個人設定画面に遷移します。

これはログインした状態で「個人設定」にアクセスすれば変更できるので、最初は適当で大丈夫です。日付だけは面倒なので、先にGMT+9 の Tokyo にしています。

続いて、「管理」メニューにアクセスします。

すると、図のように「デフォルト設定のロード」を推奨されます。ここでは推奨通りにデフォルト設定をロードします。基本的に、言語は「Japanese(日本語)」でいいと思いますが、もし違う言語がいい場合はドロップダウンリストから希望する言語を選択してください。

続けて、さらに日本語で使用するための設定を行います。

メインメニューで「管理」を選択し、左サイドメニューの中から、「設定」を選択します。

設定用のタブ付きのパネルが表示されるので、「表示」タブを選択します。

  • 「デフォルトの言語」を「Japanese(日本語)」
  • ユーザー名の表示形式を「姓 名」に(admin の設定をいじっていなければ、Admin Redmine)。

永続化の確認

sudo reboot

ssh から Raspberry を再起動して、設定が保存されること、OSと同時に起動することを確認します。

しなくてもいいですが、プロジェクト管理を始めた後に、全てのデータが消えたら……と思うとここできちんと確認することをお勧めします。

外部からのアクセス

このままだと、LAN 内の PC からはアクセスできますが、出先などからは当然アクセスできません。

SoftEther VPNをDockerで構築して、外部からローカルのサーバーにアクセスする

ルーターに穴をあけて、ポートフォワードを行うといった方法もありますが、 HTTP の暗号化も行われていない状況で外部に公開するのは非常にリスクがあります。公衆 wi-fi などでは傍受の危険が常にあります。

VPN は VPN で、設定によっては大きな危険を伴いますが、しっかり設定すればセキュリティを維持したまま自宅や社内イントラネットのサーバーへのアクセスを確保できます。

終わりに

一連の Raspberry Pi の中で一番簡単です。いや、 Docker を使っていて、 docker-compose.yml も公式にある程度用意されているので簡単で当たり前なんですが……。

  • OS は頑張ってソフトウェア RAID から起動
  • Nextcloud はクライアントの設定も必要、外部からのアクセスも考慮の必要があり。
  • VPN はセキュリティで最も気を遣わなければいけない部分+サーバー、クライアントの設定が必要

というのと比べて、 Redmine は極論、入れれば動くタイプの Web アプリケーションなので、入れるだけなら簡単です。一方で、プロジェクト管理という、上流工程で活用されるツールなので、入れればそれだけで簡単に仕事が捗る! という類のツールではありません。その点、 Nextcloud  なんかは、入れるだけでファイル共有が捗りますし、目に付いた機能を試すだけで業務が効率化するタイプですね。

何故、楽介が Redmine を導入したか、というと、 PMBOK に手を出してしまったから……としか言えません。 PMBOK というのが、プロジェクトマネジメントのための基本的な知識体系……という奴なのですが、「じゃあ具体的には!?」となることがとても多い方法論の集合なのです。

Redmine で書かれている方法論が全て実行できるか? と言われると難しい面も多そうですが(そもそもコミュニケーションとか)、できるだけ実践的に試してみて、記事として共有できればと思っています。

楽介でした。

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

最新の記事