WPP
claude-desktop に claude-code を追加した

巷に溢れている内容ですが、自分の設定を晒して将来の再インストールに備えておきます。

設定に入り開発者から詳細設定を開きます。

結局 claude_desktop_config.json を編集するのですが以下のようにしました。
自環境では ~/.config/Claude/ に claude_desktop_config.json がありました。

{
  "systemPrompt": "ファイル編集時は、書き換える前にユーザの承認を得てから行うこと",
  "mcpServers": {
    "claude-code": {
      "command": "/home/自ユーザー名/.volta/bin/claude",
      "args": [
        "mcp",
        "serve"
      ],
      "env": {}
    }
  }
}

”command” 節は、claude code の場所を which claude で確認しておきます。

LM 22.2 と claude desktop で filesystem 機能拡張が起動しない

LinuxMint 22.2 (Zara) で github の非公式 claude-desktop を使っているのですが、 filesystem 機能拡張が動作していないことにふと気づきました。

issue の #118#115 と同じ現象なんだと思いますが、 app.asar が所定の場所にないのが問題なようです。なので app.asar を見つけられるようにしてやります。

環境

aaddrick/claude-desktop の以下のバージョンで発生したのを確認した
Release v1.1.6+claude0.13.35
Release v1.1.5+claude0.13.19

Linux Mint 22.2 (Ubuntu 24.04)

対処方法

#118 にある通りですが、 /usr/lib/claude-desktop に配置されている app.asar を所定の位置で読めるようにしてやります。

$ sudo ln -s /usr/lib/claude-desktop/app.asar /usr/lib/claude-desktop/node_modules/electron/dist/resources

; 自環境では他のファイルは UID: 1001 の所有になっていたので合わせる
$ sudo chown 1001:1001 app.asar

aaddrick/claude-desktop-debian: Claude Desktop for Debian-based Linux distributions

LibreOffice Calc で日付が範囲外の行をエラー表示したい。

Calc に限らず Excel でもほとんど同じだが、行に対して条件書式を設定する方法です。
これも数ヶ月に 1 度くらいの頻度でやるのですが毎回忘れるので

下の表では、作成日の月と日付列の月が同じ必要があります。
また、A列: 日付が空の場合はエラー表示しないようにしたい。

A列B列C列
作成日2025/8/30
日付項目金額
2025/8/2書籍購入880
2025/9/10交通費1000
(出張先: xxxxx)
小計1880

すべての条件を分解してみるとこうなります。

  • 範囲: A3 から C5 の範囲にエラー表示を出す
    つまりセルの範囲を指定すると行表示できる
  • A3、A4、A5 は C3 の日付と同じ月である必要がある。
  • さらに、A3、A4、A5 が空白のときは条件書式から除外する。

条件書式は、条件が満たされときに指定の書式を表示するものなので、今回の例では上を満たさない状態を式にする必要があります。それはこうなります。

$A3<> “” (空白でない)

MONTH($C1) <> MONTH($A3) (月が同じじゃない > 異なる)

さらにこれらを同時に満たす必要があるので AND() 関数で2つを結びつけます。

ここまで整理できたら

LibreOffice Calc の場合:

メニューからFormat > Conditional > Manage..
(手元の LibreOffice は日本語化していなかったので、適当に読み替えてほしい。多分、書式 > 条件書式 > 管理 くらいの感じだと思う)

でてきた Conditinal Formatting のダイアログに以下の要領で指定する。

Fomula is: AND($A3<>””, MONTH($C1) <> MONTH($A3))
Apply Style: 適当に Bad とか Warning とか好きなのを選ぶ

Cell Range, Range: A1:C5

ポイントは、

  • 表示したい条件の時に真になる式を設定する
  • 行表示(範囲に同じ書式)にしたいときは、cell range を設定する。

これで忘れずに済むかもしれない。

Joplin-vieweb を試してみる

しばらく前から Evernote の代替として Joplin を使用している。Joplin には公式の Web クライアントが存在していない。会社支給の PC にはアプリをインストールできないので Joplin に書き溜めたメモをみることができないのでちょっとだけ困っていた。

