カテゴリー: PC Page 1 of 42

Redmineの文字色変更を容易にするプラグイン導入(Redmine_wiki_text_colorizer)

概要

RedmineはMarkdwon準拠なので、タグによる文字色の変更が可能。

とはいえ、色指定や範囲が結構面倒です。それを解消するプラグインを導入します。

redmine_wiki_text_colorizer

動作確認環境

  • Ubuntu 22.04
  • Redmine 5.1
  • Apacheで稼働(実行ユーザはwww-data)

導入手順

例によって、SSH(または直接ターミナルに入っての)導入です。

ディレクトリ移動

cd /path/to/redmine/root/directory/plugins && pwd

自分の環境に合わせます。 (筆者の環境/home/www-data/redmine/plugins)

プラグイン導入

  • git clone
 sudo -u www-data git clone https://github.com/sk-ys/redmine_wiki_text_colorizer
  • clone確認
ls -ld redmine_wiki_text_colorizer

ディレクトリがあることを確認します。

  • apache(webサービス再起動)
sudo systemctl restart apache2.service

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

導入後の確認

Wiki、チケットやコメントの編集画面を表示します。

Wiki編集画面に、「A」のアイコンが2つ並んでいるボタンが追加されます。

文字を選択した後、このボタンを押すと文字色のパレットが表示されます。

任意の色を選ぶと、

選択した箇所がタグで囲まれます。(それと同時にボタンの色が選んだ文字色になります)

プレビュー/保存などで文字色が変わっていれば導入できています。

ポータブルゲーミングPC MSI-Clawを使ってのレビュー。

こちらを購入してから10日ほど経過。値下げセールも続いているので気になっている方もいると思いますので、実際に使った感想を述べます。

Pros

思ったよりもバッテリーが保つ。

公称2時間は大体当たっています。(とはいえ、プレイしているのが『ライザのアトリエ3』の標準画質)

輝度を半分以下に減らし、バッテリー節約モードにすればさらに保つのではという印象。

また、パフォーマンスを自動的に判別してリソースを調整するモードがあるため、このぐらいのゲームであれば問題なく動きます。

見た目ほど重くない。

やや大仰な印象でしたが、670gと、ちょっとしたタブレット程度。運用上、どうしても両手でホールドするため、重さは許容できる範囲です。

冷却ファンはあまり気にならず。(個人の感想)

背面の半分以上が冷却スペースを兼ねていることもあり、冷却性能は相当のものです。(ただし、後述する条件があります)

ファンの音もゲームにさわりがあるようなものではありませんでした。

安心できる1TBのSSD

Steamゲームには容量を必要とするゲームがそれなりに。なので、一般的な500GBのほぼ倍の1TBはかなり安心できます。

実際、2024/07/25現在、本機のSSD使用量は550GBほど。バッファがあるのはありがたいです。

Cons

ホットキーの連携がうまくいかないときがある。

背面2つのマクロボタンとコントローラーの組み合わせでスクリーンショットなどの機能を有していますが、これが時々つながりません。

ゲーム/本体を再起動すれば直りますが、確定する再現には至っていませんでした。

テザリングとの連携(仕様とも関係あり)

iPhoneのテザリングを用いてネットワークにつないでいますが、これが一定時間が過ぎると接続されません。

  • スマートフォンがiPhone 11と古い
  • 自動接続をオフにしている

の縛りがあるからかもしれないですが、セーブデータをクラウド上に保存するときに少々面食らいました。

運搬時の排熱

専用のキャリングケースは、あくまでも保護を優先としているため冷却は一切考慮していません。

なので、ゲームを一時中断してケースに入れると、たちまち排熱で本体が熱くなります。

そのため、

  • 電車の中などでプレイする場合はむき出しで
  • ケースに入れる際には電源を落とす

ことで、しっかり冷やす必要がありました。

現時点で

以上、自分が思った利点と欠点を述べましたが、

「通勤時間に自分の好きなゲームができる」

というのはライフスタイルというかQoLが上がるレベルです。

Redmineに「元に戻す」「やり直し」追加(Redmine Wiki Historyプラグイン)

概要

RedmineにWord / Excel等にある「アンドゥ」「リドゥ」を追加するプラグインで、誤消去などを防ぎます。

Redmine Wiki History

