Matomoでcron処理を実行。

環境

  • Matomo 5.7.1
  • PHP-FPM8.3
  • Ubuntu 24.04

セルフホストでMatomoを用いている場合のcron処理を行ったときのメモです。

なぜcron処理が必要なのか?

Matomoには、データを処理する2つの方法があります。

  • リアルタイム集計(デフォルト): 管理画面を開いた瞬間に、溜まっている生データを計算してグラフを表示します。アクセスが少ないうちは良いですが、アクセスが増えると表示が非常に重くなります。
  • cronによる事前集計(推奨): 「5分に1回」などの頻度で、裏側でこっそり計算を済ませておきます。管理画面を開いたときは、計算済みの結果を表示するだけなので、動作が非常にサクサクになります。

さっくりとした手順

  1. crontabを編集します。
  2. Matomoの管理画面で設定を行います。

Crontab編集

  • crontabを開く
sudo crontab -u www-data -e

Matomoを実行しているユーザー(通常は www-data)として編集します。

  • 実行コマンドを追記する

ファイルの末尾に以下の1行を追加します(パスはご自身の環境に合わせて調整してください)。

5 * * * * /usr/bin/php /var/www/html/matomo/console core:archive --url=https://your-matomo-domain.com/ > /dev/null

解説: > 5: 毎時5分に実行するという意味。
/usr/bin/php: PHP 8.3の実行パス。
core:archive: これが「溜まったデータを集計しろ」というMatomo専用の命令です。

Matomo管理画面での設定変更

cronを設定しただけでは不十分です。Matomo側に「自分で集計するから、画面を開いたときに集計しなくていいよ」と教える必要があります。

  1. Matomoにログインし、「設定(歯車アイコン)」をクリックします。
  2. 左メニューの 「システム」 > 「一般設定」 を開きます。
  3. 「アーカイブの設定」 セクションを確認します。
    1. 「ブラウザでレポートを表示するときにアーカイブをトリガーする」を 「いいえ」 に変更。
  4. 下部の「保存」ボタンをクリックします。

注意点

  • PHP 8.3のメモリ制限:
    • 大規模なデータを集計する場合、CLI(コマンドライン)用の php.inimemory_limit を多めに(512Mや1Gなど)設定しておくと安心です。
  • ログの確認:
    • 最初は > /dev/null を書かずに実行して、エラーが出ないか確認することをおすすめします。

その他の設定に関しては改めて述べます。

Ubuntu パッケージ更新エラーの解決メモ

aptitude(apt)で捕まったときのメモです。

発生した状況

Ubuntu 24.04 で sudo aptitude update を実行した際、Phusion Passenger リポジトリに対して以下のエラーおよび警告が発生しました。

  • エラー:
    • 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY D870AB033FB45BD1
  • 警告:
    • Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

原因

GPG鍵の欠落:

システムが Passenger リポジトリのパッケージが真正なものであるかを確認するための公開鍵を持っていませんでした。

古い管理形式(非推奨):

以前の Ubuntu で一般的だった apt-key による鍵登録を行っていましたが、Ubuntu 24.04 ではその管理方式がセキュリティ上の理由で非推奨(Deprecated)となっていたためです。

対処内容

以下の手順で、鍵を新しい推奨形式(個別のキーリング管理)へ移行させました。

鍵の抽出と個別保存

sudo gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --export D870AB033FB45BD1 | sudo tee /usr/share/keyrings/phusion-passenger.gpg > /dev/null

古い管理リストから鍵を削除

sudo apt-key del D870AB033FB45BD1

リポジトリ設定の更新

/etc/apt/sources.list.d/passenger.list 内の記述に [signed-by=/usr/share/keyrings/phusion-passenger.gpg] を追記し、特定のリポジトリと鍵を紐付けました。

→ 筆者にしては珍しく.listのバックアップを取っていませんが(切り戻しを取れるようにしていません)、これは「切り戻したところで古い鍵形式だから」です。

解決確認

sudo aptitude update

でエラーがないことを確認します。

作業が必要だった理由(背景)

