Obsidian はローカルアプリのため,Notion のようにサービス側の都合に依存しにくく,Claude Code や Codex などの AI Agent とも連携がしやすいです. その一方で,外部から操作したい場合には少し扱いづらく,API 連携は Notion の方が簡単です. 調べているうちに Obsidian container を見つけ,これを利用すると上記が解決できそうなので早速試してみました.

Obsidian container について

Obsidian container は Obsidian の GUI アプリをコンテナ内で起動し,ブラウザからアクセスできるようにするものです. 3000 および 3001 ポートで Listen し,そのポートにアクセスすることでブラウザから Obsidian を利用できるようになります. Obsidian は GUI アプリなので,CLI で動く多くのコンテナイメージより負荷が高いことに注意です.

linuxserver/obsidian

hub.docker.com favicon image hub.docker.com

今回は試用ということで以下の manifest を用意し,Kubernetes にデプロイしました. Local REST API が 27123/tcp も利用するのでそれも追加しておきます.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: obsidian
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: obsidian
  template:
    metadata:
      labels:
        app: obsidian
    spec:
      containers:
        - name: obsidian
          image: lscr.io/linuxserver/obsidian:1.12.7
          imagePullPolicy: IfNotPresent
          env:
            - name: PUID
              value: "1000"
            - name: PGID
              value: "1000"
            - name: TZ
              value: Asia/Tokyo
          ports:
            - name: http
              containerPort: 3000
            - name: https
              containerPort: 3001
            - name: api
              containerPort: 27123
          volumeMounts:
            - name: config
              mountPath: /config
            - name: shm
              mountPath: /dev/shm
      volumes:
        - name: config
          persistentVolumeClaim:
            claimName: obsidian-config
        - name: shm
          emptyDir:
            medium: Memory
            sizeLimit: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  name: obsidian
spec:
  selector:
    app: obsidian
  ports:
    - name: http
      port: 3000
      targetPort: 3000
    - name: https
      port: 3001
      targetPort: 3001
    - name: api
      port: 80
      targetPort: 27123
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: obsidian-config
  namespace: obsidian
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 1Gi

実際にブラウザから Obsidian container へアクセスするとこうなります.

Obsidian container 上で Obsidian を開いたら,Live Sync をインストールして Vault と CouchDB を同期します. その後 Local REST API もインストールします. これで Obsidian の Vault に対して REST API でアクセスできるようになります.

まとめ

Obsidian container を試してみました. Live Sync によってリモートでも,常時アクセス可能な環境を構築できることを確認しました. REST API が利用できるようになったことで,Notion と比較したときのデメリットを解消できました. ある程度難易度はありますが,それ以上に便利だと思います. みなさんもぜひチャレンジしてみてください.