なんだかんだで購入しました。

ねんどろいど、ユミア・リースフェルト。
ライザ(2準拠)から1ヶ月後です。

ノーマル。あの独特の目の輝きもしっかり。

エフェメラルレコード装備。

顔差し替え。

個人的にはこの顔のために買ったようなものです。
なんだかんだで購入しました。

ねんどろいど、ユミア・リースフェルト。
ライザ(2準拠)から1ヶ月後です。

ノーマル。あの独特の目の輝きもしっかり。

エフェメラルレコード装備。

顔差し替え。

個人的にはこの顔のために買ったようなものです。
筆者にとっての必須エディタ、Growi。そのv8.0.0が出たので、以下の要件に基づきアップデートを行いました。
実施日: 2026年7月29日
対象環境: Ubuntu 24.04 (非Docker環境 / systemd運用)
その他要件:
| item | version |
|---|---|
| OS | Ubuntu 24.04 |
| GROWI | 7.5.7 |
| node.js | 24.14.1 |
| npm | 11.13.0 |
| pnpm | 11.1.1 |
GROWIの最新リリースにおける変更点(ES7の完全廃止、jemalloc対応、メモリ最適化、ESM移行)に対する自環境の適合状況を確認。
ES8/ES9のみに対応しているため、以下を確認。
curl -X GET "http://localhost:9200/" |grep number
→ 9.4.4となっていたので、要件を満たすことは確認しました。
ldconfig -p | grep jemalloc
libjemalloc.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libjemalloc.so.2と出たのでモジュールも確認済みです。
ここまでやれば、覚悟を決めてアップデートを行います。
※筆者は
systemdに登録したサービス起動プログラムがGrowiのルートディレクトリ/home/www-data/growi配下にあるgrowi-start.shを参照して各種環境をキックしています。
※ご自身の環境に合わせ修正を行ってください※
#!/bin/bash
# nvmのdefaultエイリアスが指すディレクトリを動的に取得してPATHに追加
# これにより、nvm installでバージョンを上げてもこのスクリプトの書き換えが不要になります
DEFAULT_NODE_VER=$(cat "$NVM_DIR/alias/default")
export PATH="$NVM_DIR/versions/node/$DEFAULT_NODE_VER/bin:$PATH"
GROWI_DIR="/home/www-data/growi"
cd $GROWI_DIR
# 環境変数の設定
export NODE_ENV=production
export AUDIT_LOG_ENABLED=true
export FORCE_WIKI_MODE=private
export MONGO_URI=mongodb://localhost:27017/growi
export ELASTICSEARCH_URI=http://localhost:9200/growi
export REDIS_URI=redis://localhost:6379
export PASSWORD_SEED=(設定済みのパスワード)
# npm run app:server を使用する(npmが内部で正しいパスを見つけてくれます)
# execを使うことでsystemdとの親和性を維持します
exec npm run app:server
このファイルを修正していきますが:バックアップを確実に行います。
sudo cp -pi /home/www-data/growi/growi-start.sh /path/to/backup/directory/growi-start.sh.$(date +%Y%m%d)
diff -u /path/to/backup/directory/growi-start.sh.$(date +%Y%m%d) /home/www-data/growi/growi-start.sh
エラー(差分)がなければ両者ともファイルがあり、バックアップが取れています。
バックアップ後、/home/www-data/growi/growi-start.shの編集を行います。(自分の環境に合わせます)
export JEMALLOC_ENABLED=true を追加export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 を追加MONGO_URI に ?maxPoolSize=10 パラメータを付与具体的には以下のような差分が取れていればOKです。
diff -u /path/to/backup/directory/growi-start.sh.$(date +%Y%m%d) /home/www-data/growi/growi-start.sh
# 環境変数の設定
export NODE_ENV=production
+export JEMALLOC_ENABLED=true
+export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
export AUDIT_LOG_ENABLED=true
export FORCE_WIKI_MODE=private
-export MONGO_URI=mongodb://localhost:27017/growi
+export MONGO_URI=mongodb://localhost:27017/growi?maxPoolSize=10
export ELASTICSEARCH_URI=http://localhost:9200/growi
export REDIS_URI=redis://localhost:6379
sudo systemctl restart growi.service
指定した環境変数および jemalloc ライブラリが GROWI プロセス(Node.js)へ正常にロードされていることを確認しました。
JEMALLOC_ENABLED=true および LD_PRELOAD が正常に適用されていることを確認。lsof および /proc/{PID}/maps コマンドにより、libjemalloc.so.2 が Node.js プロセスに読み込まれていることを確認。以下をバックアップします。
cat /etc/mongod.conf |grep dbPath
として、ここのディレクトリ一式を控えます。(筆者環境 /home/mongodb)
このディレクトリを任意の方法でバックアップします。
/growi/root/directory/apps/app/public
(筆者環境 /home/www-data/growi/apps/app/public)ここも念のためバックアップします。
※ 添付ファイルのアップロード先をAWSやAzureなどにしている場合は不要です
スナップショット機能などでシステム全体をバックアップした方が確実で安心です。
sudo systemctl stop elasticsearch.service
sudo systemctl stop growi.service
systemctl status elasticsearch.service growi.service | grep Active
inactive(dead)を確認します。
sudo cp -a /var/lib/elasticsearch/ /path/to/backup/dir/elastic_bk.$(date +%Y%m%d)
自分の環境に合わせます。
sudo ls -l /path/to/backup/dir/elastic_bk.$(date +%Y%m%d)
バックアップした内容があることを確認します。(※管理者権限でないとこのディレクトリを見ることはできません)
cd /home/www-data/growi && pwd
自分の環境に合わせます。(筆者環境/home/www-data/growi)
sudo git fetch --tags
sudo git tag -l
スペースで確認していき、上記リリースサイトと同じバージョンがあることを確認します。
sudo git stash
sudo git checkout 【バージョン】
リリースタグは再確認しましょう。今回は 2026/07/28にリリースされたv8.0.0を選択しました。
sudo pnpm i
※これができるのは、筆者のgrowi実行環境がrootだからです。このパーミッション設定は確実に確認しましょう。
NODE_OPTIONS="--max-old-space-size=4096" sudo pnpm run app:build
→ ビルド時のメモリ大量使用を抑えるため上限を抑えています。余談ですが、ここは神に祈る作業です。
sudo systemctl restart elasticsearch.service
sudo systemctl restart growi.service
systemctl status elasticsearch.service growi.service | grep Active
active(running)を確認します。
※一般権限で見られないため
sudo su -
pgrep -f "node.*growi" | xargs -I {} lsof -p {} 2>/dev/null | grep jemalloc
MainThrea 479521 root mem REG 253,1 830656 15385 /usr/lib/x86_64-linux-gnu/libjemalloc.so.2
必要に応じてバックアップしたファイル一式やスナップショットを削除します。
本ブログにはそれを記していないだけで、地味にプレイ時間が長い

