月: 2023年11月 Page 1 of 3

Redmineにチェックリストを追加。

海外のメンテナが作成した「Kanban Board Plugin」
そこに、ChecklistPluginがありました。その無料版インストールのメモです。

https://redmine-kanban.com/plugins/checklists

環境

  • Ubuntu 20.04
  • Redmine 4.2系
  • Apache 2.4系
  • MySQL 8.3系

さっくりとした手順

  1. DBのバックアップを取ります。
  2. プラグインを入手します。
  3. プラグインを配置します。
  4. プラグインのインストールを行います。
  5. 動作を確認します。

DBバックアップ

mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql

いざというときに切り戻しをできるようにします。

プラグイン入手

  • 作業ディレクトリ移動
cd /hoge && pwd

任意の作業用のディレクトリに移動します。

  • ファイルのダウンロード
wget https://redmine-kanban.com/files/redmine_advanced_checklists.zip
  • ファイル展開
unzip redmine_advanced_checklists.zip
  • 所有者変更
sudo chown -R www-data:www-data redmine_advanced_checklists

プラグイン配置

  • プラグインディレクトリを配置
sudo mv redmine_advanced_checklists /var/lib/redmine/plugins/

自分の環境に合わせます。

  • 配置確認
ls -ld /var/lib/redmine/plugins/redmine_advanced_checklists

ファイルがあることを確認します。

プラグインのインストール

  • Redmine配置ディレクトリに移動
cd /var/lib/redmine
  • Gemインストール
sudo -u www-data bundle install
  • DBのマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

インストール後の確認

  • Webサービス再起動
sudo systemctl restart apache2

その後、Redmineにアクセスして以下を確認します。

  1. Redmineにログインできること。
  2. 管理>AdvancedChecklistをクリック。

以下のようになチェックが出るので、必要に応じてチェックを入れます。(用いるチェックリストも入れます)

任意のチケットを開きます。

チェックリストという項目があります。右にある「+」をクリックします。

名前をつけて保存します。

項目を追加することができます。

これらは容易に追加できるので、作業漏れを減らすことができます。

また、並べ替えも容易です。

特徴と現段階の問題点

Pros:

  • ちょっとしたチェックリストを作ることができる。
  • 動作は比較的軽快。
  • 各チェックリストに担当者をアサインすることができる。

Cons:

無料版のため、以下は利用することはできません。

  • Kanbanと同じようにアイコンが表示されません。
  • このチェックリストは検索対象ではありません。

こちらに関しては、「参照したかどうか」の確認や、事前作業のチェックなどに使えるという印象です。

Redmineのかんばんプラグインを差し替え。

Redmineのかんばんプラグイン、
海外のメンテナが作成した「Kanban Board Plugin」
こちらの無料版を使ってみます。

https://redmine-kanban.com/plugins/kanban

環境

  • Ubuntu 20.04
  • Redmine 4.2系
  • Apache 2.4系
  • MySQL 8.3系

さっくりとした手順

  1. DBのバックアップを取ります。
  2. プラグインを入手します。
  3. プラグインを配置します。
  4. プラグインのインストールを行います。
  5. 動作を確認します。

※オプション※DBユーザーの権限変更

DBをバックアップできるようにします。

mysql -u root -p
GRANT RELOAD ON *.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;
EXIT

ユーザーはRedmineのDBユーザーを選んでください。

DBバックアップ

mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql

いざというときに切り戻しをできるようにします。

※オプション※既存プラグインの退避

HappySE LifeのKanbanプラグインを退避します。(その他のかんばんプラグインは勝手が異なります。注意してください)

cd /vaw/lib/redmine/plugin && pwd

自分の環境に合わせます。

sudo mv kanban /path/to/backup/directory/kanban_org

プラグイン退避確認

  • Webサービス再起動
sudo systemctl restart apache2.service

再起動後、以下を確認します。

  1. Redmineにアクセスできること
  2. かんばんプラグインがないこと

プラグイン入手

  • 作業ディレクトリ移動