Claude に聞いてみると Joplin-vieweb というサードパーティの Web クライアントがあるらしいのでインストールしてみた。

docker-compose

インストールする環境では、外からのアクセスをさばく nginx がリバースプロキシとして動作しているので、github の docker-compose-joplin-only.yml をベースにいじっていく。どうやらこの .yml だと外からのアクセス用の設定は、含んでいないようだ。

こんな風になった。
ポイントは、enviroment: ORIGINS で http://joplin-vieweb というコンテナ名の項目を追加しているところ。

docker には、内部ネットワークだとコンテナ名で名前解決してくれる機能があるのでそれを利用する。下の例では、network に IP アドレスを固定で割り当てているが、 不要です。

http://MYHOST.local は docker をホストしている PC の mdns ホスト名です。自IP でもかまわない。

version: '3.8'

services:
  joplin-vieweb:
    image: gri38/django-joplin-vieweb:latest
    container_name: joplin-vieweb
    depends_on:
      - joplin-terminal-xapi
    ports:
      - "8001:8000"
    volumes:
      - ./joplin-vieweb-data:/home/joplin
      - joplin:/root/.config/joplin:ro
      - joplin-vieweb:/root/.config/joplin-vieweb
    networks:
      joplin-net:
        ipv4_address: 172.20.0.2
    environment:
      - ORIGINS='http://MYHOST.local', 'http://joplin-vieweb'
      - JOPLIN_LOGIN_REQUIRED=False
    restart: unless-stopped

  joplin-terminal-xapi:
    image: gri38/joplin-terminal-xapi:latest
    container_name: joplin-terminal
    restart: unless-stopped
    volumes:
      - joplin:/root/.config/joplin
  
    networks:
      joplin-net:
        ipv4_address: 172.20.0.3  

volumes:
  joplin:
  joplin-vieweb:

networks:
  joplin-net:
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/24

接続と初期設定

参考の公式 GitHub のままだが、

まず docker-compose up で起動して (MYHOST.local は適宜変更してください。)

http://MYHOST.local/admin
で django の管理画面? に入り、パスワード設定、ユーザー追加する

http://MYHOST.local/joplin
で joplin の画面が表示される。

使ってみた感想は、若干使いにくい。緊急時にはいいのかもしれない。これだったらリモートで PC のデスクトップに入ったほうが使い勝手はいいかもしれない。

参考

joplin-vieweb/joplin-vieweb: A web viewer for Joplin app

Rock64 + dietpi に casaOS をインストールしてみた

そろそろ synology NAS をやめようかなと考えている。現在の筐体で3代目だが、「HDD の対応が厳しくなって compatibility list 以外のものでは動かなくなるらしい」。

パッケージされているので楽なのは確かだが、正直にいうと適当なケースにボロい CPU のっけているだけで 5万円前後はするのでなんだかなーとは以前から思っていた。
適当な UI と Portainer があればいいんじゃね? と思い幾星霜。

Synology に限らず QNAP や Asustor、Netgear、UGREEN でも docker 動くものになるとこの位の価格になる。

そこでセルフホスト出来る代替品を探している。

とりあえず、手元で空いている Rock64 にインストールしてみた。

casaOS に行き着く前に Open Media Vault も試してみたが Rock64 + dietpi では自分は安定して稼働させることができなかった。ラズパイや x86 ならまた異なる結果になるのかもしれない。

インストール

インストールは公式のページ通りでOK

curl -fsSL https://get.casaos.io | sudo bash

DATA フォルダを ssd に移動する

casaOS は /DATA を データフォルダする設定のようで、各種アプリのインストール先や、共有ファイルの置き場になっている。

今回インストールした状況では /DATA は sdカード上の別パーティションにマウントされていた。

一方、Rock64 は sd カードに diepi os をいれ boot している。

つまり、ssd にパーティション切って /DATA でマウントすれば casaOS が ssd を使うようになる。

現時点では casaOS のドキュメントはあまり充実していないので discord のアカウントを作ってコミュニティのコンテンツみないとちょっと厳しいかも。