『BLUE REFLECTION TIE/帝』。(300時間超)思い入れは高いゲームです。とはいえ、スマートフォンゲームはよほどのことが無いとやらないという理由により燦(SUN)はプレイせず。
そんなブルリフシリーズをまとめた『QUARTET』が出るということで予約をしたのが2026年6月当初。
それが、発売日と同日に届きました。

注文したのはフルセットではなく
などに加えて

メモリアルCDコレクション。筆者にとっての「JRPGの戦闘音楽の概念を変えてしまった」レベルの楽曲『OVERDOSE』が入っていると言うだけでも、このCDは価値があります。
また、アニメ『澪/Ray』のBGMも入っています。(さすがにアニメの主題歌は権利関係でだめだったようですが)

まさかの10枚組という豪華版。

セット内はゲームのCDキーが入っていたのでアクティベートも完了。
プレイ感、詰まったところ、データなどは逐次アップロードしていきます。
ジェスカイカラーというブラケット3以上になりがちの人気カラーを
として、何よりもタルキール:龍嵐録の構築済みの統率者デッキ「ジェスカイの打撃手」のシャーシ構造をある程度保ったまま換骨奪胎をしたデッキとするためカードを入れ替えました。
Den of the Bugbear / バグベアの居住地 (AFR)
土地
あなたがこれ以外の2つ以上の土地をコントロールしているなら、バグベアの居住地はタップ状態で戦場に出る。
(T):(赤)を加える。
(3)(赤):ターン終了時まで、バグベアの居住地は「このクリーチャーが攻撃するたび、赤の1/1のゴブリン(Goblin)・クリーチャー・トークン1体をタップ状態かつ攻撃している状態で生成する。」を持つ赤の3/2のゴブリン・クリーチャーになる。これは土地でもある。
このミシュラランドを忘れていたのは失態。ファストランドで、数が並ぶのでナーセットの果敢の恩恵を受けられます。
大図書棟の大ホール / Great Hall of the Biblioplex (SOS)
土地
(T):(◇)を加える。
(T), 1点のライフを支払う:好きな色1色のマナ1点を加える。このマナは、インスタントやソーサリーである呪文を唱えるためにしか支払えない。
(5):この土地がクリーチャーでないなら、これは「あなたがインスタントやソーサリーである呪文1つを唱えるたび、ターン終了時まで、このクリーチャーは+1/+0の修整を受ける。」を持つ2/4のウィザード(Wizard)クリーチャーになる。これは土地でもある。
永続化するミシュラランド。これ自身が果敢ライクな能力を持っているのもポイントが高いです。
Tablet of Discovery / 発見の石板 (2)(赤) (SOS)
アーティファクト
このアーティファクトが戦場に出たとき、カード1枚を切削する。このターン、そのカードをプレイしてもよい。(カードを切削するとは、あなたのライブラリーの一番上にあるカードをあなたの墓地に置くことである。)
(T):(赤)を加える。
(T):(赤)(赤)を加える。このマナは、インスタントやソーサリーである呪文を唱えるためにしか支払えない。
など、どこかおかしいアンコモンカード。
Shark Typhoon / サメ台風 (5)(青) (IKO)
エンチャント
あなたがクリーチャーでない呪文を唱えるたび、飛行を持つ青のX/Xのサメ(Shark)・クリーチャー・トークン1体を生成する。Xは、その呪文のマナ総量に等しい。
サイクリング(X)(1)(青)((X)(1)(青),このカードを捨てる:カードを1枚引く。)
あなたがサメ台風をサイクリングしたとき、飛行を持つ青のX/Xのサメ・クリーチャー・トークン1体を生成する。
奇襲によりブロッカーを顕現させたり、継続的なフライヤーを生み出すことができます。
Eris, Roar of the Storm / 嵐の咆哮、エリス (8)(青)(赤)
伝説のクリーチャー — エレメンタル(Elemental) 邪術師(Warlock)
この呪文を唱えるためのコストは、あなたの墓地にありインスタントやソーサリーであるカードの中のマナ総量1種類につき(2)少なくなる。
飛行、果敢
あなたが各ターン内のあなたの2つ目の呪文を唱えるたび、飛行と果敢を持つ赤の4/4のドラゴン(Dragon)・エレメンタル(Elemental)・クリーチャー・トークン1体を生成する。4/4
条件はコーリ鋼の短刀や志同じくとほぼ同じ。重いだけあって(コスト軽減付きですが)出てくるドラゴンはそのままフィニッシャーです。
Shiko, Paragon of the Way / 道の体現者、シィコ (2)(青)(赤)(白)
伝説のクリーチャー — スピリット(Spirit) ドラゴン(Dragon)
飛行、警戒
これが戦場に出たとき、あなたの墓地にありマナ総量が3以下であり土地でないカード1枚を対象とする。それを追放する。それをコピーする。その後、そのコピーを、そのマナ・コストを支払うことなく唱えてもよい。(パーマネント呪文のコピーはトークンになる。)
4/5
統率者、ナーセットと異なり、クリーチャーも対象に取れるのがポイント。特に両面カードと合わせたときの効果は特筆すべきものがあります。
Three Blind Mice / 三匹の盲目ネズミ (2)(白) WOE
エンチャント — 英雄譚(Saga)
(この英雄譚(Saga)が出た際とあなたのドロー・ステップの後に、伝承(lore)カウンター1個を加える。IVの後に、生け贄に捧げる。)
I ― 白の1/1のハツカネズミ(Mouse)・クリーチャー・トークン1体を生成する。
II,III ― あなたがコントロールしているトークン1つを対象とする。それのコピーであるトークン1つを生成する。
IV ― ターン終了時まで、あなたがコントロールしているすべてのクリーチャーは+1/+1の修整を受け警戒を得る。
ナーセットデッキにおけるオリジナルカードではないかというレベルでかみ合います。
ポイントは2章と3章の効果。
あなたがコントロールしているトークン1つを対象とする。それのコピーであるトークン1つを生成する。
これ「これでなく、英雄譚でもない」と書かれていないのがポイントです。
そして、統率者
Narset, Enlightened Exile / 悟った喪失者、ナーセット (1)(青)(赤)(白)
伝説のクリーチャー — 人間(Human) モンク(Monk)
あなたがコントロールしているすべてのクリーチャーは果敢を持つ。
悟った喪失者、ナーセットが攻撃するたび、墓地にありマナ総量が悟った喪失者、ナーセットのパワーより小さくクリーチャーでも土地でもないカード1枚を対象とする。それを追放し、コピーする。あなたはそのコピーを、そのマナ・コストを支払うことなく唱えてもよい。
3/4
の効果で唱えられたパーマネント呪文は「トークンとして戦場に出る」こと。つまり、三匹の盲目ネズミがトークンになった場合は
それぞれ第一章のネズミを引き連れますので、文字通りのねずみ算が発生します。更に第四章の+1/+1修正も横並びの打点を更に上げます。
そして、元々構築済みに入っていた
Think Twice / 熟慮 (1)(青) TDC
インスタント
カードを1枚引く。
フラッシュバック(2)(青)(あなたはあなたの墓地にあるこのカードを、そのフラッシュバック・コストで唱えてもよい。その後それを追放する。)
で、マナカーブとスペルカウントを調整。
と、土地の入れ替えだったり「ゲームチェンジャーカード」や「そのGCと君で悪さをするカード」「よりよいフィニッシャーへの差し替え」
で、現段階のリストはこちら。
こちらのデッキ、更に突き詰めていきます。
はやはり性に合っていたので、
いっそのことゲームチェンジャーカードを抜いて、ブラケット2で戦うのはありなのではということ。
そこで、現在のリストに入っている
の3つを抜き、よりコンボを抜いたフェアデッキで戦ってみようという試み。
いくつかカードを入れたので、ちょいと試して改めてのご報告を行います。
1ヶ月ぐらい前に入手した構築済みの統率者デッキ、FF『サイオンズ・スペル』。
ようやく第一回目の調整です。
コンセプトとして:
のがこちら。
《魔女、ヤ・シュトラ・ルル/Y'shtola, Night's Blessed(FIC)》
筆者はエンチャントレス的な動きが好きなのでエンチャントを多めに。そして、同じユニバーサルビヨンド出身のドクター・フーからのものをそろえました。
当然、まだ回していないので動きは未定。ただでさえヘイトを買う統率者なので、課題は山積みです。
体温以上の暑さが続く中、これだけは外せないという暑さ対策グッズはこれに落ち着きました。

