カテゴリー: redmine Page 9 of 11

redmine上のチェックリスト。(redmine_markdown_task_list導入)

Markdwon書式でのチェックリスト

TyporaなどのMarkdownエディタで

- [ ] やることA
- [x] やることB

と入力するとチェックリストとして表示されます。

これをredmine上で表現するためのプラグインを導入しました。

redmine_markdown_task_list インストール

参考:
https://qiita.com/EichiSanden/items/87ac4aaeb754341775a9

手順

cd /var/lib/redmine/plugins
# プラグインが格納されているディレクトリ
sudo -u www-data git clone https://github.com/eichisanden/redmine_markdown_task_list.git
systemctl restart apache2

DBのマイグレーション要らず、配置後に再起動するだけでした。

結果

画像

と入力したものが

画像

となりました。

redmine_checklistプラグインと異なり、チケットのコメント上でもknowledgebase上でも追加できるのが便利です。

redmineのファイルサーバ化。(dmsfプラグイン導入→ 別記事に2023/02/03時点での手順を記載)

要注意

2023/02/03時点での手順はこちらになります。

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/39

恐れ入りますが、上記を参照ください。

かつて以下に書かれていた手順はバージョンアップにより正常に動作しません。(なので消去しました)

導入のきっかけ

redmineの「ファイル」機能は便利ですが、以下の問題点がありました。

  • プロジェクトごとにファイルを探す必要がある。
  • ファイルをまとめてダウンロードできない。
  • 可能であれば宅内NWから直接やりとりをしたい。
  • 履歴管理はできるか?

そんな中で、うってつけのプラグインを発見しました。

動作確認環境

  • Linux Mint 20.03
  • redmine ver 4.2

redmine_dmsf概要

https://github.com/danmunn/redmine_dmsf

これ以降の手順は消去

redmineプラグイン:local avater導入。

概要

redmine、ユーザのアイコンを外部サービスで入れ替えることができますが、redmineのみで完結させるようにプラグインを導入しました。

手順

すべて管理者権限で実施しています。

cd /var/lib/redmine/plugins/
# 自分のredmineプラグインのパスに移動します
sudo -u www-data git clone https://github.com/taqueci/redmine_local_avatars.git
bundle install
bundle exec rake redmine:plugins RAILS_ENV=production
systemctl restart apache2

導入後

ログイン > 個人設定に「アバターの変更」というボタンが表示されます。

画像をアップロード後、変更を確認。

rsyncdとlsyncdによるリアルタイム同期。

自宅サーバのredmineの耐障害性を高めるため、

flowchart LR Redmine -- rsyncによる転送--> Backup

を仕込みました。

環境

  • バックアップ元(Linux Mint 20.03)
  • バックアップ先(Kubuntu 20.04)

共にrsyncdはインストールされています。

参考:
https://www.server-world.info/query?os=Ubuntu_18.04&p=rsync
https://www.server-world.info/query?os=Ubuntu_18.04&p=lsync

バックアップ先の設定:

vi /etc/rsyncd.conf
ファイル内容
[backup]
path = /home/backup/redmine
hosts allow = [バックアップ元のIPアドレス]
hosts deny = *
list = true
uid = www-data
gid = www-data
read only = false

バックアップディレクトリ作成

mkdir /home/backup/redmine
chown -R www-data:www-data /home/backup/redmine

systemctl restart rsync.service

バックアップ元の設定:

rsyncのテストを行う。

rsync -avz --delete /home/hoge/test.txt バックアップ先::backup

バックアップ先にtest.txtが格納されることを確認しました。

lsyncdのインストール

aptitude install lsyncd
mkdir /etc/lsyncd
vi /etc/lsyncd/lsyncd.conf.lua

ファイル内容

settings{
    logfile="/var/log/lsyncd/lsyncd.log",
    statusFile = "/tmp/lsyncd.stat",
    statusInterval = 1,
}
sync{
    default.rsync,
    source="/var/lib/redmine/",
    # redmine配下をまるごとバックアップします。
    target="[バックアップ先]::backup",
}

lsyncdのログ設定