動作確認環境

  • Ubuntu 22.04
  • Redmine 5.1
  • Apacheで稼働(実行ユーザはwww-data)

導入手順

例によって、SSH(または直接ターミナルに入っての)導入です。

ディレクトリ移動

cd /path/to/redmine/root/directory/plugins && pwd

自分の環境に合わせます。 (筆者の環境/home/www-data/redmine/plugins)

プラグイン導入

  • git clone
 sudo -u www-data git clone https://github.com/sk-ys/redmine_wiki_history
  • clone確認
ls -ld redmine_wiki_history

ディレクトリがあることを確認します。

  • apache(webサービス再起動)
sudo systemctl restart apache2.service

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

導入後の確認

Wiki、チケットやコメントの編集画面を表示します。

このようにアンドゥ(元に戻す)、リドゥ(やり直し)ボタンが表示されます。

入力した後に取り消し/やり直しができていれば導入成功です。

スタンド&充電スペース。

購入したポータブルゲーミングPC「MSI Claw」の自宅での設置場所を決めました。

用意したのは充電スタンドを兼ねたドッキングポート。

充電コネクタがType Cのため、給電しつつ

  • USBポート
  • HDMIポート
  • 有線LANポート

を増設します。

この、有線がついているのが結構なポイント。これのおかげで重いゲームをダウンロードするときの効率化を図れました。

ただ、普通の充電スタンドと勘違いしてそのまま上に引っ張り出し、コネクタ(ケーブル)と取り違えることが数回あったので、底だけは注意が必要です。

また、この状態で給電するためには100W/65W対応のACアダプターとケーブルが必要だったことを付記しておきます。

モバイルゲーミングPC、開封。(MSI Claw)

到着:Claw A1M

これを購入した理由はいくつか。

平日のゲーム時間の確保。

これが最大の理由です。

平日、ゲームを集中して行うには電車での移動中が一番。そこでゲーム機が欲しいと思っていました。

既存ソフトウェア資産の流用。

本体価格は確かにSwitchの方が安かったものの、Steamの資産をそのまま使いたいという要望がありました。

必然的にSteamが動く機体となります。

軽さと価格。

Steam Deckを考えたものの、在庫的に入手できず。

  • Rog Ally
  • Legion Go

などが他の候補に挙がりましたけれど、Legion Goは思った以上に重く「電車の中でプレイする」という用途からは外れました。(価格もまた厳しいものがありました)

Legion Goの新型を間近に控えていましたがこれも価格がデスクトップに迫ります。

  1. 重さ
  2. 価格
  3. 容量(1TBのSSDがメインストレージ)

で10万円を切るということで、MSI Clawを選んだという次第です。

開封

内容は至ってシンプル。本体と電源アダプターのみと潔い構成です。

重さは実機でも確かめましたけれど、600g程度なのでタブレット程度と悪くありません。

そして、セットアップとSteamインストール、ゲームのダウンロードまでは完了。

軽めの3Dゲームはサクサク動くという印象。

液晶もクリアで小さな文字が潰れないというのは助かります。

実際のプレイ感などは更に検証していきます。

Growiサーバのnodeバージョンアップ。(18系→20系)

概要

Growi v7系の動作が安定してきたので、サーバのnodeのバージョンを18系から20系に切り替えます。

バージョンアップ前の環境

  • Ubuntu 22.04
  • Growi v7.0.12
  • node v18.20.3
  • npm 10.7.0
  • yarn 1.22.21

Dockerを利用していないオンプレ環境です。

さっくりとした手順

  1. 作業前に周知を行います。(複数ユーザーで運用している場合)
  2. メンテナンスモードに切り替えます。(またはサービスを停止します)
  3. n packageをインストールします。(インストールしていない場合)
  4. n packageを用いてnodeをバージョンアップします。
  5. nodeのバージョンアップを確認します。
  6. growiを再起動します。
  7. メンテナンスモードを解除します。(実行していた場合)

作業前の周知

単独で利用している場合はこれは不要です。

メンテナンスモードの切り替え

以下のいずれかを選んでください。

  • Growiに管理者権限でログイン後に設定→アプリ設定→「メンテナンスモードを開始する」
  • サーバでsudo systemctl stop growi.serviceを実行する(systemdに登録している場合)