まだ、使って数日だが、様子をみて NAS 専用機から switch しようと思う。

参考

公式: IceWhale のGithub リポジトリ一覧

User Pages | CasaOS Wiki

Synology NAS の ssh を公開鍵認証にする

パスワードログインでも何も困っていないのだが、ユーザーのパスワードを迂闊にパスワードマネージャーが生成したものに変えてしまうと ssh に入るのが非常に面倒なので鍵認証に変更しておく。

詳細は、参考リンクまんまだが、

  1. コントロールパネルで ssh を有効にする
  2. パスワードログインで ssh に入る
  3. ~/.ssh/authorized_keys に公開鍵をコピペ

/etc/ssh/sshd_config は多分修正の必要がない。

鍵ファイルはどっかで使っているものでもいいし、新たに作ってもいい。

セキュリティ観点でいえば鍵ファイルも使い回さない方がいいのだろうが、増えてくると鍵ファイルそのものの管理も面倒になるのでバランスが難しい。

仮にローカルにある鍵ファイルをひとたび見れるような状態になった場合、鍵ファイルをいくつも持っていたからといってセキュリティ強度は変わらない。どの鍵がどこのものかを見つけるのが面倒なだけでおそらく見つけることはできる。鍵ファイルの名前に使用するサイト名などを含めていたら、実質的に1つの鍵ファイルを使いまわすのとほぼ変わらない。

参考

Synology DiskStation で SSH 接続を公開鍵認証方式にする #synology – Qiita

Google sitekit が重いので Independent analytics に変えてみた

数ヶ月前から WordPress の統計プラグインを Google sitekit にしていたのだが、管理者側のページがあまりに遅くて閉口していた。サーバが弱いのが根本的な原因ではあるが NAS で動かしているのでそこをどうにかすることは今のところ考えていない。サーバ建てるのはいいが管理が面倒なので NAS に含まれるパッケージの方が扱いが楽だと感じている。

Claude に sitekit の代替を聞いてみると Independent Analytics を勧めてきたので使ってみて様子を見よう。

Independent Analytics – Google Analytics Alternative for WordPress – WordPress plugin | WordPress.org

特に設定は必要ないみたい。

以前は、WP Statistics を使っていたのだけれどバージョンアップのたびに動作が不安定になり、意味不明な挙動をするようになってやめたのでこれで 3 代目になる。

タダで使おうとするのがいけないのだが、WP のプラグインは商売っ気が強すぎていまいちいいのがない。まあ、仕方ないことだとは思うが。。。

簡単に使えるいい UCM があれば乗り換えてもいいのだけれど。。。

Linux + OceanAudio でリモートのフォルダを扱うときは CIFS (Samba)を使うほうがいい

さて、これも自分向けメモではあるがきっと数カ月後には忘れているだろうから記録する。

状況

どんな状況かといいうと LM22.1 (Ubuntu 24.04) の Cinnamon デスクトップでリモートの CIFS (Windowsのファイル共有)フォルダをマウントすると gvfs でマウントされる。最近のデスクトップでは同じようなものも多いと思う。

gvfs でマウントすると CIFS でマウントした場合とはパスが異なる。これが原因で gvfs 経由のファイルアクセスには失敗することがある。具体的には

gvfs の例
/run/user/1000/gvfs/smb-share:server=192.168.1.xx,share=datafolder

cifs の例
/mnt/shared/datafolder

こんな感じで “,” や “:” などが意図しない場所に存在するために gvfs を考慮していないアプリだと上手く動作しないことがあるらしい。

要するに fopen() なんかに gvfs のパスをそのまま渡しても単に失敗するのだと推測される。

そんな場合は、素直に mount -t cifs でマウントすればいい。

$ sudo mount -t cifs -o uid=$(id -u),gid=$(id -g),file_mode=0777,dir_mode=0777,username=USER //SERVERl/PATH /mnt/MOUNT

コマンドの以下の部分は、適宜環境に合わせる必要がある

USER: リモートの共有フォルダにアクセスする際のユーザー名

SERVE: リモートの共有フォルダのサーバーアドレス