Ubuntu 22.04 以降、OSのセキュリティ設計が強化され、

「すべてのリポジトリで共通の鍵束を使う方式」から「リポジトリごとに専用の鍵を個別に指定する方式」

への完全移行が推奨されているためです。これにより、以下のメリットがあります。

  • セキュリティ向上:
    • 万が一、一つのリポジトリの鍵が漏洩・悪用された場合でも、他のリポジトリの安全性に影響を与えない設計になっています。
  • メンテナンス性の向上:
    • どの鍵がどのリポジトリのものかが明確になり、不要になった鍵の削除や更新が安全に行えます。

海鮮の休日。

日曜に戴いた食事が素晴らしかったです。

ズワイガニ丸ごと一杯という昼食。

カニビルがついているということは、脱皮から間が空いた「ギッシリと身が詰まった」証であり、蟹味噌もたっぷりでした。

夕飯は海鮮丼セット。金目鯛の紙鍋までついていくルという豪華仕様。

デザートまでついてくる豪華さでした。

ジンバル、統率者メモ2026/02/01

最初に組んだ統率者なだけに、さらに手を入れたいデッキ。特に、性質上、アーティファクトトークンがフィーチャーされるほど自然に強化されるのが強みです。

統率者

《グレムリンの神童、ジンバル/Gimbal, Gremlin Prodigy(MOC)》

クリーチャー

  • 《金属の徒党の種子鮫/Chrome Host Seedshark(MOM)》
  • 《エーテリウムの達人/Master of Etherium(MOC)》
  • 《河童の砲手/Kappa Cannoneer(NEC)》
  • 《煌めくドラゴン/Shimmer Dragon(MOC)》
  • 《破片撒きのスフィンクス/Sharding Sphinx(MOC)》
  • 《ガラクタ這い/Junk Winder(MOC)》
  • 《ゴブリンの武器職人、トッゴ/Toggo, Goblin Weaponsmith(CMR)》
  • 《ピア・ナラーとキラン・ナラー/Pia and Kiran Nalaar(MOC)》
  • 《黄金架のドラゴン/Goldspan Dragon(M3C)》
  • 《極楽鳥/Birds of Paradise(RVR)》
  • 《金のガチョウ/Gilded Goose(MOC)》
  • 《桜族の長老/Sakura-Tribe Elder(CHK)》
  • 《目ざとい新人/Sharp-Eyed Rookie(MKM)》
  • 《砂嵐の回収者/Sandstorm Salvager(BIG)》
  • 《ペレグリン・トゥック/Peregrin Took(LTR)》
  • 《不屈の補給兵/Tireless Provisioner(MOC)》
  • 《ウークタビーの王子、キーボ/Kibo, Uktabi Prince(J22)》
  • 《永遠の証人/Eternal Witness(5DN)》
  • 《転置された恐竜/Displaced Dinosaurs(WHO)》
  • 《歩行バリスタ/Walking Ballista(PIP)》
  • 《搭載歩行機械/Hangarback Walker(ORI)》
  • 《アカデミーの整備士/Academy Manufactor(MOC)》
  • 《真面目な身代わり/Solemn Simulacrum(M21)》
  • 《ワームとぐろエンジン/Wurmcoil Engine(SOM)》
  • 《第三の道の偶像破壊者/Third Path Iconoclast(BRO)》
  • 《ガチョウの母/The Goose Mother(WOE)》
  • 《氷刻み、スヴェラ/Svella, Ice Shaper(KHM)》
  • 《双子唱者、アドリックスとネヴ/Adrix and Nev, Twincasters(C21)》
  • 《3代目ドクター/The Third Doctor(WHO)》
  • 《私立探偵、ダッガン/Duggan, Private Detective(WHO)》
  • 《波ふるい/Wavesifter(MKC)》
  • 《テルカーの技師、ブルーディクラッド/Brudiclad, Telchor Engineer(MUL)》
  • 《フラクタルの花、エシックス/Esix, Fractal Bloom(MKC)》