ワークマンにて購入。
直射日光を遮ることで、体感温度は数度から10℃近く下がると言われています。また、輻射熱を遮る点でも重要です。
強い紫外線、まぶしさは目から入って脳に疲労物質を出させる原因になります。
普段の眼鏡と同じ度にすることで、普段の視界のまましっかり減光できます。
血管が集まる首元、首の横、脇の下、手首などを直接冷やせます。
この対策グッズでもMVPです。ハンディファンで生暖かい風を浴びるより合理的です。

このシンデレラフィットするかのようなヒップバッグも見つけられました。これで鞄にもつけられるので満足。
この暑い夏は始まったばかりですが、なんとか死なないように抑えていきたいものです。
中古のLet's noteを「試しにNextcloudのフロントエンドやDNS(AdGuard Home)」にしていたものの、いよいよもって本格的に稼働させることにします。
enp0sxx(NetworkManager接続名: netplan-enp0s31f6)wlp1s0(NetworkManager接続名: Wi-Fi)192.168.x.1/24 (255.255.255.0)デスクトップ画面で有線LANと無線LANを同時に切り替えようとしたのですが、
無線側がまだ 引き継ぎたいIPアドレスを掴んでいたため、有線側で同じIPを有効化しようとした際にアドレスの重複・競合が発生し、以下のエラーで有効化に失敗しました。
エラー: 接続のアクティベーションに失敗: IP 設定を確保できませんでした (利用可能なアドレスがない、タイムアウトなど)
これに対処していきます。ここからはターミナルやSSH接続です。
192.168.11.16)とゲートウェイ・DNSを設定する。SSH切断による作業中断を防ぐため、以下のコマンドを一括で実行しました。
sudo nmcli connection down "Wi-Fi" && \
sudo nmcli connection modify "Wi-Fi" ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns "" && \
sudo nmcli connection modify "netplan-enp0s31f6" ipv4.method manual ipv4.addresses 192.168.x.x/24 ipv4.gateway 192.168.x.1 ipv4.dns "192.168.x.1" && \
sudo nmcli connection up "netplan-enp0s31f6"
それぞれのステップで何が起きているのか、順番に詳しく解説します。
sudo nmcli connection down "Wi-Fi"
Wi-Fi)を即座に無効化(切断)します。192.168.x.x)をWi-Fi側から完全に解放し、IPアドレスの重複(衝突)を防ぐために行っています。sudo nmcli connection modify "Wi-Fi" ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
ipv4.method auto:
ipv4.addresses "":
ipv4.gateway "":
ipv4.dns "":
sudo nmcli connection modify "netplan-enp0s31f6" ipv4.method manual ipv4.addresses 192.168.x.x/24 ipv4.gateway 192.168.x.1 ipv4.dns "192.168.x.1"
netplan-enp0s31f6)に新しいネットワーク情報を書き込みます。ipv4.method manual: IP設定を「手動(固定IP)」に変更ipv4.addresses 192.168.x.x/24: サーバー用の固定IPアドレスとサブネットマスクをセットipv4.gateway 192.168.x.1: デフォルトゲートウェイ(ルーター)を指定ipv4.dns "192.168.x.1": 名前解決用のDNSサーバー(ルーター)を指定sudo nmcli connection up "netplan-enp0s31f6"
192.168.x.x に変更されるため、旧IPで繋がっていたSSH接続はここで途切れ、新しいIPでの接続が解禁されます。SSH接続中にネットワーク設定を変更すると、Wi-Fiを切断した時点(Step 1)でターミナルの操作ができなくなってしまいます。
命令を && で繋いで1行で送信しておくことで、SSHが切れてしまってもUbuntu内部でStep 4まで自動的に突っ走って完了させてくれるという技術的な工夫(SSH切断対策)でした。
ip a)enp0s31f6): inet 192.168.x.x/24 (正常に固定IP割り当て完了)wlp1s0): state DOWN (競合解消)192.168.x.x)へのSSH再接続: 成功ping -c 3 google.com): 成功なんとなくで設定していた宿題に取り組むことが出来ました。
前回の対戦での課題です。
霊気走破統率者デッキ「生けるエネルギー」を回した感想です。
伝説のクリーチャー — 人間(Human) 工匠(Artificer)
あなたが工匠(Artificer)やアーティファクトである呪文1つを唱えるたび、(E)(エネルギー(energy)・カウンター1個)を得る。
あなたのターンの戦闘の開始時に、(E)(E)(E)を支払ってもよい。そうしたとき、あなたがコントロールしているパーマネント1つを対象とする。他のタイプに加えて速攻を持つ5/5のアーティファクト・クリーチャーであることを除き、それのコピーであるトークン1体を生成する。次の終了ステップの開始時に、そのトークンを生け贄に捧げる。
4/4
デッキの半分以上を入れ替えながらも
様な構成になっています。
そして実戦に回したところ