cd /hoge && pwd

任意の作業用のディレクトリに移動します。

  • ファイルのダウンロード
wget https://redmine-kanban.com/files/redmine_kanban.zip
  • ファイル展開
unzip redmine_kanban.zip
  • 所有者変更
sudo chown -R www-data:www-data redmine_kanban

プラグイン配置

  • プラグインディレクトリを配置
sudo mv redmine_kanban /var/lib/redmine/plugins/

自分の環境に合わせます。

  • 配置確認
ls -ld /var/lib/redmine/plugins/redmine_kanban

ファイルがあることを確認します。

プラグインのインストール

  • Redmine配置ディレクトリに移動
cd /var/lib/redmine
  • Gemインストール
sudo -u www-data bundle install
  • DBのマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

インストール後の確認

  • Webサービス再起動
sudo systemctl restart apache2

その後、Redmineにアクセスして以下を確認します。

  1. Redmineにログインできること。
  2. 上部ツールバーに「Boards」というメニューができていること。
  3. このメニューをクリックして、以下のようにチケット一覧がかんばんとして配置されていること。

特徴と現段階の問題点

Pros:

  • 基本的なかんばんシステムは持っています。ドラッグ&ドロップでチケットの進行を可視化できます。
  • かんばん上のチケットをクリックすることで、概要の閲覧が可能です。

Cons:

  • 上記でわかるように、割り当てられていないステータスは文字が上下逆になっています。
  • また、アバターアイコンが見えません。

欠点があるものの、

  • チケットがモーダルで表示される
  • チケットのリンクもコピーできる
  • 詳細は別タブで開ける
  • Ajaxにより軽快な動作が行える

など、利点は大きいです。

ApacheコンフィグファイルによるIP拒否。(アドレスべた書き)

概要

WordPressなどの特定のディレクトリに対して攻撃を仕掛けてくるIPアドレスやNWをブロックする方法についてメモします。

環境

以下で動作を確認しました。

  • Ubuntu 20.04
  • Apache 2.4
  • /etc/apache2/site-available/example.confなど、バーチャルサイトを利用

さっくりとした手順

  1. バーチャルサイトのコンフィグのバックアップを取ります。
  2. コンフィグを追記します。
  3. 設定を反映します。
  4. 動作を確認します。

コンフィグファイルのバックアップ

  • ディレクトリ移動
/etc/apache2/sites-available && pwd
  • バックアップ
sudo cp -pi example.conf /path/to/backup/directory/example.conf.$(date +%Y%m%d)

バックアップするファイルやディレクトリは自分の環境に合わせます。

  • バックアップ確認
diff -u example.conf /path/to/backup/directory/example.conf.$(date +%Y%m%d)

バックアップがなければ(エラーがなければ)バックアップはできています。

コンフィグの追記

  • /etc/apache2/site-available/example.conf

以下のように追記します。

<Directory "/var/www/html/example">
    <RequireAll>
        Require all granted
        Require not ip 192.168.1.1
    </RequireAll>
</Directory>

拒否対象のディレクトリや、IPアドレスは対象に合わせて修正してください。

動作確認に万全を期すなら、自分が用意できるアクセス元のIPアドレスを指定します。(その後、設定を削除します)

  • 追記後の差分確認
diff -u /path/to/backup/directory/example.conf.$(date +%Y%m%d) /etc/apache2/site-available/example.conf

上記の追記内容が出ていることを確認します。

設定反映

  • 設定ファイル確認
sudo apache2ctrl configtest

SyntaxOKを確認します。

  • サービス再起動
sudo systemctl restart apache2.service

反映確認

  • 対象ディレクトリがあるサイトにアクセスして、通常にアクセスできることを確認。
  • 自分が用意できるアクセス元のIPアドレスを指定しているなら、そこからのアクセスができないことを確認。

今後の対応

  • ネガティブリストではなくポジティブリストでの運用
  • 別ファイルの参照

など、改良していきます。

本と教室。(その2)

このシリーズを買い足しました。