インスタント

  • 《サイクロンの裂け目/Cyclonic Rift(RVR)》(GC)
  • 《手慣れた複製/Masterful Replication(MOC)》
  • 《ウルザの命令/Urza's Command(BRO)》
  • 《シンクロ解除/Desynchronization(ACR)》
  • 《精神壊しの罠/Mindbreak Trap(OTP)》
  • 《意志の力/Force of Will(ALL)》(GC)
  • 《召喚の調べ/Chord of Calling(M15)》

ソーサリー

  • 《焦熱の合流点/Fiery Confluence(MOC)》
  • 《耕作/Cultivate(EOC)》
  • 《根から絶つ/Root Out(MOC)》
  • 《原初の命令/Primal Command(STA)》

アーティファクト

  • 《太陽の指輪/Sol Ring(ZNC)》
  • 《連合の蛹/Combine Chrysalis(MOC)》
  • 《シミックの印鑑/Simic Signet(RVR)》
  • 《スカイクレイブの秘宝/Skyclave Relic(MOC)》
  • 《複製する指輪/Replicating Ring(MOC)》
  • 《世界歩きの兜/Worldwalker Helm(BIG)》
  • 《共同魂の刃/Blade of Shared Souls(ONE)》
  • 《エシカの戦車/Esika's Chariot(KHM)》

エンチャント

  • 《月への封印/Imprisoned in the Moon(VOC)》
  • 《機械化製法/Mechanized Production(PIP)》
  • 《鏡割りの寓話/Fable of the Mirror-Breaker(NEO)》
  • 《荒廃した芽ぐみ/Blighted Burgeoning(MOM)》
  • 《殺しのサービス/Killer Service(NCC)》
  • 《倍増の季節/Doubling Season(WOT)》

プレインズウォーカー

  • 《王冠泥棒、オーコ/Oko, Thief of Crowns(OTP)》
  • 《崇高な工匠、サヒーリ/Saheeli, Sublime Artificer(WAR)》
  • 《ウルザの後継、カーン/Karn, Scion of Urza(DOM)》