n packageをインストール (インストールしていない場合)

sudo npm install n -g

これを用いてnode.jsをインストールしていきます。

n packageを用いてのバージョンアップ

  • node 20系にバージョンアップ
sudo n 20

バージョンアップ確認

node -v

v20.15.1を確認しました。(2024/07/12現在)

growiサービスの再起動

systemdに登録している場合の手順です。

sudo systemctl restart growi.service

再起動後、Growiにアクセスできることを確認します。

nodeバージョンアップ後の対応

  1. Growiに管理者権限でログインします。
  2. 設定を開き、システム情報でnodeがバージョンアップされていることを確認します。
  3. メンテナンスモードの切り替えを行った場合は、設定から解除します。
  4. 既存機能が使えることを確認します。

BookStack マークダウンエディタのチートシート(ショートカット)。

BookStackで記事を編集中、適当にキーボードを操作していたら、見出しが自動的に入ったので調べてみました。

https://www.bookstackapp.com/docs/user/markdown-editor

ショートカット一覧

ショートカット説明備考
Ctrl + S下書きを保存投稿して公開は下の機能を使います
Ctrl + Enterページを保存して公開
Ctrl + 1見出し(h2)## が入ります
Ctrl + 2見出し(h3)### が入ります
Ctrl + 3見出し(h4)#### が入ります
Ctrl + 4見出し(h5)##### が入ります
Ctrl + 5段落いわゆる\<p>です
Ctrl + 6段落いわゆる\<p>です
Ctrl + 7コードブロック```~```が入ります
Ctrl + Eコードブロック```~```が入ります
Ctrl + 8インラインコード`~`が入ります
Ctrl +O番号付きのリスト1. が入ります
Ctrl + P箇条書きリスト- が入ります
Ctrl + Kリンク挿入[]()が入ります
Ctrl + Shift + KBookStack内のリンク挿入ページ一覧がモーダル表示されます
Ctrl + Shift + IURL経由での画像挿入![](http://)が入ります

※Macを利用する方はCtrlをCommandに読み替えてください。

これらのショートカット、非常に便利。特に見出しとコードをシームレスに入力できるのは大きなアドバンテージでした。

Growi、再構築と今後の予定。

起きたこと

関東一円に発生した落雷の影響で停電発生。その時にGrowi用/リバースプロキシとして動かしていたミニPC(Chuwi Herobox)の電源がつかない事象が発生です。

  • Redmine用サーバ:OK
  • Nextcloud用サーバ:OK
  • Growi/Redmineへのリバプロ:NG

ある意味で、日常のログのみのGrowiだけで済んだのは不幸中の幸い。

生きているNextcloud用サーバにGrowiだけでも新規で入れることにします。

取り急ぎの対処: Ubuntu 20.04にGrowi v7.xを導入。

ここが結構詰まりました。自宅環境はUbuntu20.04だったので、割と勝手が違っていたのです。

元々入っていたnodeのバージョンが低かった

sudo curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash
sudo aptitude install nodejs

として、14→18に修正。

検証として使っていたmongodのデータが邪魔をしていた

mongodbもそれに伴い再設定を行いました。

sudo apt purge mongo*

として設定ファイルを含めて全削除。

sudo mv /var/lib/mongodb /path/to/backup/directory/mongo_$(date +%Y%m%d)

で既存データも全て退避させます。

DNSの切り替え

これは一瞬で済みました。

Growiの再インストール

ここからはこの手順通りに。

https://barrel.reisalin.com/books/growi/page/ubuntu-2204growi-v7x

OSのバージョンが一段落ちていてもなんとかインストールまで済ませました。

今後の課題

「自宅用サーバが一つ壊れた」という事実に揺るぎはなく。

新たなPCを購入する必要がありますが、今使っているChuwi の Heroboxのような安価でファンレスPCがない(後継機からファンがつくようになりました)問題に直面しています。

とはいえ、ファンレスが熱暴走に弱いというのもまた事実ですし、昨今のWebアプリがCPUパワーを相当に必要とすることからも、抜本的なハードウェアの再考に迫られています。

Ubuntu 20.04のOpenSSLのEOL対応並びにOpenSSHの脆弱性対応

概要

  • Ubuntu 20.04をインターネットに公開している
  • 諸々の事情で22.04にアップグレードできない
  • 2023/09/11にサポート終了となったOpenSSLの1.1.1をアップグレードしたい。
  • OpenSSHの脆弱性、CVE-2024-6387 の対応を行いたい

方を対象としています。

参考環境

OS:Ubuntu 20.04

  • OpenSSLのバージョン確認
openssl version -a
OpenSSL 1.1.1f  31 Mar 2020
built on: Wed May 24 17:14:51 2023 UTC
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-mSG92N/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific
  • OpenSSHのバージョン確認
ssh -V
OpenSSH_8.2p1 Ubuntu-4ubuntu0.9, OpenSSL 1.1.1f  31 Mar 2020

参考とした手順

実施する前の留意点

  • コピペだけで済むように、エディタを使わない手順にしています。
  • 実際に筆者が実施した手順をそのまま載せています。typo等はご容赦ください。
  • 作業影響が極めて大きいため、作業時間の見積や日時調整は迅速かつ丁寧に行ってください。
    • 特にmake / make testは思っている以上に時間がかかります。
  • この手順では、sslのパスが変わります。同一サーバ内の他のプログラムがsslを参照している場合は、特に注意してください。

さっくりとはならない手順

  1. システム全体のバックアップ
  2. 【OpenSSL】必要なライブラリをインストールします。
  3. 【OpenSSL】githubレポジトリから最新安定版のソースコードをダウンロードします。
  4. 【OpenSSL】ソースからインストールしていきます。
  5. 【OpenSSL】設定を行います。(コンフィグを反映させ、パスを通します)
  6. 【OpenSSL】バージョンアップを確認します。
  7. 【OpenSSL】自動アップデートを無効化します。
  8. システム全体の再起動を行います。(1回目)
  9. 【OpenSSH】コンフィグに必要なディレクトリの作成を行います。
  10. 【OpenSSH】インストールに必要なパッケージをインストールします。
  11. 【OpenSSH】作業用ディレクトリに移動します。
  12. 【OpenSSH】ソースをダウンロードします。
  13. 【OpenSSH】OpenSSHをソースからビルドします。
  14. システム全体の再起動を行います。(2回目)
  15. 【OpenSSH】バージョンアップを確認します。

実施した手順

全体のバックアップを取得します。

任意の方法でシステム全体のバックアップを取ります。とはいえ、EOL/脆弱性対応のため切り戻しは基本的に許されません。

必要なライブラリのインストール

sudo aptitude install build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev libkrb5-dev checkinstall zlib1g-dev git

aptitudeを用いています。必要に応じてaptを使ってください。

【OpenSSL】root昇格

OpenSSLをソースコードからコンパイルしてインストールする一連の作業は管理者権限で実行します。

sudo su -

【OpenSSL】ソースコードの取得

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

任意のディレクトリを指定します

  • git clone
git clone https://github.com/openssl/openssl -b openssl-3.3.1

2024/07/03現在の最新版をダウンロードします。

※root昇格済みなのでsudoが不要であることにご注意ください

  • ディレクトリ移動
cd openssl

【OpenSSL】ソースからインストール

  • コンフィグ
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
  • コンフィグ成功時の出力
Configuring OpenSSL version 3.3.1 for target linux-x86_64
Using os-specific seed configuration
Created configdata.pm
Running configdata.pm
Created Makefile.in
Created Makefile
Created include/openssl/configuration.h

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL.md file first)      ***
***                                                                ***
**********************************************************************
  • make