PATH: 共有フォルダのパス

MOUNT: マウントしたいフォルダ名

ちょっと長いのでスクリプトにしておいたほうがいいと思う。

Rock64 のDietpi 9.15.2 でコンソールが表示されないときの対処方法

Rock64 というラズベリーパイもどきをスモールサーバとして使用しているのですが、そこで動く OS: Dietpi を新たに入れ直したところコンソール画面が表示しない現象が発生しました。

以前のバージョンではこういった現象はおきませんでしたが、インストーラーなんかも少し変わっていたので起動周りでなにか変更があったのかもしれません。

ディスプレイからは信号なしのアラートがでるので、detect を失敗しているかディスプレイが対応していないモードで出力しているのかもしれません。中華製モバイルディスプレイなので何か作りがいい加減なのが根本原因かもしれませんが、真相はわかりません。

dietpi-config でコンソールの解像度(要するに kernel の起動パラメータ)を変更出来るようなのでやってみます。

やってみるとわかるのですが、dietpi-config でリセットしてから再セットする必要があるようです。

  1. sudo dietpi-condig でコンフィグツールを起動
  2. 1. Display Options に入る
  3. 0. DietPi-Display mode and rotation (beta) に入る
    こんな項目は以前なかったと思う。
  4. Reset を選択
  5. <Exit> を選び再起動する
  6. 再起動後、2度目の sudo dietpi-config
  7. 1. Display Options に入る
  8. mode に入り 1024×768 など写りそうなモードを選択する
  9. <Exit> を選び、また再起動

この手順でコンソールを表示するようになった。

まあ、通常は ssh しかしないので画面表示できなくても問題はないが、この手の SBC は初回起動時から ssh 接続まではどうしても画面があったほうがいいので一応対処した。

最近の Raspberry OS だとそこら辺のネットワークを埋め込んで SD に焼けるので初回からディプレイなしでいけるのはいいところ、とは言え画面あったほうが便利ではある。

LM22.1 (Ubuntu 24.04) の Viber で日本語入力できるようにする。

さて、とある取引先と Viber でやり取りをしているのだが、Linux Mint だと日本語入力できなかったので対処したという話。

作業内容からすると ibus をインストールして Viber で認識できるようにしたって感じでしょうか。

環境

  • Linux Mint 22.1 (cinammon)
  • Fcitx + Mozc
  • 公式の viber.AppImage を /opt/viber/ に配置

手順

Claude がわりといい感じで見つけてくれるので早速Claude に聞いてみると

# ダウンロードした AppImage を移動
$ mv viber.AppImage /opt/viber

$ sudo apt install ibus-mozc


$ ibus-setup
# 起動したら Mozc を追加する

# ここで再起動かデスクトップに再ログインしないと ibus がアクティブにならないかも

# 以下を .profile か .bashrc に入れろって指示だったが今回は、起動スクリプトで直接指定した。
# export GTK_IM_MODULE=ibus
# export QT_IM_MODULE=ibus
# export XMODIFIERS=@im=ibus

$ vi /opt/viber/launch.sh
#!/bin/bash
GTK_IM_MODULE=ibus QT_IM_MODULE=ibus XMODIFIERS=@im=ibus /opt/viber/viber.AppImage
:wq

$ chmod 755 /opt/viber/launch.sh

# メニューから起動できるように .desktop を作成
# Ubuntu だと場所や方法が異なるかも
# アイコンは LM の場合は入っていたのでそれを利用、なければ適当に。
$ vi ~/.local/share/applications/viber.desktop
[Desktop Entry]
# Name はお好みで
Name=Viber - AppImage
#Exec=/opt/viber/viber.AppImage
Exec=/opt/viber/launch.sh
Comment=
Terminal=false
PrefersNonDefaultGPU=true
Icon=/opt/assets/viber.svg
Type=Application
:wq

デスクトップのメニューから Viber を起動すると ibus 経由で日本語入力が出来るようになった。

参考

linuxmintでブラウザーでは日本語打てるんですがvIberだと英語… – Yahoo!知恵袋
ibus にしか対応していないという示唆