警戒するラッドスタッグ→歩行格納庫の自動機械の誘発が次々に発生し盤面がとんでもないことになったものの:あっという間に全体除去を喰らったわけで。
ここでも課題になるのが「ゲームクロージングカード」或いは「殴り返すともっと酷いことになる」と思わせるカード群の存在です。
具体的には
Enduring Courage / 永劫の勇気 (2)(赤)(赤)
クリーチャー エンチャント — 犬(Dog) 光霊(Glimmer)
あなたがコントロールしていてこれでないクリーチャー1体が戦場に出るたび、ターン終了時まで、それは+2/+0の修整を受け速攻を得る。
永劫の勇気が死亡したとき、これがクリーチャーであった場合、これをオーナーのコントロール下で戦場に戻す。これはエンチャントである。(これはクリーチャーではない。)
3/3
出たトークンがそのまま殴れます。
Overlord of the Boilerbilges / ボイラービルジの大主 (4)(赤)(赤)
クリーチャー エンチャント — アバター(Avatar) ホラー(Horror)
兆候4 ― (2)(赤)(赤)(兆候コストでこの呪文を唱えたなら、これは時間(time)カウンター4個が置かれた状態で戦場に出て、最後の時間カウンターが取り除かれるまで、これはクリーチャーではない。あなたの終了ステップの開始時に、これの上から時間カウンター1個を取り除く。)
ボイラービルジの大主が戦場に出るか攻撃するたび、1つを対象とする。これはそれに4点のダメージを与える。
5/5
太守サイクルの中でも破格の安さ。特筆すべきは
着地:4点
サヒーリでコピー:4点→そのまま攻撃して4点(本体に通れば更に5点)が見込めること。
の2枚。これらを検討しつつ、もう少し育て甲斐があると思わせるデッキでした。
BookStackでは「アプリケーションロゴ」を設定できますが、そのままではアップロードした画像が高さ86pxへリサイズされてしまいます。
そのため、CSSでロゴを大きく表示すると画像がぼやけてしまいます。そもそも86pxは昨今のモダンなCMSにあるまじき解像度ではあるので、手を入れます。
そこでファイル本体を少し修正し、高解像度のロゴ画像をそのまま利用できるようにしました。
BookStackに管理者権限でログインし、管理>カスタマイズに遷移。
カスタムheadタグで
<style>
.logo-image {
height: 128px !important;
width: auto !important;
}
</style>
のような指定はできるものの、超ローレぞ加工され、表示がぼやけます。そこで、要素を調べると、保存された画像自体が86×86になっていました。
この原因を調べます。
インストールされているUbuntuサーバで
cd /path/to/BookStack/directory && pwd
として(筆者環境/home/www-data/Bookstack)BookStackのホームディレクトリに移動。
file public/uploads/images/system/20xx-xx/xxxx.jpg
で、該当のファイルを調べます。
JPEG image data
86x86
つまり、CSSではなくアップロード時に画像が縮小されていました。
いかにCSSで指定してもだめな原因はプログラムそのものにあります。なので、その上流の「ファイルのアップロードを司るファイル」にメスを入れます。
それを司るファイルをチャットAIとともに調査。
BookStackのルートディレクトリからたどれる
app/Settings/AppSettingsStore.php
にそれがありました。
protected function updateAppLogo(Request $request): void
{
if ($request->hasFile('app_logo')) {
$logoFile = $request->file('app_logo');
$this->destroyExistingSettingImage('app-logo');
$image = $this->imageRepo->saveNew(
$logoFile,
'system',
0,
null,
86
);
setting()->put('app-logo', $image->url);
}
}
null,
86
が指定されているため、高さ86pxへリサイズされた画像が保存されます。
ここまで分かれば、後は修正開始です。
cd /path/to/BookStack/directory && pwd
自分の環境に合わせます。(筆者環境/home/www-data/Bookstack)
sudo cp -pi app/Settings/AppSettingsStore.php /path/to/backup/AppSettingsStore.php.$(date +%Y%m%d)
※注意点※
diff -u /path/to/backup/AppSettingsStore.php.$(date +%Y%m%d) app/Settings/AppSettingsStore.php
任意のバックアップディレクトリを指定します。
エラーがないことを確認します。人間「バックアップはやってる」と思いながらもバイアスや手なりでスキップしがちです。この段階でそのミスやバイアスを潰します。
なぜdiffを使うのかは、ls -lで両ファイルを比べるより確実だからと言うのと、後述する修正確認でも使うからです。
app/Settings/AppSettingsStore.phpファイルを、リサイズを行わないよう変更します。(要管理者権限)
具体的には以下の差分になるように。
- $image = $this->imageRepo->saveNew($logoFile, 'system', 0, null, 86);
+ $image = $this->imageRepo->saveNew($logoFile, 'system', 0, null, null);
diff -u /path/to/backup/AppSettingsStore.php.$(date +%Y%m%d) app/Settings/AppSettingsStore.php
ここで、なぜdiffを逆にする意味が生まれます。逆にしないと直したところが-、元が+で表示されます。これは視覚的にも感覚的にもよろしくありません。「え? 正しい修正をしたのに消されるの?」となりがちです。
sudo -u www-data php artisan optimize:clear
でキャッシュをクリアします。
PHP-FPMなら
sudo systemctl restart php8.3-fpm
Mod-PHP環境なら
sudo systemctl restart apache2
で、実行環境を再起動します。
BookStackに管理者権限でログインし、管理>カスタマイズに遷移。
カスタムheadタグで
<style>
.logo-image {
height: 128px !important;
width: auto !important;
}
</style>
のように設定し、(或いは設定されていることを確認し)、保存をクリック。
管理>カスタマイズ
から、ファイルをアップロードします。
BookStack標準ではヘッダー高さが少し窮屈なので、必要に応じてヘッダーも調整します。
例
header {
min-height: 72px;
}
.logo-image {
height: 64px !important;
}
ここから先はBookStackに戻り、高解像度でロゴが表示されれば設定はOKです。

Powered by WordPress & Theme by Anders Norén