make

makeは時間がかかります。状況を時折確認しながら待ちましょう。

  • 整合性確認
make test

make 同様に時間がかかります。

  • インストール
make install

【OpenSSL】インストール後の設定

  • 設定ファイル追記
cat <<- __EOF__ | tee -a /etc/ld.so.conf.d/openssl-3.3.1.conf
/usr/local/ssl/lib64
__EOF__
  • 設定反映
ldconfig -v
  • 既存プログラムの退避
mv /usr/bin/c_rehash /path/to/backup/c_rehash.$(date +%Y%m%d)

任意の退避ディレクトリを指定します

mv /usr/bin/openssl /path/to/backup/openssl.$(date +%Y%m%d)

任意の退避ディレクトリを指定します

  • パスを通す
cat <<- __EOF__ | tee -a /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"
__EOF__
  • 通したパスを反映
source /etc/environment
  • パス確認
echo $PATH

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"

と表示されることを確認します

【OpenSSL】バージョンアップ後の確認

openssl version -a
OpenSSL 3.3.1 4 Jun 2024 (Library: OpenSSL 3.3.1 4 Jun 2024)
built on: Wed Jul  3 02:04:25 2024 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DZLIB -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/ssl/lib64/engines-3"
MODULESDIR: "/usr/local/ssl/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa3203578bffff:0x7a9