レゴのハリー・ポッターシリーズ、教科書&教室の

  • 闇の魔術に対する防衛術
  • 変身術
  • 占い学

の3種を買い足し、全て揃えることになりました。

変身術

以前の「魔法薬学」と同じような作りとは言え、この収納と展開ギミックを楽しみながら作っていきました。

闇の魔術に対する防衛術

こちらは『炎のゴブレット』準拠。なので、大きなチェストにもギミックが隠されていました。

いずれも、ブロックとは思えないパーツ群で構成されているので「世界的コンテンツとのコラボ」は凄いと思い知りました。

スタンドとホルダー。

情報カードを使い始めるようになって2ヶ月ちょい。更に文具が増えました。

使っていなかった万年筆の復活

自宅で書き物をする機会が更に増え、ペンケースを取り出すのも億劫になりました。

そこで、机にしまっていた万年筆を取り出してインクの補充。普段「背景」として用いていた樽型のケースに立てるようにしました。

ペンスタンド

アニメ版『ライザのアトリエ』のアクリルペンスタンドを入手。

これは「手帳に刺さっているペン」を区別するときに利用します。

情報カード用のペンホルダー

そして、情報カードを持ち歩くときのクリップボードに、ペンホルダーを取り付けました。

かつての「アイコン」。

まさかの、令和になっての立体化です。

Popup Parade 『機動戦艦ナデシコ』ホシノ・ルリ

旧Wordpressでもアイコンにしていたこのキャラクターの立体化。リリースと同時に予約をして、ようやく届きました。

開封&撮影

コンデジ

まずはコンデジによる分割撮影。比較的小ぶりながらも諸々の再現度が高かったです。

ミラーレス

服のロゴやら小物などの細かいところもアニメに沿って再現。

サイズ比較

かなり前にリリースされていたプライズ版との比較。Popup Paradeの商品コンセプトにあるように、かなり小さいサイズ感です。

このスケールですと、

1/12用に購入した小物とも合わせやすいので助かります。

Mod_Securityが検知したIDの抜き出し。(awkワンライナー)

Mod_Securityが検知したセキュリティポリシーの判定に役立つ小技です。

環境

  • Mod_Security
  • Apache2.4

を連携させ、SecRules On / DetectOnlyにしています。

ログ表示例

