友人と『大鎌戦役』差しを行った後、古典・源典に触れるということで『カルカソンヌ』を実施。

- 基本のみ
- 草原あり
という、互いの運と実力差が一番出てくる対戦です。

その「運」と配置の仕方にやられました。修道院を固め引きされてしまい、更に草原も奪われ、

最終的な盤面はこちら。
「132 vs 116」という負けっぷり。せめて草原のマジョリティが取れていればますますと思いましたが、それはそれと言ったところでしょう。
友人と『大鎌戦役』差しを行った後、古典・源典に触れるということで『カルカソンヌ』を実施。

という、互いの運と実力差が一番出てくる対戦です。

その「運」と配置の仕方にやられました。修道院を固め引きされてしまい、更に草原も奪われ、

最終的な盤面はこちら。
「132 vs 116」という負けっぷり。せめて草原のマジョリティが取れていればますますと思いましたが、それはそれと言ったところでしょう。
またとない機会を受け、ボードゲーム『大鎌戦役』を回すことになりました。
ランダムで選んだはずなのに
という、拡張で追加された因縁の対決。

両者ともに
というテクニカルなもの。

ただ、この段階で戸川はアルビオンに喧嘩を売る手もありました。

とはいえ、遭遇イベントで食料が手に入ったことが最終的な勝因につながりました。

最終的な盤面はこちら。ともに指示(民心)は申し分ないところまで高まり、対戦相手が秘密の目的を公開して星章6個のトリガーが引かれました。
星章は5差ですが、領地とコインで大きく差を付け、130 vs 108で勝利!
感想戦でも盛り上がった充実の一日でした。
友人との統率者会で非常に印象的だったこのデッキ。