これで、Ubuntu20.04でもOpenSSL3.3.1を利用することが可能になりました。

システム全体の再起動(1回目)

  • システムの再起動を行います。
sudo reboot

【OpenSSL】自動アップグレード無効

強制的に3.3系に上げるので、その後、1.1.xがアップグレードされる可能性を防ぎます。

  • apt を使用する場合
sudo apt-mark hold openssl
  • aptitude を使用する場合
sudo aptitude hold openssl

これに続けて、CVE-2024-6387の対応を行います。

【OpenSSH】ディレクトリ作成と設定

sudo mkdir /var/lib/sshd && sudo chmod -R 700 /var/lib/sshd/ && sudo chown -R root:sys /var/lib/sshd/

【OpenSSH】作業用ディレクトリ移動

cd /hoge && pwd

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

【OpenSSH】ソースのダウンロードと展開

  • ソース取得
wget -c http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz

上記CVEの脆弱性に対応したバージョンを用います。

  • ソース展開
tar -xzf openssh-9.8p1.tar.gz
  • ディレクトリ移動
cd openssh-9.8p1

【OpenSSH】展開したソースコードをインストール

  • OpenSSLの位置を確認
which openssl
  • 結果確認
/usr/local/ssl/bin/openssl

本手順でSSLのバージョンアップを行った場合の環境となります。

  • コンフィグ
./configure --with-kerberos5 --with-md5-passwords --with-pam --with-selinux --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl

--with-ssl-dir=/usr/local/sslは、opensslがあるディレクトリを指定します。

  • make
make
  • インストール
sudo make install

システム全体の再起動(2回目)

  • システムの再起動を行います。
sudo reboot

【OpenSSH】バージョンアップ確認

  • バージョン確認

この時点でSSH接続できていれば、ほぼ設定完了です。

ssh -V
OpenSSH_9.8p1, OpenSSL 3.3.1 4 Jun 2024

バージョンアップされていることを確認します。

自動アップグレード無効

強制的に9.x系に上げるので、その後、8.xがアップグレードされる可能性を防ぎます。

  • apt を使用する場合
sudo apt-mark hold openssh-server
  • aptitude を使用する場合
sudo aptitude hold openssh-server

システム全体の確認

  1. ログインできることを確認します。
  2. 他のサービスが正常に稼働していることを確認します。

検証結果:ノートPCへの単体Growi導入。

これの結果となります。

  • 中古PCに
  • NWに繋げず(つまり、クライアントLinuxのみで)
  • アプリを動かす

限定環境での感想です。

結論:モバイル環境下でのGrowi単体運用は難しい。

結論から言ってしまうと、この形。以下、理由を述べていきます。

理由1:重い

昨今のWebアプリの宿命と言えます。特にサーバーサイドレンダリングを重視しているGrowi v7以降は、低電圧版CPUでは満足に動かせません。(ビルドに15分以上かかりました)

理由2:スペックが低い機器は重いため、すぐ書ける・気軽に書ける特性が損なわれている。

Chromebookを選んでいた理由でもあります。

紙と同じぐらいの速度や携帯性を求めているので、重くしたのでは本末転倒です。

理由3:バッテリー消費。

これも、小さくない欠点でした。クライアントとサーバを兼ねるため、CPUにかかる負荷は増大。それにつれてバッテリーも消費してしまいます。

理由4:検証機を兼ねているノートPC

こちらは個人的な所見。

検証を兼ねているので、かなり頻繁にOSの再インストールを行います。そのたびにバックアップやリストアをするのは面倒です。

そういうわけで、「PCに沿ったアプリを選定する」大切さを学びました。

Page 1 of 42

Powered by WordPress & Theme by Anders Norén