[Wed Nov 01 14:12:12.213885 2023] [:error](中略) ModSecurity: Warning. Pattern match (中略) at ARGS:html. [file "/usr/share/modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] [line "308"] [id "941190"] [msg "IE XSS Filters - Attack Detected."] (略)

ここから、941190の部分のみを取り出します。

コマンド

awk '{match($0, /\[id "([0-9]+)"\]/, arr); if(arr[1]) print arr[1]}' ログファイル

コマンド実行例

awk '{match($0, /\[id "([0-9]+)"\]/, arr); if(arr[1]) print arr[1]}' /var/log/bookstack/bs_error.log | sort -u
# 更に重複を排除

実行結果

941180
941190
942170
942350

これらを除外するなり例外に加えるなどの処理を行う下地ができました。

Redis-ServerでPIDが作られない問題に対処。

Nextcloudを導入する際、Redis-Serverを組み込むところを行いました。

その中に気になるメッセージがあったので対処します。

Starting Advanced key-value store...
redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after s>
 Started Advanced key-value store.

手順1. IPv6無効化

参考にしたURL:
https://ubuntu.perlzemi.com/blog/20200225174004.html

1-1.設定ファイルのバックアップを取ります。

  • ディレクトリ移動
cd /etc/redis && pwd
  • 設定ファイルバックアップ
sudo cp -pi redis.conf /path/go/backup/directory/redis.conf.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • バックアップ確認
diff -u redis.conf /path/go/backup/directory/redis.conf.$(date +%Y%m%d)

差分がなければ(エラーがなければ)バックアップ完了です。

1-2. 設定ファイルを編集します。

  • ファイル編集

次のファイルを、以下の差分になるように編集します。

/etc/redis/redis.conf
  • 差分
-bind 127.0.0.1 ::1
+bind 127.0.0.1

手順2. 起動スクリプトの編集

参考URL:
https://github.com/redis/redis/issues/7361

2-1.設定ファイルのバックアップを取ります。

  • ディレクトリ移動
cd /etc/systemd/system && pwd
  • 設定ファイルバックアップ
sudo cp -pi /etc/systemd/system/redis.service /path/to/backup/directory/redis.service.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • バックアップ確認
diff -u /etc/systemd/system/redis.service /path/to/backup/directory/redis.service.$(date +%Y%m%d)

差分がなければ(エラーがなければ)バックアップ完了です。

2-2.設定ファイルを編集します。

次のファイルを、以下の差分になるように編集します。

/etc/systemd/system/redis.service
-PIDFile=/run/redis/redis-server.pid
+#PIDFile=/run/redis/redis-server.pid
+ExecStop=/bin/kill -s TERM $MAINPID
+ExecStartPost=/bin/sh -c "echo $MAINPID > /var/run/redis/redis.pid" 

2-3. 設定ファイルを反映させます。

sudo systemctl daemon-reload

3. 修正を確認します。

  • redis-serverサービス再起動
sudo systemctl restart redis-server.service
  • 設定反映確認
systemctl status redis-server.service

次のように、PIDが作られていれば設定完了です。

    Process: 531 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
    Process: 653 ExecStartPost=/bin/sh -c echo $MAINPID > /var/run/redis/redis.pid (code=exited, status=0/SUCCESS)
   Main PID: 652 (redis-server)
      Tasks: 4 (limit: 4671)
     Memory: 4.4M
     CGroup: /system.slice/redis-server.service
             └─652 /usr/bin/redis-server 127.0.0.1:6379

Nextcloudの認証強化。(二段階認証アプリの設定)

Nextcloudをインターネット上で公開する場合、ほぼ必須の措置です。

環境

Nextcloud 27.1.3で挙動を確認しました。

二段階認証アプリの有効化

管理>アプリ>「あなたのアプリ」に移動します。

Two-Factor TOTP Providerを「有効にする」をクリックします。

二段階認証の設定

個人>セキュリティに移動します。

  1. 二要素認証の、TOTPを有効化します。
  2. QRコードが表示されるので、外部認証アプリ(Google Authenitcator等)でコードを読み取ります。
  3. 新しく表示されたコードを読み取って「検証」します。

アプリをなくした場合に備え、バックアップコードも作っておきます。

挙動

  1. 別のPC/ブラウザなどでNextcloudサイトにアクセスします。
  2. ユーザ名とパスワードを利用してログインします。
  3. 以下のようにコードの入力画面が出ます。

これで、ある程度の安全性が担保されました。

『Otaru1899』ソロプレイのルールメモ。

ボードゲーム『Otaru1899』購入理由の一つは、『イナゾー拡張』によってソロプレイが可能ということにあります。

このソロプレイのルールをメモしておきます。

ソロ概要

  • オートマカード(最新鋭ロボット「イナゾー」)と対戦を行います。
  • 難易度を3つから選べます。

イナゾーの特徴

  • イナゾーは初期資産も漁船も持ちません。
  • イナゾーは教育の必要がありません。(全て待機状態です)
  • イナゾーは紙幣/資源を持たず、得ることもありません。
    • そのため、農学校、開拓使村のアクションを解決する際、何も行いません。
  • 複数の投資や任命を行うことがあります。

セットアップ

プレイヤーの準備

  1. 共通ボードは1/2人用の面を使います。
  2. 通常通り、プレイヤー用の準備を行います。
  • 初期資産タイルはランダムに2枚引き、1枚を選びます。(そこから示された資源を得ます)
  • プレイヤーの開始時資源は、任意の資源を1つ選びます。

イナゾーの準備

  1. イナゾー用の個人ボードは、ワーカーのみ用意します。これら全てをワーカー置き場に置きます。
  2. ソロカード9枚を用意し、以下の難易度に合わせます。
  3. 上記、用意したソロカードをシャッフルして裏向きに置きます。
  4. 1枚を表向きに置いておきます。

イナゾーの難易度

  • イージー:レベル3のソロカード3枚を箱に戻します。
  • ノーマル:レベル3のソロカード3枚を箱に戻します。イナゾーは15名声点を持った状態でスタートします。
  • ハード:レベル1のソロカード3枚を箱に戻します。イナゾーは15名声点を持った状態でスタートします。

ゲーム進行

プレイヤーの先行でスタートし、互いに手番を繰り返します。

イナゾーの行動基準

イナゾーは、常に「4つのアクションスペースから、そこにある紙幣の金額が一番大きいアクションを実行します。

プレイヤーのターン時の行動

プレイヤーの行動

通常と同じです。

  1. 4種類のアクションエリアから、ポーンを「今置かれていないところ」に移動する。
  2. そこに置かれている紙幣を全て得る。
  3. そのエリアに隣接しているエリアに紙幣コマを1つずつ置く。
  4. エリアに沿ってトラックを動かす。
  5. アクションを実施する。

まで行います。

イナゾーの行動

その後、イナゾーはプレイヤーが選んだアクションを行いますが、以下が異なります。

プレイヤーのアクションが農学校/開拓使村の場合

イナゾーは何も行いません。

プレイヤーのアクションが中央小樽駅の場合
  • ソロカードに書かれた各数字(AP)に従って、小さい方から順に、そのAPを最大限使って実行できる処理を行います。
  • 行える処理がない場合(任命できるスペースが塞がれているなど)、そのAPは飛ばします。(何もしません)
  • イナゾー配下のワーカーは教育の必要がないため、直接、手駒のワーカーを送り込むことができます。
  • 複数の任命を取ることがあります。
  • アクション解決後、ソロカードの裏向きの山から1枚をめくります。
プレイヤーのアクションが基督教会の場合
  • ソロカードに書かれた各数字(AP)に従って、小さい方から順に、そのAPを最大限使って実行できる処理を行います。
  • 行える処理がない場合(APが足りない、タイルが全てなくなった等)、そのAPは飛ばします。(何もしません)
  • 複数の投資を行うことがあります。
  • これによってイナゾーがタイルを得た場合、全て裏向きでイナゾーの脇に置きます。
    • イナゾーは建物の効果を利用せず、有力者の表面から得点を得ることもありません。
  • アクション解決後、ソロカードの裏向きの山から1枚をめくります。

イナゾーのターン時の行動

  • そこにある紙幣の金額が一番大きいアクションにポーンを置きます。
  • そこに置かれている紙幣は全て共通ストックに戻します。(イナゾーは紙幣を得ることも支払うこともありません)
  • 隣接したエリアに紙幣コマを1つずつ置く、エリアに沿ってトラックを動かすまでは同じです。
  • 先のルールに従って、農学校/開拓使村の場合は何もせず、中央小樽駅/基督教会はカードに書かれたAPに従って処理を実行します。

ゲーム中に収穫/決算が発生した場合

収穫時

イナゾーは何も実行しません。

決算時

プレイヤーと同様、通常のルールに従って名声点を得ます。

最終得点計算

中央小樽駅の追加名声点

  • プレイヤーと同様の条件で、通常通り、名声点を得ます。
  • ワーカーを置いている団の得点条件タイルでは、イナゾーは、「それら全ての条件を持っている」ものとします。

タイルの追加名声点

  • イナゾーが獲得した即時有力者タイル1枚ごとに6名声点を得ます。
  • イナゾーが獲得した建物タイル1枚ごとに3名声点を得ます。

勝敗

  • イナゾーがプレイヤーより多くの点数を獲得した
    • プレイヤーの敗北です。
  • イナゾーとプレイヤーが同点
    • プレイヤーの敗北です。
  • イナゾーがプレイヤーより少ない点数を獲得した
    • プレイヤーが勝利します。

Page 1 of 3

Powered by WordPress & Theme by Anders Norén