mkdir /var/log/lsyncd
vi /etc/logrotate.d/lsyncd
ローテーションファイルの内容
/var/log/lsyncd/*.log {
        missingok
        notifempty
        copytruncate
        compress
}

サービス反映

systemctl restart lsyncd
systemctl status lsyncd
systemctl enable lsyncd

リアルタイムの設定確認

tail -f /var/log/lsyncd/lsyncdlog
#別ウィンドウで開きます
cd /var/lib/redmine
touch test.txt

ファイル追加後、ログに以下を確認。

Fri Apr 15 20:38:41 2022 Normal: Calling rsync with filter-list of new/modified files/dirskup/ finished.
/test.txt
/
Fri Apr 15 20:38:41 2022 Normal: Finished a list after exitcode: 0
rm test.txt

ファイル削除後、ログに以下を確認しました。

Fri Apr 15 20:39:51 2022 Normal: Calling rsync with filter-list of new/modified files/dirs
/test.txt
/
Fri Apr 15 20:39:52 2022 Normal: Finished a list after exitcode: 0

まとめ

により、要のDBのバックアップとリストアができたことは確認済み。

後は復旧できるかどうかを試してみます。

ローカルredmineのSSL化。-ローカル証明書のインストールと常時SSL化-

この記事の続きです。

ここでは、mkcertで作成したローカル証明書をredmineサーバに入れておきます。

また、

  • httpを強制的にhttpsにリダイレクト
  • http://ip or DNS名 のアクセスをhttps://ip or DNS名/redmineへとリダイレクトする

設定も同時に入れ込みます。

redmineサーバ上での設定

必要なモジュールの有効化

a2enmod ssl
a2enmod rewrite
systemctl restart apache2
ss -lntp
# 443ポートがLISTENされていることを確認します

証明書ペアの格納

mkdir /etc/certs/
mkdir /etc/private/

その後、

/etc/certs → SSL証明書

  • corn.wall.crt.202204

/etc/private/ → 秘密鍵

  • corn.wall.key.202204

をそれぞれ格納します。

証明書ペアのシンボリックリンク化

後々のメンテナンスを考えて、証明書をシンボリックリンク化します。

cd /etc/certs/
ln -s corn.wall.crt.202204  corn.wall.crt
cd /etc/private/
ln -s corn.wall.key.202204 corn.wall.key

Virtualファイル記載

cd /etc/apahce2/site-available/
cp -pi redmine.conf /path/to/backup/redmine.conf.org
vi redmine.conf
redmine.confの内容
<VirtualHost _default_:80>
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        #http通信を強制的にhttpsにリダイレクト
</VirtualHost>

<VirtualHost _default_:443>
  SSLEngine on
    SSLProtocol All -SSLv2 -SSLv3  -TLSv1
    SSLCertificateFile /etc/certs/corn.wall.crt
    # 証明書
    SSLCertificateKeyFile /etc/private/corn.wall.key
    # 秘密鍵

        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^penzance\.corn\.wall
        RewriteRule ^/$ https://penzance.corn.wall/redmine/ [R]
        # https://penzance.corn.wallへのアクセスをhttps://penzance.corn.wall/redmine/にリダイレクト

Alias /redmine /var/lib/redmine/public
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
</Location>

</VirtualHost>

設定反映

apache2ctl configtest
# SyntaxOKを確認
systemctl restart apache2

再起動後、

  • redmineの通信がhttpsで行えること
  • ホスト名でアクセスしても/redmine/に移動すること

を確認しました。

補足とまとめ

  • セキュリティソフトによっては、このローカル認証局を「信頼できない」としてブロックする場合があります。その時はその設定を解除します。
  • また、mkcertsは開発用途なので外に出ていけないローカル環境での運用が前提です。
  • そのためか証明書の有効期限は3ヶ月。この運用をもっと楽にするのが今後の目標です

ローカルredmineのSSL化。-mkcertのインストール-

また、やりたいことに一歩近づきました。

  • 外に出ていけないローカルドメインでもSSL通信はしたい
  • 自己証明書と違った形でSSLを発行したい

という希望を求めていたら、「mkcert」なるものを発見したので、導入してみました。

redmineのSSL化

homebrewのインストール(検証機で実施する)

参考:
https://tdomy.com/2021/12/how-to-install-homebrew-on-ubuntu/

必要パッケージ取得

rootでは実行しないこと

sudo aptitude install libnss3-tools git curl

homebrewインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
test -r ~/.bash_profile && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >>~/.bash_profile
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >>~/.profile
brew --version
brew install hello
hello
brew uninstall hello

mkcertインストール

https://www.hivelocity.co.jp/blog/46149/

brew install mkcert
mkcert -install
mkcert -CAROOT
# ~/.local/share/mkcert配下にルート証明書とルート秘密鍵を確認
cd ~/.local/share/mkcert

mkcertで証明書発行

ここでは、自宅redmineに用いている

penzance.corn.wall

の証明書を発行します。

mkcert -key-file corn.wall.key.202204 -cert-file corn.wall.crt.202204 corn.wall penzance.corn.wall "*.corn.wall" 
openssl x509 -text -noout -in ./corn.wall.crt.202204 |grep DNS
# DNS:corn.wall, DNS:penzance.corn.wall, DNS:*.corn.wall と、入力したDNS名があることを確認します

次のエントリーでは、redmineにSSLを入れ込んでいきます。

redmineのアクセスログを統合。

Redmineのログ表示プラグインを導入しているのだから、ここにapacheのアクセスログを一緒にしました。

環境

  • Linux Mint 20.03(Ubuntu 20.04)
  • Redmine 4.2
  • Apache/2.4.41

前提

こちらの記事にある

  • redmineのログ管理プラグイン導入
  • redmineのログローテート設定

設定は行っているものとします。

また、redmineのproduction.logは/var/log/redmine配下に移動。(本来のログのところにシンボリックリンクを張っています)

手順

全てアクセス権限で行っています。

ログ設定

cd /etc/apache2/sites-available/
vi redmine.conf
追記内容
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log

システムへの反映

systemctl restart apache2

ログ確認(サーバ)

tail -f /var/log/redmine/access.log

を流しながら該当のredmineにアクセスし、ログが出ることを確認しました。

ログ確認(redmine)

  1. 管理者権限でログイン
  2. 管理>ログに移動
  3. /var/lib/redmine/log/access.logをクリック

しましたが、ここで404エラー。

サーバ側で

chown www-data:www-data /var/lib/redmine/log/access.log

を設定後、再度redmineのログを確認し、表示されていることを確認です。

RedmineのDBバックアップをcron化(2023年時の状況に合わせ修正)

無事にredmineのDBバックアップとリストアができていたので、それを定期的に取るように設定します。

バックアップ方針

  • データベースのダンプ取得は日ごとに行います。
  • 現時点でのバックアップ先はUSBメモリ。(16GB)
  • ローカル運用なのでここは割り切ります。
  • 別の手段は改めて考えます。

USBメモリのフォーマット

Linux MintのGUIで行いました。

/medhia/hoge/USBMEM

として作成。

ここから先は2023年2月時点の運用に併せ、以下のように修正しました。

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/40

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/43

Ubuntu 20.04ではcronのログをデフォルトで出力しなかったため、以下の通り設定。

https://www.server-memo.net/ubuntu/ubuntu_cron_log.html

そして、時間が来てバックアップが取れていることを確認しました。

RedmineのDBバックアップ/リストア検証試験

概要

redmineの障害に備え、DBのバックアップ/リストアの検証試験を行いました。

これはあくまでもDBのみでの結果です。添付ファイルやソースに関しては検討課題となります。

MySQL Dumpを行う

まずは公式サイトのように

https://redmine.jp/faq/system_management/backup/

mysqldump -u [redmineのDBユーザ] -p[DBパスワード] [DB名] > /バックアップ先のパス/backup.sql

と入力したら、以下のエラーが出てきました。

mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

1つめのWarning:

[以下引用]
これは、「警告:コマンドラインインターフェイスでパスワード使うのは安全ではない場合があります」というメッセージで、パスワードをそのままシェルスクリプトに記述するのは望ましくない、ということです。
(中略)
このWarningは、パスワードを外部ファイルから読み出すようにすれば出なくなります。

https://resource-sharing.co.jp/mysql-command-password-warning/

そこで、MySQLのユーザー名とパスワードを保存したファイルを別に作成します。

外部ファイル作成

vi dbaccess.conf

ファイル内容

[client]
user = [ユーザー名]
password = [パスワード]
host = localhost
# DBの接続先。

作成後、

mysql --defaults-extra-file=dbaccess.conf
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

とログインできることを確認しました。

Warning解消後のmysqldumpエラー

この外部ファイルを用いてmysqldumpを試みましたが

mysqldump --defaults-extra-file=dbaccess.conf -h localhost redmine > ./test.sql
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

このエラーを検索したところ以下の記事に行き当たりました。

https://www.koikikukan.com/archives/2021/02/17-235555.php

MySQLを5.7にバージョンアップしたことで、PROCESS特権が必要になるようです。
テーブルスペース情報をダンプする必要がないユーザーは、-no-tablespacesオプションを指定してmysqldumpを呼び出すことにより、前述の要件を回避できます。

そこで、もう一度試します。

mysqldump --defaults-extra-file=dbaccess.conf --no-tablespaces -h [DBサーバ] [DB名] > backup.sql

今度はエラーがありません。DBのバックアップが取れたことでいよいよリストア試験を行います。

DBリストア確認

リストア前準備

まず、バックアップが取れた状況で、トップページを編集します。


 ↓

リストア

mysql --defaults-extra-file=dbaccess.conf redmine < [取得したバックアップsql]
sudo systemctl restart apache2

httpdサービス再起動後、

と、バックアップを取った直後に切り戻った後に戻りました。

ToDo

  • 定期バックアップのスケジュールをとる
  • 添付ファイルのバックアップを行う

などがありますけれど、まずはクリティカルな部分の検証が完了しました。

Chuwi Heroboxにインストールしたredmineに入れたプラグイン。

こちらは、以前にご紹介した記事の集大成的な記事ではありますが、「今後、一から作り直すときにそのままコピペできるようにした備忘録」を兼ねています。

redmineそのもののインストールや設定は過去に実施したので、これに倣います。

インストール

Gmailとの連携

テーマ変更(kodomo redmine)

環境

以下の環境で動作を確認しています。

  • Linux Mint 20.03
  • Ruby 2.70-p0
  • Rails 5.2.6.3
  • MySQL 8.0.28

プラグインをインストールする場所は、redmineのプラグインが格納されているディレクトリに読み替えてください。

View Customize ※mariadbでこれをインストールすると500エラーになる事象が発生しました。

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/onozaty/redmine-view-customize.git view_customize
cd ../
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

redmica_ui_extension

※Mermaid_Macroの差し替えです。

cd /var/lib/redmine/plugins/
sudo -u www-data git clone https://github.com/redmica/redmica_ui_extension.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

knowlegebase

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/alexbevi/redmine_knowledgebase.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

knowlegebaseでファイルが添付できない問題に対処

cd /var/lib/redmine/plugins
cd redmine_knowledgebase/app/views/attachments/
mv _links.html.erb ../_links.html.erb.org
systemctl restart apache2

Kanban

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/happy-se-life/kanban.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
sudo systemctl restart apache2

チケットテンプレート

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/akiko-pusu/redmine_issue_templates.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

チケットタグ

cd /var/lib/redmine/plugins/
sudo -u www-data git clone https://github.com/ixti/redmine_tags.git
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

導入後の設定

  1. 管理者権限でredmineにログインします。
  2. 管理>プラグイン>Redmine Tagsに移動します。
  • タグをサイドバーに表示する:タグクラウド(シンプル)
  • チケット数を表示する:チェックを入れる
  • オープンしているチケットのみ表示する:チェックを外す
  • カラー表示する:チェックを入れる

clipboard_image_paste

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/peclik/clipboard_image_paste.git clipboard_image_paste
systemctl restart apache2

ログローテーション

ログを参照するプラグインを導入

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/haru/redmine_logs.git redmine_logs
systemctl restart apache2

シンボリックリンク貼り替え

mkdir /var/log/redmine
chown www-data:www-data /var/log/redmine
cd /var/lib/redmine/log
mv *.log /var/log/redmine
cd ../
rmdir log
ln -s /var/log/redmine/ log
chown -R www-data:www-data log
ls -la log
# log -> /var/log/redmine/となっていることを確認

ログローテーション設定

cd /etc/logrotate.d
vi redmine

設定ファイル内容

/var/lib/redmine/log/*.log {
        missingok
        notifempty
        copytruncate
        compress
}

ログローテート実行

logrotate -d redmine
# テストして問題ないことを確認
logrotate -f redmine
# 強制的にローテーションさせる

用語集

cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/torutk/redmine_glossary.git redmine_glossary
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

pdf preview

プラグイン導入

aptitude install build-essential libmagic-dev ghostscript
cd /var/lib/redmine/plugins
sudo -u www-data git clone https://github.com/nanego/redmine_preview_pdf.git redmine_preview_pdf
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

設定変更

cd /etc/Image-Magick-6
cp -pi  policy.xml policy.xml.org

設定差分

   <policy domain="path" rights="none" pattern="@*"/>
   <!-- disable ghostscript format types -->
-  <policy domain="coder" rights="none" pattern="PS" />
+  <policy domain="coder" rights="read|write" pattern="PS" />
   <policy domain="coder" rights="none" pattern="PS2" />
   <policy domain="coder" rights="none" pattern="PS3" />
-  <policy domain="coder" rights="none" pattern="EPS" />
-  <policy domain="coder" rights="none" pattern="PDF" />
-  <policy domain="coder" rights="none" pattern="XPS" />
+  <policy domain="coder" rights="read|write" pattern="EPS" />
+  <policy domain="coder" rights="read|write" pattern="PDF" />
+  <policy domain="coder" rights="read|write" pattern="XPS" />

Message Customize

cd /var/lib/redmine
sudo -u www-data git clone https://github.com/ishikawa999/redmine_message_customize.git plugins/redmine_message_customize
cp -pir plugins/redmine_message_customize/35_change_load_order_locales.rb config/initializers/35_change_load_order_locales.rb
systemctl restart apache2

Page 9 of 11

Powered by WordPress & Theme by Anders Norén