影響されたので早速購入です。
ブラックパンサー、ティ・チャラ / T'Challa, the Black Panther (1)(緑)(白)
伝説のクリーチャー ─ 人間(Human) 貴族(Noble) 英雄(Hero)このクリーチャーが戦場に出るか攻撃するたび、ヴィブラニウム(Vibranium)・トークン1つを生成する。(それは破壊不能と「(T):(◇)を加える。このマナはアーティファクトでない呪文を唱えるためには支払えない。」を持つアーティファクトである。)
あなたがマナ総量が4以上であるアーティファクト・呪文1つを唱えるたび、このクリーチャーの上に+1/+1カウンター2個を置く。2/2
場に出たときにマナ加速。それが重い呪文を助け、更に自己を強化していくというプロセス。
しかも統率者自身が非常に軽いというのも魅力。
そして、多種多様なアーティファクトや「色を足しても楽しめそう」という期待。
時間はかかりそうですが、育てていきたいです。
こちらの記事から約一年。
8/03 : 契約、初期設定(UFW / fail2ban)
とあることから、実質丸一年が経過。その1年での振り返りを行ってみたいです。
2026年8月時点でのリソース使用量
--- 💻 サーバーのCPU状態 ---
稼働時間 (Uptime): 8 days
ロードアベレージ (Load Avg): 0.22, 0.22, 0.19
CPU名 (Model): AMD EPYC-Milan Processor
スペック (Speed): 2.00 GHz (1996.250 MHz)
コア数 (Cores): 4 threads
--- メモリとスワップ ---
[物理メモリ(Physical Memory)]
total used free shared buff/cache available
Mem: 5.8Gi 3.7Gi 447Mi 163Mi 2.1Gi 2.1Gi
Swap: 4.9Gi 1.1Gi 3.8Gi
[zRAM の展開状況]
NAME DISKSIZE DATA COMPR ALGORITHM STREAMS ZERO-PAGES TOTAL MEM-LIMIT MEM-USED MIGRATED MOUNTPOINT
/dev/zram0 2.9G 1.1G 254.4M lzo-rle 4 50834 261.6M 0B 948.3M 199K [SWAP]
--- ストレージ(Storage Status) ---
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 145G 62G 83G 43% /
/dev/vda16 881M 222M 598M 28% /boot
/dev/vda15 105M 6.2M 99M 6% /boot/efi
s3fs 4.0G 0 4.0G 0% /mnt/wasabi2
s3fs 4.0G 0 4.0G 0% /mnt/wasabi
--- CPUを利用しているプロセス: CPU Consumers (Top 10) ---
%CPU %MEM PID USER UNIT COMMAND
------------------------------------------------------------------------------------------
8.0 4.3 796409 www-data apache2.service Passenger RubyApp:
4.4 6.8 621372 mysql mysql.service /usr/sbin/mysqld
2.8 3.6 796362 www-data apache2.service Passenger AppPreloader:
1.1 2.0 789277 www-data apache2.service /usr/sbin/apache2 -k start
0.7 2.1 784299 www-data apache2.service /usr/sbin/apache2 -k start
0.6 2.0 784297 www-data apache2.service /usr/sbin/apache2 -k start
0.6 3.9 622142 root growi.service node --import
0.6 1.8 620879 mongodb mongod.service /usr/bin/mongod --config /etc/mongod.conf
0.5 0.4 784275 root apache2.service Passenger core
0.5 0.2 622750 www-data apache2.service /usr/sbin/apache2 -k start
--- メモリを利用しているプロセス: Memory Consumers (Top 10) ---
%CPU %MEM PID USER UNIT COMMAND
------------------------------------------------------------------------------------------
0.4 11.2 479114 elastic+ elasticsearch.service /usr/share/elasticsearch/jdk/bin/java -Des.network
4.4 6.8 621372 mysql mysql.service /usr/sbin/mysqld
8.0 4.3 796409 www-data apache2.service Passenger RubyApp:
0.0 4.1 786930 www-data apache2.service Passenger RubyApp:
0.6 3.9 622142 root growi.service node --import ./bin/runtime/env-preload.mjs dist/s
0.0 3.8 796066 www-data apache2.service Passenger RubyApp:
2.8 3.6 796362 www-data apache2.service Passenger AppPreloader:
0.0 3.2 990 root mnt-wasabi.mount
0.2 2.9 789814 www-data php8.3-fpm.service php-fpm: pool www
0.4 2.8 794701 www-data php8.3-fpm.service php-fpm: pool www
何というか
というメモリを食いまくるサイト(そのほかLaravel Stack)を運営していてOoM Killerが発生しなかったものだと思っています。
これが一番のポイントです。筆者は広告が嫌いなので、自分のサイトにも作っていません。そのため、SEOや広告料収入によるアクセスアップを狙っていません。
「これは俺のメモ帳だ。節度を持ってアクセスする分にはかまわないがそれ以外は容赦しない」
というスタンスを貫いています。
更に、tcpレベルでの嫌がらせをやらかす相手にはipsetで防御。
https://barrel.reisalin.com/books/one-outs/page/ipsetddos
先にあった、Swapにブロックデバイスを追加することにより、スワップアウトが更に効率化しています。
https://barrel.reisalin.com/books/linux/page/ubuntuzram
これが一番です。Mod_Securityを「偽陽性を踏んだから単にそれをRemoveしよう」という雑な運用から
「偽陽性を踏みがちなアクション(記事の投稿、ファイルのアップロード)だけを無視する」というリアルタイム外科手術的な技法へと変換。
これにより
「攻撃は防ぐ 偽陽性は排除する おまえごときに『両方』やるのは そうそう難しいことじゃあないな」
と言えるようになったのが極めて大きいです。
「4GB→6GB」にスペックアップしたとしても普通に運用したらOoM Killerやアクセス過多に陥ったであろうシステムを
AIの力を借りての運用という形でした。
なんだかんだで購入しました。

ねんどろいど、ユミア・リースフェルト。
ライザ(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
必要に応じてバックアップしたファイル一式やスナップショットを削除します。
Powered by WordPress & Theme by Anders Norén