土地

  • 《島/Ilsand》
  • 《島/Ilsand》
  • 《島/Ilsand》
  • 《島/Ilsand》
  • 《山/Mountain》
  • 《山/Mountain》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《モリアの坑道/Mines of Moria(LTR)》
  • 《ホビット庄/The Shire(LTR)》
  • 《苔汁の橋/Mosswort Bridge(LRW)》
  • 《硫黄の滝/Sulfur Falls(DOM)》
  • 《尖塔断の運河/Spirebluff Canal(KLD)》
  • 《凍沸の交錯/Frostboil Snarl(MOC)》
  • 《蒸気孔/Steam Vents(GPT)》
  • 《シヴの浅瀬/Shivan Reef(ORI)》
  • 《焦熱島嶼域/Fiery Islet(MH1)》
  • 《内陸の湾港/Hinterland Harbor(DMR)》
  • 《燃えがらの林間地/Cinder Glade(MOC)》
  • 《怒り狂う山峡/Raging Ravine(CLB)》
  • 《銅線の地溝/Copperline Gorge(SOM)》
  • 《獲物道/Game Trail(MOC)》
  • 《踏み鳴らされる地/Stomping Ground(RNA)》
  • 《火の灯る茂み/Fire-Lit Thicket(SHM)》
  • 《植物の聖域/Botanical Sanctum(KLD)》
  • 《ヤヴィマヤの沿岸/Yavimaya Coast(M15)》
  • 《蔦明の交錯/Vineglimmer Snarl(MOC)》
  • 《繁殖池/Breeding Pool(DIS)》
  • 《シミックの成長室/Simic Growth Chamber(DIS)》
  • 《遊牧民の前哨地/Nomad Outpost(DMC)》
  • 《ケトリアのトライオーム/Ketria Triome(IKO)》
  • 《統率の塔/Command Tower(MOC》
  • 《無限地帯/Myriad Landscape(ZNC)》
  • 《ホビット庄の段々畑/Shire Terrace(LTR)》
  • 《霧深い雨林/Misty Rainforest(ZNE)》
  • 《樹木茂る山麓/Wooded Foothills(ONS)》

ゲームチェンジャーカードがあるとはいえ、アーティファクト全破壊1~2枚は持ちこたえられる継戦能力があるため、わいわい楽しむにはちょうどいい統率者と定義しています。

ライザリン・シュタウト 水着Ver. 1/4スケールフィギュア(DesignCOCO開封)

2024年末に注文したものが、1年の時を経て到着です。

DesignCOCOによる「1/4」スケールフィギュア。

ライザのフィギュアをあまたお迎えすれど、このサイズは初。箱の時点で圧倒的なスケール感です。

全身像はこちら。これがどれほどの大きさかは

1/7や1/6でも「1/12に見える」ぐらいですから相当です。

プロポーションも抜群。浮き輪の素材も本物という念の入れよう。

収納する場所があってよかったという形です。

Nextcloud Client 4.0.5アップグレードの失敗時の対応。

ローカルサーバに設置されているNextcloudを利用するためのデスクトップクライアント。

自動更新するはずが、以下のメッセージが出て

「再起動してアップデート」をクリックしても同じエラーが発生。

これの対処のメモです。

参考手順(というよりもリリース)

対処手順

タスクバーから「Nextcloudを終了」でアプリを終了します。

Nextcloud クライアント公式に飛びます。

v4.0.6以降をダウンロードして、インストーラーを実行します。

インストール終了後、上記エラーが出ないことを確認します。

メモ

  • クライアントを上書きするだけなのでデータや設定が吹き飛ぶことはありません。
  • 対処しないと延々と上記エラーが出続けてフラストレーションがたまります。
  • Nextcloudの設定に問題があるわけでもありません。

Zram運用後のメモリ量の推移

昨日運用を開始したzram。その効果を実感できる「単体テスト」にぶち当たりました。

  • 必要に応じて動かし
  • アップデートでメモリを恐ろしく消費する

Growiのアップデートです。

zram導入・運用環境 メモリ推移比較

項目1. 導入直後2. Growiアップデート後3. Growi起動中(安定時)
物理メモリ(使用/Total)2.78 / 5.78 GiB(高負荷)2.9 / 5.8 GiB
物理メモリ(空き/可用)0.42 GiB (Free)-2.9 GiB (Available)
zram展開サイズ (DATA)-1.4 GiB927.6 MiB
zram実占有 (TOTAL)-333.6 MiB258.1 MiB
圧縮率 (zstd)-約4.3倍約5.5倍
ディスクスワップ使用量0.02 GiB0 B0 B
主な状態初期クリーン状態ビルド等のメモリ最大消費時安定稼働・メモリ余裕あり

数値から見る運用の要諦

  • 導入直後はFreeが0.42GiBと心許ない数値でしたが、安定稼働時にはAvailableが2.9GiBまで回復しており、OSが自由に使える「机の広さ」が広くなっています。
  • Growiアップデートという最大の難所においても、Disk Swapを0Bに抑え込めたことが、システム全体のレスポンス維持に直結しています。
  • 安定稼働時に圧縮率が5.5倍まで向上しているのは、メモリ内の重複データやテキストデータが効率よく整理されているzstdの底力を見ました。

ここからのまとめ

「取り敢えず私のサーバには合っている」という形。他、気がついた事項は随時フィードバックしていきます。

UbuntuサーバにZramを導入したときの記録。

概要

筆者が運用しているWebサーバ。興味が向くまま様々なWebアプリを入れているため、メモリが心許ない事態が発生します。
単にスワップを増やすのではなく、Linuxの物理メモリ(RAM)の上に圧縮された専用領域(ブロックデバイス)を作成する、zramを導入します。

  • 通常の構造: RAM <---> Disk (HDD/SSD)
  • zram導入後: RAM [ 通常領域 | zram(圧縮領域) ] <---> Disk

環境

  • Ubuntu 24.04

メモリ環境

free -b | awk '
/Mem:/ {
  mem_total=$2/1024/1024/1024;
  mem_used=$3/1024/1024/1024;
  mem_free=$4/1024/1024/1024;
}
/Swap:/ {
  swap_total=$2/1024/1024/1024;
  swap_used=$3/1024/1024/1024;
  swap_free=$4/1024/1024/1024;
}
END {
  printf "| 項目 | 値 |\n| --- | --- |\n";
  printf "| Mem Total | %.2f GiB |\n", mem_total;
  printf "| Mem Used | %.2f GiB |\n", mem_used;
  printf "| Mem Free | %.2f GiB |\n", mem_free;
  printf "| Swap Total | %.2f GiB |\n", swap_total;
  printf "| Swap Used | %.2f GiB |\n", swap_used;
  printf "| Swap Free | %.2f GiB |\n", swap_free;
}'
項目
Mem Total5.78 GiB
Mem Used2.78 GiB
Mem Free0.42 GiB
Swap Total2.00 GiB
Swap Used0.02 GiB
Swap Free1.98 GiB

Caution! 導入の前に

これは万能薬ではありません。

メモリ上にブロックデバイスを作成しますが、その分、マシンパワーを喰います。

元々のメモリ量が少なければ効果を発揮しません。

例えば1GB未満のWebサーバでの運用は厳に慎むべきです。

破壊的アップデートを伴います。

「スワップをいじることのヤバさ」が知らない方は、この先の文章は読まないでください。(正直、DDoS喰らった時以上に神経を使う作業でした)

フェイズ・ゼロ(政治交渉)の必要性-再掲-

このvpsを個人的に運用しているのならばそのまま行って構いません。しかし、これを組織で運用しているとなると話はまるで違います。

  • メモリが心許ない。
  • ついてはこの計画でサーバ設定を行う
  • そのため、追加で作業時間をいただきたい
  • 作業時間は○時頃、○分程度で終わる。その間、サーバそのものの再起動を伴う

など、利用者への周知という名の政治交渉が必要になります。この運用者の政治的な立ち位置(担当者/担当部門が強権を振るえるか否か)でも言い方や手段が決まってきます。そこは状況に応じていきましょう。

当然、設定の大幅変更に関わるので設計書や運用のドキュメント化も待っています。

※ 検証環境を用意できる程度には時間と予算と環境に余裕がある方は、その環境にいることを感謝しつつ、検証を重ねていきましょう。

さっくりとした手順

以下、フェイズ・ゼロをクリアした(必要ない)方向けです。

  1. カーネルモジュールを追加インストールします。
  2. zramをインストールします。
  3. zramの設定を行います。
  4. zramを有効化します。
  5. zramの内容を確認します。

※筆者の好みでaptitudeを用いています。必要に応じてaptに読み替えてください。

強く推奨:イメージ全体のバックアップ

仮想サーバ、vps等で運用している場合は、イメージ全体をバックアップ(スナップショット)などとしておき、何かあったときにすぐに戻せるようにします。

カーネルモジュールの追加インストール

これが地味にハマりました。

sudo apt install linux-modules-extra-$(uname -r)

これを入れていないと「現在のカーネルにzramモジュールが存在しない、あるいはロードできない」事態が発生します。(発生しました)

zramインストール

sudo aptitude install zram-tools

と、コマンド一発で済む作業です。しかし、コマンド一発で済む作業であるからこそ、チューニングは細心の注意が必要です。

zramの設定

  • 設定ファイルのバックアップ
sudo cp -pi /etc/default/zramswap /path/to/backup/zramswap.$(date +%Y%m%d)
  • 設定ファイルのバックアップ確認
diff -u /path/to/backup/zramswap.$(date +%Y%m%d) /etc/default/zramswap

エラーがなければOKです。diffを逆にしているのは、この後で説明します。

  • ファイルの修正

/etc/default/zramswapを以下のように修正します。自身の環境に合わせます

# 圧縮アルゴリズムの指定
ALGO=zstd
# 物理メモリの半分ほどを指定します
PERCENTAGE=50
# 念のため、ディスクサイズも指定します
SIZE=2048
# 既存スワップ(通常の-2)より高く設定します
PRIORITY=100
  • ファイルの修正確認
diff -u /path/to/backup/zramswap.$(date +%Y%m%d) /etc/default/zramswap
 #ALGO=lz4
+ALGO=zstd

 # Specifies the amount of RAM that should be used for zram
 # based on a percentage the total amount of available memory
 # This takes precedence and overrides SIZE below
 #PERCENT=50
+PERCENTAGE=50

 # Specifies a static amount of RAM that should be used for
 # the ZRAM devices, this is in MiB
 #SIZE=256
+SIZE=2048

 # Specifies the priority for the swap devices, see swapon(2)
 # for more details. Higher number = higher priority
 # This should probably be higher than hdd/ssd swaps.
 #PRIORITY=100
+PRIORITY=100

等と表示されればOKです。そして、ここで、先ほど示したdiffのsrcとdstを逆にした理由です。

  • 逆にする(バックアップからの差分)とすることで
    • 「何を足したか(つまり、現時点での正」が明白になります。
  • 逆にしないと
    • 正しい設定が「引かれている」状態となり、視覚的に危険な状態になります。

zramの有効化

  • zram再起動
sudo systemctl restart zramswap

`

※筆者がハマったのはここです。ここでエラーが発生してカーネルモジュールをインストールする手戻りが発生しました。

  • zramサービス確認
systemctl status zramswap.service 

active(exited)を確認します。(これは、apache/mysqlなどの常駐型サービスと異なり「カーネルにロードしてしまえば後はOK」という状態のためexitedとなっています。

サーバ再起動

sudo reboot

行います。再起動に慎重を要する(クラスタリングなど)はその手順に従ってください。

ここで再起動しない事態が発生したら?

「さぱっと死せい 黄泉路の先陣じゃ 誉れじゃ」

ぐらいの潔さを持ちましょう。(持てなければそもそも筆者はサーバ運用をしていません

潔さがない方のためのイメージ全体のバックアップであり、スナップショットなので。

zramの有効化確認

swapon --show
NAME       TYPE      SIZE USED PRIO
/swapfile  file        2G   0B   -2
/dev/zram0 partition   2G   0B  100

/dev/zram0がリストにあれば、カーネルがスワップとして認識中です。

zramctl
NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd            2G   4K   59B   20K       4 [SWAP]

で、数字がカウントされればOKです。

WindowsノートのCopilotキーをスクリーンショットに置き換え。

昨今のノートPCに強制的についてくるCopilotキー。

これが不便なので別のものに切り替えます。

試行1:失敗

設定 > Bluetoothとデバイス > キーボード

ショートカットとホットキー

ここで、「キーボードのCopilotキーをカスタマイズする」を行ったところで、選べるものが

  • Copilot
  • Copilot365

しか選べない状況でした。

試行2:成功

そこで試したのはMicrosoft PowerToysです。

これをストアでインストール。インストール後、

Keyboard Managerを選択。

これを有効化後、「ショートカットの再マップ」をクリックします。

ここで選ぶのは、ショートカット(左側)

  • Win (Left)
  • Shit (Left)
  • F23

という、Copilotのショートカット。

割当先を

PrintScreenに変更。

変更後、OKをクリックすることで、Copilotキーがスクリーンショットと、役立つ機能へのショートカットになりました。

ノートPCの装飾。

新調したノートPC、ThinkPad P14s Gen 6 (AMD)。

こちらを、例によってデコレーションしました。

天板

無軌道に貼るのではなく、視線誘導を意識。特に「浮遊せよ(Wingardium Leviosa)」を文字通り浮遊させる位置に置いたのは会心のできです。

パームレスト

こちらは好きな花と推し色で区別。CPUロゴやThinkPadロゴに重ならないように貼り付けました。

追加で

のぞき見防止フィルタも設置。マグネット着脱式ではなかったので、マステで貼り付け。この方が張り直しも用意で飾れるのでより気に入っています。

Page 1 of 281

Powered by WordPress & Theme by Anders Norén